aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-03 04:54:04 +0000
committer(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-03 04:54:04 +0000
commitd4e6285feb0dd72a9dfb94c4e8d7f169f413b413 (patch)
tree121bf79fa2de8e592616c8828c28a4d3238e8b94
parent8f034d154232c7e361860b270da09709d8eb322a (diff)
This commit was manufactured by cvs2svn to create tagmerge-to-csl-arm-3
'merge-to-csl-arm-3'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/tags/merge-to-csl-arm-3@78821 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog52
-rw-r--r--MAINTAINERS14
-rw-r--r--boehm-gc/ChangeLog11
-rwxr-xr-xboehm-gc/config.guess393
-rwxr-xr-xboehm-gc/config.sub293
-rw-r--r--boehm-gc/configure.in2
-rw-r--r--boehm-gc/include/private/gcconfig.h1
-rwxr-xr-xboehm-gc/install-sh34
-rw-r--r--boehm-gc/libtool.m43398
-rwxr-xr-xboehm-gc/mkinstalldirs81
-rwxr-xr-xconfig.guess36
-rwxr-xr-xconfig.sub22
-rwxr-xr-xconfigure71
-rw-r--r--configure.in7
-rw-r--r--gcc/ChangeLog2325
-rw-r--r--gcc/Makefile.in198
-rw-r--r--gcc/README.Portability2
-rw-r--r--gcc/ada/5fsystem.ads8
-rw-r--r--gcc/ada/5gtaprop.adb17
-rw-r--r--gcc/ada/5gtasinf.adb8
-rw-r--r--gcc/ada/ChangeLog36
-rw-r--r--gcc/ada/Make-lang.in148
-rw-r--r--gcc/ada/Makefile.in2
-rw-r--r--gcc/alias.c151
-rw-r--r--gcc/alloc-pool.c135
-rw-r--r--gcc/alloc-pool.h5
-rw-r--r--gcc/basic-block.h8
-rw-r--r--gcc/builtin-types.def2
-rw-r--r--gcc/builtins.c32
-rw-r--r--gcc/builtins.def1
-rw-r--r--gcc/c-common.c55
-rw-r--r--gcc/c-common.h22
-rw-r--r--gcc/c-cppbuiltin.c2
-rw-r--r--gcc/c-decl.c159
-rw-r--r--gcc/c-lex.c25
-rw-r--r--gcc/c-objc-common.c2
-rw-r--r--gcc/c-opts.c86
-rw-r--r--gcc/c-parse.in33
-rw-r--r--gcc/c-ppoutput.c18
-rw-r--r--gcc/c-pragma.c2
-rw-r--r--gcc/c-pragma.h3
-rw-r--r--gcc/c-pretty-print.c2
-rw-r--r--gcc/c-semantics.c6
-rw-r--r--gcc/c-tree.h2
-rw-r--r--gcc/c-typeck.c43
-rw-r--r--gcc/c.opt8
-rw-r--r--gcc/calls.c32
-rw-r--r--gcc/cfg.c2
-rw-r--r--gcc/cfganal.c15
-rw-r--r--gcc/cfgcleanup.c11
-rw-r--r--gcc/cfgloop.h4
-rw-r--r--gcc/cfgloopanal.c73
-rw-r--r--gcc/cfgrtl.c22
-rw-r--r--gcc/cgraph.c5
-rw-r--r--gcc/cgraph.h2
-rw-r--r--gcc/cgraphunit.c165
-rw-r--r--gcc/collect2.c2
-rw-r--r--gcc/combine.c106
-rw-r--r--gcc/common.opt3
-rw-r--r--gcc/config.gcc64
-rw-r--r--gcc/config/alpha/alpha.c76
-rw-r--r--gcc/config/alpha/alpha.h7
-rw-r--r--gcc/config/alpha/alpha.md368
-rw-r--r--gcc/config/alpha/freebsd.h11
-rw-r--r--gcc/config/alpha/vms.h2
-rw-r--r--gcc/config/arc/arc.c9
-rw-r--r--gcc/config/arm/arm.c198
-rw-r--r--gcc/config/arm/arm.h19
-rw-r--r--gcc/config/arm/coff.h2
-rw-r--r--gcc/config/arm/elf.h2
-rw-r--r--gcc/config/arm/freebsd.h17
-rw-r--r--gcc/config/arm/linux-elf.h2
-rw-r--r--gcc/config/arm/netbsd.h2
-rw-r--r--gcc/config/arm/pe.h2
-rw-r--r--gcc/config/arm/semi.h2
-rw-r--r--gcc/config/arm/semiaof.h2
-rw-r--r--gcc/config/arm/unknown-elf.h2
-rw-r--r--gcc/config/arm/wince-pe.h2
-rw-r--r--gcc/config/avr/avr.c3
-rw-r--r--gcc/config/avr/avr.h5
-rw-r--r--gcc/config/c4x/c4x.c2
-rw-r--r--gcc/config/c4x/c4x.md88
-rw-r--r--gcc/config/cris/cris.c5
-rw-r--r--gcc/config/cris/cris.md30
-rw-r--r--gcc/config/d30v/d30v.h2
-rw-r--r--gcc/config/fp-bit.c92
-rw-r--r--gcc/config/freebsd-spec.h6
-rw-r--r--gcc/config/frv/frv-protos.h2
-rw-r--r--gcc/config/frv/frv.c3
-rw-r--r--gcc/config/frv/frv.h3
-rw-r--r--gcc/config/frv/frv.md2
-rw-r--r--gcc/config/frv/frvbegin.c2
-rw-r--r--gcc/config/frv/frvend.c2
-rw-r--r--gcc/config/h8300/coff.h2
-rw-r--r--gcc/config/h8300/elf.h2
-rw-r--r--gcc/config/h8300/h8300-protos.h2
-rw-r--r--gcc/config/h8300/h8300.c5
-rw-r--r--gcc/config/h8300/h8300.h2
-rw-r--r--gcc/config/h8300/h8300.md2
-rw-r--r--gcc/config/h8300/lib1funcs.asm2
-rw-r--r--gcc/config/i386/cygming.h2
-rw-r--r--gcc/config/i386/djgpp.h2
-rw-r--r--gcc/config/i386/emmintrin.h2
-rw-r--r--gcc/config/i386/freebsd.h6
-rw-r--r--gcc/config/i386/freebsd64.h5
-rw-r--r--gcc/config/i386/gthr-win32.c2
-rw-r--r--gcc/config/i386/i386-interix.h3
-rw-r--r--gcc/config/i386/i386-protos.h3
-rw-r--r--gcc/config/i386/i386.c456
-rw-r--r--gcc/config/i386/i386.h27
-rw-r--r--gcc/config/i386/i386.md478
-rw-r--r--gcc/config/i386/openbsd.h2
-rw-r--r--gcc/config/i386/pmmintrin.h4
-rw-r--r--gcc/config/i386/scodbx.h84
-rw-r--r--gcc/config/i386/t-cygwin2
-rw-r--r--gcc/config/i386/winnt.c2
-rw-r--r--gcc/config/i386/xm-dgux.h4
-rw-r--r--gcc/config/i386/xm-djgpp.h6
-rw-r--r--gcc/config/i386/xm-mingw32.h2
-rw-r--r--gcc/config/i386/xm-sun.h21
-rw-r--r--gcc/config/i386/xm-sysv3.h3
-rw-r--r--gcc/config/i386/xmmintrin.h2
-rw-r--r--gcc/config/ia64/freebsd.h6
-rw-r--r--gcc/config/ia64/ia64-protos.h2
-rw-r--r--gcc/config/ia64/ia64.c410
-rw-r--r--gcc/config/ia64/ia64.h5
-rw-r--r--gcc/config/ia64/ia64.md70
-rw-r--r--gcc/config/ia64/linux.h6
-rw-r--r--gcc/config/ip2k/ip2k.c2
-rw-r--r--gcc/config/iq2000/iq2000-protos.h2
-rw-r--r--gcc/config/iq2000/iq2000.c2
-rw-r--r--gcc/config/iq2000/iq2000.md2
-rw-r--r--gcc/config/m32r/m32r-protos.h2
-rw-r--r--gcc/config/m32r/m32r.c2
-rw-r--r--gcc/config/m32r/m32r.h17
-rw-r--r--gcc/config/m32r/m32r.md3
-rw-r--r--gcc/config/m68hc11/m68hc11.c123
-rw-r--r--gcc/config/m68hc11/m68hc11.md985
-rw-r--r--gcc/config/m68k/m68k.md3
-rw-r--r--gcc/config/m68k/netbsd-elf.h2
-rw-r--r--gcc/config/m68k/t-slibgcc-elf-ver3
-rw-r--r--gcc/config/mcore/mcore-elf.h3
-rw-r--r--gcc/config/mcore/mcore.c3
-rw-r--r--gcc/config/mcore/mcore.h2
-rw-r--r--gcc/config/mcore/mcore.md2
-rw-r--r--gcc/config/mips/elf.h2
-rw-r--r--gcc/config/mips/elf64.h2
-rw-r--r--gcc/config/mips/iris5.h70
-rw-r--r--gcc/config/mips/iris5gas.h22
-rw-r--r--gcc/config/mips/iris5gld.h42
-rw-r--r--gcc/config/mips/iris6-o32-as.h18
-rw-r--r--gcc/config/mips/iris6-o32-gas.h19
-rw-r--r--gcc/config/mips/iris6-o32.h26
-rw-r--r--gcc/config/mips/iris6.h62
-rw-r--r--gcc/config/mips/iris6gas.h2
-rw-r--r--gcc/config/mips/iris6gld.h6
-rw-r--r--gcc/config/mips/irix-crti.asm (renamed from gcc/config/mips/irix6-crti.asm)0
-rw-r--r--gcc/config/mips/irix-crtn.asm (renamed from gcc/config/mips/irix6-crtn.asm)0
-rw-r--r--gcc/config/mips/linux.h3
-rw-r--r--gcc/config/mips/mips-protos.h9
-rw-r--r--gcc/config/mips/mips.c680
-rw-r--r--gcc/config/mips/mips.h93
-rw-r--r--gcc/config/mips/mips.md30
-rw-r--r--gcc/config/mips/netbsd.h2
-rw-r--r--gcc/config/mips/openbsd.h2
-rw-r--r--gcc/config/mips/t-iris5-as4
-rw-r--r--gcc/config/mips/t-iris6gld9
-rw-r--r--gcc/config/mips/t-irix-gld9
-rw-r--r--gcc/config/mips/windiss.h2
-rw-r--r--gcc/config/mn10300/mn10300.c2
-rw-r--r--gcc/config/mn10300/mn10300.h2
-rw-r--r--gcc/config/pa/pa-protos.h4
-rw-r--r--gcc/config/pa/pa.c225
-rw-r--r--gcc/config/pa/pa.h66
-rw-r--r--gcc/config/pa/pa.md32
-rw-r--r--gcc/config/pa/pa64-hpux.h14
-rw-r--r--gcc/config/pa/t-slibgcc-elf-ver3
-rw-r--r--gcc/config/pdp11/pdp11.c2
-rw-r--r--gcc/config/rs6000/aix.h16
-rw-r--r--gcc/config/rs6000/altivec.h7
-rw-r--r--gcc/config/rs6000/altivec.md16
-rw-r--r--gcc/config/rs6000/darwin.h21
-rw-r--r--gcc/config/rs6000/linux.h3
-rw-r--r--gcc/config/rs6000/linux64.h59
-rw-r--r--gcc/config/rs6000/rs6000-protos.h1
-rw-r--r--gcc/config/rs6000/rs6000.c109
-rw-r--r--gcc/config/rs6000/rs6000.md8
-rw-r--r--gcc/config/rs6000/spe.md31
-rw-r--r--gcc/config/rs6000/sysv4.h33
-rw-r--r--gcc/config/rs6000/xcoff.h2
-rw-r--r--gcc/config/s390/s390-protos.h4
-rw-r--r--gcc/config/s390/s390.c20
-rw-r--r--gcc/config/s390/s390.h7
-rw-r--r--gcc/config/s390/s390.md316
-rw-r--r--gcc/config/sh/netbsd-elf.h2
-rw-r--r--gcc/config/sh/sh.c7
-rw-r--r--gcc/config/sh/sh.h2
-rw-r--r--gcc/config/sh/t-linux8
-rw-r--r--gcc/config/sh/vxworks.h2
-rw-r--r--gcc/config/sparc/freebsd.h6
-rw-r--r--gcc/config/sparc/linux.h2
-rw-r--r--gcc/config/sparc/linux64.h2
-rw-r--r--gcc/config/sparc/sol2-bi.h17
-rw-r--r--gcc/config/sparc/sol2.h36
-rw-r--r--gcc/config/sparc/sparc.c232
-rw-r--r--gcc/config/sparc/sparc.h25
-rw-r--r--gcc/config/sparc/sparc.md33
-rw-r--r--gcc/config/stormy16/stormy16.h2
-rw-r--r--gcc/config/t-slibgcc-elf-ver5
-rw-r--r--gcc/config/xtensa/xtensa-protos.h7
-rw-r--r--gcc/config/xtensa/xtensa.c323
-rw-r--r--gcc/config/xtensa/xtensa.h34
-rw-r--r--gcc/config/xtensa/xtensa.md40
-rwxr-xr-xgcc/configure187
-rw-r--r--gcc/configure.ac120
-rw-r--r--gcc/coverage.c64
-rw-r--r--gcc/cp/ChangeLog554
-rw-r--r--gcc/cp/Make-lang.in35
-rw-r--r--gcc/cp/call.c262
-rw-r--r--gcc/cp/class.c123
-rw-r--r--gcc/cp/cp-tree.h36
-rw-r--r--gcc/cp/cvt.c5
-rw-r--r--gcc/cp/decl.c72
-rw-r--r--gcc/cp/decl2.c41
-rw-r--r--gcc/cp/error.c13
-rw-r--r--gcc/cp/except.c94
-rw-r--r--gcc/cp/expr.c2
-rw-r--r--gcc/cp/init.c183
-rw-r--r--gcc/cp/lex.c7
-rw-r--r--gcc/cp/mangle.c20
-rw-r--r--gcc/cp/method.c1
-rw-r--r--gcc/cp/name-lookup.c97
-rw-r--r--gcc/cp/name-lookup.h5
-rw-r--r--gcc/cp/optimize.c7
-rw-r--r--gcc/cp/parser.c351
-rw-r--r--gcc/cp/pt.c286
-rw-r--r--gcc/cp/rtti.c4
-rw-r--r--gcc/cp/search.c8
-rw-r--r--gcc/cp/semantics.c94
-rw-r--r--gcc/cp/tree.c91
-rw-r--r--gcc/cp/typeck.c44
-rw-r--r--gcc/cp/typeck2.c2
-rw-r--r--gcc/cppcharset.c69
-rw-r--r--gcc/cppexp.c3
-rw-r--r--gcc/cppfiles.c13
-rw-r--r--gcc/cpphash.h18
-rw-r--r--gcc/cppinit.c47
-rw-r--r--gcc/cpplex.c7
-rw-r--r--gcc/cpplib.c2
-rw-r--r--gcc/cpplib.h30
-rw-r--r--gcc/cppmacro.c4
-rw-r--r--gcc/cpptrad.c2
-rw-r--r--gcc/cse.c370
-rw-r--r--gcc/cselib.c75
-rw-r--r--gcc/cselib.h2
-rw-r--r--gcc/defaults.h2
-rw-r--r--gcc/df.c3
-rw-r--r--gcc/diagnostic.h4
-rw-r--r--gcc/doc/c-tree.texi83
-rw-r--r--gcc/doc/compat.texi6
-rw-r--r--gcc/doc/contrib.texi25
-rw-r--r--gcc/doc/cpp.texi412
-rw-r--r--gcc/doc/cppenv.texi4
-rw-r--r--gcc/doc/cppopts.texi28
-rw-r--r--gcc/doc/extend.texi586
-rw-r--r--gcc/doc/frontends.texi4
-rw-r--r--gcc/doc/gcov.texi32
-rw-r--r--gcc/doc/gty.texi12
-rw-r--r--gcc/doc/include/gcc-common.texi2
-rw-r--r--gcc/doc/install.texi378
-rw-r--r--gcc/doc/interface.texi10
-rw-r--r--gcc/doc/invoke.texi476
-rw-r--r--gcc/doc/libgcc.texi8
-rw-r--r--gcc/doc/makefile.texi26
-rw-r--r--gcc/doc/md.texi54
-rw-r--r--gcc/doc/objc.texi34
-rw-r--r--gcc/doc/rtl.texi54
-rw-r--r--gcc/doc/sourcebuild.texi65
-rw-r--r--gcc/doc/standards.texi8
-rw-r--r--gcc/doc/tm.texi173
-rw-r--r--gcc/doc/trouble.texi88
-rw-r--r--gcc/doloop.c7
-rw-r--r--gcc/dominance.c2
-rw-r--r--gcc/dwarf2out.c108
-rw-r--r--gcc/emit-rtl.c56
-rw-r--r--gcc/et-forest.c2
-rw-r--r--gcc/except.c26
-rw-r--r--gcc/except.h1
-rw-r--r--gcc/expmed.c2
-rw-r--r--gcc/expr.c27
-rw-r--r--gcc/expr.h2
-rw-r--r--gcc/f/ChangeLog43
-rw-r--r--gcc/f/Make-lang.in107
-rw-r--r--gcc/f/g77spec.c14
-rw-r--r--gcc/f/lex.c16
-rw-r--r--gcc/f/sta.c4
-rw-r--r--gcc/final.c83
-rw-r--r--gcc/fix-header.c5
-rw-r--r--gcc/fixinc/fixincl.x625
-rw-r--r--gcc/fixinc/inclhack.def343
-rw-r--r--gcc/fixinc/tests/base/libgen.h16
-rw-r--r--gcc/fixinc/tests/base/locale.h20
-rw-r--r--gcc/fixinc/tests/base/math.h22
-rw-r--r--gcc/fixinc/tests/base/pthread.h3
-rw-r--r--gcc/fixinc/tests/base/standards.h14
-rw-r--r--gcc/fixinc/tests/base/stdio.h12
-rw-r--r--gcc/fixinc/tests/base/stdlib.h14
-rw-r--r--gcc/fixinc/tests/base/strings.h15
-rw-r--r--gcc/fixinc/tests/base/sys/stat.h4
-rw-r--r--gcc/fixinc/tests/base/sys/time.h27
-rw-r--r--gcc/fixinc/tests/base/testing.h17
-rw-r--r--gcc/fixinc/tests/base/unistd.h10
-rw-r--r--gcc/flags.h21
-rw-r--r--gcc/flow.c41
-rw-r--r--gcc/fold-const.c719
-rw-r--r--gcc/function.c41
-rw-r--r--gcc/function.h9
-rw-r--r--gcc/gcc.c18
-rw-r--r--gcc/gcov-io.c48
-rw-r--r--gcc/gcov.c11
-rw-r--r--gcc/gcse.c20
-rw-r--r--gcc/genattrtab.c2
-rw-r--r--gcc/genautomata.c2
-rw-r--r--gcc/genconditions.c2
-rw-r--r--gcc/genextract.c6
-rw-r--r--gcc/genflags.c2
-rw-r--r--gcc/gengtype-lex.l2
-rw-r--r--gcc/gengtype.c2
-rw-r--r--gcc/genopinit.c2
-rw-r--r--gcc/genrecog.c32
-rw-r--r--gcc/gensupport.c2
-rw-r--r--gcc/ggc-simple.c29
-rw-r--r--gcc/ggc-zone.c3
-rw-r--r--gcc/graph.c3
-rw-r--r--gcc/haifa-sched.c2
-rw-r--r--gcc/hooks.c9
-rw-r--r--gcc/hooks.h3
-rw-r--r--gcc/integrate.c2
-rw-r--r--gcc/java/ChangeLog70
-rw-r--r--gcc/java/Make-lang.in82
-rw-r--r--gcc/java/class.c5
-rw-r--r--gcc/java/expr.c4
-rw-r--r--gcc/java/parse.y17
-rw-r--r--gcc/java/typeck.c5
-rw-r--r--gcc/langhooks-def.h2
-rw-r--r--gcc/langhooks.c2
-rw-r--r--gcc/langhooks.h2
-rw-r--r--gcc/libgcov.c1
-rw-r--r--gcc/local-alloc.c2
-rw-r--r--gcc/loop-init.c102
-rw-r--r--gcc/loop-unroll.c223
-rw-r--r--gcc/loop.c27
-rw-r--r--gcc/loop.h3
-rw-r--r--gcc/mips-tfile.c4
-rw-r--r--gcc/objc/Make-lang.in6
-rw-r--r--gcc/objc/objc-act.c13
-rw-r--r--gcc/optabs.c12
-rw-r--r--gcc/optabs.h2
-rw-r--r--gcc/opts.c10
-rw-r--r--gcc/output.h4
-rw-r--r--gcc/params.def17
-rw-r--r--gcc/po/ChangeLog59
-rw-r--r--gcc/po/EXCLUDES42
-rw-r--r--gcc/po/ca.po20826
-rw-r--r--gcc/po/de.po18754
-rw-r--r--gcc/po/fr.po20138
-rw-r--r--gcc/po/gcc.pot7364
-rw-r--r--gcc/postreload.c11
-rw-r--r--gcc/ra.h2
-rw-r--r--gcc/real.c15
-rw-r--r--gcc/recog.c2
-rw-r--r--gcc/reg-stack.c2
-rw-r--r--gcc/regmove.c2
-rw-r--r--gcc/reload.c29
-rw-r--r--gcc/reload1.c26
-rw-r--r--gcc/reorg.c2
-rw-r--r--gcc/rtl.h14
-rw-r--r--gcc/rtlanal.c19
-rw-r--r--gcc/sched-deps.c2
-rw-r--r--gcc/sched-ebb.c2
-rw-r--r--gcc/sdbout.c2
-rw-r--r--gcc/simplify-rtx.c2
-rw-r--r--gcc/stmt.c17
-rw-r--r--gcc/system.h16
-rw-r--r--gcc/target-def.h8
-rw-r--r--gcc/target.h19
-rw-r--r--gcc/targhooks.c10
-rw-r--r--gcc/targhooks.h5
-rw-r--r--gcc/testsuite/ChangeLog622
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle21.C13
-rw-r--r--gcc/testsuite/g++.dg/abi/structret1.C31
-rw-r--r--gcc/testsuite/g++.dg/bprob/bprob.exp2
-rw-r--r--gcc/testsuite/g++.dg/conversion/op2.C16
-rw-r--r--gcc/testsuite/g++.dg/debug/crash1.C17
-rw-r--r--gcc/testsuite/g++.dg/eh/cond2.C19
-rw-r--r--gcc/testsuite/g++.dg/eh/forced1.C3
-rw-r--r--gcc/testsuite/g++.dg/eh/forced2.C3
-rw-r--r--gcc/testsuite/g++.dg/eh/forced3.C3
-rw-r--r--gcc/testsuite/g++.dg/eh/forced4.C3
-rw-r--r--gcc/testsuite/g++.dg/eh/ia64-1.C9
-rw-r--r--gcc/testsuite/g++.dg/eh/simd-1.C2
-rw-r--r--gcc/testsuite/g++.dg/eh/simd-2.C9
-rw-r--r--gcc/testsuite/g++.dg/expr/cond4.C16
-rw-r--r--gcc/testsuite/g++.dg/expr/for1.C14
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib10.C1
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib12.C16
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib13.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/case-range1.C23
-rw-r--r--gcc/testsuite/g++.dg/ext/case-range2.C27
-rw-r--r--gcc/testsuite/g++.dg/ext/case-range3.C23
-rw-r--r--gcc/testsuite/g++.dg/ext/packed5.C16
-rw-r--r--gcc/testsuite/g++.dg/ext/typeof7.C6
-rw-r--r--gcc/testsuite/g++.dg/ext/typeof8.C12
-rw-r--r--gcc/testsuite/g++.dg/ext/typeof9.C17
-rw-r--r--gcc/testsuite/g++.dg/ext/vector1.C5
-rw-r--r--gcc/testsuite/g++.dg/inherit/thunk2.C19
-rw-r--r--gcc/testsuite/g++.dg/lookup/crash2.C20
-rw-r--r--gcc/testsuite/g++.dg/lookup/member1.C11
-rw-r--r--gcc/testsuite/g++.dg/opt/fold1.C17
-rw-r--r--gcc/testsuite/g++.dg/opt/inline4.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/inline6.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/template1.C2
-rw-r--r--gcc/testsuite/g++.dg/other/crash-2.C13
-rw-r--r--gcc/testsuite/g++.dg/other/crash-3.C31
-rw-r--r--gcc/testsuite/g++.dg/other/error1.C2
-rw-r--r--gcc/testsuite/g++.dg/other/error8.C26
-rw-r--r--gcc/testsuite/g++.dg/other/nontype-1.C7
-rw-r--r--gcc/testsuite/g++.dg/other/profile1.C51
-rw-r--r--gcc/testsuite/g++.dg/other/switch1.C20
-rw-r--r--gcc/testsuite/g++.dg/parse/angle-bracket2.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/attr-ctor1.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/cast2.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/comma1.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/constructor2.C11
-rw-r--r--gcc/testsuite/g++.dg/parse/defarg7.C5
-rw-r--r--gcc/testsuite/g++.dg/parse/error11.C53
-rw-r--r--gcc/testsuite/g++.dg/parse/error12.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/error13.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/error14.C22
-rw-r--r--gcc/testsuite/g++.dg/parse/new2.C9
-rw-r--r--gcc/testsuite/g++.dg/parse/template13.C10
-rw-r--r--gcc/testsuite/g++.dg/pch/wchar-1.C1
-rw-r--r--gcc/testsuite/g++.dg/pch/wchar-1.Hs2
-rw-r--r--gcc/testsuite/g++.dg/template/array4.C11
-rw-r--r--gcc/testsuite/g++.dg/template/call2.C14
-rw-r--r--gcc/testsuite/g++.dg/template/cond3.C15
-rw-r--r--gcc/testsuite/g++.dg/template/cond4.C20
-rw-r--r--gcc/testsuite/g++.dg/template/crash17.C19
-rw-r--r--gcc/testsuite/g++.dg/template/ctor3.C19
-rw-r--r--gcc/testsuite/g++.dg/template/friend26.C15
-rw-r--r--gcc/testsuite/g++.dg/template/koenig4.C12
-rw-r--r--gcc/testsuite/g++.dg/template/lookup4.C6
-rw-r--r--gcc/testsuite/g++.dg/template/lookup5.C17
-rw-r--r--gcc/testsuite/g++.dg/template/member4.C20
-rw-r--r--gcc/testsuite/g++.dg/template/non-type-template-argument-1.C4
-rw-r--r--gcc/testsuite/g++.dg/template/nontype4.C14
-rw-r--r--gcc/testsuite/g++.dg/template/nontype5.C14
-rw-r--r--gcc/testsuite/g++.dg/template/nontype6.C19
-rw-r--r--gcc/testsuite/g++.dg/template/partial3.C14
-rw-r--r--gcc/testsuite/g++.dg/template/qualified-id1.C4
-rw-r--r--gcc/testsuite/g++.dg/template/sfinae1.C21
-rw-r--r--gcc/testsuite/g++.dg/template/sizeof6.C13
-rw-r--r--gcc/testsuite/g++.dg/template/sizeof7.C15
-rw-r--r--gcc/testsuite/g++.dg/template/spec11.C20
-rw-r--r--gcc/testsuite/g++.dg/template/static6.C14
-rw-r--r--gcc/testsuite/g++.dg/template/ttp7.C16
-rw-r--r--gcc/testsuite/g++.dg/template/ttp8.C16
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-5.C13
-rw-r--r--gcc/testsuite/g++.dg/warn/conv2.C3
-rw-r--r--gcc/testsuite/g++.dg/warn/incomplete1.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C10
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ext/attrib5.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/profile1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.martin/new1.C16
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/net36.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig5.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb125.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb42.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb58.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb63.C2
-rw-r--r--gcc/testsuite/g77.dg/bprob/bprob.exp2
-rw-r--r--gcc/testsuite/g77.f-torture/execute/12884.f32
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040121-1.c41
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040130-1.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040209-1.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040214-1.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040214-2.c57
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/complex-1.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/libcall-1.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020720-1.x13
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040208-1.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040208-2.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040208-2.x1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040218-1.c37
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040302-1.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/990208-1.x14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/string-opt-15.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/va-arg-25.x28
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/20000724-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/20021014-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/20030121-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/20030123-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/20040123-1.c12
-rw-r--r--gcc/testsuite/gcc.dg/20040127-1.c24
-rw-r--r--gcc/testsuite/gcc.dg/20040127-2.c32
-rw-r--r--gcc/testsuite/gcc.dg/20040217-1.c19
-rw-r--r--gcc/testsuite/gcc.dg/991214-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/always_inline.c12
-rw-r--r--gcc/testsuite/gcc.dg/always_inline2.c8
-rw-r--r--gcc/testsuite/gcc.dg/always_inline3.c8
-rw-r--r--gcc/testsuite/gcc.dg/arm-mmx-1.c26
-rw-r--r--gcc/testsuite/gcc.dg/builtins-30.c27
-rw-r--r--gcc/testsuite/gcc.dg/builtins-config.h4
-rw-r--r--gcc/testsuite/gcc.dg/c90-init-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/cast-function-1.c26
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/assert4.c17
-rw-r--r--gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c11
-rw-r--r--gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c11
-rw-r--r--gcc/testsuite/gcc.dg/darwin-longlong.c38
-rw-r--r--gcc/testsuite/gcc.dg/debug/20020327-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/debug/debug-7.c16
-rw-r--r--gcc/testsuite/gcc.dg/fwritable-strings-1.c18
-rw-r--r--gcc/testsuite/gcc.dg/i386-asm-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/i386-cpuid.h21
-rw-r--r--gcc/testsuite/gcc.dg/i386-mmx-4.c245
-rw-r--r--gcc/testsuite/gcc.dg/i386-regparm.c9
-rw-r--r--gcc/testsuite/gcc.dg/i386-sse-6.c205
-rw-r--r--gcc/testsuite/gcc.dg/i386-sse-7.c139
-rw-r--r--gcc/testsuite/gcc.dg/inline-5.c13
-rw-r--r--gcc/testsuite/gcc.dg/nest.c5
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/20020213-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/ppc64-abi-2.c405
-rw-r--r--gcc/testsuite/gcc.dg/ppc64-abi-3.c28
-rw-r--r--gcc/testsuite/gcc.dg/pr14092-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/sparc-ret.c9
-rw-r--r--gcc/testsuite/gcc.dg/struct-by-value-2.c15
-rw-r--r--gcc/testsuite/gcc.dg/titype-1.c34
-rw-r--r--gcc/testsuite/gcc.dg/tls/alias-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/mips-clobber-at.c4
-rw-r--r--gcc/testsuite/gcc.dg/va-arg-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/visibility-8.c16
-rw-r--r--gcc/testsuite/gcc.misc-tests/bprob.exp2
-rw-r--r--gcc/testsuite/lib/file-format.exp3
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp2
-rw-r--r--gcc/testsuite/lib/scanasm.exp9
-rw-r--r--gcc/testsuite/lib/target-supports.exp34
-rw-r--r--gcc/testsuite/objc.dg/call-super-2.m43
-rw-r--r--gcc/testsuite/objc.dg/desig-init-1.m2
-rw-r--r--gcc/testsuite/objc.dg/encode-2.m15
-rw-r--r--gcc/testsuite/objc.dg/encode-3.m10
-rw-r--r--gcc/testsuite/objc.dg/encode-4.m2
-rw-r--r--gcc/testsuite/objc.dg/proto-qual-1.m10
-rw-r--r--gcc/testsuite/objc.dg/stret-1.m62
-rw-r--r--gcc/testsuite/objc.dg/stret-2.m46
-rw-r--r--gcc/toplev.c82
-rw-r--r--gcc/toplev.h3
-rw-r--r--gcc/tree-inline.c33
-rw-r--r--gcc/tree-optimize.c30
-rw-r--r--gcc/tree.c35
-rw-r--r--gcc/tree.def2
-rw-r--r--gcc/tree.h28
-rw-r--r--gcc/treelang/ChangeLog10
-rw-r--r--gcc/treelang/Make-lang.in30
-rw-r--r--gcc/unwind-dw2-fde.h2
-rw-r--r--gcc/unwind-pe.h2
-rw-r--r--gcc/unwind.h2
-rw-r--r--gcc/varasm.c24
-rw-r--r--gcc/varray.c113
-rw-r--r--gcc/varray.h4
-rw-r--r--gcc/version.c2
-rw-r--r--libf2c/ChangeLog14
-rw-r--r--libf2c/Makefile.in2
-rw-r--r--libf2c/aclocal.m47
-rwxr-xr-xlibf2c/configure89
-rw-r--r--libf2c/libI77/rsne.c7
-rw-r--r--libffi/ChangeLog40
-rw-r--r--libffi/README10
-rw-r--r--libffi/src/sparc/ffi.c164
-rw-r--r--libffi/src/sparc/v8.S47
-rw-r--r--libffi/src/sparc/v9.S64
-rw-r--r--libffi/testsuite/libffi.call/cls_uint.c4
-rw-r--r--libffi/testsuite/libffi.call/pyobjc-tc.c2
-rw-r--r--libffi/testsuite/libffi.call/struct3.c2
-rw-r--r--libiberty/ChangeLog48
-rw-r--r--libiberty/cp-demangle.c355
-rw-r--r--libiberty/cp-demangle.h12
-rw-r--r--libiberty/testsuite/demangle-expected26
-rw-r--r--libjava/ChangeLog148
-rw-r--r--libjava/Makefile.am20
-rw-r--r--libjava/Makefile.in21
-rwxr-xr-xlibjava/configure13
-rw-r--r--libjava/configure.host10
-rw-r--r--libjava/configure.in12
-rw-r--r--libjava/gnu/java/net/PlainSocketImpl.java27
-rw-r--r--libjava/gnu/java/net/protocol/http/Connection.java19
-rw-r--r--libjava/gnu/java/nio/DatagramChannelImpl.java57
-rw-r--r--libjava/gnu/java/nio/NIOServerSocket.java3
-rw-r--r--libjava/gnu/java/nio/ServerSocketChannelImpl.java6
-rw-r--r--libjava/gnu/java/nio/SocketChannelImpl.java61
-rw-r--r--libjava/include/powerpc-signal.h30
-rw-r--r--libjava/include/x86_64-signal.h17
-rw-r--r--libjava/java/lang/natPosixProcess.cc6
-rw-r--r--libjava/java/lang/reflect/natMethod.cc11
-rw-r--r--libjava/java/net/DatagramSocket.java7
-rw-r--r--libjava/java/net/ServerSocket.java9
-rw-r--r--libjava/java/net/Socket.java7
-rw-r--r--libjava/java/nio/ByteBuffer.java10
-rw-r--r--libjava/java/nio/ByteBufferHelper.java136
-rw-r--r--libjava/java/nio/ByteBufferImpl.java91
-rw-r--r--libjava/java/nio/CharViewBufferImpl.java94
-rw-r--r--libjava/java/nio/DirectByteBufferImpl.java124
-rw-r--r--libjava/java/nio/DoubleViewBufferImpl.java80
-rw-r--r--libjava/java/nio/FloatViewBufferImpl.java83
-rw-r--r--libjava/java/nio/IntViewBufferImpl.java83
-rw-r--r--libjava/java/nio/LongViewBufferImpl.java83
-rw-r--r--libjava/java/nio/MappedByteBufferImpl.java133
-rw-r--r--libjava/java/nio/ShortViewBufferImpl.java83
-rw-r--r--libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java2
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectableChannel.java7
-rw-r--r--libjava/java/nio/natDirectByteBufferImpl.cc9
-rw-r--r--libjava/libltdl/ChangeLog5
-rwxr-xr-xlibjava/libltdl/config.guess39
-rwxr-xr-xlibjava/libltdl/config.sub47
-rw-r--r--libjava/libtool-version2
-rw-r--r--libobjc/ChangeLog9
-rw-r--r--libobjc/Makefile.in2
-rw-r--r--libobjc/encoding.c11
-rw-r--r--libstdc++-v3/.cvsignore1
-rw-r--r--libstdc++-v3/ChangeLog9216
-rw-r--r--libstdc++-v3/ChangeLog-20038619
-rw-r--r--libstdc++-v3/acinclude.m49
-rw-r--r--libstdc++-v3/aclocal.m413
-rw-r--r--libstdc++-v3/config.h.in3
-rw-r--r--libstdc++-v3/config/io/basic_file_stdio.cc205
-rw-r--r--libstdc++-v3/config/io/basic_file_stdio.h8
-rw-r--r--libstdc++-v3/config/linker-map.gnu5
-rw-r--r--libstdc++-v3/config/locale/generic/c_locale.cc4
-rw-r--r--libstdc++-v3/config/locale/gnu/c_locale.cc4
-rw-r--r--libstdc++-v3/config/locale/gnu/monetary_members.cc14
-rw-r--r--libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h8
-rw-r--r--libstdc++-v3/config/os/irix/irix6.5/os_defines.h3
-rw-r--r--libstdc++-v3/config/os/tpf/ctype_base.h55
-rw-r--r--libstdc++-v3/config/os/tpf/ctype_inline.h69
-rw-r--r--libstdc++-v3/config/os/tpf/ctype_noninline.h103
-rw-r--r--libstdc++-v3/config/os/tpf/os_defines.h45
-rwxr-xr-xlibstdc++-v3/configure2068
-rw-r--r--libstdc++-v3/configure.host3
-rw-r--r--libstdc++-v3/crossconfig.m435
-rw-r--r--libstdc++-v3/docs/html/17_intro/C++STYLE2
-rw-r--r--libstdc++-v3/include/Makefile.am2
-rw-r--r--libstdc++-v3/include/Makefile.in12
-rw-r--r--libstdc++-v3/include/backward/bvector.h4
-rw-r--r--libstdc++-v3/include/bits/basic_ios.tcc16
-rw-r--r--libstdc++-v3/include/bits/basic_string.h44
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc248
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/bits/codecvt.h118
-rw-r--r--libstdc++-v3/include/bits/fstream.tcc51
-rw-r--r--libstdc++-v3/include/bits/gslice.h107
-rw-r--r--libstdc++-v3/include/bits/gslice_array.h32
-rw-r--r--libstdc++-v3/include/bits/indirect_array.h142
-rw-r--r--libstdc++-v3/include/bits/ios_base.h6
-rw-r--r--libstdc++-v3/include/bits/locale_classes.h4
-rw-r--r--libstdc++-v3/include/bits/locale_facets.h8
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc77
-rw-r--r--libstdc++-v3/include/bits/mask_array.h38
-rw-r--r--libstdc++-v3/include/bits/postypes.h80
-rw-r--r--libstdc++-v3/include/bits/slice_array.h56
-rw-r--r--libstdc++-v3/include/bits/sstream.tcc2
-rw-r--r--libstdc++-v3/include/bits/stl_bvector.h23
-rw-r--r--libstdc++-v3/include/bits/stl_multiset.h618
-rw-r--r--libstdc++-v3/include/bits/stl_numeric.h107
-rw-r--r--libstdc++-v3/include/bits/stl_set.h597
-rw-r--r--libstdc++-v3/include/bits/stream_iterator.h37
-rw-r--r--libstdc++-v3/include/bits/streambuf_iterator.h34
-rw-r--r--libstdc++-v3/include/bits/vector.tcc48
-rw-r--r--libstdc++-v3/include/debug/bitset2
-rw-r--r--libstdc++-v3/include/ext/demangle.h (renamed from libstdc++-v3/include/bits/demangle.h)359
-rw-r--r--libstdc++-v3/include/ext/malloc_allocator.h6
-rw-r--r--libstdc++-v3/include/ext/mt_allocator.h5
-rw-r--r--libstdc++-v3/include/ext/new_allocator.h6
-rw-r--r--libstdc++-v3/include/ext/pool_allocator.h1
-rw-r--r--libstdc++-v3/include/ext/ropeimpl.h2
-rw-r--r--libstdc++-v3/include/std/std_bitset.h14
-rw-r--r--libstdc++-v3/include/std/std_complex.h72
-rw-r--r--libstdc++-v3/include/std/std_istream.h6
-rw-r--r--libstdc++-v3/include/std/std_ostream.h6
-rw-r--r--libstdc++-v3/include/std/std_valarray.h311
-rw-r--r--libstdc++-v3/libmath/mathconf.h5
-rw-r--r--libstdc++-v3/libmath/nan.c36
-rw-r--r--libstdc++-v3/libsupc++/Makefile.am32
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in56
-rw-r--r--libstdc++-v3/libsupc++/eh_catch.cc8
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc4
-rw-r--r--libstdc++-v3/libsupc++/vterminate.cc46
-rw-r--r--libstdc++-v3/linkage.m42
-rw-r--r--libstdc++-v3/src/Makefile.am1
-rw-r--r--libstdc++-v3/src/Makefile.in11
-rw-r--r--libstdc++-v3/src/demangle.cc167
-rw-r--r--libstdc++-v3/src/ios.cc18
-rw-r--r--libstdc++-v3/src/locale.cc6
-rw-r--r--libstdc++-v3/src/locale_init.cc3
-rw-r--r--libstdc++-v3/src/localename.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/14026.cc34
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc50
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc50
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc5
-rw-r--r--libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc49
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc7
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc70
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc67
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc17
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc7
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc13
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc8
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc4
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc4
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc7
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc70
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc67
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc17
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc7
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc13
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc8
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc4
-rw-r--r--libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc4
-rw-r--r--libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc47
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc70
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc17
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc71
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc18
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc14
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc16
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14252.cc62
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc63
-rw-r--r--libstdc++-v3/testsuite/27_io/objects/char/7.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc3
-rw-r--r--libstdc++-v3/testsuite/demangle/abi_examples/01.cc2
-rw-r--r--libstdc++-v3/testsuite/demangle/abi_examples/02.cc2
-rw-r--r--libstdc++-v3/testsuite/demangle/regression/cw-11.cc3
-rw-r--r--libstdc++-v3/testsuite/demangle/regression/cw-16.cc4
-rw-r--r--libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc61
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp10
-rw-r--r--libstdc++-v3/testsuite/performance/fmtflags_manipulators.cc69
-rw-r--r--libstdc++-v3/testsuite/performance/string_append.cc4
-rw-r--r--libstdc++-v3/testsuite/performance/string_cons_input_iterator.cc58
-rw-r--r--libstdc++-v3/testsuite/testsuite_hooks.cc5
-rw-r--r--ltmain.sh22
-rw-r--r--maintainer-scripts/ChangeLog4
-rwxr-xr-xmaintainer-scripts/gcc_release4
-rwxr-xr-xmkinstalldirs69
772 files changed, 80800 insertions, 43495 deletions
diff --git a/ChangeLog b/ChangeLog
index c9bd867367b..5027d5cdbec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,55 @@
+2004-03-01 Richard Sandiford <rsandifo@redhat.com>
+
+ * configure.in (mips64*-*-linux*): Override mips*-*-linux* case
+ and disable libgcj.
+ * configure: Regenerated.
+
+2004-02-25 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ PR bootstrap/11932
+ * mkinstalldirs: Update to version 2004-02-15.20
+
+2004-02-25 Kelley Cook <kcook@gcc.gnu.org>
+
+ * MAINTAINERS: Add myself to write-after-approval.
+
+2004-02-22 Matthias Klose <doko@debian.org>
+
+ * config.guess: Update from version 2003-10-16 to 2004-02-16.
+ * config.sub: Update from version 2003-11-03 to 2004-02-16.
+
+2004-02-20 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * MAINTAINERS: Add Nicola Pero and myself as libobjc
+ maintainers.
+
+2004-02-14 Jerry Quinn <jlquinn@optonline.net>
+
+ * MAINTAINERS: Added myself to write-after-approval.
+
+2004-02-12 Kazu Hirata <kazu@cs.umass.edu>
+
+ * MAINTAINERS: Alphabetize.
+
+2004-02-04 Geoffrey Keating <geoffk@apple.com>
+
+ Partial merge from upstream:
+ * ltmain.in: When setting IFS to '~', be careful about user
+ arguments that contain '~'.
+
+2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.in: Don't pass --with-stabs on IRIX 5 either.
+ * configure: Regenerate.
+
+2004-01-19 Paolo Carlini <pcarlini@suse.de>
+
+ * MAINTAINERS: Update my email address.
+
+2004-01-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * MAINTAINERS: Remove entries without email address.
+
2004-01-15 Daniel Jacobowitz <drow@mvista.com>
* MAINTAINERS: Add myself to write-after-approval.
diff --git a/MAINTAINERS b/MAINTAINERS
index 6a6eb4350c7..b7ded195d9f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -118,6 +118,8 @@ mercury Fergus Henderson fjh@cs.mu.oz.au
objective-c Stan Shebs shebs@apple.com
objective-c Ovidiu Predescu ovidiu@cup.hp.com
objective-c Ziemowit Laski zlaski@apple.com
+libobjc Nicola Pero n.pero@mi.flashnet.it
+libobjc Andrew Pinski pinskia@physics.uc.edu
alias analysis John Carr jfc@mit.edu
loop unrolling Jim Wilson wilson@specifixinc.com
loop discovery Michael Hayes m.hayes@elec.canterbury.ac.nz
@@ -129,7 +131,7 @@ caller-save.c Jeff Law law@redhat.com
callgraph Jan Hubicka jh@suse.cz
debugging code Jim Wilson wilson@specifixinc.com
dwarf debugging code Jason Merrill jason@redhat.com
-c++ runtime libs Paolo Carlini pcarlini@unitus.it
+c++ runtime libs Paolo Carlini pcarlini@suse.de
c++ runtime libs Gabriel Dos Reis gdr@integrable-solutions.net
c++ runtime libs Ulrich Drepper drepper@redhat.com
c++ runtime libs Phil Edwards pme@gcc.gnu.org
@@ -193,6 +195,7 @@ Kevin Buettner kevinb@redhat.com
Andrew Cagney cagney@redhat.com
Chandra Chavva cchavva@redhat.com
William Cohen wcohen@redhat.com
+R. Kelley Cook kcook@gcc.gnu.org
Christian Cornelssen ccorn@cs.tu-berlin.de
David Daney ddaney@avtrex.com
Chris Demetriou cgd@broadcom.com
@@ -248,13 +251,12 @@ Turly O'Connor turly@apple.com
Jeffrey D. Oldham oldham@codesourcery.com
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Devang Patel dpatel@apple.com
-Nicola Pero n.pero@mi.flashnet.it
Graeme Peterson gp@qnx.com
Alexandre Petit-Bianco apbianco@redhat.com
-Andrew Pinski pinskia@physics.uc.edu
Nicolas Pitre nico@cam.org
Sebastian Pop s.pop@laposte.net
Clinton Popetz cpopetz@cpopetz.com
+Jerry Quinn jlquinn@optonline.net
Rolf Rasmussen rolfwr@gcc.gnu.org
Volker Reichelt reichelt@igpm.rwth-aachen.de
Tom Rix trix@redhat.com
@@ -272,8 +274,8 @@ Richard Stallman rms@gnu.org
Graham Stott graham.stott@btinternet.com
Mike Stump mrs@apple.com
Jeff Sturm jsturm@gcc.gnu.org
-Michael Tiemann tiemann@redhat.com
Kresten Krab Thorup krab@gcc.gnu.org
+Michael Tiemann tiemann@redhat.com
Jonathan Wakely redi@gcc.gnu.org
Krister Walfridsson cato@df.lth.se
John Wehle john@feith.com
@@ -287,7 +289,3 @@ Bug database only accounts
James Dennett jdennett@acm.org
Christian Ehrhardt ehrhardt@mathematik.uni-ulm.de
Dara Hazeghi dhazeghi@yahoo.com
-
-Peter Bienstman(?)
-Benjamin Chelf(?)
-Mark Galassi(?)
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index b590a1ff725..5822f26de3b 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,14 @@
+2004-02-22 Matthias Klose <doko@debian.org>
+
+ * config.guess: Update from version 2002-01-10 to 2004-02-16.
+ * config.sub: Update from version 2002-01-02 to 2004-02-16.
+
+2004-01-20 Andrew Haley <aph@redhat.com>
+
+ * include/private/gcconfig.h (USE_MMAP): Define for all Linux.
+
+ * configure.in: Comment change.
+
2004-01-16 Andrew Haley <aph@redhat.com>
* configure.in (NO_EXECUTE_PERMISSION): Remove global declaration;
diff --git a/boehm-gc/config.guess b/boehm-gc/config.guess
index aa6ea3f6766..00ccf89e18b 100755
--- a/boehm-gc/config.guess
+++ b/boehm-gc/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2002-01-10'
+timestamp='2004-02-16'
# 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
@@ -88,30 +88,42 @@ if test $# != 0; then
exit 1
fi
+trap 'exit 1' 1 2 15
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
-# CC_FOR_BUILD -- compiler used by this script.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int dummy(){}" > $dummy.c ;
- for c in cc gcc c89 ; do
- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
- if test $? = 0 ; then
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
- rm -f $dummy.c $dummy.o $dummy.rel ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac'
+esac ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -138,9 +150,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
- UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \
- UNAME_MACHINE_ARCH=unknown
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
@@ -166,18 +180,35 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# The OS release
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit 0 ;;
+ amd64:OpenBSD:*:*)
+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -196,6 +227,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ pegasos:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -211,69 +245,65 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
fi
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- cat <<EOF >$dummy.s
- .data
-\$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
-main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit 0 ;;
+ Alpha*:OpenVMS:*:*)
+ echo alpha-hp-vms
+ exit 0 ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,6 +325,9 @@ EOF
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
@@ -312,6 +345,13 @@ EOF
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit 0 ;;
+ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
@@ -340,7 +380,7 @@ EOF
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
@@ -380,6 +420,9 @@ EOF
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
@@ -418,15 +461,20 @@ EOF
exit (-1);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
+ $CC_FOR_BUILD -o $dummy $dummy.c \
+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && exit 0
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit 0 ;;
@@ -499,8 +547,7 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
@@ -509,7 +556,7 @@ EOF
fi
exit 0 ;;
*:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
@@ -598,11 +645,21 @@ EOF
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ # avoid double evaluation of $set_cc_for_build
+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
ia64:HP-UX:*:*)
@@ -636,8 +693,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -683,9 +739,6 @@ EOF
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
@@ -698,24 +751,26 @@ EOF
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
- CRAY*T3D:*:*:*)
- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
@@ -726,7 +781,21 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ # Determine whether the default compiler uses glibc.
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #if __GLIBC__ >= 2
+ LIBC=gnu
+ #else
+ LIBC=
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ # GNU/KFreeBSD systems have a "k" prefix to indicate we are using
+ # FreeBSD's kernel, but not the complete OS.
+ case ${LIBC} in gnu) kernel_only='k' ;; esac
+ echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
@@ -737,14 +806,17 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit 0 ;;
- x86:Interix*:3*)
- echo i386-pc-interix3
+ x86:Interix*:[34]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
exit 0 ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
+ echo i586-pc-interix
exit 0 ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
@@ -756,16 +828,24 @@ EOF
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
+ # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit 0 ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit 0 ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit 0 ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -776,19 +856,37 @@ EOF
#undef CPU
#undef mips
#undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
#else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips
#else
CPU=
#endif
- #endif
+ #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c
- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
@@ -824,6 +922,9 @@ EOF
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
@@ -837,7 +938,8 @@ EOF
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
# problems with other programs or directories called `ld' in the path.
- ld_supported_targets=`cd /; ld --help 2>&1 \
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
| sed -ne '/supported targets:/!d
s/[ ][ ]*/ /g
s/.*supported targets: *//
@@ -849,7 +951,7 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit 0 ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0 ;;
@@ -874,11 +976,17 @@ EOF
LIBC=gnulibc1
# endif
#else
+ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
LIBC=gnuaout
#endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
@@ -896,6 +1004,26 @@ EOF
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -917,22 +1045,19 @@ EOF
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
&& UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -956,9 +1081,15 @@ EOF
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -975,9 +1106,6 @@ EOF
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1049,6 +1177,9 @@ EOF
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
@@ -1056,18 +1187,24 @@ EOF
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ case `uname -p` in
+ *86) UNAME_PROCESSOR=i686 ;;
+ powerpc) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit 0 ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
- if test "${UNAME_MACHINE}" = "x86pc"; then
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
exit 0 ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1090,11 +1227,6 @@ EOF
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
exit 0 ;;
@@ -1113,11 +1245,11 @@ EOF
*:ITS:*:*)
echo pdp10-unknown-its
exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
esac
@@ -1239,8 +1371,7 @@ main ()
}
EOF
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
# Apollos put the system type in the environment.
diff --git a/boehm-gc/config.sub b/boehm-gc/config.sub
index 16573348b81..d2e3557ac40 100755
--- a/boehm-gc/config.sub
+++ b/boehm-gc/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2002-01-02'
+timestamp='2004-02-16'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,8 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -228,28 +229,42 @@ case $basic_machine in
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \
- | d10v | d30v | dsp16xx \
- | fr30 \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
| m32r | m68000 | m68k | m88k | mcore \
- | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el | mips64vr4300 \
- | mips64vr4300el | mips64vr5000 | mips64vr5000el \
- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
- | mipsisa32 \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | msp430 \
| ns16k | ns32k \
- | openrisc \
+ | openrisc | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[34] | sh[34]eb | shbe | shle \
- | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
| strongarm \
- | tahoe | thumb | tic80 | tron \
+ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
| x86 | xscale | xstormy16 | xtensa \
@@ -281,37 +296,53 @@ case $basic_machine in
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armv*-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
| bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c54x-* \
- | clipper-* | cray2-* | cydra-* \
- | d10v-* | d30v-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | fx80-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
| m32r-* \
- | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | mcore-* \
- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | msp430-* \
+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
- | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
| xtensa-* \
| ymp-* \
| z8k-*)
@@ -332,6 +363,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -346,6 +380,12 @@ case $basic_machine in
basic_machine=a29k-none
os=-bsd
;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -377,6 +417,10 @@ case $basic_machine in
basic_machine=ns32k-sequent
os=-dynix
;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
convex-c1)
basic_machine=c1-convex
os=-bsd
@@ -397,17 +441,13 @@ case $basic_machine in
basic_machine=c38-convex
os=-bsd
;;
- cray | ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- cray2)
- basic_machine=cray2-cray
+ cray | j90)
+ basic_machine=j90-cray
os=-unicos
;;
- [cjt]90)
- basic_machine=${basic_machine}-cray
- os=-unicos
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
;;
crds | unos)
basic_machine=m68k-crds
@@ -609,14 +649,6 @@ case $basic_machine in
basic_machine=m68k-atari
os=-mint
;;
- mipsel*-linux*)
- basic_machine=mipsel-unknown
- os=-linux-gnu
- ;;
- mips*-linux*)
- basic_machine=mips-unknown
- os=-linux-gnu
- ;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
@@ -707,6 +739,10 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ nv1)
+ basic_machine=nv1-cray
+ os=-unicosmp
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -714,6 +750,14 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
+ or32 | or32-*)
+ basic_machine=or32-unknown
+ os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
@@ -736,49 +780,55 @@ case $basic_machine in
pbb)
basic_machine=m68k-tti
;;
- pc532 | pc532-*)
+ pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
- pentiumpro | p6 | 6x86 | athlon)
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
- pentiumii | pentium2)
+ pentiumii | pentium2 | pentiumiii | pentium3)
basic_machine=i686-pc
;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- pentiumii-* | pentium2-*)
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
- ;;
+ ;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
- ;;
+ ;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
- ;;
+ ;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
- ;;
+ ;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
@@ -809,6 +859,16 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
sequent)
basic_machine=i386-sequent
;;
@@ -816,6 +876,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
@@ -883,13 +946,25 @@ case $basic_machine in
os=-dynix
;;
t3e)
- basic_machine=t3e-cray
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
os=-unicos
;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -903,6 +978,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -924,8 +1003,8 @@ case $basic_machine in
os=-vms
;;
vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
+ basic_machine=f301-fujitsu
+ ;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -946,17 +1025,13 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
+ xps | xps100)
+ basic_machine=xps100-honeywell
;;
- xmp)
- basic_machine=xmp-cray
+ ymp)
+ basic_machine=ymp-cray
os=-unicos
;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
z8k-*-coff)
basic_machine=z8k-unknown
os=-sim
@@ -977,13 +1052,6 @@ case $basic_machine in
op60c)
basic_machine=hppa1.1-oki
;;
- mips)
- if [ x$os = x-linux-gnu ]; then
- basic_machine=mips-unknown
- else
- basic_machine=mips-mips
- fi
- ;;
romp)
basic_machine=romp-ibm
;;
@@ -1003,13 +1071,16 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh3eb | sh4eb)
+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
- cydra)
+ cydra)
basic_machine=cydra-cydrome
;;
orion)
@@ -1024,10 +1095,6 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
@@ -1083,17 +1150,20 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* | -morphos*)
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1105,8 +1175,10 @@ case $os in
;;
esac
;;
+ -nto-qnx*)
+ ;;
-nto*)
- os=-nto-qnx
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
@@ -1115,6 +1187,9 @@ case $os in
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
@@ -1127,6 +1202,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1148,14 +1226,20 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
-ctix* | -uts*)
os=-sysv
;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
-ns2 )
- os=-nextstep2
+ os=-nextstep2
;;
-nsk*)
os=-nsk
@@ -1167,6 +1251,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1194,8 +1281,14 @@ case $os in
-xenix)
os=-xenix
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
;;
-none)
;;
@@ -1228,11 +1321,14 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
;;
- pdp11-*)
+ pdp11-*)
os=-none
;;
*-dec | vax-*)
@@ -1259,6 +1355,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
+ or32-*)
+ os=-coff
+ ;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
@@ -1322,19 +1421,19 @@ case $basic_machine in
*-next)
os=-nextstep3
;;
- *-gould)
+ *-gould)
os=-sysv
;;
- *-highlevel)
+ *-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
- *-sgi)
+ *-sgi)
os=-irix
;;
- *-siemens)
+ *-siemens)
os=-sysv4
;;
*-masscomp)
@@ -1403,10 +1502,16 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
- -vxsim* | -vxworks*)
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
-aux*)
diff --git a/boehm-gc/configure.in b/boehm-gc/configure.in
index ba5ccb9678d..f109c9003ed 100644
--- a/boehm-gc/configure.in
+++ b/boehm-gc/configure.in
@@ -248,7 +248,7 @@ esac
#
# We don't set NO_EXECUTE_PERMISSION by default because gcj (and
# anything else that creates trampolines in gc-allocated memory)
-# always needs exec permission. The exception to this is IA-64 and
+# always needs exec permission. The exceptions to this are IA-64 and
# some variations of Power PC, where trampolines don't contain
# executable code.
#
diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h
index 65e71479892..3da267d8bdc 100644
--- a/boehm-gc/include/private/gcconfig.h
+++ b/boehm-gc/include/private/gcconfig.h
@@ -616,6 +616,7 @@
# ifdef LINUX
# define OS_TYPE "LINUX"
# define STACKBOTTOM ((ptr_t)0xf0000000)
+# define USE_MMAP
# define USE_GENERIC_PUSH_REGS
/* We never got around to the assembly version. */
/* # define MPROTECT_VDB - Reported to not work 9/17/01 */
diff --git a/boehm-gc/install-sh b/boehm-gc/install-sh
index 398a88e1421..e9de23842dc 100755
--- a/boehm-gc/install-sh
+++ b/boehm-gc/install-sh
@@ -109,7 +109,7 @@ then
echo "install: no input file specified"
exit 1
else
- :
+ true
fi
if [ x"$dir_arg" != x ]; then
@@ -120,7 +120,7 @@ if [ x"$dir_arg" != x ]; then
instcmd=:
chmodcmd=""
else
- instcmd=$mkdirprog
+ instcmd=mkdir
fi
else
@@ -130,7 +130,7 @@ else
if [ -f $src -o -d $src ]
then
- :
+ true
else
echo "install: $src does not exist"
exit 1
@@ -141,7 +141,7 @@ else
echo "install: no destination specified"
exit 1
else
- :
+ true
fi
# If destination is a directory, append the input filename; if your system
@@ -151,7 +151,7 @@ else
then
dst="$dst"/`basename $src`
else
- :
+ true
fi
fi
@@ -163,8 +163,8 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
+defaultIFS='
+'
IFS="${IFS-${defaultIFS}}"
oIFS="${IFS}"
@@ -183,7 +183,7 @@ while [ $# -ne 0 ] ; do
then
$mkdirprog "${pathcomp}"
else
- :
+ true
fi
pathcomp="${pathcomp}/"
@@ -194,10 +194,10 @@ if [ x"$dir_arg" != x ]
then
$doit $instcmd $dst &&
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
else
# If we're going to rename the final executable, determine the name now.
@@ -216,7 +216,7 @@ else
then
dstfile=`basename $dst`
else
- :
+ true
fi
# Make a temp file name in the proper directory.
@@ -235,10 +235,10 @@ else
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
# Now rename the file to the real destination.
diff --git a/boehm-gc/libtool.m4 b/boehm-gc/libtool.m4
index 066bf6a5ce6..c857149a9d6 100644
--- a/boehm-gc/libtool.m4
+++ b/boehm-gc/libtool.m4
@@ -1,6 +1,5 @@
-# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
-## Copyright 1996, 1997, 1998, 1999, 2000, 2001
-## Free Software Foundation, Inc.
+## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
+## Copyright (C) 1996-1999 Free Software Foundation, Inc.
## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
##
## This program is free software; you can redistribute it and/or modify
@@ -22,68 +21,85 @@
## configuration script generated by Autoconf, you may include it under
## the same distribution terms that you use for the rest of that program.
-# serial 46 AC_PROG_LIBTOOL
-
-AC_DEFUN([AC_PROG_LIBTOOL],
+# serial 40 AC_PROG_LIBTOOL
+AC_DEFUN(AC_PROG_LIBTOOL,
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+# Save cache, so that ltconfig can load it
+AC_CACHE_SAVE
+
+# Actually configure libtool. ac_aux_dir is where install-sh is found.
+CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
+DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
+|| AC_MSG_ERROR([libtool configure failed])
+
+# Reload cache, that may have been modified by ltconfig
+AC_CACHE_LOAD
+
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
AC_SUBST(LIBTOOL)dnl
-# Prevent multiple expansion
-define([AC_PROG_LIBTOOL], [])
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
])
-AC_DEFUN([AC_LIBTOOL_SETUP],
+AC_DEFUN(AC_LIBTOOL_SETUP,
[AC_PREREQ(2.13)dnl
AC_REQUIRE([AC_ENABLE_SHARED])dnl
AC_REQUIRE([AC_ENABLE_STATIC])dnl
AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
AC_REQUIRE([AC_PROG_NM])dnl
AC_REQUIRE([AC_PROG_LN_S])dnl
-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
-AC_REQUIRE([AC_OBJEXT])dnl
-AC_REQUIRE([AC_EXEEXT])dnl
dnl
-_LT_AC_PROG_ECHO_BACKSLASH
-# Only perform the check for file, if the check method requires it
-case $deplibs_check_method in
-file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- AC_PATH_MAGIC
- fi
- ;;
+case "$target" in
+NONE) lt_target="$host" ;;
+*) lt_target="$target" ;;
esac
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-AC_CHECK_TOOL(STRIP, strip, :)
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+# Check for any special flags to pass to ltconfig.
+#
+# the following will cause an existing older ltconfig to fail, so
+# we ignore this at the expense of the cache file... Checking this
+# will just take longer ... bummer!
+#libtool_flags="--cache-file=$cache_file"
+#
+test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
+test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
+[libtool_flags="$libtool_flags --enable-dlopen"])
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-enable_win32_dll=yes, enable_win32_dll=no)
-
+[libtool_flags="$libtool_flags --enable-win32-dll"])
AC_ARG_ENABLE(libtool-lock,
[ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
-case $host in
+case "$lt_target" in
*-*-irix6*)
# Find out which ABI we are using.
echo '[#]line __oline__ "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.$ac_objext` in
+ case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
;;
@@ -103,10 +119,7 @@ case $host in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_LANG_SAVE
- AC_LANG_C
- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
- AC_LANG_RESTORE])
+ [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
if test x"$lt_cv_cc_needs_belf" != x"yes"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
CFLAGS="$SAVE_CFLAGS"
@@ -114,2889 +127,33 @@ case $host in
;;
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+[*-*-cygwin* | *-*-mingw*)
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
AC_CHECK_TOOL(AS, as, false)
AC_CHECK_TOOL(OBJDUMP, objdump, false)
-
- # recent cygwin and mingw systems supply a stub DllMain which the user
- # can override, but on older systems we have to supply one
- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
- [AC_TRY_LINK([],
- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
- DllMain (0, 0, 0);],
- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
-
- case $host/$CC in
- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
- # old mingw systems require "-dll" to link a DLL, while more recent ones
- # require "-mdll"
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -mdll"
- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
- CFLAGS="$SAVE_CFLAGS" ;;
- *-*-cygwin* | *-*-pw32*)
- # cygwin systems need to pass --dll to the linker, and not link
- # crt.o which will require a WinMain@16 definition.
- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
- esac
;;
- ])
-esac
-
-_LT_AC_LTCONFIG_HACK
-
])
-
-# AC_LIBTOOL_HEADER_ASSERT
-# ------------------------
-AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
-[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
- [lt_cv_func_assert_works],
- [case $host in
- *-*-solaris*)
- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
- case `$CC --version 2>/dev/null` in
- [[12]].*) lt_cv_func_assert_works=no ;;
- *) lt_cv_func_assert_works=yes ;;
- esac
- fi
- ;;
- esac])
-
-if test "x$lt_cv_func_assert_works" = xyes; then
- AC_CHECK_HEADERS(assert.h)
-fi
-])# AC_LIBTOOL_HEADER_ASSERT
-
-# _LT_AC_CHECK_DLFCN
-# --------------------
-AC_DEFUN([_LT_AC_CHECK_DLFCN],
-[AC_CHECK_HEADERS(dlfcn.h)
-])# _LT_AC_CHECK_DLFCN
-
-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-# ---------------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-[AC_REQUIRE([AC_CANONICAL_HOST])
-AC_REQUIRE([AC_PROG_NM])
-AC_REQUIRE([AC_OBJEXT])
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
-# Transform an extracted symbol line into a proper C declaration
-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-
-# Define system-specific variables.
-case $host_os in
-aix*)
- symcode='[[BCDT]]'
- ;;
-cygwin* | mingw* | pw32*)
- symcode='[[ABCDGISTW]]'
- ;;
-hpux*) # Its linker distinguishes data from code symbols
- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
- ;;
-irix*)
- symcode='[[BCDEGRST]]'
- ;;
-solaris* | sysv5*)
- symcode='[[BDT]]'
- ;;
-sysv4)
- symcode='[[DFNSTU]]'
- ;;
-esac
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $host_os in
-mingw*)
- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- symcode='[[ABCDGISTW]]'
-fi
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Write the raw and C identifiers.
-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
- rm -f conftest*
- cat > conftest.$ac_ext <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
- if AC_TRY_EVAL(ac_compile); then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
- # Now generate the symbol file.
- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-
- cat <<EOF >> conftest.$ac_ext
-#if defined (__STDC__) && __STDC__
-# define lt_ptr void *
-#else
-# define lt_ptr char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr address;
-}
-lt_preloaded_symbols[[]] =
-{
-EOF
- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
- cat <<\EOF >> conftest.$ac_ext
- {0, (lt_ptr) 0}
-};
-
-#ifdef __cplusplus
-}
-#endif
-EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
- if AC_TRY_EVAL(ac_link) && test -s conftest; then
- pipe_works=yes
- fi
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
- else
- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
- fi
- else
- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
- fi
- else
- echo "$progname: failed program was:" >&AC_FD_CC
- cat conftest.$ac_ext >&5
- fi
- rm -f conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- lt_cv_sys_global_symbol_pipe=
- fi
-done
-])
-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
- global_symbol_to_cdecl=
- global_symbol_to_c_name_address=
-else
- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-fi
-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-then
- AC_MSG_RESULT(failed)
-else
- AC_MSG_RESULT(ok)
-fi
-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-
-# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-# ---------------------------------
-AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
-[# Find the correct PATH separator. Usually this is `:', but
-# DJGPP uses `;' like DOS.
-if test "X${PATH_SEPARATOR+set}" != Xset; then
- UNAME=${UNAME-`uname 2>/dev/null`}
- case X$UNAME in
- *-DOS) lt_cv_sys_path_separator=';' ;;
- *) lt_cv_sys_path_separator=':' ;;
- esac
- PATH_SEPARATOR=$lt_cv_sys_path_separator
-fi
-])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-
-# _LT_AC_PROG_ECHO_BACKSLASH
-# --------------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
-[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
- [AC_DIVERT_PUSH(NOTICE)])
-_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$ECHO in
-X*--fallback-echo)
- # Remove one level of quotation (which was required for Make).
- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
- ;;
-esac
-
-echo=${ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X[$]1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
- # Yippee, $echo works!
- :
-else
- # Restart under the correct shell.
- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-if test -z "$ECHO"; then
-if test "X${echo_test_string+set}" != Xset; then
-# find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
- echo_test_string="`eval $cmd`" &&
- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
- then
- break
- fi
- done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- :
-else
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- echo="$dir/echo"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- echo='print -r'
- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running configure again with it.
- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
- else
- # Try using printf.
- echo='printf %s\n'
- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # Cool, printf works
- :
- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- echo="$CONFIG_SHELL [$]0 --fallback-echo"
- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- echo="$CONFIG_SHELL [$]0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
- then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "[$]0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
- else
- # Oops. We lost completely, so just stick with echo.
- echo=echo
- fi
- fi
- fi
- fi
-fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-ECHO=$echo
-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
- ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(ECHO)
-AC_DIVERT_POP
-])# _LT_AC_PROG_ECHO_BACKSLASH
-
-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ------------------------------------------------------------------
-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-[if test "$cross_compiling" = yes; then :
- [$4]
-else
- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
-
- exit (status);
-}]
-EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) $1 ;;
- x$lt_dlneed_uscore) $2 ;;
- x$lt_unknown|x*) $3 ;;
- esac
- else :
- # compilation failed
- $3
- fi
-fi
-rm -fr conftest*
-])# _LT_AC_TRY_DLOPEN_SELF
-
-# AC_LIBTOOL_DLOPEN_SELF
-# -------------------
-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
-[if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- cygwin* | mingw* | pw32*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- *)
- AC_CHECK_FUNC([shl_load],
- [lt_cv_dlopen="shl_load"],
- [AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
- [AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
- [AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_LIB([svld], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
- ])
- ])
- ])
- ])
- ])
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- AC_CACHE_CHECK([whether a program can dlopen itself],
- lt_cv_dlopen_self, [dnl
- _LT_AC_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
- ])
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
- lt_cv_dlopen_self_static, [dnl
- _LT_AC_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
- ])
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-])# AC_LIBTOOL_DLOPEN_SELF
-
-AC_DEFUN([_LT_AC_LTCONFIG_HACK],
-[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e s/^X//'
-sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Constants:
-rm="rm -f"
-
-# Global variables:
-default_ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except M$VC,
-# which needs '.lib').
-libext=a
-ltmain="$ac_aux_dir/ltmain.sh"
-ofile="$default_ofile"
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-need_locks="$enable_libtool_lock"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-test -z "$AS" && AS=as
-test -z "$CC" && CC=cc
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-test -z "$LD" && LD=ld
-test -z "$LN_S" && LN_S="ln -s"
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-test -z "$NM" && NM=nm
-test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$RANLIB" && RANLIB=:
-test -z "$STRIP" && STRIP=:
-test -z "$ac_objext" && ac_objext=o
-
-if test x"$host" != x"$build"; then
- ac_tool_prefix=${host_alias}-
-else
- ac_tool_prefix=
-fi
-
-# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-case $host_os in
-linux-gnu*) ;;
-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
esac
-
-case $host_os in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
- case $host_os in
- openbsd*)
- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
- ;;
- *)
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
- ;;
- esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-# Allow CC to be a program name with arguments.
-set dummy $CC
-compiler="[$]2"
-
-## FIXME: this should be a separate macro
-##
-AC_MSG_CHECKING([for objdir])
-rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-AC_MSG_RESULT($objdir)
-##
-## END FIXME
-
-
-## FIXME: this should be a separate macro
-##
-AC_ARG_WITH(pic,
-[ --with-pic try to use only PIC/non-PIC objects [default=use both]],
-pic_mode="$withval", pic_mode=default)
-test -z "$pic_mode" && pic_mode=default
-
-# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-# in isolation, and that seeing it set (from the cache) indicates that
-# the associated values are set (in the cache) correctly too.
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-AC_CACHE_VAL(lt_cv_prog_cc_pic,
-[ lt_cv_prog_cc_pic=
- lt_cv_prog_cc_shlib=
- lt_cv_prog_cc_wl=
- lt_cv_prog_cc_static=
- lt_cv_prog_cc_no_builtin=
- lt_cv_prog_cc_can_build_shared=$can_build_shared
-
- if test "$GCC" = yes; then
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static='-static'
-
- case $host_os in
- aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # not sure about C++ programs.
- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
- ;;
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- lt_cv_prog_cc_pic='-fno-common'
- ;;
- cygwin* | mingw* | pw32* | os2*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- lt_cv_prog_cc_pic='-DDLL_EXPORT'
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- lt_cv_prog_cc_pic=-Kconform_pic
- fi
- ;;
- *)
- lt_cv_prog_cc_pic='-fPIC'
- ;;
- esac
- else
- # PORTME Check for PIC flags for the system compiler.
- case $host_os in
- aix3* | aix4* | aix5*)
- lt_cv_prog_cc_wl='-Wl,'
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_cv_prog_cc_static='-Bstatic'
- else
- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
- hpux9* | hpux10* | hpux11*)
- # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
- lt_cv_prog_cc_pic='+Z'
- ;;
-
- irix5* | irix6*)
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static='-non_shared'
- # PIC (with -KPIC) is the default.
- ;;
-
- cygwin* | mingw* | pw32* | os2*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- lt_cv_prog_cc_pic='-DDLL_EXPORT'
- ;;
-
- newsos6)
- lt_cv_prog_cc_pic='-KPIC'
- lt_cv_prog_cc_static='-Bstatic'
- ;;
-
- osf3* | osf4* | osf5*)
- # All OSF/1 code is PIC.
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static='-non_shared'
- ;;
-
- sco3.2v5*)
- lt_cv_prog_cc_pic='-Kpic'
- lt_cv_prog_cc_static='-dn'
- lt_cv_prog_cc_shlib='-belf'
- ;;
-
- solaris*)
- lt_cv_prog_cc_pic='-KPIC'
- lt_cv_prog_cc_static='-Bstatic'
- lt_cv_prog_cc_wl='-Wl,'
- ;;
-
- sunos4*)
- lt_cv_prog_cc_pic='-PIC'
- lt_cv_prog_cc_static='-Bstatic'
- lt_cv_prog_cc_wl='-Qoption ld '
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- lt_cv_prog_cc_pic='-KPIC'
- lt_cv_prog_cc_static='-Bstatic'
- if test "x$host_vendor" = xsni; then
- lt_cv_prog_cc_wl='-LD'
- else
- lt_cv_prog_cc_wl='-Wl,'
- fi
- ;;
-
- uts4*)
- lt_cv_prog_cc_pic='-pic'
- lt_cv_prog_cc_static='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
- lt_cv_prog_cc_pic='-Kconform_pic'
- lt_cv_prog_cc_static='-Bstatic'
- fi
- ;;
-
- *)
- lt_cv_prog_cc_can_build_shared=no
- ;;
- esac
- fi
-])
-if test -z "$lt_cv_prog_cc_pic"; then
- AC_MSG_RESULT([none])
-else
- AC_MSG_RESULT([$lt_cv_prog_cc_pic])
-
- # Check to make sure the pic_flag actually works.
- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
- AC_TRY_COMPILE([], [], [dnl
- case $host_os in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then
- # they create non-PIC objects. So, if there were any warnings, we
- # assume that PIC is not supported.
- if test -s conftest.err; then
- lt_cv_prog_cc_pic_works=no
- else
- lt_cv_prog_cc_pic_works=yes
- fi
- ;;
- *)
- lt_cv_prog_cc_pic_works=yes
- ;;
- esac
- ], [dnl
- lt_cv_prog_cc_pic_works=no
- ])
- CFLAGS="$save_CFLAGS"
- ])
-
- if test "X$lt_cv_prog_cc_pic_works" = Xno; then
- lt_cv_prog_cc_pic=
- lt_cv_prog_cc_can_build_shared=no
- else
- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
- fi
-
- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
-fi
-##
-## END FIXME
-
-# Check for any special shared library compilation flags.
-if test -n "$lt_cv_prog_cc_shlib"; then
- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
- else
- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
- lt_cv_prog_cc_can_build_shared=no
- fi
-fi
-
-## FIXME: this should be a separate macro
-##
-AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
-AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
- lt_cv_prog_cc_static_works=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
- LDFLAGS="$save_LDFLAGS"
])
-# Belt *and* braces to stop my trousers falling down:
-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
-
-pic_flag="$lt_cv_prog_cc_pic"
-special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-wl="$lt_cv_prog_cc_wl"
-link_static_flag="$lt_cv_prog_cc_static"
-no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-can_build_shared="$lt_cv_prog_cc_can_build_shared"
-##
-## END FIXME
-
-
-## FIXME: this should be a separate macro
-##
-# Check to see if options -o and -c are simultaneously supported by compiler
-AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
-AC_CACHE_VAL([lt_cv_compiler_c_o], [
-$rm -r conftest 2>/dev/null
-mkdir conftest
-cd conftest
-echo "int some_variable = 0;" > conftest.$ac_ext
-mkdir out
-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-# that will create temporary files in the current directory regardless of
-# the output directory. Thus, making CWD read-only will cause this test
-# to fail, enabling locking or at least warning the user not to do parallel
-# builds.
-chmod -w .
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-compiler_c_o=no
-if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
- lt_cv_compiler_c_o=no
- else
- lt_cv_compiler_c_o=yes
- fi
-else
- # Append any errors to the config.log.
- cat out/conftest.err 1>&AC_FD_CC
- lt_cv_compiler_c_o=no
-fi
-CFLAGS="$save_CFLAGS"
-chmod u+w .
-$rm conftest* out/*
-rmdir out
-cd ..
-rmdir conftest
-$rm -r conftest 2>/dev/null
-])
-compiler_c_o=$lt_cv_compiler_c_o
-AC_MSG_RESULT([$compiler_c_o])
-
-if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
- AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
- AC_CACHE_VAL([lt_cv_compiler_o_lo], [
- lt_cv_compiler_o_lo=no
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
- save_objext="$ac_objext"
- ac_objext=lo
- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- lt_cv_compiler_o_lo=no
- else
- lt_cv_compiler_o_lo=yes
- fi
- ])
- ac_objext="$save_objext"
- CFLAGS="$save_CFLAGS"
- ])
- compiler_o_lo=$lt_cv_compiler_o_lo
- AC_MSG_RESULT([$compiler_o_lo])
-else
- compiler_o_lo=no
-fi
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-# Check to see if we can do hard links to lock some files if needed
-hard_links="nottested"
-if test "$compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- AC_MSG_CHECKING([if we can lock with hard links])
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- AC_MSG_RESULT([$hard_links])
- if test "$hard_links" = no; then
- AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-if test "$GCC" = yes; then
- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
- echo "int some_variable = 0;" > conftest.$ac_ext
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
- compiler_rtti_exceptions=no
- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- compiler_rtti_exceptions=no
- else
- compiler_rtti_exceptions=yes
- fi
- ])
- CFLAGS="$save_CFLAGS"
- AC_MSG_RESULT([$compiler_rtti_exceptions])
-
- if test "$compiler_rtti_exceptions" = "yes"; then
- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
- else
- no_builtin_flag=' -fno-builtin'
- fi
-fi
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-# See if the linker supports building shared libraries.
-AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
-
-allow_undefined_flag=
-no_undefined_flag=
-need_lib_prefix=unknown
-need_version=unknown
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-archive_cmds=
-archive_expsym_cmds=
-old_archive_from_new_cmds=
-old_archive_from_expsyms_cmds=
-export_dynamic_flag_spec=
-whole_archive_flag_spec=
-thread_safe_flag_spec=
-hardcode_into_libs=no
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-hardcode_shlibpath_var=unsupported
-runpath_var=
-link_all_deplibs=unknown
-always_export_symbols=no
-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-# include_expsyms should be a list of space-separated symbols to be *always*
-# included in the symbol list
-include_expsyms=
-# exclude_expsyms can be an egrep regular expression of symbols to exclude
-# it will be wrapped by ` (' and `)$', so one must not match beginning or
-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-# as well as any symbol that contains `d'.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-# platforms (ab)use it in PIC code, but their linkers get confused if
-# the symbol is explicitly referenced. Since portable code cannot
-# rely on this symbol name, it's probably fine to never include it in
-# preloaded symbol tables.
-extract_expsyms_cmds=
-
-case $host_os in
-cygwin* | mingw* | pw32*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
-openbsd*)
- with_gnu_ld=no
- ;;
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # See if GNU ld supports shared libraries.
- case $host_os in
- aix3* | aix4* | aix5*)
- # On AIX, the GNU linker is very broken
- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
- ;;
-
- amigaos*)
- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
-
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
- # them.
- ld_shlibs=no
- ;;
-
- beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw* | pw32*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=yes
-
- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
- test -f $output_objdir/impgen.exe || (cd $output_objdir && \
- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
- else $CC -o impgen impgen.c ; fi)~
- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-
- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-
- # cygwin and mingw dlls have different entry points and sets of symbols
- # to exclude.
- # FIXME: what about values for MSVC?
- dll_entry=__cygwin_dll_entry@12
- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
- case $host_os in
- mingw*)
- # mingw values
- dll_entry=_DllMainCRTStartup@12
- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
- ;;
- esac
-
- # mingw and cygwin differ, and it's simplest to just exclude the union
- # of the two symbol sets.
- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-
- # recent cygwin and mingw systems supply a stub DllMain which the user
- # can override, but on older systems we have to supply one (in ltdll.c)
- if test "x$lt_cv_need_dllmain" = "xyes"; then
- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
- else
- ltdll_obj=
- ltdll_cmds=
- fi
-
- # Extract the symbol export list from an `--export-all' def file,
- # then regenerate the def file from the symbol export list, so that
- # the compiled dll only exports the symbol export list.
- # Be careful not to strip the DATA tag left be newer dlltools.
- export_symbols_cmds="$ltdll_cmds"'
- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is.
- # If DATA tags from a recent dlltool are present, honour them!
- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname-def;
- else
- echo EXPORTS > $output_objdir/$soname-def;
- _lt_hint=1;
- cat $export_symbols | while read symbol; do
- set dummy \$symbol;
- case \[$]# in
- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
- esac;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done;
- fi~
- '"$ltdll_cmds"'
- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris* | sysv5*)
- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = yes; then
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- case $host_os in
- cygwin* | mingw* | pw32*)
- # dlltool doesn't understand --whole-archive et. al.
- whole_archive_flag_spec=
- ;;
- *)
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- ;;
- esac
- fi
-else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case $host_os in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$link_static_flag"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix4* | aix5*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- hardcode_direct=yes
- archive_cmds=''
- hardcode_libdir_separator=':'
- if test "$GCC" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- esac
-
- shared_flag='-shared'
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- shared_flag='${wl}-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- # It seems that -bexpall can do strange things, so it is better to
- # generate a list of symbols to export.
- always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- allow_undefined_flag='-berok'
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
- else
- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- allow_undefined_flag='${wl}-berok'
- # This is a bit strange, but is similar to how AIX traditionally builds
- # it's shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
- fi
- fi
- ;;
-
- amigaos*)
- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
- ;;
-
- cygwin* | mingw* | pw32*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
- fix_srcfile_path='`cygpath -w "$srcfile"`'
- ;;
-
- darwin* | rhapsody*)
- case "$host_os" in
- rhapsody* | darwin1.[[012]])
- allow_undefined_flag='-undefined suppress'
- ;;
- *) # Darwin 1.3 on
- allow_undefined_flag='-flat_namespace -undefined suppress'
- ;;
- esac
- # FIXME: Relying on posixy $() will cause problems for
- # cross-compilation, but unfortunately the echo tests do not
- # yet detect zsh echo's removal of \ escapes.
- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring'
- # We need to add '_' to the symbols in $export_symbols first
- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- whole_archive_flag_spec='-all_load $convenience'
- ;;
-
- freebsd1*)
- ld_shlibs=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9* | hpux10* | hpux11*)
- case $host_os in
- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
- esac
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_minus_L=yes # Not in the search PATH, but as the default
- # location of the library.
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- irix5* | irix6*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- link_all_deplibs=yes
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
- fi
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- newsos6)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_shlibpath_var=no
- ;;
-
- openbsd*)
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
- else
- case "$host_os" in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-
- #Both c and cxx compiler support -rpath directly
- hardcode_libdir_flag_spec='-rpath $libdir'
- fi
- hardcode_libdir_separator=:
- ;;
-
- sco3.2v5*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- export_dynamic_flag_spec='${wl}-Bexport'
- ;;
-
- solaris*)
- # gcc --version < 3.0 without binutils cannot create self contained
- # shared libraries reliably, requiring libgcc.a to resolve some of
- # the object symbols generated in some cases. Libraries that use
- # assert need libgcc.a to resolve __eprintf, for example. Linking
- # a copy of libgcc.a into every shared library to guarantee resolving
- # such symbols causes other problems: According to Tim Van Holder
- # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
- # (to the application) exception stack for one thing.
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- case `$CC --version 2>/dev/null` in
- [[12]].*)
- cat <<EOF 1>&2
-
-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-*** create self contained shared libraries on Solaris systems, without
-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-*** -no-undefined support, which will at least allow you to build shared
-*** libraries. However, you may find that when you link such libraries
-*** into an application without using GCC, you have to manually add
-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-*** upgrade to a newer version of GCC. Another option is to rebuild your
-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-
-EOF
- no_undefined_flag=
- ;;
- esac
- fi
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
- link_all_deplibs=yes
- ;;
-
- sunos4*)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
- fi
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- if test "x$host_vendor" = xsno; then
- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes # is this really true???
- else
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv5*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
- hardcode_libdir_flag_spec=
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4.2uw2*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
-
- sysv5uw7* | unixware7*)
- no_undefined_flag='${wl}-z ${wl}text'
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-fi
-AC_MSG_RESULT([$ld_shlibs])
-test "$ld_shlibs" = no && can_build_shared=no
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-# Check hardcoding attributes.
-AC_MSG_CHECKING([how to hardcode library paths into programs])
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" || \
- test -n "$runpath_var"; then
-
- # We can hardcode non-existant directories.
- if test "$hardcode_direct" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$hardcode_shlibpath_var" != no &&
- test "$hardcode_minus_L" != no; then
- # Linking always hardcodes the temporary library directory.
- hardcode_action=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- hardcode_action=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- hardcode_action=unsupported
-fi
-AC_MSG_RESULT([$hardcode_action])
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- AC_MSG_RESULT([yes])
-else
- AC_MSG_RESULT([no])
-fi
-##
-## END FIXME
-
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-## FIXME: this should be a separate macro
-##
-# PORTME Fill in your ld.so characteristics
-AC_MSG_CHECKING([dynamic linker characteristics])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-
-case $host_os in
-aix3*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}.so$major'
- ;;
-
-aix4* | aix5*)
- version_type=linux
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
- # for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[[01]] | aix4.[[01]].*)
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
- esac
- # AIX (on Power*) has no versioning support, so currently we can
- # not hardcode correct soname into executable. Probably we can
- # add versioning support to collect2, so additional links can
- # be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}.so$major'
- fi
- shlibpath_var=LIBPATH
- fi
- ;;
-
-amigaos*)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
- ;;
-
-beos*)
- library_names_spec='${libname}.so'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi4*)
- version_type=linux
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- export_dynamic_flag_spec=-rdynamic
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw* | pw32*)
- version_type=windows
- need_version=no
- need_lib_prefix=no
- case $GCC,$host_os in
- yes,cygwin*)
- library_names_spec='$libname.dll.a'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog .libs/$dlname \$dldir/$dlname'
- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $rm \$dlpath'
- ;;
- yes,mingw*)
- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
- ;;
- yes,pw32*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
- ;;
- *)
- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-
-darwin* | rhapsody*)
- dynamic_linker="$host_os dyld"
- version_type=darwin
- need_lib_prefix=no
- need_version=no
- # FIXME: Relying on posixy $() will cause problems for
- # cross-compilation, but unfortunately the echo tests do not
- # yet detect zsh echo's removal of \ escapes.
- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
- ;;
-
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
- freebsd2*)
- shlibpath_overrides_runpath=yes
- ;;
- *)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
- esac
- ;;
-
-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- hardcode_into_libs=yes
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- dynamic_linker="$host_os dld.sl"
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
- soname_spec='${libname}${release}.sl$major'
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
- ;;
-
-irix5* | irix6*)
- version_type=irix
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
- case $host_os in
- irix5*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
- dynamic_linker=no
- ;;
-
-# This must be Linux ELF.
-linux-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- # This implies no fast_install, which is unacceptable.
- # Some rework will be needed to allow for fast_install
- # before this can be enabled.
- hardcode_into_libs=yes
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
- # most powerpc-linux boxes support dynamic linking these days and
- # people can always --disable-shared, the test was removed, and we
- # assume the GNU/Linux dynamic linker is in use.
- dynamic_linker='GNU/Linux ld.so'
- ;;
-
-netbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
-
-newsos6)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-
-openbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case "$host_os" in
- openbsd2.[[89]] | openbsd2.[[89]].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
- else
- shlibpath_overrides_runpath=yes
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-os2*)
- libname_spec='$name'
- need_lib_prefix=no
- library_names_spec='$libname.dll $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-solaris*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- ;;
- esac
- ;;
-
-uts4*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
- soname_spec='$libname.so.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-# Report the final consequences.
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case "$host_os" in
-aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
-aix4*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-##
-## END FIXME
-
-if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-AC_LIBTOOL_DLOPEN_SELF
-
-## FIXME: this should be a separate macro
-##
-if test "$enable_shared" = yes && test "$GCC" = yes; then
- case $archive_cmds in
- *'~'*)
- # FIXME: we may have to deal with multi-command sequences.
- ;;
- '$CC '*)
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- AC_MSG_CHECKING([whether -lc should be explicitly linked in])
- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
- [$rm conftest*
- echo 'static int dummy;' > conftest.$ac_ext
-
- if AC_TRY_EVAL(ac_compile); then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
- deplibs=
- wl=$lt_cv_prog_cc_wl
- compiler_flags=-v
- linker_flags=-v
- verstring=
- output_objdir=.
- libname=conftest
- save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
- then
- lt_cv_archive_cmds_need_lc=no
- else
- lt_cv_archive_cmds_need_lc=yes
- fi
- allow_undefined_flag=$save_allow_undefined_flag
- else
- cat conftest.err 1>&5
- fi])
- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
- ;;
- esac
-fi
-need_lc=${lt_cv_archive_cmds_need_lc-yes}
-##
-## END FIXME
-
-## FIXME: this should be a separate macro
-##
-# The second clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
- :
-else
- # If there is no Makefile yet, we rely on a make rule to execute
- # `config.status --recheck' to rerun these tests and create the
- # libtool script then.
- test -f Makefile && make "$ltmain"
-fi
-
-if test -f "$ltmain"; then
- trap "$rm \"${ofile}T\"; exit 1" 1 2 15
- $rm -f "${ofile}T"
-
- echo creating $ofile
-
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS \
- AR AR_FLAGS CC LD LN_S NM SHELL \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
- library_names_spec soname_spec \
- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
- old_striplib striplib file_magic_cmd export_symbols_cmds \
- deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
- global_symbol_to_c_name_address \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case $var in
- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
- postinstall_cmds | postuninstall_cmds | \
- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
- *)
- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
- ;;
- esac
- done
-
- cat <<__EOF__ > "${ofile}T"
-#! $SHELL
-
-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# 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
-# (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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="sed -e s/^X//"
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$need_lc
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# The default C compiler.
-CC=$lt_CC
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_wl
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_pic_flag
-pic_mode=$pic_mode
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_compiler_c_o
-
-# Can we write directly to a .lo ?
-compiler_o_lo=$lt_compiler_o_lo
-
-# Must we lock files when doing compilation ?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_link_static_flag
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_no_builtin_flag
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names. First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path"
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# ### END LIBTOOL CONFIG
-
-__EOF__
-
- case $host_os in
- aix3*)
- cat <<\EOF >> "${ofile}T"
-
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-EOF
- ;;
- esac
-
- case $host_os in
- cygwin* | mingw* | pw32* | os2*)
- cat <<'EOF' >> "${ofile}T"
- # This is a source program that is used to create dlls on Windows
- # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# # ifdef __CYGWIN32__
-# # define __CYGWIN__ __CYGWIN32__
-# # endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-# __hDllInstance_base = hInst;
-# return TRUE;
-# }
-# /* ltdll.c ends here */
- # This is a source program that is used to create import libraries
- # on Windows for dlls which lack them. Don't remove nor modify the
- # starting and closing comments
-# /* impgen.c starts here */
-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-#
-# This file is part of GNU libtool.
-#
-# 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
-# (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, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-# */
-#
-# #include <stdio.h> /* for printf() */
-# #include <unistd.h> /* for open(), lseek(), read() */
-# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-# #include <string.h> /* for strdup() */
-#
-# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-# #ifndef O_BINARY
-# #define O_BINARY 0
-# #endif
-#
-# static unsigned int
-# pe_get16 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[2];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 2);
-# return b[0] + (b[1]<<8);
-# }
-#
-# static unsigned int
-# pe_get32 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[4];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 4);
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# static unsigned int
-# pe_as32 (ptr)
-# void *ptr;
-# {
-# unsigned char *b = ptr;
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# int
-# main (argc, argv)
-# int argc;
-# char *argv[];
-# {
-# int dll;
-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-# unsigned long export_rva, export_size, nsections, secptr, expptr;
-# unsigned long name_rvas, nexp;
-# unsigned char *expdata, *erva;
-# char *filename, *dll_name;
-#
-# filename = argv[1];
-#
-# dll = open(filename, O_RDONLY|O_BINARY);
-# if (dll < 1)
-# return 1;
-#
-# dll_name = filename;
-#
-# for (i=0; filename[i]; i++)
-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-# dll_name = filename + i +1;
-#
-# pe_header_offset = pe_get32 (dll, 0x3c);
-# opthdr_ofs = pe_header_offset + 4 + 20;
-# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-#
-# if (num_entries < 1) /* no exports */
-# return 1;
-#
-# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-# export_size = pe_get32 (dll, opthdr_ofs + 100);
-# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-# secptr = (pe_header_offset + 4 + 20 +
-# pe_get16 (dll, pe_header_offset + 4 + 16));
-#
-# expptr = 0;
-# for (i = 0; i < nsections; i++)
-# {
-# char sname[8];
-# unsigned long secptr1 = secptr + 40 * i;
-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-# lseek(dll, secptr1, SEEK_SET);
-# read(dll, sname, 8);
-# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-# {
-# expptr = fptr + (export_rva - vaddr);
-# if (export_rva + export_size > vaddr + vsize)
-# export_size = vsize - (export_rva - vaddr);
-# break;
-# }
-# }
-#
-# expdata = (unsigned char*)malloc(export_size);
-# lseek (dll, expptr, SEEK_SET);
-# read (dll, expdata, export_size);
-# erva = expdata - export_rva;
-#
-# nexp = pe_as32 (expdata+24);
-# name_rvas = pe_as32 (expdata+32);
-#
-# printf ("EXPORTS\n");
-# for (i = 0; i<nexp; i++)
-# {
-# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-# }
-#
-# return 0;
-# }
-# /* impgen.c ends here */
-
-EOF
- ;;
- esac
-
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-
- mv -f "${ofile}T" "$ofile" || \
- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
- chmod +x "$ofile"
-fi
-##
-## END FIXME
-
-])# _LT_AC_LTCONFIG_HACK
-
# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
# AC_ENABLE_SHARED - implement the --enable-shared flag
# Usage: AC_ENABLE_SHARED[(DEFAULT)]
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
# `yes'.
-AC_DEFUN([AC_ENABLE_SHARED],
-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN(AC_ENABLE_SHARED, [dnl
+define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
AC_ARG_ENABLE(shared,
changequote(<<, >>)dnl
<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
changequote([, ])dnl
[p=${PACKAGE-default}
-case $enableval in
+case "$enableval" in
yes) enable_shared=yes ;;
no) enable_shared=no ;;
*)
@@ -3015,22 +172,21 @@ enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
])
# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN([AC_DISABLE_SHARED],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
AC_ENABLE_SHARED(no)])
# AC_ENABLE_STATIC - implement the --enable-static flag
# Usage: AC_ENABLE_STATIC[(DEFAULT)]
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
# `yes'.
-AC_DEFUN([AC_ENABLE_STATIC],
-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN(AC_ENABLE_STATIC, [dnl
+define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
AC_ARG_ENABLE(static,
changequote(<<, >>)dnl
<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
changequote([, ])dnl
[p=${PACKAGE-default}
-case $enableval in
+case "$enableval" in
yes) enable_static=yes ;;
no) enable_static=no ;;
*)
@@ -3049,8 +205,7 @@ enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
])
# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN([AC_DISABLE_STATIC],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
AC_ENABLE_STATIC(no)])
@@ -3058,14 +213,14 @@ AC_ENABLE_STATIC(no)])
# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
# `yes'.
-AC_DEFUN([AC_ENABLE_FAST_INSTALL],
-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
+define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
AC_ARG_ENABLE(fast-install,
changequote(<<, >>)dnl
<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
changequote([, ])dnl
[p=${PACKAGE-default}
-case $enableval in
+case "$enableval" in
yes) enable_fast_install=yes ;;
no) enable_fast_install=no ;;
*)
@@ -3083,120 +238,29 @@ esac],
enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
])
-# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN([AC_DISABLE_FAST_INSTALL],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
AC_ENABLE_FAST_INSTALL(no)])
-# AC_LIBTOOL_PICMODE - implement the --with-pic flag
-# Usage: AC_LIBTOOL_PICMODE[(MODE)]
-# Where MODE is either `yes' or `no'. If omitted, it defaults to
-# `both'.
-AC_DEFUN([AC_LIBTOOL_PICMODE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-pic_mode=ifelse($#,1,$1,default)])
-
-
-# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
-AC_DEFUN([AC_PATH_TOOL_PREFIX],
-[AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
- /*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
- ?:/*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
- ;;
- *)
- ac_save_MAGIC_CMD="$MAGIC_CMD"
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word. This closes a longstanding sh security hole.
- ac_dummy="ifelse([$2], , $PATH, [$2])"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$1; then
- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- egrep "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$ac_save_ifs"
- MAGIC_CMD="$ac_save_MAGIC_CMD"
- ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- AC_MSG_RESULT($MAGIC_CMD)
-else
- AC_MSG_RESULT(no)
-fi
-])
-
-
-# AC_PATH_MAGIC - find a file program which can recognise a shared library
-AC_DEFUN([AC_PATH_MAGIC],
-[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
-AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
- else
- MAGIC_CMD=:
- fi
-fi
-])
-
-
# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN([AC_PROG_LD],
+AC_DEFUN(AC_PROG_LD,
[AC_ARG_WITH(gnu-ld,
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
ac_prog=ld
-if test "$GCC" = yes; then
+if test "$ac_cv_prog_gcc" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
+ ac_prog=`($CC -print-prog-name=ld) 2>&5`
+ case "$ac_prog" in
# Accept absolute paths.
- [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
- re_direlt='/[[^/]][[^/]]*/\.\./'
+changequote(,)dnl
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+changequote([,])dnl
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
@@ -3218,17 +282,17 @@ elif test "$with_gnu_ld" = yes; then
else
AC_MSG_CHECKING([for non-GNU ld])
fi
-AC_CACHE_VAL(lt_cv_path_LD,
+AC_CACHE_VAL(ac_cv_path_LD,
[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ ac_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some GNU ld's only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+ if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
test "$with_gnu_ld" != no && break
else
test "$with_gnu_ld" != yes && break
@@ -3237,9 +301,9 @@ AC_CACHE_VAL(lt_cv_path_LD,
done
IFS="$ac_save_ifs"
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ ac_cv_path_LD="$LD" # Let the user override the test with a path.
fi])
-LD="$lt_cv_path_LD"
+LD="$ac_cv_path_LD"
if test -n "$LD"; then
AC_MSG_RESULT($LD)
else
@@ -3249,252 +313,56 @@ test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_PROG_LD_GNU
])
-# AC_PROG_LD_GNU -
-AC_DEFUN([AC_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+AC_DEFUN(AC_PROG_LD_GNU,
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- lt_cv_prog_gnu_ld=yes
+ ac_cv_prog_gnu_ld=yes
else
- lt_cv_prog_gnu_ld=no
+ ac_cv_prog_gnu_ld=no
fi])
-with_gnu_ld=$lt_cv_prog_gnu_ld
])
-# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
-# -- PORTME Some linkers may need a different reload flag.
-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
-[lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-test -n "$reload_flag" && reload_flag=" $reload_flag"
-])
-
-# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
-# -- PORTME fill in with the dynamic library characteristics
-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognise dependant libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given egrep regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix4* | aix5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-beos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-bsdi4*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
-cygwin* | mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
-darwin* | rhapsody*)
- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- case "$host_os" in
- rhapsody* | darwin1.[[012]])
- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
- ;;
- *) # Darwin 1.3 on
- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
- ;;
- esac
- ;;
-
-freebsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
- esac
- else
- lt_cv_deplibs_check_method=pass_all
- fi
- ;;
-
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-hpux10.20*|hpux11*)
- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
-
-irix5* | irix6*)
- case $host_os in
- irix5*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
- ;;
- *)
- case $LD in
- *-32|*"-32 ") libmagic=32-bit;;
- *-n32|*"-n32 ") libmagic=N32;;
- *-64|*"-64 ") libmagic=64-bit;;
- *) libmagic=never-match;;
- esac
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
- ;;
- esac
- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-# This must be Linux ELF.
-linux-gnu*)
- case $host_cpu in
- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
- lt_cv_deplibs_check_method=pass_all ;;
- *)
- # glibc up to 2.1.1 does not perform some relocations on ARM
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
- esac
- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
- ;;
-
-netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
- fi
- ;;
-
-newos6*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-openbsd*)
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
- else
- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
- fi
- ;;
-
-osf3* | osf4* | osf5*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
- lt_cv_file_magic_test_file=/shlib/libc.so
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sco3.2v5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-solaris*)
- lt_cv_deplibs_check_method=pass_all
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
-
-sysv5uw[[78]]* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- case $host_vendor in
- motorola)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
- lt_cv_deplibs_check_method=pass_all
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
- esac
- ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-])
-
-
# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN([AC_PROG_NM],
-[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
-AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(lt_cv_path_NM,
+AC_DEFUN(AC_PROG_NM,
+[AC_MSG_CHECKING([for BSD-compatible nm])
+AC_CACHE_VAL(ac_cv_path_NM,
[if test -n "$NM"; then
# Let the user override the test.
- lt_cv_path_NM="$NM"
+ ac_cv_path_NM="$NM"
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
test -z "$ac_dir" && ac_dir=.
- tmp_nm=$ac_dir/${ac_tool_prefix}nm
- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+ if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
# Check to see if the nm accepts a BSD-compat flag.
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
- lt_cv_path_NM="$tmp_nm -B"
+ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$ac_dir/nm -B"
break
- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- lt_cv_path_NM="$tmp_nm -p"
+ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$ac_dir/nm -p"
break
else
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
continue # so that we can try to find one that supports BSD flags
fi
fi
done
IFS="$ac_save_ifs"
- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+ test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
fi])
-NM="$lt_cv_path_NM"
+NM="$ac_cv_path_NM"
AC_MSG_RESULT([$NM])
])
# AC_CHECK_LIBM - check for math library
-AC_DEFUN([AC_CHECK_LIBM],
+AC_DEFUN(AC_CHECK_LIBM,
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32*)
+case "$lt_target" in
+*-*-beos* | *-*-cygwin*)
# These system don't have libm
;;
*-ncr-sysv4.3*)
@@ -3508,39 +376,33 @@ esac
])
# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library and INCLTDL to the include flags for
-# the libltdl header and adds --enable-ltdl-convenience to the
-# configure arguments. Note that LIBLTDL and INCLTDL are not
-# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
-# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
-# with '${top_builddir}/' and INCLTDL will be prefixed with
-# '${top_srcdir}/' (note the single quotes!). If your package is not
-# flat and you're not using automake, define top_builddir and
-# top_srcdir appropriately in the Makefiles.
-AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case $enable_ltdl_convenience in
+# the libltdl convenience library, adds --enable-ltdl-convenience to
+# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
+# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
+# to be `${top_builddir}/libltdl'. Make sure you start DIR with
+# '${top_builddir}/' (note the single quotes!) if your package is not
+# flat, and, if you're not using automake, define top_builddir as
+# appropriate in the Makefiles.
+AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case "$enable_ltdl_convenience" in
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
"") enable_ltdl_convenience=yes
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
esac
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
+ INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
])
# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library and INCLTDL to the include flags for
-# the libltdl header and adds --enable-ltdl-install to the configure
-# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
-# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
-# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
-# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
-# with '${top_srcdir}/' (note the single quotes!). If your package is
-# not flat and you're not using automake, define top_builddir and
-# top_srcdir appropriately in the Makefiles.
+# the libltdl installable library, and adds --enable-ltdl-install to
+# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
+# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
+# to be `${top_builddir}/libltdl'. Make sure you start DIR with
+# '${top_builddir}/' (note the single quotes!) if your package is not
+# flat, and, if you're not using automake, define top_builddir as
+# appropriate in the Makefiles.
# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
AC_CHECK_LIB(ltdl, main,
[test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
[if test x"$enable_ltdl_install" = xno; then
@@ -3551,8 +413,8 @@ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
])
if test x"$enable_ltdl_install" = x"yes"; then
ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
+ INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
else
ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
LIBLTDL="-lltdl"
@@ -3560,14 +422,14 @@ AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
fi
])
-# old names
-AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
-AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
-AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
-
-# This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])
+dnl old names
+AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
+AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
+AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
+AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
+AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
+AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
+AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
+
+dnl This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])dnl
diff --git a/boehm-gc/mkinstalldirs b/boehm-gc/mkinstalldirs
index f9c37afd1b8..cc8783edce3 100755
--- a/boehm-gc/mkinstalldirs
+++ b/boehm-gc/mkinstalldirs
@@ -2,90 +2,29 @@
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
+# Last modified: 1994-03-25
# Public domain
-# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
-
errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case "${1}" in
- -h | --help | --h* ) # -h for help
- echo "${usage}" 1>&2; exit 0 ;;
- -m ) # -m PERM arg
- shift
- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
- dirmode="${1}"
- shift ;;
- -- ) shift; break ;; # stop option processing
- -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
- * ) break ;; # first non-opt arg
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
-0) exit 0 ;;
-esac
-case $dirmode in
-'')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi ;;
-*)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi ;;
-esac
-
-for file
-do
+for file in ${1+"$@"} ; do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
- for d
- do
+ for d in ${1+"$@"} ; do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
-
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
+ echo "mkdir $pathcomp" 1>&2
+ mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
+ fi
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
fi
pathcomp="$pathcomp/"
@@ -94,8 +33,4 @@ done
exit $errstatus
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 3
-# End:
# mkinstalldirs ends here
diff --git a/config.guess b/config.guess
index afcb19c1d7e..00ccf89e18b 100755
--- a/config.guess
+++ b/config.guess
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2003-10-16'
+timestamp='2004-02-16'
# 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
@@ -197,12 +197,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit 0 ;;
+ amd64:OpenBSD:*:*)
+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -221,6 +227,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ pegasos:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -236,6 +245,15 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -402,6 +420,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
@@ -745,6 +766,11 @@ EOF
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
@@ -989,6 +1015,9 @@ EOF
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit 0 ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1175,7 +1204,7 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
- NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1219,6 +1248,9 @@ EOF
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
diff --git a/config.sub b/config.sub
index e1e455b776e..d2e3557ac40 100755
--- a/config.sub
+++ b/config.sub
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2003-11-03'
+timestamp='2004-02-16'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -363,6 +363,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -380,6 +383,9 @@ case $basic_machine in
amd64)
basic_machine=x86_64-pc
;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -439,6 +445,10 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
crds | unos)
basic_machine=m68k-crds
;;
@@ -1140,8 +1150,9 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
@@ -1152,7 +1163,7 @@ case $os in
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1215,6 +1226,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
diff --git a/configure b/configure
index 88d3753ed65..7b24d4cd9d2 100755
--- a/configure
+++ b/configure
@@ -1414,6 +1414,9 @@ case "${target}" in
mipstx39-*-*)
noconfigdirs="$noconfigdirs gprof ${libgcj}" # same as generic mips
;;
+ mips64*-*-linux*)
+ noconfigdirs="$noconfigdirs target-newlib ${libgcj}"
+ ;;
mips*-*-linux*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
@@ -2011,7 +2014,7 @@ fi
# Default to using --with-stabs for certain targets.
if test x${with_stabs} = x ; then
case "${target}" in
- mips*-*-irix6*)
+ mips*-*-irix[56]*)
;;
mips*-*-* | alpha*-*-osf*)
with_stabs=yes;
@@ -2837,7 +2840,7 @@ test -n "$target_alias" && ncn_target_tool_prefix=$target_alias-
# Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2841: checking for $ac_word" >&5
+echo "configure:2844: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2870,7 +2873,7 @@ if test -z "$ac_cv_prog_AR" ; then
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2874: checking for $ac_word" >&5
+echo "configure:2877: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2909,7 +2912,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args.
set dummy ${ncn_tool_prefix}as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2913: checking for $ac_word" >&5
+echo "configure:2916: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2942,7 +2945,7 @@ if test -z "$ac_cv_prog_AS" ; then
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2946: checking for $ac_word" >&5
+echo "configure:2949: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2981,7 +2984,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ncn_tool_prefix}dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2985: checking for $ac_word" >&5
+echo "configure:2988: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3014,7 +3017,7 @@ if test -z "$ac_cv_prog_DLLTOOL" ; then
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3018: checking for $ac_word" >&5
+echo "configure:3021: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3053,7 +3056,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3057: checking for $ac_word" >&5
+echo "configure:3060: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3086,7 +3089,7 @@ if test -z "$ac_cv_prog_LD" ; then
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3090: checking for $ac_word" >&5
+echo "configure:3093: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3125,7 +3128,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args.
set dummy ${ncn_tool_prefix}nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3129: checking for $ac_word" >&5
+echo "configure:3132: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3158,7 +3161,7 @@ if test -z "$ac_cv_prog_NM" ; then
# Extract the first word of "nm", so it can be a program name with args.
set dummy nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3162: checking for $ac_word" >&5
+echo "configure:3165: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3197,7 +3200,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3201: checking for $ac_word" >&5
+echo "configure:3204: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3230,7 +3233,7 @@ if test -z "$ac_cv_prog_RANLIB" ; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3234: checking for $ac_word" >&5
+echo "configure:3237: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3269,7 +3272,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args.
set dummy ${ncn_tool_prefix}windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3273: checking for $ac_word" >&5
+echo "configure:3276: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3302,7 +3305,7 @@ if test -z "$ac_cv_prog_WINDRES" ; then
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3306: checking for $ac_word" >&5
+echo "configure:3309: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3341,7 +3344,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args.
set dummy ${ncn_tool_prefix}objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3345: checking for $ac_word" >&5
+echo "configure:3348: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3374,7 +3377,7 @@ if test -z "$ac_cv_prog_OBJCOPY" ; then
# Extract the first word of "objcopy", so it can be a program name with args.
set dummy objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3378: checking for $ac_word" >&5
+echo "configure:3381: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3413,7 +3416,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ncn_tool_prefix}objdump; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3417: checking for $ac_word" >&5
+echo "configure:3420: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3446,7 +3449,7 @@ if test -z "$ac_cv_prog_OBJDUMP" ; then
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3450: checking for $ac_word" >&5
+echo "configure:3453: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3495,7 +3498,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3499: checking for $ac_word" >&5
+echo "configure:3502: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3528,7 +3531,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET" ; then
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3532: checking for $ac_word" >&5
+echo "configure:3535: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3567,7 +3570,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3571: checking for $ac_word" >&5
+echo "configure:3574: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3600,7 +3603,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET" ; then
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3604: checking for $ac_word" >&5
+echo "configure:3607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3639,7 +3642,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3643: checking for $ac_word" >&5
+echo "configure:3646: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3672,7 +3675,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARGET" ; then
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3676: checking for $ac_word" >&5
+echo "configure:3679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3711,7 +3714,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3715: checking for $ac_word" >&5
+echo "configure:3718: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3744,7 +3747,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET" ; then
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3748: checking for $ac_word" >&5
+echo "configure:3751: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3783,7 +3786,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3787: checking for $ac_word" >&5
+echo "configure:3790: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3816,7 +3819,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET" ; then
# Extract the first word of "nm", so it can be a program name with args.
set dummy nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3820: checking for $ac_word" >&5
+echo "configure:3823: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3855,7 +3858,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3859: checking for $ac_word" >&5
+echo "configure:3862: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3888,7 +3891,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGET" ; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3892: checking for $ac_word" >&5
+echo "configure:3895: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3927,7 +3930,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3931: checking for $ac_word" >&5
+echo "configure:3934: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3960,7 +3963,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARGET" ; then
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3964: checking for $ac_word" >&5
+echo "configure:3967: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4027,7 +4030,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target}
NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:4031: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:4034: 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/configure.in b/configure.in
index b286f1aa7ef..32673a8a111 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-# 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 1999, 2000, 2001, 2002, 2003, 2004 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
@@ -653,6 +653,9 @@ case "${target}" in
mipstx39-*-*)
noconfigdirs="$noconfigdirs gprof ${libgcj}" # same as generic mips
;;
+ mips64*-*-linux*)
+ noconfigdirs="$noconfigdirs target-newlib ${libgcj}"
+ ;;
mips*-*-linux*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
@@ -1250,7 +1253,7 @@ fi
# Default to using --with-stabs for certain targets.
if test x${with_stabs} = x ; then
case "${target}" in
- mips*-*-irix6*)
+ mips*-*-irix[[56]]*)
;;
mips*-*-* | alpha*-*-osf*)
with_stabs=yes;
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 522fb913f5a..073c068261d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,2316 @@
+2004-03-02 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/lib1funcs.asm (___fixunssfsi): Change the
+ threshold to 0x4f.
+
+ Revert:
+ 2004-02-27 Kazu Hirata <kazu@cs.umass.edu>
+ * config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
+ as well.
+ * config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
+ * config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.
+
+2004-03-02 Richard Henderson <rth@redhat.com>
+
+ PR middle-end/11767
+ * coverage.c (coverage_counter_ref): Set MEM_NOTRAP_P.
+ * optabs.c (prepare_cmp_insn): Force trapping memories to registers
+ before the compare, if flag_non_call_exceptions.
+
+2004-03-02 Richard Henderson <rth@redhat.com>
+
+ PR middle-end/14327
+ * stmt.c (expand_computed_goto): Do do_pending_stack_adjust before
+ emitting the label, not after.
+
+2004-03-02 David O'Brien <obrien@FreeBSD.org>
+
+ * config/freebsd-spec.h (FBSD_DYNAMIC_LINKER): Add.
+ * config/alpha/freebsd.h (SUBTARGET_EXTRA_SPECS): Define
+ %(fbsd_dynamic_linker),
+ (LINK_SPEC): Use %(fbsd_dynamic_linker), and sync style with
+ config/i386/freebsd.h
+ * config/arm/freebsd.h: Ditto.
+ * config/i386/freebsd.h: Ditto.
+ * config/i386/freebsd64.h: Ditto.
+ * config/ia64/freebsd.h: Ditto.
+ * config/rs6000/sysv4.h: Ditto.
+ * config/sparc/freebsd.h: Ditto.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.c (m68hc11_addr_mode): New variable.
+ (m68hc11_mov_addr_mode): Likewise.
+ (m68hc11_override_options): Initialize them based on target.
+ (register_indirect_p): Allow a MEM for indirect addressing modes and
+ use flags to control what is allowed.
+ (m68hc11_small_indexed_indirect_p): Use m68hc11_mov_addr_mode for
+ supported addressing modes.
+ (m68hc11_register_indirect_p): Use m68hc11_addr_mode.
+ (go_if_legitimate_address_internal): Likewise.
+ (m68hc11_indirect_p): Likewise and check the mode.
+ (print_operand): Allow a (MEM (MEM)) and generate indirect addressing.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.md (move peephole2): New peepholes to optimize
+ sequences of moves.
+ (add peepholes): New peepholes to optimize sequences adding small
+ constants.
+ (bset peepholes): New peepholes to transform an OR in a bset form
+ (bclr peepholes): Likewise for bclr form.
+ (cmp peepholes): New peepholes to avoid register copies when comparing.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.md ("*pushdi_internal"): New insn and split
+ to separate push from moves.
+ ("*pushdf_internal"): Likewise.
+ ("*pushsf_internal"): Likewise.
+ ("*pushsi_internal"): Likewise.
+ ("movdi_internal"): Use define_insn_and_split; non push operand.
+ ("movdf_internal"): Likewise.
+ ("movsf_internal"): Likewise.
+ ("movsi_internal"): Likewise.
+ ("*movhi_68hc12", "*addhi3_68hc12"): Fix and tune constraints
+ ("*addhi3", "*subhi3", "*andhi3_mem", "*iorhi3_mem"): Likewise.
+ ("*ashlsi3_const1", "*lshrsi3_const1"): Likewise.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.md ("tstqi_z_used"): Use define_insn_and_split.
+ ("cmphi_z_used", "cmpqi_z_used"): Likewise.
+ ("movstrictsi", "movstricthi", "movstrictqi"): Likewise.
+ ("anddi3", "andsi3", "iordi3", "iorsi3"): Likewise.
+ ("xordi3", "xorsi3", "*logicalsi3_zexthi"): Likewise.
+ ("*logicalsi3_zextqi", "*logicalhi3_zexthi_ashift8"): Likewise.
+ ("logicalhi3_zexthi", "*logicalsi3_silshr16"): Likewise.
+ ("*logicalsi3_silshl16", "*logicalsi3_silshl16_zext"): Likewise.
+ ("*ashldi3_const32", "*ashldi3_const1", "addsi_silshr16"): Likewise.
+ ("addsi_andshr16", "*ashlsi3_const16_zexthi"): Likewise.
+ ("*lshrdi3_const32", "*lshrdi_const1"): Likewise.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.md (SOFT_TMP_REGNUM): Define.
+ (SOFT_XY_REGNUM): Define.
+ (cmp split): Use the above instead of hard coded numbers.
+ (8-bit op split): No need to check the mode; allow Q_REG.
+ (ashift split): Adjust the first operand if it uses the SP and we
+ are pushing the shifted value.
+ (plus shift split): Fix when a source is in register D+X.
+ ("doloop_end"): Pass dummy arguments to gen_rtx_NE.
+
+2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Fix when
+ comparing with Z register.
+
+2004-03-02 Loren James Rittle <ljrittle@acm.org>
+
+ * gcc/doc/install.texi (*-*-freebsd*): Update target information.
+
+2004-03-01 Mark Mitchell <mark@codesourcery.com>
+
+ PR bootstrap/14356
+ * gcc.c (process_command): Remove const-qualification from argv.
+ (main): Likewise.
+
+2004-03-01 Mircea Namolaru <namolaru@il.ibm.com>
+
+ * cfgloop.h (get_var_set_from_bct, is_bct_cond): Declaration of
+ new functions.
+ * cfgloopanal.c: Include loop.h.
+ (get_var_set_from_bct): New function.
+ (is_bct_cond): New function.
+ (blocks_single_set_registers): Handle branch and count jumps.
+ (count_loop_iterations): Likewise.
+ (simple_increment): Likewise
+ * doloop.c (doloop_condition_get): Export.
+ * loop-init.c (fixup_loop_exit_succesor): New function.
+ (loop_optimizer_finalize): Handle loops ending with branch and
+ count jumps.
+ * loop-unroll.c: Include toplev.h
+ (discard_increment): New function.
+ (expand_bct): New function.
+ (peel_loop_completely): Handle the removal of branch and count jumps.
+ (unroll_loop_constant_iterations): Likewise.
+ (unroll_loop_runtime_iterations): Likewise
+ * loop.h (doloop_condition_get): Declare.
+
+2004-02-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR debug/14328
+ * dwarf2out.c (gen_enumeration_type_die): Output all enumeration
+ constants as signed values.
+
+2004-02-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR middle-end/13448
+ * c-tree.h (readonly_warning): Rename to ...
+ (readonly_error): ... this.
+ * c-typeck.c (build_unary_op): Adjust accordingly.
+ (readonly_warning): Rename to ...
+ (readonly_error): ... this and issue errors, not warnings.
+ (build_modify_expr): Call readonly_error, not readonly_warning.
+ (c_expand_asm_operands): Likewise.
+ * tree-inline.c (optimize_inline_calls): Do not inline functions
+ after errors have occurred.
+
+2004-02-29 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/cppopts.texi: Fix a typo.
+
+2004-02-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa64-hpux.h (LIB_SPEC): Fix linking under HP-UX 11.00 with -p and -pg.
+
+2004-02-27 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR optimization/7871
+ * flow.c (mark_set_1): Don't add LOG_LINKS for global registers
+ from or to call insns.
+
+2004-02-27 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR optimization/7871
+ * flow.c (propagate_one_insn): Interpret calls as setting global
+ registers, not merely clobbering them.
+
+2004-02-27 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
+ as well.
+ * config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
+ * config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.
+
+2004-02-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/arm/arm.c (arm_legitimate_address_p): Don't check the mode
+ size for minipool references.
+
+2004-02-27 Eric Botcazou <ebotcazou@act-europe.fr>
+ Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold): Revert 2004-02-25 change. Use the original
+ operands to build a tree with swapped operands.
+ * expr.c (expand_expr_real) <MAX_EXPR>: Consistently use the
+ 'unsignedp' predicate to specify the signedness.
+
+2004-02-26 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/rs6000.md: Add fixuns_truncsfsi2 and
+ fix_truncsfsi2.
+
+ * config/rs6000/spe.md: Delete spe_efsctuiz.
+ Add spe_fixuns_truncsfsi2.
+ Add spe_fix_truncsfsi2.
+
+2004-02-26 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.h (TARGET_CPU_CPP_BUILTINS): Define __xtensa__.
+
+2004-02-25 James E Wilson <wilson@specifixinc.com>
+
+ * gcc-simple.c (rtl_zone, tree_zone, garbage_zone, ggc_alloc_typed,
+ ggc_alloc_zone): New.
+ (ggc_pch_count_object, gcc_pch_alloc_object, ggc_pch_write_object):
+ Add bool is_string parameter.
+
+2004-02-26 Alan Modra <amodra@bigpond.net.au>
+
+ * gcse.c (delete_null_pointer_checks_1): Set stop_insn to end, not
+ beginning of block. Do not delete CC setter unless HAVE_cc0.
+
+2004-02-25 Kelley Cook <kcook@gcc.gnu.org>
+
+ * doc/contrib.texi: Add an entry for myself.
+
+2004-02-25 Kelley Cook <kcook@gcc.gnu.org>
+
+ * config.gcc: Add comment describing extra_gcc_objs.
+ i[34567]86-*-cygwin*): Replace host_extra_gcc_objs with extra_gcc_objs.
+ * configure.ac (extra_gcc_objs): New substitution variable.
+ (host_extra_gcc_objs): Don't substitute.
+ * configure: Regenerate.
+ * Makefile.in: Use extra_gcc_objs.
+
+2004-02-25 Eric Botcazou <ebotcazou@act-europe.fr>
+
+ * fold-const.c (fold): Treat MAX_EXPR and MIN_EXPR like
+ comparisons with regard to signedness.
+
+2004-02-25 Jakub Jelinek <jakub@redhat.com>
+
+ * gcov-io.c (gcov_open) [GCOV_LOCKED]: Use open + fdopen instead of
+ fopen.
+ * libgcov.c: Include sys/stat.h.
+ * config/rs6000/linux.h (TARGET_HAS_F_SETLKW): Define.
+ * config/rs6000/linux64.h (TARGET_HAS_F_SETLKW): Define.
+ * config/sparc/linux.h (TARGET_HAS_F_SETLKW): Define.
+ * config/sparc/linux64.h (TARGET_HAS_F_SETLKW): Define.
+
+2004-02-25 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_legitimate_index_p): For QImode the range of an offset
+ is -4095...+4095 inclusive.
+
+2004-02-25 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/install.texi (sparc-sun-solaris2* specific notes): Document
+ the bootstrap failure with Sun CC 5.4 and 5.5.
+
+2004-02-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * cse.c (cse_change_cc_mode_insns): Stop at any instruction
+ which modifies NEWREG.
+ (cse_condition_code_reg): Update the mode of CC_REG in
+ CC_SRC_INSN on our own.
+
+2004-02-24 Michael Matz <matz@suse.de>
+
+ * config/i386/i386.c (ix86_comp_type_attributes): Check for
+ regparm attributes.
+
+2004-02-24 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.md (spe_fix_truncsfsi2): Delete.
+ (spe_fixuns_truncsfsi2): Delete.
+
+ * config/rs6000/rs6000.md (fix_truncsfsi2): Delete.
+ (fixuns_truncsfsi2): Delete.
+
+2004-02-24 Josef Zlomek <zlomekj@suse.cz>
+
+ PR/14240
+ * rtlanal.c (replace_label): Fix replacing labels in constant pool.
+
+2004-02-24 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa-protos.h (xtensa_copy_incoming_a7): Update.
+ (init_cumulative_args): Likewise.
+ (a7_overlap_mentioned_p): Delete prototype.
+ * config/xtensa/xtensa.c (struct machine_function): Replace
+ incoming_a7_copied field with need_a7_copy and vararg_a7 flags.
+ Add set_frame_ptr_insn field.
+ (xtensa_emit_move_sequence): Update call to xtensa_copy_incoming_a7.
+ (xtensa_copy_incoming_a7): Rewrite to check need_a7_copy flag and check
+ if the operand is an argument in a7. If so, copy a7 to a new pseudo
+ at the function entry and replace the operand with the pseudo.
+ (init_cumulative_args): Remove unused arguments. Add new "incoming"
+ argument and record this flag in CUMULATIVE_ARGS.
+ (function_arg): Remove result_mode and special-case code to handle
+ arguments in a7. Instead, set need_a7_copy flag when there is an
+ incoming argument in a7.
+ (xtensa_expand_prologue): Remove code to search for set_frame_ptr insn
+ and use the value recorded in cfun->machine->set_frame_ptr_insn.
+ (xtensa_builtin_saveregs): Check for negative gp_left value. Set
+ need_a7_copy and vararg_a7 flags. Use move_block_from_reg instead of
+ special-case code.
+ (a7_overlap_mentioned_p): Delete.
+ * config/xtensa/xtensa.h (CUMULATIVE_ARGS): Add "incoming" flag.
+ (INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Remove useless
+ arguments to init_cumulative_args and pass "incoming" flag instead.
+ (BLOCK_REG_PADDING): Delete.
+ * config/xtensa/xtensa.md (movdi, movsf, movdf): Remove unnecessary
+ checks for reload_in_progress and reload_completed. Update calls to
+ xtensa_copy_incoming_a7.
+ (ashlsi3): Rename existing insn to ashlsi3_internal. Add expander
+ to call xtensa_copy_incoming_a7.
+
+2004-02-24 Richard Earnshaw <rearnsha@arm.com>
+
+ * invoke.texi (ARM Options): Mark -mapcs-26 and -mno-alignment-traps
+ as deprecated. Remove already deprecated synonyms.
+ * arm.c (arm_override_options): Generate an inform message if the
+ user tries to invoke the compiler in apcs-26 mode.
+ * arm.h (TARGET_SWITCHES): Remove help comments from deprecated
+ switches. Delete deprecated synonyms for -malignment-traps.
+ (TARGET_DEFAULT): Default to alignment traps.
+ * arm/coff.h (TARGET_DEFAULT): Default to alignment traps.
+ * arm/elf.h arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h: Likewise.
+ * arm/unknown-elf.h arm/wince-pe.h: Likewise.
+
+2004-02-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.h: Deprecate -mpni/-mno-pni.
+
+2004-02-23 Kelley Cook <kcook@gcc.gnu.org>
+
+ * config/i386/i386.c: Rename pni to sse3.
+ * config/i386/i386.h: Likewise.
+ * config/i386/i386.md: Likewise.
+ * config/i386/pmmintrin.h: Likewise.
+ * doc/extend.texi: Likewise.
+ * doc/invoke.texi: Likewise.
+
+2004-02-23 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/rs6000/linux.h (OS_MISSING_POWERPC64): Define.
+ * config/rs6000/linux64.h (OS_MISSING_POWERPC64): Define.
+
+2004-02-23 Eric Botcazou <ebotcazou@libertysurf.fr>
+ Falk Hueffner <falk@debian.org>
+
+ PR c/14188
+ * builtins.c (expand_builtin_va_arg): Emit an informative message
+ if a trap is generated.
+ * c-typeck.c (build_function_call): Likewise.
+
+2004-02-22 Christopher Faylor <cgf@redhat.com>
+
+ * config.gcc (i[34567]86-*-pe|i[34567]86-*-cygwin*): *Really* specify
+ extra host object file when targetting cygwin rather than generic
+ object files.
+
+2004-02-22 Matthias Klose <doko@debian.org>
+
+ Taken from mainline:
+
+ 2004-02-12 Geoffrey Keating <geoffk@apple.com>
+
+ * Makefile.in (install-man): Use $(CPP_INSTALL_NAME) and
+ $(GCOV_INSTALL_NAME) to install manpages. Remove generic rule
+ for installing .1 manpages. Add rules for installing cpp
+ and gcov manpages under their installed names.
+
+2004-02-22 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/14209
+ * config/cris/cris.md ("*andsi_movu", "*andhi_movu"): Tweak
+ constraints to not match postincrement. Adjust the predicate to
+ exclude a volatile memory reference.
+ ("*andsi_clear"): Tweak constraints to not match postincrement.
+ Adjust the predicate to exclude a volatile memory reference.
+ ("*andhi_clear"): Ditto. Rename from "*andhi_clear_signed".
+ ("*andhi_clear_unsigned"): Remove, non-matching pattern.
+
+2004-02-21 Christopher Faylor <cgf@redhat.com>
+
+ * config.gcc (i[34567]86-*-pe|i[34567]86-*-cygwin*): Specify extra host
+ object file when targetting cygwin.
+ * config/i386/t-cygwin (EXTRA_GCC_OBJS): Remove definition since it is
+ overridden by top-level Makefile.
+
+2004-02-21 Alan Modra <amodra@bigpond.net.au>
+
+ * combine.c (can_combine_p): Don't ignore SETs marked with
+ REG_EH_REGION notes.
+
+2004-02-21 Jan Hubicka <jh@suse.cz>
+
+ * params.def (max-peeled-insns, max-completely-peeled-insns,
+ max-once-peeled-insns): Set to 400.
+
+2004-02-20 Falk Hueffner <falk@debian.org>
+
+ PR target/14201
+ * config/alpha/alpha.md (*fix_truncsfsi_ieee): Fix typoed operand
+ numbers.
+
+2004-02-20 Mohan Embar <gnustuff@thisiscool.com>
+ Tom Tromey <tromey@redhat.com>
+
+ * doc/install.texi: Moved --disable-libgcj and
+ --with-system-zlib documentation to new section for
+ Java-specific options.
+ Added explicit Cross-Compiler-Specific Options subheading.
+ Added section for Java-specific options.
+
+2004-02-20 James E Wilson <wilson@specifixinc.com>
+
+ * toplev.c (dump_file_index, dump_file): Put ce3 before rnreg.
+
+2004-02-20 Josef Zlomek <zlomekj@suse.cz>
+
+ * tree-inline.c (copy_body_r): Do not replace ret_label.
+
+2004-02-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gcc.c (process_command): Allow translation of the copyright
+ symbol but not the rest of the copyright message.
+ * gcov.c (print_version): Likewise. Allow translation of the
+ message about warranty.
+
+2004-02-19 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.md (spe_fixunssfsi2): Rename to
+ spe_fixuns_truncsfsi2.
+
+ * config/rs6000/rs6000.md (fixunssfsi2): Rename to
+ fixuns_truncsfsi2.
+
+2004-02-19 Richard Sandiford <rsandifo@redhat.com>
+ Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * config/mips/mips.c (mips_address_insns): Treat BLKmode specially.
+ * config/mips/mips.md: Expand comment above unaligned loads and stores.
+
+2004-02-20 Alan Modra <amodra@bigpond.net.au>
+
+ * function.c (assign_parms): Correct leakage of mainline code
+ in last commit. Also leakage from INIT_CUMULATIVE_ARGS patch.
+
+2004-02-19 Zack Weinberg <zack@codesourcery.com>
+
+ * config/ia64/ia64.c (ia64_function_arg): In big-endian mode,
+ when passing single SFmode quantities in general registers,
+ put them in the high half.
+ (struct extern_func_list, extern_func_head): Mark with GTY(()).
+ (ia64_hpux_add_extern_decl): Save the decl, not the name string.
+ Allocate memory with ggc_alloc. No need to copy anything.
+ (ia64_hpux_file_end): Update to match.
+
+2004-02-19 David Daney <ddaney@avtrex.com>
+
+ PR preprocessor/14198
+ * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Add
+ builtin_assert ("machine=mips")
+
+2004-02-19 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.md ("*subdf3_cc", "*subdf3_cconly", "*subsf3_cc",
+ "*subsf3_cconly"): Subtraction is not commutative.
+
+2004-02-19 Alan Modra <amodra@bigpond.net.au>
+
+ * function.c (assign_parms): When building decl_rtl for
+ SPLIT_COMPLEX_ARGS, ensure inner modes of concat match outer.
+
+2004-02-19 Olivier Hainque <hainque@act-europe.fr>
+
+ * expr.c (is_aligning_offset): Check if we are aligning the
+ expressions's address over BIGGEST_ALIGNMENT in bytes, not
+ in bits.
+
+2004-02-19 Jan Hubicka <jh@suse.cz>
+
+ * genextract.c (main): Do not output the memset when not checking.
+
+2004-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (override_options): Don't imply 3DNow! for -m64
+ by default.
+
+2004-02-18 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.md ("divmoddisi3"): Fix incorrect mode.
+
+2004-02-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.h (PIC_OFFSET_TABLE_REGNUM): Define to INVALID_REGNUM when not
+ generating PIC code.
+
+2004-02-18 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_mainpool_start): Delete the main pool
+ placeholder insn when chunkifying the pool.
+
+2004-02-18 Per Bothner <per@bothner.com>
+
+ * cpphash.h (struct cpp_buffer): Restore return_at_eof field. This
+ partly reverts my 2003-10-01 change, because we're back to logically
+ including <command line> inside the main line.
+ * cpplex.c (_cpp_get_fresh_line): Check return_at_eof field.
+ * cppmacro.c (cpp_scan_nooutput): Set return_at_eof of current buffer.
+ Fixes PR preprocessor/14103.
+
+2004-02-18 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/13866
+ * arm.c (load_multiple_operation): Don't insist that the source reg
+ of a post-increment component is the same as the destination.
+ (store_multiple_operation): Likewise.
+
+2004-02-18 Paul Brook <paul@codesourcery.com>
+
+ * rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX
+
+2004-02-18 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/11326
+ * config/ia64/ia64.c (ia64_struct_value_rtx): Cope with NULL
+ fntype.
+
+2004-02-18 Paul Brook <paul@codesourcery.com>
+
+ PR debug/12934
+ * dwarf2out.c (loc_descriptor_from_tree): Handle
+ EXPR_WITH_FILE_LOCATION.
+
+2004-02-17 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/11326
+ * c-common.c (flag_abi_version): Remove.
+ * c-common.h (flag_abi_version): Likewise.
+ * c-opts.c (c_common_handle_option): Remove OPT_fabi_version case.
+ * c.opt (fabi-version): Remove.
+ * calls.c (expand_call): Always pass a function type to
+ struct_value_rtx. Use convert_memory_address.
+ * common.opt (fabi-version): Add it.
+ * flags.h (flag_abi_version): Likewise.
+ (abi_version_at_least): New macro.
+ * opts.c (common_handle_option): Add OPT_fabi_version.
+ * toplev.c (flag_abi_version): Define it.
+ * config/ia64/ia64.h (STRUCT_VALUE_REGNUM): Remove.
+ * config/ia64/ia64.c (TARGET_STRUCT_VALUE_RTX): Define it.
+ (ia64_struct_retval_addr_is_first_parm_p):
+ New function.
+ (ia64_output_mi_thunk): Use it.
+ (ia64_struct_value_rtx): New function.
+
+2004-02-18 Alan Modra <amodra@bigpond.net.au>
+
+ PR optimization/14119
+ * combine.c (try_combine): When attemting to fix unrecognized insns,
+ don't delete SETs marked with REG_EH_REGION notes.
+
+2004-02-17 Jan Hubicka <jh@suse.cz>
+
+ PR bootstrap/14180
+ * cselib.c (remove_useless_values): Do not access released
+ memory.
+
+2004-02-17 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * combine.c (simplify_if_then_else): Do not replace
+ (if_then_else (ne reg 0) (0) (const_int)) by (reg) if the
+ modes differ.
+
+2004-02-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config/mips/t-iris6gld: Renamed to ...
+ * config/mips/t-irix-gld: ... this.
+ * config.gcc (mips-sgi-irix6*): Reflect this
+ (mips-sgi-irix5*): Use it with GNU ld.
+
+ * config/mips/irix6-crti.asm, config/mips/irix6-crtn.asm: Renamed
+ to ...
+ * config/mips/irix-crti.asm, config/mips/irix-crtn.asm: ... this.
+ * config/mips/t-irix-gld: Reflect this.
+ * config/mips/iris6gld.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
+
+ * config/mips/iris5gld.h: New file.
+ * config.gcc (mips-sgi-irix5*): Use it with GNU ld.
+ Only use collect2 without gas.
+
+ * config/mips/iris6.h (IRIX6_STARTFILE_SPEC, IRIX6_ENDFILE_SPEC):
+ Renamed to IRIX_STARTFILE_SPEC, IRIX_ENDFILE_SPEC.
+ (STARTFILE_SPEC, ENDFILE_SPEC, SUBTARGET_EXTRA_SPECS): Reflect this.
+ * config/mips/iris6gld.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
+
+ * config/mips/iris6.h (SUBTARGET_EXTRA_SPECS): Moved ...
+ * config/mips/iris5.h: ... here.
+
+ * config/mips/iris5.h (STARTFILE_SPEC, ENDFILE_SPEC): Renamed to
+ IRIX_STARTFILE_SPEC, IRIX_ENDFILE_SPEC.
+ (STARTFILE_SPEC, ENDFILE_SPEC): Define.
+
+ * config/mips/iris5gas.h (STARTFILE_SPEC, ENDFILE_SPEC): Simplify
+ using irix_startfile_spec, irix_endfile_spec.
+ * patches.summary (http):
+
+2004-02-17 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/14178
+ * doc/invoke.texi (fabi-version): The default is 2 now.
+
+2004-02-17 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * doc/install.texi: Update description of --gxx-include-dir to
+ give correct default value. (merged from mainline)
+
+2004-02-16 Matthias Klose <doko@debian.org>
+
+ * config/t-slibgcc-elf-ver: Define SHLIB_NAME and SHLIB_SONAME
+ in terms of SHLIB_SOVERSION.
+ * config/m68k/t-slibgcc-elf-ver: New file.
+ * config/pa/t-slibgcc-elf-ver: New file.
+ * config.gcc (m68k-linux, parisc-linux): Use them when not
+ sjlj exceptions are not configured.
+
+2004-02-16 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (get_pc_symbol_name): Mark with GTY(()).
+
+2004-02-16 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/sourcebuild.texi: Mention backends.html.
+
+2004-02-15 Roger Sayle <roger@eyesopen.com>
+
+ Backport from mainline:
+
+ 2004-02-07 Roger Sayle <roger@eyesopen.com>
+ PR middle-end/13696
+ * fold-const.c (fold_convert): New function to provide type
+ conversion to the middle-end without using convert.
+ (negate_expr, associate_trees, size_diffop, omit_one_operand,
+ operand_equal_for_comparison_p, pedantic_omit_one_operand,
+ invert_truthvalue, optimize_bit_field_compare, range_binop,
+ decode_field_reference, make_range, build_range_check, unextend,
+ fold_truthop, extract_muldiv_1, fold_mathfn_compare,
+ fold_binary_op_with_conditional_arg, fold_inf_compare,
+ fold_single_bit_test, fold, multiple_of_p): Replace all calls to
+ convert with calls to fold_convert.
+
+ 2004-02-09 Roger Sayle <roger@eyesopen.com>
+ * fold-const.c (fold) <NOP_EXPR>: Use the original type conversion
+ tree code rather than call fold_convert, which doesn't specify a
+ default floating point to integer conversion.
+
+ 2004-02-10 Paolo Bonzini <bonzini@gnu.org>
+ PR c/14092
+ * fold-const.c (fold) <NEGATE_EXPR>: Convert result of
+ negate_expr back to the original type.
+
+2004-02-15 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ Backport from mainline:
+
+ 2004-02-05 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+ * config/sh/t-linux (SHLIB_INSTALL): Prepend $$(DESTDIR)
+ to $$(slibdir) in the installation commands.
+
+2004-02-15 Roger Sayle <roger@eyesopen.com>
+
+ Backport from mainline:
+
+ 2004-01-20 Roger Sayle <roger@eyesopen.com>
+ * fold-const.c (fold_convert): Rename to fold_convert_const.
+ (fold_convert_const): Change arguments to take a tree_code,
+ a type and the operand/expression to be converted. Return
+ NULL_TREE if no simplification is possible.
+ (fold): Adjust call to fold_convert to match new fold_convert_const.
+ Avoid modifying the tree passed to fold in-place.
+
+2004-02-15 Jan Hubicka <jh@suse.cz>
+
+ * cselib.c (value_pool): New.
+ (new_cselib_val): Use pool.
+ (cselib_init): Initialize value_pool
+ (cselib_finish): Free pool.
+
+ * cselib.c: Include alloc-pool.h
+ (empty_vals, empty_elt_lists, empty_elt_loc_lists): Kill.
+ (elt_loc_list_pool, elt_list_pool, cselib_val_pool): Declare.
+ (new_elt_list, new_elt_loc_list, unchain_one_elt_list,
+ unchain_one_elt_loc_list_pool, unchain_one_value,
+ new_cselib_val): Simplify using allocpool.
+ (cselib_init): Initialize allocpools.
+ (cselib_finish): Finish allocpools.
+
+2004-02-14 Richard Sandiford <rsandifo@redhat.com>
+
+ Backport from mainline:
+
+ 2002-04-08 Richard Sandiford <rsandifo@redhat.com>
+ * real.c (encode_ibm_extended): Normalize the input value before
+ converting it to a double. Handle the case where a normal value
+ rounds to infinity.
+
+2004-02-14 Olivier Hainque <hainque@act-europe.fr>
+
+ * loop.c (check_dbra_loop): Use gen_int_mode instead of GEN_INT
+ for start_value when it is directly moved into reg, and factorize
+ the retrieval of GET_MODE (reg).
+
+2004-02-13 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac: Search for as, ld below libexec/gcc.
+ * configure: Regenerate.
+
+2004-02-13 Jan Hubicka <jh@suse.cz>
+
+ * combine.c (recog_for_combine): Avoid allocating unnecesary RTX.
+
+ * genrecog.c (find_operand): add extra argument stop.
+ (validate_pattern): Verify that mach_dup is duplicating operand
+ defined lexically earlier.
+
+2004-02-13 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR other/10584
+ * c-opts.c (c_common_post_options): Disable function inlining when
+ using -finstrument-functions.
+ * doc/invoke.texi (Code Gen Options): Document this restriction.
+
+2004-02-12 Chris Demetriou <cgd@broadcom.com>
+
+ * config/mips/mips.md (casesi_internal, casesi_internal_di):
+ Use ".set macro" to avoid warnings about multi-instruction
+ macros, since they're intentional.
+
+2004-02-13 Jan Hubicka <jh@suse.cz>
+
+ * alias.c (find_base_term, get_addr): Do not dereference NULL
+ pointer when all VALUE's locations has been invalidated.
+ (rtx_equal_for_memref_p): Simplify checking of VALUEs.
+
+ * cselib.c (discard_useless_values): Clear out value pointer pointing
+ to datastructure to be recycled.
+
+ * gcse.c (bypass_block): Prevent edges to be unified when we are
+ about to emit compenstation code.
+
+ * gcse.c (bypass_block): Fix a typo in the previous check-in
+ to the file.
+
+ * alloc-pool.c (align_four): Kill.
+ (create_alloc_pool): Align size to eight.
+ (free_alloc_pool, free_pool): Invalidate deallocated data.
+
+2004-02-12 Richard Sandiford <rsandifo@redhat.com>
+
+ PR bootstrap/13617
+ * config/mips/mips-protos.h (mips_output_aligned_decl_common): Declare.
+ (mips_declare_object): Make variadic.
+ * config/mips/mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Use
+ mips_output_aligned_decl_common.
+ * config/mips/mips.c (mips_output_aligned_decl_common): New function.
+ (mips_declare_object): Make variadic.
+
+2004-02-12 Jan Hubicka <jh@suse.cz>
+
+ * tree-optimize.c (tree_rest_of_compilation): Do not release DECL_ARGUMENTS
+
+2004-02-12 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR inline-asm/6162
+ * reload.c (find_reloads): Only support one pair of commutative
+ operands.
+
+2004-02-12 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR target/1532
+ Backport from mainline:
+
+ 2004-02-11 Richard Henderson <rth@redhat.com>
+
+ * flow.c (insn_dead_p): A clobber of a dead hard register is a
+ dead insn after reload.
+
+ 2004-01-24 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cse.c (cse_cc_succs): Change the mode of the source expression
+ as soon as decide we need a new mode. Don't permit changing modes
+ if we found a match in a successor block.
+ (cse_condition_code_reg): Save original mode of source expression
+ so that we know whether we have to change the mode in other
+ insns.
+
+ 2004-01-24 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * cse.c: (cse_cc_succs) Fix comparison warning.
+
+ 2004-01-23 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cse.c (cse_change_cc_mode): New static function.
+ (cse_change_cc_mode_insns, cse_cc_succs): Likewise.
+ (cse_condition_code_reg): New function.
+ * rtl.h (cse_condition_code_reg): Declare.
+ * toplev.c (rest_of_handle_cse2): Call cse_condition_code_reg.
+ * target.h (struct gcc_target): Add fixed_condition_code_regs and
+ cc_modes_compatible.
+ * target-def.h (TARGET_FIXED_CONDITION_CODE_REGS): Define.
+ (TARGET_CC_MODES_COMPATIBLE): Define.
+ (TARGET_INITIALIZER): Add new initializers.
+ * targhooks.c (default_cc_modes_compatible): New function.
+ * targhooks.c (default_cc_modes_compatible): Declare.
+ * hooks.c (hook_bool_intp_intp_false): New function.
+ * hooks.h (hook_bool_intp_intp_false): Declare.
+ * config/i386/i386.c (TARGET_FIXED_CONDITION_CODE_REGS): Define.
+ (TARGET_CC_MODES_COMPATIBLE): Define.
+ (ix86_fixed_condition_code_regs): New static function.
+ (ix86_cc_modes_compatible): Likewise.
+ * doc/tm.texi (Condition Code): Document new hooks.
+
+2004-02-12 Hartmut Penner <hpenner@de.ibm.com>
+
+ * config/rs6000/altivec.md (*movv4si_internal): At least one
+ operand must be register_operand.
+ (*movv8hi_internal1): Likewise.
+ (*movv16qi_internal1): Likewise.
+ (*movv4sf_internal1): Likewise.
+
+2004-02-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/14113
+ Backport from mainline:
+
+ 2004-02-03 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.md (call followed by jump define_peephole's):
+ Delete.
+
+2004-02-12 Hartmut Penner <hpenner@de.ibm.com>
+
+ * gcc/config/rs6000/rs6000.c (rs6000_override_options)
+ Set AltiVec ABI and vrsave as default for ppc64 linux.
+ (init_cumulative_args): Post error, if try to return
+ value in AltiVec register without enable AltiVec.
+ (function_arg_advance): Ditto for passing arguments.
+
+2004-02-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ PR c/456
+ * cppexp.c (num_binary_op): Don't allow comma operators in #if
+ constant expressions at all outside C99 mode if pedantic.
+
+2004-02-10 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/spe.md ("*movv2si_internal"): Check for register
+ operand.
+ (movv4hi_internal): Same.
+ (movv2sf_internal): Same.
+ (movv1di_internal): Same.
+
+2004-02-11 Richard Sandiford <rsandifo@redhat.com>
+
+ * emit-rtl.c (mark_label_nuses): Check that a LABEL_REF refers to
+ a label before updating its usage count.
+
+2004-02-10 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR c/14088
+ real.c (real_from_string): Look for 'X' as well as 'x' in
+ hexfloat strings.
+
+2004-02-10 Per Bothner <per@bothner.com>
+
+ * c-opts.c (c_common_post_options): Don't emit working directory
+ in cpp output if -P was specified.
+
+2004-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR optimization/13424
+ Backport from mainline:
+
+ 2004-01-29 Jakub Jelinek <jakub@redhat.com>
+ * emit-rtl.c (change_address): Use XEXP (memref, 0) instead
+ of addr when creating MEM copy.
+
+ 2004-01-28 Jakub Jelinek <jakub@redhat.com>
+ * expr.c (store_constructor): Revert 2003-12-03 change.
+
+ * emit-rtl.c (change_address): Check also if MEM_ATTRS is set as
+ expected before returning early. Avoid sharing RTL if they
+ need to be changed.
+
+ * config/i386/i386.c (ix86_expand_movstr): Rework rep_mov and strmov
+ handling so that memory attributes are preserved. Don't call
+ ix86_set_move_mem_attrs.
+ (ix86_set_move_mem_attrs_1, ix86_set_move_mem_attrs): Removed.
+ (ix86_expand_clrstr): Rename src argument to
+ dst. Rework rep_stos and strset handling so that memory attributes
+ are preserved.
+ (ix86_expand_strlen): Pass src argument to
+ ix86_expand_strlensi_unroll_1. Rework strlenqi_1 handling so that
+ memory attributes are preserved.
+ (ix86_expand_strlensi_unroll_1): Add src argument. Use
+ change_address instead of gen_rtx_MEM.
+ * config/i386/i386.md (strmov, strmov_singleop, rep_mov): New
+ expanders.
+ (strmovdi_rex64, strmovsi, strmovsi_rex64, strmovhi, strmovhi_rex64,
+ strmovqi, strmovqi_rex64): Remove.
+ (rep_mov*, strmov*): Prefix insn names with *.
+ (strset, strset_singleop, rep_stos): New expanders.
+ (strsetdi_rex64, strsetsi, strsetsi_rex64, strsethi, strsethi_rex64,
+ strsetqi, strsetqi_rex64): Remove.
+ (rep_stos*, strset*): Prefix insn names with *.
+ (rep_stosqi_rex64): Likewise. Fix mode of dirflag reg from DImode
+ to SImode.
+ (cmpstrsi): Rework cmpstrqi_1 handling so that memory attributes
+ are preserved.
+ (cmpstrqi_nz_1, cmpstrqi_nz_rex_1, cmpstrqi_1, cmpstrqi_rex_1):
+ Prefix insn names with *.
+ (cmpstrqi_nz_1, cmpstrqi_1): New expanders.
+ (strlenqi_1, strlenqi_rex_1): Prefix insn names with *.
+ (strlenqi_1): New expander.
+ * config/i386/i386.h (ix86_set_move_mem_attrs): Remove prototype.
+
+ 2004-01-24 Jan Hubicka <jh@suse.cz>
+ * emit-rtl.c (change_address, adjust_address_1, offset_address,
+ widen_memory_access): Return early when there is nothing to change.
+
+2004-02-10 David Edelsohn <edelsohn@gnu.org>
+
+ * configure.ac (gcc_cv_as_powerpc_mfcrf): Correct test for mfcr.
+ * configure: Regenerate.
+
+2004-02-10 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * cfganal.c (flow_call_edges_add): Never split a libcall block.
+
+2004-02-10 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI
+ && TARGET_IRIX.
+
+2004-02-09 Geoffrey Keating <geoffk@apple.com>
+
+ PR 12028
+ * config/rs6000/rs6000.c (ccr_bit): Don't let consistency check
+ failure stop compilation, just print helpful message.
+
+2004-02-09 Fariborz Jahanian <fjahanian@apple.com>
+
+ * expr.c (emit_group_load): split constant
+ correctly into register components of PARALLEL insn.
+
+2004-02-09 DJ Delorie <dj@redhat.com>
+
+ * config/i386/xm-djgpp.h (GCC_DRIVER_HOST_INITIALIZATION): No
+ longer modify standard_exec_prefix, standard_bindir_prefix, or
+ standard_startfile_prefix.
+
+2004-02-09 James E Wilson <wilson@specifixinc.com>
+
+ PR c++/11295
+ * c-common.c (c_expand_expr, case STMT_EXPR): Change expand_expr call
+ to expand_expr_real call, and pass in alt_rtl as last argument.
+
+ PR libstdc++/5625
+ * builtin-types.def (BT_WORD, BT_FN_WORD_PTR): New.
+ * builtins.c (expand_builtin): Handle BUILT_IN_EXTEND_POINTER.
+ * builtins.def (BUILT_IN_EXTEND_POINTER): New.
+ * except.c (expand_builtin_extend_pointer): New.
+ * except.h (expand_builtin_extend_pointer): Declare.
+
+2004-02-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config/mips/iris5.h (BSS_SECTION_ASM_OP): Define.
+ * config/mips/iris6.h (BSS_SECTION_ASM_OP): Undef.
+
+ * config/mips/iris6.h (TARGET_ASM_NAMED_SECTION): Moved ...
+ * config/mips/iris5.h: ... here.
+ * config/mips/iris5gas.h (TARGET_ASM_NAMED_SECTION): Remove.
+
+ * config/mips/iris6.h (EXTRA_SECTION_FUNCTIONS): Move ...
+ * config/mips/iris5.h: ... here.
+
+2004-02-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac: Remove default executable files before AC_PROG_CC.
+ * configure: Regenerate.
+
+2004-02-09 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR target/13721
+ * config/h8300/h8300.c (byte_reg): Call abort() if asked to
+ print a operand other than a register.
+
+2004-02-09 Nick Clifton <nickc@redhat.com>
+
+ * Import these patches from mainline sources:
+
+ 2004-01-21 Inaoka Kazuhiro <inaoka.kazuhiro@renesas.com>
+
+ * config/m32r/m32r.h (CPP_SPEC): Define.
+
+ 2004-01-20 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * config/m32r/m32r.h (TARGET_M32R2). Test for TARGET_M32R2_MASK
+ not TARGET_M32RX_MASK.
+
+2004-02-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * cpplib.h (cpp_get_line_maps): Un-constify the structure
+ pointed to by the pointer returned by the function.
+ * cpplib.c (cpp_get_line_maps): Likewise.
+
+2004-02-08 Kazu Hirata <kazu@cs.umass.edu>
+
+ * c-objc-common.c (c_cannot_inline_tree_fn): Fix a typo in a
+ warning.
+
+2004-02-08 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * README.Portability: Change "ISO C89" to "ISO C90".
+ * c-parse.in (primary, initelt): Likewise.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ Bug 13856
+ * c-decl.c (diagnose_mismatched_decls): Only give special
+ treatment when olddecl is DECL_BUILT_IN, if C_DECL_INVISIBLE
+ is also true.
+ (merge_decls): Don't clear DECL_BUILT_IN_CLASS and
+ DECL_FUNCTION_CODE when defining a built-in function.
+ Don't update DECL_ESTIMATED_INSNS.
+ * dwarf2out.c (dwarf2out_decl): Don't ignore built-in
+ FUNCTION_DECLs.
+ * tree.h: Delete DECL_ESTIMATED_INSNS.
+ * tree-inline.c (struct inline_data): Delete inlined_insns field.
+ (expand_call_inline, optimize_inline_calls): Don't update
+ DECL_ESTIMATED_INSNS nor inlined_insns.
+ * cgraphunit.c (cgraph_analyze_function): Don't update
+ DECL_ESTIMATED_INSNS.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ * c-common.c (shadow_warning): Delete.
+ * c-common.h (free_parser_stacks, shadow_warning, sw_kind): Delete.
+ * c-decl.c (warn_if_shadowing): Issue shadow warnings directly.
+ * c-opts.c (c_common_parse_file): Don't call free_parser_stacks.
+ * c-parse.in (free_parser_stacks): Delete.
+
+2004-02-07 Kazu Hirata <kazu@cs.umass.edu>
+
+ * c-opts.c, c-ppoutput.c, cppfiles.c, cpphash.h, cppinit.c,
+ cpplib.h, diagnostic.h, fix-header.c, config/fp-bit.c,
+ config/mips/iris5.h, doc/makefile.texi: Update copyright.
+
+2004-02-06 James E Wilson <wilson@specifixinc.com>
+
+ * config/ia64/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Only define for
+ glibc 2.3 or better.
+
+2004-02-06 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * loop.c (force_movables): Transitively increase the priorities of
+ all insns forces by an insn, not just the first one.
+
+2004-02-06 Falk Hueffner <falk@debian.org>
+
+ PR target/12898
+ * config/alpha/alpha.c (alpha_emit_set_const_1): If
+ no_new_pseudos, use gen_rtx_SET directly for SImode constants
+ which need multiple instructions to emit.
+
+2004-02-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/invoke.texi: Remove the pni option from -mfpmath=.
+
+2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
+
+ * doc/install.texi: Update automake and autoconf version
+ requirements. Note where to find gcj automake version.
+
+2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Makefile.in (generate-manpages): Move dependencies to ...
+ (man): here.
+ * doc/makefile.texi: Document new targets.
+ * doc/sourcebuild.texi (Make-lang.in): Document new langhooks.
+
+2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
+
+ PR/13485
+ Makefile.in (srcextra): Add a level of indirection to ...
+ (gcc.srcextra): ... here.
+ (po-generated): Delete.
+ (po/$(PACKAGE).pot: Use srcextra instead of po-generated. Depend on
+ options.c.
+ (start.encap): Remove superfluous lang.srcextra dependency.
+ objc/Make-lang.in (po-generated): Delete.
+
+2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config/mips/iris5gas.h (PREFERRED_DEBUGGING_TYPE): Define.
+
+2004-02-05 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.md ("*tmqidi_ext"): New insn.
+ ("*extendqidi2_short_displ", "*extendsiqi2_short_displ"): Old
+ pre-reload splitters are transformed to post-reload
+ define_insn_and_split patterns.
+ ("*tmqisi_ext"): Renamed old "*tmqi_ext".
+
+2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR middle-end/13750
+ Revert:
+ 2004-01-15 Geoffrey Keating <geoffk@apple.com>
+ PR pch/13361
+ * c-typeck.c (constructor_asmspec): Delete.
+ (struct initializer_stack): Delete field 'asmspec'.
+ (start_init): Delete saving of asmspec.
+ (finish_init): Don't update constructor_asmspec.
+ * dwarf2out.c (rtl_for_decl_location): Duplicate string from tree.
+ * stmt.c (expand_asm): Duplicate strings from tree.
+ (expand_asm_operands): Likewise.
+ * tree.c (tree_size): Update computation of size of STRING_CST.
+ (make_node): Don't make STRING_CST nodes.
+ (build_string): Allocate string with tree node.
+ * tree.def (STRING_CST): Update comment.
+ * tree.h (TREE_STRING_POINTER): Adjust for change to STRING_CST.
+ (tree_string): Place contents of string in tree node.
+ * config/sh/sh.c (sh_handle_sp_switch_attribute): Duplicate string
+ from tree.
+
+2004-02-05 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * diagnostic.h (DEFINE_DIAGNOSTIC_KIND): Change parameter M to
+ msgid.
+
+2004-02-05 Paul Brook <paul@codesourcery.com>
+
+ Backport from mainline.
+
+ 2003-11-22 Phil Edwards <phil@codesourcery.com>
+
+ PR target/12476
+ * config/arm/arm.c (arm_output_mi_thunk): In Thumb mode, use
+ 'bx' instead of 'b' to avoid branch range restrictions. Output
+ the thunk immediately before the thunked-to function.
+ * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Do not emit
+ .thumb_func if a thunk is being generated. Emit .code 16 along
+ with .thumb_func if a thunk is not being generated.
+
+ 2003-11-05 Mark Mitchell <mark@codesourcery.com>
+
+ * calls.c (initialize_argument_information): Add CALL_FROM_THUNK_P
+ parameter. Use it instead of current_function_is_thunk.
+ * function.h (struct function): Update documentation for is_thunk.
+ * tree.h (CALL_FROM_THUNK_P): New macro.
+ * config/alpha/alpha.c (alpha_sa_mask): Do not check
+ no_new_pseudos when testing current_function_is_thunk.
+ * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likeiwse.
+
+2004-02-05 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * sourcebuild.texi (Test Idioms): Update testcase naming
+ conventions.
+
+2004-02-04 Per Bothner <per@bothner.com>
+
+ Partially revert/redo 2003-10-01 change; fix -fworking-directory.
+ * c-ppoutput.c (pp_dir_change): New function.
+ * c-common.h (pp_dir_change): New declaration.
+ * cpplib.h (struct cpp_options): Remove working_directory field.
+ * cppinit.c (cpp_find_main_file, cpp_push_main_file): Merge back to
+ (cpp_read_main_file): as before 10-01. Call _cpp_stack_file.
+ Don't handle -fworking_directory here, but in c_common_post_options.
+ (read_original_directory): Don't back up when done.
+ Don't clear no-longer used working_directory flag.
+ * cpplib.h: Update declarations to match.
+ * c-lex.c (cb_dir_change): Move to c-opts.c.
+ (init_c_lex): Don't set dir_change callback here, since we want
+ to set it even if flag_preprocess_only.
+ * c-opts.c (cb_dir_change): Function moved from c-lex.c.
+ (c_common_post_options): Set dir_change callback.
+ Call pp_dir_change if approporiate.
+ (finish_options): Don't call cpp_find_main_file here. Hence remove
+ unneeded parameter and result. Do LC_RENAME for <built-in>.
+ (c_common_post_options): Call cpp_read_main_file here instead.
+ (c_common_init): Update accordingly.
+ (push_command_line_include): Don't cpp_push_main_file.
+ Do LC_RENAME rather than LC_LEASE to get back to main file.
+ Compared to pre-10-01 version, inline cpp_rename_to_main_file.
+ (c_common_parse_file): Call cpp_read_main_file for subsequent main
+ files, but call finish_options for all files.
+ * c-opts.c (sanitize_cpp_opts): Don't set cpp_opts->working_directory.
+ * fix-header.c (read_scan_file): Call cpp_read_main_file instead of
+ cpp_find_main_file + cpp_push_main_file.
+ * c-lex.c (fe_file_change): Don't set main_input_filename here.
+ * opts.c (handle_options): Only set main_input_filename first time.
+
+2004-02-04 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * Makefile.in: Move target, host overrides after per-language
+ fragments.
+
+ * config/mips/t-iris5-as (FORCE_DEBUG_ADAFLAGS): Clear.
+ (GNATLIBCFLAGS): Remove -g.
+
+2004-02-04 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (function_arg_pass_by_reference): Return 1
+ for all modes whose size is greater than 8 bytes if ARCH32.
+ (sparc_va_arg): Handle all modes whose size is greater than 8 bytes
+ by reference if ARCH32.
+
+2004-02-04 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.md ("*la_64" + peepholes, "reload_indi"): Move
+ to before adddi3 insn patterns.
+ ("*la_31" + peepholes, "*la_31_and", "*la_31_and_cc", "force_la_31",
+ "reload_insi"): Move to before addsi3 insn patterns.
+
+2004-02-04 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/interface.texi, doc/tm.texi, doc/trouble.texi: Don't
+ mention deprecated target macros.
+
+2004-02-03 Wolfgang Bangerth <bangerth@dealii.org>
+
+ * doc/invoke.texi (x86 options): Fix spelling/wording.
+
+2004-02-03 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/iris5.h (ASM_OUTPUT_ASCII): Use mips_output_ascii to
+ put the original string in a comment.
+ * config/mips/mips-protos.h (mips_output_ascii): Add prefix argument.
+ * config/mips/mips.c (mips_output_ascii): Likewise.
+ * config/mips/mips.h (ASM_OUTPUT_ASCII): Adjust accordingly.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13975
+ * tree.h (enum tree_index): Add TI_PUBLIC, TI_PROTECTED, and
+ TI_PRIVATE.
+ (access_public_node): Redefine.
+ (access_protected_node): Likewise.
+ (access_private_node): Likewise.
+ * tree.c (build_common_tree_nodes): Create access_public_node,
+ access_protected_node, and access_private_node.
+
+2004-02-03 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/13914
+ * config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Use ap
+ for retaddr_column.
+
+2004-02-03 Kelley Cook <kcook@gcc.gnu.org>
+
+ * opts.c (OPT_fwritable_strings): Deprecate -fwritable-strings.
+
+2004-02-03 Steven Bosscher <s.bosscher@student.tudelft.nl>
+
+ * toplev.c: Fix broken checkin of 2003-12-30, again.
+
+2004-02-02 Eric Christopher <echristo@redhat.com>
+ Zack Weinberg <zack@codesourcery.com>
+
+ * c-opts.c (c_common_handle_option): Add -finput-charset.
+ * c.opt: Ditto.
+ * cppcharset.c (_cpp_convert_input): New function.
+ (_cpp_default_encoding): Ditto.
+ * cpphash.h: Add prototypes for above.
+ * cppfiles.c (read_file_guts): Use _cpp_convert_input.
+ * cppinit.c (cpp_create_reader): Use _cpp_default_encoding
+ for narrow execution and input character sets.
+ * doc/cppopts.texi: Document -finput-charset.
+
+2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/invoke.texi (SPARC options): Further improve.
+
+2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (function_arg_slotno): Align TImode
+ arguments on a 16-byte boundary in the parameter array if ARCH64.
+ Split handling of TFmode.
+
+2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/invoke.texi (SPARC options): Document that -mflat is deprecated.
+
+2004-02-01 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sol2-bi.h: Handle TARGET_CPU_ultrasparc3.
+ (CPP_CPU_SPEC): Handle -mcpu=ultrasparc3.
+ (ASM_CPU_SPEC): Likewise
+ * config/sparc/sol2.h: Handle TARGET_CPU_ultrasparc3.
+ (ASM_CPU_SPEC): Remove -mcpu=v8plus. Handle -mcpu=ultrasparc3.
+
+2004-02-01 Jan Hubicka <jh@suse.cz>
+
+ PR c++/12850
+ * cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
+ initial pointers.
+ * cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
+ for functions that will be only inlined.
+ (cgraph_mark_function_to_output): Likewise.
+ (cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
+ do not clear function body.
+ * tree-optimize.c (clear_decl_rtl): Use decl_function_context.
+ (tree_rest_of_compilation): Reorganize the logic releasing function
+ body to use callgraph datastructure.
+
+2004-02-01 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.md (adddi3_internal_2): Remove superfluous %s.
+
+2004-01-31 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/invoke.texi (SPARC options): Restructure and update.
+
+2004-01-31 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/invoke.texi: Follow spelling conventions.
+ * doc/tm.texi: Likewise.
+
+2004-01-31 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/install.texi: Fix typos.
+ * doc/invoke.texi: Likewise.
+
+2004-01-31 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_decompose_address): Do not treat virtual
+ registers as pointers.
+ * config/s390/s390.md ("*la_31" second peephole2): Fix incorrect mode.
+
+2004-01-31 Jan Hubicka <jh@suse.cz>
+
+ Revert the following patch until after AIX linker bug is fixed:
+ PR c++/12850
+ * cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
+ initial pointers.
+ * cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
+ for functions that will be only inlined.
+ (cgraph_mark_function_to_output): Likewise.
+ (cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
+ do not clear function body.
+ * tree-optimize.c (clear_decl_rtl): Use decl_function_context.
+ (tree_rest_of_compilation): Reorganize the logic releasing function
+ body to use callgraph datastructure.
+
+2004-01-31 Kazu Hirata <kazu@cs.umass.edu>
+
+ alloc-pool.c, alloc-pool.h, c-lex.c, c-pragma.h,
+ tree-optimize.c, config/alpha/alpha.c, config/alpha/alpha.h,
+ config/alpha/alpha.md, config/alpha/vms.h, config/arm/arm.h,
+ config/arm/linux-elf.h, config/avr/avr.c, config/c4x/c4x.c,
+ config/c4x/c4x.md, config/d30v/d30v.h,
+ config/frv/frv-protos.h, config/frv/frv.c, config/frv/frv.h,
+ config/frv/frv.md, config/frv/frvbegin.c, config/frv/frvend.c,
+ config/i386/cygming.h, config/i386/djgpp.h,
+ config/i386/emmintrin.h, config/i386/gthr-win32.c,
+ config/i386/i386-interix.h, config/i386/i386-protos.h,
+ config/i386/i386.c, config/i386/i386.h, config/i386/openbsd.h,
+ config/i386/winnt.c, config/i386/xm-mingw32.h,
+ config/i386/xmmintrin.h, config/ia64/ia64-protos.h,
+ config/ia64/ia64.c, config/ia64/ia64.md, config/ip2k/ip2k.c,
+ config/iq2000/iq2000-protos.h, config/iq2000/iq2000.c,
+ config/iq2000/iq2000.md, config/m32r/m32r-protos.h,
+ config/m32r/m32r.c, config/m32r/m32r.md, config/m68k/m68k.md,
+ config/m68k/netbsd-elf.h, config/mcore/mcore-elf.h,
+ config/mcore/mcore.c, config/mcore/mcore.h,
+ config/mcore/mcore.md, config/mips/elf.h, config/mips/elf64.h,
+ config/mips/iris5gas.h, config/mips/iris6.h,
+ config/mips/iris6gas.h, config/mips/linux.h,
+ config/mips/mips.md, config/mips/netbsd.h,
+ config/mips/openbsd.h, config/mips/windiss.h,
+ config/mn10300/mn10300.c, config/mn10300/mn10300.h,
+ config/pdp11/pdp11.c, config/rs6000/aix.h,
+ config/rs6000/altivec.h, config/rs6000/darwin.h,
+ config/rs6000/xcoff.h, config/s390/s390-protos.h,
+ config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
+ config/sh/netbsd-elf.h, config/sh/sh.h, config/sh/vxworks.h,
+ config/sparc/sol2.h, config/stormy16/stormy16.h: Update
+ copyright.
+
+2004-01-30 Dara Hazeghi <dhazeghi@yahoo.com>
+
+ PR bootstrap/9249
+ * doc/install.texi: document --enable-__cxa_atexit option.
+ * configure.ac: Disable __cxa_atexit if not supported.
+ * configure: Regenerate.
+
+2004-01-30 Herman A.J. ten Brugge <hermantenbrugge@home.nl>
+
+ PR target/12978
+ * c4x.md: (movstrqi*) Use match_scratch instead of match_dup.
+ Remove movstrqi_small because it conflicts with movstrqi_large.
+
+2004-01-30 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Makefile.in (abs_docdir, abs_srcdir): Define.
+ (doc/%.dvi, doc/gccinstall.dvi): Use $(abs_docdir).
+
+2004-01-30 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR optimization/12147
+ * reload1.c (reload_reg_free_p): RELOAD_OTHER conflicts with
+ RELOAD_FOR_OPADDR_ADDR.
+ (reload_reg_reaches_end_p): RELOAD_FOR_OTHER_ADDRESS register
+ might be reused as RELOAD_FOR_OPADDR_ADDR register.
+
+2004-01-30 Jan Hubicka <jh@suse.cz>
+
+ * reload.c (get_secondary_mem): Fix updating of
+ secondary_memlocs_elim_used.
+
+2004-01-30 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * toplev.c: Include alloc-pool.h.
+ * Makefile.in (toplev.c): Update dependencies.
+
+2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.h: Update copyright.
+
+2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/12818
+ * varasm.c (const_hash_1) <STRING_CST>: Use the
+ address to compute the hash value if flag_writable_strings.
+ (compare_constant) <STRING_CST>: Compare the addresses
+ if flag_writable_strings.
+ (build_constant_desc): Do not copy the expression for a
+ STRING_CST if flag_writable_strings.
+
+2004-01-30 Jan Hubicka <jh@suse.cz>
+
+ PR c++/12850
+ * cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
+ initial pointers.
+ * cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
+ for functions that will be only inlined.
+ (cgraph_mark_function_to_output): Likewise.
+ (cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
+ do not clear function body.
+ * tree-optimize.c (clear_decl_rtl): Use decl_function_context.
+ (tree_rest_of_compilation): Reorganize the logic releasing function
+ body to use callgraph datastructure.
+
+ * reload.c (secondary_memlocs_elim_used): New static variable.
+ (get_secondary_mem): Update it.
+ (find_reloads): Use it.
+
+ * alias.c (reg_base_value): Turn into varray.
+ (reg_base_value_size): Kill.
+ (old_reg_base_value): New deletable varray.
+ (alias_invariant_size): New variable.
+ (REG_BASE_VALUE): Update to use varray.
+ (find_base_value): Likewise.
+ (record_set): Likewise.
+ (record_base_value): Likewise.
+ (memrefs_conflict_p): Likewise.
+ (record_set): Likewise
+ (record_base_value): Likewise.
+ (memrefs_conflict_p): Use alias_invariant_size.
+ (init_alias_analysis): Use varray; set alias_invariant_size;
+ rescale other arrays to be sized by maxreg.
+ (end_alias_analysis): Save reg_base_value; clear alias_invariant_size.
+
+ * basic-block.h (PROP_POSTRELOAD): New macro.
+ (CLEANUP_LOG_LINKS): New.
+ * cfgcleanup.c (cleanup_cfg): Only PROP_LOG_LINKS when asked to.
+ * toplev.c (rest_of_handle_life): Preserve LOG_LINKS trought cleanup_cfg.
+
+ * alloc-pool.c: Include hashtab.h
+ (alloc_pool_descriptor): New structure
+ (alloc_pool_hash): New global variable.
+ (hash_descriptor, eq_descriptor, alloc_pool_descriptor): New.
+ (create_alloc_pool): Update statistics.
+ (free_alloc_pool): Likewise.
+ (pool_alloc): Likewise.
+ (output_info): New structure
+ (print_statistics, dump_alloc_pool_statistics): New function.
+ * alloc-pool.h (alloc_pool_def): Turn name to be constant.
+ (dump_alloc_pool_statistics): Declare.
+ * toplev.c (finalize): Dump statistics.
+
+ * varray.c: Include hashtab.h
+ (varray_descriptor): New structure.
+ (hash_descriptor, eq_descriptor, varray_descriptor,
+ print_statistics): New static functions
+ (varray_init, varray_grow): Update statistics
+ (dump_varray_statistics): New function.
+ * varray.h (dump_varray_statistics): Declare.
+ * toplev.c (finalize): Call it.
+
+2004-01-30 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * configure.ac (gcc_cv_as_dwarf2_debug_line): Enable test for
+ s390*-*-* targets by specifying a 'nop' insn.
+ * configure: Regenerate.
+
+2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/11475
+ * config/sparc/sparc.md (movhi_lo_sum): Tighten predicates.
+
+2004-01-29 Bruce Korb <bkorb@gnu.org>
+
+ * fixinc/inclhack.def(math_exception): bypass only for glibc.
+ (matherr_decl): rename & relocate as exception_structure.
+ This fix must precede the math_exception fix.
+ * fixinc/fixincl.x: regen
+
+2004-01-29 Richard Henderson <rth@redhat.com>
+
+ * c-parse.in (extension): Use itype.
+ (SAVE_EXT_FLAGS): Don't allocate a tree.
+ (RESTORE_EXT_FLAGS): Don't read a tree.
+
+2004-01-29 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ * c-lex.c (c_lex): Rename to...
+ (c_lex_with_flags): Add new parameter to get CPP flags.
+ (c_lex): Thunk to c_lex_with_flags while keeping the old interface.
+ * c-pragma.h (c_lex_with_flags): Declare.
+
+2004-01-29 Roger Sayle <roger@eyesopen.com>
+
+ PR java/13824
+ * tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
+ as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
+ recursion.
+
+2004-01-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.md: Change predicate of a peephole2 pattern from reg_or_0_operand
+ to register_operand.
+
+2004-01-28 Zack Weinberg <zack@codesourcery.com>
+
+ * config/ia64/ia64.md (fetchadd_acq_si, fetchadd_acq_di)
+ (cmpxchg_acq_si, cmpxchg_acq_di): Exchange match_dup and
+ match_operand expressions so that all match_dups appear
+ lexically after their corresponding match_operands.
+
+2004-01-28 Zack Weinberg <zack@codesourcery.com>
+ Jim Wilson <wilson@specifixinc.com>
+
+ * config/ia64/ia64.c (ia64_split_tmode, ia64_split_tmode_move):
+ Rewrite to use POST_INC/POST_DEC/POST_MODIFY instead of a
+ scratch pointer.
+ (ia64_secondary_reload_class): Delete case GR_REGS.
+ * config/ia64/ia64.md (movti, *movti_internal, movtf, *movtf_internal):
+ Do not allocate a scratch register.
+ (reload_inti, reload_outti, reload_intf, reload_outtf): Delete.
+
+2004-01-27 Zack Weinberg <zack@codesourcery.com>
+
+ * ia64.c (ia64_function_arg): When placing HFAs in integer
+ registers, do not special case the mode used for complex
+ types. Do not advance int_regs until the current register
+ is full.
+
+2004-01-28 Jan Hubicka <jh@suse.cz>
+
+ * function.c (allocate_struct_function): Do not initialize expr, emit
+ and varasm.
+ (prepare_function_start): Do it here.
+ * c-parse.in (maybe_type_qual): Do not produce line number notes.
+
+2004-01-28 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/fp-bit.c (pack_d): When using paired doubles to implement
+ a long double, round the high part separately.
+ (unpack_d): Fix the case in which the high part is a power of two
+ and the low part is a nonzero value of the opposite sign.
+
+2004-01-27 Roger Sayle <roger@eyesopen.com>
+
+ * config/pa/pa.c (emit_move_sequence): Check that operand1 is a
+ CONST_INT before using INTVAL.
+
+2004-01-27 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.h (TARGET_DEFAULT): Default to !TARGET_BACKCHAIN.
+ * config/s390/s390.c (s390_return_addr_rtx): Fail for all but current
+ frame if !TARGET_BACKCHAIN.
+ * config/s390/s390.md ("allocate_stack"): Use pattern only if
+ TARGET_BACKCHAIN.
+ * doc/invoke.texi (-mbackchain/-mno-backchain): Document new default.
+
+2004-01-27 Richard Sandiford <rsandifo@redhat.com>
+
+ PR target/7297
+ * except.c (init_eh): Use a 5-word __jbuf for __builtin_setjmp().
+
+2004-01-27 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Remove SUBREG
+ on CQImode and CHImode incoming arguments in register a7.
+ (function_arg): Wrap BLKmode argument in register a7 in a PARALLEL.
+ * config/xtensa/xtensa.h (BLOCK_REG_PADDING): Define.
+ * config/xtensa/xtensa.md (movdi, movdf): Only call force_reg or
+ xtensa_copy_incoming_a7 before reload.
+
+2004-01-27 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * config/arm/arm.c (output_return_instruction): Only restore IP
+ into SP if frame_pointer_needed.
+
+2004-01-27 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (function_arg_pass_by_reference): Return 1
+ for SCmode and DCmode if ARCH32.
+ (sparc_va_arg): Handle SCmode and DCmode by reference if ARCH32.
+ * config/sparc/sparc.h (RETURN_IN_MEMORY): Return 0 for TCmode
+ if ARCH32.
+ (BASE_RETURN_VALUE_REG): Return 32 for all FP modes except TFmode
+ if ARCH32.
+ (BASE_OUTGOING_VALUE_REG): Likewise.
+
+2004-01-27 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/10904
+ PR target/13058
+ * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): New.
+ Forbid mode changes from SImode for lower FP regs if ARCH64.
+
+2004-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (ix86_constant_alignment): Decrease alignment
+ of long string literals from 32 bytes to sizeof (void *) when !-Os
+ and to 1 with -Os.
+
+2004-01-27 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR optimization/13567
+ * cse.c (cse_basic_block): Call cse_insn with a non-null
+ libcall_insn for the last SET insn of a no-confilict block.
+
+2004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * system.h (CHAR_BITFIELD): Delete.
+ (BOOL_BITFIELD): New.
+ * c-decl.c (c_scope): Use BOOL_BITFIELD.
+ * gengtype-lex.l: Recognize BOOL_BITFIELD instead of CHAR_BITFIELD.
+
+2004-01-26 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * doc/tm.texi: Insert some weasel words when LOAD_EXTEND_OP
+ may or may not return non-NIL.
+ * postreload.c (reload_cse_simplify_operands): In LOAD_EXTEND_OP code,
+ check CANNOT_CHANGE_MODE_CLASS
+
+2004-01-26 Jeff Law <law@redhat.com>
+
+ * doc/contrib.texi: Minor cleanup for Paolo Carlini's entry. Add
+ acute accents for Petur Runolfsson's entry.
+
+
+2004-01-26 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ Backport from mainline:
+
+ 2004-01-23 Eric Botcazou <ebotcazou@act-europe.fr>
+ Olivier Hainque <hainque@act-europe.fr>
+
+ * fold-const.c (fold_binary_op_with_conditional_arg): Only
+ build a COMPOUND_EXPR if 'arg' is really a SAVE_EXPR.
+
+2004-01-26 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/13666
+ * config/sparc/sparc.c (function_arg_union_value): New function.
+ (function_arg): Use it to deal with unions.
+ (function_value): Likewise. Define 'regbase' only for ARCH64.
+ Replace a conditional statement by a simpler one.
+
+2004-01-26 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips16_optimize_gp): Delete.
+ (mips_reorg): Don't call it.
+
+2004-01-25 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips_offset_within_object_p): New function.
+ (mips_symbolic_constant_p): Use it in the SYMBOL_SMALL_DATA and
+ SYMBOL_CONSTANT_POOL cases. Also use it for SYMBOL_GENERAL if the
+ ABI has 64-bit pointers and the object file only allows 32-bit symbols.
+
+2004-01-25 Eric Botcazou <ebotcazou@act-europe.fr>
+
+ PR bootstrap/13853
+ * cfgcleanup.c (try_optimize_cfg): Explicitly test against 0.
+
+2004-01-25 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips-protos.h (mips_reg_mode_ok_for_base_p): Delete.
+ (mips_regno_mode_ok_for_base_p): Declare.
+ * config/mips/mips.h (ARG_POINTER_REGNUM): Renumber to 77.
+ (FRAME_POINTER_REGNUM): Renumber to 78.
+ (FIRST_PSEUDO_REGISTER): Update comment accordingly.
+ (BASE_REG_P, GP_REG_OR_PSEUDO_STRICT_P): Delete.
+ (GP_REG_OR_PSEUDO_NONSTRICT_P): Delete.
+ (REGNO_MODE_OK_FOR_BASE_P): Use mips_regno_mode_ok_for_base_p.
+ (REG_MODE_OK_FOR_BASE_P): Likewise.
+ * config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Change
+ entry for 77 to "$arg" and entry for 78 to "$frame".
+ (mips_regno_to_class): Map 77 and 78 to ALL_REGS.
+ (mips_reg_mode_ok_for_base_p): Remove.
+ (mips_regno_mode_ok_for_base_p): New function, derived from old
+ BASE_REG_P macro. Don't enforce the mips16 stack pointer
+ restrictions unless we're being strict.
+ (mips_valid_base_register_p): Use mips_regno_mode_ok_for_base_p.
+
+2004-01-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/frontends.texi: Update copyright.
+ * doc/gcov.texi: Likewise.
+ * doc/gty.texi: Likewise.
+ * doc/sourcebuild.texi: Likewise.
+
+2004-01-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/coff.h: Update copyright.
+ * config/h8300/elf.h: Likewise.
+ * config/h8300/h8300-protos.h: Likewise.
+ * config/h8300/h8300.c: Likewise.
+ * config/h8300/h8300.h: Likewise.
+ * config/h8300/h8300.md: Likewise.
+
+2004-01-24 Hartmut Penner <hpenner@de.ibm.com>
+
+ PR target/13674
+ * config/rs6000/rs6000.md (movdf_hardfloat64): Do not disparage
+ loading into GPR.
+
+2004-01-24 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ PR optimization/12440
+ * loop.c: Include ggc.h.
+ (loop_optimize): Run garbage collector between optimization of loops.
+ * Makefile.in (loop.o): Add GGC_H dependency.
+
+2004-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ * simplify-rtx.c (simplify_relational_operation): Don't
+ simplify address == constant into address + -constant == 0.
+
+2004-01-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * gcc.c (process_command): Don't internationalize the
+ Copyright message.
+ * mips-tfile.c (main): Likewise.
+
+2004-01-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * recog.c: Fix a typo in copyright.
+
+2004-01-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * alias.c, basic-block.h, c-common.c, c-common.h,
+ c-cppbuiltin.c, c-pragma.c, c-pretty-print.c, c-semantics.c,
+ calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
+ combine.c, cppcharset.c, cpptrad.c, cse.c, cselib.c, cselib.h,
+ defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
+ expr.h, fold-const.c, function.h, gcc.c, gcse.c, genattrtab.c,
+ genautomata.c, genconditions.c, genflags.c, gengtype.c,
+ genopinit.c, genrecog.c, gensupport.c, ggc-zone.c, graph.c,
+ haifa-sched.c, integrate.c, langhooks-def.h, langhooks.c,
+ langhooks.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
+ ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
+ rtlanal.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
+ target.h, targhooks.c, toplev.h, tree-inline.c,
+ unwind-dw2-fde.h, unwind-pe.h, unwind.h, varray.c, varray.h:
+ Update copyright.
+
+2004-01-23 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c (xtensa_va_arg): Handle complex values as
+ separate real and imaginary parts.
+ * config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Define.
+
+2004-01-23 Richard Henderson <rth@redhat.com>
+
+ PR opt/12941
+ * combine.c (SHIFT_COUNT_TRUNCATED): Provide default value.
+ (simplify_comparison): Don't simplify (eq (zero_extract c 1 r) 0)
+ if SHIFT_COUNT_TRUNCATED is set.
+
+2004-01-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * fixinc/inclhack.def (alpha___extern_prefix): Renamed to ...
+ (alpha___extern_prefix_sys_stat): ... this.
+ Apply to <sys/mount.h>, too.
+ Tweak to match more variations.
+ * fixinc/tests/base/sys/stat.h: Adapt for new hackname.
+
+ * fixinc/inclhack.def (alpha___extern_prefix,
+ alpha___extern_prefix_standards): New hacks to obey
+ __PRAGMA_EXTERN_PREFIX.
+ * fixinc/tests/base/testing.h [ALPHA___EXTERN_PREFIX_CHECK]: New
+ test.
+ * fixinc/tests/base/standards.h: Likewise.
+
+ * fixincl/inclhack.def (alpha_pthread): Tweak to match more
+ variations.
+ New testcase.
+ * fixinc/tests/base/pthread.h: Handle it.
+
+ * fixinc/fixincl.x: Regenerate.
+
+2004-01-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * fixinc/inclhack.def (bad_lval): Renamed to ...
+ (alpha_bad_lval): ... this.
+ Removed file list.
+ Restrict to alpha*-dec-osf*.
+ * fixinc/fixincl.x: Regenerate.
+ * fixinc/tests/base/libgen.h: Remove, moving test ...
+ * fixinc/tests/base/testing.h: ... here, reflecting new name.
+
+2004-01-23 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * doc/invoke.texi (Optimize Options): Note that --param arguments
+ are subject to change without notice.
+
+2004-01-23 Zack Weinberg <zack@codesourcery.com>
+
+ PR c/13814
+ * c-decl.c (diagnose_mismatched_decls): Also discard a
+ built-in if we encounter an old-style definition with the
+ same name.
+
+2004-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ * config.gcc (powerpc*-*): Clear $with_cpu or $with_tune if it was
+ set to default{32,64}.
+
+2004-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR)
+ [!__powerpc64__]: Corrected to handle kernels with changed ucontext.
+
+2003-11-30 Jan Hubicka <jh@suse.cz>
+
+ * i386.c (ix86_emit_restore_regs_using_mov): Deal with large offsets.
+
+2004-01-23 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (scan_record_type): New function.
+ (function_arg_slotno): Use it to determine which kinds of
+ registers the record can be passed in.
+
+2004-01-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac (enable_werror): Fixed typo.
+ * configure: Regenerate.
+
+2004-01-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config.gcc (mips-sgi-irix6*o32): Removed.
+ * config/mips/iris6-o32-as.h: Likewise.
+ * config/mips/iris6-o32-gas.h: Likewise.
+ * config/mips/iris6-o32.h: Likewise.
+
+2004-01-22 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c (function_arg): Generalize logic so that it
+ handles complex and vector modes.
+
+2004-01-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * c-semantics.c (genrtl_while_stmt, genrtl_do_stmt_1)
+ (genrtl_for_stmt): Remove emit_nop calls.
+
+2004-01-22 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/13713
+ PR target/13324
+ * pa.md (movstrsi_prereload, movstrsi_postreload, movstrdi_prereload,
+ movstrdi_postreload, clrstrsi_prereload, clrstrsi_postreload,
+ clrstrdi_prereload, clrstrdi_postreload): Fix constraints.
+
+2004-01-22 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/arm/arm.c: Include "debug.h".
+ (thumb_pushpop): Take two new arguments. Add some commentary.
+ Output frame information when pushing.
+ (thumb_exit, thumb_unexpanded_epilogue): Update calls to
+ thumb_pushpop.
+ (thumb_output_function_prologue): Likewise. Accumulate a CFA
+ offset, and pass it to thumb_pushpop. Output CFI information.
+ (thumb_expand_prologue): Add some frame-related markers and notes.
+
+2004-01-22 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_frame_info): Allow large frame sizes
+ for TARGET_64BIT.
+ (s390_arg_frame_offset): Change return type to HOST_WIDE_INT.
+ * config/s390/s390-protos.h (s390_arg_frame_offset): Likewise.
+
+2004-01-22 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/tm.texi (CASE_VECTOR_PC_RELATIVE): Mention that the
+ macro need not be defined if jump-tables should contain
+ relative addresses only when -fPIC or -fPIC is in effect.
+
+2004-01-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (function_arg_slotno): Use
+ FLOAT_TYPE_P to detect FP fields in structures.
+ (function_arg_record_value_1): Likewise.
+ (function_arg_record_value_2): Likewise.
+
+2004-01-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/13559
+ * config/sparc/sparc.c (function_arg_record_value_3): Revert
+ to 'word_mode' once the first slot has been filled.
+
+2004-01-22 Olivier Hainque <hainque@act-europe.fr>
+
+ * config/sparc/sparc.c (function_arg_record_value_1): Fix
+ computation of the number of integer registers required.
+
+2004-01-22 Hartmut Penner <hpenner@de.ibm.com>
+
+ * gcc/config/rs6000/rs6000.c (function_arg) Handle
+ vector register special in function without prototype.
+ (function_arg_advance): Vector parameters get always
+ GPRs allocated for the linux64 target.
+
+2004-01-21 Andrew Pinski <apinski@apple.com>
+
+ PR target/13785
+ * config/rs6000/rs6000.md (call_value): Force operand
+ 1 not operand 0 into a register.
+
+2004-01-21 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa-protos.h: Update copyright.
+ * pa.h: Likewise.
+ * pa.md: Likewise.
+
+ * fixinc/inclhack.def (hpux10_stdio_declarations, ultrix_const3,
+ ultrix_locale, ultrix_stdlib, ultrix_strings, ultrix_sys_time,
+ ultrix_unistd): New hacks.
+ * fixinc/tests/base/stdio.h (HPUX10_STDIO_DECLARATIONS_CHECK,
+ ULTRIX_CONST2_CHECK): Add checks.
+ * fixinc/tests/base/stdlib.h (ULTRIX_STDLIB_CHECK): Likewise.
+ * fixinc/tests/base/strings.h (ULTRIX_STRINGS2_CHECK): Likewise.
+ * fixinc/tests/base/unistd.h (ULTRIX_UNISTD_CHECK): Likewise.
+ * fixinc/tests/base/sys/time.h (ULTRIX_SYS_TIME_CHECK): Likewise.
+ * fixinc/tests/base/locale.h: New file.
+ * fixincl.x: Rebuilt.
+
+2004-01-21 Andreas Jaeger <aj@suse.de>
+ Michael Matz <matz@suse.de>
+
+ * doc/extend.texi (Extended Asm): Clarify memory clobber.
+
+2004-01-21 Zack Weinberg <zack@codesourcery.com>
+
+ * c-decl.c (merge_decls): Kill different_binding_level and
+ different_tu arguments; simplify throughout.
+ (duplicate_decls): Likewise.
+ (pushdecl, merge_translation_unit_decls): Update calls to
+ duplicate_decls.
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ PR bootstrap/12730
+ * configure.ac: Delete definition and subsitution of docdir.
+ Add info, man, srcman and srcinfo to target hooks. Create doc/
+ directory.
+ * configure: Regenerate.
+ * Makefile.in: Don't substitute docdir and delete all references
+ throughout.
+ (MAKEINFOFLAGS): Define.
+ (stmp-docobjdir): Delete.
+ (INFOFILES, MANFILES): Define.
+ (info): Call lang.info, srcinfo and lang.srcinfo.
+ (generated-manpages): Call lang.man, srcman and lang.srcman.
+ (srcinfo, srcman): New rules to copy back files to source directory.
+ (doc/%.info, doc/%.dvi, doc/%.1, doc/%.7): New implict rule.
+ (install-man): Revamp rule.
+ (clean): Update dvi directory.
+ (distclean): Delete TAGS from front end directorys.
+ (maintainer-clean): Delete all document files in source directory.
+
+ objc/Make-lang.in (objc.man, objc.info): Dummy entries.
+ (objc.srcman, objc.srcinfo): Likewise.
+
+2004-01-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * Makefile.in (pretty-print.o): Depend on $(CONFIG_H) and
+ $(SYSTEM_H).
+ (print-rtl1.o): Depend on $(SYSTEM_H).
+
+2004-01-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa-protos.h (compute_frame_size): Use HOST_WIDE_INT for frame sizes.
+ * pa.c (store_reg, store_reg_modify, load_reg, set_reg_plus_d):
+ Likewise. Handle frames larger than 0x7fffffff on 64-bit ports.
+ (emit_move_sequence): Check scratch_reg first in various if statements.
+ Extend source simplification to handle all 64-bit CONST_INTs.
+ (pa_output_function_prologue): Use HOST_WIDE_INT_PRINT_DEC for printing
+ frame size.
+ (hppa_expand_prologue, hppa_expand_epilogue): Use HOST_WIDE_INT for
+ frame offset calculations.
+ * pa.h (NEW_HP_ASSEMBLER): Add comment.
+ (MAX_LEGIT_64BIT_CONST_INT, MIN_LEGIT_64BIT_CONST_INT,
+ LEGITIMATE_64BIT_CONST_INT_P): Define.
+ (LEGITIMATE_CONSTANT_P): Use LEGITIMATE_64BIT_CONST_INT_P. Treat
+ any CONST_INT as legitimate during and after reload.
+ (VAL_32_BITS_P, INT_32_BITS): Define.
+ (LEGITIMIZE_RELOAD_ADDRESS): Handle large frame offsets.
+
+2004-01-21 Alan Modra <amodra@bigpond.net.au>
+
+ * config/rs6000/sysv4.h (DWARF2_FRAME_REG_OUT): Define.
+ * dwarf2out.c (output_cfi): Map regs using DWARF2_FRAME_REG_OUT.
+ * doc/tm.texi (DWARF_FRAME_REGNUM, DWARF2_FRAME_REG_OUT): Document.
+
+2004-01-20 Geoffrey Keating <geoffk@apple.com>
+
+ * alias.c (new_alias_set): Mark last_alias_set for PCH.
+ (get_varargs_alias_set): Rename 'set' to 'varargs_set' and mark it
+ for PCH.
+ (get_frame_alias_set): Likewise, except rename it to 'frame_set'.
+ * config/rs6000/rs6000.c (rs6000_sr_alias_set): Mark for PCH.
+ (get_TOC_alias_set): Mark 'set' for PCH.
+
+2004-01-20 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips_load_call_address): Make the call insn
+ use $gp if it could be calling a lazy binding stub.
+
+2004-01-20 Denis Chertykov <denisc@overta.ru>
+
+ PR bootstrap/13735
+ * config/avr/avr.h (BASE_REG_CLASS): Don't permit to use X
+ register as pointer after reload.
+
+2004-01-20 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/13557
+ * config/sparc/sparc.c (function_arg): Reorder the cases.
+
+2004-01-19 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Makefile.in (target_noncanonical, program_transform_name): Use
+ immediate define instead of deferred.
+ (GCC_INSTALL_NAME, GCC_TARGET_INSTALL_NAME, CPP_INSTALL_NAME,
+ PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, GCOV_INSTALL_NAME,
+ GCCBUG_INSTALL_NAME): Define via a immediate $(shell) instead of
+ deferred backquote.
+
+2004-01-19 Richard Henderson <rth@redhat.com>
+
+ * config/alpha/alpha.c (aligned_memory_operand): Check MEM_ALIGN,
+ don't check memory mode.
+ (unaligned_memory_operand): Likewise.
+ (reload_inqi, reload_inhi, reload_outqi, reload_outhi): Don't
+ abort for op0 not MEM.
+
+ * config/alpha/alpha.c (alpha_expand_mov_nobwx): If the destination
+ is not a reg, copy to a scratch first.
+ (aligned_loadqi, aligned_loadhi, unaligned_loadqi, unaligned_loadhi,
+ unaligned_loadqi_le, unaligned_loadqi_be, unaligned_loadhi_le,
+ unaligned_loadhi_be): Expect op0 in DImode; don't SUBREG.
+ (reload_inqi, reload_inhi): Fix mode of op0.
+ (reload_inqi_help, reload_inhi_help, reload_outqi_help,
+ reload_outhi_help): Likewise. Use define_insn_and_split.
+
+ * config/alpha/alpha.md (call peepholes): Check for REG_NORETURN
+ as well as $29 dead.
+
+2004-01-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): New. Emit
+ "tls_object" for thread-local objects.
+ * config/sparc/sparc.c (sparc_elf_asm_named_section): Emit
+ "#tls" for thread-local sections.
+ * configure.ac (thread-local checks): Specify --fatal-warnings in
+ every binutils-specific checks. For sparc*-*-*, test whether the
+ OS is Solaris and the tools are native and act accordingly.
+ * configure: Rebuild.
+
+2004-01-19 Jeff Law <law@redhat.com>
+
+ * contrib.texi: Update Paolo Carlini's entry. New entries for
+ Jerry Quinn and Petur Runolfsson.
+
+2004-01-19 Richard Henderson <rth@redhat.com>
+
+ * alpha.h (HARD_REGNO_MODE_OK): Disallow SImode in FP regs.
+ * alpha.md (UNSPEC_NT_LDA): Remove.
+ (UNSPEC_CVTLQ, cvtlq): New.
+ (extendsidi2_1): Rename from extendsidi2_nofix; remove f/f.
+ (extendsidi2_fix): Remove.
+ (extendsidi2 splitter): Use cvtlq.
+ (extendsidi2 fp peepholes): Remove.
+ (cvtql): Use SFmode instead of SImode.
+ (fix_trunc?fsi): Update to match.
+ (floatsisf2_ieee, floatsisf2, floatsidf2_ieee, floatsidf2): New.
+ (movsi): Rename from movsi_nofix, remove f alternatives.
+ (movsi_nt_vms): Similarly.
+ (movsi_fix, movsi_nt_vms_fix): Remove.
+ (nt_lda): Remove.
+ * alpha.c (alpha_expand_prologue): Use adddi3, not nt_lda.
+
+2004-01-19 Jan Hubicka <jh@suse.cz>
+
+ * cgraph.c (cgraph_remove_node): Fix removal from linked list.
+ * cgraphunit.c (cgraph_finalize_compilation_unit): Clear next_needed
+ list.
+ (cgraph_remove_unreachable_nodes): New function
+ (cgraph_decide_inlining_of_small_function): Fix pasto.
+ (cgraph_decide_inlining_incrementally): Fix pasto.
+ (cgrpah_decide_inlining): Likewise; remove unreachable nodes.
+
+2004-01-18 Roger Sayle <roger@eyesopen.com>
+
+ * builtins.c (expand_builtin_expect_jump): Fix thinko of reusing
+ live "next" variable, which can lead to an infinite loop.
+
+2004-01-18 Daniel Jacobowitz <drow@mvista.com>
+
+ * final.c (final_scan_insn): Make non-static again.
+ * output.h (final_scan_insn): Re-add prototype.
+ * config/arc/arc.c (arc_output_function_epilogue): Add NULL
+ to final_scan_insn call.
+ * config/cris/cris.c (cris_target_asm_function_epilogue): Likewise.
+ * config/mips/mips.c (mips_output_conditional_branch): Likewise.
+ * config/pa/pa.c (output_lbranch, output_call): Likewise.
+ * config/sh/sh.c (print_slot): Likewise.
+ * config/sparc/sparc.c (sparc_nonflat_function_epilogue): Likewise.
+ (output_sibcall, sparc_flat_function_epilogue): Likewise.
+
+2004-01-18 Jan Hubicka <jh@suse.cz>
+
+ * basic-block.h (try_redirect_by_replacing_jump): Declare.
+ * cfgcleanup.c (try_optimize_cfg): Use it.
+ * cfgrtl.c (try_redirect_by_replacing_jump): Export.
+ (rtl_redirect_edge_and_branch, cfg_layout_redirect_edge_and_branch):
+ Kill hack.
+ (cfg_layout_merge_blocks): Use try_redirect_by_replacing_jump.
+
+2004-01-18 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/rs6000/altivec.h: Wrap C++ functions in extern "C++"
+ block.
+
+ * config/rs6000/rs6000.c (rs6000_special_round_type_align):
+ Check for NULL in the chain and remove repeated code.
+
+2004-01-18 Jan Hubicka <jh@suse.cz>
+
+ * coverage.c (checksum_string): Rename to ...
+ (coverage_checksum_string): ... this one, Use crc32_string; recognize
+ names containing random number and zero the number out in order to get
+ match.
+
+2004-01-18 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips_got_alias_set): Mark for PCH.
+
+2004-01-18 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/c-tree.texi, doc/cpp.texi, doc/extend.texi,
+ doc/frontends.texi, doc/gcov.texi, doc/gty.texi, doc/install.texi,
+ doc/invoke.texi, doc/libgcc.texi, doc/md.texi, doc/rtl.texi,
+ doc/sourcebuild.texi, doc/standards.texi, doc/tm.texi,
+ doc/trouble.texi: Remove trailing whitespace.
+
+2004-01-18 Richard Sandiford <rsandifo@redhat.com>
+
+ PR target/7618
+ * config/mips/mips.c: Include cfglayout.h.
+ (TARGET_ASM_OUTPUT_MI_THUNK, TARGET_ASM_CAN_OUTPUT_MI_THUNK): Define.
+ (mips_unspec_offset_high): Add temporary register argument.
+ (mips_load_call_address): New function, split out from...
+ (mips_expand_call): ...here.
+ (mips_output_cplocal): New function.
+ (mips_output_function_prologue, mips_output_function_epilogue): Use it.
+ (mips_emit_loadgp): New function, split out from...
+ (mips_expand_prologue): ...here.
+ (mips_output_mi_thunk): New function.
+
+2004-01-17 Roger Sayle <roger@eyesopen.com>
+
+ * builtins.c (expand_builtin_expect_jump): Fix mistake in my
+ last patch. Use XEXP (x, 0) to get a LABEL_REF's CODE_LABEL.
+
+2004-01-17 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/rs6000/rs6000.c (rs6000_special_round_type_align):
+ Return type is unsigned int not int.
+ * config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
+ Likewise.
+
+2004-01-18 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/contrib.texi, doc/cppenv.texi, doc/extend.texi,
+ doc/install.texi, doc/invoke.texi, doc/tm.texi: Consistently use
+ "GNU/Linux" and "Microsoft Windows" terminology.
+
+2004-01-18 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/c-tree.texi, doc/compat.texi, doc/cpp.texi,
+ doc/cppopts.texi, doc/extend.texi, doc/install.texi,
+ doc/interface.texi, doc/invoke.texi, doc/libgcc.texi, doc/md.texi,
+ doc/objc.texi, doc/rtl.texi, doc/tm.texi, doc/trouble.texi: Use
+ @smallexample instead of @example.
+
+2004-01-17 Ziemowit Laski <zlaski@apple.com>
+
+ * objc/objc-act.c (build_objc_method_call): Use target
+ hooks instead of macros to determine if ..._stret
+ dispatchers should be used (NeXT runtime only).
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * rtl.h (emit_insn_before_sameloc, emit_jump_insn_before_sameloc)
+ (emit_call_insn_before_sameloc, emit_insn_after_sameloc)
+ (emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): New
+ macros.
+ * reload1.c (emit_reload_insns): Use them.
+ * emit-rtl.c (emit_insn_before_sameloc, emit_insn_after_sameloc)
+ (emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): Check
+ for NULL PATTERN.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * final.c (SEEN_BB, SEEN_NOTE, SEEN_EMITTED): Define.
+ (final_scan_insn): Update to take an additional SEEN argument. Emit
+ a line note after the prologue. Make static.
+ (line_note_exists): Remove.
+ (final): Don't initialize line_note_exists. Update call to
+ final_scan_insn.
+ * output.h (final_scan_insn): Remove prologue.
+ * function.c (set_insn_locators): Update comment.
+ (thread_prologue_and_epilogue_insns): Add a comment.
+
+2004-01-17 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/invoke.texi, doc/standards.texi: Point to 3.4 version of
+ c99status.html.
+
+2004-01-17 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR target/10781
+ * config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
+ Prototype.
+ * config/rs6000/rs6000.c (rs6000_special_round_type_align):
+ New function.
+ * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Use it.
+ * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Likewise.
+ * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Likewise.
+
+2004-01-17 Jan Hubicka <jh@suse.cz>
+
+ * toplev.c (rest_of_handle_reorder_blocks): Fix pasto in previous
+ commit.
+
+ * toplev.c (HAVE_conditional_execution): Provide default.
+ (rest_of_handle_reorder_blocks): For conditional_execution target
+ update liveness once after all transformations
+ (rest_of_compilation): Do crossjumping before ce3.
+
+2004-01-17 J. Brobecker <brobecker@gnat.com>
+
+ * dwarf2out.c (is_subrange_type): Renamed from is_ada_subrange_type().
+ Remove checks for is_ada() and TREE_UNSIGNED.
+ (subrange_type_die): Emit a byte_size attribute if the subrange
+ type size is different from the base type size.
+ (modified_type_die): Replace call to is_ada_subrange_type() by
+ call to is_subrange_type().
+
+2004-01-16 Mark Mitchell <mark@codesourcery.com>
+
+ * configure.ac: Do not do internal checking or -Werror by default.
+ * configure: Regenerated.
+
+ * doc/include/gcc-common.texi (DEVELOPMENT): @clear it.
+ * version.c (version_string): Mark as prerelease.
+
+2004-01-16 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/sh/sh.c: Include ggc.h.
+
+2004-01-17 Jan Hubicka <jh@suse.cz>
+
+ * c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and
+ builtin_expect specially.
+ * params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100.
+ (PARAM_LARGE_FUNCTION_INSNS): Set to 3000.
+ * invoke.texi (max-inline-insns-single): Set to 100.
+ (large-function-insns): Set to 3000.
+
2004-01-16 Jan Hubicka <jh@suse.cz>
* i386.md (load_tp_di): Fix pasto.
@@ -39,11 +2352,11 @@
2004-01-16 Jan Hubicka <jh@suse.cz>
- PR opt/11350
- * cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
+ PR opt/11350
+ * cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
after reload.
- * cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
- rtl_try_redirect_by_replacing_branch): Likewise.
+ * cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
+ rtl_try_redirect_by_replacing_branch): Likewise.
2004-01-15 Geoffrey Keating <geoffk@apple.com>
@@ -1127,6 +3440,10 @@
* toplev.c (output_file_directive): Don't use
ASM_OUTPUT_MAIN_SOURCE_FILENAME.
+2004-01-05 Steven Bosscher <s.bosscher@student.tudelft.nl>
+
+ * toplev.c: Fix broken checkin of 2003-12-30.
+
2004-01-05 Daniel Berlin <dberlin@dberlin.org>
* ggc-zone.c: Remove everything in #ifdef USING_MALLOC_PAGE_GROUPS
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index b099e71fbd3..1f691ae978a 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -2,7 +2,7 @@
# Run 'configure' to generate Makefile from Makefile.in
# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-# 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
#This file is part of GCC.
@@ -60,10 +60,10 @@ MAKEOVERRIDES =
build=@build@
host=@host@
target=@target@
-target_noncanonical=@target_noncanonical@
+target_noncanonical:=@target_noncanonical@
# Sed command to transform gcc to installed name.
-program_transform_name = @program_transform_name@
+program_transform_name := @program_transform_name@
# -----------------------------
# Directories used during build
@@ -71,8 +71,11 @@ program_transform_name = @program_transform_name@
# Directory where sources are, from where we are.
srcdir = @srcdir@
-docobjdir = @docobjdir@
-docdir = $(srcdir)/doc
+docdir = @srcdir@/doc
+
+# Directory where sources are, absolute.
+abs_srcdir = @abs_srcdir@
+abs_docdir = @abs_srcdir@/doc
# Top build directory, relative to here.
top_builddir = ..
@@ -235,7 +238,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL@
MAKEINFO = @MAKEINFO@
-MAKEINFOFLAGS =
+MAKEINFOFLAGS = --no-split
TEXI2DVI = texi2dvi
TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl
POD2MAN = pod2man --center="GNU" --release="gcc-$(version)"
@@ -525,7 +528,7 @@ EXTRA_OBJS = @extra_objs@
# List of extra object files that should be compiled and linked with
# the gcc driver.
-EXTRA_GCC_OBJS =@host_extra_gcc_objs@
+EXTRA_GCC_OBJS =@extra_gcc_objs@
# List of additional header files to install.
EXTRA_HEADERS =@extra_headers_list@
@@ -594,13 +597,13 @@ BUILD_LDFLAGS=$(LDFLAGS)
BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
# Actual name to use when installing a native compiler.
-GCC_INSTALL_NAME = `echo gcc|sed '$(program_transform_name)'`
-GCC_TARGET_INSTALL_NAME = $(target_noncanonical)-`echo gcc|sed '$(program_transform_name)'`
-CPP_INSTALL_NAME = `echo cpp|sed '$(program_transform_name)'`
-PROTOIZE_INSTALL_NAME = `echo protoize|sed '$(program_transform_name)'`
-UNPROTOIZE_INSTALL_NAME = `echo unprotoize|sed '$(program_transform_name)'`
-GCOV_INSTALL_NAME = `echo gcov|sed '$(program_transform_name)'`
-GCCBUG_INSTALL_NAME = `echo gccbug|sed '$(program_transform_name)'`
+GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
+GCC_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcc|sed '$(program_transform_name)')
+CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
+PROTOIZE_INSTALL_NAME := $(shell echo protoize|sed '$(program_transform_name)')
+UNPROTOIZE_INSTALL_NAME := $(shell echo unprotoize|sed '$(program_transform_name)')
+GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
+GCCBUG_INSTALL_NAME := $(shell echo gccbug|sed '$(program_transform_name)')
# Setup the testing framework, if you have one
EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
@@ -681,16 +684,6 @@ PRETTY_PRINT_H = pretty-print.h input.h $(OBSTACK_H)
DIAGNOSTIC_H = diagnostic.h diagnostic.def $(PRETTY_PRINT_H)
C_PRETTY_PRINT_H = $(PRETTY_PRINT_H) $(C_COMMON_H) $(TREE_H)
-# target overrides
-ifneq ($(tmake_file),)
-include $(tmake_file)
-endif
-
-# host overrides
-ifneq ($(xmake_file),)
-include $(xmake_file)
-endif
-
#
# Now figure out from those variables how to compile and link.
@@ -950,6 +943,19 @@ ifneq ($(LANG_MAKEFRAGS),)
include $(LANG_MAKEFRAGS)
endif
+# target and host overrides must follow the per-language makefile fragments
+# so they can override or augment language-specific variables
+
+# target overrides
+ifneq ($(tmake_file),)
+include $(tmake_file)
+endif
+
+# host overrides
+ifneq ($(xmake_file),)
+include $(xmake_file)
+endif
+
#
# -----------------------------
@@ -1054,7 +1060,7 @@ all.cross: native gcc-cross cpp$(exeext) specs \
$(LIBGCC) $(EXTRA_PARTS) lang.all.cross doc
# This is what must be made before installing GCC and converting libraries.
start.encap: native xgcc$(exeext) cpp$(exeext) specs \
- xlimits.h lang.start.encap @GENINSRC@ srcextra lang.srcextra
+ xlimits.h lang.start.encap @GENINSRC@ srcextra
# These can't be made until after GCC can run.
rest.encap: $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap
# This is what is made with the host's compiler
@@ -1270,7 +1276,9 @@ c-parse.o : c-parse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(GGC_H) intl.h $(C_TREE_H) input.h flags.h toplev.h output.h $(CPPLIB_H) \
varray.h gt-c-parse.h
-srcextra: c-parse.y c-parse.c gengtype-lex.c gengtype-yacc.c gengtype-yacc.h
+srcextra: gcc.srcextra lang.srcextra
+
+gcc.srcextra: c-parse.y c-parse.c gengtype-lex.c gengtype-yacc.c gengtype-yacc.h
-cp -p $^ $(srcdir)
c-parse.c: c-parse.y
@@ -1521,7 +1529,7 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_
graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \
$(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
langhooks.h insn-flags.h cfglayout.h real.h cfgloop.h \
- hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h $(COVERAGE_H)
+ hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h $(COVERAGE_H) alloc-pool.h
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-DTARGET_NAME=\"$(target_noncanonical)\" \
-c $(srcdir)/toplev.c $(OUTPUT_OPTION)
@@ -1668,7 +1676,7 @@ value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H)
loop.o : loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h $(LOOP_H) \
insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \
real.h $(PREDICT_H) $(BASIC_BLOCK_H) function.h cfgloop.h \
- toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H)
+ toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H) $(GGC_H)
doloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \
$(LOOP_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h \
cfgloop.h
@@ -1676,7 +1684,7 @@ unroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) insn-co
function.h $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H) $(PARAMS_H) \
cfgloop.h
-alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h
+alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h $(HASHTAB_H)
flow.o : flow.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
flags.h insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \
$(RECOG_H) function.h except.h $(EXPR_H) $(GGC_H) $(TM_P_H)
@@ -1824,7 +1832,7 @@ ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
cfgloop.h
params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) toplev.h
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
-pretty-print.o: pretty-print.c $(PRETTY_PRINT_H)
+pretty-print.o: $(CONFIG_H) $(SYSTEM_H) pretty-print.c $(PRETTY_PRINT_H)
$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) $(GGC_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \
@@ -2262,8 +2270,8 @@ $(BUILD_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYST
sed -e 's/config[.]h/bconfig.h/' $(srcdir)/rtl.c > $(BUILD_PREFIX)rtl.c
$(CC_FOR_BUILD) -c $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)rtl.c $(OUTPUT_OPTION)
-print-rtl1.o: $(srcdir)/print-rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) \
- $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H)
+print-rtl1.o: $(srcdir)/print-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(GTM_H) $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H)
rm -f print-rtl1.c
sed -e 's/config[.]h/bconfig.h/' $(srcdir)/print-rtl.c > print-rtl1.c
$(CC_FOR_BUILD) -c $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(INCLUDES) print-rtl1.c $(OUTPUT_OPTION)
@@ -2303,10 +2311,6 @@ intl.o: intl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h Makefile
-DLOCALEDIR=\"$(localedir)\" \
-c $(srcdir)/intl.c $(OUTPUT_OPTION)
-# Make-lang.in should add dependencies of po-generated on any generated
-# files which need to be scanned by gettext (usually Yacc-generated parsers).
-po-generated: c-parse.c options.c
-
#
# Remake cpp and protoize.
@@ -2609,13 +2613,15 @@ stmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs
#
# Remake the info files.
-stmp-docobjdir:
- -test -d $(docobjdir) || mkdir $(docobjdir)
- $(STAMP) stmp-docobjdir
-
doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug
-info:: $(docobjdir)/cpp.info $(docobjdir)/gcc.info $(docobjdir)/gccint.info \
- $(docobjdir)/gccinstall.info $(docobjdir)/cppinternals.info
+
+INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \
+ doc/gccinstall.info doc/cppinternals.info
+
+info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo
+
+srcinfo: $(INFOFILES)
+ -cp -p $^ $(srcdir)/doc
TEXI_CPP_FILES = cpp.texi fdl.texi cppenv.texi cppopts.texi
@@ -2639,51 +2645,55 @@ TEXI_CPPINT_FILES = cppinternals.texi
# patterns. To use them, put each of the specific target with with their
# specific dependencies but no build commands.
-$(docobjdir)/cpp.info: $(TEXI_CPP_FILES)
-$(docobjdir)/gcc.info: $(TEXI_GCC_FILES)
-$(docobjdir)/gccint.info: $(TEXI_GCCINT_FILES)
-$(docobjdir)/cppinternals.info: $(TEXI_CPPINT_FILES)
+doc/cpp.info: $(TEXI_CPP_FILES)
+doc/gcc.info: $(TEXI_GCC_FILES)
+doc/gccint.info: $(TEXI_GCCINT_FILES)
+doc/cppinternals.info: $(TEXI_CPPINT_FILES)
-$(docobjdir)/%.info: %.texi stmp-docobjdir
+doc/%.info: %.texi
if [ x$(BUILD_INFO) = xinfo ]; then \
$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \
-I $(docdir)/include -o $@ $<; \
fi
# Duplicate entry to handle renaming of gccinstall.info
-$(docobjdir)/gccinstall.info: $(TEXI_GCCINSTALL_FILES) stmp-docobjdir
+doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
if [ x$(BUILD_INFO) = xinfo ]; then \
$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \
-I $(docdir)/include -o $@ $<; \
fi
-$(docobjdir)/cpp.dvi: $(TEXI_CPP_FILES)
-$(docobjdir)/gcc.dvi: $(TEXI_GCC_FILES)
-$(docobjdir)/gccint.dvi: $(TEXI_GCCINT_FILES)
-$(docobjdir)/cppinternals.dvi: $(TEXI_CPPINT_FILES)
+doc/cpp.dvi: $(TEXI_CPP_FILES)
+doc/gcc.dvi: $(TEXI_GCC_FILES)
+doc/gccint.dvi: $(TEXI_GCCINT_FILES)
+doc/cppinternals.dvi: $(TEXI_CPPINT_FILES)
-dvi:: $(docobjdir)/gcc.dvi $(docobjdir)/gccint.dvi \
- $(docobjdir)/gccinstall.dvi $(docobjdir)/cpp.dvi \
- $(docobjdir)/cppinternals.dvi
+dvi:: doc/gcc.dvi doc/gccint.dvi doc/gccinstall.dvi doc/cpp.dvi \
+ doc/cppinternals.dvi
-$(docobjdir)/%.dvi: %.texi stmp-docobjdir
- $(TEXI2DVI) -I $(docdir) -I $(docdir)/include -o $@ $<
+doc/%.dvi: %.texi
+ $(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
# Duplicate entry to handle renaming of gccinstall.dvi
-$(docobjdir)/gccinstall.dvi: $(TEXI_GCCINSTALL_FILES) stmp-docobjdir
- $(TEXI2DVI) -I $(docdir) -I $(docdir)/include -o $@ $<
+doc/gccinstall.dvi: $(TEXI_GCCINSTALL_FILES)
+ $(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
+
+MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 doc/fsf-funding.7
-generated-manpages:: $(docobjdir)/gcov.1 $(docobjdir)/cpp.1 \
- $(docobjdir)/gcc.1 $(docobjdir)/gfdl.7 $(docobjdir)/gpl.7 \
- $(docobjdir)/fsf-funding.7
+generated-manpages: man
-$(docobjdir)/%.1: %.pod stmp-docobjdir
+man: $(MANFILES) lang.man @GENINSRC@ srcman lang.srcman
+
+srcman: $(MANFILES)
+ -cp -p $^ $(srcdir)/doc
+
+doc/%.1: %.pod
$(STAMP) $@
-($(POD2MAN) --section=1 $< > $(@).T$$$$ && \
mv -f $(@).T$$$$ $@) || \
(rm -f $(@).T$$$$ && exit 1)
-$(docobjdir)/%.7: %.pod stmp-docobjdir
+doc/%.7: %.pod
$(STAMP) $@
-($(POD2MAN) --section=7 $< > $(@).T$$$$ && \
mv -f $(@).T$$$$ $@) || \
@@ -2771,8 +2781,7 @@ clean: mostlyclean lang.clean
-rm -f config.h tconfig.h bconfig.h tm_p.h tm.h
-rm -f cs-*
-rm -rf libgcc
- -rm -f *.dvi
- -rm -f */*.dvi
+ -rm -f doc/*.dvi
# Delete the include directory.
-rm -rf include
# Delete files used by the "multilib" facility (including libgcc subdirs).
@@ -2822,10 +2831,7 @@ maintainer-clean:
-rm -f $(srcdir)/c-parse.y $(srcdir)/c-parse.c
-rm -f cpp.??s cpp.*aux
-rm -f gcc.??s gcc.*aux
- -rm -f $(docobjdir)/cpp.info* $(docobjdir)/gcc.info* $(docobjdir)/gccint.info*
- -rm -f $(docobjdir)/cppinternals.info*
- -rm -f $(docobjdir)/gcov.1 $(docobjdir)/cpp.1 $(docobjdir)/gcc.1
- -rm -f $(docobjdir)/fsf-funding.7 $(docobjdir)/gfdl.7 $(docobjdir)/gpl.7
+ -rm -f $(docdir)/*.info $(docdir)/*.1 $(docdir)/*.7 $(docdir)/*.dvi
#
# Entry points `install' and `uninstall'.
# Also use `install-collect2' to install collect2 when the config files don't.
@@ -2935,7 +2941,7 @@ install-info:: doc installdirs \
$(DESTDIR)$(infodir)/gccinstall.info \
$(DESTDIR)$(infodir)/gccint.info
-$(DESTDIR)$(infodir)/%.info: $(docobjdir)/%.info installdirs
+$(DESTDIR)$(infodir)/%.info: doc/%.info installdirs
rm -f $@
if [ -f $< ]; then \
for f in $(<)*; do \
@@ -2953,25 +2959,33 @@ $(DESTDIR)$(infodir)/%.info: $(docobjdir)/%.info installdirs
else true; fi;
# Install the man pages.
-install-man: installdirs $(GENERATED_MANPAGES) lang.install-man
- -rm -f $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/cpp$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/cpp.1 $(DESTDIR)$(man1dir)/cpp$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/cpp$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/gcov$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/gcov.1 $(DESTDIR)$(man1dir)/gcov$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/gcov$(man1ext)
- -rm -f $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
- -$(INSTALL_DATA) $(docobjdir)/fsf-funding.7 $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
- -chmod a-x $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
- -rm -f $(DESTDIR)$(man7dir)/gfdl$(man7ext)
- -$(INSTALL_DATA) $(docobjdir)/gfdl.7 $(DESTDIR)$(man7dir)/gfdl$(man7ext)
- -chmod a-x $(DESTDIR)$(man7dir)/gfdl$(man7ext)
- -rm -f $(DESTDIR)$(man7dir)/gpl$(man7ext)
- -$(INSTALL_DATA) $(docobjdir)/gpl.7 $(DESTDIR)$(man7dir)/gpl$(man7ext)
- -chmod a-x $(DESTDIR)$(man7dir)/gpl$(man7ext)
+install-man: installdirs lang.install-man \
+ $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) \
+ $(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \
+ $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \
+ $(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \
+ $(DESTDIR)$(man7dir)/gfdl$(man7ext) \
+ $(DESTDIR)$(man7dir)/gpl$(man7ext)
+
+$(DESTDIR)$(man7dir)/%$(man7ext): doc/%.7
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
+
+$(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext): doc/gcc.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
+
+$(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext): doc/cpp.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
+
+$(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext): doc/gcov.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
# Install the library.
install-libgcc: libgcc.mk libgcc.a libgcov.a installdirs
@@ -3842,8 +3856,8 @@ install-po:
# fairly modern (POSIX-compliant) awk.
# The .pot file is left in the build directory.
$(PACKAGE).pot: po/$(PACKAGE).pot
-po/$(PACKAGE).pot: force
+po/$(PACKAGE).pot: force options.c
-test -d po || mkdir po
- $(MAKE) po-generated
+ $(MAKE) srcextra
AWK=$(AWK) $(SHELL) $(srcdir)/po/exgettext \
$(XGETTEXT) $(PACKAGE) $(srcdir)
diff --git a/gcc/README.Portability b/gcc/README.Portability
index 2724f2a53fd..32a33e27bec 100644
--- a/gcc/README.Portability
+++ b/gcc/README.Portability
@@ -10,7 +10,7 @@ This knowledge until know has been sparsely spread around, so I
thought I'd collect it in one useful place. Please add and correct
any problems as you come across them.
-I'm going to start from a base of the ISO C89 standard, since that is
+I'm going to start from a base of the ISO C90 standard, since that is
probably what most people code to naturally. Obviously using
constructs introduced after that is not a good idea.
diff --git a/gcc/ada/5fsystem.ads b/gcc/ada/5fsystem.ads
index 05351d8e932..165a8780497 100644
--- a/gcc/ada/5fsystem.ads
+++ b/gcc/ada/5fsystem.ads
@@ -7,7 +7,7 @@
-- S p e c --
-- (SGI Irix, o32 ABI) --
-- --
--- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2004 Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -124,7 +124,7 @@ private
Exit_Status_Supported : constant Boolean := True;
Fractional_Fixed_Ops : constant Boolean := False;
Frontend_Layout : constant Boolean := False;
- Functions_Return_By_DSP : constant Boolean := True;
+ Functions_Return_By_DSP : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
OpenVMS : constant Boolean := False;
@@ -138,9 +138,9 @@ private
Support_Long_Shifts : constant Boolean := True;
Suppress_Standard_Library : constant Boolean := False;
Use_Ada_Main_Program_Name : constant Boolean := False;
- ZCX_By_Default : constant Boolean := True;
+ ZCX_By_Default : constant Boolean := False;
GCC_ZCX_Support : constant Boolean := False;
- Front_End_ZCX_Support : constant Boolean := True;
+ Front_End_ZCX_Support : constant Boolean := False;
-- Obsolete entries, to be removed eventually (bootstrap issues!)
diff --git a/gcc/ada/5gtaprop.adb b/gcc/ada/5gtaprop.adb
index c9041ba1ba0..bb15b0ae47b 100644
--- a/gcc/ada/5gtaprop.adb
+++ b/gcc/ada/5gtaprop.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2003, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2004, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -139,6 +139,9 @@ package body System.Task_Primitives.Operations is
-- ??? Check the comment above
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
+ pragma Unreferenced (T);
+ pragma Unreferenced (On);
+
begin
null;
end Stack_Guard;
@@ -210,6 +213,8 @@ package body System.Task_Primitives.Operations is
end Initialize_Lock;
procedure Initialize_Lock (L : access RTS_Lock; Level : Lock_Level) is
+ pragma Unreferenced (Level);
+
Attributes : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
@@ -345,6 +350,8 @@ package body System.Task_Primitives.Operations is
(Self_ID : ST.Task_ID;
Reason : System.Tasking.Task_States)
is
+ pragma Unreferenced (Reason);
+
Result : Interfaces.C.int;
begin
@@ -373,6 +380,8 @@ package body System.Task_Primitives.Operations is
Timedout : out Boolean;
Yielded : out Boolean)
is
+ pragma Unreferenced (Reason);
+
Check_Time : constant Duration := Monotonic_Clock;
Abs_Time : Duration;
Request : aliased struct_timeval;
@@ -533,6 +542,8 @@ package body System.Task_Primitives.Operations is
(T : ST.Task_ID;
Reason : System.Tasking.Task_States)
is
+ pragma Unreferenced (Reason);
+
Result : Interfaces.C.int;
begin
Result := pthread_cond_signal (T.Common.LL.CV'Access);
@@ -805,6 +816,8 @@ package body System.Task_Primitives.Operations is
begin
Result := pthread_set_ada_tcb (pthread_self, System.Null_Address);
+
+ pragma Assert (Result = 0);
end Exit_Task;
----------------
@@ -840,6 +853,8 @@ package body System.Task_Primitives.Operations is
--------------------
function Check_No_Locks (Self_ID : ST.Task_ID) return Boolean is
+ pragma Unreferenced (Self_ID);
+
begin
return True;
end Check_No_Locks;
diff --git a/gcc/ada/5gtasinf.adb b/gcc/ada/5gtasinf.adb
index 48eec8118ba..a275c312774 100644
--- a/gcc/ada/5gtasinf.adb
+++ b/gcc/ada/5gtasinf.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2004 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -220,7 +220,7 @@ package body System.Task_Info is
NDPRI : Non_Degrading_Priority := NDP_NONE)
return sproc_t
is
- Attr : Sproc_Attributes :=
+ Attr : constant Sproc_Attributes :=
(Sproc_Resources, CPU, Resident, NDPRI);
begin
@@ -267,7 +267,7 @@ package body System.Task_Info is
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Thread_Attributes
is
- Sproc : sproc_t := New_Sproc
+ Sproc : constant sproc_t := New_Sproc
(Sproc_Resources, CPU, Resident, NDPRI);
begin
@@ -316,7 +316,7 @@ package body System.Task_Info is
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Task_Info_Type
is
- Sproc : sproc_t := New_Sproc
+ Sproc : constant sproc_t := New_Sproc
(Sproc_Resources, CPU, Resident, NDPRI);
begin
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d8abacbdb45..fb0c3febfb5 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,39 @@
+2004-01-30 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (doc/gnat_ug_unx.dvi): Use $(abs_docdir).
+ (doc/gnat_ug_vms.dvi, doc/gnat_ug_unx.dvi): Likewise.
+ (doc/gnat_ug_unx.dvi, doc/gnat-style.dvi): Likewise.
+
+2004-01-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * Makefile.in (mips-sgi-irix5): Remove -lathread from THREADSLIB.
+
+ * 5fsystem.ads (Functions_Return_By_DSP): Set to False.
+ (ZCX_By_Default): Likewise.
+ (Front_End_ZCX_Support): Likewise.
+
+ * 5gtaprop.adb (Stack_Guard): Mark T, On unreferenced.
+ (Initialize_Lock): Mark Level unreferenced.
+ (Sleep): Mark Reason unreferenced.
+ (Timed_Sleep): Likewise.
+ (Wakeup): Likewise.
+ (Exit_Task): Use Result.
+ (Check_No_Locks): Mark Self_ID unreferenced.
+
+ * 5gtasinf.adb (New_Sproc): Make Attr constant.
+ (Bound_Thread_Attributes): Make Sproc constant.
+ (New_Bound_Thread_Attributes): Likewise.
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in: Replace $(docdir) with doc.
+ (doc/gnat_ug_unx.info, doc/gnat_ug_vwx.info, doc/gnat_ug_vms.info
+ doc/gnat_ug_wnt.info, doc/gnat_rm.info, doc/gnat-style.info): Update
+ to use consistent MAKEINFO rule.
+ (ada.man, ada.srcman): Dummy entry.
+ (ADA_INFOFILES): Define.
+ (ada.info, ada.srcinfo): New rules.
+
2004-01-16 Andreas Jaeger <aj@suse.de>
* Makefile.in: Add $(DESTDIR).
diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in
index 99d21149590..ea6c280d723 100644
--- a/gcc/ada/Make-lang.in
+++ b/gcc/ada/Make-lang.in
@@ -432,13 +432,14 @@ ada.all.cross:
ada.start.encap:
ada.rest.encap:
+ada.man:
ada.srcextra:
+ada.srcman:
ada.tags: force
cd $(srcdir)/ada; etags -o TAGS.sub *.c *.h *.ads *.adb; \
etags --include TAGS.sub --include ../TAGS.sub
-ada.generated-manpages:
# Generate documentation.
#
@@ -481,39 +482,61 @@ $(srcdir)/ada/gnat_ug_wnt.texi : ada/doctools/xgnatug$(build_exeext) \
ada/doctools/xgnatug wnt $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_wnt.texi
endif
-$(docobjdir)/gnat_ug_unx.info : $(srcdir)/ada/gnat_ug_unx.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-$(docobjdir)/gnat_ug_vms.info : $(srcdir)/ada/gnat_ug_vms.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-$(docobjdir)/gnat_ug_vxw.info : $(srcdir)/ada/gnat_ug_vxw.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-$(docobjdir)/gnat_ug_wnt.info : $(srcdir)/ada/gnat_ug_wnt.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-$(docobjdir)/gnat_rm.info : $(srcdir)/ada/gnat_rm.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-$(docobjdir)/gnat-style.info : $(srcdir)/ada/gnat-style.texi \
- $(srcdir)/doc/include/fdl.texi \
- stmp-docobjdir
- $(MAKEINFO) -I $(docdir)/include -I $(srcdir)/ada -o $@ $<
-
-info:: $(docobjdir)/gnat_ug_vms.info $(docobjdir)/gnat_ug_wnt.info \
- $(docobjdir)/gnat_ug_unx.info $(docobjdir)/gnat_ug_vxw.info \
- $(docobjdir)/gnat_rm.info $(docobjdir)/gnat-style.info
+doc/gnat_ug_unx.info: $(srcdir)/ada/gnat_ug_unx.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o $@ $<; \
+ else true; fi
+
+doc/gnat_ug_vms.info: $(srcdir)/ada/gnat_ug_vms.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o $@ $<; \
+ else true; fi
+
+doc/gnat_ug_vxw.info: $(srcdir)/ada/gnat_ug_vxw.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o $@ $<; \
+ else true; fi
+
+doc/gnat_ug_wnt.info: $(srcdir)/ada/gnat_ug_wnt.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o$@ $<; \
+ else true; fi
+
+doc/gnat_rm.info: ada/gnat_rm.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/gcc-common.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o $@ $<; \
+ else true; fi
+
+doc/gnat-style.info: ada/gnat-style.texi $(docdir)/include/fdl.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include \
+ -I$(srcdir)/ada -o $@ $<; \
+ else true; fi
+
+ADA_INFOFILES = doc/gnat_ug_vms.info doc/gnat_ug_wnt.info \
+ doc/gnat_ug_unx.info doc/gnat_ug_vxw.info \
+ doc/gnat_rm.info doc/gnat-style.info
+
+ada.info: $(ADA_INFOFILES)
+
+ada.srcinfo: $(ADA_INFOFILES)
+ -cp -p $^ $(srcdir)/doc
install-info:: $(DESTDIR)$(infodir)/gnat_ug_vms.info \
$(DESTDIR)$(infodir)/gnat_ug_wnt.info \
@@ -522,38 +545,31 @@ install-info:: $(DESTDIR)$(infodir)/gnat_ug_vms.info \
$(DESTDIR)$(infodir)/gnat_rm.info \
$(DESTDIR)$(infodir)/gnat-style.info
-dvi:: $(docobjdir)/gnat_ug_vms.dvi $(docobjdir)/gnat_ug_wnt.dvi \
- $(docobjdir)/gnat_ug_unx.dvi $(docobjdir)/gnat_ug_vxw.dvi \
- $(docobjdir)/gnat_rm.dvi $(docobjdir)/gnat-style.dvi
-
-$(docobjdir)/gnat_ug_unx.dvi: ada/gnat_ug_unx.texi \
- $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
-
-$(docobjdir)/gnat_ug_vms.dvi: ada/gnat_ug_vms.texi \
- $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
-
-$(docobjdir)/gnat_ug_vxw.dvi: ada/gnat_ug_vxw.texi \
- $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
-
-$(docobjdir)/gnat_ug_wnt.dvi: ada/gnat_ug_wnt.texi \
- $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
-
-$(docobjdir)/gnat_rm.dvi: ada/gnat_rm.texi \
- $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
-
-$(docobjdir)/gnat-style.dvi: ada/gnat-style.texi $(docdir)/include/fdl.texi \
- stmp-docobjdir
- $(TEXI2DVI) -c -I $(docdir)/include -o $@ $<
+dvi:: doc/gnat_ug_vms.dvi doc/gnat_ug_wnt.dvi doc/gnat_ug_unx.dvi \
+ doc/gnat_ug_vxw.dvi doc/gnat_rm.dvi doc/gnat-style.dvi
+
+doc/gnat_ug_unx.dvi: $(srcdir)/ada/gnat_ug_unx.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
+
+doc/gnat_ug_vms.dvi: $(srcdir)/ada/gnat_ug_vms.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
+
+doc/gnat_ug_vxw.dvi: $(srcdir)/ada/gnat_ug_vxw.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
+
+doc/gnat_ug_wnt.dvi: $(srcdir)/ada/gnat_ug_wnt.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
+
+doc/gnat_rm.dvi: ada/gnat_rm.texi \
+ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
+
+doc/gnat-style.dvi: ada/gnat-style.texi $(docdir)/include/fdl.texi
+ $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
# Install hooks:
diff --git a/gcc/ada/Makefile.in b/gcc/ada/Makefile.in
index bfcc541a2ae..9d060b3b1e6 100644
--- a/gcc/ada/Makefile.in
+++ b/gcc/ada/Makefile.in
@@ -913,7 +913,7 @@ ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
g-soccon.ads<3gsoccon.ads \
system.ads<5fsystem.ads
- THREADSLIB = -lathread
+ THREADSLIB =
endif
TOOLS_TARGET_PAIRS = mlib-tgt.adb<5gml-tgt.adb
diff --git a/gcc/alias.c b/gcc/alias.c
index a56feae1170..50efa69eb9f 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1,5 +1,5 @@
/* Alias analysis for GNU C
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
@@ -157,17 +157,21 @@ static void memory_modified_1 (rtx, rtx, void *);
current function performs nonlocal memory memory references for the
purposes of marking the function as a constant function. */
-static GTY((length ("reg_base_value_size"))) rtx *reg_base_value;
+static GTY(()) varray_type reg_base_value;
static rtx *new_reg_base_value;
-static unsigned int reg_base_value_size; /* size of reg_base_value array */
+
+/* We preserve the copy of old array around to avoid amount of garbage
+ produced. About 8% of garbage produced were attributed to this
+ array. */
+static GTY((deletable (""))) varray_type old_reg_base_value;
/* Static hunks of RTL used by the aliasing code; these are initialized
once per function to avoid unnecessary RTL allocations. */
static GTY (()) rtx static_reg_base_value[FIRST_PSEUDO_REGISTER];
#define REG_BASE_VALUE(X) \
- (REGNO (X) < reg_base_value_size \
- ? reg_base_value[REGNO (X)] : 0)
+ (reg_base_value && REGNO (X) < VARRAY_SIZE (reg_base_value) \
+ ? VARRAY_RTX (reg_base_value, REGNO (X)) : 0)
/* Vector of known invariant relationships between registers. Set in
loop unrolling. Indexed by register number, if nonzero the value
@@ -178,6 +182,7 @@ static GTY (()) rtx static_reg_base_value[FIRST_PSEUDO_REGISTER];
Because this array contains only pseudo registers it has no effect
after reload. */
static rtx *alias_invariant;
+unsigned int alias_invariant_size;
/* Vector indexed by N giving the initial (unchanging) value known for
pseudo-register N. This array is initialized in
@@ -592,11 +597,11 @@ get_alias_set (tree t)
/* Return a brand-new alias set. */
+static GTY(()) HOST_WIDE_INT last_alias_set;
+
HOST_WIDE_INT
new_alias_set (void)
{
- static HOST_WIDE_INT last_alias_set;
-
if (flag_strict_aliasing)
{
if (!alias_sets)
@@ -724,29 +729,29 @@ record_component_aliases (tree type)
/* Allocate an alias set for use in storing and reading from the varargs
spill area. */
+static GTY(()) HOST_WIDE_INT varargs_set = -1;
+
HOST_WIDE_INT
get_varargs_alias_set (void)
{
- static HOST_WIDE_INT set = -1;
-
- if (set == -1)
- set = new_alias_set ();
+ if (varargs_set == -1)
+ varargs_set = new_alias_set ();
- return set;
+ return varargs_set;
}
/* Likewise, but used for the fixed portions of the frame, e.g., register
save areas. */
+static GTY(()) HOST_WIDE_INT frame_set = -1;
+
HOST_WIDE_INT
get_frame_alias_set (void)
{
- static HOST_WIDE_INT set = -1;
-
- if (set == -1)
- set = new_alias_set ();
+ if (frame_set == -1)
+ frame_set = new_alias_set ();
- return set;
+ return frame_set;
}
/* Inside SRC, the source of a SET, find a base address. */
@@ -778,7 +783,7 @@ find_base_value (rtx src)
The test above is not sufficient because the scheduler may move
a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */
if ((regno >= FIRST_PSEUDO_REGISTER || fixed_regs[regno])
- && regno < reg_base_value_size)
+ && regno < VARRAY_SIZE (reg_base_value))
{
/* If we're inside init_alias_analysis, use new_reg_base_value
to reduce the number of relaxation iterations. */
@@ -786,8 +791,8 @@ find_base_value (rtx src)
&& REG_N_SETS (regno) == 1)
return new_reg_base_value[regno];
- if (reg_base_value[regno])
- return reg_base_value[regno];
+ if (VARRAY_RTX (reg_base_value, regno))
+ return VARRAY_RTX (reg_base_value, regno);
}
return 0;
@@ -931,7 +936,7 @@ record_set (rtx dest, rtx set, void *data ATTRIBUTE_UNUSED)
regno = REGNO (dest);
- if (regno >= reg_base_value_size)
+ if (regno >= VARRAY_SIZE (reg_base_value))
abort ();
/* If this spans multiple hard registers, then we must indicate that every
@@ -1030,21 +1035,20 @@ record_set (rtx dest, rtx set, void *data ATTRIBUTE_UNUSED)
void
record_base_value (unsigned int regno, rtx val, int invariant)
{
- if (regno >= reg_base_value_size)
- return;
-
- if (invariant && alias_invariant)
+ if (invariant && alias_invariant && regno < alias_invariant_size)
alias_invariant[regno] = val;
+ if (regno >= VARRAY_SIZE (reg_base_value))
+ VARRAY_GROW (reg_base_value, max_reg_num ());
+
if (GET_CODE (val) == REG)
{
- if (REGNO (val) < reg_base_value_size)
- reg_base_value[regno] = reg_base_value[REGNO (val)];
-
+ VARRAY_RTX (reg_base_value, regno)
+ = REG_BASE_VALUE (val);
return;
}
-
- reg_base_value[regno] = find_base_value (val);
+ VARRAY_RTX (reg_base_value, regno)
+ = find_base_value (val);
}
/* Clear alias info for a register. This is used if an RTL transformation
@@ -1135,9 +1139,6 @@ rtx_equal_for_memref_p (rtx x, rtx y)
/* Some RTL can be compared without a recursive examination. */
switch (code)
{
- case VALUE:
- return CSELIB_VAL_PTR (x) == CSELIB_VAL_PTR (y);
-
case REG:
return REGNO (x) == REGNO (y);
@@ -1147,6 +1148,7 @@ rtx_equal_for_memref_p (rtx x, rtx y)
case SYMBOL_REF:
return XSTR (x, 0) == XSTR (y, 0);
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
/* There's no need to compare the contents of CONST_DOUBLEs or
@@ -1321,6 +1323,8 @@ find_base_term (rtx x)
case VALUE:
val = CSELIB_VAL_PTR (x);
+ if (!val)
+ return 0;
for (l = val->locs; l; l = l->next)
if ((x = find_base_term (l->loc)) != 0)
return x;
@@ -1498,14 +1502,17 @@ get_addr (rtx x)
if (GET_CODE (x) != VALUE)
return x;
v = CSELIB_VAL_PTR (x);
- for (l = v->locs; l; l = l->next)
- if (CONSTANT_P (l->loc))
- return l->loc;
- for (l = v->locs; l; l = l->next)
- if (GET_CODE (l->loc) != REG && GET_CODE (l->loc) != MEM)
- return l->loc;
- if (v->locs)
- return v->locs->loc;
+ if (v)
+ {
+ for (l = v->locs; l; l = l->next)
+ if (CONSTANT_P (l->loc))
+ return l->loc;
+ for (l = v->locs; l; l = l->next)
+ if (GET_CODE (l->loc) != REG && GET_CODE (l->loc) != MEM)
+ return l->loc;
+ if (v->locs)
+ return v->locs->loc;
+ }
return x;
}
@@ -1682,8 +1689,8 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
unsigned int r_x = REGNO (x), r_y = REGNO (y);
rtx i_x, i_y; /* invariant relationships of X and Y */
- i_x = r_x >= reg_base_value_size ? 0 : alias_invariant[r_x];
- i_y = r_y >= reg_base_value_size ? 0 : alias_invariant[r_y];
+ i_x = r_x >= alias_invariant_size ? 0 : alias_invariant[r_x];
+ i_y = r_y >= alias_invariant_size ? 0 : alias_invariant[r_y];
if (i_x == 0 && i_y == 0)
break;
@@ -2710,7 +2717,7 @@ memory_modified_in_insn_p (rtx mem, rtx insn)
void
init_alias_analysis (void)
{
- int maxreg = max_reg_num ();
+ unsigned int maxreg = max_reg_num ();
int changed, pass;
int i;
unsigned int ui;
@@ -2730,17 +2737,31 @@ init_alias_analysis (void)
/* Overallocate reg_base_value to allow some growth during loop
optimization. Loop unrolling can create a large number of
registers. */
- reg_base_value_size = maxreg * 2;
- reg_base_value = ggc_alloc_cleared (reg_base_value_size * sizeof (rtx));
+ if (old_reg_base_value)
+ {
+ reg_base_value = old_reg_base_value;
+ /* If varray gets large zeroing cost may get important. */
+ if (VARRAY_SIZE (reg_base_value) > 256
+ && VARRAY_SIZE (reg_base_value) > 4 * maxreg)
+ VARRAY_GROW (reg_base_value, maxreg);
+ VARRAY_CLEAR (reg_base_value);
+ if (VARRAY_SIZE (reg_base_value) < maxreg)
+ VARRAY_GROW (reg_base_value, maxreg);
+ }
+ else
+ {
+ VARRAY_RTX_INIT (reg_base_value, maxreg, "reg_base_value");
+ }
- new_reg_base_value = xmalloc (reg_base_value_size * sizeof (rtx));
- reg_seen = xmalloc (reg_base_value_size);
+ new_reg_base_value = xmalloc (maxreg * sizeof (rtx));
+ reg_seen = xmalloc (maxreg);
if (! reload_completed && flag_old_unroll_loops)
{
/* ??? Why are we realloc'ing if we're just going to zero it? */
alias_invariant = xrealloc (alias_invariant,
- reg_base_value_size * sizeof (rtx));
- memset (alias_invariant, 0, reg_base_value_size * sizeof (rtx));
+ maxreg * sizeof (rtx));
+ memset (alias_invariant, 0, maxreg * sizeof (rtx));
+ alias_invariant_size = maxreg;
}
/* The basic idea is that each pass through this loop will use the
@@ -2777,10 +2798,10 @@ init_alias_analysis (void)
copying_arguments = true;
/* Wipe the potential alias information clean for this pass. */
- memset (new_reg_base_value, 0, reg_base_value_size * sizeof (rtx));
+ memset (new_reg_base_value, 0, maxreg * sizeof (rtx));
/* Wipe the reg_seen array clean. */
- memset (reg_seen, 0, reg_base_value_size);
+ memset (reg_seen, 0, maxreg);
/* Mark all hard registers which may contain an address.
The stack, frame and argument pointers may contain an address.
@@ -2868,13 +2889,16 @@ init_alias_analysis (void)
}
/* Now propagate values from new_reg_base_value to reg_base_value. */
- for (ui = 0; ui < reg_base_value_size; ui++)
+ if (maxreg != (unsigned int) max_reg_num())
+ abort ();
+ for (ui = 0; ui < maxreg; ui++)
{
if (new_reg_base_value[ui]
- && new_reg_base_value[ui] != reg_base_value[ui]
- && ! rtx_equal_p (new_reg_base_value[ui], reg_base_value[ui]))
+ && new_reg_base_value[ui] != VARRAY_RTX (reg_base_value, ui)
+ && ! rtx_equal_p (new_reg_base_value[ui],
+ VARRAY_RTX (reg_base_value, ui)))
{
- reg_base_value[ui] = new_reg_base_value[ui];
+ VARRAY_RTX (reg_base_value, ui) = new_reg_base_value[ui];
changed = 1;
}
}
@@ -2882,7 +2906,7 @@ init_alias_analysis (void)
while (changed && ++pass < MAX_ALIAS_LOOP_PASSES);
/* Fill in the remaining entries. */
- for (i = FIRST_PSEUDO_REGISTER; i < maxreg; i++)
+ for (i = FIRST_PSEUDO_REGISTER; i < (int)maxreg; i++)
if (reg_known_value[i] == 0)
reg_known_value[i] = regno_reg_rtx[i];
@@ -2901,16 +2925,17 @@ init_alias_analysis (void)
{
changed = 0;
pass++;
- for (ui = 0; ui < reg_base_value_size; ui++)
+ for (ui = 0; ui < maxreg; ui++)
{
- rtx base = reg_base_value[ui];
+ rtx base = VARRAY_RTX (reg_base_value, ui);
if (base && GET_CODE (base) == REG)
{
unsigned int base_regno = REGNO (base);
if (base_regno == ui) /* register set from itself */
- reg_base_value[ui] = 0;
+ VARRAY_RTX (reg_base_value, ui) = 0;
else
- reg_base_value[ui] = reg_base_value[base_regno];
+ VARRAY_RTX (reg_base_value, ui)
+ = VARRAY_RTX (reg_base_value, base_regno);
changed = 1;
}
}
@@ -2928,17 +2953,17 @@ init_alias_analysis (void)
void
end_alias_analysis (void)
{
+ old_reg_base_value = reg_base_value;
free (reg_known_value + FIRST_PSEUDO_REGISTER);
reg_known_value = 0;
reg_known_value_size = 0;
free (reg_known_equiv_p + FIRST_PSEUDO_REGISTER);
reg_known_equiv_p = 0;
- reg_base_value = 0;
- reg_base_value_size = 0;
if (alias_invariant)
{
free (alias_invariant);
alias_invariant = 0;
+ alias_invariant_size = 0;
}
}
diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c
index c21cfe4c707..9f1583df72b 100644
--- a/gcc/alloc-pool.c
+++ b/gcc/alloc-pool.c
@@ -1,5 +1,5 @@
/* Functions to support a pool of allocatable objects.
- Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2003
+ Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2003, 2004
Free Software Foundation, Inc.
Contributed by Daniel Berlin <dan@cgsoftware.com>
@@ -23,6 +23,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "config.h"
#include "system.h"
#include "alloc-pool.h"
+#include "hashtab.h"
/* Redefine abort to report an internal error w/o coredump, and
reporting the location of the error in the source file. This logic
@@ -34,7 +35,6 @@ extern void fancy_abort (const char *, int, const char *)
ATTRIBUTE_NORETURN;
#define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__)
-#define align_four(x) (((x+3) >> 2) << 2)
#define align_eight(x) (((x+7) >> 3) << 3)
/* The internal allocation object. */
@@ -73,6 +73,56 @@ typedef struct allocation_object_def
static ALLOC_POOL_ID_TYPE last_id;
#endif
+#ifdef GATHER_STATISTICS
+
+/* Store infromation about each particular alloc_pool. */
+struct alloc_pool_descriptor
+{
+ const char *name;
+ int allocated;
+ int created;
+ int peak;
+ int current;
+};
+
+/* Hashtable mapping alloc_pool names to descriptors. */
+static htab_t alloc_pool_hash;
+
+/* Hashtable helpers. */
+static hashval_t
+hash_descriptor (const void *p)
+{
+ const struct alloc_pool_descriptor *d = p;
+ return htab_hash_pointer (d->name);
+}
+static int
+eq_descriptor (const void *p1, const void *p2)
+{
+ const struct alloc_pool_descriptor *d = p1;
+ return d->name == p2;
+}
+
+/* For given name, return descriptor, create new if needed. */
+static struct alloc_pool_descriptor *
+alloc_pool_descriptor (const char *name)
+{
+ struct alloc_pool_descriptor **slot;
+
+ if (!alloc_pool_hash)
+ alloc_pool_hash = htab_create (10, hash_descriptor, eq_descriptor, NULL);
+
+ slot = (struct alloc_pool_descriptor **)
+ htab_find_slot_with_hash (alloc_pool_hash, name,
+ htab_hash_pointer (name),
+ 1);
+ if (*slot)
+ return *slot;
+ *slot = xcalloc (sizeof (**slot), 1);
+ (*slot)->name = name;
+ return *slot;
+}
+#endif
+
/* Create a pool of things of size SIZE, with NUM in each block we
allocate. */
@@ -81,6 +131,9 @@ create_alloc_pool (const char *name, size_t size, size_t num)
{
alloc_pool pool;
size_t pool_size, header_size;
+#ifdef GATHER_STATISTICS
+ struct alloc_pool_descriptor *desc;
+#endif
if (!name)
abort ();
@@ -90,7 +143,7 @@ create_alloc_pool (const char *name, size_t size, size_t num)
size = sizeof (alloc_pool_list);
/* Now align the size to a multiple of 4. */
- size = align_four (size);
+ size = align_eight (size);
#ifdef ENABLE_CHECKING
/* Add the aligned size of ID. */
@@ -108,7 +161,11 @@ create_alloc_pool (const char *name, size_t size, size_t num)
pool = xmalloc (pool_size);
/* Now init the various pieces of our pool structure. */
- pool->name = xstrdup (name);
+ pool->name = /*xstrdup (name)*/name;
+#ifdef GATHER_STATISTICS
+ desc = alloc_pool_descriptor (name);
+ desc->created++;
+#endif
pool->elt_size = size;
pool->elts_per_block = num;
@@ -140,6 +197,9 @@ void
free_alloc_pool (alloc_pool pool)
{
alloc_pool_list block, next_block;
+#ifdef GATHER_STATISTICS
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+#endif
#ifdef ENABLE_CHECKING
if (!pool)
@@ -151,9 +211,14 @@ free_alloc_pool (alloc_pool pool)
{
next_block = block->next;
free (block);
+#ifdef GATHER_STATISTICS
+ desc->current -= pool->block_size;
+#endif
}
- /* Lastly, free the pool and the name. */
- free (pool->name);
+ /* Lastly, free the pool. */
+#ifdef ENABLE_CHECKING
+ memset (pool, 0xaf, sizeof (*pool));
+#endif
free (pool);
}
@@ -163,6 +228,11 @@ pool_alloc (alloc_pool pool)
{
alloc_pool_list header;
char *block;
+#ifdef GATHER_STATISTICS
+ struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name);
+
+ desc->allocated+=pool->elt_size;
+#endif
#ifdef ENABLE_CHECKING
if (!pool)
@@ -179,6 +249,11 @@ pool_alloc (alloc_pool pool)
block = xmalloc (pool->block_size);
block_header = (alloc_pool_list) block;
block += align_eight (sizeof (struct alloc_pool_list_def));
+#ifdef GATHER_STATISTICS
+ desc->current += pool->block_size;
+ if (desc->peak < desc->current)
+ desc->peak = desc->current;
+#endif
/* Throw it on the block list. */
block_header->next = pool->block_list;
@@ -225,6 +300,8 @@ pool_free (alloc_pool pool, void *ptr)
if (!ptr)
abort ();
+ memset (ptr, 0xaf, pool->elt_size - offsetof (allocation_object, u.data));
+
/* Check whether the PTR was allocated from POOL. */
if (pool->id != ALLOCATION_OBJECT_PTR_FROM_USER_PTR (ptr)->id)
abort ();
@@ -242,3 +319,49 @@ pool_free (alloc_pool pool, void *ptr)
pool->free_list = header;
pool->elts_free++;
}
+/* Output per-alloc_pool statistics. */
+#ifdef GATHER_STATISTICS
+
+/* Used to accumulate statistics about alloc_pool sizes. */
+struct output_info
+{
+ int count;
+ int size;
+};
+
+/* Called via htab_traverse. Output alloc_pool descriptor pointed out by SLOT
+ and update statistics. */
+static int
+print_statistics (void **slot, void *b)
+{
+ struct alloc_pool_descriptor *d = (struct alloc_pool_descriptor *) *slot;
+ struct output_info *i = (struct output_info *) b;
+
+ if (d->allocated)
+ {
+ fprintf (stderr, "%-21s %6d %10d %10d %10d\n", d->name,
+ d->created, d->allocated, d->peak, d->current);
+ i->size += d->allocated;
+ i->count += d->created;
+ }
+ return 1;
+}
+#endif
+
+/* Output per-alloc_pool memory usage statistics. */
+void dump_alloc_pool_statistics (void)
+{
+#ifdef GATHER_STATISTICS
+ struct output_info info;
+
+ fprintf (stderr, "\nAlloc-pool Kind Pools Allocated Peak Leak\n");
+ fprintf (stderr, "-------------------------------------------------------------\n");
+ info.count = 0;
+ info.size = 0;
+ htab_traverse (alloc_pool_hash, print_statistics, &info);
+ fprintf (stderr, "-------------------------------------------------------------\n");
+ fprintf (stderr, "%-20s %7d %10d\n",
+ "Total", info.count, info.size);
+ fprintf (stderr, "-------------------------------------------------------------\n");
+#endif
+}
diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h
index 48d017217a9..0eb2c9685b8 100644
--- a/gcc/alloc-pool.h
+++ b/gcc/alloc-pool.h
@@ -1,5 +1,5 @@
/* Functions to support a pool of allocatable objects
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004
Free Software Foundation, Inc.
Contributed by Daniel Berlin <dan@cgsoftware.com>
@@ -32,7 +32,7 @@ typedef struct alloc_pool_list_def
typedef struct alloc_pool_def
{
- char *name;
+ const char *name;
#ifdef ENABLE_CHECKING
ALLOC_POOL_ID_TYPE id;
#endif
@@ -51,4 +51,5 @@ extern alloc_pool create_alloc_pool (const char *, size_t, size_t);
extern void free_alloc_pool (alloc_pool);
extern void *pool_alloc (alloc_pool);
extern void pool_free (alloc_pool, void *);
+extern void dump_alloc_pool_statistics (void);
#endif
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 2e8f5786348..10cc6351bd6 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -1,5 +1,5 @@
/* Define control and data flow tables, and regsets.
- Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -480,6 +480,10 @@ enum update_life_extent
| PROP_SCAN_DEAD_CODE | PROP_AUTOINC \
| PROP_ALLOW_CFG_CHANGES \
| PROP_SCAN_DEAD_STORES)
+#define PROP_POSTRELOAD (PROP_DEATH_NOTES \
+ | PROP_KILL_DEAD_CODE \
+ | PROP_SCAN_DEAD_CODE | PROP_AUTOINC \
+ | PROP_SCAN_DEAD_STORES)
#define CLEANUP_EXPENSIVE 1 /* Do relatively expensive optimizations
except for edge forwarding */
@@ -495,6 +499,7 @@ enum update_life_extent
#define CLEANUP_NO_INSN_DEL 128 /* Do not try to delete trivially dead
insns. */
#define CLEANUP_CFGLAYOUT 256 /* Do cleanup in cfglayout mode. */
+#define CLEANUP_LOG_LINKS 512 /* Update log links. */
extern void life_analysis (rtx, FILE *, int);
extern int update_life_info (sbitmap, enum update_life_extent, int);
extern int update_life_info_in_dirty_blocks (enum update_life_extent, int);
@@ -640,6 +645,7 @@ extern void iterate_fix_dominators (enum cdi_direction, basic_block *, int);
extern void verify_dominators (enum cdi_direction);
extern basic_block first_dom_son (enum cdi_direction, basic_block);
extern basic_block next_dom_son (enum cdi_direction, basic_block);
+extern bool try_redirect_by_replacing_jump (edge, basic_block, bool);
#include "cfghooks.h"
diff --git a/gcc/builtin-types.def b/gcc/builtin-types.def
index f33bacd4330..85b30b98caa 100644
--- a/gcc/builtin-types.def
+++ b/gcc/builtin-types.def
@@ -64,6 +64,7 @@ DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
DEF_PRIMITIVE_TYPE (BT_UNSIGNED, unsigned_type_node)
DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
+DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
@@ -142,6 +143,7 @@ DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
BT_LONGDOUBLE, BT_CONST_STRING)
DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
+DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 5669f00171d..dadb6cd41a0 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -4131,6 +4131,7 @@ expand_builtin_va_arg (tree valist, tree type)
/* We can, however, treat "undefined" any way we please.
Call abort to encourage the user to fix the program. */
+ inform ("if this code is reached, the program will abort");
expand_builtin_trap ();
/* This is dead code, but go ahead and finish so that the
@@ -4458,7 +4459,7 @@ expand_builtin_expect_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
&& (integer_zerop (arg1) || integer_onep (arg1)))
{
- rtx insn, drop_through_label;
+ rtx insn, drop_through_label, temp;
/* Expand the jump insns. */
start_sequence ();
@@ -4492,16 +4493,16 @@ expand_builtin_expect_jump (tree exp, rtx if_false_label, rtx if_true_label)
/* First check if we recognize any of the labels. */
if (GET_CODE (then_dest) == LABEL_REF
- && XEXP (then_dest, 1) == if_true_label)
+ && XEXP (then_dest, 0) == if_true_label)
taken = 1;
else if (GET_CODE (then_dest) == LABEL_REF
- && XEXP (then_dest, 1) == if_false_label)
+ && XEXP (then_dest, 0) == if_false_label)
taken = 0;
else if (GET_CODE (else_dest) == LABEL_REF
- && XEXP (else_dest, 1) == if_false_label)
+ && XEXP (else_dest, 0) == if_false_label)
taken = 1;
else if (GET_CODE (else_dest) == LABEL_REF
- && XEXP (else_dest, 1) == if_true_label)
+ && XEXP (else_dest, 0) == if_true_label)
taken = 0;
/* Otherwise check where we drop through. */
else if (else_dest == pc_rtx)
@@ -4511,13 +4512,15 @@ expand_builtin_expect_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (next && GET_CODE (next) == JUMP_INSN
&& any_uncondjump_p (next))
- next = XEXP (SET_SRC (pc_set (next)), 1);
+ temp = XEXP (SET_SRC (pc_set (next)), 0);
+ else
+ temp = next;
- /* NEXT is either a CODE_LABEL, NULL_RTX or something
+ /* TEMP is either a CODE_LABEL, NULL_RTX or something
else that can't possibly match either target label. */
- if (next == if_false_label)
+ if (temp == if_false_label)
taken = 1;
- else if (next == if_true_label)
+ else if (temp == if_true_label)
taken = 0;
}
else if (then_dest == pc_rtx)
@@ -4527,11 +4530,13 @@ expand_builtin_expect_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (next && GET_CODE (next) == JUMP_INSN
&& any_uncondjump_p (next))
- next = XEXP (SET_SRC (pc_set (next)), 1);
+ temp = XEXP (SET_SRC (pc_set (next)), 0);
+ else
+ temp = next;
- if (next == if_false_label)
+ if (temp == if_false_label)
taken = 0;
- else if (next == if_true_label)
+ else if (temp == if_true_label)
taken = 1;
}
@@ -5431,6 +5436,9 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode,
case BUILT_IN_EH_RETURN_DATA_REGNO:
return expand_builtin_eh_return_data_regno (arglist);
#endif
+ case BUILT_IN_EXTEND_POINTER:
+ return expand_builtin_extend_pointer (TREE_VALUE (arglist));
+
case BUILT_IN_VA_START:
case BUILT_IN_STDARG_START:
return expand_builtin_va_start (arglist);
diff --git a/gcc/builtins.def b/gcc/builtins.def
index fc6ddcaedfa..d02c822a663 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -512,6 +512,7 @@ DEF_GCC_BUILTIN (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR,
DEF_GCC_BUILTIN (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_NULL)
DEF_LIB_BUILTIN (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
DEF_GCC_BUILTIN (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_NULL)
+DEF_GCC_BUILTIN (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_WORD_PTR, ATTR_CONST_NOTHROW_LIST)
DEF_GCC_BUILTIN (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
DEF_GCC_BUILTIN (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UNSIGNED, ATTR_NULL)
DEF_GCC_BUILTIN (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
diff --git a/gcc/c-common.c b/gcc/c-common.c
index dcd540b1d85..aaf7e07d0cf 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -1,6 +1,6 @@
/* Subroutines shared by all languages that are variants of C.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -599,23 +599,6 @@ int flag_permissive;
int flag_enforce_eh_specs = 1;
-/* The version of the C++ ABI in use. The following values are
- allowed:
-
- 0: The version of the ABI believed most conformant with the
- C++ ABI specification. This ABI may change as bugs are
- discovered and fixed. Therefore, 0 will not necessarily
- indicate the same ABI in different versions of G++.
-
- 1: The version of the ABI first used in G++ 3.2.
-
- 2: The version of the ABI first used in G++ 3.4.
-
- Additional positive integers will be assigned as new versions of
- the ABI become the default version of the ABI. */
-
-int flag_abi_version = 2;
-
/* Nonzero means warn about things that will change when compiling
with an ABI-compliant compiler. */
@@ -4128,7 +4111,7 @@ c_expand_expr (tree exp, rtx target, enum machine_mode tmode,
expand_stmt (STMT_EXPR_STMT (exp));
expand_end_stmt_expr (rtl_expr);
- result = expand_expr (rtl_expr, target, tmode, modifier);
+ result = expand_expr_real (rtl_expr, target, tmode, modifier, alt_rtl);
if (preserve_result && GET_CODE (result) == MEM)
{
if (GET_MODE (result) != BLKmode)
@@ -4288,21 +4271,6 @@ c_init_attributes (void)
#undef DEF_ATTR_TREE_LIST
}
-/* Output a -Wshadow warning MSGCODE about NAME, and give the location
- of the previous declaration DECL. */
-void
-shadow_warning (enum sw_kind msgcode, const char *name, tree decl)
-{
- static const char *const msgs[] = {
- /* SW_PARAM */ N_("declaration of \"%s\" shadows a parameter"),
- /* SW_LOCAL */ N_("declaration of \"%s\" shadows a previous local"),
- /* SW_GLOBAL */ N_("declaration of \"%s\" shadows a global declaration")
- };
-
- warning (msgs[msgcode], name);
- warning ("%Jshadowed declaration is here", decl);
-}
-
/* Attribute handlers common to C front ends. */
/* Handle a "packed" attribute; arguments as in
@@ -5780,6 +5748,24 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
*count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
}
break;
+ case CALL_EXPR:
+ {
+ tree decl = get_callee_fndecl (x);
+
+ if (decl && DECL_BUILT_IN (decl))
+ switch (DECL_FUNCTION_CODE (decl))
+ {
+ case BUILT_IN_CONSTANT_P:
+ *walk_subtrees = 0;
+ return NULL_TREE;
+ case BUILT_IN_EXPECT:
+ return NULL_TREE;
+ default:
+ break;
+ }
+ *count += 10;
+ break;
+ }
/* Few special cases of expensive operations. This is usefull
to avoid inlining on functions having too many of these. */
case TRUNC_DIV_EXPR:
@@ -5791,7 +5777,6 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case FLOOR_MOD_EXPR:
case ROUND_MOD_EXPR:
case RDIV_EXPR:
- case CALL_EXPR:
*count += 10;
break;
/* Various containers that will produce no code themselves. */
diff --git a/gcc/c-common.h b/gcc/c-common.h
index 2b33373126d..7849730f161 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -1,6 +1,6 @@
/* Definitions for c-common.c.
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -330,8 +330,6 @@ extern void (*lang_expand_function_end) (void);
extern int (*lang_missing_noreturn_ok_p) (tree);
extern int yyparse (void);
-extern void free_parser_stacks (void);
-
extern stmt_tree current_stmt_tree (void);
extern tree *current_scope_stmt_stack (void);
extern void begin_stmt_tree (tree *);
@@ -347,8 +345,6 @@ extern tree c_begin_if_stmt (void);
extern tree c_begin_while_stmt (void);
extern void c_finish_while_stmt_cond (tree, tree);
-enum sw_kind { SW_PARAM = 0, SW_LOCAL, SW_GLOBAL };
-extern void shadow_warning (enum sw_kind, const char *, tree);
extern int field_decl_cmp (const void *, const void *);
extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
void *);
@@ -764,21 +760,6 @@ extern int flag_permissive;
extern int flag_enforce_eh_specs;
-/* The version of the C++ ABI in use. The following values are
- allowed:
-
- 0: The version of the ABI believed most conformant with the
- C++ ABI specification. This ABI may change as bugs are
- discovered and fixed. Therefore, 0 will not necessarily
- indicate the same ABI in different versions of G++.
-
- 1: The version of the ABI first used in G++ 3.2.
-
- Additional positive integers will be assigned as new versions of
- the ABI become the default version of the ABI. */
-
-extern int flag_abi_version;
-
/* Nonzero means warn about things that will change when compiling
with an ABI-compliant compiler. */
@@ -1340,5 +1321,6 @@ extern void objc_mark_locals_volatile (void *);
extern void init_pp_output (FILE *);
extern void preprocess_file (cpp_reader *);
extern void pp_file_change (const struct line_map *);
+extern void pp_dir_change (cpp_reader *, const char *);
#endif /* ! GCC_C_COMMON_H */
diff --git a/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c
index e02960e8532..4e671d6b055 100644
--- a/gcc/c-cppbuiltin.c
+++ b/gcc/c-cppbuiltin.c
@@ -1,5 +1,5 @@
/* Define builtin-in macros for the C family front ends.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 77f6cfbb69f..0582007466b 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -230,21 +230,21 @@ struct c_scope GTY(())
/* True if we are currently filling this scope with parameter
declarations. */
- bool parm_flag : 1;
+ BOOL_BITFIELD parm_flag : 1;
/* True if we already complained about forward parameter decls
in this scope. This prevents double warnings on
foo (int a; int b; ...) */
- bool warned_forward_parm_decls : 1;
+ BOOL_BITFIELD warned_forward_parm_decls : 1;
/* True if this is the outermost block scope of a function body.
This scope contains the parameters, the local variables declared
in the outermost block, and all the labels (except those in
nested functions, or declared at block scope with __label__). */
- bool function_body : 1;
+ BOOL_BITFIELD function_body : 1;
/* True means make a BLOCK for this scope no matter what. */
- bool keep : 1;
+ BOOL_BITFIELD keep : 1;
};
/* The scope currently in effect. */
@@ -939,7 +939,8 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
unless OLDDECL is a builtin. OLDDECL will be discarded in any case. */
if (TREE_CODE (olddecl) != TREE_CODE (newdecl))
{
- if (TREE_CODE (olddecl) != FUNCTION_DECL || !DECL_BUILT_IN (olddecl))
+ if (TREE_CODE (olddecl) != FUNCTION_DECL
+ || !DECL_BUILT_IN (olddecl) || !C_DECL_INVISIBLE (olddecl))
{
error ("%J'%D' redeclared as different kind of symbol",
newdecl, newdecl);
@@ -956,7 +957,8 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
if (!comptypes (oldtype, newtype, COMPARE_STRICT))
{
- if (TREE_CODE (olddecl) == FUNCTION_DECL && DECL_BUILT_IN (olddecl))
+ if (TREE_CODE (olddecl) == FUNCTION_DECL
+ && DECL_BUILT_IN (olddecl) && C_DECL_INVISIBLE (olddecl))
{
/* Accept harmless mismatch in function types.
This is for the ffs and fprintf builtins. */
@@ -1029,11 +1031,16 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
extern-inline definition supersedes the extern-inline definition. */
else if (TREE_CODE (newdecl) == FUNCTION_DECL)
{
- if (DECL_BUILT_IN (olddecl) && !TREE_PUBLIC (newdecl))
+ /* If you declare a built-in function name as static, or
+ define the built-in with an old-style definition (so we
+ can't validate the argument list) the built-in definition is
+ overridden, but optionally warn this was a bad choice of name. */
+ if (DECL_BUILT_IN (olddecl)
+ && C_DECL_INVISIBLE (olddecl)
+ && (!TREE_PUBLIC (newdecl)
+ || (DECL_INITIAL (newdecl)
+ && !TYPE_ARG_TYPES (TREE_TYPE (newdecl)))))
{
- /* If you declare a built-in function name as static, the
- built-in definition is overridden,
- but optionally warn this was a bad choice of name. */
if (warn_shadow)
warning ("%Jshadowing built-in function '%D'", newdecl, newdecl);
/* Discard the old built-in function. */
@@ -1252,23 +1259,15 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
/* Subroutine of duplicate_decls. NEWDECL has been found to be
consistent with OLDDECL, but carries new information. Merge the
- new information into OLDDECL. If DIFFERENT_BINDING_LEVEL or
- DIFFERENT_TU is true, avoid completely merging the decls, as this
- will break assumptions elsewhere. This function issues no
+ new information into OLDDECL. This function issues no
diagnostics. */
static void
-merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
- bool different_binding_level, bool different_tu)
+merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype)
{
int new_is_definition = (TREE_CODE (newdecl) == FUNCTION_DECL
&& DECL_INITIAL (newdecl) != 0);
- /* When copying info to olddecl, we store into write_olddecl
- instead. This allows us to avoid modifying olddecl when
- different_binding_level is true. */
- tree write_olddecl = different_binding_level ? newdecl : olddecl;
-
/* For real parm decl following a forward decl, return 1 so old decl
will be reused. Only allow this to happen once. */
if (TREE_CODE (newdecl) == PARM_DECL
@@ -1282,25 +1281,9 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
= (*targetm.merge_decl_attributes) (olddecl, newdecl);
/* Merge the data types specified in the two decls. */
- if (TREE_CODE (newdecl) != FUNCTION_DECL || !DECL_BUILT_IN (olddecl))
- {
- if (different_binding_level)
- {
- if (TYPE_ARG_TYPES (oldtype) != 0
- && TYPE_ARG_TYPES (newtype) == 0)
- TREE_TYPE (newdecl) = common_type (newtype, oldtype);
- else
- TREE_TYPE (newdecl)
- = build_type_attribute_variant
- (newtype,
- merge_attributes (TYPE_ATTRIBUTES (newtype),
- TYPE_ATTRIBUTES (oldtype)));
- }
- else
- TREE_TYPE (newdecl)
- = TREE_TYPE (olddecl)
- = common_type (newtype, oldtype);
- }
+ TREE_TYPE (newdecl)
+ = TREE_TYPE (olddecl)
+ = common_type (newtype, oldtype);
/* Lay the type out, unless already done. */
if (oldtype != TREE_TYPE (newdecl))
@@ -1331,33 +1314,27 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
/* Merge the type qualifiers. */
if (TREE_READONLY (newdecl))
- TREE_READONLY (write_olddecl) = 1;
+ TREE_READONLY (olddecl) = 1;
if (TREE_THIS_VOLATILE (newdecl))
{
- TREE_THIS_VOLATILE (write_olddecl) = 1;
+ TREE_THIS_VOLATILE (olddecl) = 1;
if (TREE_CODE (newdecl) == VAR_DECL)
make_var_volatile (newdecl);
}
/* Keep source location of definition rather than declaration. */
- /* When called with different_binding_level set, keep the old
- information so that meaningful diagnostics can be given. */
- if (DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0
- && ! different_binding_level)
+ if (DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0)
DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
/* Merge the unused-warning information. */
if (DECL_IN_SYSTEM_HEADER (olddecl))
DECL_IN_SYSTEM_HEADER (newdecl) = 1;
else if (DECL_IN_SYSTEM_HEADER (newdecl))
- DECL_IN_SYSTEM_HEADER (write_olddecl) = 1;
+ DECL_IN_SYSTEM_HEADER (olddecl) = 1;
/* Merge the initialization information. */
- /* When called with different_binding_level set, don't copy over
- DECL_INITIAL, so that we don't accidentally change function
- declarations into function definitions. */
- if (DECL_INITIAL (newdecl) == 0 && ! different_binding_level)
+ if (DECL_INITIAL (newdecl) == 0)
DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
/* Merge the section attribute.
@@ -1397,8 +1374,6 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
TREE_PUBLIC (newdecl) &= TREE_PUBLIC (olddecl);
/* This is since we don't automatically
copy the attributes of NEWDECL into OLDDECL. */
- /* No need to worry about different_binding_level here because
- then TREE_PUBLIC (newdecl) was true. */
TREE_PUBLIC (olddecl) = TREE_PUBLIC (newdecl);
/* If this clears `static', clear it in the identifier too. */
if (! TREE_PUBLIC (olddecl))
@@ -1406,24 +1381,15 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
}
if (DECL_EXTERNAL (newdecl))
{
- if (! different_binding_level || different_tu)
- {
- /* Don't mess with these flags on local externs; they remain
- external even if there's a declaration at file scope which
- isn't. */
- TREE_STATIC (newdecl) = TREE_STATIC (olddecl);
- DECL_EXTERNAL (newdecl) = DECL_EXTERNAL (olddecl);
- }
+ TREE_STATIC (newdecl) = TREE_STATIC (olddecl);
+ DECL_EXTERNAL (newdecl) = DECL_EXTERNAL (olddecl);
+
/* An extern decl does not override previous storage class. */
TREE_PUBLIC (newdecl) = TREE_PUBLIC (olddecl);
if (! DECL_EXTERNAL (newdecl))
{
DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl);
DECL_COMMON (newdecl) = DECL_COMMON (olddecl);
- /* If we have two non-EXTERNAL file-scope decls that are
- the same, only one of them should be written out. */
- if (different_tu)
- TREE_ASM_WRITTEN (newdecl) = 1;
}
}
else
@@ -1465,37 +1431,18 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
if (DECL_BUILT_IN (olddecl))
{
- /* Get rid of any built-in function if we have a function
- definition. */
- if (new_is_definition)
- {
- if (! different_binding_level)
- {
- TREE_TYPE (olddecl) = TREE_TYPE (newdecl);
- DECL_BUILT_IN_CLASS (olddecl) = NOT_BUILT_IN;
- }
- }
- else
- {
- /* If redeclaring a builtin function, and not a definition,
- it stays built in. */
- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
- }
+ /* If redeclaring a builtin function, it stays built in. */
+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
}
/* Also preserve various other info from the definition. */
if (! new_is_definition)
{
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
- /* When called with different_binding_level set, don't copy over
- DECL_INITIAL, so that we don't accidentally change function
- declarations into function definitions. */
- if (! different_binding_level)
- DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
+ DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
DECL_SAVED_INSNS (newdecl) = DECL_SAVED_INSNS (olddecl);
DECL_SAVED_TREE (newdecl) = DECL_SAVED_TREE (olddecl);
- DECL_ESTIMATED_INSNS (newdecl) = DECL_ESTIMATED_INSNS (olddecl);
DECL_ARGUMENTS (newdecl) = DECL_ARGUMENTS (olddecl);
/* Set DECL_INLINE on the declaration if we've got a body
@@ -1504,9 +1451,7 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
{
DECL_INLINE (newdecl) = 1;
DECL_ABSTRACT_ORIGIN (newdecl)
- = (different_binding_level
- ? DECL_ORIGIN (olddecl)
- : DECL_ABSTRACT_ORIGIN (olddecl));
+ = DECL_ABSTRACT_ORIGIN (olddecl);
}
}
else
@@ -1518,8 +1463,6 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
DECL_INLINE (newdecl) = 1;
}
}
- if (different_binding_level)
- return;
/* Copy most of the decl-specific fields of NEWDECL into OLDDECL.
But preserve OLDDECL's DECL_UID. */
@@ -1547,24 +1490,18 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype,
if appropriate.
If safely possible, alter OLDDECL to look like NEWDECL, and return
- true. Otherwise, return false.
-
- When DIFFERENT_BINDING_LEVEL is true, NEWDECL is an external
- declaration, and OLDDECL is in an outer scope and should thus not
- be changed. */
+ true. Otherwise, return false. */
static bool
-duplicate_decls (tree newdecl, tree olddecl,
- bool different_binding_level, bool different_tu)
+duplicate_decls (tree newdecl, tree olddecl)
{
tree newtype, oldtype;
if (!diagnose_mismatched_decls (newdecl, olddecl, &newtype, &oldtype))
return false;
- merge_decls (newdecl, olddecl, newtype, oldtype,
- different_binding_level, different_tu);
- return !different_binding_level;
+ merge_decls (newdecl, olddecl, newtype, oldtype);
+ return true;
}
@@ -1607,8 +1544,6 @@ record_external_decl (tree decl)
static void
warn_if_shadowing (tree x, tree old)
{
- const char *name;
-
/* Nothing to shadow? */
if (old == 0
/* Shadow warnings not wanted? */
@@ -1625,13 +1560,14 @@ warn_if_shadowing (tree x, tree old)
|| (TREE_CODE (x) == PARM_DECL && current_scope->outer->parm_flag))
return;
- name = IDENTIFIER_POINTER (DECL_NAME (x));
if (TREE_CODE (old) == PARM_DECL)
- shadow_warning (SW_PARAM, name, old);
+ warning ("%Jdeclaration of '%D' shadows a parameter", x, x);
else if (DECL_FILE_SCOPE_P (old))
- shadow_warning (SW_GLOBAL, name, old);
+ warning ("%Jdeclaration of '%D' shadows a global declaration", x, x);
else
- shadow_warning (SW_LOCAL, name, old);
+ warning ("%Jdeclaration of '%D' shadows a previous local", x, x);
+
+ warning ("%Jshadowed declaration is here", old);
}
@@ -1745,7 +1681,7 @@ pushdecl (tree x)
IDENTIFIER_POINTER (name));
old = lookup_name_current_level (name);
- if (old && duplicate_decls (x, old, 0, false))
+ if (old && duplicate_decls (x, old))
{
/* For PARM_DECLs, old may be a forward declaration.
If so, we want to remove it from its old location
@@ -1773,8 +1709,7 @@ pushdecl (tree x)
tree ext = any_external_decl (name);
if (ext)
{
- if (duplicate_decls (x, ext, scope != global_scope,
- false))
+ if (duplicate_decls (x, ext))
x = copy_node (ext);
}
else
@@ -6606,7 +6541,7 @@ merge_translation_unit_decls (void)
/* Print any appropriate error messages, and partially merge
the decls. */
- (void) duplicate_decls (decl, global_decl, true, true);
+ (void) duplicate_decls (decl, global_decl);
}
htab_delete (link_hash_table);
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index 5546fc9ddd1..aba571fab9a 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -1,6 +1,6 @@
/* Mainly the interface between cpplib and the C front ends.
Copyright (C) 1987, 1988, 1989, 1992, 1994, 1995, 1996, 1997
- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -69,7 +69,6 @@ static tree lex_charconst (const cpp_token *);
static void update_header_times (const char *);
static int dump_one_header (splay_tree_node, void *);
static void cb_line_change (cpp_reader *, const cpp_token *, int);
-static void cb_dir_change (cpp_reader *, const char *);
static void cb_ident (cpp_reader *, unsigned int, const cpp_string *);
static void cb_def_pragma (cpp_reader *, unsigned int);
static void cb_define (cpp_reader *, unsigned int, cpp_hashnode *);
@@ -96,7 +95,6 @@ init_c_lex (void)
cb = cpp_get_callbacks (parse_in);
cb->line_change = cb_line_change;
- cb->dir_change = cb_dir_change;
cb->ident = cb_ident;
cb->def_pragma = cb_def_pragma;
cb->valid_pch = c_common_valid_pch;
@@ -202,13 +200,6 @@ cb_line_change (cpp_reader *pfile ATTRIBUTE_UNUSED, const cpp_token *token,
input_line = SOURCE_LINE (map, token->line);
}
-static void
-cb_dir_change (cpp_reader *pfile ATTRIBUTE_UNUSED, const char *dir)
-{
- if (! set_src_pwd (dir))
- warning ("too late for # directive to set debug directory");
-}
-
void
fe_file_change (const struct line_map *new_map)
{
@@ -222,9 +213,7 @@ fe_file_change (const struct line_map *new_map)
{
/* Don't stack the main buffer on the input stack;
we already did in compile_file. */
- if (map == NULL)
- main_input_filename = new_map->to_file;
- else
+ if (map != NULL)
{
int included_at = SOURCE_LINE (new_map - 1, new_map->from_line - 1);
@@ -324,7 +313,7 @@ get_nonpadding_token (void)
}
int
-c_lex (tree *value)
+c_lex_with_flags (tree *value, unsigned char *cpp_flags)
{
const cpp_token *tok;
location_t atloc;
@@ -436,9 +425,17 @@ c_lex (tree *value)
c_common_no_more_pch ();
}
+ if (cpp_flags)
+ *cpp_flags = tok->flags;
return tok->type;
}
+int
+c_lex (tree *value)
+{
+ return c_lex_with_flags (value, NULL);
+}
+
/* Returns the narrowest C-visible unsigned type, starting with the
minimum specified by FLAGS, that can fit VALUE, or itk_none if
there isn't one. */
diff --git a/gcc/c-objc-common.c b/gcc/c-objc-common.c
index 5a57aa46065..fe0c0d5b933 100644
--- a/gcc/c-objc-common.c
+++ b/gcc/c-objc-common.c
@@ -80,7 +80,7 @@ c_cannot_inline_tree_fn (tree *fnp)
{
if (do_warning)
warning ("%Jfunction '%F' can never be inlined because it "
- "is supressed using -fno-inline", fn, fn);
+ "is suppressed using -fno-inline", fn, fn);
goto cannot_inline;
}
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index 59bce76607b..93637a2f2a8 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -1,5 +1,5 @@
/* C/ObjC/C++ command line option handling.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Neil Booth.
This file is part of GCC.
@@ -108,7 +108,8 @@ static void sanitize_cpp_opts (void);
static void add_prefixed_path (const char *, size_t);
static void push_command_line_include (void);
static void cb_file_change (cpp_reader *, const struct line_map *);
-static bool finish_options (const char *);
+static void cb_dir_change (cpp_reader *, const char *);
+static void finish_options (void);
#ifndef STDC_0_IN_SYSTEM_HEADERS
#define STDC_0_IN_SYSTEM_HEADERS 0
@@ -691,10 +692,6 @@ c_common_handle_option (size_t scode, const char *arg, int value)
warning ("switch \"%s\" is no longer supported", option->opt_text);
break;
- case OPT_fabi_version_:
- flag_abi_version = value;
- break;
-
case OPT_faccess_control:
flag_access_control = value;
break;
@@ -904,6 +901,10 @@ c_common_handle_option (size_t scode, const char *arg, int value)
cpp_opts->wide_charset = arg;
break;
+ case OPT_finput_charset_:
+ cpp_opts->input_charset = arg;
+ break;
+
case OPT_ftemplate_depth_:
max_tinst_depth = value;
break;
@@ -1049,8 +1050,10 @@ c_common_handle_option (size_t scode, const char *arg, int value)
/* Post-switch processing. */
bool
-c_common_post_options (const char **pfilename ATTRIBUTE_UNUSED)
+c_common_post_options (const char **pfilename)
{
+ struct cpp_callbacks *cb;
+
/* Canonicalize the input and output filenames. */
if (in_fnames == NULL)
{
@@ -1077,7 +1080,12 @@ c_common_post_options (const char **pfilename ATTRIBUTE_UNUSED)
/* Use tree inlining if possible. Function instrumentation is only
done in the RTL level, so we disable tree inlining. */
- if (! flag_instrument_function_entry_exit)
+ if (flag_instrument_function_entry_exit)
+ {
+ flag_no_inline = 1;
+ flag_really_no_inline = 1;
+ }
+ else
{
if (!flag_no_inline)
flag_no_inline = 1;
@@ -1138,7 +1146,9 @@ c_common_post_options (const char **pfilename ATTRIBUTE_UNUSED)
input_line = 0;
}
- cpp_get_callbacks (parse_in)->file_change = cb_file_change;
+ cb = cpp_get_callbacks (parse_in);
+ cb->file_change = cb_file_change;
+ cb->dir_change = cb_dir_change;
cpp_post_options (parse_in);
saved_lineno = input_line;
@@ -1148,6 +1158,15 @@ c_common_post_options (const char **pfilename ATTRIBUTE_UNUSED)
immediately. */
errorcount += cpp_errors (parse_in);
+ *pfilename = this_input_filename
+ = cpp_read_main_file (parse_in, in_fnames[0]);
+ if (this_input_filename == NULL)
+ return true;
+
+ if (flag_working_directory
+ && flag_preprocess_only && ! flag_no_line_commands)
+ pp_dir_change (parse_in, get_src_pwd ());
+
return flag_preprocess_only;
}
@@ -1172,8 +1191,8 @@ c_common_init (void)
if (flag_preprocess_only)
{
- if (finish_options (in_fnames[0]))
- preprocess_file (parse_in);
+ finish_options ();
+ preprocess_file (parse_in);
return false;
}
@@ -1207,10 +1226,12 @@ c_common_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
/* Reset cpplib's macros and start a new file. */
cpp_undef_all (parse_in);
+ main_input_filename = this_input_filename
+ = cpp_read_main_file (parse_in, in_fnames[file_index]);
+ if (this_input_filename == NULL)
+ break;
}
-
- if (! finish_options(in_fnames[file_index]))
- break;
+ finish_options ();
if (file_index == 0)
pch_init();
c_parse_file ();
@@ -1218,7 +1239,6 @@ c_common_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
file_index++;
} while (file_index < num_in_fnames);
- free_parser_stacks ();
finish_file ();
}
@@ -1351,8 +1371,6 @@ sanitize_cpp_opts (void)
actually output the current directory? */
if (flag_working_directory == -1)
flag_working_directory = (debug_info_level != DINFO_LEVEL_NONE);
- cpp_opts->working_directory
- = flag_preprocess_only && flag_working_directory;
}
/* Add include path with a prefix at the front of its name. */
@@ -1375,21 +1393,15 @@ add_prefixed_path (const char *suffix, size_t chain)
add_path (path, chain, 0);
}
-/* Handle -D, -U, -A, -imacros, and the first -include.
- TIF is the input file to which we will return after processing all
- the includes. Returns true on success. */
-static bool
-finish_options (const char *tif)
+/* Handle -D, -U, -A, -imacros, and the first -include. */
+static void
+finish_options (void)
{
- this_input_filename = tif;
- if (! cpp_find_main_file (parse_in, this_input_filename))
- return false;
-
if (!cpp_opts->preprocessed)
{
size_t i;
- cpp_change_file (parse_in, LC_ENTER, _("<built-in>"));
+ cpp_change_file (parse_in, LC_RENAME, _("<built-in>"));
cpp_init_builtins (parse_in, flag_hosted);
c_cpp_builtins (parse_in);
@@ -1439,7 +1451,6 @@ finish_options (const char *tif)
include_cursor = 0;
push_command_line_include ();
- return true;
}
/* Give CPP the next file given by -include, if any. */
@@ -1458,12 +1469,16 @@ push_command_line_include (void)
if (include_cursor == deferred_count)
{
include_cursor++;
- /* Restore the line map from <command line>. */
- if (! cpp_opts->preprocessed)
- cpp_change_file (parse_in, LC_LEAVE, NULL);
/* -Wunused-macros should only warn about macros defined hereafter. */
cpp_opts->warn_unused_macros = warn_unused_macros;
- cpp_push_main_file (parse_in);
+ /* Restore the line map from <command line>. */
+ if (! cpp_opts->preprocessed)
+ cpp_change_file (parse_in, LC_RENAME, main_input_filename);
+
+ /* Set this here so the client can change the option if it wishes,
+ and after stacking the main file so we don't trace the main file. */
+ cpp_get_line_maps (parse_in)->trace_includes
+ = cpp_opts->print_include_names;
}
}
@@ -1481,6 +1496,13 @@ cb_file_change (cpp_reader *pfile ATTRIBUTE_UNUSED,
push_command_line_include ();
}
+void
+cb_dir_change (cpp_reader *pfile ATTRIBUTE_UNUSED, const char *dir)
+{
+ if (! set_src_pwd (dir))
+ warning ("too late for # directive to set debug directory");
+}
+
/* Set the C 89 standard (with 1994 amendments if C94, without GNU
extensions if ISO). There is no concept of gnu94. */
static void
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index 4cdbfed8b0c..f4d4f417189 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -204,7 +204,7 @@ do { \
%type <ttype> init maybeasm
%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
%type <ttype> maybe_attribute attributes attribute attribute_list attrib
-%type <ttype> any_word extension
+%type <ttype> any_word
%type <ttype> compstmt compstmt_start compstmt_nostart compstmt_primary_start
%type <ttype> do_stmt_start poplevel stmt label
@@ -230,7 +230,7 @@ do { \
%type <ttype> parmlist_or_identifiers parmlist_or_identifiers_1
%type <ttype> identifiers_or_typenames
-%type <itype> setspecs setspecs_fp
+%type <itype> setspecs setspecs_fp extension
%type <location> save_location
@@ -295,15 +295,14 @@ static GTY(()) tree declspec_stack;
/* For __extension__, save/restore the warning flags which are
controlled by __extension__. */
-#define SAVE_EXT_FLAGS() \
- size_int (pedantic \
- | (warn_pointer_arith << 1) \
- | (warn_traditional << 2) \
- | (flag_iso << 3))
+#define SAVE_EXT_FLAGS() \
+ (pedantic \
+ | (warn_pointer_arith << 1) \
+ | (warn_traditional << 2) \
+ | (flag_iso << 3))
-#define RESTORE_EXT_FLAGS(tval) \
+#define RESTORE_EXT_FLAGS(val) \
do { \
- int val = tree_low_cst (tval, 0); \
pedantic = val & 1; \
warn_pointer_arith = (val >> 1) & 1; \
warn_traditional = (val >> 2) & 1; \
@@ -653,7 +652,7 @@ primary:
finish_init ();
if (pedantic && ! flag_isoc99)
- pedwarn ("ISO C89 forbids compound literals");
+ pedwarn ("ISO C90 forbids compound literals");
$$ = build_compound_literal (type, constructor);
}
| '(' expr ')'
@@ -1516,7 +1515,7 @@ initlist1:
initelt:
designator_list '=' initval
{ if (pedantic && ! flag_isoc99)
- pedwarn ("ISO C89 forbids specifying subobject to initialize"); }
+ pedwarn ("ISO C90 forbids specifying subobject to initialize"); }
| designator initval
{ if (pedantic)
pedwarn ("obsolete use of designated initializer without `='"); }
@@ -2504,10 +2503,9 @@ label: CASE expr_no_commas ':'
maybe_type_qual:
/* empty */
- { emit_line_note (input_location);
- $$ = NULL_TREE; }
+ { $$ = NULL_TREE; }
| TYPE_QUAL
- { emit_line_note (input_location); }
+ { }
;
xexpr:
@@ -3765,13 +3763,6 @@ yyprint (FILE *file, int yychar, YYSTYPE yyl)
/* This is not the ideal place to put these, but we have to get them out
of c-lex.c because cp/lex.c has its own versions. */
-/* Free malloced parser stacks if necessary. */
-
-void
-free_parser_stacks (void)
-{
-}
-
/* Parse the file. */
void
c_parse_file (void)
diff --git a/gcc/c-ppoutput.c b/gcc/c-ppoutput.c
index 22e595f9541..e97c9bc8ff7 100644
--- a/gcc/c-ppoutput.c
+++ b/gcc/c-ppoutput.c
@@ -1,5 +1,5 @@
/* Preprocess only, using cpplib.
- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Per Bothner, 1994-95.
@@ -334,6 +334,22 @@ cb_include (cpp_reader *pfile ATTRIBUTE_UNUSED, fileline line,
print.line++;
}
+/* Callback called when -fworking-director and -E to emit working
+ diretory in cpp output file. */
+
+void
+pp_dir_change (cpp_reader *pfile ATTRIBUTE_UNUSED, const char *dir)
+{
+ size_t to_file_len = strlen (dir);
+ unsigned char *to_file_quoted = alloca (to_file_len * 4 + 1);
+ unsigned char *p;
+
+ /* cpp_quote_string does not nul-terminate, so we have to do it ourselves. */
+ p = cpp_quote_string (to_file_quoted, (unsigned char *) dir, to_file_len);
+ *p = '\0';
+ fprintf (print.outf, "# 1 \"%s//\"\n", to_file_quoted);
+}
+
/* The file name, line number or system header flags have changed, as
described in MAP. From this point on, the old print.map might be
pointing to freed memory, and so must not be dereferenced. */
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index 00560459a47..c9e15056e78 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -1,5 +1,5 @@
/* Handle #pragma, system V.4 style. Supports #pragma weak and #pragma pack.
- Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h
index cea410b1580..a1469db1742 100644
--- a/gcc/c-pragma.h
+++ b/gcc/c-pragma.h
@@ -1,5 +1,5 @@
/* Pragma related interfaces.
- Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -55,5 +55,6 @@ extern tree maybe_apply_renaming_pragma (tree, tree);
extern void add_to_renaming_pragma_list (tree, tree);
extern int c_lex (tree *);
+extern int c_lex_with_flags (tree *, unsigned char *);
#endif /* GCC_C_PRAGMA_H */
diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c
index 2083db1a6ed..bcbfd793ad3 100644
--- a/gcc/c-pretty-print.c
+++ b/gcc/c-pretty-print.c
@@ -1,5 +1,5 @@
/* Subroutines common to both C and C++ pretty-printers.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
This file is part of GCC.
diff --git a/gcc/c-semantics.c b/gcc/c-semantics.c
index f3c61b42c35..38c4021d6cf 100644
--- a/gcc/c-semantics.c
+++ b/gcc/c-semantics.c
@@ -1,7 +1,7 @@
/* This file contains the definitions and documentation for the common
tree codes used in the GNU C and C++ compilers (see c-common.def
for the standard codes).
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Benjamin Chelf (chelf@codesourcery.com).
This file is part of GCC.
@@ -430,7 +430,6 @@ genrtl_while_stmt (tree t)
{
tree cond = WHILE_COND (t);
- emit_nop ();
emit_line_note (input_location);
expand_start_loop (1);
genrtl_do_pushlevel ();
@@ -467,7 +466,6 @@ genrtl_do_stmt_1 (tree cond, tree body)
}
else if (integer_nonzerop (cond))
{
- emit_nop ();
emit_line_note (input_location);
expand_start_loop (1);
@@ -478,7 +476,6 @@ genrtl_do_stmt_1 (tree cond, tree body)
}
else
{
- emit_nop ();
emit_line_note (input_location);
expand_start_loop_continue_elsewhere (1);
@@ -542,7 +539,6 @@ genrtl_for_stmt (tree t)
expand_stmt (FOR_INIT_STMT (t));
/* Expand the initialization. */
- emit_nop ();
emit_line_note (input_location);
if (FOR_EXPR (t))
expand_start_loop_continue_elsewhere (1);
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 4849ab2dd55..0500f81a3d8 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -268,7 +268,7 @@ extern tree build_array_ref (tree, tree);
extern tree build_external_ref (tree, int);
extern tree parser_build_binary_op (enum tree_code, tree, tree);
extern int c_tree_expr_nonnegative_p (tree);
-extern void readonly_warning (tree, const char *);
+extern void readonly_error (tree, const char *);
extern tree build_conditional_expr (tree, tree, tree);
extern tree build_compound_expr (tree);
extern tree c_cast_expr (tree, tree);
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index e8bec8f9b69..7d5f6ced81b 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -1710,6 +1710,10 @@ build_function_call (tree function, tree params)
executions of the program must execute the code. */
warning ("function called through a non-compatible type");
+ /* We can, however, treat "undefined" any way we please.
+ Call abort to encourage the user to fix the program. */
+ inform ("if this code is reached, the program will abort");
+
if (VOID_TYPE_P (return_type))
return trap;
else
@@ -2420,10 +2424,10 @@ build_unary_op (enum tree_code code, tree xarg, int flag)
/* Report a read-only lvalue. */
if (TREE_READONLY (arg))
- readonly_warning (arg,
- ((code == PREINCREMENT_EXPR
- || code == POSTINCREMENT_EXPR)
- ? "increment" : "decrement"));
+ readonly_error (arg,
+ ((code == PREINCREMENT_EXPR
+ || code == POSTINCREMENT_EXPR)
+ ? "increment" : "decrement"));
if (TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE)
val = boolean_increment (code, arg);
@@ -2645,21 +2649,21 @@ pedantic_lvalue_warning (enum tree_code code)
/* Warn about storing in something that is `const'. */
void
-readonly_warning (tree arg, const char *msgid)
+readonly_error (tree arg, const char *msgid)
{
if (TREE_CODE (arg) == COMPONENT_REF)
{
if (TYPE_READONLY (TREE_TYPE (TREE_OPERAND (arg, 0))))
- readonly_warning (TREE_OPERAND (arg, 0), msgid);
+ readonly_error (TREE_OPERAND (arg, 0), msgid);
else
- pedwarn ("%s of read-only member `%s'", _(msgid),
- IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (arg, 1))));
+ error ("%s of read-only member `%s'", _(msgid),
+ IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (arg, 1))));
}
else if (TREE_CODE (arg) == VAR_DECL)
- pedwarn ("%s of read-only variable `%s'", _(msgid),
- IDENTIFIER_POINTER (DECL_NAME (arg)));
+ error ("%s of read-only variable `%s'", _(msgid),
+ IDENTIFIER_POINTER (DECL_NAME (arg)));
else
- pedwarn ("%s of read-only location", _(msgid));
+ error ("%s of read-only location", _(msgid));
}
/* Mark EXP saying that we need to be able to take the
@@ -3309,7 +3313,7 @@ build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs)
|| ((TREE_CODE (lhstype) == RECORD_TYPE
|| TREE_CODE (lhstype) == UNION_TYPE)
&& C_TYPE_FIELDS_READONLY (lhstype)))
- readonly_warning (lhs, "assignment");
+ readonly_error (lhs, "assignment");
/* If storing into a structure or union member,
it has probably been given type `int'.
@@ -4304,6 +4308,9 @@ static int require_constant_elements;
such as (struct foo) {...}. */
static tree constructor_decl;
+/* start_init saves the ASMSPEC arg here for really_start_incremental_init. */
+static const char *constructor_asmspec;
+
/* Nonzero if this is an initializer for a top-level decl. */
static int constructor_top_level;
@@ -4375,6 +4382,7 @@ struct initializer_stack
{
struct initializer_stack *next;
tree decl;
+ const char *asmspec;
struct constructor_stack *constructor_stack;
struct constructor_range_stack *constructor_range_stack;
tree elements;
@@ -4391,12 +4399,17 @@ struct initializer_stack *initializer_stack;
/* Prepare to parse and output the initializer for variable DECL. */
void
-start_init (tree decl, tree asmspec_tree ATTRIBUTE_UNUSED, int top_level)
+start_init (tree decl, tree asmspec_tree, int top_level)
{
const char *locus;
struct initializer_stack *p = xmalloc (sizeof (struct initializer_stack));
+ const char *asmspec = 0;
+
+ if (asmspec_tree)
+ asmspec = TREE_STRING_POINTER (asmspec_tree);
p->decl = constructor_decl;
+ p->asmspec = constructor_asmspec;
p->require_constant_value = require_constant_value;
p->require_constant_elements = require_constant_elements;
p->constructor_stack = constructor_stack;
@@ -4410,6 +4423,7 @@ start_init (tree decl, tree asmspec_tree ATTRIBUTE_UNUSED, int top_level)
initializer_stack = p;
constructor_decl = decl;
+ constructor_asmspec = asmspec;
constructor_designated = 0;
constructor_top_level = top_level;
@@ -4466,6 +4480,7 @@ finish_init (void)
free (spelling_base);
constructor_decl = p->decl;
+ constructor_asmspec = p->asmspec;
require_constant_value = p->require_constant_value;
require_constant_elements = p->require_constant_elements;
constructor_stack = p->constructor_stack;
@@ -6322,7 +6337,7 @@ c_expand_asm_operands (tree string, tree outputs, tree inputs,
|| ((TREE_CODE (type) == RECORD_TYPE
|| TREE_CODE (type) == UNION_TYPE)
&& C_TYPE_FIELDS_READONLY (type)))
- readonly_warning (o[i], "modification by `asm'");
+ readonly_error (o[i], "modification by `asm'");
}
}
diff --git a/gcc/c.opt b/gcc/c.opt
index 4f9859f6a7a..2a2ff85b738 100644
--- a/gcc/c.opt
+++ b/gcc/c.opt
@@ -411,9 +411,6 @@ d
C ObjC C++ ObjC++ Joined
; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
-fabi-version=
-C++ ObjC++ Joined UInteger
-
faccess-control
C++ ObjC++
Enforce class member access control semantics
@@ -482,6 +479,11 @@ fexec-charset=
C ObjC C++ ObjC++ Joined RejectNegative
-fexec-charset=<cset> Convert all strings and character constants to character set <cset>
+finput-charset=
+C ObjC C++ ObjC++ Joined RejectNegative
+-finput-charset=<cset> Specify the default character set for source files.
+
+
fexternal-templates
C++ ObjC++
diff --git a/gcc/calls.c b/gcc/calls.c
index c16bdf10b95..96b4a3cac0d 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1,6 +1,6 @@
/* Convert function calls to rtl insns, for GNU C compiler.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -133,7 +133,8 @@ static int compute_argument_block_size (int, struct args_size *, int);
static void initialize_argument_information (int, struct arg_data *,
struct args_size *, int, tree,
tree, CUMULATIVE_ARGS *, int,
- rtx *, int *, int *, int *);
+ rtx *, int *, int *, int *,
+ bool);
static void compute_argument_addresses (struct arg_data *, rtx, int);
static rtx rtx_for_function_call (tree, tree);
static void load_register_parameters (struct arg_data *, int, rtx *, int,
@@ -1023,7 +1024,10 @@ store_unaligned_arguments_into_pseudos (struct arg_data *args, int num_actuals)
and may be modified by this routine.
OLD_PENDING_ADJ, MUST_PREALLOCATE and FLAGS are pointers to integer
- flags which may may be modified by this routine. */
+ flags which may may be modified by this routine.
+
+ CALL_FROM_THUNK_P is true if this call is the jump from a thunk to
+ the thunked-to function. */
static void
initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
@@ -1034,7 +1038,8 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
CUMULATIVE_ARGS *args_so_far,
int reg_parm_stack_space,
rtx *old_stack_level, int *old_pending_adj,
- int *must_preallocate, int *ecf_flags)
+ int *must_preallocate, int *ecf_flags,
+ bool call_from_thunk_p)
{
/* 1 if scanning parms front to back, -1 if scanning back to front. */
int inc;
@@ -1107,7 +1112,7 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
{
/* If we're compiling a thunk, pass through invisible
references instead of making a copy. */
- if (current_function_is_thunk
+ if (call_from_thunk_p
#ifdef FUNCTION_ARG_CALLEE_COPIES
|| (FUNCTION_ARG_CALLEE_COPIES (*args_so_far, TYPE_MODE (type),
type, argpos < n_named_args)
@@ -2075,6 +2080,8 @@ expand_call (tree exp, rtx target, int ignore)
/* Declaration of the function being called,
or 0 if the function is computed (not known by name). */
tree fndecl = 0;
+ /* The type of the function being called. */
+ tree fntype;
rtx insn;
int try_tail_call = 1;
int try_tail_recursion = 1;
@@ -2183,6 +2190,7 @@ expand_call (tree exp, rtx target, int ignore)
fndecl = get_callee_fndecl (exp);
if (fndecl)
{
+ fntype = TREE_TYPE (fndecl);
if (!flag_no_inline
&& fndecl != current_function_decl
&& DECL_INLINE (fndecl)
@@ -2218,15 +2226,15 @@ expand_call (tree exp, rtx target, int ignore)
attributes set in the type. */
else
{
+ fntype = TREE_TYPE (TREE_TYPE (p));
if (ignore
- && lookup_attribute ("warn_unused_result",
- TYPE_ATTRIBUTES (TREE_TYPE (TREE_TYPE (p)))))
+ && lookup_attribute ("warn_unused_result", TYPE_ATTRIBUTES (fntype)))
warning ("ignoring return value of function "
"declared with attribute warn_unused_result");
- flags |= flags_from_decl_or_type (TREE_TYPE (TREE_TYPE (p)));
+ flags |= flags_from_decl_or_type (fntype);
}
- struct_value = targetm.calls.struct_value_rtx (fndecl ? TREE_TYPE (fndecl) : 0, 0);
+ struct_value = targetm.calls.struct_value_rtx (fntype, 0);
/* Warn if this value is an aggregate type,
regardless of which calling convention we are using for it. */
@@ -2380,7 +2388,8 @@ expand_call (tree exp, rtx target, int ignore)
|| (ACCUMULATE_OUTGOING_ARGS
&& stack_arg_under_construction
&& structure_value_addr == virtual_outgoing_args_rtx)
- ? copy_addr_to_reg (structure_value_addr)
+ ? copy_addr_to_reg (convert_memory_address
+ (Pmode, structure_value_addr))
: structure_value_addr);
actparms
@@ -2444,7 +2453,8 @@ expand_call (tree exp, rtx target, int ignore)
n_named_args, actparms, fndecl,
&args_so_far, reg_parm_stack_space,
&old_stack_level, &old_pending_adj,
- &must_preallocate, &flags);
+ &must_preallocate, &flags,
+ CALL_FROM_THUNK_P (exp));
if (args_size.var)
{
diff --git a/gcc/cfg.c b/gcc/cfg.c
index 6ee671675bc..80425853666 100644
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -1,6 +1,6 @@
/* Control flow graph manipulation code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/cfganal.c b/gcc/cfganal.c
index 91297e53daa..aa3965cac07 100644
--- a/gcc/cfganal.c
+++ b/gcc/cfganal.c
@@ -333,6 +333,7 @@ flow_call_edges_add (sbitmap blocks)
for (i = 0; i < last_bb; i++)
{
basic_block bb = BASIC_BLOCK (i);
+ rtx libcall_end = NULL_RTX;
rtx insn;
rtx prev_insn;
@@ -350,9 +351,13 @@ flow_call_edges_add (sbitmap blocks)
edge e;
rtx split_at_insn = insn;
+ /* Don't split libcalls. */
+ if (libcall_end)
+ split_at_insn = libcall_end;
+
/* Don't split the block between a call and an insn that should
remain in the same block as the call. */
- if (GET_CODE (insn) == CALL_INSN)
+ else if (GET_CODE (insn) == CALL_INSN)
while (split_at_insn != BB_END (bb)
&& keep_with_call_p (NEXT_INSN (split_at_insn)))
split_at_insn = NEXT_INSN (split_at_insn);
@@ -381,6 +386,14 @@ flow_call_edges_add (sbitmap blocks)
make_edge (bb, EXIT_BLOCK_PTR, EDGE_FAKE);
}
+ /* Watch out for REG_LIBCALL/REG_RETVAL notes so that we know
+ whether we are currently in a libcall or not. Remember that
+ we are scanning backwards! */
+ if (find_reg_note (insn, REG_RETVAL, NULL_RTX))
+ libcall_end = insn;
+ if (find_reg_note (insn, REG_LIBCALL, NULL_RTX))
+ libcall_end = NULL_RTX;
+
if (insn == BB_HEAD (bb))
break;
}
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 3da1ea5ae59..5b15af9a3a3 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -1,6 +1,6 @@
/* Control flow optimization code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1785,13 +1785,13 @@ try_optimize_cfg (int mode)
/* If B has a single outgoing edge, but uses a
non-trivial jump instruction without side-effects, we
can either delete the jump entirely, or replace it
- with a simple unconditional jump. Use
- redirect_edge_and_branch to do the dirty work. */
+ with a simple unconditional jump. */
if (b->succ
&& ! b->succ->succ_next
&& b->succ->dest != EXIT_BLOCK_PTR
&& onlyjump_p (BB_END (b))
- && redirect_edge_and_branch (b->succ, b->succ->dest))
+ && try_redirect_by_replacing_jump (b->succ, b->succ->dest,
+ (mode & CLEANUP_CFGLAYOUT) != 0))
{
update_forwarder_flag (b);
changed_here = true;
@@ -1897,7 +1897,8 @@ cleanup_cfg (int mode)
PROP_DEATH_NOTES
| PROP_SCAN_DEAD_CODE
| PROP_KILL_DEAD_CODE
- | PROP_LOG_LINKS))
+ | ((mode & CLEANUP_LOG_LINKS)
+ ? PROP_LOG_LINKS : 0)))
break;
}
else if (!(mode & (CLEANUP_NO_INSN_DEL | CLEANUP_PRE_SIBCALL))
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index 4d8c67dd35d..33e906d6a6b 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -1,5 +1,5 @@
/* Natural loop functions
- Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -337,3 +337,5 @@ enum
};
extern void unroll_and_peel_loops (struct loops *, int);
+extern bool is_bct_cond (rtx);
+extern rtx get_var_set_from_bct (rtx);
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
index fb5f8ae6c6b..e3c7f778c17 100644
--- a/gcc/cfgloopanal.c
+++ b/gcc/cfgloopanal.c
@@ -1,5 +1,5 @@
/* Natural loop analysis code for GNU compiler.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -28,6 +28,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "cfgloop.h"
#include "expr.h"
#include "output.h"
+/* Needed for doloop_condition_get(). */
+#include "loop.h"
struct unmark_altered_insn_data;
static void unmark_altered (rtx, rtx, regset);
@@ -161,6 +163,10 @@ blocks_single_set_registers (basic_block *bbs, int nbbs, rtx *regs)
insn = NEXT_INSN (insn))
{
rtx set = single_set (insn);
+
+ if (!set && is_bct_cond (insn))
+ set = get_var_set_from_bct(insn);
+
if (!set)
continue;
if (!REG_P (SET_DEST (set)))
@@ -312,6 +318,10 @@ simple_increment (struct loop *loop, rtx *simple_increment_regs,
/* mod_insn must be a simple increment/decrement. */
set = single_set (mod_insn);
+
+ if (!set && is_bct_cond (mod_insn))
+ set = get_var_set_from_bct(mod_insn);
+
if (!set)
abort ();
if (!rtx_equal_p (SET_DEST (set), desc->var))
@@ -834,9 +844,10 @@ count_loop_iterations (struct loop_desc *desc, rtx init, rtx lim)
return NULL_RTX;
/* Normalize difference so the value is always first examined
- and later incremented. */
- if (!desc->postincr)
- exp = simplify_gen_binary (MINUS, mode, exp, stride);
+ and later incremented. Do not do this for a loop ending with a branch
+ and count register. */
+ if (!is_bct_cond (BB_END (desc->out_edge->src)) && (!desc->postincr))
+ exp = simplify_gen_binary (MINUS, mode, exp, stride);
/* Determine delta caused by exit condition. */
switch (cond)
@@ -1412,3 +1423,57 @@ expected_loop_iterations (const struct loop *loop)
return (freq_latch + freq_in - 1) / freq_in;
}
}
+
+/* This function checks if an instruction is a branch and count instruction
+ no matter if the flag HAVE_doloop_end is enabled or not. An alternative
+ would be the modification of doloop_condition_get function itself. */
+bool
+is_bct_cond (rtx insn)
+{
+ if (GET_CODE (insn) != JUMP_INSN)
+ return false;
+
+#ifdef HAVE_doloop_end
+ if (!doloop_condition_get (PATTERN(insn)))
+ return false;
+#else
+ return false;
+#endif
+
+ return true;
+}
+
+/* Extract the increment of the count register from the branch and count
+ instruction. */
+rtx
+get_var_set_from_bct (rtx insn)
+{
+ rtx rhs, lhs, cond;
+ rtx pattern;
+ rtx set;
+ pattern = PATTERN (insn);
+
+ if (!is_bct_cond (insn))
+ abort ();
+
+ set = XVECEXP (pattern, 0, 1);
+
+ /* IA64 has the decrement conditional, i.e. done only when the loop does not
+ end. We match (set (x (if_then_else (ne x 0) (plus x -1) x))) here. */
+
+ lhs = XEXP (set, 0);
+ rhs = XEXP (set, 1);
+ if (GET_CODE (set) != IF_THEN_ELSE)
+ return set;
+
+ cond = XEXP (rhs, 0);
+ if (GET_CODE (cond) != NE
+ || !rtx_equal_p (XEXP (cond, 0), lhs)
+ || !rtx_equal_p (XEXP (cond, 1), const0_rtx))
+ return set;
+
+ rhs = XEXP (rhs, 1);
+
+ return gen_rtx_SET (GET_MODE (lhs), lhs, rhs);
+}
+
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index c1b17455345..70d06563ac6 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1,6 +1,6 @@
/* Control flow graph manipulation code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -687,7 +687,7 @@ block_label (basic_block block)
apply only if all edges now point to the same block. The parameters and
return values are equivalent to redirect_edge_and_branch. */
-static bool
+bool
try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
{
basic_block src = e->src;
@@ -971,15 +971,13 @@ rtl_redirect_edge_and_branch (edge e, basic_block target)
if (e->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))
return false;
+ if (e->dest == target)
+ return true;
+
if (try_redirect_by_replacing_jump (e, target, false))
return true;
- /* Do this fast path late, as we want above code to simplify for cases
- where called on single edge leaving basic block containing nontrivial
- jump insn. */
- else if (e->dest == target)
- return false;
- else if (!redirect_branch_edge (e, target))
+ if (!redirect_branch_edge (e, target))
return false;
return true;
@@ -2437,11 +2435,11 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest)
if (e->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))
return false;
- if (e->src != ENTRY_BLOCK_PTR
- && try_redirect_by_replacing_jump (e, dest, true))
+ if (e->dest == dest)
return true;
- if (e->dest == dest)
+ if (e->src != ENTRY_BLOCK_PTR
+ && try_redirect_by_replacing_jump (e, dest, true))
return true;
if (e->src == ENTRY_BLOCK_PTR
@@ -2627,7 +2625,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b)
/* We should have fallthru edge in a, or we can do dummy redirection to get
it cleaned up. */
if (GET_CODE (BB_END (a)) == JUMP_INSN)
- redirect_edge_and_branch (a->succ, b);
+ try_redirect_by_replacing_jump (a->succ, b, true);
if (GET_CODE (BB_END (a)) == JUMP_INSN)
abort ();
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index ec3bcca34e7..e9d0b243bc4 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -231,10 +231,13 @@ cgraph_remove_node (struct cgraph_node *node)
if (node->previous)
node->previous->next = node->next;
else
- cgraph_nodes = node;
+ cgraph_nodes = node->next;
if (node->next)
node->next->previous = node->previous;
DECL_SAVED_TREE (node->decl) = NULL;
+ DECL_SAVED_INSNS (node->decl) = NULL;
+ DECL_ARGUMENTS (node->decl) = NULL;
+ DECL_INITIAL (node->decl) = error_mark_node;
slot =
htab_find_slot_with_hash (cgraph_hash, DECL_ASSEMBLER_NAME (node->decl),
IDENTIFIER_HASH_VALUE (DECL_ASSEMBLER_NAME
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index ee4372ee91b..b845ef7b597 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1,5 +1,5 @@
/* Callgraph handling code.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Contributed by Jan Hubicka
This file is part of GCC.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 27e4d8d8d7c..fdcac3e014d 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -228,6 +228,11 @@ cgraph_finalize_function (tree decl, bool nested)
/* If we've not yet emitted decl, tell the debug info about it. */
if (!TREE_ASM_WRITTEN (decl))
(*debug_hooks->deferred_inline_function) (decl);
+
+ /* We will never really output the function body, clear the SAVED_INSNS array
+ early then. */
+ if (DECL_EXTERNAL (decl))
+ DECL_SAVED_INSNS (decl) = NULL;
}
/* Walk tree and record all calls. Called via walk_tree. */
@@ -322,10 +327,9 @@ cgraph_analyze_function (struct cgraph_node *node)
cgraph_create_edges (decl, DECL_SAVED_TREE (decl));
node->local.inlinable = tree_inlinable_function_p (decl);
- if (!DECL_ESTIMATED_INSNS (decl))
- DECL_ESTIMATED_INSNS (decl)
+ if (!node->local.self_insns)
+ node->local.self_insns
= (*lang_hooks.tree_inlining.estimate_num_insns) (decl);
- node->local.self_insns = DECL_ESTIMATED_INSNS (decl);
if (node->local.inlinable)
node->local.disregard_inline_limits
= (*lang_hooks.tree_inlining.disregard_inline_limits) (decl);
@@ -436,6 +440,8 @@ cgraph_finalize_compilation_unit (void)
if (cgraph_dump_file)
fprintf (cgraph_dump_file, " %s", cgraph_node_name (node));
}
+ else
+ node->next_needed = NULL;
}
if (cgraph_dump_file)
{
@@ -474,6 +480,8 @@ cgraph_mark_functions_to_output (void)
&& !TREE_ASM_WRITTEN (decl) && !node->origin
&& !DECL_EXTERNAL (decl))
node->output = 1;
+ else
+ DECL_SAVED_INSNS (decl) = NULL;
}
}
@@ -523,9 +531,9 @@ cgraph_expand_function (struct cgraph_node *node)
/* Generate RTL for the body of DECL. Nested functions are expanded
via lang_expand_decl_stmt. */
(*lang_hooks.callgraph.expand_function) (decl);
+ if (DECL_DEFER_OUTPUT (decl))
+ abort ();
- if (!cgraph_function_possibly_inlined_p (decl))
- DECL_SAVED_TREE (decl) = NULL;
current_function_decl = NULL;
}
@@ -792,6 +800,105 @@ cgraph_inlined_callees (struct cgraph_node *node, struct cgraph_node **array)
return nfound;
}
+/* Perform reachability analysis and reclaim all unreachable nodes.
+ This function also remove unneeded bodies of extern inline functions
+ and thus needs to be done only after inlining decisions has been made. */
+static bool
+cgraph_remove_unreachable_nodes (void)
+{
+ struct cgraph_node *first = (void *) 1;
+ struct cgraph_node *node;
+ bool changed = false;
+ int insns = 0;
+
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, "\nReclaiming functions:");
+#ifdef ENABLE_CHECKING
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->aux)
+ abort ();
+#endif
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->needed && (!DECL_EXTERNAL (node->decl) || !node->analyzed))
+ {
+ node->aux = first;
+ first = node;
+ }
+ else if (node->aux)
+ abort ();
+
+ /* Perform reachability analysis. As a special case do not consider
+ extern inline functions not inlined as live because we won't output
+ them at all. */
+ while (first != (void *) 1)
+ {
+ struct cgraph_edge *e;
+ node = first;
+ first = first->aux;
+
+ for (e = node->callees; e; e = e->next_callee)
+ if (!e->callee->aux
+ && node->analyzed
+ && (!e->inline_failed || !e->callee->analyzed
+ || !DECL_EXTERNAL (e->callee->decl)))
+ {
+ e->callee->aux = first;
+ first = e->callee;
+ }
+ }
+
+ /* Remove unreachable nodes. Extern inline functions need special care;
+ Unreachable extern inline functions shall be removed.
+ Reachable extern inline functions we never inlined shall get their bodies
+ elliminated
+ Reachable extern inline functions we sometimes inlined will be turned into
+ unanalyzed nodes so they look like for true extern functions to the rest
+ of code. */
+ for (node = cgraph_nodes; node; node = node->next)
+ {
+ if (!node->aux)
+ {
+ int local_insns;
+ tree decl = node->decl;
+
+ if (DECL_SAVED_INSNS (decl))
+ local_insns = node->local.self_insns;
+ else
+ local_insns = 0;
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, " %s", cgraph_node_name (node));
+ if (!node->analyzed || !DECL_EXTERNAL (node->decl))
+ cgraph_remove_node (node);
+ else
+ {
+ struct cgraph_edge *e;
+
+ for (e = node->callers; e; e = e->next_caller)
+ if (e->caller->aux)
+ break;
+ if (e || node->needed)
+ {
+ DECL_SAVED_TREE (node->decl) = NULL_TREE;
+ while (node->callees)
+ cgraph_remove_edge (node, node->callees->callee);
+ node->analyzed = false;
+ }
+ else
+ cgraph_remove_node (node);
+ }
+ if (!DECL_SAVED_TREE (decl))
+ insns += local_insns;
+ changed = true;
+ }
+ }
+ for (node = cgraph_nodes; node; node = node->next)
+ node->aux = NULL;
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, "\nReclaimed %i insns", insns);
+ return changed;
+}
+
+
/* Estimate size of the function after inlining WHAT into TO. */
static int
@@ -1055,7 +1162,7 @@ cgraph_decide_inlining_of_small_functions (struct cgraph_node **inlined,
ninlined, &e->inline_failed))
{
for (i = 0; i < ninlined; i++)
- inlined[i]->output = 0, node->aux = 0;
+ inlined[i]->output = 0, inlined[i]->aux = 0;
if (cgraph_dump_file)
fprintf (cgraph_dump_file, " Not inlining into %s.\n",
cgraph_node_name (e->caller));
@@ -1071,17 +1178,16 @@ cgraph_decide_inlining_of_small_functions (struct cgraph_node **inlined,
the keys. */
for (i = 0; i < ninlined; i++)
{
- inlined[i]->output = 0, node->aux = 0;
+ inlined[i]->output = 0, inlined[i]->aux = 0;
if (heap_node[inlined[i]->uid])
fibheap_replace_key (heap, heap_node[inlined[i]->uid],
cgraph_estimate_growth (inlined[i]));
}
- if (cgraph_dump_file)
- fprintf (cgraph_dump_file,
- " Inlined into %s which now has %i insns.\n",
- cgraph_node_name (e->caller),
- e->caller->global.insns);
-
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file,
+ " Inlined into %s which now has %i insns.\n",
+ cgraph_node_name (e->caller),
+ e->caller->global.insns);
}
/* Similarly all functions called by the function we just inlined
@@ -1101,7 +1207,8 @@ cgraph_decide_inlining_of_small_functions (struct cgraph_node **inlined,
fibheap_replace_key (heap, heap_node[e->callee->uid],
cgraph_estimate_growth (e->callee));
- inlined_callees[i]->output = 0, node->aux = 0;
+ inlined_callees[i]->output = 0;
+ inlined_callees[i]->aux = 0;
}
if (cgraph_dump_file)
fprintf (cgraph_dump_file,
@@ -1150,6 +1257,11 @@ cgraph_decide_inlining (void)
if (cgraph_dump_file)
fprintf (cgraph_dump_file, "\nInlining always_inline functions:\n");
+#ifdef ENABLE_CHECKING
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->aux || node->output)
+ abort ();
+#endif
/* In the first pass mark all always_inline edges. Do this with a priority
so none of our later choices will make this impossible. */
@@ -1185,7 +1297,7 @@ cgraph_decide_inlining (void)
cgraph_mark_inline (node, e->callee, inlined, ninlined,
inlined_callees, ninlined_callees);
for (y = 0; y < ninlined_callees; y++)
- inlined_callees[y]->output = 0, node->aux = 0;
+ inlined_callees[y]->output = 0, inlined_callees[y]->aux = 0;
if (cgraph_dump_file)
fprintf (cgraph_dump_file,
" Inlined into %s which now has %i insns.\n",
@@ -1197,12 +1309,22 @@ cgraph_decide_inlining (void)
" Inlined %i times for a net change of %+i insns.\n",
node->global.cloned_times, overall_insns - old_insns);
for (y = 0; y < ninlined; y++)
- inlined[y]->output = 0, node->aux = 0;
+ inlined[y]->output = 0, inlined[y]->aux = 0;
}
+#ifdef ENABLE_CHECKING
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->aux || node->output)
+ abort ();
+#endif
if (!flag_really_no_inline)
{
cgraph_decide_inlining_of_small_functions (inlined, inlined_callees);
+#ifdef ENABLE_CHECKING
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->aux || node->output)
+ abort ();
+#endif
if (cgraph_dump_file)
fprintf (cgraph_dump_file, "\nDeciding on functions called once:\n");
@@ -1251,7 +1373,7 @@ cgraph_decide_inlining (void)
ninlined, inlined_callees,
ninlined_callees);
for (y = 0; y < ninlined_callees; y++)
- inlined_callees[y]->output = 0, node->aux = 0;
+ inlined_callees[y]->output = 0, inlined_callees[y]->aux = 0;
if (cgraph_dump_file)
fprintf (cgraph_dump_file,
" Inlined into %s which now has %i insns"
@@ -1267,11 +1389,12 @@ cgraph_decide_inlining (void)
" Inline limit reached, not inlined.\n");
}
for (y = 0; y < ninlined; y++)
- inlined[y]->output = 0, node->aux = 0;
+ inlined[y]->output = 0, inlined[y]->aux = 0;
}
}
}
}
+ cgraph_remove_unreachable_nodes ();
if (cgraph_dump_file)
fprintf (cgraph_dump_file,
@@ -1317,7 +1440,7 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node)
cgraph_mark_inline (node, e->callee, inlined, ninlined,
inlined_callees, ninlined_callees);
for (y = 0; y < ninlined_callees; y++)
- inlined_callees[y]->output = 0, node->aux = 0;
+ inlined_callees[y]->output = 0, inlined_callees[y]->aux = 0;
}
if (!flag_really_no_inline)
@@ -1342,13 +1465,13 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node)
cgraph_mark_inline (node, e->callee, inlined, ninlined,
inlined_callees, ninlined_callees);
for (y = 0; y < ninlined_callees; y++)
- inlined_callees[y]->output = 0, node->aux = 0;
+ inlined_callees[y]->output = 0, inlined_callees[y]->aux = 0;
}
}
/* Clear the flags set by cgraph_inlined_into. */
for (y = 0; y < ninlined; y++)
- inlined[y]->output = 0, node->aux = 0;
+ inlined[y]->output = 0, inlined[y]->aux = 0;
free (inlined);
free (inlined_callees);
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 11858687ee4..c41a347435b 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -1,7 +1,7 @@
/* Collect static initialization info into data structures that can be
traversed by C++ initialization and finalization routines.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Chris Smith (csmith@convex.com).
Heavily modified by Michael Meissner (meissner@cygnus.com),
Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
diff --git a/gcc/combine.c b/gcc/combine.c
index e54ef60f21b..1c839ef64bf 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1,6 +1,6 @@
/* Optimize by combining instructions for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -91,6 +91,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "toplev.h"
#include "target.h"
+#ifndef SHIFT_COUNT_TRUNCATED
+#define SHIFT_COUNT_TRUNCATED 0
+#endif
+
/* It is not safe to use ordinary gen_lowpart in combine.
Use gen_lowpart_for_combine instead. See comments there. */
#define gen_lowpart dont_use_gen_lowpart_you_dummy
@@ -958,6 +962,7 @@ can_combine_p (rtx insn, rtx i3, rtx pred ATTRIBUTE_UNUSED, rtx succ,
for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++)
{
rtx elt = XVECEXP (PATTERN (insn), 0, i);
+ rtx note;
switch (GET_CODE (elt))
{
@@ -1008,6 +1013,8 @@ can_combine_p (rtx insn, rtx i3, rtx pred ATTRIBUTE_UNUSED, rtx succ,
/* Ignore SETs whose result isn't used but not those that
have side-effects. */
if (find_reg_note (insn, REG_UNUSED, SET_DEST (elt))
+ && (!(note = find_reg_note (insn, REG_EH_REGION, NULL_RTX))
+ || INTVAL (XEXP (note, 0)) <= 0)
&& ! side_effects_p (elt))
break;
@@ -2012,7 +2019,8 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
/* If the result isn't valid, see if it is a PARALLEL of two SETs where
- the second SET's destination is a register that is unused. In that case,
+ the second SET's destination is a register that is unused and isn't
+ marked as an instruction that might trap in an EH region. In that case,
we just need the first SET. This can occur when simplifying a divmod
insn. We *must* test for this case here because the code below that
splits two independent SETs doesn't handle this case correctly when it
@@ -2028,37 +2036,42 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
{
rtx set0 = XVECEXP (newpat, 0, 0);
rtx set1 = XVECEXP (newpat, 0, 1);
-
+ rtx note;
+
if (((GET_CODE (SET_DEST (set1)) == REG
- && find_reg_note (i3, REG_UNUSED, SET_DEST (set1)))
- || (GET_CODE (SET_DEST (set1)) == SUBREG
- && find_reg_note (i3, REG_UNUSED, SUBREG_REG (SET_DEST (set1)))))
- && ! side_effects_p (SET_SRC (set1)))
- {
- newpat = set0;
- insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
- }
-
+ && find_reg_note (i3, REG_UNUSED, SET_DEST (set1)))
+ || (GET_CODE (SET_DEST (set1)) == SUBREG
+ && find_reg_note (i3, REG_UNUSED, SUBREG_REG (SET_DEST (set1)))))
+ && (!(note = find_reg_note (i3, REG_EH_REGION, NULL_RTX))
+ || INTVAL (XEXP (note, 0)) <= 0)
+ && ! side_effects_p (SET_SRC (set1)))
+ {
+ newpat = set0;
+ insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
+ }
+
else if (((GET_CODE (SET_DEST (set0)) == REG
- && find_reg_note (i3, REG_UNUSED, SET_DEST (set0)))
- || (GET_CODE (SET_DEST (set0)) == SUBREG
- && find_reg_note (i3, REG_UNUSED,
- SUBREG_REG (SET_DEST (set0)))))
- && ! side_effects_p (SET_SRC (set0)))
- {
- newpat = set1;
- insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
-
- if (insn_code_number >= 0)
- {
- /* If we will be able to accept this, we have made a
- change to the destination of I3. This requires us to
- do a few adjustments. */
-
- PATTERN (i3) = newpat;
- adjust_for_new_dest (i3);
- }
- }
+ && find_reg_note (i3, REG_UNUSED, SET_DEST (set0)))
+ || (GET_CODE (SET_DEST (set0)) == SUBREG
+ && find_reg_note (i3, REG_UNUSED,
+ SUBREG_REG (SET_DEST (set0)))))
+ && (!(note = find_reg_note (i3, REG_EH_REGION, NULL_RTX))
+ || INTVAL (XEXP (note, 0)) <= 0)
+ && ! side_effects_p (SET_SRC (set0)))
+ {
+ newpat = set1;
+ insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
+
+ if (insn_code_number >= 0)
+ {
+ /* If we will be able to accept this, we have made a
+ change to the destination of I3. This requires us to
+ do a few adjustments. */
+
+ PATTERN (i3) = newpat;
+ adjust_for_new_dest (i3);
+ }
+ }
}
/* If we were combining three insns and the result is a simple SET
@@ -4545,7 +4558,6 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int last,
return simplify_shift_const (x, code, mode, XEXP (x, 0),
INTVAL (XEXP (x, 1)));
-#ifdef SHIFT_COUNT_TRUNCATED
else if (SHIFT_COUNT_TRUNCATED && GET_CODE (XEXP (x, 1)) != REG)
SUBST (XEXP (x, 1),
force_to_mode (XEXP (x, 1), GET_MODE (XEXP (x, 1)),
@@ -4553,8 +4565,6 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int last,
<< exact_log2 (GET_MODE_BITSIZE (GET_MODE (x))))
- 1,
NULL_RTX, 0));
-#endif
-
break;
case VEC_SELECT:
@@ -4928,6 +4938,7 @@ simplify_if_then_else (rtx x)
/* (IF_THEN_ELSE (NE REG 0) (0) (8)) is REG for nonzero_bits (REG) == 8. */
if (true_code == NE && XEXP (cond, 1) == const0_rtx
&& false_rtx == const0_rtx && GET_CODE (true_rtx) == CONST_INT
+ && GET_MODE (XEXP (cond, 0)) == mode
&& (INTVAL (true_rtx) & GET_MODE_MASK (mode))
== nonzero_bits (XEXP (cond, 0), mode)
&& (i = exact_log2 (INTVAL (true_rtx) & GET_MODE_MASK (mode))) >= 0)
@@ -9124,10 +9135,8 @@ simplify_shift_const (rtx x, enum rtx_code code,
/* Make sure and truncate the "natural" shift on the way in. We don't
want to do this inside the loop as it makes it more difficult to
combine shifts. */
-#ifdef SHIFT_COUNT_TRUNCATED
if (SHIFT_COUNT_TRUNCATED)
orig_count &= GET_MODE_BITSIZE (mode) - 1;
-#endif
/* If we were given an invalid count, don't do anything except exactly
what was requested. */
@@ -9870,7 +9879,7 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes)
int num_clobbers_to_add = 0;
int i;
rtx notes = 0;
- rtx dummy_insn;
+ rtx old_notes, old_pat;
/* If PAT is a PARALLEL, check to see if it contains the CLOBBER
we use to indicate that something didn't match. If we find such a
@@ -9881,13 +9890,12 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes)
&& XEXP (XVECEXP (pat, 0, i), 0) == const0_rtx)
return -1;
- /* *pnewpat does not have to be actual PATTERN (insn), so make a dummy
- instruction for pattern recognition. */
- dummy_insn = shallow_copy_rtx (insn);
- PATTERN (dummy_insn) = pat;
- REG_NOTES (dummy_insn) = 0;
+ old_pat = PATTERN (insn);
+ old_notes = REG_NOTES (insn);
+ PATTERN (insn) = pat;
+ REG_NOTES (insn) = 0;
- insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add);
+ insn_code_number = recog (pat, insn, &num_clobbers_to_add);
/* If it isn't, there is the possibility that we previously had an insn
that clobbered some register as a side effect, but the combined
@@ -9912,9 +9920,11 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes)
if (pos == 1)
pat = XVECEXP (pat, 0, 0);
- PATTERN (dummy_insn) = pat;
- insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add);
+ PATTERN (insn) = pat;
+ insn_code_number = recog (pat, insn, &num_clobbers_to_add);
}
+ PATTERN (insn) = old_pat;
+ REG_NOTES (insn) = old_notes;
/* Recognize all noop sets, these will be killed by followup pass. */
if (insn_code_number < 0 && GET_CODE (pat) == SET && set_noop_p (pat))
@@ -10523,8 +10533,10 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
a constant that has only a single bit set and are comparing it
with zero, we can convert this into an equality comparison
between the position and the location of the single bit. */
-
- if (GET_CODE (XEXP (op0, 0)) == CONST_INT
+ /* Except we can't if SHIFT_COUNT_TRUNCATED is set, since we might
+ have already reduced the shift count modulo the word size. */
+ if (!SHIFT_COUNT_TRUNCATED
+ && GET_CODE (XEXP (op0, 0)) == CONST_INT
&& XEXP (op0, 1) == const1_rtx
&& equality_comparison_p && const_op == 0
&& (i = exact_log2 (INTVAL (XEXP (op0, 0)))) >= 0)
diff --git a/gcc/common.opt b/gcc/common.opt
index 302dfac6709..261c8d299bb 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -179,6 +179,9 @@ Common
fPIE
Common
+fabi-version=
+Common Joined UInteger
+
falign-functions
Common
Align the start of functions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index fd75363eba2..54d35af0181 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1,5 +1,5 @@
# GCC target-specific configuration file.
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.
#This file is part of GCC.
@@ -84,6 +84,9 @@
# the compiler proper (cc1, cc1obj, cc1plus)
# depending on target.
#
+# extra_gcc_objs List of extra objects that should be linked into
+# the compiler driver (gcc) depending on target.
+#
# extra_headers List of used header files from the directory
# config/${cpu_type}.
#
@@ -769,6 +772,11 @@ hppa*-*-linux* | parisc*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
pa/pa32-regs.h pa/pa32-linux.h"
tmake_file="t-slibgcc-elf-ver t-linux pa/t-linux"
+ # if not configured with --enable-sjlj-exceptions, bump the
+ # libgcc version number
+ if test x$sjlj != x1; then
+ tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
+ fi
;;
# port not yet contributed.
#hppa*-*-openbsd*)
@@ -1136,10 +1144,11 @@ i[4567]86-wrs-vxworks)
i[34567]86-*-pe | i[34567]86-*-cygwin*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h"
xm_file=i386/xm-cygwin.h
- tmake_file="i386/t-cygming i386/t-cygwin"
+ tmake_file="i386/t-cygwin i386/t-cygming"
extra_objs=winnt.o
c_target_objs=cygwin2.o
cxx_target_objs=cygwin2.o
+ extra_gcc_objs=cygwin1.o
if test x$enable_threads = xyes; then
thread_file='posix'
fi
@@ -1424,6 +1433,11 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux
tm_file="m68k/m68k.h dbxelf.h elfos.h svr4.h linux.h m68k/linux.h"
tm_defines="MOTOROLA USE_GAS"
tmake_file="t-slibgcc-elf-ver t-linux"
+ # if not configured with --enable-sjlj-exceptions, bump the
+ # libgcc version number
+ if test x$sjlj != x1; then
+ tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
+ fi
;;
m68k-*-rtems*)
tmake_file="m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems"
@@ -1441,34 +1455,6 @@ mcore-*-pe*)
tmake_file=mcore/t-mcore-pe
use_fixproto=yes
;;
-mips-sgi-irix6*o32) # SGI System V.4., IRIX 6, O32 ABI
- tm_file="${tm_file} mips/iris5.h"
- if test x$gas = xyes
- then
- tm_file="${tm_file} mips/sdb.h mips/iris5gas.h mips/iris6-o32-gas.h"
- if test x$stabs = xyes
- then
- tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
- fi
- tmake_file=mips/t-iris5-gas
- else
- tm_file="${tm_file} mips/iris6-o32-as.h"
- tmake_file=mips/t-iris5-as
- fi
- tm_file="${tm_file} mips/iris6-o32.h"
- tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
- target_cpu_default="MASK_ABICALLS"
- # mips-tfile doesn't work yet
- # See comment in mips/iris5.h file.
- if test x$gas = xno
- then
- use_collect2=yes
- fi
-# if test x$enable_threads = xyes; then
-# thread_file='irix'
-# fi
- use_fixproto=yes
- ;;
mips-sgi-irix6*) # SGI System V.4., IRIX 6
tm_file="${tm_file} mips/iris5.h mips/iris6.h"
tmake_file="mips/t-iris mips/t-iris5-6 mips/t-iris6"
@@ -1479,7 +1465,7 @@ mips-sgi-irix6*) # SGI System V.4., IRIX 6
if test "x$gnu_ld" = xyes
then
tm_file="${tm_file} mips/iris6gld.h"
- tmake_file="$tmake_file mips/t-iris6gld"
+ tmake_file="$tmake_file mips/t-irix-gld"
fi
target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_64BIT"
tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
@@ -1519,11 +1505,19 @@ mips-sgi-irix5*) # SGI System V.4., IRIX 5
else
tmake_file=mips/t-iris5-as
fi
+ if test "x$gnu_ld" = xyes
+ then
+ tm_file="${tm_file} mips/iris5gld.h"
+ tmake_file="$tmake_file mips/t-irix-gld"
+ fi
tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
target_cpu_default="MASK_ABICALLS"
# mips-tfile doesn't work yet
# See comment in mips/iris5.h file.
- use_collect2=yes
+ if test x$gas = xno
+ then
+ use_collect2=yes
+ fi
# if test x$enable_threads = xyes; then
# thread_file='irix'
# fi
@@ -2555,7 +2549,11 @@ fi
for which in cpu tune; do
eval "val=\$with_$which"
case ${val} in
- "" | default32 | default64 | common \
+ default32 | default64)
+ with_which="with_$which"
+ eval $with_which=
+ ;;
+ "" | common \
| power | power2 | power3 | power4 \
| powerpc | powerpc64 \
| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index e25ece23030..189e71f460e 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on the DEC Alpha.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
@@ -1219,9 +1219,10 @@ aligned_memory_operand (rtx op, enum machine_mode mode)
}
}
- if (GET_CODE (op) != MEM
- || GET_MODE (op) != mode)
+ if (GET_CODE (op) != MEM)
return 0;
+ if (MEM_ALIGN (op) >= 32)
+ return 1;
op = XEXP (op, 0);
/* LEGITIMIZE_RELOAD_ADDRESS creates (plus (plus reg const_hi) const_lo)
@@ -1261,8 +1262,9 @@ unaligned_memory_operand (rtx op, enum machine_mode mode)
}
}
- if (GET_CODE (op) != MEM
- || GET_MODE (op) != mode)
+ if (GET_CODE (op) != MEM)
+ return 0;
+ if (MEM_ALIGN (op) >= 32)
return 0;
op = XEXP (op, 0);
@@ -2501,7 +2503,14 @@ alpha_emit_set_const_1 (rtx target, enum machine_mode mode,
}
else if (n >= 2 + (extra != 0))
{
- temp = copy_to_suggested_reg (GEN_INT (high << 16), subtarget, mode);
+ if (no_new_pseudos)
+ {
+ emit_insn (gen_rtx_SET (VOIDmode, target, GEN_INT (high << 16)));
+ temp = target;
+ }
+ else
+ temp = copy_to_suggested_reg (GEN_INT (high << 16),
+ subtarget, mode);
/* As of 2002-02-23, addsi3 is only available when not optimizing.
This means that if we go through expand_binop, we'll try to
@@ -2876,13 +2885,24 @@ alpha_expand_mov_nobwx (enum machine_mode mode, rtx *operands)
{
rtx aligned_mem, bitnum;
rtx scratch = gen_reg_rtx (SImode);
+ rtx subtarget;
+ bool copyout;
get_aligned_mem (operands[1], &aligned_mem, &bitnum);
+ subtarget = operands[0];
+ if (GET_CODE (subtarget) == REG)
+ subtarget = gen_lowpart (DImode, subtarget), copyout = false;
+ else
+ subtarget = gen_reg_rtx (DImode), copyout = true;
+
emit_insn ((mode == QImode
? gen_aligned_loadqi
: gen_aligned_loadhi)
- (operands[0], aligned_mem, bitnum, scratch));
+ (subtarget, aligned_mem, bitnum, scratch));
+
+ if (copyout)
+ emit_move_insn (operands[0], gen_lowpart (mode, subtarget));
}
}
else
@@ -2891,16 +2911,28 @@ alpha_expand_mov_nobwx (enum machine_mode mode, rtx *operands)
code depend on parameter evaluation order which will cause
bootstrap failures. */
- rtx temp1 = gen_reg_rtx (DImode);
- rtx temp2 = gen_reg_rtx (DImode);
- rtx seq = ((mode == QImode
- ? gen_unaligned_loadqi
- : gen_unaligned_loadhi)
- (operands[0], get_unaligned_address (operands[1], 0),
- temp1, temp2));
+ rtx temp1, temp2, seq, subtarget;
+ bool copyout;
+
+ temp1 = gen_reg_rtx (DImode);
+ temp2 = gen_reg_rtx (DImode);
+ subtarget = operands[0];
+ if (GET_CODE (subtarget) == REG)
+ subtarget = gen_lowpart (DImode, subtarget), copyout = false;
+ else
+ subtarget = gen_reg_rtx (DImode), copyout = true;
+
+ seq = ((mode == QImode
+ ? gen_unaligned_loadqi
+ : gen_unaligned_loadhi)
+ (subtarget, get_unaligned_address (operands[1], 0),
+ temp1, temp2));
alpha_set_memflags (seq, operands[1]);
emit_insn (seq);
+
+ if (copyout)
+ emit_move_insn (operands[0], gen_lowpart (mode, subtarget));
}
return true;
}
@@ -6703,13 +6735,10 @@ alpha_sa_mask (unsigned long *imaskP, unsigned long *fmaskP)
unsigned long fmask = 0;
unsigned int i;
- /* Irritatingly, there are two kinds of thunks -- those created with
- TARGET_ASM_OUTPUT_MI_THUNK and those with DECL_THUNK_P that go
- through the regular part of the compiler. In the
- TARGET_ASM_OUTPUT_MI_THUNK case we don't have valid register life
- info, but assemble_start_function wants to output .frame and
- .mask directives. */
- if (current_function_is_thunk && !no_new_pseudos)
+ /* When outputting a thunk, we don't have valid register life info,
+ but assemble_start_function wants to output .frame and .mask
+ directives. */
+ if (current_function_is_thunk)
{
*imaskP = 0;
*fmaskP = 0;
@@ -7147,15 +7176,14 @@ alpha_expand_prologue (void)
and subtract it to sp.
Yes, that's correct -- we have to reload the whole constant
- into a temporary via ldah+lda then subtract from sp. To
- ensure we get ldah+lda, we use a special pattern. */
+ into a temporary via ldah+lda then subtract from sp. */
HOST_WIDE_INT lo, hi;
lo = ((frame_size & 0xffff) ^ 0x8000) - 0x8000;
hi = frame_size - lo;
emit_move_insn (ptr, GEN_INT (hi));
- emit_insn (gen_nt_lda (ptr, GEN_INT (lo)));
+ emit_insn (gen_adddi3 (ptr, ptr, GEN_INT (lo)));
seq = emit_insn (gen_subdi3 (stack_pointer_rtx, stack_pointer_rtx,
ptr));
}
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 0eeb9de2616..b46197f1bbd 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler, for DEC Alpha.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
@@ -614,12 +614,11 @@ extern const char *alpha_tls_size_string; /* For -mtls-size= */
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
On Alpha, the integer registers can hold any mode. The floating-point
- registers can hold 32-bit and 64-bit integers as well, but not 16-bit
- or 8-bit values. */
+ registers can hold 64-bit integers as well, but not smaller values. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
((REGNO) >= 32 && (REGNO) <= 62 \
- ? GET_MODE_UNIT_SIZE (MODE) == 8 || GET_MODE_UNIT_SIZE (MODE) == 4 \
+ ? (MODE) == SFmode || (MODE) == DFmode || (MODE) == DImode \
: 1)
/* Value is 1 if MODE is a supported vector mode. */
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 6c25d67dff9..998e30055ae 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -1,6 +1,6 @@
;; Machine description for DEC Alpha for GNU C compiler
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
;;
;; This file is part of GCC.
@@ -30,7 +30,7 @@
(UNSPEC_INSXH 2)
(UNSPEC_MSKXH 3)
(UNSPEC_CVTQL 4)
- (UNSPEC_NT_LDA 5)
+ (UNSPEC_CVTLQ 5)
(UNSPEC_UMK_LAUM 6)
(UNSPEC_UMK_LALM 7)
(UNSPEC_UMK_LAL 8)
@@ -185,41 +185,36 @@
""
"")
-(define_insn "*extendsidi2_nofix"
- [(set (match_operand:DI 0 "register_operand" "=r,r,*f,?*f")
- (sign_extend:DI
- (match_operand:SI 1 "nonimmediate_operand" "r,m,*f,m")))]
- "! TARGET_FIX"
- "@
- addl $31,%1,%0
- ldl %0,%1
- cvtlq %1,%0
- lds %0,%1\;cvtlq %0,%0"
- [(set_attr "type" "iadd,ild,fadd,fld")
- (set_attr "length" "*,*,*,8")])
+(define_insn "*cvtlq"
+ [(set (match_operand:DI 0 "register_operand" "=f")
+ (unspec:DI [(match_operand:SF 1 "reg_or_0_operand" "fG")]
+ UNSPEC_CVTLQ))]
+ ""
+ "cvtlq %1,%0"
+ [(set_attr "type" "fadd")])
-(define_insn "*extendsidi2_fix"
- [(set (match_operand:DI 0 "register_operand" "=r,r,r,?*f,?*f")
+(define_insn "*extendsidi2_1"
+ [(set (match_operand:DI 0 "register_operand" "=r,r,!*f")
(sign_extend:DI
- (match_operand:SI 1 "nonimmediate_operand" "r,m,*f,*f,m")))]
- "TARGET_FIX"
+ (match_operand:SI 1 "nonimmediate_operand" "r,m,m")))]
+ ""
"@
addl $31,%1,%0
ldl %0,%1
- ftois %1,%0
- cvtlq %1,%0
lds %0,%1\;cvtlq %0,%0"
- [(set_attr "type" "iadd,ild,ftoi,fadd,fld")
- (set_attr "length" "*,*,*,*,8")])
+ [(set_attr "type" "iadd,ild,fld")
+ (set_attr "length" "*,*,8")])
-;; Due to issues with CLASS_CANNOT_CHANGE_SIZE, we cannot use a subreg here.
(define_split
[(set (match_operand:DI 0 "hard_fp_register_operand" "")
(sign_extend:DI (match_operand:SI 1 "memory_operand" "")))]
"reload_completed"
[(set (match_dup 2) (match_dup 1))
- (set (match_dup 0) (sign_extend:DI (match_dup 2)))]
- "operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]));")
+ (set (match_dup 0) (unspec:DI [(match_dup 2)] UNSPEC_CVTLQ))]
+{
+ operands[1] = adjust_address (operands[1], SFmode, 0);
+ operands[2] = gen_rtx_REG (SFmode, REGNO (operands[0]));
+})
;; Optimize sign-extension of SImode loads. This shows up in the wake of
;; reload when converting fp->int.
@@ -235,28 +230,6 @@
(sign_extend:DI (match_dup 1)))]
"")
-(define_peephole2
- [(set (match_operand:SI 0 "hard_int_register_operand" "")
- (match_operand:SI 1 "hard_fp_register_operand" ""))
- (set (match_operand:DI 2 "hard_int_register_operand" "")
- (sign_extend:DI (match_dup 0)))]
- "TARGET_FIX
- && (true_regnum (operands[0]) == true_regnum (operands[2])
- || peep2_reg_dead_p (2, operands[0]))"
- [(set (match_dup 2)
- (sign_extend:DI (match_dup 1)))]
- "")
-
-(define_peephole2
- [(set (match_operand:DI 0 "hard_fp_register_operand" "")
- (sign_extend:DI (match_operand:SI 1 "hard_fp_register_operand" "")))
- (set (match_operand:DI 2 "hard_int_register_operand" "")
- (match_dup 0))]
- "TARGET_FIX && peep2_reg_dead_p (2, operands[0])"
- [(set (match_dup 2)
- (sign_extend:DI (match_dup 1)))]
- "")
-
;; Don't say we have addsi3 if optimizing. This generates better code. We
;; have the anonymous addsi3 pattern below in case combine wants to make it.
(define_expand "addsi3"
@@ -2334,8 +2307,8 @@
;; processing, it is cheaper to do the truncation in the int regs.
(define_insn "*cvtql"
- [(set (match_operand:SI 0 "register_operand" "=f")
- (unspec:SI [(match_operand:DI 1 "reg_or_0_operand" "fG")]
+ [(set (match_operand:SF 0 "register_operand" "=f")
+ (unspec:SF [(match_operand:DI 1 "reg_or_0_operand" "fG")]
UNSPEC_CVTQL))]
"TARGET_FP"
"cvtql%/ %R1,%0"
@@ -2349,14 +2322,16 @@
(match_operator:DI 4 "fix_operator"
[(match_operand:DF 1 "reg_or_0_operand" "fG")]) 0))
(clobber (match_scratch:DI 2 "=&f"))
- (clobber (match_scratch:SI 3 "=&f"))]
+ (clobber (match_scratch:SF 3 "=&f"))]
"TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
"#"
"&& reload_completed"
[(set (match_dup 2) (match_op_dup 4 [(match_dup 1)]))
- (set (match_dup 3) (unspec:SI [(match_dup 2)] UNSPEC_CVTQL))
- (set (match_dup 0) (match_dup 3))]
- ""
+ (set (match_dup 3) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
+ (set (match_dup 5) (match_dup 3))]
+{
+ operands[5] = adjust_address (operands[0], SFmode, 0);
+}
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
@@ -2370,10 +2345,12 @@
"#"
"&& reload_completed"
[(set (match_dup 2) (match_op_dup 3 [(match_dup 1)]))
- (set (match_dup 4) (unspec:SI [(match_dup 2)] UNSPEC_CVTQL))
- (set (match_dup 0) (match_dup 4))]
- ;; Due to REG_CANNOT_CHANGE_SIZE issues, we cannot simply use SUBREG.
- "operands[4] = gen_rtx_REG (SImode, REGNO (operands[2]));"
+ (set (match_dup 4) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
+ (set (match_dup 5) (match_dup 4))]
+{
+ operands[4] = gen_rtx_REG (SFmode, REGNO (operands[2]));
+ operands[5] = adjust_address (operands[0], SFmode, 0);
+}
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
@@ -2420,14 +2397,16 @@
[(float_extend:DF
(match_operand:SF 1 "reg_or_0_operand" "fG"))]) 0))
(clobber (match_scratch:DI 2 "=&f"))
- (clobber (match_scratch:SI 3 "=&f"))]
+ (clobber (match_scratch:SF 3 "=&f"))]
"TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
"#"
"&& reload_completed"
[(set (match_dup 2) (match_op_dup 4 [(float_extend:DF (match_dup 1))]))
- (set (match_dup 3) (unspec:SI [(match_dup 2)] UNSPEC_CVTQL))
- (set (match_dup 0) (match_dup 3))]
- ""
+ (set (match_dup 3) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
+ (set (match_dup 5) (match_dup 3))]
+{
+ operands[5] = adjust_address (operands[0], SFmode, 0);
+}
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
@@ -2442,10 +2421,12 @@
"#"
"&& reload_completed"
[(set (match_dup 2) (match_op_dup 3 [(float_extend:DF (match_dup 1))]))
- (set (match_dup 4) (unspec:SI [(match_dup 2)] UNSPEC_CVTQL))
- (set (match_dup 0) (match_dup 4))]
- ;; Due to REG_CANNOT_CHANGE_SIZE issues, we cannot simply use SUBREG.
- "operands[4] = gen_rtx_REG (SImode, REGNO (operands[2]));"
+ (set (match_dup 4) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
+ (set (match_dup 5) (match_dup 4))]
+{
+ operands[4] = gen_rtx_REG (SFmode, REGNO (operands[2]));
+ operands[5] = adjust_address (operands[0], SFmode, 0);
+}
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
@@ -2516,6 +2497,35 @@
(set_attr "round_suffix" "normal")
(set_attr "trap_suffix" "sui")])
+(define_insn_and_split "*floatsisf2_ieee"
+ [(set (match_operand:SF 0 "register_operand" "=&f")
+ (float:SF (match_operand:SI 1 "memory_operand" "m")))
+ (clobber (match_scratch:DI 2 "=&f"))
+ (clobber (match_scratch:SF 3 "=&f"))]
+ "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
+ (set (match_dup 0) (float:SF (match_dup 2)))]
+{
+ operands[1] = adjust_address (operands[1], SFmode, 0);
+})
+
+(define_insn_and_split "*floatsisf2"
+ [(set (match_operand:SF 0 "register_operand" "=f")
+ (float:SF (match_operand:SI 1 "memory_operand" "m")))]
+ "TARGET_FP"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 0) (match_dup 1))
+ (set (match_dup 2) (unspec:DI [(match_dup 0)] UNSPEC_CVTLQ))
+ (set (match_dup 0) (float:SF (match_dup 2)))]
+{
+ operands[1] = adjust_address (operands[1], SFmode, 0);
+ operands[2] = gen_rtx_REG (DImode, REGNO (operands[0]));
+})
+
(define_insn "*floatdidf_ieee"
[(set (match_operand:DF 0 "register_operand" "=&f")
(float:DF (match_operand:DI 1 "reg_no_subreg_operand" "f")))]
@@ -2536,6 +2546,36 @@
(set_attr "round_suffix" "normal")
(set_attr "trap_suffix" "sui")])
+(define_insn_and_split "*floatsidf2_ieee"
+ [(set (match_operand:DF 0 "register_operand" "=&f")
+ (float:DF (match_operand:SI 1 "memory_operand" "m")))
+ (clobber (match_scratch:DI 2 "=&f"))
+ (clobber (match_scratch:SF 3 "=&f"))]
+ "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
+ (set (match_dup 0) (float:DF (match_dup 2)))]
+{
+ operands[1] = adjust_address (operands[1], SFmode, 0);
+})
+
+(define_insn_and_split "*floatsidf2"
+ [(set (match_operand:DF 0 "register_operand" "=f")
+ (float:DF (match_operand:SI 1 "memory_operand" "m")))]
+ "TARGET_FP"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
+ (set (match_dup 0) (float:DF (match_dup 2)))]
+{
+ operands[1] = adjust_address (operands[1], SFmode, 0);
+ operands[2] = gen_rtx_REG (DImode, REGNO (operands[0]));
+ operands[3] = gen_rtx_REG (SFmode, REGNO (operands[0]));
+})
+
(define_expand "floatditf2"
[(use (match_operand:TF 0 "register_operand" ""))
(use (match_operand:DI 1 "general_operand" ""))]
@@ -4678,7 +4718,8 @@
(clobber (reg:DI 26))])]
"TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
&& ! samegp_function_operand (operands[0], Pmode)
- && peep2_regno_dead_p (1, 29)"
+ && (peep2_regno_dead_p (1, 29)
+ || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
[(parallel [(call (mem:DI (match_dup 2))
(match_dup 1))
(set (reg:DI 26) (plus:DI (pc) (const_int 4)))
@@ -4708,7 +4749,8 @@
(clobber (reg:DI 26))])]
"TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
&& ! samegp_function_operand (operands[0], Pmode)
- && ! peep2_regno_dead_p (1, 29)"
+ && ! (peep2_regno_dead_p (1, 29)
+ || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
[(parallel [(call (mem:DI (match_dup 2))
(match_dup 1))
(set (reg:DI 26) (plus:DI (pc) (const_int 4)))
@@ -5166,27 +5208,10 @@
operands[1] = force_reg (TFmode, operands[1]);
})
-(define_insn "*movsi_nofix"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,*f,*f,m")
- (match_operand:SI 1 "input_operand" "rJ,K,L,m,rJ,*fJ,m,*f"))]
- "(TARGET_ABI_OSF || TARGET_ABI_UNICOSMK) && ! TARGET_FIX
- && (register_operand (operands[0], SImode)
- || reg_or_0_operand (operands[1], SImode))"
- "@
- bis $31,%r1,%0
- lda %0,%1($31)
- ldah %0,%h1($31)
- ldl %0,%1
- stl %r1,%0
- cpys %R1,%R1,%0
- ld%, %0,%1
- st%, %R1,%0"
- [(set_attr "type" "ilog,iadd,iadd,ild,ist,fcpys,fld,fst")])
-
-(define_insn "*movsi_fix"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,*f,*f,m,r,*f")
- (match_operand:SI 1 "input_operand" "rJ,K,L,m,rJ,*fJ,m,*f,*f,r"))]
- "TARGET_ABI_OSF && TARGET_FIX
+(define_insn "*movsi"
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m")
+ (match_operand:SI 1 "input_operand" "rJ,K,L,m,rJ"))]
+ "(TARGET_ABI_OSF || TARGET_ABI_UNICOSMK)
&& (register_operand (operands[0], SImode)
|| reg_or_0_operand (operands[1], SImode))"
"@
@@ -5194,38 +5219,13 @@
lda %0,%1($31)
ldah %0,%h1($31)
ldl %0,%1
- stl %r1,%0
- cpys %R1,%R1,%0
- ld%, %0,%1
- st%, %R1,%0
- ftois %1,%0
- itofs %1,%0"
- [(set_attr "type" "ilog,iadd,iadd,ild,ist,fcpys,fld,fst,ftoi,itof")])
-
-(define_insn "*movsi_nt_vms_nofix"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m,*f,*f,m")
- (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ,*fJ,m,*f"))]
- "(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS)
- && !TARGET_FIX
- && (register_operand (operands[0], SImode)
- || reg_or_0_operand (operands[1], SImode))"
- "@
- bis $31,%1,%0
- lda %0,%1
- ldah %0,%h1
- lda %0,%1
- ldl %0,%1
- stl %r1,%0
- cpys %R1,%R1,%0
- ld%, %0,%1
- st%, %R1,%0"
- [(set_attr "type" "ilog,iadd,iadd,ldsym,ild,ist,fcpys,fld,fst")])
+ stl %r1,%0"
+ [(set_attr "type" "ilog,iadd,iadd,ild,ist")])
-(define_insn "*movsi_nt_vms_fix"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m,*f,*f,m,r,*f")
- (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ,*fJ,m,*f,*f,r"))]
+(define_insn "*movsi_nt_vms"
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m")
+ (match_operand:SI 1 "input_operand" "rJ,K,L,s,m,rJ"))]
"(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS)
- && TARGET_FIX
&& (register_operand (operands[0], SImode)
|| reg_or_0_operand (operands[1], SImode))"
"@
@@ -5234,13 +5234,8 @@
ldah %0,%h1
lda %0,%1
ldl %0,%1
- stl %r1,%0
- cpys %R1,%R1,%0
- ld%, %0,%1
- st%, %R1,%0
- ftois %1,%0
- itofs %1,%0"
- [(set_attr "type" "ilog,iadd,iadd,ldsym,ild,ist,fcpys,fld,fst,ftoi,itof")])
+ stl %r1,%0"
+ [(set_attr "type" "ilog,iadd,iadd,ldsym,ild,ist")])
(define_insn "*movhi_nobwx"
[(set (match_operand:HI 0 "register_operand" "=r,r")
@@ -5715,7 +5710,7 @@
(define_expand "aligned_loadqi"
[(set (match_operand:SI 3 "register_operand" "")
(match_operand:SI 1 "memory_operand" ""))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (subreg:DI (match_dup 3) 0)
(const_int 8)
(match_operand:DI 2 "const_int_operand" "")))]
@@ -5726,7 +5721,7 @@
(define_expand "aligned_loadhi"
[(set (match_operand:SI 3 "register_operand" "")
(match_operand:SI 1 "memory_operand" ""))
- (set (subreg:DI (match_operand:HI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (subreg:DI (match_dup 3) 0)
(const_int 16)
(match_operand:DI 2 "const_int_operand" "")))]
@@ -5742,7 +5737,7 @@
;; operand 3 can overlap the input and output registers.
(define_expand "unaligned_loadqi"
- [(use (match_operand:QI 0 "register_operand" ""))
+ [(use (match_operand:DI 0 "register_operand" ""))
(use (match_operand:DI 1 "address_operand" ""))
(use (match_operand:DI 2 "register_operand" ""))
(use (match_operand:DI 3 "register_operand" ""))]
@@ -5763,7 +5758,7 @@
(const_int -8))))
(set (match_operand:DI 3 "register_operand" "")
(match_dup 1))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (match_dup 2)
(const_int 8)
(ashift:DI (match_dup 3) (const_int 3))))]
@@ -5776,7 +5771,7 @@
(const_int -8))))
(set (match_operand:DI 3 "register_operand" "")
(match_dup 1))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (match_dup 2)
(const_int 8)
(minus:DI
@@ -5786,7 +5781,7 @@
"")
(define_expand "unaligned_loadhi"
- [(use (match_operand:QI 0 "register_operand" ""))
+ [(use (match_operand:DI 0 "register_operand" ""))
(use (match_operand:DI 1 "address_operand" ""))
(use (match_operand:DI 2 "register_operand" ""))
(use (match_operand:DI 3 "register_operand" ""))]
@@ -5807,7 +5802,7 @@
(const_int -8))))
(set (match_operand:DI 3 "register_operand" "")
(match_dup 1))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (match_dup 2)
(const_int 16)
(ashift:DI (match_dup 3) (const_int 3))))]
@@ -5820,7 +5815,7 @@
(const_int -8))))
(set (match_operand:DI 3 "register_operand" "")
(plus:DI (match_dup 1) (const_int 1)))
- (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
+ (set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (match_dup 2)
(const_int 16)
(minus:DI
@@ -6015,9 +6010,6 @@
{
rtx scratch, seq;
- if (GET_CODE (operands[1]) != MEM)
- abort ();
-
if (aligned_memory_operand (operands[1], QImode))
{
seq = gen_reload_inqi_help (operands[0], operands[1],
@@ -6036,8 +6028,8 @@
scratch = gen_rtx_REG (DImode, REGNO (operands[2]));
addr = get_unaligned_address (operands[1], 0);
- seq = gen_unaligned_loadqi (operands[0], addr, scratch,
- gen_rtx_REG (DImode, REGNO (operands[0])));
+ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
+ seq = gen_unaligned_loadqi (operands[0], addr, scratch, operands[0]);
alpha_set_memflags (seq, operands[1]);
}
emit_insn (seq);
@@ -6052,9 +6044,6 @@
{
rtx scratch, seq;
- if (GET_CODE (operands[1]) != MEM)
- abort ();
-
if (aligned_memory_operand (operands[1], HImode))
{
seq = gen_reload_inhi_help (operands[0], operands[1],
@@ -6073,8 +6062,8 @@
scratch = gen_rtx_REG (DImode, REGNO (operands[2]));
addr = get_unaligned_address (operands[1], 0);
- seq = gen_unaligned_loadhi (operands[0], addr, scratch,
- gen_rtx_REG (DImode, REGNO (operands[0])));
+ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
+ seq = gen_unaligned_loadhi (operands[0], addr, scratch, operands[0]);
alpha_set_memflags (seq, operands[1]);
}
emit_insn (seq);
@@ -6087,9 +6076,6 @@
(match_operand:TI 2 "register_operand" "=&r")])]
"! TARGET_BWX"
{
- if (GET_CODE (operands[0]) != MEM)
- abort ();
-
if (aligned_memory_operand (operands[0], QImode))
{
emit_insn (gen_reload_outqi_help
@@ -6122,9 +6108,6 @@
(match_operand:TI 2 "register_operand" "=&r")])]
"! TARGET_BWX"
{
- if (GET_CODE (operands[0]) != MEM)
- abort ();
-
if (aligned_memory_operand (operands[0], HImode))
{
emit_insn (gen_reload_outhi_help
@@ -6155,71 +6138,47 @@
;; always get a proper address for a stack slot during reload_foo
;; expansion, so we must delay our address manipulations until after.
-(define_insn "reload_inqi_help"
+(define_insn_and_split "reload_inqi_help"
[(set (match_operand:QI 0 "register_operand" "=r")
(match_operand:QI 1 "memory_operand" "m"))
(clobber (match_operand:SI 2 "register_operand" "=r"))]
"! TARGET_BWX && (reload_in_progress || reload_completed)"
- "#")
-
-(define_insn "reload_inhi_help"
- [(set (match_operand:HI 0 "register_operand" "=r")
- (match_operand:HI 1 "memory_operand" "m"))
- (clobber (match_operand:SI 2 "register_operand" "=r"))]
- "! TARGET_BWX && (reload_in_progress || reload_completed)"
- "#")
-
-(define_insn "reload_outqi_help"
- [(set (match_operand:QI 0 "memory_operand" "=m")
- (match_operand:QI 1 "register_operand" "r"))
- (clobber (match_operand:SI 2 "register_operand" "=r"))
- (clobber (match_operand:SI 3 "register_operand" "=r"))]
- "! TARGET_BWX && (reload_in_progress || reload_completed)"
- "#")
-
-(define_insn "reload_outhi_help"
- [(set (match_operand:HI 0 "memory_operand" "=m")
- (match_operand:HI 1 "register_operand" "r"))
- (clobber (match_operand:SI 2 "register_operand" "=r"))
- (clobber (match_operand:SI 3 "register_operand" "=r"))]
- "! TARGET_BWX && (reload_in_progress || reload_completed)"
- "#")
-
-(define_split
- [(set (match_operand:QI 0 "register_operand" "")
- (match_operand:QI 1 "memory_operand" ""))
- (clobber (match_operand:SI 2 "register_operand" ""))]
+ "#"
"! TARGET_BWX && reload_completed"
[(const_int 0)]
{
rtx aligned_mem, bitnum;
get_aligned_mem (operands[1], &aligned_mem, &bitnum);
-
+ operands[0] = gen_lowpart (DImode, operands[0]);
emit_insn (gen_aligned_loadqi (operands[0], aligned_mem, bitnum,
operands[2]));
DONE;
})
-(define_split
- [(set (match_operand:HI 0 "register_operand" "")
- (match_operand:HI 1 "memory_operand" ""))
- (clobber (match_operand:SI 2 "register_operand" ""))]
+(define_insn_and_split "reload_inhi_help"
+ [(set (match_operand:HI 0 "register_operand" "=r")
+ (match_operand:HI 1 "memory_operand" "m"))
+ (clobber (match_operand:SI 2 "register_operand" "=r"))]
+ "! TARGET_BWX && (reload_in_progress || reload_completed)"
+ "#"
"! TARGET_BWX && reload_completed"
[(const_int 0)]
{
rtx aligned_mem, bitnum;
get_aligned_mem (operands[1], &aligned_mem, &bitnum);
-
+ operands[0] = gen_lowpart (DImode, operands[0]);
emit_insn (gen_aligned_loadhi (operands[0], aligned_mem, bitnum,
operands[2]));
DONE;
})
-(define_split
- [(set (match_operand:QI 0 "memory_operand" "")
- (match_operand:QI 1 "register_operand" ""))
- (clobber (match_operand:SI 2 "register_operand" ""))
- (clobber (match_operand:SI 3 "register_operand" ""))]
+(define_insn_and_split "reload_outqi_help"
+ [(set (match_operand:QI 0 "memory_operand" "=m")
+ (match_operand:QI 1 "register_operand" "r"))
+ (clobber (match_operand:SI 2 "register_operand" "=r"))
+ (clobber (match_operand:SI 3 "register_operand" "=r"))]
+ "! TARGET_BWX && (reload_in_progress || reload_completed)"
+ "#"
"! TARGET_BWX && reload_completed"
[(const_int 0)]
{
@@ -6230,11 +6189,13 @@
DONE;
})
-(define_split
- [(set (match_operand:HI 0 "memory_operand" "")
- (match_operand:HI 1 "register_operand" ""))
- (clobber (match_operand:SI 2 "register_operand" ""))
- (clobber (match_operand:SI 3 "register_operand" ""))]
+(define_insn_and_split "reload_outhi_help"
+ [(set (match_operand:HI 0 "memory_operand" "=m")
+ (match_operand:HI 1 "register_operand" "r"))
+ (clobber (match_operand:SI 2 "register_operand" "=r"))
+ (clobber (match_operand:SI 3 "register_operand" "=r"))]
+ "! TARGET_BWX && (reload_in_progress || reload_completed)"
+ "#"
"! TARGET_BWX && reload_completed"
[(const_int 0)]
{
@@ -6901,17 +6862,6 @@
DONE;
})
-;; In creating a large stack frame, NT _must_ use ldah+lda to load
-;; the frame size into a register. We use this pattern to ensure
-;; we get lda instead of addq.
-(define_insn "nt_lda"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (unspec:DI [(match_dup 0)
- (match_operand:DI 1 "const_int_operand" "n")]
- UNSPEC_NT_LDA))]
- ""
- "lda %0,%1(%0)")
-
(define_expand "builtin_longjmp"
[(use (match_operand:DI 0 "register_operand" "r"))]
"TARGET_ABI_OSF"
@@ -7913,7 +7863,8 @@
(clobber (reg:DI 26))])]
"TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
&& ! samegp_function_operand (operands[1], Pmode)
- && peep2_regno_dead_p (1, 29)"
+ && (peep2_regno_dead_p (1, 29)
+ || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
[(parallel [(set (match_dup 0)
(call (mem:DI (match_dup 3))
(match_dup 2)))
@@ -7945,7 +7896,8 @@
(clobber (reg:DI 26))])]
"TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
&& ! samegp_function_operand (operands[1], Pmode)
- && ! peep2_regno_dead_p (1, 29)"
+ && ! (peep2_regno_dead_p (1, 29)
+ || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
[(parallel [(set (match_dup 0)
(call (mem:DI (match_dup 3))
(match_dup 2)))
diff --git a/gcc/config/alpha/freebsd.h b/gcc/config/alpha/freebsd.h
index 59b2dea9ce7..6bbd617d96d 100644
--- a/gcc/config/alpha/freebsd.h
+++ b/gcc/config/alpha/freebsd.h
@@ -20,12 +20,15 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
+
/* Provide a FBSD_TARGET_CPU_CPP_BUILTINS and CPP_SPEC appropriate for
FreeBSD/alpha. Besides the dealing with
the GCC option `-posix', and PIC issues as on all FreeBSD platforms, we must
deal with the Alpha's FP issues. */
-#undef FBSD_TARGET_CPU_CPP_BUILTINS
+#undef FBSD_TARGET_CPU_CPP_BUILTINS
#define FBSD_TARGET_CPU_CPP_BUILTINS() \
do \
{ \
@@ -45,12 +48,12 @@ Boston, MA 02111-1307, USA. */
%{Wl,*:%*} \
%{assert*} %{R*} %{rpath*} %{defsym*} \
%{shared:-Bshareable %{h*} %{soname*}} \
- %{symbolic:-Bsymbolic} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}}"
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
+ %{static:-Bstatic}} \
+ %{symbolic:-Bsymbolic}"
/************************[ Target stuff ]***********************************/
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
index b47c7e38646..0a2e516127e 100644
--- a/gcc/config/alpha/vms.h
+++ b/gcc/config/alpha/vms.h
@@ -1,5 +1,5 @@
/* Output variables, constants and external declarations, for GNU compiler.
- Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002
+ Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index 876bef56828..ad26913217e 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on the Argonaut ARC cpu.
- Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -1303,7 +1303,7 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size)
/* ??? If stack intactness is important, always emit now. */
if (MUST_SAVE_RETURN_ADDR && epilogue_delay != NULL_RTX)
{
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
epilogue_delay = NULL_RTX;
}
@@ -1335,7 +1335,8 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size)
{
if (epilogue_delay)
{
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1,
+ NULL);
}
}
@@ -1360,7 +1361,7 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size)
abort ();
if (restored < size)
abort ();
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
}
else if (frame_pointer_needed && !fp_restored_p)
{
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 6cf226e2c4c..2725357bdc1 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -50,6 +50,7 @@
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
+#include "debug.h"
/* Forward definitions of types. */
typedef struct minipool_node Mnode;
@@ -85,7 +86,7 @@ static struct machine_function *arm_init_machine_status (void);
static int number_of_first_bit_set (int);
static void replace_symbols_in_block (tree, rtx, rtx);
static void thumb_exit (FILE *, int, rtx);
-static void thumb_pushpop (FILE *, int, int);
+static void thumb_pushpop (FILE *, int, int, int *, int);
static rtx is_jump_table (rtx);
static HOST_WIDE_INT get_jump_table_size (rtx);
static Mnode *move_minipool_fix_forward_ref (Mnode *, Mnode *, HOST_WIDE_INT);
@@ -689,6 +690,9 @@ arm_override_options (void)
target_flags &= ~ARM_FLAG_THUMB;
}
+ if (!TARGET_APCS_32)
+ inform ("future releases of GCC will not support -mapcs-26");
+
if (TARGET_APCS_FRAME && TARGET_THUMB)
{
/* warning ("ignoring -mapcs-frame because -mthumb was used"); */
@@ -2740,7 +2744,7 @@ arm_legitimate_address_p (enum machine_mode mode, rtx x, int strict_p)
/* After reload constants split into minipools will have addresses
from a LABEL_REF. */
- else if (GET_MODE_SIZE (mode) >= 4 && reload_completed
+ else if (reload_completed
&& (GET_CODE (x) == LABEL_REF
|| (GET_CODE (x) == CONST
&& GET_CODE (XEXP (x, 0)) == PLUS
@@ -2860,8 +2864,10 @@ arm_legitimate_index_p (enum machine_mode mode, rtx index, int strict_p)
load, but that has a restricted addressing range and we are unable
to tell here whether that is the case. To be safe we restrict all
loads to that range. */
- range = ((mode) == HImode || (mode) == QImode)
- ? (arm_arch4 ? 256 : 4095) : 4096;
+ if (arm_arch4)
+ range = (mode == HImode || mode == QImode) ? 256 : 4096;
+ else
+ range = (mode == HImode) ? 4095 : 4096;
return (code == CONST_INT
&& INTVAL (index) < range
@@ -4617,7 +4623,6 @@ load_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
/* Now check it more carefully. */
if (GET_CODE (SET_DEST (elt)) != REG
|| GET_CODE (XEXP (SET_SRC (elt), 0)) != REG
- || REGNO (XEXP (SET_SRC (elt), 0)) != REGNO (SET_DEST (elt))
|| GET_CODE (XEXP (SET_SRC (elt), 1)) != CONST_INT
|| INTVAL (XEXP (SET_SRC (elt), 1)) != (count - 1) * 4)
return 0;
@@ -4677,7 +4682,6 @@ store_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
/* Now check it more carefully. */
if (GET_CODE (SET_DEST (elt)) != REG
|| GET_CODE (XEXP (SET_SRC (elt), 0)) != REG
- || REGNO (XEXP (SET_SRC (elt), 0)) != REGNO (SET_DEST (elt))
|| GET_CODE (XEXP (SET_SRC (elt), 1)) != CONST_INT
|| INTVAL (XEXP (SET_SRC (elt), 1)) != (count - 1) * 4)
return 0;
@@ -8245,15 +8249,25 @@ output_return_instruction (rtx operand, int really_return, int reverse)
return_reg = reg_names[LR_REGNUM];
if ((live_regs_mask & (1 << IP_REGNUM)) == (1 << IP_REGNUM))
- /* There are two possible reasons for the IP register being saved.
- Either a stack frame was created, in which case IP contains the
- old stack pointer, or an ISR routine corrupted it. If this in an
- ISR routine then just restore IP, otherwise restore IP into SP. */
- if (! IS_INTERRUPT (func_type))
- {
- live_regs_mask &= ~ (1 << IP_REGNUM);
- live_regs_mask |= (1 << SP_REGNUM);
- }
+ {
+ /* There are three possible reasons for the IP register
+ being saved. 1) a stack frame was created, in which case
+ IP contains the old stack pointer, or 2) an ISR routine
+ corrupted it, or 3) it was saved to align the stack on
+ iWMMXt. In case 1, restore IP into SP, otherwise just
+ restore IP. */
+ if (frame_pointer_needed)
+ {
+ live_regs_mask &= ~ (1 << IP_REGNUM);
+ live_regs_mask |= (1 << SP_REGNUM);
+ }
+ else
+ {
+ if (! IS_INTERRUPT (func_type)
+ && ! TARGET_REALLY_IWMMXT)
+ abort ();
+ }
+ }
/* On some ARM architectures it is faster to use LDR rather than
LDM to load a single register. On other architectures, the
@@ -11562,7 +11576,8 @@ thumb_exit (FILE *f, int reg_containing_return_addr, rtx eh_ofs)
}
/* Pop as many registers as we can. */
- thumb_pushpop (f, regs_available_for_popping, FALSE);
+ thumb_pushpop (f, regs_available_for_popping, FALSE, NULL,
+ regs_available_for_popping);
/* Process the registers we popped. */
if (reg_containing_return_addr == -1)
@@ -11643,7 +11658,8 @@ thumb_exit (FILE *f, int reg_containing_return_addr, rtx eh_ofs)
int popped_into;
int move_to;
- thumb_pushpop (f, regs_available_for_popping, FALSE);
+ thumb_pushpop (f, regs_available_for_popping, FALSE, NULL,
+ regs_available_for_popping);
/* We have popped either FP or SP.
Move whichever one it is into the correct register. */
@@ -11663,7 +11679,8 @@ thumb_exit (FILE *f, int reg_containing_return_addr, rtx eh_ofs)
{
int popped_into;
- thumb_pushpop (f, regs_available_for_popping, FALSE);
+ thumb_pushpop (f, regs_available_for_popping, FALSE, NULL,
+ regs_available_for_popping);
popped_into = number_of_first_bit_set (regs_available_for_popping);
@@ -11693,12 +11710,20 @@ thumb_exit (FILE *f, int reg_containing_return_addr, rtx eh_ofs)
asm_fprintf (f, "\tbx\t%r\n", reg_containing_return_addr);
}
-/* Emit code to push or pop registers to or from the stack. */
+/* Emit code to push or pop registers to or from the stack. F is the
+ assembly file. MASK is the registers to push or pop. PUSH is
+ non-zero if we should push, and zero if we should pop. For debugging
+ output, if pushing, adjust CFA_OFFSET by the amount of space added
+ to the stack. REAL_REGS should have the same number of bits set as
+ MASK, and will be used instead (in the same order) to describe which
+ registers were saved - this is used to mark the save slots when we
+ push high registers after moving them to low registers. */
static void
-thumb_pushpop (FILE *f, int mask, int push)
+thumb_pushpop (FILE *f, int mask, int push, int *cfa_offset, int real_regs)
{
int regno;
int lo_mask = mask & 0xFF;
+ int pushed_words = 0;
if (lo_mask == 0 && !push && (mask & (1 << 15)))
{
@@ -11719,6 +11744,8 @@ thumb_pushpop (FILE *f, int mask, int push)
if ((lo_mask & ~1) != 0)
fprintf (f, ", ");
+
+ pushed_words++;
}
}
@@ -11729,6 +11756,8 @@ thumb_pushpop (FILE *f, int mask, int push)
fprintf (f, ", ");
asm_fprintf (f, "%r", LR_REGNUM);
+
+ pushed_words++;
}
else if (!push && (mask & (1 << PC_REGNUM)))
{
@@ -11753,6 +11782,23 @@ thumb_pushpop (FILE *f, int mask, int push)
}
fprintf (f, "}\n");
+
+ if (push && pushed_words && dwarf2out_do_frame ())
+ {
+ char *l = dwarf2out_cfi_label ();
+ int pushed_mask = real_regs;
+
+ *cfa_offset += pushed_words * 4;
+ dwarf2out_def_cfa (l, SP_REGNUM, *cfa_offset);
+
+ pushed_words = 0;
+ pushed_mask = real_regs;
+ for (regno = 0; regno <= 14; regno++, pushed_mask >>= 1)
+ {
+ if (pushed_mask & 1)
+ dwarf2out_reg_save (l, regno, 4 * pushed_words++ - *cfa_offset);
+ }
+ }
}
void
@@ -11951,7 +11997,7 @@ thumb_unexpanded_epilogue (void)
mask &= (2 << regno) - 1; /* A noop if regno == 8 */
/* Pop the values into the low register(s). */
- thumb_pushpop (asm_out_file, mask, 0);
+ thumb_pushpop (asm_out_file, mask, 0, NULL, mask);
/* Move the value(s) into the high registers. */
for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
@@ -11993,7 +12039,8 @@ thumb_unexpanded_epilogue (void)
structure was created which includes an adjusted stack
pointer, so just pop everything. */
if (live_regs_mask)
- thumb_pushpop (asm_out_file, live_regs_mask, FALSE);
+ thumb_pushpop (asm_out_file, live_regs_mask, FALSE, NULL,
+ live_regs_mask);
if (eh_ofs)
thumb_exit (asm_out_file, 2, eh_ofs);
@@ -12013,11 +12060,13 @@ thumb_unexpanded_epilogue (void)
live_regs_mask &= ~(1 << PC_REGNUM);
if (live_regs_mask)
- thumb_pushpop (asm_out_file, live_regs_mask, FALSE);
+ thumb_pushpop (asm_out_file, live_regs_mask, FALSE, NULL,
+ live_regs_mask);
if (had_to_push_lr)
/* Get the return address into a temporary register. */
- thumb_pushpop (asm_out_file, 1 << LAST_ARG_REGNUM, 0);
+ thumb_pushpop (asm_out_file, 1 << LAST_ARG_REGNUM, 0, NULL,
+ 1 << LAST_ARG_REGNUM);
/* Remove the argument registers that were pushed onto the stack. */
asm_fprintf (asm_out_file, "\tadd\t%r, %r, #%d\n",
@@ -12163,6 +12212,8 @@ thumb_get_frame_size (void)
void
thumb_expand_prologue (void)
{
+ rtx insn, dwarf;
+
HOST_WIDE_INT amount = (thumb_get_frame_size ()
+ current_function_outgoing_args_size);
unsigned long func_type;
@@ -12180,15 +12231,21 @@ thumb_expand_prologue (void)
}
if (frame_pointer_needed)
- emit_insn (gen_movsi (hard_frame_pointer_rtx, stack_pointer_rtx));
+ {
+ insn = emit_insn (gen_movsi (hard_frame_pointer_rtx, stack_pointer_rtx));
+ RTX_FRAME_RELATED_P (insn) = 1;
+ }
if (amount)
{
amount = ROUND_UP_WORD (amount);
if (amount < 512)
- emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- GEN_INT (- amount)));
+ {
+ insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
+ GEN_INT (- amount)));
+ RTX_FRAME_RELATED_P (insn) = 1;
+ }
else
{
int regno;
@@ -12228,8 +12285,16 @@ thumb_expand_prologue (void)
/* Decrement the stack. */
emit_insn (gen_movsi (reg, GEN_INT (- amount)));
- emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- reg));
+ insn = emit_insn (gen_addsi3 (stack_pointer_rtx,
+ stack_pointer_rtx, reg));
+ RTX_FRAME_RELATED_P (insn) = 1;
+ dwarf = gen_rtx_SET (SImode, stack_pointer_rtx,
+ plus_constant (stack_pointer_rtx,
+ GEN_INT (- amount)));
+ RTX_FRAME_RELATED_P (dwarf) = 1;
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
+ REG_NOTES (insn));
/* Restore the low register's original value. */
emit_insn (gen_movsi (reg, spare));
@@ -12245,8 +12310,17 @@ thumb_expand_prologue (void)
reg = gen_rtx (REG, SImode, regno);
emit_insn (gen_movsi (reg, GEN_INT (- amount)));
- emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- reg));
+
+ insn = emit_insn (gen_addsi3 (stack_pointer_rtx,
+ stack_pointer_rtx, reg));
+ RTX_FRAME_RELATED_P (insn) = 1;
+ dwarf = gen_rtx_SET (SImode, stack_pointer_rtx,
+ plus_constant (stack_pointer_rtx,
+ GEN_INT (- amount)));
+ RTX_FRAME_RELATED_P (dwarf) = 1;
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
+ REG_NOTES (insn));
}
}
}
@@ -12307,6 +12381,7 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
{
int live_regs_mask = 0;
int high_regs_pushed = 0;
+ int cfa_offset = 0;
int regno;
if (IS_NAKED (arm_current_func_type ()))
@@ -12369,6 +12444,16 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
asm_fprintf (f, "\tsub\t%r, %r, #%d\n",
SP_REGNUM, SP_REGNUM,
current_function_pretend_args_size);
+
+ /* We don't need to record the stores for unwinding (would it
+ help the debugger any if we did?), but record the change in
+ the stack pointer. */
+ if (dwarf2out_do_frame ())
+ {
+ char *l = dwarf2out_cfi_label ();
+ cfa_offset = cfa_offset + current_function_pretend_args_size;
+ dwarf2out_def_cfa (l, SP_REGNUM, cfa_offset);
+ }
}
for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
@@ -12424,9 +12509,16 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
asm_fprintf
(f, "\tsub\t%r, %r, #16\t%@ Create stack backtrace structure\n",
SP_REGNUM, SP_REGNUM);
-
+
+ if (dwarf2out_do_frame ())
+ {
+ char *l = dwarf2out_cfi_label ();
+ cfa_offset = cfa_offset + 16;
+ dwarf2out_def_cfa (l, SP_REGNUM, cfa_offset);
+ }
+
if (live_regs_mask)
- thumb_pushpop (f, live_regs_mask, 1);
+ thumb_pushpop (f, live_regs_mask, 1, &cfa_offset, live_regs_mask);
for (offset = 0, wr = 1 << 15; wr != 0; wr >>= 1)
if (wr & live_regs_mask)
@@ -12470,7 +12562,7 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
ARM_HARD_FRAME_POINTER_REGNUM, work_register);
}
else if (live_regs_mask)
- thumb_pushpop (f, live_regs_mask, 1);
+ thumb_pushpop (f, live_regs_mask, 1, &cfa_offset, live_regs_mask);
for (regno = 8; regno < 13; regno++)
if (THUMB_REG_PUSHED_P (regno))
@@ -12498,6 +12590,8 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
while (high_regs_pushed > 0)
{
+ int real_regs_mask = 0;
+
for (regno = LAST_LO_REGNUM; regno >= 0; regno--)
{
if (mask & (1 << regno))
@@ -12505,6 +12599,7 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
asm_fprintf (f, "\tmov\t%r, %r\n", regno, next_hi_reg);
high_regs_pushed--;
+ real_regs_mask |= (1 << next_hi_reg);
if (high_regs_pushed)
{
@@ -12520,8 +12615,8 @@ thumb_output_function_prologue (FILE *f, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
}
}
}
-
- thumb_pushpop (f, mask, 1);
+
+ thumb_pushpop (f, mask, 1, &cfa_offset, real_regs_mask);
}
if (pushable_regs == 0
@@ -13156,6 +13251,8 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
HOST_WIDE_INT vcall_offset ATTRIBUTE_UNUSED,
tree function)
{
+ static int thunk_label = 0;
+ char label[256];
int mi_delta = delta;
const char *const mi_op = mi_delta < 0 ? "sub" : "add";
int shift = 0;
@@ -13163,6 +13260,14 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
? 1 : 0);
if (mi_delta < 0)
mi_delta = - mi_delta;
+ if (TARGET_THUMB)
+ {
+ int labelno = thunk_label++;
+ ASM_GENERATE_INTERNAL_LABEL (label, "LTHUMBFUNC", labelno);
+ fputs ("\tldr\tr12, ", file);
+ assemble_name (file, label);
+ fputc ('\n', file);
+ }
while (mi_delta != 0)
{
if ((mi_delta & (3 << shift)) == 0)
@@ -13176,11 +13281,22 @@ arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
shift += 8;
}
}
- fputs ("\tb\t", file);
- assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
- if (NEED_PLT_RELOC)
- fputs ("(PLT)", file);
- fputc ('\n', file);
+ if (TARGET_THUMB)
+ {
+ fprintf (file, "\tbx\tr12\n");
+ ASM_OUTPUT_ALIGN (file, 2);
+ assemble_name (file, label);
+ fputs (":\n", file);
+ assemble_integer (XEXP (DECL_RTL (function), 0), 4, BITS_PER_WORD, 1);
+ }
+ else
+ {
+ fputs ("\tb\t", file);
+ assemble_name (file, XSTR (XEXP (DECL_RTL (function), 0), 0));
+ if (NEED_PLT_RELOC)
+ fputs ("(PLT)", file);
+ fputc ('\n', file);
+ }
}
int
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 40c26c9b39d..3286459e0ef 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler, for ARM.
Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
and Martin Simmons (@harleqn.co.uk).
More major hacks by Richard Earnshaw (rearnsha@arm.com)
@@ -175,7 +175,8 @@ extern GTY(()) rtx aof_pic_label;
/* Set TARGET_DEFAULT to the default, but without soft-float. */
#ifdef TARGET_DEFAULT
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT \
+ (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS | ARM_FLAG_APCS_FRAME)
#endif
#else
#if TARGET_CPU_DEFAULT == TARGET_CPU_iwmmxt
@@ -455,8 +456,7 @@ extern GTY(()) rtx aof_pic_label;
{"fpe", ARM_FLAG_FPE, "" }, \
{"apcs-32", ARM_FLAG_APCS_32, \
N_("Use the 32-bit version of the APCS") }, \
- {"apcs-26", -ARM_FLAG_APCS_32, \
- N_("Use the 26-bit version of the APCS") }, \
+ {"apcs-26", -ARM_FLAG_APCS_32, ""}, \
{"apcs-stack-check", ARM_FLAG_APCS_STACK, "" }, \
{"no-apcs-stack-check", -ARM_FLAG_APCS_STACK, "" }, \
{"apcs-float", ARM_FLAG_APCS_FLOAT, \
@@ -468,10 +468,6 @@ extern GTY(()) rtx aof_pic_label;
{"alignment-traps", ARM_FLAG_MMU_TRAPS, \
N_("The MMU will trap on unaligned accesses") }, \
{"no-alignment-traps", -ARM_FLAG_MMU_TRAPS, "" }, \
- {"short-load-bytes", ARM_FLAG_MMU_TRAPS, "" }, \
- {"no-short-load-bytes", -ARM_FLAG_MMU_TRAPS, "" }, \
- {"short-load-words", -ARM_FLAG_MMU_TRAPS, "" }, \
- {"no-short-load-words", ARM_FLAG_MMU_TRAPS, "" }, \
{"soft-float", ARM_FLAG_SOFT_FLOAT, \
N_("Use library calls to perform FP operations") }, \
{"hard-float", -ARM_FLAG_SOFT_FLOAT, \
@@ -650,7 +646,7 @@ extern int arm_tune_xscale;
extern int arm_is_6_or_7;
#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
#endif
/* The frame pointer register used in gcc has nothing to do with debugging;
@@ -2475,10 +2471,11 @@ extern int making_const_table;
{ \
if (TARGET_THUMB) \
{ \
- if (is_called_in_ARM_mode (DECL)) \
+ if (is_called_in_ARM_mode (DECL) \
+ || current_function_is_thunk) \
fprintf (STREAM, "\t.code 32\n") ; \
else \
- fprintf (STREAM, "\t.thumb_func\n") ; \
+ fprintf (STREAM, "\t.code 16\n\t.thumb_func\n") ; \
} \
if (TARGET_POKE_FUNCTION_NAME) \
arm_poke_function_name (STREAM, (char *) NAME); \
diff --git a/gcc/config/arm/coff.h b/gcc/config/arm/coff.h
index 310c4fba8ec..d6a6651ba90 100644
--- a/gcc/config/arm/coff.h
+++ b/gcc/config/arm/coff.h
@@ -31,7 +31,7 @@
#define TARGET_VERSION fputs (" (ARM/coff)", stderr)
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
#ifndef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h
index 581f7267900..cb38264181d 100644
--- a/gcc/config/arm/elf.h
+++ b/gcc/config/arm/elf.h
@@ -106,7 +106,7 @@
#endif
#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
#endif
#ifndef MULTILIB_DEFAULTS
diff --git a/gcc/config/arm/freebsd.h b/gcc/config/arm/freebsd.h
index fd79f1f3c68..3aea2f86979 100644
--- a/gcc/config/arm/freebsd.h
+++ b/gcc/config/arm/freebsd.h
@@ -20,9 +20,26 @@
Boston, MA 02111-1307, USA. */
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
+
#undef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
+#undef LINK_SPEC
+#define LINK_SPEC " \
+ %{p:%nconsider using `-pg' instead of `-p' with gprof(1) } \
+ %{Wl,*:%*} \
+ %{v:-V} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+ %{shared:-Bshareable %{h*} %{soname*}} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
+ %{static:-Bstatic}} \
+ %{symbolic:-Bsymbolic}"
+
/************************[ Target stuff ]***********************************/
diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
index 8b94c9d647e..9f291c0b49f 100644
--- a/gcc/config/arm/linux-elf.h
+++ b/gcc/config/arm/linux-elf.h
@@ -1,5 +1,5 @@
/* Definitions for ARM running Linux-based GNU systems using ELF
- Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Philip Blundell <philb@gnu.org>
diff --git a/gcc/config/arm/netbsd.h b/gcc/config/arm/netbsd.h
index c1db2df5e26..71763e61ea8 100644
--- a/gcc/config/arm/netbsd.h
+++ b/gcc/config/arm/netbsd.h
@@ -36,7 +36,7 @@
/* Default is to use APCS-32 mode. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
/* Some defines for CPP.
arm32 is the NetBSD port name, so we always define arm32 and __arm32__. */
diff --git a/gcc/config/arm/pe.h b/gcc/config/arm/pe.h
index 7fba10b1d06..e83f97baae0 100644
--- a/gcc/config/arm/pe.h
+++ b/gcc/config/arm/pe.h
@@ -72,7 +72,7 @@
Possibly when chips that support APCS-26 are no longer made. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | TARGET_FLAG_NOP_FUN)
+#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | TARGET_FLAG_NOP_FUN | ARM_FLAG_MMU_TRAPS)
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
diff --git a/gcc/config/arm/semi.h b/gcc/config/arm/semi.h
index 8847f8c2369..2ab06cbcc3f 100644
--- a/gcc/config/arm/semi.h
+++ b/gcc/config/arm/semi.h
@@ -38,7 +38,7 @@
#endif
#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
#endif
#ifndef SUBTARGET_EXTRA_SPECS
diff --git a/gcc/config/arm/semiaof.h b/gcc/config/arm/semiaof.h
index 41267f36420..19a6cf8ea50 100644
--- a/gcc/config/arm/semiaof.h
+++ b/gcc/config/arm/semiaof.h
@@ -33,7 +33,7 @@
#define TARGET_VERSION fputs (" (ARM/semi-hosted)", stderr);
-#define TARGET_DEFAULT ARM_FLAG_APCS_32
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
/* The Norcroft C library defines size_t as "unsigned int". */
#define SIZE_TYPE "unsigned int"
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index 573803fce2d..1af799482b4 100644
--- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h
@@ -30,7 +30,7 @@
/* Default to using APCS-32 and software floating point. */
#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME)
+#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
#endif
/* Now we define the strings used to build the spec file. */
diff --git a/gcc/config/arm/wince-pe.h b/gcc/config/arm/wince-pe.h
index feed1337c90..fb474853fdb 100644
--- a/gcc/config/arm/wince-pe.h
+++ b/gcc/config/arm/wince-pe.h
@@ -22,7 +22,7 @@
/* Override arm/pe.h's default apcs26 support. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SOFT_FLOAT | TARGET_FLAG_NOP_FUN)
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SOFT_FLOAT | TARGET_FLAG_NOP_FUN | ARM_FLAG_MMU_TRAPS)
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 198c56895d3..b018918ddb6 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -1,5 +1,6 @@
/* Subroutines for insn-output.c for ATMEL AVR micro controllers
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
+ Free Software Foundation, Inc.
Contributed by Denis Chertykov (denisc@overta.ru)
This file is part of GCC.
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index c6ac5dcb674..acac4fa9b92 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -1,6 +1,7 @@
/* Definitions of target machine for GNU compiler,
for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Denis Chertykov (denisc@overta.ru)
This file is part of GCC.
@@ -560,7 +561,7 @@ enum reg_class {
choose a class which is "minimal", meaning that no smaller class
also contains the register. */
-#define BASE_REG_CLASS POINTER_REGS
+#define BASE_REG_CLASS (reload_completed ? BASE_POINTER_REGS : POINTER_REGS)
/* A macro whose definition is the name of the class to which a valid
base register must belong. A base register is one used in an
address which is the register value plus a displacement. */
diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c
index 28e13359f94..91cbe70fcd2 100644
--- a/gcc/config/c4x/c4x.c
+++ b/gcc/config/c4x/c4x.c
@@ -1,5 +1,5 @@
/* Subroutines for assembler code output on the TMS320C[34]x
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
Free Software Foundation, Inc.
Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
diff --git a/gcc/config/c4x/c4x.md b/gcc/config/c4x/c4x.md
index e4f240fea4f..eed7cf0db31 100644
--- a/gcc/config/c4x/c4x.md
+++ b/gcc/config/c4x/c4x.md
@@ -1,6 +1,6 @@
;; Machine description for the TMS320C[34]x for GCC
;; Copyright (C) 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2002 Free Software Foundation, Inc.
+;; 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
;; Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
;; and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl)
@@ -5653,7 +5653,7 @@
"0"
"")
-(define_expand "movstrqi_small2"
+(define_expand "movstrqi_small"
[(parallel [(set (mem:BLK (match_operand:BLK 0 "src_operand" ""))
(mem:BLK (match_operand:BLK 1 "src_operand" "")))
(use (match_operand:QI 2 "immediate_operand" ""))
@@ -5713,71 +5713,51 @@
; operand 3 is the shared alignment
; operand 4 is a scratch register
-(define_insn "movstrqi_small"
- [(set (mem:BLK (match_operand:QI 0 "addr_reg_operand" "+a"))
- (mem:BLK (match_operand:QI 1 "addr_reg_operand" "+a")))
- (use (match_operand:QI 2 "immediate_operand" "i"))
- (use (match_operand:QI 3 "immediate_operand" ""))
- (clobber (match_operand:QI 4 "ext_low_reg_operand" "=&q"))
- (clobber (match_dup 0))
- (clobber (match_dup 1))]
- ""
- "*
- {
- int i;
- int len = INTVAL (operands[2]);
- int first = 1;
-
- for (i = 0; i < len; i++)
- {
- if (first)
- output_asm_insn (\"ldiu\\t*%1++,%4\", operands);
- else
- output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
- output_asm_insn (\"sti\\t%4,*%0++\", operands);
- first = 0;
- }
- return \"\";
- }
- "
- [(set_attr "type" "multi")])
-
(define_insn "movstrqi_large"
- [(set (mem:BLK (match_operand:QI 0 "addr_reg_operand" "+a"))
- (mem:BLK (match_operand:QI 1 "addr_reg_operand" "+a")))
+ [(set (mem:BLK (match_operand:QI 0 "addr_reg_operand" "a"))
+ (mem:BLK (match_operand:QI 1 "addr_reg_operand" "a")))
(use (match_operand:QI 2 "immediate_operand" "i"))
(use (match_operand:QI 3 "immediate_operand" ""))
(clobber (match_operand:QI 4 "ext_low_reg_operand" "=&q"))
- (clobber (match_dup 0))
- (clobber (match_dup 1))
+ (clobber (match_scratch:QI 5 "=0"))
+ (clobber (match_scratch:QI 6 "=1"))
(clobber (reg:QI 25))
(clobber (reg:QI 26))
(clobber (reg:QI 27))]
""
"*
{
+ int i;
int len = INTVAL (operands[2]);
output_asm_insn (\"ldiu\\t*%1++,%4\", operands);
- if (TARGET_RPTS_CYCLES (len))
+ if (len < 8)
{
- output_asm_insn (\"rpts\\t%2-2\", operands);
- output_asm_insn (\"sti\\t%4,*%0++\", operands);
- output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
- return \"sti\\t%4,*%0++\";
+ for (i = 1; i < len; i++)
+ {
+ output_asm_insn (\"sti\\t%4,*%0++\", operands);
+ output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
+ }
}
else
{
- output_asm_insn (\"ldiu\\t%2-2,rc\", operands);
- output_asm_insn (\"rptb\\t$+1\", operands);
- output_asm_insn (\"sti\\t%4,*%0++\", operands);
- output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
-
- return \"sti\\t%4,*%0++\";
+ if (TARGET_RPTS_CYCLES (len))
+ {
+ output_asm_insn (\"rpts\\t%2-2\", operands);
+ output_asm_insn (\"sti\\t%4,*%0++\", operands);
+ output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
+ }
+ else
+ {
+ output_asm_insn (\"ldiu\\t%2-2,rc\", operands);
+ output_asm_insn (\"rptb\\t$+1\", operands);
+ output_asm_insn (\"sti\\t%4,*%0++\", operands);
+ output_asm_insn (\"|| ldi\\t*%1++,%4\", operands);
+ }
}
- }
- "
- [(set_attr "type" "multi")])
+ return \"sti\\t%4,*%0++\";
+ }"
+ [(set_attr "type" "multi")])
; Operand 2 is the count, operand 3 is the alignment.
(define_expand "movstrqi"
@@ -5799,14 +5779,8 @@
operands[0] = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
operands[1] = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
tmp = gen_reg_rtx (QImode);
- if (INTVAL (operands[2]) < 8)
- emit_insn (gen_movstrqi_small2 (operands[0], operands[1], operands[2],
- operands[3], tmp));
- else
- {
- emit_insn (gen_movstrqi_large (operands[0], operands[1], operands[2],
- operands[3], tmp));
- }
+ emit_insn (gen_movstrqi_large (operands[0], operands[1], operands[2],
+ operands[3], tmp));
DONE;
}")
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 79b194b2d95..f7e3d29d79a 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -1,5 +1,6 @@
/* Definitions for GCC. Part of the machine description for CRIS.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Axis Communications. Written by Hans-Peter Nilsson.
This file is part of GCC.
@@ -1259,7 +1260,7 @@ cris_target_asm_function_epilogue (FILE *file, HOST_WIDE_INT size)
/* Output the delay-slot-insn the mandated way. */
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, -2, 1);
+ file, 1, -2, 1, NULL);
}
else if (file)
{
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 8fb07039f04..96677443e2a 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -2682,17 +2682,19 @@
(define_insn "*andsi_movu"
[(set (match_operand:SI 0 "register_operand" "=r,r,r")
- (and:SI (match_operand:SI 1 "nonimmediate_operand" "%r,Q>,m")
+ (and:SI (match_operand:SI 1 "nonimmediate_operand" "%r,Q,To")
(match_operand:SI 2 "const_int_operand" "n,n,n")))]
- "INTVAL (operands[2]) == 255 || INTVAL (operands[2]) == 65535"
+ "(INTVAL (operands[2]) == 255 || INTVAL (operands[2]) == 65535)
+ && (GET_CODE (operands[1]) != MEM || ! MEM_VOLATILE_P (operands[1]))"
"movu.%z2 %1,%0"
[(set_attr "slottable" "yes,yes,no")])
(define_insn "*andsi_clear"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,Q>,Q>,m,m")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,Q,Q,To,To")
(and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0,0,0")
(match_operand:SI 2 "const_int_operand" "P,n,P,n,P,n")))]
- "INTVAL (operands[2]) == -65536 || INTVAL (operands[2]) == -256"
+ "(INTVAL (operands[2]) == -65536 || INTVAL (operands[2]) == -256)
+ && (GET_CODE (operands[0]) != MEM || ! MEM_VOLATILE_P (operands[0]))"
"@
cLear.b %0
cLear.w %0
@@ -2770,27 +2772,17 @@
(define_insn "*andhi_movu"
[(set (match_operand:HI 0 "register_operand" "=r,r,r")
- (and:HI (match_operand:HI 1 "nonimmediate_operand" "r,Q>,m")
+ (and:HI (match_operand:HI 1 "nonimmediate_operand" "r,Q,To")
(const_int 255)))]
- ""
+ "GET_CODE (operands[1]) != MEM || ! MEM_VOLATILE_P (operands[1])"
"mOvu.b %1,%0"
[(set_attr "slottable" "yes,yes,no")])
-(define_insn "*andhi_clear_signed"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q>,m")
+(define_insn "*andhi_clear"
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q,To")
(and:HI (match_operand:HI 1 "nonimmediate_operand" "0,0,0")
(const_int -256)))]
- ""
- "cLear.b %0"
- [(set_attr "slottable" "yes,yes,no")
- (set_attr "cc" "none")])
-
-;; FIXME: Either this or the pattern above should be redundant.
-(define_insn "*andhi_clear_unsigned"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,Q>,m")
- (and:HI (match_operand:HI 1 "nonimmediate_operand" "0,0,0")
- (const_int 65280)))]
- ""
+ "GET_CODE (operands[0]) != MEM || ! MEM_VOLATILE_P (operands[0])"
"cLear.b %0"
[(set_attr "slottable" "yes,yes,no")
(set_attr "cc" "none")])
diff --git a/gcc/config/d30v/d30v.h b/gcc/config/d30v/d30v.h
index 7e95d3a7fa9..f63292ecaa3 100644
--- a/gcc/config/d30v/d30v.h
+++ b/gcc/config/d30v/d30v.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for Mitsubishi D30V.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c
index 51c67430535..e7556c4f849 100644
--- a/gcc/config/fp-bit.c
+++ b/gcc/config/fp-bit.c
@@ -1,6 +1,6 @@
/* This is a software floating point library which can be used
for targets without hardware floating point.
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
@@ -330,58 +330,76 @@ pack_d ( fp_number_type * src)
#else
# if defined TFLOAT && defined HALFFRACBITS
{
- halffractype high, low;
-
- high = (fraction >> (FRACBITS - HALFFRACBITS));
- high &= (((fractype)1) << HALFFRACBITS) - 1;
- high |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << HALFFRACBITS;
- high |= ((fractype) (sign & 1)) << (HALFFRACBITS | EXPBITS);
-
- low = (halffractype)fraction &
- ((((halffractype)1) << (FRACBITS - HALFFRACBITS)) - 1);
+ halffractype high, low, unity;
+ int lowsign, lowexp;
+
+ unity = (halffractype) 1 << HALFFRACBITS;
+
+ /* Set HIGH to the high double's significand, masking out the implicit 1.
+ Set LOW to the low double's full significand. */
+ high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
+ low = fraction & (unity * 2 - 1);
+
+ /* Get the initial sign and exponent of the low double. */
+ lowexp = exp - HALFFRACBITS - 1;
+ lowsign = sign;
+
+ /* HIGH should be rounded like a normal double, making |LOW| <=
+ 0.5 ULP of HIGH. Assume round-to-nearest. */
+ if (exp < EXPMAX)
+ if (low > unity || (low == unity && (high & 1) == 1))
+ {
+ /* Round HIGH up and adjust LOW to match. */
+ high++;
+ if (high == unity)
+ {
+ /* May make it infinite, but that's OK. */
+ high = 0;
+ exp++;
+ }
+ low = unity * 2 - low;
+ lowsign ^= 1;
+ }
+
+ high |= (halffractype) exp << HALFFRACBITS;
+ high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
if (exp == EXPMAX || exp == 0 || low == 0)
low = 0;
else
{
- exp -= HALFFRACBITS + 1;
-
- while (exp > 0
- && low < ((halffractype)1 << HALFFRACBITS))
+ while (lowexp > 0 && low < unity)
{
low <<= 1;
- exp--;
+ lowexp--;
}
- if (exp <= 0)
+ if (lowexp <= 0)
{
halffractype roundmsb, round;
+ int shift;
- exp = -exp + 1;
-
- roundmsb = (1 << (exp - 1));
+ shift = 1 - lowexp;
+ roundmsb = (1 << (shift - 1));
round = low & ((roundmsb << 1) - 1);
- low >>= exp;
- exp = 0;
+ low >>= shift;
+ lowexp = 0;
- if (round > roundmsb || (round == roundmsb && (low & 1)))
+ if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
{
low++;
- if (low >= ((halffractype)1 << HALFFRACBITS))
- /* We don't shift left, since it has just become the
- smallest normal number, whose implicit 1 bit is
- now indicated by the nonzero exponent. */
- exp++;
+ if (low == unity)
+ /* LOW rounds up to the smallest normal number. */
+ lowexp++;
}
}
- low &= ((halffractype)1 << HALFFRACBITS) - 1;
- low |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << HALFFRACBITS;
- low |= ((fractype) (sign & 1)) << (HALFFRACBITS | EXPBITS);
+ low &= unity - 1;
+ low |= (halffractype) lowexp << HALFFRACBITS;
+ low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
}
-
- dst.value_raw = (((fractype) high) << HALFSHIFT) | low;
+ dst.value_raw = ((fractype) high << HALFSHIFT) | low;
}
# else
dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
@@ -475,8 +493,16 @@ unpack_d (FLO_union_type * src, fp_number_type * dst)
xlow >>= -shift;
if (sign == lowsign)
fraction += xlow;
- else
+ else if (fraction >= xlow)
fraction -= xlow;
+ else
+ {
+ /* The high part is a power of two but the full number is lower.
+ This code will leave the implicit 1 in FRACTION, but we'd
+ have added that below anyway. */
+ fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
+ exp--;
+ }
}
}
# else
diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h
index feb08e2333e..e4459ba6aa6 100644
--- a/gcc/config/freebsd-spec.h
+++ b/gcc/config/freebsd-spec.h
@@ -147,3 +147,9 @@ is built with the --enable-threads configure-time option.} \
}"
#endif
#endif
+
+#if FBSD_MAJOR < 6
+#define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
+#else
+#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
+#endif
diff --git a/gcc/config/frv/frv-protos.h b/gcc/config/frv/frv-protos.h
index d664bb070f6..90292b17d6e 100644
--- a/gcc/config/frv/frv-protos.h
+++ b/gcc/config/frv/frv-protos.h
@@ -1,5 +1,5 @@
/* Frv prototypes.
- Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
This file is part of GCC.
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index ae0c6bd80c6..1a750427fac 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004
+ Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
This file is part of GCC.
diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h
index 9f85d57637d..ec0ac4bcff9 100644
--- a/gcc/config/frv/frv.h
+++ b/gcc/config/frv/frv.h
@@ -1,5 +1,6 @@
/* Target macros for the FRV port of GCC.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Red Hat Inc.
This file is part of GCC.
diff --git a/gcc/config/frv/frv.md b/gcc/config/frv/frv.md
index 95a7590a32c..aef10bc9d43 100644
--- a/gcc/config/frv/frv.md
+++ b/gcc/config/frv/frv.md
@@ -1,5 +1,5 @@
;; Frv Machine Description
-;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
;; Contributed by Red Hat, Inc.
;; This file is part of GCC.
diff --git a/gcc/config/frv/frvbegin.c b/gcc/config/frv/frvbegin.c
index 0e241047eaf..d021b3540a5 100644
--- a/gcc/config/frv/frvbegin.c
+++ b/gcc/config/frv/frvbegin.c
@@ -1,5 +1,5 @@
/* Frv initialization file linked before all user modules
- Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
This file is part of GCC.
diff --git a/gcc/config/frv/frvend.c b/gcc/config/frv/frvend.c
index c12c151433b..6709cdba078 100644
--- a/gcc/config/frv/frvend.c
+++ b/gcc/config/frv/frvend.c
@@ -1,5 +1,5 @@
/* Frv initialization file linked after all user modules
- Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
This file is part of GCC.
diff --git a/gcc/config/h8300/coff.h b/gcc/config/h8300/coff.h
index 72a74083fd4..7d173193ad1 100644
--- a/gcc/config/h8300/coff.h
+++ b/gcc/config/h8300/coff.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Renesas H8/300 version generating coff
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
diff --git a/gcc/config/h8300/elf.h b/gcc/config/h8300/elf.h
index 47c70b58f47..ecd0603814c 100644
--- a/gcc/config/h8300/elf.h
+++ b/gcc/config/h8300/elf.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Renesas H8/300 version generating elf
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
diff --git a/gcc/config/h8300/h8300-protos.h b/gcc/config/h8300/h8300-protos.h
index 8d8ae097b23..7607b9b8256 100644
--- a/gcc/config/h8300/h8300-protos.h
+++ b/gcc/config/h8300/h8300-protos.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Renesas H8/300 version
- Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 2a4bb2962da..4db04ec859d 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for Renesas H8/300.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
@@ -338,6 +338,9 @@ byte_reg (rtx x, int b)
"r4l", "r4h", "r5l", "r5h", "r6l", "r6h", "r7l", "r7h"
};
+ if (!REG_P (x))
+ abort ();
+
return names_small[REGNO (x) * 2 + b];
}
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 0b2b74b42cb..ef8bd861c6c 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -1,7 +1,7 @@
/* Definitions of target machine for GNU compiler.
Renesas H8/300 (generic)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 301f464fc82..12b55dcbb09 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -1,6 +1,6 @@
;; GCC machine description for Renesas H8/300
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003 Free Software Foundation, Inc.
+;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by Steve Chamberlain (sac@cygnus.com),
;; Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
diff --git a/gcc/config/h8300/lib1funcs.asm b/gcc/config/h8300/lib1funcs.asm
index 93656275efe..22379901aff 100644
--- a/gcc/config/h8300/lib1funcs.asm
+++ b/gcc/config/h8300/lib1funcs.asm
@@ -816,7 +816,7 @@ L_skip2:
behavior is undefined anyways. */
.global ___fixunssfsi
___fixunssfsi:
- cmp.b #0x47,r0h
+ cmp.b #0x4f,r0h
bge Large_num
jmp @___fixsfsi
Large_num:
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 11d14fef0da..4652802102c 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -1,6 +1,6 @@
/* Operating system specific defines to be used when targeting GCC for
hosting on Windows32, using a Unix style C library and tools.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h
index b0c87dbbc56..cee9480d69c 100644
--- a/gcc/config/i386/djgpp.h
+++ b/gcc/config/i386/djgpp.h
@@ -1,5 +1,5 @@
/* Configuration for an i386 running MS-DOS with DJGPP.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h
index a7dbc6785cb..abe450a8f33 100644
--- a/gcc/config/i386/emmintrin.h
+++ b/gcc/config/i386/emmintrin.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h
index 7396a47ce42..9e538e916a2 100644
--- a/gcc/config/i386/freebsd.h
+++ b/gcc/config/i386/freebsd.h
@@ -57,6 +57,10 @@ Boston, MA 02111-1307, USA. */
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD)
+
+#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
the magical crtbegin.o file (see crtstuff.c) which provides part
@@ -105,7 +109,7 @@ Boston, MA 02111-1307, USA. */
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
%{static:-Bstatic}} \
%{symbolic:-Bsymbolic}"
diff --git a/gcc/config/i386/freebsd64.h b/gcc/config/i386/freebsd64.h
index 62d21ccc1a1..19e9bc25adb 100644
--- a/gcc/config/i386/freebsd64.h
+++ b/gcc/config/i386/freebsd64.h
@@ -23,6 +23,9 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/x86-64 ELF)");
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
+
/* Provide a LINK_SPEC appropriate for the FreeBSD/x86-64 ELF target.
This is a copy of LINK_SPEC from <i386/freebsd.h> tweaked for
the x86-64 target. */
@@ -37,6 +40,6 @@ Boston, MA 02111-1307, USA. */
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
%{static:-Bstatic}} \
%{symbolic:-Bsymbolic}"
diff --git a/gcc/config/i386/gthr-win32.c b/gcc/config/i386/gthr-win32.c
index fde4aa20936..4e2b282251d 100644
--- a/gcc/config/i386/gthr-win32.c
+++ b/gcc/config/i386/gthr-win32.c
@@ -1,7 +1,7 @@
/* Implementation of W32-specific threads compatibility routines for
libgcc2. */
-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Contributed by Mumit Khan <khan@xraylith.wisc.edu>.
Modified and moved to separate file by Danny Smith
<dannysmith@users.sourceforge.net>.
diff --git a/gcc/config/i386/i386-interix.h b/gcc/config/i386/i386-interix.h
index fa0eec2421f..2a99ce549a7 100644
--- a/gcc/config/i386/i386-interix.h
+++ b/gcc/config/i386/i386-interix.h
@@ -1,5 +1,6 @@
/* Target definitions for GCC for Intel 80386 running Interix
- Parts Copyright (C) 1991, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Parts:
by Douglas B. Rupp (drupp@cs.washington.edu).
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index cc04a680d60..cc1bb813afe 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GCC for IA-32.
Copyright (C) 1988, 1992, 1994, 1995, 1996, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -178,7 +178,6 @@ extern int ix86_secondary_memory_needed (enum reg_class, enum reg_class,
enum machine_mode, int);
extern enum reg_class ix86_preferred_reload_class (rtx, enum reg_class);
extern int ix86_memory_move_cost (enum machine_mode, enum reg_class, int);
-extern void ix86_set_move_mem_attrs (rtx, rtx, rtx, rtx, rtx);
extern void emit_i387_cw_initialization (rtx, rtx);
extern bool ix86_fp_jump_nontrivial_p (enum rtx_code);
extern void x86_order_regs_for_local_alloc (void);
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b7c7008e683..15bfee88511 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on IA-32.
Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -793,6 +793,9 @@ static rtx maybe_get_pool_constant (rtx);
static rtx ix86_expand_int_compare (enum rtx_code, rtx, rtx);
static enum rtx_code ix86_prepare_fp_compare_args (enum rtx_code, rtx *,
rtx *);
+static bool ix86_fixed_condition_code_regs (unsigned int *, unsigned int *);
+static enum machine_mode ix86_cc_modes_compatible (enum machine_mode,
+ enum machine_mode);
static rtx get_thread_pointer (int);
static rtx legitimize_tls_address (rtx, enum tls_model, int);
static void get_pc_thunk_name (char [32], unsigned int);
@@ -808,14 +811,13 @@ static int ix86_split_to_parts (rtx, rtx *, enum machine_mode);
static int ix86_nsaved_regs (void);
static void ix86_emit_save_regs (void);
static void ix86_emit_save_regs_using_mov (rtx, HOST_WIDE_INT);
-static void ix86_emit_restore_regs_using_mov (rtx, int, int);
+static void ix86_emit_restore_regs_using_mov (rtx, HOST_WIDE_INT, int);
static void ix86_output_function_epilogue (FILE *, HOST_WIDE_INT);
-static void ix86_set_move_mem_attrs_1 (rtx, rtx, rtx, rtx, rtx);
static void ix86_sched_reorder_ppro (rtx *, rtx *);
static HOST_WIDE_INT ix86_GOT_alias_set (void);
static void ix86_adjust_counter (rtx, HOST_WIDE_INT);
static rtx ix86_expand_aligntest (rtx, int);
-static void ix86_expand_strlensi_unroll_1 (rtx, rtx);
+static void ix86_expand_strlensi_unroll_1 (rtx, rtx, rtx);
static int ix86_issue_rate (void);
static int ix86_adjust_cost (rtx, rtx, rtx, int);
static void ix86_sched_init (FILE *, int, int);
@@ -1010,6 +1012,11 @@ static void init_ext_80387_constants (void);
#undef TARGET_ADDRESS_COST
#define TARGET_ADDRESS_COST ix86_address_cost
+#undef TARGET_FIXED_CONDITION_CODE_REGS
+#define TARGET_FIXED_CONDITION_CODE_REGS ix86_fixed_condition_code_regs
+#undef TARGET_CC_MODES_COMPATIBLE
+#define TARGET_CC_MODES_COMPATIBLE ix86_cc_modes_compatible
+
#undef TARGET_MACHINE_DEPENDENT_REORG
#define TARGET_MACHINE_DEPENDENT_REORG ix86_reorg
@@ -1109,6 +1116,8 @@ override_options (void)
| PTA_3DNOW_A | PTA_SSE},
{"athlon-mp", PROCESSOR_ATHLON, PTA_MMX | PTA_PREFETCH_SSE | PTA_3DNOW
| PTA_3DNOW_A | PTA_SSE},
+ {"x86-64", PROCESSOR_K8, PTA_MMX | PTA_PREFETCH_SSE | PTA_64BIT
+ | PTA_SSE | PTA_SSE2 },
{"k8", PROCESSOR_K8, PTA_MMX | PTA_PREFETCH_SSE | PTA_3DNOW | PTA_64BIT
| PTA_3DNOW_A | PTA_SSE | PTA_SSE2},
{"opteron", PROCESSOR_K8, PTA_MMX | PTA_PREFETCH_SSE | PTA_3DNOW | PTA_64BIT
@@ -1151,7 +1160,7 @@ override_options (void)
if (!ix86_tune_string)
ix86_tune_string = cpu_names [TARGET_CPU_DEFAULT];
if (!ix86_arch_string)
- ix86_arch_string = TARGET_64BIT ? "k8" : "i386";
+ ix86_arch_string = TARGET_64BIT ? "x86-64" : "i386";
if (ix86_cmodel_string != 0)
{
@@ -1372,8 +1381,8 @@ override_options (void)
if (x86_arch_always_fancy_math_387 & (1 << ix86_arch))
target_flags &= ~MASK_NO_FANCY_MATH_387;
- /* Turn on SSE2 builtins for -mpni. */
- if (TARGET_PNI)
+ /* Turn on SSE2 builtins for -msse3. */
+ if (TARGET_SSE3)
target_flags |= MASK_SSE2;
/* Turn on SSE builtins for -msse2. */
@@ -1667,6 +1676,9 @@ ix86_comp_type_attributes (tree type1, tree type2)
if (!lookup_attribute (rtdstr, TYPE_ATTRIBUTES (type1))
!= !lookup_attribute (rtdstr, TYPE_ATTRIBUTES (type2)))
return 0;
+ if (ix86_function_regparm (type1, NULL)
+ != ix86_function_regparm (type2, NULL))
+ return 0;
return 1;
}
@@ -5278,16 +5290,29 @@ ix86_expand_prologue (void)
/* Emit code to restore saved registers using MOV insns. First register
is restored from POINTER + OFFSET. */
static void
-ix86_emit_restore_regs_using_mov (rtx pointer, int offset, int maybe_eh_return)
+ix86_emit_restore_regs_using_mov (rtx pointer, HOST_WIDE_INT offset,
+ int maybe_eh_return)
{
int regno;
+ rtx base_address = gen_rtx_MEM (Pmode, pointer);
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if (ix86_save_reg (regno, maybe_eh_return))
{
+ /* Ensure that adjust_address won't be forced to produce pointer
+ out of range allowed by x86-64 instruction set. */
+ if (TARGET_64BIT && offset != trunc_int_for_mode (offset, SImode))
+ {
+ rtx r11;
+
+ r11 = gen_rtx_REG (DImode, FIRST_REX_INT_REG + 3 /* R11 */);
+ emit_move_insn (r11, GEN_INT (offset));
+ emit_insn (gen_adddi3 (r11, r11, pointer));
+ base_address = gen_rtx_MEM (Pmode, r11);
+ offset = 0;
+ }
emit_move_insn (gen_rtx_REG (Pmode, regno),
- adjust_address (gen_rtx_MEM (Pmode, pointer),
- Pmode, offset));
+ adjust_address (base_address, Pmode, offset));
offset += UNITS_PER_WORD;
}
}
@@ -8710,6 +8735,64 @@ ix86_cc_mode (enum rtx_code code, rtx op0, rtx op1)
}
}
+/* Return the fixed registers used for condition codes. */
+
+static bool
+ix86_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2)
+{
+ *p1 = FLAGS_REG;
+ *p2 = FPSR_REG;
+ return true;
+}
+
+/* If two condition code modes are compatible, return a condition code
+ mode which is compatible with both. Otherwise, return
+ VOIDmode. */
+
+static enum machine_mode
+ix86_cc_modes_compatible (enum machine_mode m1, enum machine_mode m2)
+{
+ if (m1 == m2)
+ return m1;
+
+ if (GET_MODE_CLASS (m1) != MODE_CC || GET_MODE_CLASS (m2) != MODE_CC)
+ return VOIDmode;
+
+ if ((m1 == CCGCmode && m2 == CCGOCmode)
+ || (m1 == CCGOCmode && m2 == CCGCmode))
+ return CCGCmode;
+
+ switch (m1)
+ {
+ default:
+ abort ();
+
+ case CCmode:
+ case CCGCmode:
+ case CCGOCmode:
+ case CCNOmode:
+ case CCZmode:
+ switch (m2)
+ {
+ default:
+ return VOIDmode;
+
+ case CCmode:
+ case CCGCmode:
+ case CCGOCmode:
+ case CCNOmode:
+ case CCZmode:
+ return CCmode;
+ }
+
+ case CCFPmode:
+ case CCFPUmode:
+ /* These are only compatible with themselves, which we already
+ checked above. */
+ return VOIDmode;
+ }
+}
+
/* Return true if we should use an FCOMI instruction for this fp comparison. */
int
@@ -10935,11 +11018,10 @@ ix86_zero_extend_to_Pmode (rtx exp)
int
ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
{
- rtx srcreg, destreg, countreg;
+ rtx srcreg, destreg, countreg, srcexp, destexp;
enum machine_mode counter_mode;
HOST_WIDE_INT align = 0;
unsigned HOST_WIDE_INT count = 0;
- rtx insns;
if (GET_CODE (align_exp) == CONST_INT)
align = INTVAL (align_exp);
@@ -10968,28 +11050,27 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
else
counter_mode = DImode;
- start_sequence ();
-
if (counter_mode != SImode && counter_mode != DImode)
abort ();
destreg = copy_to_mode_reg (Pmode, XEXP (dst, 0));
+ if (destreg != XEXP (dst, 0))
+ dst = replace_equiv_address_nv (dst, destreg);
srcreg = copy_to_mode_reg (Pmode, XEXP (src, 0));
-
- emit_insn (gen_cld ());
+ if (srcreg != XEXP (src, 0))
+ src = replace_equiv_address_nv (src, srcreg);
/* When optimizing for size emit simple rep ; movsb instruction for
counts not divisible by 4. */
if ((!optimize || optimize_size) && (count == 0 || (count & 0x03)))
{
+ emit_insn (gen_cld ());
countreg = ix86_zero_extend_to_Pmode (count_exp);
- if (TARGET_64BIT)
- emit_insn (gen_rep_movqi_rex64 (destreg, srcreg, countreg,
- destreg, srcreg, countreg));
- else
- emit_insn (gen_rep_movqi (destreg, srcreg, countreg,
- destreg, srcreg, countreg));
+ destexp = gen_rtx_PLUS (Pmode, destreg, countreg);
+ srcexp = gen_rtx_PLUS (Pmode, srcreg, countreg);
+ emit_insn (gen_rep_mov (destreg, dst, srcreg, src, countreg,
+ destexp, srcexp));
}
/* For constant aligned (or small unaligned) copies use rep movsl
@@ -11001,32 +11082,53 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
|| (!TARGET_PENTIUMPRO && !TARGET_64BIT && align >= 4)
|| optimize_size || count < (unsigned int) 64))
{
+ unsigned HOST_WIDE_INT offset = 0;
int size = TARGET_64BIT && !optimize_size ? 8 : 4;
+ rtx srcmem, dstmem;
+
+ emit_insn (gen_cld ());
if (count & ~(size - 1))
{
countreg = copy_to_mode_reg (counter_mode,
GEN_INT ((count >> (size == 4 ? 2 : 3))
& (TARGET_64BIT ? -1 : 0x3fffffff)));
countreg = ix86_zero_extend_to_Pmode (countreg);
- if (size == 4)
- {
- if (TARGET_64BIT)
- emit_insn (gen_rep_movsi_rex64 (destreg, srcreg, countreg,
- destreg, srcreg, countreg));
- else
- emit_insn (gen_rep_movsi (destreg, srcreg, countreg,
- destreg, srcreg, countreg));
- }
- else
- emit_insn (gen_rep_movdi_rex64 (destreg, srcreg, countreg,
- destreg, srcreg, countreg));
+
+ destexp = gen_rtx_ASHIFT (Pmode, countreg,
+ GEN_INT (size == 4 ? 2 : 3));
+ srcexp = gen_rtx_PLUS (Pmode, destexp, srcreg);
+ destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
+
+ emit_insn (gen_rep_mov (destreg, dst, srcreg, src,
+ countreg, destexp, srcexp));
+ offset = count & ~(size - 1);
}
if (size == 8 && (count & 0x04))
- emit_insn (gen_strmovsi (destreg, srcreg));
+ {
+ srcmem = adjust_automodify_address_nv (src, SImode, srcreg,
+ offset);
+ dstmem = adjust_automodify_address_nv (dst, SImode, destreg,
+ offset);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ offset += 4;
+ }
if (count & 0x02)
- emit_insn (gen_strmovhi (destreg, srcreg));
+ {
+ srcmem = adjust_automodify_address_nv (src, HImode, srcreg,
+ offset);
+ dstmem = adjust_automodify_address_nv (dst, HImode, destreg,
+ offset);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ offset += 2;
+ }
if (count & 0x01)
- emit_insn (gen_strmovqi (destreg, srcreg));
+ {
+ srcmem = adjust_automodify_address_nv (src, QImode, srcreg,
+ offset);
+ dstmem = adjust_automodify_address_nv (dst, QImode, destreg,
+ offset);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ }
}
/* The generic code based on the glibc implementation:
- align destination to 4 bytes (8 byte alignment is used for PentiumPro
@@ -11037,9 +11139,13 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
{
rtx countreg2;
rtx label = NULL;
+ rtx srcmem, dstmem;
int desired_alignment = (TARGET_PENTIUMPRO
&& (count == 0 || count >= (unsigned int) 260)
? 8 : UNITS_PER_WORD);
+ /* Get rid of MEM_OFFSETs, they won't be accurate. */
+ dst = change_address (dst, BLKmode, destreg);
+ src = change_address (src, BLKmode, srcreg);
/* In case we don't know anything about the alignment, default to
library version, since it is usually equally fast and result in
@@ -11049,10 +11155,7 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
will not be important. */
if (!TARGET_INLINE_ALL_STRINGOPS
&& (align < UNITS_PER_WORD || !TARGET_REP_MOVL_OPTIMAL))
- {
- end_sequence ();
- return 0;
- }
+ return 0;
if (TARGET_SINGLE_STRINGOP)
emit_insn (gen_cld ());
@@ -11082,7 +11185,9 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
if (align <= 1)
{
rtx label = ix86_expand_aligntest (destreg, 1);
- emit_insn (gen_strmovqi (destreg, srcreg));
+ srcmem = change_address (src, QImode, srcreg);
+ dstmem = change_address (dst, QImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
ix86_adjust_counter (countreg, 1);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11090,7 +11195,9 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
if (align <= 2)
{
rtx label = ix86_expand_aligntest (destreg, 2);
- emit_insn (gen_strmovhi (destreg, srcreg));
+ srcmem = change_address (src, HImode, srcreg);
+ dstmem = change_address (dst, HImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
ix86_adjust_counter (countreg, 2);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11098,7 +11205,9 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
if (align <= 4 && desired_alignment > 4)
{
rtx label = ix86_expand_aligntest (destreg, 4);
- emit_insn (gen_strmovsi (destreg, srcreg));
+ srcmem = change_address (src, SImode, srcreg);
+ dstmem = change_address (dst, SImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
ix86_adjust_counter (countreg, 4);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11116,15 +11225,17 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
{
emit_insn (gen_lshrdi3 (countreg2, ix86_zero_extend_to_Pmode (countreg),
GEN_INT (3)));
- emit_insn (gen_rep_movdi_rex64 (destreg, srcreg, countreg2,
- destreg, srcreg, countreg2));
+ destexp = gen_rtx_ASHIFT (Pmode, countreg2, GEN_INT (3));
}
else
{
- emit_insn (gen_lshrsi3 (countreg2, countreg, GEN_INT (2)));
- emit_insn (gen_rep_movsi (destreg, srcreg, countreg2,
- destreg, srcreg, countreg2));
+ emit_insn (gen_lshrsi3 (countreg2, countreg, const2_rtx));
+ destexp = gen_rtx_ASHIFT (Pmode, countreg2, const2_rtx);
}
+ srcexp = gen_rtx_PLUS (Pmode, destexp, srcreg);
+ destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
+ emit_insn (gen_rep_mov (destreg, dst, srcreg, src,
+ countreg2, destexp, srcexp));
if (label)
{
@@ -11132,48 +11243,61 @@ ix86_expand_movstr (rtx dst, rtx src, rtx count_exp, rtx align_exp)
LABEL_NUSES (label) = 1;
}
if (TARGET_64BIT && align > 4 && count != 0 && (count & 4))
- emit_insn (gen_strmovsi (destreg, srcreg));
+ {
+ srcmem = change_address (src, SImode, srcreg);
+ dstmem = change_address (dst, SImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ }
if ((align <= 4 || count == 0) && TARGET_64BIT)
{
rtx label = ix86_expand_aligntest (countreg, 4);
- emit_insn (gen_strmovsi (destreg, srcreg));
+ srcmem = change_address (src, SImode, srcreg);
+ dstmem = change_address (dst, SImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
emit_label (label);
LABEL_NUSES (label) = 1;
}
if (align > 2 && count != 0 && (count & 2))
- emit_insn (gen_strmovhi (destreg, srcreg));
+ {
+ srcmem = change_address (src, HImode, srcreg);
+ dstmem = change_address (dst, HImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ }
if (align <= 2 || count == 0)
{
rtx label = ix86_expand_aligntest (countreg, 2);
- emit_insn (gen_strmovhi (destreg, srcreg));
+ srcmem = change_address (src, HImode, srcreg);
+ dstmem = change_address (dst, HImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
emit_label (label);
LABEL_NUSES (label) = 1;
}
if (align > 1 && count != 0 && (count & 1))
- emit_insn (gen_strmovqi (destreg, srcreg));
+ {
+ srcmem = change_address (src, QImode, srcreg);
+ dstmem = change_address (dst, QImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ }
if (align <= 1 || count == 0)
{
rtx label = ix86_expand_aligntest (countreg, 1);
- emit_insn (gen_strmovqi (destreg, srcreg));
+ srcmem = change_address (src, QImode, srcreg);
+ dstmem = change_address (dst, QImode, destreg);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
emit_label (label);
LABEL_NUSES (label) = 1;
}
}
- insns = get_insns ();
- end_sequence ();
-
- ix86_set_move_mem_attrs (insns, dst, src, destreg, srcreg);
- emit_insn (insns);
return 1;
}
/* Expand string clear operation (bzero). Use i386 string operations when
profitable. expand_movstr contains similar code. */
int
-ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
+ix86_expand_clrstr (rtx dst, rtx count_exp, rtx align_exp)
{
- rtx destreg, zeroreg, countreg;
+ rtx destreg, zeroreg, countreg, destexp;
enum machine_mode counter_mode;
HOST_WIDE_INT align = 0;
unsigned HOST_WIDE_INT count = 0;
@@ -11204,7 +11328,9 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
else
counter_mode = DImode;
- destreg = copy_to_mode_reg (Pmode, XEXP (src, 0));
+ destreg = copy_to_mode_reg (Pmode, XEXP (dst, 0));
+ if (destreg != XEXP (dst, 0))
+ dst = replace_equiv_address_nv (dst, destreg);
emit_insn (gen_cld ());
@@ -11215,12 +11341,8 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
{
countreg = ix86_zero_extend_to_Pmode (count_exp);
zeroreg = copy_to_mode_reg (QImode, const0_rtx);
- if (TARGET_64BIT)
- emit_insn (gen_rep_stosqi_rex64 (destreg, countreg, zeroreg,
- destreg, countreg));
- else
- emit_insn (gen_rep_stosqi (destreg, countreg, zeroreg,
- destreg, countreg));
+ destexp = gen_rtx_PLUS (Pmode, destreg, countreg);
+ emit_insn (gen_rep_stos (destreg, countreg, dst, zeroreg, destexp));
}
else if (count != 0
&& (align >= 8
@@ -11228,6 +11350,8 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
|| optimize_size || count < (unsigned int) 64))
{
int size = TARGET_64BIT && !optimize_size ? 8 : 4;
+ unsigned HOST_WIDE_INT offset = 0;
+
zeroreg = copy_to_mode_reg (size == 4 ? SImode : DImode, const0_rtx);
if (count & ~(size - 1))
{
@@ -11235,28 +11359,34 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
GEN_INT ((count >> (size == 4 ? 2 : 3))
& (TARGET_64BIT ? -1 : 0x3fffffff)));
countreg = ix86_zero_extend_to_Pmode (countreg);
- if (size == 4)
- {
- if (TARGET_64BIT)
- emit_insn (gen_rep_stossi_rex64 (destreg, countreg, zeroreg,
- destreg, countreg));
- else
- emit_insn (gen_rep_stossi (destreg, countreg, zeroreg,
- destreg, countreg));
- }
- else
- emit_insn (gen_rep_stosdi_rex64 (destreg, countreg, zeroreg,
- destreg, countreg));
+ destexp = gen_rtx_ASHIFT (Pmode, countreg, GEN_INT (size == 4 ? 2 : 3));
+ destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
+ emit_insn (gen_rep_stos (destreg, countreg, dst, zeroreg, destexp));
+ offset = count & ~(size - 1);
}
if (size == 8 && (count & 0x04))
- emit_insn (gen_strsetsi (destreg,
+ {
+ rtx mem = adjust_automodify_address_nv (dst, SImode, destreg,
+ offset);
+ emit_insn (gen_strset (destreg, mem,
gen_rtx_SUBREG (SImode, zeroreg, 0)));
+ offset += 4;
+ }
if (count & 0x02)
- emit_insn (gen_strsethi (destreg,
+ {
+ rtx mem = adjust_automodify_address_nv (dst, HImode, destreg,
+ offset);
+ emit_insn (gen_strset (destreg, mem,
gen_rtx_SUBREG (HImode, zeroreg, 0)));
+ offset += 2;
+ }
if (count & 0x01)
- emit_insn (gen_strsetqi (destreg,
+ {
+ rtx mem = adjust_automodify_address_nv (dst, QImode, destreg,
+ offset);
+ emit_insn (gen_strset (destreg, mem,
gen_rtx_SUBREG (QImode, zeroreg, 0)));
+ }
}
else
{
@@ -11283,6 +11413,8 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
countreg2 = gen_reg_rtx (Pmode);
countreg = copy_to_mode_reg (counter_mode, count_exp);
zeroreg = copy_to_mode_reg (Pmode, const0_rtx);
+ /* Get rid of MEM_OFFSET, it won't be accurate. */
+ dst = change_address (dst, BLKmode, destreg);
if (count == 0 && align < desired_alignment)
{
@@ -11293,8 +11425,8 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
if (align <= 1)
{
rtx label = ix86_expand_aligntest (destreg, 1);
- emit_insn (gen_strsetqi (destreg,
- gen_rtx_SUBREG (QImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (QImode, zeroreg, 0)));
ix86_adjust_counter (countreg, 1);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11302,8 +11434,8 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
if (align <= 2)
{
rtx label = ix86_expand_aligntest (destreg, 2);
- emit_insn (gen_strsethi (destreg,
- gen_rtx_SUBREG (HImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (HImode, zeroreg, 0)));
ix86_adjust_counter (countreg, 2);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11311,9 +11443,10 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
if (align <= 4 && desired_alignment > 4)
{
rtx label = ix86_expand_aligntest (destreg, 4);
- emit_insn (gen_strsetsi (destreg, (TARGET_64BIT
- ? gen_rtx_SUBREG (SImode, zeroreg, 0)
- : zeroreg)));
+ emit_insn (gen_strset (destreg, dst,
+ (TARGET_64BIT
+ ? gen_rtx_SUBREG (SImode, zeroreg, 0)
+ : zeroreg)));
ix86_adjust_counter (countreg, 4);
emit_label (label);
LABEL_NUSES (label) = 1;
@@ -11332,15 +11465,16 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
{
emit_insn (gen_lshrdi3 (countreg2, ix86_zero_extend_to_Pmode (countreg),
GEN_INT (3)));
- emit_insn (gen_rep_stosdi_rex64 (destreg, countreg2, zeroreg,
- destreg, countreg2));
+ destexp = gen_rtx_ASHIFT (Pmode, countreg2, GEN_INT (3));
}
else
{
- emit_insn (gen_lshrsi3 (countreg2, countreg, GEN_INT (2)));
- emit_insn (gen_rep_stossi (destreg, countreg2, zeroreg,
- destreg, countreg2));
+ emit_insn (gen_lshrsi3 (countreg2, countreg, const2_rtx));
+ destexp = gen_rtx_ASHIFT (Pmode, countreg2, const2_rtx);
}
+ destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
+ emit_insn (gen_rep_stos (destreg, countreg2, dst, zeroreg, destexp));
+
if (label)
{
emit_label (label);
@@ -11348,41 +11482,42 @@ ix86_expand_clrstr (rtx src, rtx count_exp, rtx align_exp)
}
if (TARGET_64BIT && align > 4 && count != 0 && (count & 4))
- emit_insn (gen_strsetsi (destreg,
- gen_rtx_SUBREG (SImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (SImode, zeroreg, 0)));
if (TARGET_64BIT && (align <= 4 || count == 0))
{
rtx label = ix86_expand_aligntest (countreg, 4);
- emit_insn (gen_strsetsi (destreg,
- gen_rtx_SUBREG (SImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (SImode, zeroreg, 0)));
emit_label (label);
LABEL_NUSES (label) = 1;
}
if (align > 2 && count != 0 && (count & 2))
- emit_insn (gen_strsethi (destreg,
- gen_rtx_SUBREG (HImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (HImode, zeroreg, 0)));
if (align <= 2 || count == 0)
{
rtx label = ix86_expand_aligntest (countreg, 2);
- emit_insn (gen_strsethi (destreg,
- gen_rtx_SUBREG (HImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (HImode, zeroreg, 0)));
emit_label (label);
LABEL_NUSES (label) = 1;
}
if (align > 1 && count != 0 && (count & 1))
- emit_insn (gen_strsetqi (destreg,
- gen_rtx_SUBREG (QImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (QImode, zeroreg, 0)));
if (align <= 1 || count == 0)
{
rtx label = ix86_expand_aligntest (countreg, 1);
- emit_insn (gen_strsetqi (destreg,
- gen_rtx_SUBREG (QImode, zeroreg, 0)));
+ emit_insn (gen_strset (destreg, dst,
+ gen_rtx_SUBREG (QImode, zeroreg, 0)));
emit_label (label);
LABEL_NUSES (label) = 1;
}
}
return 1;
}
+
/* Expand strlen. */
int
ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
@@ -11414,7 +11549,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
emit_move_insn (out, addr);
- ix86_expand_strlensi_unroll_1 (out, align);
+ ix86_expand_strlensi_unroll_1 (out, src, align);
/* strlensi_unroll_1 returns the address of the zero at the end of
the string, like memchr(), so compute the length by subtracting
@@ -11426,6 +11561,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
}
else
{
+ rtx unspec;
scratch2 = gen_reg_rtx (Pmode);
scratch3 = gen_reg_rtx (Pmode);
scratch4 = force_reg (Pmode, constm1_rtx);
@@ -11434,17 +11570,19 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
eoschar = force_reg (QImode, eoschar);
emit_insn (gen_cld ());
+ src = replace_equiv_address_nv (src, scratch3);
+
+ /* If .md starts supporting :P, this can be done in .md. */
+ unspec = gen_rtx_UNSPEC (Pmode, gen_rtvec (4, src, eoschar, align,
+ scratch4), UNSPEC_SCAS);
+ emit_insn (gen_strlenqi_1 (scratch1, scratch3, unspec));
if (TARGET_64BIT)
{
- emit_insn (gen_strlenqi_rex_1 (scratch1, scratch3, eoschar,
- align, scratch4, scratch3));
emit_insn (gen_one_cmpldi2 (scratch2, scratch1));
emit_insn (gen_adddi3 (out, scratch2, constm1_rtx));
}
else
{
- emit_insn (gen_strlenqi_1 (scratch1, scratch3, eoschar,
- align, scratch4, scratch3));
emit_insn (gen_one_cmplsi2 (scratch2, scratch1));
emit_insn (gen_addsi3 (out, scratch2, constm1_rtx));
}
@@ -11464,7 +11602,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
some address computing at the end. These things are done in i386.md. */
static void
-ix86_expand_strlensi_unroll_1 (rtx out, rtx align_rtx)
+ix86_expand_strlensi_unroll_1 (rtx out, rtx src, rtx align_rtx)
{
int align;
rtx tmp;
@@ -11517,7 +11655,7 @@ ix86_expand_strlensi_unroll_1 (rtx out, rtx align_rtx)
Pmode, 1, align_4_label);
}
- mem = gen_rtx_MEM (QImode, out);
+ mem = change_address (src, QImode, out);
/* Now compare the bytes. */
@@ -11561,7 +11699,7 @@ ix86_expand_strlensi_unroll_1 (rtx out, rtx align_rtx)
speed up. */
emit_label (align_4_label);
- mem = gen_rtx_MEM (SImode, out);
+ mem = change_address (src, SImode, out);
emit_move_insn (scratch, mem);
if (TARGET_64BIT)
emit_insn (gen_adddi3 (out, out, GEN_INT (4)));
@@ -12426,50 +12564,6 @@ ia32_multipass_dfa_lookahead (void)
}
-/* Walk through INSNS and look for MEM references whose address is DSTREG or
- SRCREG and set the memory attribute to those of DSTREF and SRCREF, as
- appropriate. */
-
-void
-ix86_set_move_mem_attrs (rtx insns, rtx dstref, rtx srcref, rtx dstreg,
- rtx srcreg)
-{
- rtx insn;
-
- for (insn = insns; insn != 0 ; insn = NEXT_INSN (insn))
- if (INSN_P (insn))
- ix86_set_move_mem_attrs_1 (PATTERN (insn), dstref, srcref,
- dstreg, srcreg);
-}
-
-/* Subroutine of above to actually do the updating by recursively walking
- the rtx. */
-
-static void
-ix86_set_move_mem_attrs_1 (rtx x, rtx dstref, rtx srcref, rtx dstreg,
- rtx srcreg)
-{
- enum rtx_code code = GET_CODE (x);
- const char *format_ptr = GET_RTX_FORMAT (code);
- int i, j;
-
- if (code == MEM && XEXP (x, 0) == dstreg)
- MEM_COPY_ATTRIBUTES (x, dstref);
- else if (code == MEM && XEXP (x, 0) == srcreg)
- MEM_COPY_ATTRIBUTES (x, srcref);
-
- for (i = 0; i < GET_RTX_LENGTH (code); i++, format_ptr++)
- {
- if (*format_ptr == 'e')
- ix86_set_move_mem_attrs_1 (XEXP (x, i), dstref, srcref,
- dstreg, srcreg);
- else if (*format_ptr == 'E')
- for (j = XVECLEN (x, i) - 1; j >= 0; j--)
- ix86_set_move_mem_attrs_1 (XVECEXP (x, i, j), dstref, srcref,
- dstreg, srcreg);
- }
-}
-
/* Compute the alignment given to a constant that is being placed in memory.
EXP is the constant and ALIGN is the alignment that the object would
ordinarily have.
@@ -12486,9 +12580,9 @@ ix86_constant_alignment (tree exp, int align)
else if (ALIGN_MODE_128 (TYPE_MODE (TREE_TYPE (exp))) && align < 128)
return 128;
}
- else if (TREE_CODE (exp) == STRING_CST && TREE_STRING_LENGTH (exp) >= 31
- && align < 256)
- return 256;
+ else if (!optimize_size && TREE_CODE (exp) == STRING_CST
+ && TREE_STRING_LENGTH (exp) >= 31 && align < BITS_PER_WORD)
+ return BITS_PER_WORD;
return align;
}
@@ -12983,13 +13077,13 @@ static const struct builtin_description bdesc_2arg[] =
{ MASK_SSE2, CODE_FOR_cvtsd2ss, 0, IX86_BUILTIN_CVTSD2SS, 0, 0 },
{ MASK_SSE2, CODE_FOR_cvtss2sd, 0, IX86_BUILTIN_CVTSS2SD, 0, 0 },
- /* PNI MMX */
- { MASK_PNI, CODE_FOR_addsubv4sf3, "__builtin_ia32_addsubps", IX86_BUILTIN_ADDSUBPS, 0, 0 },
- { MASK_PNI, CODE_FOR_addsubv2df3, "__builtin_ia32_addsubpd", IX86_BUILTIN_ADDSUBPD, 0, 0 },
- { MASK_PNI, CODE_FOR_haddv4sf3, "__builtin_ia32_haddps", IX86_BUILTIN_HADDPS, 0, 0 },
- { MASK_PNI, CODE_FOR_haddv2df3, "__builtin_ia32_haddpd", IX86_BUILTIN_HADDPD, 0, 0 },
- { MASK_PNI, CODE_FOR_hsubv4sf3, "__builtin_ia32_hsubps", IX86_BUILTIN_HSUBPS, 0, 0 },
- { MASK_PNI, CODE_FOR_hsubv2df3, "__builtin_ia32_hsubpd", IX86_BUILTIN_HSUBPD, 0, 0 }
+ /* SSE3 MMX */
+ { MASK_SSE3, CODE_FOR_addsubv4sf3, "__builtin_ia32_addsubps", IX86_BUILTIN_ADDSUBPS, 0, 0 },
+ { MASK_SSE3, CODE_FOR_addsubv2df3, "__builtin_ia32_addsubpd", IX86_BUILTIN_ADDSUBPD, 0, 0 },
+ { MASK_SSE3, CODE_FOR_haddv4sf3, "__builtin_ia32_haddps", IX86_BUILTIN_HADDPS, 0, 0 },
+ { MASK_SSE3, CODE_FOR_haddv2df3, "__builtin_ia32_haddpd", IX86_BUILTIN_HADDPD, 0, 0 },
+ { MASK_SSE3, CODE_FOR_hsubv4sf3, "__builtin_ia32_hsubps", IX86_BUILTIN_HSUBPS, 0, 0 },
+ { MASK_SSE3, CODE_FOR_hsubv2df3, "__builtin_ia32_hsubpd", IX86_BUILTIN_HSUBPD, 0, 0 }
};
static const struct builtin_description bdesc_1arg[] =
@@ -13037,10 +13131,10 @@ static const struct builtin_description bdesc_1arg[] =
{ MASK_SSE2, CODE_FOR_sse2_movq, 0, IX86_BUILTIN_MOVQ, 0, 0 },
- /* PNI */
- { MASK_PNI, CODE_FOR_movshdup, 0, IX86_BUILTIN_MOVSHDUP, 0, 0 },
- { MASK_PNI, CODE_FOR_movsldup, 0, IX86_BUILTIN_MOVSLDUP, 0, 0 },
- { MASK_PNI, CODE_FOR_movddup, 0, IX86_BUILTIN_MOVDDUP, 0, 0 }
+ /* SSE3 */
+ { MASK_SSE3, CODE_FOR_movshdup, 0, IX86_BUILTIN_MOVSHDUP, 0, 0 },
+ { MASK_SSE3, CODE_FOR_movsldup, 0, IX86_BUILTIN_MOVSLDUP, 0, 0 },
+ { MASK_SSE3, CODE_FOR_movddup, 0, IX86_BUILTIN_MOVDDUP, 0, 0 }
};
void
@@ -13666,23 +13760,23 @@ ix86_init_mmx_sse_builtins (void)
def_builtin (MASK_SSE2, "__builtin_ia32_pmaddwd128", v4si_ftype_v8hi_v8hi, IX86_BUILTIN_PMADDWD128);
/* Prescott New Instructions. */
- def_builtin (MASK_PNI, "__builtin_ia32_monitor",
+ def_builtin (MASK_SSE3, "__builtin_ia32_monitor",
void_ftype_pcvoid_unsigned_unsigned,
IX86_BUILTIN_MONITOR);
- def_builtin (MASK_PNI, "__builtin_ia32_mwait",
+ def_builtin (MASK_SSE3, "__builtin_ia32_mwait",
void_ftype_unsigned_unsigned,
IX86_BUILTIN_MWAIT);
- def_builtin (MASK_PNI, "__builtin_ia32_movshdup",
+ def_builtin (MASK_SSE3, "__builtin_ia32_movshdup",
v4sf_ftype_v4sf,
IX86_BUILTIN_MOVSHDUP);
- def_builtin (MASK_PNI, "__builtin_ia32_movsldup",
+ def_builtin (MASK_SSE3, "__builtin_ia32_movsldup",
v4sf_ftype_v4sf,
IX86_BUILTIN_MOVSLDUP);
- def_builtin (MASK_PNI, "__builtin_ia32_lddqu",
+ def_builtin (MASK_SSE3, "__builtin_ia32_lddqu",
v16qi_ftype_pcchar, IX86_BUILTIN_LDDQU);
- def_builtin (MASK_PNI, "__builtin_ia32_loadddup",
+ def_builtin (MASK_SSE3, "__builtin_ia32_loadddup",
v2df_ftype_pcdouble, IX86_BUILTIN_LOADDDUP);
- def_builtin (MASK_PNI, "__builtin_ia32_movddup",
+ def_builtin (MASK_SSE3, "__builtin_ia32_movddup",
v2df_ftype_v2df, IX86_BUILTIN_MOVDDUP);
}
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 52b193bb022..64c22267b44 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GCC for IA-32.
Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -121,7 +121,7 @@ extern int target_flags;
#define MASK_MMX 0x00002000 /* Support MMX regs/builtins */
#define MASK_SSE 0x00004000 /* Support SSE regs/builtins */
#define MASK_SSE2 0x00008000 /* Support SSE2 regs/builtins */
-#define MASK_PNI 0x00010000 /* Support PNI regs/builtins */
+#define MASK_SSE3 0x00010000 /* Support SSE3 regs/builtins */
#define MASK_3DNOW 0x00020000 /* Support 3Dnow builtins */
#define MASK_3DNOW_A 0x00040000 /* Support Athlon 3Dnow builtins */
#define MASK_128BIT_LONG_DOUBLE 0x00080000 /* long double size is 128bit */
@@ -303,7 +303,7 @@ extern int x86_prefetch_sse;
#define TARGET_SSE ((target_flags & MASK_SSE) != 0)
#define TARGET_SSE2 ((target_flags & MASK_SSE2) != 0)
-#define TARGET_PNI ((target_flags & MASK_PNI) != 0)
+#define TARGET_SSE3 ((target_flags & MASK_SSE3) != 0)
#define TARGET_SSE_MATH ((ix86_fpmath & FPMATH_SSE) != 0)
#define TARGET_MIX_SSE_I387 ((ix86_fpmath & FPMATH_SSE) \
&& (ix86_fpmath & FPMATH_387))
@@ -333,6 +333,8 @@ extern int x86_prefetch_sse;
{ "486", 0, "" /*Deprecated.*/}, \
{ "pentium", 0, "" /*Deprecated.*/}, \
{ "pentiumpro", 0, "" /*Deprecated.*/}, \
+ { "pni", 0, "" /*Deprecated.*/}, \
+ { "no-pni", 0, "" /*Deprecated.*/}, \
{ "intel-syntax", 0, "" /*Deprecated.*/}, \
{ "no-intel-syntax", 0, "" /*Deprecated.*/}, \
{ "rtd", MASK_RTD, \
@@ -399,10 +401,10 @@ extern int x86_prefetch_sse;
N_("Support MMX, SSE and SSE2 built-in functions and code generation") }, \
{ "no-sse2", -MASK_SSE2, \
N_("Do not support MMX, SSE and SSE2 built-in functions and code generation") }, \
- { "pni", MASK_PNI, \
- N_("Support MMX, SSE, SSE2 and PNI built-in functions and code generation") },\
- { "no-pni", -MASK_PNI, \
- N_("Do not support MMX, SSE, SSE2 and PNI built-in functions and code generation") },\
+ { "sse3", MASK_SSE3, \
+ N_("Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation") },\
+ { "no-sse3", -MASK_SSE3, \
+ N_("Do not support MMX, SSE, SSE2 and SSE3 built-in functions and code generation") },\
{ "128bit-long-double", MASK_128BIT_LONG_DOUBLE, \
N_("sizeof(long double) is 16") }, \
{ "96bit-long-double", -MASK_128BIT_LONG_DOUBLE, \
@@ -528,6 +530,10 @@ extern int x86_prefetch_sse;
%{mcpu=*:-mtune=%* \
%n`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.\n}} \
%<mcpu=* \
+%{mpni:-msse3 \
+%n`-mpni' is deprecated. Use `-msse3' instead.\n} \
+%{mno-pni:-mno-sse3 \
+%n`-mno-pni' is deprecated. Use `-mno-sse3' instead.\n} \
%{mintel-syntax:-masm=intel \
%n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.\n} \
%{mno-intel-syntax:-masm=att \
@@ -616,8 +622,11 @@ extern int x86_prefetch_sse;
builtin_define ("__SSE__"); \
if (TARGET_SSE2) \
builtin_define ("__SSE2__"); \
- if (TARGET_PNI) \
- builtin_define ("__PNI__"); \
+ if (TARGET_SSE3) \
+ { \
+ builtin_define ("__SSE3__"); \
+ builtin_define ("__PNI__"); \
+ } \
if (TARGET_SSE_MATH && TARGET_SSE) \
builtin_define ("__SSE_MATH__"); \
if (TARGET_SSE_MATH && TARGET_SSE2) \
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 72dff86297d..d79b12ca021 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -15353,170 +15353,45 @@
;; Most CPUs don't like single string operations
;; Handle this case here to simplify previous expander.
-(define_expand "strmovdi_rex64"
- [(set (match_dup 2)
- (mem:DI (match_operand:DI 1 "register_operand" "")))
- (set (mem:DI (match_operand:DI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 8)))
+(define_expand "strmov"
+ [(set (match_dup 4) (match_operand 3 "memory_operand" ""))
+ (set (match_operand 1 "memory_operand" "") (match_dup 4))
+ (parallel [(set (match_operand 0 "register_operand" "") (match_dup 5))
(clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:DI (match_dup 1) (const_int 8)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovdi_rex_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (DImode);
-})
-
-
-(define_expand "strmovsi"
- [(set (match_dup 2)
- (mem:SI (match_operand:SI 1 "register_operand" "")))
- (set (mem:SI (match_operand:SI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 4)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:SI (match_dup 1) (const_int 4)))
+ (parallel [(set (match_operand 2 "register_operand" "") (match_dup 6))
(clobber (reg:CC 17))])]
""
{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strmovsi_rex64 (operands[0], operands[1]));
- DONE;
- }
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovsi_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (SImode);
-})
+ rtx adjust = GEN_INT (GET_MODE_SIZE (GET_MODE (operands[1])));
-(define_expand "strmovsi_rex64"
- [(set (match_dup 2)
- (mem:SI (match_operand:DI 1 "register_operand" "")))
- (set (mem:SI (match_operand:DI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 4)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:DI (match_dup 1) (const_int 4)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovsi_rex_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (SImode);
-})
+ /* If .md ever supports :P for Pmode, these can be directly
+ in the pattern above. */
+ operands[5] = gen_rtx_PLUS (Pmode, operands[0], adjust);
+ operands[6] = gen_rtx_PLUS (Pmode, operands[2], adjust);
-(define_expand "strmovhi"
- [(set (match_dup 2)
- (mem:HI (match_operand:SI 1 "register_operand" "")))
- (set (mem:HI (match_operand:SI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 2)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:SI (match_dup 1) (const_int 2)))
- (clobber (reg:CC 17))])]
- ""
-{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strmovhi_rex64 (operands[0], operands[1]));
- DONE;
- }
if (TARGET_SINGLE_STRINGOP || optimize_size)
{
- emit_insn (gen_strmovhi_1 (operands[0], operands[1], operands[0],
- operands[1]));
+ emit_insn (gen_strmov_singleop (operands[0], operands[1],
+ operands[2], operands[3],
+ operands[5], operands[6]));
DONE;
}
- else
- operands[2] = gen_reg_rtx (HImode);
-})
-
-(define_expand "strmovhi_rex64"
- [(set (match_dup 2)
- (mem:HI (match_operand:DI 1 "register_operand" "")))
- (set (mem:HI (match_operand:DI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 2)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:DI (match_dup 1) (const_int 2)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovhi_rex_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (HImode);
-})
-(define_expand "strmovqi"
- [(set (match_dup 2)
- (mem:QI (match_operand:SI 1 "register_operand" "")))
- (set (mem:QI (match_operand:SI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:SI (match_dup 1) (const_int 1)))
- (clobber (reg:CC 17))])]
- ""
-{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strmovqi_rex64 (operands[0], operands[1]));
- DONE;
- }
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovqi_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (QImode);
+ operands[4] = gen_reg_rtx (GET_MODE (operands[1]));
})
-(define_expand "strmovqi_rex64"
- [(set (match_dup 2)
- (mem:QI (match_operand:DI 1 "register_operand" "")))
- (set (mem:QI (match_operand:DI 0 "register_operand" ""))
- (match_dup 2))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 1)))
- (clobber (reg:CC 17))])
- (parallel [(set (match_dup 1) (plus:DI (match_dup 1) (const_int 1)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strmovqi_rex_1 (operands[0], operands[1], operands[0],
- operands[1]));
- DONE;
- }
- else
- operands[2] = gen_reg_rtx (QImode);
-})
+(define_expand "strmov_singleop"
+ [(parallel [(set (match_operand 1 "memory_operand" "")
+ (match_operand 3 "memory_operand" ""))
+ (set (match_operand 0 "register_operand" "")
+ (match_operand 4 "" ""))
+ (set (match_operand 2 "register_operand" "")
+ (match_operand 5 "" ""))
+ (use (reg:SI 19))])]
+ "TARGET_SINGLE_STRINGOP || optimize_size"
+ "")
-(define_insn "strmovdi_rex_1"
+(define_insn "*strmovdi_rex_1"
[(set (mem:DI (match_operand:DI 2 "register_operand" "0"))
(mem:DI (match_operand:DI 3 "register_operand" "1")))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15532,7 +15407,7 @@
(set_attr "mode" "DI")
(set_attr "memory" "both")])
-(define_insn "strmovsi_1"
+(define_insn "*strmovsi_1"
[(set (mem:SI (match_operand:SI 2 "register_operand" "0"))
(mem:SI (match_operand:SI 3 "register_operand" "1")))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15548,7 +15423,7 @@
(set_attr "mode" "SI")
(set_attr "memory" "both")])
-(define_insn "strmovsi_rex_1"
+(define_insn "*strmovsi_rex_1"
[(set (mem:SI (match_operand:DI 2 "register_operand" "0"))
(mem:SI (match_operand:DI 3 "register_operand" "1")))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15564,7 +15439,7 @@
(set_attr "mode" "SI")
(set_attr "memory" "both")])
-(define_insn "strmovhi_1"
+(define_insn "*strmovhi_1"
[(set (mem:HI (match_operand:SI 2 "register_operand" "0"))
(mem:HI (match_operand:SI 3 "register_operand" "1")))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15580,7 +15455,7 @@
(set_attr "memory" "both")
(set_attr "mode" "HI")])
-(define_insn "strmovhi_rex_1"
+(define_insn "*strmovhi_rex_1"
[(set (mem:HI (match_operand:DI 2 "register_operand" "0"))
(mem:HI (match_operand:DI 3 "register_operand" "1")))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15596,7 +15471,7 @@
(set_attr "memory" "both")
(set_attr "mode" "HI")])
-(define_insn "strmovqi_1"
+(define_insn "*strmovqi_1"
[(set (mem:QI (match_operand:SI 2 "register_operand" "0"))
(mem:QI (match_operand:SI 3 "register_operand" "1")))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15612,7 +15487,7 @@
(set_attr "memory" "both")
(set_attr "mode" "QI")])
-(define_insn "strmovqi_rex_1"
+(define_insn "*strmovqi_rex_1"
[(set (mem:QI (match_operand:DI 2 "register_operand" "0"))
(mem:QI (match_operand:DI 3 "register_operand" "1")))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15628,7 +15503,20 @@
(set_attr "memory" "both")
(set_attr "mode" "QI")])
-(define_insn "rep_movdi_rex64"
+(define_expand "rep_mov"
+ [(parallel [(set (match_operand 4 "register_operand" "") (const_int 0))
+ (set (match_operand 0 "register_operand" "")
+ (match_operand 5 "" ""))
+ (set (match_operand 2 "register_operand" "")
+ (match_operand 6 "" ""))
+ (set (match_operand 1 "memory_operand" "")
+ (match_operand 3 "memory_operand" ""))
+ (use (match_dup 4))
+ (use (reg:SI 19))])]
+ ""
+ "")
+
+(define_insn "*rep_movdi_rex64"
[(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (ashift:DI (match_operand:DI 5 "register_operand" "2")
@@ -15648,7 +15536,7 @@
(set_attr "memory" "both")
(set_attr "mode" "DI")])
-(define_insn "rep_movsi"
+(define_insn "*rep_movsi"
[(set (match_operand:SI 2 "register_operand" "=c") (const_int 0))
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (ashift:SI (match_operand:SI 5 "register_operand" "2")
@@ -15668,7 +15556,7 @@
(set_attr "memory" "both")
(set_attr "mode" "SI")])
-(define_insn "rep_movsi_rex64"
+(define_insn "*rep_movsi_rex64"
[(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (ashift:DI (match_operand:DI 5 "register_operand" "2")
@@ -15688,7 +15576,7 @@
(set_attr "memory" "both")
(set_attr "mode" "SI")])
-(define_insn "rep_movqi"
+(define_insn "*rep_movqi"
[(set (match_operand:SI 2 "register_operand" "=c") (const_int 0))
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (match_operand:SI 3 "register_operand" "0")
@@ -15706,7 +15594,7 @@
(set_attr "memory" "both")
(set_attr "mode" "SI")])
-(define_insn "rep_movqi_rex64"
+(define_insn "*rep_movqi_rex64"
[(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_operand:DI 3 "register_operand" "0")
@@ -15751,120 +15639,40 @@
;; Most CPUs don't like single string operations
;; Handle this case here to simplify previous expander.
-(define_expand "strsetdi_rex64"
- [(set (mem:DI (match_operand:DI 0 "register_operand" ""))
- (match_operand:DI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 8)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsetdi_rex_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
-
-(define_expand "strsetsi"
- [(set (mem:SI (match_operand:SI 0 "register_operand" ""))
- (match_operand:SI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 4)))
- (clobber (reg:CC 17))])]
- ""
-{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strsetsi_rex64 (operands[0], operands[1]));
- DONE;
- }
- else if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsetsi_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
-
-(define_expand "strsetsi_rex64"
- [(set (mem:SI (match_operand:DI 0 "register_operand" ""))
- (match_operand:SI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 4)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsetsi_rex_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
-
-(define_expand "strsethi"
- [(set (mem:HI (match_operand:SI 0 "register_operand" ""))
- (match_operand:HI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 2)))
+(define_expand "strset"
+ [(set (match_operand 1 "memory_operand" "")
+ (match_operand 2 "register_operand" ""))
+ (parallel [(set (match_operand 0 "register_operand" "")
+ (match_dup 3))
(clobber (reg:CC 17))])]
""
{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strsethi_rex64 (operands[0], operands[1]));
- DONE;
- }
- else if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsethi_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
+ if (GET_MODE (operands[1]) != GET_MODE (operands[2]))
+ operands[1] = adjust_address_nv (operands[1], GET_MODE (operands[2]), 0);
-(define_expand "strsethi_rex64"
- [(set (mem:HI (match_operand:DI 0 "register_operand" ""))
- (match_operand:HI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 2)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
+ /* If .md ever supports :P for Pmode, this can be directly
+ in the pattern above. */
+ operands[3] = gen_rtx_PLUS (Pmode, operands[0],
+ GEN_INT (GET_MODE_SIZE (GET_MODE
+ (operands[2]))));
if (TARGET_SINGLE_STRINGOP || optimize_size)
{
- emit_insn (gen_strsethi_rex_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
-
-(define_expand "strsetqi"
- [(set (mem:QI (match_operand:SI 0 "register_operand" ""))
- (match_operand:QI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))
- (clobber (reg:CC 17))])]
- ""
-{
- if (TARGET_64BIT)
- {
- emit_insn (gen_strsetqi_rex64 (operands[0], operands[1]));
- DONE;
- }
- else if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsetqi_1 (operands[0], operands[0], operands[1]));
+ emit_insn (gen_strset_singleop (operands[0], operands[1], operands[2],
+ operands[3]));
DONE;
}
})
-(define_expand "strsetqi_rex64"
- [(set (mem:QI (match_operand:DI 0 "register_operand" ""))
- (match_operand:QI 1 "register_operand" ""))
- (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (const_int 1)))
- (clobber (reg:CC 17))])]
- "TARGET_64BIT"
-{
- if (TARGET_SINGLE_STRINGOP || optimize_size)
- {
- emit_insn (gen_strsetqi_rex_1 (operands[0], operands[0], operands[1]));
- DONE;
- }
-})
+(define_expand "strset_singleop"
+ [(parallel [(set (match_operand 1 "memory_operand" "")
+ (match_operand 2 "register_operand" ""))
+ (set (match_operand 0 "register_operand" "")
+ (match_operand 3 "" ""))
+ (use (reg:SI 19))])]
+ "TARGET_SINGLE_STRINGOP || optimize_size"
+ "")
-(define_insn "strsetdi_rex_1"
+(define_insn "*strsetdi_rex_1"
[(set (mem:SI (match_operand:DI 1 "register_operand" "0"))
(match_operand:SI 2 "register_operand" "a"))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15877,7 +15685,7 @@
(set_attr "memory" "store")
(set_attr "mode" "DI")])
-(define_insn "strsetsi_1"
+(define_insn "*strsetsi_1"
[(set (mem:SI (match_operand:SI 1 "register_operand" "0"))
(match_operand:SI 2 "register_operand" "a"))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15890,7 +15698,7 @@
(set_attr "memory" "store")
(set_attr "mode" "SI")])
-(define_insn "strsetsi_rex_1"
+(define_insn "*strsetsi_rex_1"
[(set (mem:SI (match_operand:DI 1 "register_operand" "0"))
(match_operand:SI 2 "register_operand" "a"))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15903,7 +15711,7 @@
(set_attr "memory" "store")
(set_attr "mode" "SI")])
-(define_insn "strsethi_1"
+(define_insn "*strsethi_1"
[(set (mem:HI (match_operand:SI 1 "register_operand" "0"))
(match_operand:HI 2 "register_operand" "a"))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15916,7 +15724,7 @@
(set_attr "memory" "store")
(set_attr "mode" "HI")])
-(define_insn "strsethi_rex_1"
+(define_insn "*strsethi_rex_1"
[(set (mem:HI (match_operand:DI 1 "register_operand" "0"))
(match_operand:HI 2 "register_operand" "a"))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15929,7 +15737,7 @@
(set_attr "memory" "store")
(set_attr "mode" "HI")])
-(define_insn "strsetqi_1"
+(define_insn "*strsetqi_1"
[(set (mem:QI (match_operand:SI 1 "register_operand" "0"))
(match_operand:QI 2 "register_operand" "a"))
(set (match_operand:SI 0 "register_operand" "=D")
@@ -15942,7 +15750,7 @@
(set_attr "memory" "store")
(set_attr "mode" "QI")])
-(define_insn "strsetqi_rex_1"
+(define_insn "*strsetqi_rex_1"
[(set (mem:QI (match_operand:DI 1 "register_operand" "0"))
(match_operand:QI 2 "register_operand" "a"))
(set (match_operand:DI 0 "register_operand" "=D")
@@ -15955,7 +15763,18 @@
(set_attr "memory" "store")
(set_attr "mode" "QI")])
-(define_insn "rep_stosdi_rex64"
+(define_expand "rep_stos"
+ [(parallel [(set (match_operand 1 "register_operand" "") (const_int 0))
+ (set (match_operand 0 "register_operand" "")
+ (match_operand 4 "" ""))
+ (set (match_operand 2 "memory_operand" "") (const_int 0))
+ (use (match_operand 3 "register_operand" ""))
+ (use (match_dup 1))
+ (use (reg:SI 19))])]
+ ""
+ "")
+
+(define_insn "*rep_stosdi_rex64"
[(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (ashift:DI (match_operand:DI 4 "register_operand" "1")
@@ -15973,7 +15792,7 @@
(set_attr "memory" "store")
(set_attr "mode" "DI")])
-(define_insn "rep_stossi"
+(define_insn "*rep_stossi"
[(set (match_operand:SI 1 "register_operand" "=c") (const_int 0))
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (ashift:SI (match_operand:SI 4 "register_operand" "1")
@@ -15991,7 +15810,7 @@
(set_attr "memory" "store")
(set_attr "mode" "SI")])
-(define_insn "rep_stossi_rex64"
+(define_insn "*rep_stossi_rex64"
[(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (ashift:DI (match_operand:DI 4 "register_operand" "1")
@@ -16009,7 +15828,7 @@
(set_attr "memory" "store")
(set_attr "mode" "SI")])
-(define_insn "rep_stosqi"
+(define_insn "*rep_stosqi"
[(set (match_operand:SI 1 "register_operand" "=c") (const_int 0))
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (match_operand:SI 3 "register_operand" "0")
@@ -16026,7 +15845,7 @@
(set_attr "memory" "store")
(set_attr "mode" "QI")])
-(define_insn "rep_stosqi_rex64"
+(define_insn "*rep_stosqi_rex64"
[(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_operand:DI 3 "register_operand" "0")
@@ -16035,7 +15854,7 @@
(const_int 0))
(use (match_operand:QI 2 "register_operand" "a"))
(use (match_dup 4))
- (use (reg:DI 19))]
+ (use (reg:SI 19))]
"TARGET_64BIT"
"{rep\;stosb|rep stosb}"
[(set_attr "type" "str")
@@ -16063,7 +15882,11 @@
addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
addr2 = copy_to_mode_reg (Pmode, XEXP (operands[2], 0));
-
+ if (addr1 != XEXP (operands[1], 0))
+ operands[1] = replace_equiv_address_nv (operands[1], addr1);
+ if (addr2 != XEXP (operands[2], 0))
+ operands[2] = replace_equiv_address_nv (operands[2], addr2);
+
count = operands[3];
countreg = ix86_zero_extend_to_Pmode (count);
@@ -16080,27 +15903,17 @@
emit_move_insn (operands[0], const0_rtx);
DONE;
}
- if (TARGET_64BIT)
- emit_insn (gen_cmpstrqi_nz_rex_1 (addr1, addr2, countreg, align,
- addr1, addr2, countreg));
- else
- emit_insn (gen_cmpstrqi_nz_1 (addr1, addr2, countreg, align,
- addr1, addr2, countreg));
+ emit_insn (gen_cmpstrqi_nz_1 (addr1, addr2, countreg, align,
+ operands[1], operands[2]));
}
else
{
if (TARGET_64BIT)
- {
- emit_insn (gen_cmpdi_1_rex64 (countreg, countreg));
- emit_insn (gen_cmpstrqi_rex_1 (addr1, addr2, countreg, align,
- addr1, addr2, countreg));
- }
+ emit_insn (gen_cmpdi_1_rex64 (countreg, countreg));
else
- {
- emit_insn (gen_cmpsi_1 (countreg, countreg));
- emit_insn (gen_cmpstrqi_1 (addr1, addr2, countreg, align,
- addr1, addr2, countreg));
- }
+ emit_insn (gen_cmpsi_1 (countreg, countreg));
+ emit_insn (gen_cmpstrqi_1 (addr1, addr2, countreg, align,
+ operands[1], operands[2]));
}
outlow = gen_lowpart (QImode, out);
@@ -16131,7 +15944,20 @@
;; memcmp recognizers. The `cmpsb' opcode does nothing if the count is
;; zero. Emit extra code to make sure that a zero-length compare is EQ.
-(define_insn "cmpstrqi_nz_1"
+(define_expand "cmpstrqi_nz_1"
+ [(parallel [(set (reg:CC 17)
+ (compare:CC (match_operand 4 "memory_operand" "")
+ (match_operand 5 "memory_operand" "")))
+ (use (match_operand 2 "register_operand" ""))
+ (use (match_operand:SI 3 "immediate_operand" ""))
+ (use (reg:SI 19))
+ (clobber (match_operand 0 "register_operand" ""))
+ (clobber (match_operand 1 "register_operand" ""))
+ (clobber (match_dup 2))])]
+ ""
+ "")
+
+(define_insn "*cmpstrqi_nz_1"
[(set (reg:CC 17)
(compare:CC (mem:BLK (match_operand:SI 4 "register_operand" "0"))
(mem:BLK (match_operand:SI 5 "register_operand" "1"))))
@@ -16147,7 +15973,7 @@
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
-(define_insn "cmpstrqi_nz_rex_1"
+(define_insn "*cmpstrqi_nz_rex_1"
[(set (reg:CC 17)
(compare:CC (mem:BLK (match_operand:DI 4 "register_operand" "0"))
(mem:BLK (match_operand:DI 5 "register_operand" "1"))))
@@ -16165,7 +15991,23 @@
;; The same, but the count is not known to not be zero.
-(define_insn "cmpstrqi_1"
+(define_expand "cmpstrqi_1"
+ [(parallel [(set (reg:CC 17)
+ (if_then_else:CC (ne (match_operand 2 "register_operand" "")
+ (const_int 0))
+ (compare:CC (match_operand 4 "memory_operand" "")
+ (match_operand 5 "memory_operand" ""))
+ (const_int 0)))
+ (use (match_operand:SI 3 "immediate_operand" ""))
+ (use (reg:CC 17))
+ (use (reg:SI 19))
+ (clobber (match_operand 0 "register_operand" ""))
+ (clobber (match_operand 1 "register_operand" ""))
+ (clobber (match_dup 2))])]
+ ""
+ "")
+
+(define_insn "*cmpstrqi_1"
[(set (reg:CC 17)
(if_then_else:CC (ne (match_operand:SI 6 "register_operand" "2")
(const_int 0))
@@ -16184,7 +16026,7 @@
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
-(define_insn "cmpstrqi_rex_1"
+(define_insn "*cmpstrqi_rex_1"
[(set (reg:CC 17)
(if_then_else:CC (ne (match_operand:DI 6 "register_operand" "2")
(const_int 0))
@@ -16229,7 +16071,15 @@
FAIL;
})
-(define_insn "strlenqi_1"
+(define_expand "strlenqi_1"
+ [(parallel [(set (match_operand 0 "register_operand" "") (match_operand 2 "" ""))
+ (use (reg:SI 19))
+ (clobber (match_operand 1 "register_operand" ""))
+ (clobber (reg:CC 17))])]
+ ""
+ "")
+
+(define_insn "*strlenqi_1"
[(set (match_operand:SI 0 "register_operand" "=&c")
(unspec:SI [(mem:BLK (match_operand:SI 5 "register_operand" "1"))
(match_operand:QI 2 "register_operand" "a")
@@ -16244,7 +16094,7 @@
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
-(define_insn "strlenqi_rex_1"
+(define_insn "*strlenqi_rex_1"
[(set (match_operand:DI 0 "register_operand" "=&c")
(unspec:DI [(mem:BLK (match_operand:DI 5 "register_operand" "1"))
(match_operand:QI 2 "register_operand" "a")
@@ -22993,13 +22843,13 @@
[(set_attr "type" "sse")
(set_attr "memory" "unknown")])
-;; PNI
+;; SSE3
(define_insn "mwait"
[(unspec_volatile [(match_operand:SI 0 "register_operand" "a")
(match_operand:SI 1 "register_operand" "c")]
UNSPECV_MWAIT)]
- "TARGET_PNI"
+ "TARGET_SSE3"
"mwait\t%0, %1"
[(set_attr "length" "3")])
@@ -23008,18 +22858,18 @@
(match_operand:SI 1 "register_operand" "c")
(match_operand:SI 2 "register_operand" "d")]
UNSPECV_MONITOR)]
- "TARGET_PNI"
+ "TARGET_SSE3"
"monitor\t%0, %1, %2"
[(set_attr "length" "3")])
-;; PNI arithmetic
+;; SSE3 arithmetic
(define_insn "addsubv4sf3"
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
(match_operand:V4SF 2 "nonimmediate_operand" "xm")]
UNSPEC_ADDSUB))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"addsubps\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V4SF")])
@@ -23029,7 +22879,7 @@
(unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
(match_operand:V2DF 2 "nonimmediate_operand" "xm")]
UNSPEC_ADDSUB))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"addsubpd\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V2DF")])
@@ -23039,7 +22889,7 @@
(unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
(match_operand:V4SF 2 "nonimmediate_operand" "xm")]
UNSPEC_HADD))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"haddps\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V4SF")])
@@ -23049,7 +22899,7 @@
(unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
(match_operand:V2DF 2 "nonimmediate_operand" "xm")]
UNSPEC_HADD))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"haddpd\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V2DF")])
@@ -23059,7 +22909,7 @@
(unspec:V4SF [(match_operand:V4SF 1 "register_operand" "0")
(match_operand:V4SF 2 "nonimmediate_operand" "xm")]
UNSPEC_HSUB))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"hsubps\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V4SF")])
@@ -23069,7 +22919,7 @@
(unspec:V2DF [(match_operand:V2DF 1 "register_operand" "0")
(match_operand:V2DF 2 "nonimmediate_operand" "xm")]
UNSPEC_HSUB))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"hsubpd\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "V2DF")])
@@ -23078,7 +22928,7 @@
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF
[(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_MOVSHDUP))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"movshdup\t{%1, %0|%0, %1}"
[(set_attr "type" "sse")
(set_attr "mode" "V4SF")])
@@ -23087,7 +22937,7 @@
[(set (match_operand:V4SF 0 "register_operand" "=x")
(unspec:V4SF
[(match_operand:V4SF 1 "nonimmediate_operand" "xm")] UNSPEC_MOVSLDUP))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"movsldup\t{%1, %0|%0, %1}"
[(set_attr "type" "sse")
(set_attr "mode" "V4SF")])
@@ -23096,7 +22946,7 @@
[(set (match_operand:V16QI 0 "register_operand" "=x")
(unspec:V16QI [(match_operand:V16QI 1 "memory_operand" "m")]
UNSPEC_LDQQU))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"lddqu\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt")
(set_attr "mode" "TI")])
@@ -23104,7 +22954,7 @@
(define_insn "loadddup"
[(set (match_operand:V2DF 0 "register_operand" "=x")
(vec_duplicate:V2DF (match_operand:DF 1 "memory_operand" "m")))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"movddup\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt")
(set_attr "mode" "DF")])
@@ -23114,7 +22964,7 @@
(vec_duplicate:V2DF
(vec_select:DF (match_operand:V2DF 1 "register_operand" "x")
(parallel [(const_int 0)]))))]
- "TARGET_PNI"
+ "TARGET_SSE3"
"movddup\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt")
(set_attr "mode" "DF")])
diff --git a/gcc/config/i386/openbsd.h b/gcc/config/i386/openbsd.h
index fdef0a8efe8..14de0188c80 100644
--- a/gcc/config/i386/openbsd.h
+++ b/gcc/config/i386/openbsd.h
@@ -1,5 +1,5 @@
/* Configuration for an OpenBSD i386 target.
- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/pmmintrin.h b/gcc/config/i386/pmmintrin.h
index 5b215e8e53c..3b18e2a11bd 100644
--- a/gcc/config/i386/pmmintrin.h
+++ b/gcc/config/i386/pmmintrin.h
@@ -30,7 +30,7 @@
#ifndef _PMMINTRIN_H_INCLUDED
#define _PMMINTRIN_H_INCLUDED
-#ifdef __PNI__
+#ifdef __SSE3__
#include <xmmintrin.h>
#include <emmintrin.h>
@@ -127,6 +127,6 @@ _mm_mwait (unsigned int __E, unsigned int __H)
#define _mm_mwait(E, H) __builtin_ia32_mwait ((E), (H))
#endif
-#endif /* __PNI__ */
+#endif /* __SSE3__ */
#endif /* _PMMINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/scodbx.h b/gcc/config/i386/scodbx.h
deleted file mode 100644
index 7da93053256..00000000000
--- a/gcc/config/i386/scodbx.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Definitions for Intel 386 running SCO Unix System V,
- using dbx-in-coff encapsulation.
- Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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.
-
-GNU CC 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 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 "i386/svr3dbx.h"
-
-/* Overridden defines for SCO systems from sco.h. */
-
-/* By default, target has a 80387, uses IEEE compatible arithmetic,
- and returns float values in the 387, ie,
- (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387)
-
- SCO's software emulation of a 387 fails to handle the `fucomp'
- opcode. fucomp is only used when generating IEEE compliant code.
- So don't make TARGET_IEEE_FP default for SCO. */
-
-#undef TARGET_SUBTARGET_DEFAULT
-#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
-
-/* Use crt1.o as a startup file and crtn.o as a closing file. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!r:%{!z:svr3.ifile%s}%{z:svr3z.ifile%s}}\
- %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
-
-/* Library spec, including SCO international language support. */
-
-#undef LIB_SPEC
-#define LIB_SPEC \
- "%{p:-L/usr/lib/libp}%{pg:-L/usr/lib/libp} %{scointl:libintl.a%s} -lc"
-
-/* Specify predefined symbols in preprocessor. */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem=svr3"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %{scointl:-DM_INTERNAT}"
-
-/* This spec is used for telling cpp whether char is signed or not. */
-
-#undef SIGNED_CHAR_SPEC
-#if DEFAULT_SIGNED_CHAR
-#define SIGNED_CHAR_SPEC \
- "%{funsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
-#else
-#define SIGNED_CHAR_SPEC \
- "%{!fsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
-#endif
-
-/* caller has to pop the extra argument passed to functions that return
- structures. */
-
-#undef RETURN_POPS_ARGS
-#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
- ((FUNDECL) && TREE_CODE (FUNDECL) == IDENTIFIER_NODE ? 0 \
- : (TARGET_RTD \
- && (TYPE_ARG_TYPES (FUNTYPE) == 0 \
- || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
- == void_type_node))) ? (SIZE) \
- : 0)
-/* On other 386 systems, the last line looks like this:
- : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0) */
-
-/* Handle #pragma pack. */
-#define HANDLE_SYSV_PRAGMA
diff --git a/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin
index 1a1534d4df0..c6e77731b1a 100644
--- a/gcc/config/i386/t-cygwin
+++ b/gcc/config/i386/t-cygwin
@@ -1,5 +1,3 @@
-EXTRA_GCC_OBJS = cygwin1.o
-
# If we are building next to winsup, this will let us find the real
# limits.h when building libgcc2. Otherwise, winsup must be installed
# first.
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 6d29c27e0da..5620158ac32 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for Windows NT.
Contributed by Douglas Rupp (drupp@cs.washington.edu)
- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/xm-dgux.h b/gcc/config/i386/xm-dgux.h
deleted file mode 100644
index 881c5c7be9d..00000000000
--- a/gcc/config/i386/xm-dgux.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Configuration for GCC for Intel i386 running DG/ux */
-
-/* looks just like sysv4 for now */
-#include "xm-svr4.h"
diff --git a/gcc/config/i386/xm-djgpp.h b/gcc/config/i386/xm-djgpp.h
index a7e766f68df..9bb520da8ef 100644
--- a/gcc/config/i386/xm-djgpp.h
+++ b/gcc/config/i386/xm-djgpp.h
@@ -43,9 +43,6 @@ Boston, MA 02111-1307, USA. */
strcat (xref_file, xref_ext); \
} while (0)
-/* Change /dev/env/DJDIR/prefix/dir/ to canonical form so gcc_exec_prefix
- is set properly in 'gcc.c'. It also helps to cut down the number of times
- the value of the DJGPP environment variable 'DJDIR' is evaluated. */
#undef GCC_DRIVER_HOST_INITIALIZATION
#define GCC_DRIVER_HOST_INITIALIZATION \
do { \
@@ -69,9 +66,6 @@ Boston, MA 02111-1307, USA. */
fatal ("environment variable DJGPP points to corrupt file '%s'", \
djgpp); \
} \
- standard_exec_prefix = update_path (standard_exec_prefix, NULL); \
- standard_bindir_prefix = update_path (standard_bindir_prefix, NULL); \
- standard_startfile_prefix = update_path (standard_startfile_prefix, NULL); \
} while (0)
/* Canonicalize paths containing '/dev/env/'; used in prefix.c.
diff --git a/gcc/config/i386/xm-mingw32.h b/gcc/config/i386/xm-mingw32.h
index efd0ef9ecbe..888196697be 100644
--- a/gcc/config/i386/xm-mingw32.h
+++ b/gcc/config/i386/xm-mingw32.h
@@ -1,6 +1,6 @@
/* Configuration for GCC for hosting on Windows32.
using GNU tools and the Windows32 API Library.
- Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003 Free Software
+ Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/i386/xm-sun.h b/gcc/config/i386/xm-sun.h
deleted file mode 100644
index 6c0f0a25630..00000000000
--- a/gcc/config/i386/xm-sun.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Configuration for GNU C-compiler for Intel 80386 running SunOS 4.0.
- Copyright (C) 1988, 1997 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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.
-
-GNU CC 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 GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define USG
diff --git a/gcc/config/i386/xm-sysv3.h b/gcc/config/i386/xm-sysv3.h
deleted file mode 100644
index 9a655443ff5..00000000000
--- a/gcc/config/i386/xm-sysv3.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Configuration for GCC for Intel i386 running System V Release 3. */
-
-#include "xm-svr3.h"
diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h
index dc54251eeab..1bc887830de 100644
--- a/gcc/config/i386/xmmintrin.h
+++ b/gcc/config/i386/xmmintrin.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/ia64/freebsd.h b/gcc/config/ia64/freebsd.h
index d337d57d0d6..c375ae9d540 100644
--- a/gcc/config/ia64/freebsd.h
+++ b/gcc/config/ia64/freebsd.h
@@ -18,9 +18,11 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
#define LINK_SPEC " \
- %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
+ %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
%{Wl,*:%*} \
%{assert*} %{R*} %{rpath*} %{defsym*} \
%{shared:-Bshareable %{h*} %{soname*}} \
@@ -28,7 +30,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
%{static:-Bstatic}}"
diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h
index c6920fabf4d..7825616491e 100644
--- a/gcc/config/ia64/ia64-protos.h
+++ b/gcc/config/ia64/ia64-protos.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler for IA-64.
- Copyright (C) 1999, 2000, 2002, 2003
+ Copyright (C) 1999, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index a0af1b4b505..3895a5789f3 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -1,5 +1,6 @@
/* Definitions of target machine for GNU compiler.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by James E. Wilson <wilson@cygnus.com> and
David Mosberger <davidm@hpl.hp.com>.
@@ -249,7 +250,7 @@ static void ia64_rwreloc_select_rtx_section (enum machine_mode, rtx,
static unsigned int ia64_rwreloc_section_type_flags (tree, const char *, int)
ATTRIBUTE_UNUSED;
-static void ia64_hpux_add_extern_decl (const char *name)
+static void ia64_hpux_add_extern_decl (tree decl)
ATTRIBUTE_UNUSED;
static void ia64_hpux_file_end (void)
ATTRIBUTE_UNUSED;
@@ -260,6 +261,7 @@ static void ia64_vms_init_libfuncs (void)
static tree ia64_handle_model_attribute (tree *, tree, tree, int, bool *);
static void ia64_encode_section_info (tree, rtx, int);
+static rtx ia64_struct_value_rtx (tree, int);
/* Table of valid machine attributes. */
@@ -366,6 +368,9 @@ static const struct attribute_spec ia64_attribute_table[] =
#undef TARGET_ENCODE_SECTION_INFO
#define TARGET_ENCODE_SECTION_INFO ia64_encode_section_info
+#undef TARGET_STRUCT_VALUE_RTX
+#define TARGET_STRUCT_VALUE_RTX ia64_struct_value_rtx
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Return 1 if OP is a valid operand for the MEM of a CALL insn. */
@@ -1362,62 +1367,37 @@ ia64_emit_cond_move (rtx op0, rtx op1, rtx cond)
}
/* Split a post-reload TImode or TFmode reference into two DImode
- components. */
+ components. This is made extra difficult by the fact that we do
+ not get any scratch registers to work with, because reload cannot
+ be prevented from giving us a scratch that overlaps the register
+ pair involved. So instead, when addressing memory, we tweak the
+ pointer register up and back down with POST_INCs. Or up and not
+ back down when we can get away with it.
+
+ REVERSED is true when the loads must be done in reversed order
+ (high word first) for correctness. DEAD is true when the pointer
+ dies with the second insn we generate and therefore the second
+ address must not carry a postmodify.
+
+ May return an insn which is to be emitted after the moves. */
static rtx
-ia64_split_tmode (rtx out[2], rtx in, rtx scratch)
+ia64_split_tmode (rtx out[2], rtx in, bool reversed, bool dead)
{
+ rtx fixup = 0;
+
switch (GET_CODE (in))
{
case REG:
- out[0] = gen_rtx_REG (DImode, REGNO (in));
- out[1] = gen_rtx_REG (DImode, REGNO (in) + 1);
- return NULL_RTX;
-
- case MEM:
- {
- rtx base = XEXP (in, 0);
-
- switch (GET_CODE (base))
- {
- case REG:
- out[0] = adjust_address (in, DImode, 0);
- break;
- case POST_MODIFY:
- base = XEXP (base, 0);
- out[0] = adjust_address (in, DImode, 0);
- break;
-
- /* Since we're changing the mode, we need to change to POST_MODIFY
- as well to preserve the size of the increment. Either that or
- do the update in two steps, but we've already got this scratch
- register handy so let's use it. */
- case POST_INC:
- base = XEXP (base, 0);
- out[0]
- = change_address (in, DImode,
- gen_rtx_POST_MODIFY
- (Pmode, base, plus_constant (base, 16)));
- break;
- case POST_DEC:
- base = XEXP (base, 0);
- out[0]
- = change_address (in, DImode,
- gen_rtx_POST_MODIFY
- (Pmode, base, plus_constant (base, -16)));
- break;
- default:
- abort ();
- }
-
- if (scratch == NULL_RTX)
- abort ();
- out[1] = change_address (in, DImode, scratch);
- return gen_adddi3 (scratch, base, GEN_INT (8));
- }
+ out[reversed] = gen_rtx_REG (DImode, REGNO (in));
+ out[!reversed] = gen_rtx_REG (DImode, REGNO (in) + 1);
+ break;
case CONST_INT:
case CONST_DOUBLE:
+ /* Cannot occur reversed. */
+ if (reversed) abort ();
+
if (GET_MODE (in) != TFmode)
split_double (in, &out[0], &out[1]);
else
@@ -1444,11 +1424,108 @@ ia64_split_tmode (rtx out[2], rtx in, rtx scratch)
out[0] = GEN_INT (p[0]);
out[1] = GEN_INT (p[1]);
}
- return NULL_RTX;
+ break;
+
+ case MEM:
+ {
+ rtx base = XEXP (in, 0);
+ rtx offset;
+
+ switch (GET_CODE (base))
+ {
+ case REG:
+ if (!reversed)
+ {
+ out[0] = adjust_automodify_address
+ (in, DImode, gen_rtx_POST_INC (Pmode, base), 0);
+ out[1] = adjust_automodify_address
+ (in, DImode, dead ? 0 : gen_rtx_POST_DEC (Pmode, base), 8);
+ }
+ else
+ {
+ /* Reversal requires a pre-increment, which can only
+ be done as a separate insn. */
+ emit_insn (gen_adddi3 (base, base, GEN_INT (8)));
+ out[0] = adjust_automodify_address
+ (in, DImode, gen_rtx_POST_DEC (Pmode, base), 8);
+ out[1] = adjust_address (in, DImode, 0);
+ }
+ break;
+
+ case POST_INC:
+ if (reversed || dead) abort ();
+ /* Just do the increment in two steps. */
+ out[0] = adjust_automodify_address (in, DImode, 0, 0);
+ out[1] = adjust_automodify_address (in, DImode, 0, 8);
+ break;
+
+ case POST_DEC:
+ if (reversed || dead) abort ();
+ /* Add 8, subtract 24. */
+ base = XEXP (base, 0);
+ out[0] = adjust_automodify_address
+ (in, DImode, gen_rtx_POST_INC (Pmode, base), 0);
+ out[1] = adjust_automodify_address
+ (in, DImode,
+ gen_rtx_POST_MODIFY (Pmode, base, plus_constant (base, -24)),
+ 8);
+ break;
+
+ case POST_MODIFY:
+ if (reversed || dead) abort ();
+ /* Extract and adjust the modification. This case is
+ trickier than the others, because we might have an
+ index register, or we might have a combined offset that
+ doesn't fit a signed 9-bit displacement field. We can
+ assume the incoming expression is already legitimate. */
+ offset = XEXP (base, 1);
+ base = XEXP (base, 0);
+
+ out[0] = adjust_automodify_address
+ (in, DImode, gen_rtx_POST_INC (Pmode, base), 0);
+
+ if (GET_CODE (XEXP (offset, 1)) == REG)
+ {
+ /* Can't adjust the postmodify to match. Emit the
+ original, then a separate addition insn. */
+ out[1] = adjust_automodify_address (in, DImode, 0, 8);
+ fixup = gen_adddi3 (base, base, GEN_INT (-8));
+ }
+ else if (GET_CODE (XEXP (offset, 1)) != CONST_INT)
+ abort ();
+ else if (INTVAL (XEXP (offset, 1)) < -256 + 8)
+ {
+ /* Again the postmodify cannot be made to match, but
+ in this case it's more efficient to get rid of the
+ postmodify entirely and fix up with an add insn. */
+ out[1] = adjust_automodify_address (in, DImode, base, 8);
+ fixup = gen_adddi3 (base, base,
+ GEN_INT (INTVAL (XEXP (offset, 1)) - 8));
+ }
+ else
+ {
+ /* Combined offset still fits in the displacement field.
+ (We cannot overflow it at the high end.) */
+ out[1] = adjust_automodify_address
+ (in, DImode,
+ gen_rtx_POST_MODIFY (Pmode, base,
+ gen_rtx_PLUS (Pmode, base,
+ GEN_INT (INTVAL (XEXP (offset, 1)) - 8))),
+ 8);
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ break;
+ }
default:
abort ();
}
+
+ return fixup;
}
/* Split a TImode or TFmode move instruction after reload.
@@ -1456,39 +1533,60 @@ ia64_split_tmode (rtx out[2], rtx in, rtx scratch)
void
ia64_split_tmode_move (rtx operands[])
{
- rtx adj1, adj2, in[2], out[2], insn;
- int first;
-
- adj1 = ia64_split_tmode (in, operands[1], operands[2]);
- adj2 = ia64_split_tmode (out, operands[0], operands[2]);
-
- first = 0;
- if (reg_overlap_mentioned_p (out[0], in[1]))
- {
- if (reg_overlap_mentioned_p (out[1], in[0]))
- abort ();
- first = 1;
- }
-
- if (adj1 && adj2)
- abort ();
- if (adj1)
- emit_insn (adj1);
- if (adj2)
- emit_insn (adj2);
- insn = emit_insn (gen_rtx_SET (VOIDmode, out[first], in[first]));
- if (GET_CODE (out[first]) == MEM
- && GET_CODE (XEXP (out[first], 0)) == POST_MODIFY)
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC,
- XEXP (XEXP (out[first], 0), 0),
- REG_NOTES (insn));
- insn = emit_insn (gen_rtx_SET (VOIDmode, out[!first], in[!first]));
- if (GET_CODE (out[!first]) == MEM
- && GET_CODE (XEXP (out[!first], 0)) == POST_MODIFY)
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC,
- XEXP (XEXP (out[!first], 0), 0),
- REG_NOTES (insn));
-
+ rtx in[2], out[2], insn;
+ rtx fixup[2];
+ bool dead = false;
+ bool reversed = false;
+
+ /* It is possible for reload to decide to overwrite a pointer with
+ the value it points to. In that case we have to do the loads in
+ the appropriate order so that the pointer is not destroyed too
+ early. Also we must not generate a postmodify for that second
+ load, or rws_access_regno will abort. */
+ if (GET_CODE (operands[1]) == MEM
+ && reg_overlap_mentioned_p (operands[0], operands[1]))
+ {
+ rtx base = XEXP (operands[1], 0);
+ while (GET_CODE (base) != REG)
+ base = XEXP (base, 0);
+
+ if (REGNO (base) == REGNO (operands[0]))
+ reversed = true;
+ dead = true;
+ }
+ /* Another reason to do the moves in reversed order is if the first
+ element of the target register pair is also the second element of
+ the source register pair. */
+ if (GET_CODE (operands[0]) == REG && GET_CODE (operands[1]) == REG
+ && REGNO (operands[0]) == REGNO (operands[1]) + 1)
+ reversed = true;
+
+ fixup[0] = ia64_split_tmode (in, operands[1], reversed, dead);
+ fixup[1] = ia64_split_tmode (out, operands[0], reversed, dead);
+
+#define MAYBE_ADD_REG_INC_NOTE(INSN, EXP) \
+ if (GET_CODE (EXP) == MEM \
+ && (GET_CODE (XEXP (EXP, 0)) == POST_MODIFY \
+ || GET_CODE (XEXP (EXP, 0)) == POST_INC \
+ || GET_CODE (XEXP (EXP, 0)) == POST_DEC)) \
+ REG_NOTES (INSN) = gen_rtx_EXPR_LIST (REG_INC, \
+ XEXP (XEXP (EXP, 0), 0), \
+ REG_NOTES (INSN))
+
+ insn = emit_insn (gen_rtx_SET (VOIDmode, out[0], in[0]));
+ MAYBE_ADD_REG_INC_NOTE (insn, in[0]);
+ MAYBE_ADD_REG_INC_NOTE (insn, out[0]);
+
+ insn = emit_insn (gen_rtx_SET (VOIDmode, out[1], in[1]));
+ MAYBE_ADD_REG_INC_NOTE (insn, in[1]);
+ MAYBE_ADD_REG_INC_NOTE (insn, out[1]);
+
+ if (fixup[0])
+ emit_insn (fixup[0]);
+ if (fixup[1])
+ emit_insn (fixup[1]);
+
+#undef MAYBE_ADD_REG_INC_NOTE
}
/* ??? Fixing GR->FR XFmode moves during reload is hard. You need to go
@@ -3588,6 +3686,7 @@ ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
for (; offset < byte_size && int_regs < MAX_ARGUMENT_SLOTS; i++)
{
enum machine_mode gr_mode = DImode;
+ unsigned int gr_size;
/* If we have an odd 4 byte hunk because we ran out of FR regs,
then this goes in a GR reg left adjusted/little endian, right
@@ -3601,17 +3700,19 @@ ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
adjusted/little endian. */
else if (byte_size - offset == 4)
gr_mode = SImode;
- /* Complex floats need to have float mode. */
- if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
- gr_mode = hfa_mode;
loc[i] = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (gr_mode, (basereg
+ int_regs)),
GEN_INT (offset));
- offset += GET_MODE_SIZE (gr_mode);
- int_regs += GET_MODE_SIZE (gr_mode) <= UNITS_PER_WORD
- ? 1 : GET_MODE_SIZE (gr_mode) / UNITS_PER_WORD;
+
+ gr_size = GET_MODE_SIZE (gr_mode);
+ offset += gr_size;
+ if (gr_size == UNITS_PER_WORD
+ || (gr_size < UNITS_PER_WORD && offset % UNITS_PER_WORD == 0))
+ int_regs++;
+ else if (gr_size > UNITS_PER_WORD)
+ int_regs += gr_size / UNITS_PER_WORD;
}
/* If we ended up using just one location, just return that one loc, but
@@ -3651,21 +3752,34 @@ ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
named, and in a GR register when unnamed. */
else if (cum->prototype)
{
- if (! named)
- return gen_rtx_REG (mode, basereg + cum->words + offset);
- else
+ if (named)
return gen_rtx_REG (mode, FR_ARG_FIRST + cum->fp_regs);
+ /* In big-endian mode, an anonymous SFmode value must be represented
+ as (parallel:SF [(expr_list (reg:DI n) (const_int 0))]) to force
+ the value into the high half of the general register. */
+ else if (BYTES_BIG_ENDIAN && mode == SFmode)
+ return gen_rtx_PARALLEL (mode,
+ gen_rtvec (1,
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (DImode, basereg + cum->words + offset),
+ const0_rtx)));
+ else
+ return gen_rtx_REG (mode, basereg + cum->words + offset);
}
/* If there is no prototype, then FP values go in both FR and GR
registers. */
else
{
+ /* See comment above. */
+ enum machine_mode inner_mode =
+ (BYTES_BIG_ENDIAN && mode == SFmode) ? DImode : mode;
+
rtx fp_reg = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (mode, (FR_ARG_FIRST
+ cum->fp_regs)),
const0_rtx);
rtx gr_reg = gen_rtx_EXPR_LIST (VOIDmode,
- gen_rtx_REG (mode,
+ gen_rtx_REG (inner_mode,
(basereg + cum->words
+ offset)),
const0_rtx);
@@ -4454,13 +4568,6 @@ ia64_secondary_reload_class (enum reg_class class,
return GR_REGS;
break;
- case GR_REGS:
- /* Since we have no offsettable memory addresses, we need a temporary
- to hold the address of the second word. */
- if (mode == TImode || mode == TFmode)
- return GR_REGS;
- break;
-
default:
break;
}
@@ -4499,7 +4606,7 @@ ia64_asm_output_external (FILE *file, tree decl, const char *name)
return;
if (TARGET_HPUX_LD)
- ia64_hpux_add_extern_decl (name);
+ ia64_hpux_add_extern_decl (decl);
else
{
/* assemble_name will set TREE_SYMBOL_REFERENCED, so we must save and
@@ -8514,20 +8621,20 @@ ia64_hpux_function_arg_padding (enum machine_mode mode, tree type)
We output the name if and only if TREE_SYMBOL_REFERENCED is set in
order to avoid putting out names that are never really used. */
-struct extern_func_list
+struct extern_func_list GTY(())
{
- struct extern_func_list *next; /* next external */
- char *name; /* name of the external */
-} *extern_func_head = 0;
+ struct extern_func_list *next;
+ tree decl;
+};
+
+static GTY(()) struct extern_func_list *extern_func_head;
static void
-ia64_hpux_add_extern_decl (const char *name)
+ia64_hpux_add_extern_decl (tree decl)
{
- struct extern_func_list *p;
+ struct extern_func_list *p = ggc_alloc (sizeof (struct extern_func_list));
- p = (struct extern_func_list *) xmalloc (sizeof (struct extern_func_list));
- p->name = xmalloc (strlen (name) + 1);
- strcpy(p->name, name);
+ p->decl = decl;
p->next = extern_func_head;
extern_func_head = p;
}
@@ -8537,29 +8644,29 @@ ia64_hpux_add_extern_decl (const char *name)
static void
ia64_hpux_file_end (void)
{
- while (extern_func_head)
+ struct extern_func_list *p;
+
+ for (p = extern_func_head; p; p = p->next)
{
- const char *real_name;
- tree decl;
+ tree decl = p->decl;
+ tree id = DECL_NAME (decl);
- real_name = (* targetm.strip_name_encoding) (extern_func_head->name);
- decl = maybe_get_identifier (real_name);
+ if (!id)
+ abort ();
- if (!decl
- || (! TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (decl)))
+ if (!TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (id))
{
- if (decl)
- TREE_ASM_WRITTEN (decl) = 1;
- (*targetm.asm_out.globalize_label) (asm_out_file,
- extern_func_head->name);
+ const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
+
+ TREE_ASM_WRITTEN (decl) = 1;
+ (*targetm.asm_out.globalize_label) (asm_out_file, name);
fputs (TYPE_ASM_OP, asm_out_file);
- assemble_name (asm_out_file, extern_func_head->name);
- putc (',', asm_out_file);
- fprintf (asm_out_file, TYPE_OPERAND_FMT, "function");
- putc ('\n', asm_out_file);
+ assemble_name (asm_out_file, name);
+ fprintf (asm_out_file, "," TYPE_OPERAND_FMT "\n", "function");
}
- extern_func_head = extern_func_head->next;
}
+
+ extern_func_head = 0;
}
/* Rename all the TFmode libfuncs using the HPUX conventions. */
@@ -8663,6 +8770,27 @@ ia64_rwreloc_section_type_flags (tree decl, const char *name, int reloc)
return default_section_type_flags_1 (decl, name, reloc, true);
}
+/* Returns true if FNTYPE (a FUNCTION_TYPE or a METHOD_TYPE) returns a
+ structure type and that the address of that type should be passed
+ in out0, rather than in r8. */
+
+static bool
+ia64_struct_retval_addr_is_first_parm_p (tree fntype)
+{
+ tree ret_type = TREE_TYPE (fntype);
+
+ /* The Itanium C++ ABI requires that out0, rather than r8, be used
+ as the structure return address parameter, if the return value
+ type has a non-trivial copy constructor or destructor. It is not
+ clear if this same convention should be used for other
+ programming languages. Until G++ 3.4, we incorrectly used r8 for
+ these return values. */
+ return (abi_version_at_least (2)
+ && ret_type
+ && TYPE_MODE (ret_type) == BLKmode
+ && TREE_ADDRESSABLE (ret_type)
+ && strcmp (lang_hooks.name, "GNU C++") == 0);
+}
/* Output the assembler code for a thunk function. THUNK_DECL is the
declaration for the thunk function itself, FUNCTION is the decl for
@@ -8676,6 +8804,8 @@ ia64_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
tree function)
{
rtx this, insn, funexp;
+ unsigned int this_parmno;
+ unsigned int this_regno;
reload_completed = 1;
epilogue_completed = 1;
@@ -8689,16 +8819,23 @@ ia64_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
current_frame_info.n_input_regs = 1;
current_frame_info.need_regstk = (TARGET_REG_NAMES != 0);
- if (!TARGET_REG_NAMES)
- reg_names[IN_REG (0)] = ia64_reg_numbers[0];
-
/* Mark the end of the (empty) prologue. */
emit_note (NOTE_INSN_PROLOGUE_END);
- this = gen_rtx_REG (Pmode, IN_REG (0));
+ /* Figure out whether "this" will be the first parameter (the
+ typical case) or the second parameter (as happens when the
+ virtual function returns certain class objects). */
+ this_parmno
+ = (ia64_struct_retval_addr_is_first_parm_p (TREE_TYPE (thunk))
+ ? 1 : 0);
+ this_regno = IN_REG (this_parmno);
+ if (!TARGET_REG_NAMES)
+ reg_names[this_regno] = ia64_reg_numbers[this_parmno];
+
+ this = gen_rtx_REG (Pmode, this_regno);
if (TARGET_ILP32)
{
- rtx tmp = gen_rtx_REG (ptr_mode, IN_REG (0));
+ rtx tmp = gen_rtx_REG (ptr_mode, this_regno);
REG_POINTER (tmp) = 1;
if (delta && CONST_OK_FOR_I (delta))
{
@@ -8803,4 +8940,15 @@ ia64_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
no_new_pseudos = 0;
}
+/* Worker function for TARGET_STRUCT_VALUE_RTX. */
+
+static rtx
+ia64_struct_value_rtx (tree fntype,
+ int incoming ATTRIBUTE_UNUSED)
+{
+ if (fntype && ia64_struct_retval_addr_is_first_parm_p (fntype))
+ return NULL_RTX;
+ return gen_rtx_REG (Pmode, GR_REG (8));
+}
+
#include "gt-ia64.h"
diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h
index 84e864908c1..c768ebb2042 100644
--- a/gcc/config/ia64/ia64.h
+++ b/gcc/config/ia64/ia64.h
@@ -1445,11 +1445,6 @@ do { \
#define DEFAULT_PCC_STRUCT_RETURN 0
-/* If the structure value address is passed in a register, then
- `STRUCT_VALUE_REGNUM' should be the number of that register. */
-
-#define STRUCT_VALUE_REGNUM GR_REG (8)
-
/* Caller-Saves Register Allocation */
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index 169569ac980..ed0fdeb30ca 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -1,5 +1,6 @@
;; IA-64 Machine description template
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+;; Free Software Foundation, Inc.
;; Contributed by James E. Wilson <wilson@cygnus.com> and
;; David Mosberger <davidm@hpl.hp.com>.
@@ -584,11 +585,12 @@
[(set_attr "itanium_class" "ialu")])
;; With no offsettable memory references, we've got to have a scratch
-;; around to play with the second word.
+;; around to play with the second word. However, in order to avoid a
+;; reload nightmare we lie, claim we don't need one, and fix it up
+;; in ia64_split_tmode_move.
(define_expand "movti"
- [(parallel [(set (match_operand:TI 0 "general_operand" "")
- (match_operand:TI 1 "general_operand" ""))
- (clobber (match_scratch:DI 2 ""))])]
+ [(set (match_operand:TI 0 "general_operand" "")
+ (match_operand:TI 1 "general_operand" ""))]
""
{
rtx op1 = ia64_expand_move (operands[0], operands[1]);
@@ -599,8 +601,7 @@
(define_insn_and_split "*movti_internal"
[(set (match_operand:TI 0 "nonimmediate_operand" "=r,r,m")
- (match_operand:TI 1 "general_operand" "ri,m,r"))
- (clobber (match_scratch:DI 2 "=X,&r,&r"))]
+ (match_operand:TI 1 "general_operand" "ri,m,r"))]
"ia64_move_ok (operands[0], operands[1])"
"#"
"reload_completed"
@@ -612,20 +613,6 @@
[(set_attr "itanium_class" "unknown")
(set_attr "predicable" "no")])
-(define_expand "reload_inti"
- [(parallel [(set (match_operand:TI 0 "register_operand" "=r")
- (match_operand:TI 1 "memory_operand" "m"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
- ""
- "")
-
-(define_expand "reload_outti"
- [(parallel [(set (match_operand:TI 0 "memory_operand" "=m")
- (match_operand:TI 1 "register_operand" "r"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
- ""
- "")
-
;; Floating Point Moves
;;
;; Note - Patterns for SF mode moves are compulsory, but
@@ -764,13 +751,10 @@
[(set_attr "itanium_class" "fmisc,fld,stf")])
;; Better code generation via insns that deal with TFmode register pairs
-;; directly.
-;; With no offsettable memory references, we've got to have a scratch
-;; around to play with the second word.
+;; directly. Same concerns apply as for TImode.
(define_expand "movtf"
- [(parallel [(set (match_operand:TF 0 "general_operand" "")
- (match_operand:TF 1 "general_operand" ""))
- (clobber (match_scratch:DI 2 ""))])]
+ [(set (match_operand:TF 0 "general_operand" "")
+ (match_operand:TF 1 "general_operand" ""))]
""
{
rtx op1 = ia64_expand_move (operands[0], operands[1]);
@@ -781,8 +765,7 @@
(define_insn_and_split "*movtf_internal"
[(set (match_operand:TF 0 "nonimmediate_operand" "=r,r,m")
- (match_operand:TF 1 "general_operand" "ri,m,r"))
- (clobber (match_scratch:DI 2 "=X,&r,&r"))]
+ (match_operand:TF 1 "general_operand" "ri,m,r"))]
"ia64_move_ok (operands[0], operands[1])"
"#"
"reload_completed"
@@ -794,19 +777,6 @@
[(set_attr "itanium_class" "unknown")
(set_attr "predicable" "no")])
-(define_expand "reload_intf"
- [(parallel [(set (match_operand:TF 0 "register_operand" "=r")
- (match_operand:TF 1 "memory_operand" "m"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
- ""
- "")
-
-(define_expand "reload_outtf"
- [(parallel [(set (match_operand:TF 0 "memory_operand" "=m")
- (match_operand:TF 1 "register_operand" "r"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
- ""
- "")
;; ::::::::::::::::::::
;; ::
@@ -5803,8 +5773,8 @@
(define_insn "fetchadd_acq_si"
[(set (match_operand:SI 0 "gr_register_operand" "=r")
- (match_dup 1))
- (set (match_operand:SI 1 "not_postinc_memory_operand" "+S")
+ (match_operand:SI 1 "not_postinc_memory_operand" "+S"))
+ (set (match_dup 1)
(unspec:SI [(match_dup 1)
(match_operand:SI 2 "fetchadd_operand" "n")]
UNSPEC_FETCHADD_ACQ))]
@@ -5814,8 +5784,8 @@
(define_insn "fetchadd_acq_di"
[(set (match_operand:DI 0 "gr_register_operand" "=r")
- (match_dup 1))
- (set (match_operand:DI 1 "not_postinc_memory_operand" "+S")
+ (match_operand:DI 1 "not_postinc_memory_operand" "+S"))
+ (set (match_dup 1)
(unspec:DI [(match_dup 1)
(match_operand:DI 2 "fetchadd_operand" "n")]
UNSPEC_FETCHADD_ACQ))]
@@ -5825,8 +5795,8 @@
(define_insn "cmpxchg_acq_si"
[(set (match_operand:SI 0 "gr_register_operand" "=r")
- (match_dup 1))
- (set (match_operand:SI 1 "not_postinc_memory_operand" "+S")
+ (match_operand:SI 1 "not_postinc_memory_operand" "+S"))
+ (set (match_dup 1)
(unspec:SI [(match_dup 1)
(match_operand:SI 2 "gr_register_operand" "r")
(match_operand:DI 3 "ar_ccv_reg_operand" "")]
@@ -5837,8 +5807,8 @@
(define_insn "cmpxchg_acq_di"
[(set (match_operand:DI 0 "gr_register_operand" "=r")
- (match_dup 1))
- (set (match_operand:DI 1 "not_postinc_memory_operand" "+S")
+ (match_operand:DI 1 "not_postinc_memory_operand" "+S"))
+ (set (match_dup 1)
(unspec:DI [(match_dup 1)
(match_operand:DI 2 "gr_register_operand" "r")
(match_operand:DI 3 "ar_ccv_reg_operand" "")]
diff --git a/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h
index fc7df808188..5c73b0c25ef 100644
--- a/gcc/config/ia64/linux.h
+++ b/gcc/config/ia64/linux.h
@@ -58,6 +58,11 @@ do { \
/* Do code reading to identify a signal frame, and set the frame
state data appropriately. See unwind-dw2.c for the structs. */
+/* This works only for glibc-2.3 and later, because sigcontext is different
+ in glibc-2.2.4. */
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)
+
#ifdef IN_LIBGCC2
#include <signal.h>
#include <sys/ucontext.h>
@@ -207,3 +212,4 @@ do { \
}
#endif /* IN_LIBGCC2 */
+#endif /* glibc-2.3 or better */
diff --git a/gcc/config/ip2k/ip2k.c b/gcc/config/ip2k/ip2k.c
index 6f32c43d07c..4122f0e1eeb 100644
--- a/gcc/config/ip2k/ip2k.c
+++ b/gcc/config/ip2k/ip2k.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on Ubicom IP2022
Communications Controller.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Red Hat, Inc and Ubicom, Inc.
This file is part of GCC.
diff --git a/gcc/config/iq2000/iq2000-protos.h b/gcc/config/iq2000/iq2000-protos.h
index 989bb657ccb..be1ded827da 100644
--- a/gcc/config/iq2000/iq2000-protos.h
+++ b/gcc/config/iq2000/iq2000-protos.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler for iq2000.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c
index 5015b86db24..e9820ada808 100644
--- a/gcc/config/iq2000/iq2000.c
+++ b/gcc/config/iq2000/iq2000.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on Vitesse IQ2000 processors
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/iq2000/iq2000.md b/gcc/config/iq2000/iq2000.md
index de84e66276a..e5a04b27e62 100644
--- a/gcc/config/iq2000/iq2000.md
+++ b/gcc/config/iq2000/iq2000.md
@@ -1,5 +1,5 @@
;; iq2000.md Machine Description for Vitesse IQ2000 processors
-;; Copyright (C) 2003 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2004 Free Software Foundation, Inc.
;; This file is part of GCC.
diff --git a/gcc/config/m32r/m32r-protos.h b/gcc/config/m32r/m32r-protos.h
index 01bbd6d5835..d2fbd51215d 100644
--- a/gcc/config/m32r/m32r-protos.h
+++ b/gcc/config/m32r/m32r-protos.h
@@ -1,5 +1,5 @@
/* Prototypes for m32r.c functions used in the md file & elsewhere.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c
index ce9abebc2c8..a1d63fbdbf1 100644
--- a/gcc/config/m32r/m32r.c
+++ b/gcc/config/m32r/m32r.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on the Renesas M32R cpu.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/m32r/m32r.h b/gcc/config/m32r/m32r.h
index ae29628e9ac..2b25a7c3bbe 100644
--- a/gcc/config/m32r/m32r.h
+++ b/gcc/config/m32r/m32r.h
@@ -184,6 +184,8 @@
{ "relax", RELAX_SPEC }, \
SUBTARGET_EXTRA_SPECS
+#define CPP_SPEC "%(cpp_cpu)"
+
#undef CC1_SPEC
#define CC1_SPEC "%{G*} %(cc1_cpu)"
@@ -241,7 +243,7 @@ extern int target_flags;
/* Support extended instruction set of m32r2. */
#define TARGET_M32R2_MASK (1 << 6)
-#define TARGET_M32R2 (target_flags & TARGET_M32RX_MASK)
+#define TARGET_M32R2 (target_flags & TARGET_M32R2_MASK)
#undef TARGET_M32R
#define TARGET_M32R (! TARGET_M32RX && ! TARGET_M32R2)
@@ -498,15 +500,6 @@ extern enum m32r_sdata m32r_sdata;
(MODE) = SImode; \
}
-/* Define this macro if the promotion described by `PROMOTE_MODE'
- should also be done for outgoing function arguments. */
-/*#define PROMOTE_FUNCTION_ARGS*/
-
-/* Likewise, if the function return value is promoted.
- If defined, FUNCTION_VALUE must perform the same promotions done by
- PROMOTE_MODE. */
-/*#define PROMOTE_FUNCTION_RETURN*/
-
/* Allocation boundary (in *bits*) for storing arguments in argument list. */
#define PARM_BOUNDARY 32
@@ -1039,7 +1032,7 @@ extern enum reg_class m32r_regno_reg_class[FIRST_PSEUDO_REGISTER];
SIZE is the number of bytes of arguments passed on the stack. */
#define RETURN_POPS_ARGS(DECL, FUNTYPE, SIZE) 0
-/* Nonzero if we do not know how to pass TYPE solely in registers. */
+/* Nonzero if we do not know how to pass TYPE solely in registers. */
#define MUST_PASS_IN_STACK(MODE, TYPE) \
((TYPE) != 0 \
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
@@ -1780,7 +1773,7 @@ extern char m32r_punct_chars[256];
/* Define as C expression which evaluates to nonzero if the tablejump
instruction expects the table to contain offsets from the address of the
table.
- Do not define this if the table should contain absolute addresses. */
+ Do not define this if the table should contain absolute addresses. */
/* It's not clear what PIC will look like or whether we want to use -fpic
for the embedded form currently being talked about. For now require -fpic
to get pc relative switch tables. */
diff --git a/gcc/config/m32r/m32r.md b/gcc/config/m32r/m32r.md
index ad1217e8981..b00390830a8 100644
--- a/gcc/config/m32r/m32r.md
+++ b/gcc/config/m32r/m32r.md
@@ -1,5 +1,6 @@
;; Machine description of the Renesas M32R cpu for GNU C compiler
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2003, 2004
+;; Free Software Foundation, Inc.
;; This file is part of GCC.
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c
index 9a8651dd440..0d008fbfc41 100644
--- a/gcc/config/m68hc11/m68hc11.c
+++ b/gcc/config/m68hc11/m68hc11.c
@@ -1,5 +1,6 @@
/* Subroutines for code generation on Motorola 68HC11 and 68HC12.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Stephane Carrez (stcarrez@nerim.fr)
This file is part of GCC.
@@ -137,6 +138,16 @@ unsigned char m68hc11_reg_valid_for_index[FIRST_PSEUDO_REGISTER];
This is 1 for 68HC11 and 0 for 68HC12. */
int m68hc11_sp_correction;
+#define ADDR_STRICT 0x01 /* Accept only registers in class A_REGS */
+#define ADDR_INCDEC 0x02 /* Post/Pre inc/dec */
+#define ADDR_INDEXED 0x04 /* D-reg index */
+#define ADDR_OFFSET 0x08
+#define ADDR_INDIRECT 0x10 /* Accept (mem (mem ...)) for [n,X] */
+#define ADDR_CONST 0x20 /* Accept const and symbol_ref */
+
+int m68hc11_addr_mode;
+int m68hc11_mov_addr_mode;
+
/* Comparison operands saved by the "tstxx" and "cmpxx" expand patterns. */
rtx m68hc11_compare_op0;
rtx m68hc11_compare_op1;
@@ -291,6 +302,8 @@ m68hc11_override_options (void)
m68hc11_reg_valid_for_base[HARD_Z_REGNUM] = 1;
m68hc11_sp_correction = 1;
m68hc11_tmp_regs_class = D_REGS;
+ m68hc11_addr_mode = ADDR_OFFSET;
+ m68hc11_mov_addr_mode = 0;
if (m68hc11_soft_reg_count == 0 && !TARGET_M6812)
m68hc11_soft_reg_count = "4";
}
@@ -310,6 +323,10 @@ m68hc11_override_options (void)
m68hc11_reg_valid_for_index[HARD_D_REGNUM] = 1;
m68hc11_sp_correction = 0;
m68hc11_tmp_regs_class = TMP_REGS;
+ m68hc11_addr_mode = ADDR_INDIRECT | ADDR_OFFSET | ADDR_CONST
+ | (TARGET_AUTO_INC_DEC ? ADDR_INCDEC : 0);
+ m68hc11_mov_addr_mode = ADDR_OFFSET | ADDR_CONST
+ | (TARGET_AUTO_INC_DEC ? ADDR_INCDEC : 0);
target_flags &= ~MASK_M6811;
target_flags |= MASK_NO_DIRECT_MODE;
if (m68hc11_soft_reg_count == 0)
@@ -544,18 +561,25 @@ preferred_reload_class (rtx operand, enum reg_class class)
For 68hc11: n,r with n in [0..255] and r in A_REGS class
For 68hc12: n,r no constraint on the constant, r in A_REGS class. */
static int
-register_indirect_p (rtx operand, enum machine_mode mode, int strict)
+register_indirect_p (rtx operand, enum machine_mode mode, int addr_mode)
{
rtx base, offset;
switch (GET_CODE (operand))
{
+ case MEM:
+ if ((addr_mode & ADDR_INDIRECT) && GET_MODE_SIZE (mode) <= 2)
+ return register_indirect_p (XEXP (operand, 0), mode,
+ addr_mode & (ADDR_STRICT | ADDR_OFFSET));
+ return 0;
+
case POST_INC:
case PRE_INC:
case POST_DEC:
case PRE_DEC:
- if (TARGET_M6812 && TARGET_AUTO_INC_DEC)
- return register_indirect_p (XEXP (operand, 0), mode, strict);
+ if (addr_mode & ADDR_INCDEC)
+ return register_indirect_p (XEXP (operand, 0), mode,
+ addr_mode & ADDR_STRICT);
return 0;
case PLUS:
@@ -567,36 +591,57 @@ register_indirect_p (rtx operand, enum machine_mode mode, int strict)
if (GET_CODE (offset) == MEM)
return 0;
+ /* Indexed addressing mode with 2 registers. */
+ if (GET_CODE (base) == REG && GET_CODE (offset) == REG)
+ {
+ if (!(addr_mode & ADDR_INDEXED))
+ return 0;
+
+ addr_mode &= ADDR_STRICT;
+ if (REGNO_OK_FOR_BASE_P2 (REGNO (base), addr_mode)
+ && REGNO_OK_FOR_INDEX_P2 (REGNO (offset), addr_mode))
+ return 1;
+
+ if (REGNO_OK_FOR_BASE_P2 (REGNO (offset), addr_mode)
+ && REGNO_OK_FOR_INDEX_P2 (REGNO (base), addr_mode))
+ return 1;
+
+ return 0;
+ }
+
+ if (!(addr_mode & ADDR_OFFSET))
+ return 0;
+
if (GET_CODE (base) == REG)
{
- if (!VALID_CONSTANT_OFFSET_P (offset, mode))
+ if (!VALID_CONSTANT_OFFSET_P (offset, mode))
return 0;
- if (strict == 0)
+ if (!(addr_mode & ADDR_STRICT))
return 1;
- return REGNO_OK_FOR_BASE_P2 (REGNO (base), strict);
+ return REGNO_OK_FOR_BASE_P2 (REGNO (base), 1);
}
+
if (GET_CODE (offset) == REG)
{
if (!VALID_CONSTANT_OFFSET_P (base, mode))
return 0;
- if (strict == 0)
+ if (!(addr_mode & ADDR_STRICT))
return 1;
- return REGNO_OK_FOR_BASE_P2 (REGNO (offset), strict);
+ return REGNO_OK_FOR_BASE_P2 (REGNO (offset), 1);
}
return 0;
case REG:
- return REGNO_OK_FOR_BASE_P2 (REGNO (operand), strict);
+ return REGNO_OK_FOR_BASE_P2 (REGNO (operand), addr_mode & ADDR_STRICT);
case CONST_INT:
- if (TARGET_M6811)
- return 0;
-
- return VALID_CONSTANT_OFFSET_P (operand, mode);
+ if (addr_mode & ADDR_CONST)
+ return VALID_CONSTANT_OFFSET_P (operand, mode);
+ return 0;
default:
return 0;
@@ -609,6 +654,7 @@ int
m68hc11_small_indexed_indirect_p (rtx operand, enum machine_mode mode)
{
rtx base, offset;
+ int addr_mode;
if (GET_CODE (operand) == REG && reload_in_progress
&& REGNO (operand) >= FIRST_PSEUDO_REGISTER
@@ -628,7 +674,8 @@ m68hc11_small_indexed_indirect_p (rtx operand, enum machine_mode mode)
if (PUSH_POP_ADDRESS_P (operand))
return 1;
- if (!register_indirect_p (operand, mode, reload_completed))
+ addr_mode = m68hc11_mov_addr_mode | (reload_completed ? ADDR_STRICT : 0);
+ if (!register_indirect_p (operand, mode, addr_mode))
return 0;
if (TARGET_M6812 && GET_CODE (operand) == PLUS
@@ -669,18 +716,29 @@ m68hc11_small_indexed_indirect_p (rtx operand, enum machine_mode mode)
int
m68hc11_register_indirect_p (rtx operand, enum machine_mode mode)
{
+ int addr_mode;
+
+ if (GET_CODE (operand) == REG && reload_in_progress
+ && REGNO (operand) >= FIRST_PSEUDO_REGISTER
+ && reg_equiv_memory_loc[REGNO (operand)])
+ {
+ operand = reg_equiv_memory_loc[REGNO (operand)];
+ operand = eliminate_regs (operand, 0, NULL_RTX);
+ }
if (GET_CODE (operand) != MEM)
return 0;
operand = XEXP (operand, 0);
- return register_indirect_p (operand, mode,
- (reload_completed | reload_in_progress));
+ addr_mode = m68hc11_addr_mode | (reload_completed ? ADDR_STRICT : 0);
+ return register_indirect_p (operand, mode, addr_mode);
}
static int
go_if_legitimate_address_internal (rtx operand, enum machine_mode mode,
int strict)
{
+ int addr_mode;
+
if (CONSTANT_ADDRESS_P (operand) && TARGET_M6812)
{
/* Reject the global variables if they are too wide. This forces
@@ -690,7 +748,8 @@ go_if_legitimate_address_internal (rtx operand, enum machine_mode mode,
return 1;
}
- if (register_indirect_p (operand, mode, strict))
+ addr_mode = m68hc11_addr_mode | (strict ? ADDR_STRICT : 0);
+ if (register_indirect_p (operand, mode, addr_mode))
{
return 1;
}
@@ -977,18 +1036,20 @@ m68hc11_symbolic_p (rtx operand, enum machine_mode mode)
int
m68hc11_indirect_p (rtx operand, enum machine_mode mode)
{
- if (GET_CODE (operand) == MEM)
+ if (GET_CODE (operand) == MEM && GET_MODE (operand) == mode)
{
rtx op = XEXP (operand, 0);
+ int addr_mode;
if (symbolic_memory_operand (op, mode))
- return 0;
+ return TARGET_M6812;
if (reload_in_progress)
return 1;
operand = XEXP (operand, 0);
- return register_indirect_p (operand, mode, reload_completed);
+ addr_mode = m68hc11_addr_mode | (reload_completed ? ADDR_STRICT : 0);
+ return register_indirect_p (operand, mode, addr_mode);
}
return 0;
}
@@ -2240,7 +2301,21 @@ print_operand (FILE *file, rtx op, int letter)
abort ();
break;
+ case MEM:
+ if (TARGET_M6812)
+ {
+ fprintf (file, "[");
+ print_operand_address (file, XEXP (base, 0));
+ fprintf (file, "]");
+ }
+ else
+ abort ();
+ break;
+
default:
+ if (m68hc11_page0_symbol_p (base))
+ fprintf (file, "*");
+
output_address (base);
break;
}
@@ -4161,8 +4236,10 @@ m68hc11_check_z_replacement (rtx insn, struct replace_info *info)
{
if ((GET_CODE (src) == REG && REGNO (src) == HARD_Z_REGNUM)
|| (GET_CODE (src) == COMPARE &&
- (rtx_equal_p (XEXP (src, 0), z_reg)
- || rtx_equal_p (XEXP (src, 1), z_reg))))
+ ((rtx_equal_p (XEXP (src, 0), z_reg)
+ && H_REG_P (XEXP (src, 1)))
+ || (rtx_equal_p (XEXP (src, 1), z_reg)
+ && H_REG_P (XEXP (src, 0))))))
{
if (insn == info->first)
{
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index 2796a96371c..d0a5552f96c 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -1,5 +1,6 @@
;;- Machine description file for Motorola 68HC11 and 68HC12.
-;;- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;;- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+;;- Free Software Foundation, Inc.
;;- Contributed by Stephane Carrez (stcarrez@nerim.fr)
;; This file is part of GCC.
@@ -143,7 +144,9 @@
(A_REGNUM 5) ; A (high part of D)
(B_REGNUM 6) ; B (low part of D)
(CC_REGNUM 7) ; Condition code register
- (SOFT_Z_REGNUM 11) ; Z soft register
+ (SOFT_TMP_REGNUM 10) ; TMP soft register
+ (SOFT_Z_REGNUM 11) ; Z soft register
+ (SOFT_XY_REGNUM 12) ; XY soft register
])
;;--------------------------------------------------------------------
@@ -247,19 +250,13 @@
;; avoid problems with the flow+cse register pass which are made
;; after Z register replacement.
;;
-(define_insn "tstqi_z_used"
+(define_insn_and_split "tstqi_z_used"
[(set (cc0)
(match_operand:QI 0 "tst_operand" "m"))
(use (match_operand:HI 1 "hard_reg_operand" "dxy"))
- (use (reg:HI 11))]
- ""
- "#")
-
-(define_split /* "tstqi_z_used" */
- [(set (cc0)
- (match_operand:QI 0 "tst_operand" ""))
- (use (match_operand:HI 1 "hard_reg_operand" ""))
(use (reg:HI SOFT_Z_REGNUM))]
+ ""
+ "#"
"z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 1))
(set (match_dup 1) (match_dup 2))
@@ -300,12 +297,24 @@
[(set (cc0)
(compare (match_operand:HI 0 "hard_reg_operand" "")
(match_operand:HI 1 "hard_reg_operand" "")))]
- "reload_completed"
+ "TARGET_M6811
+ && reload_completed && !(Z_REG_P (operands[0]) || Z_REG_P (operands[1]))"
[(set (match_dup 2) (match_dup 1))
(set (cc0)
(compare (match_dup 0) (match_dup 2)))]
"operands[2] = gen_rtx (REG, HImode, SOFT_TMP_REGNUM);")
+(define_split
+ [(set (cc0)
+ (compare (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "hard_reg_operand" "")))]
+ "TARGET_M6812
+ && reload_completed && !(Z_REG_P (operands[0]) || Z_REG_P (operands[1]))"
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 1))
+ (set (cc0)
+ (compare (match_dup 0) (mem:HI (post_inc:HI (reg:HI SP_REGNUM)))))]
+ "")
+
(define_expand "cmphi"
[(set (cc0)
(compare (match_operand:HI 0 "tst_operand" "")
@@ -325,7 +334,7 @@
[(set (cc0)
(compare (match_operand:HI 0 "tst_operand"
"d,?xy,xyd,?xy,d,m,!u,dxy,dxy")
- (match_operand:HI 1 "cmp_operand"
+ (match_operand:HI 1 "general_operand"
"i,i,!u,m,m,dxy,dxy,?*d*A,!*w")))]
"TARGET_M6812"
"*
@@ -344,9 +353,9 @@
(define_insn "cmphi_1_hc11"
[(set (cc0)
(compare (match_operand:HI 0 "tst_operand"
- "dx,y,xyd,?xy,d,m,!u,dxy,dxy")
+ "dx,y,xyd,?xy,d,m,m,dxy,dxy,?u*z,dxy,*z")
(match_operand:HI 1 "cmp_operand"
- "i,i,!u,m,m,dxy,dxy,?*d*A,!*w")))]
+ "i,i,!u,m,m,?xy,d,?*d*A,?u,dxy,!*w,i")))]
"TARGET_M6811"
"*
{
@@ -361,21 +370,14 @@
return \"cp%0\\t%1\";
}")
-(define_insn "cmphi_z_used"
+(define_insn_and_split "cmphi_z_used"
[(set (cc0)
(compare (match_operand:HI 0 "tst_operand" "dxy,m")
- (match_operand:HI 1 "cmp_operand" "m,dxy")))
+ (match_operand:HI 1 "cmp_operand" "mi,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI SOFT_Z_REGNUM))]
""
- "#")
-
-(define_split /* "cmphi_z_used" */
- [(set (cc0)
- (compare (match_operand:HI 0 "tst_operand" "")
- (match_operand:HI 1 "cmp_operand" "")))
- (use (match_operand:HI 2 "hard_reg_operand" ""))
- (use (reg:HI SOFT_Z_REGNUM))]
+ "#"
"z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
(set (match_dup 2) (match_dup 3))
@@ -452,21 +454,14 @@
operands[3] = gen_rtx (REG, HImode, SOFT_TMP_REGNUM);
operands[4] = gen_rtx (REG, QImode, SOFT_TMP_REGNUM);")
-(define_insn "bitcmpqi_z_used"
+(define_insn_and_split "bitcmpqi_z_used"
[(set (cc0)
(and:QI (match_operand:QI 0 "tst_operand" "d,m")
(match_operand:QI 1 "cmp_operand" "m,d")))
(use (match_operand:HI 2 "hard_reg_operand" "xy,xy"))
(use (reg:HI SOFT_Z_REGNUM))]
""
- "#")
-
-(define_split /* "bitcmpqi_z_used" */
- [(set (cc0)
- (and:QI (match_operand:QI 0 "tst_operand" "")
- (match_operand:QI 1 "cmp_operand" "")))
- (use (match_operand:HI 2 "hard_reg_operand" ""))
- (use (reg:HI SOFT_Z_REGNUM))]
+ "#"
"z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
(set (match_dup 2) (match_dup 3))
@@ -542,21 +537,14 @@
return \"cmpb\\t%b0\";
}")
-(define_insn "cmpqi_z_used"
+(define_insn_and_split "cmpqi_z_used"
[(set (cc0)
(compare (match_operand:QI 0 "tst_operand" "dxy,m")
(match_operand:QI 1 "cmp_operand" "m,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI SOFT_Z_REGNUM))]
""
- "#")
-
-(define_split /* cmpqi_z_used */
- [(set (cc0)
- (compare (match_operand:QI 0 "tst_operand" "")
- (match_operand:QI 1 "cmp_operand" "")))
- (use (match_operand:HI 2 "hard_reg_operand" ""))
- (use (reg:HI SOFT_Z_REGNUM))]
+ "#"
"z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
(set (match_dup 2) (match_dup 3))
@@ -573,41 +561,29 @@
;; (strict_low_part ...) information. This is correct for our machine
;; description but not for GCC optimization passes.
;;
-(define_insn "movstrictsi"
+(define_insn_and_split "movstrictsi"
[(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,D,D"))
(match_operand:SI 1 "general_operand" "D,Dim,uD"))]
""
- "#")
-
-(define_split
- [(set (strict_low_part (match_operand:SI 0 "non_push_operand" ""))
- (match_operand:SI 1 "general_operand" ""))]
+ "#"
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
-(define_insn "movstricthi"
+(define_insn_and_split "movstricthi"
[(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,dA,dA"))
(match_operand:HI 1 "general_operand" "dA,dAim,u"))]
""
- "#")
-
-(define_split
- [(set (strict_low_part (match_operand:HI 0 "non_push_operand" ""))
- (match_operand:HI 1 "general_operand" ""))]
+ "#"
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
-(define_insn "movstrictqi"
+(define_insn_and_split "movstrictqi"
[(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,!dA"))
(match_operand:QI 1 "general_operand" "d,imudA"))]
""
- "#")
-
-(define_split
- [(set (strict_low_part (match_operand:QI 0 "non_push_operand" ""))
- (match_operand:QI 1 "general_operand" ""))]
+ "#"
"z_replacement_completed == 2"
[(set (match_dup 0) (match_dup 1))]
"")
@@ -651,17 +627,26 @@
}
")
-(define_insn "movdi_internal"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u")
+;; Separate push from normal moves to avoid reloading problems
+;; The 'clr' is not able to push on 68HC11 so we really need a scratch.
+;; We can also accept more scratch registers.
+(define_insn_and_split "*pushdi_internal"
+ [(set (match_operand:DI 0 "push_operand" "=<,<,<,<")
+ (match_operand:DI 1 "general_operand" "i,U,m,!u"))
+ (clobber (match_scratch:HI 2 "=&dA,&d,&d,&dA"))]
+ ""
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_move (operands[0], operands[1], operands[2]);
+ DONE;")
+
+(define_insn_and_split "movdi_internal"
+ [(set (match_operand:DI 0 "non_push_operand" "=m!u,U,!u,U,m,m,!u")
(match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "")
- (match_operand:DI 1 "general_operand" ""))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -687,17 +672,24 @@
}
")
-(define_insn "movdf_internal"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u")
+;; See pushdi_internal
+(define_insn_and_split "*pushdf_internal"
+ [(set (match_operand:DF 0 "push_operand" "=<,<,<,<")
+ (match_operand:DF 1 "general_operand" "i,U,m,!u"))
+ (clobber (match_scratch:HI 2 "=&dA,&d,&d,&dA"))]
+ ""
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_move (operands[0], operands[1], operands[2]);
+ DONE;")
+
+(define_insn_and_split "movdf_internal"
+ [(set (match_operand:DF 0 "non_push_operand" "=mu,U,!u,U,m,m,!u")
(match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DF 0 "nonimmediate_operand" "")
- (match_operand:DF 1 "general_operand" ""))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -732,17 +724,23 @@
}
")
-(define_insn "movsi_internal"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=ou,mu,?D,m,?D,?u,?u,!u,D")
- (match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D"))
- (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
+(define_insn_and_split "*pushsi_internal"
+ [(set (match_operand:SI 0 "push_operand" "=<,<,<,<,<")
+ (match_operand:SI 1 "general_operand" "!D,i,U,m,!u"))
+ (clobber (match_scratch:HI 2 "=X,&dA,&d,&d,&dA"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_move (operands[0], operands[1], operands[2]);
+ DONE;")
-(define_split
- [(set (match_operand:SI 0 "nonimmediate_operand" "")
- (match_operand:SI 1 "general_operand" ""))
- (clobber (match_scratch:HI 2 ""))]
+(define_insn_and_split "movsi_internal"
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=mu,mu,?D,m,?D,?u,?u,!u,D")
+ (match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D"))
+ (clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
+ ""
+ "#"
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -768,17 +766,23 @@
}
")
-(define_insn "movsf_internal"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=o!u,m,D,m,D,!u,!u,!u,D")
+(define_insn_and_split "*pushsf_internal"
+ [(set (match_operand:SF 0 "push_operand" "=<,<,<,<,<")
+ (match_operand:SF 1 "general_operand" "!D,i,U,m,!u"))
+ (clobber (match_scratch:HI 2 "=X,&dA,&d,&d,&dA"))]
+ ""
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_move (operands[0], operands[1], operands[2]);
+ DONE;")
+
+(define_insn_and_split "movsf_internal"
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=m!u,m,D,m,D,!u,!u,!u,D")
(match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D"))
(clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
- "#")
-
-(define_split
- [(set (match_operand:SF 0 "nonimmediate_operand" "")
- (match_operand:SF 1 "general_operand" ""))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (operands[0], operands[1], operands[2]);
@@ -888,8 +892,8 @@
clr\\t%b0\\n\\tclr\\t%h0")
(define_insn "*movhi_68hc12"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=U,dAw,U,U,m,!u")
- (match_operand:HI 1 "general_operand" "U,rim,dAwi,!u,dAw,riU"))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=U,dAw,dAw,U,U,m,!u")
+ (match_operand:HI 1 "general_operand" "U,dAwim,!u,dAwi,!u,dAw,riU"))]
"TARGET_M6812"
"*
{
@@ -936,9 +940,9 @@
(define_split
[(set (match_operand:QI 0 "hard_addr_reg_operand" "")
(match_operand:QI 1 "general_operand" ""))]
- "z_replacement_completed == 2 && GET_MODE (operands[0]) == QImode
+ "z_replacement_completed == 2
&& !reg_mentioned_p (operands[0], operands[1])
- && !D_REG_P (operands[1])"
+ && !(D_REG_P (operands[1]) || Q_REG_P (operands[1]))"
[(parallel [(set (reg:HI D_REGNUM) (match_dup 2))
(set (match_dup 2) (reg:HI D_REGNUM))])
(set (reg:QI D_REGNUM) (match_dup 1))
@@ -952,9 +956,9 @@
(define_split
[(set (match_operand:QI 0 "nonimmediate_operand" "")
(match_operand:QI 1 "hard_addr_reg_operand" ""))]
- "z_replacement_completed == 2 && GET_MODE (operands[1]) == QImode
+ "z_replacement_completed == 2
&& !reg_mentioned_p (operands[1], operands[0])
- && !D_REG_P (operands[0])"
+ && !(D_REG_P (operands[0]) || Q_REG_P (operands[0]))"
[(parallel [(set (reg:HI D_REGNUM) (match_dup 2))
(set (match_dup 2) (reg:HI D_REGNUM))])
(set (match_dup 0) (reg:QI D_REGNUM))
@@ -1229,7 +1233,7 @@
[(set (match_operand:DI 0 "nonimmediate_operand" "=m,m,!u,!u")
(zero_extend:DI
(match_operand:SI 1 "nonimmediate_operand" "m,Du,m,Du")))
- (clobber (match_scratch:HI 2 "=d,d,d,d"))]
+ (clobber (match_scratch:HI 2 "=d,d,&d,d"))]
""
"#")
@@ -2090,8 +2094,8 @@
}")
(define_insn "*addhi3_68hc12"
- [(set (match_operand:HI 0 "register_operand" "=xyd,d,xy*z*w,xy*z*w,xy*z")
- (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,xy*zw,0")
+ [(set (match_operand:HI 0 "register_operand" "=d*A,d,xy*A*w,xy*A*w,xy*A")
+ (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0,xy*Aw,0")
(match_operand:HI 2 "general_operand" "i,m*A*wu,id,id,!mu*A")))]
"TARGET_M6812"
"*
@@ -2279,9 +2283,9 @@
}")
(define_insn "*addhi3"
- [(set (match_operand:HI 0 "hard_reg_operand" "=A,dA,d,!A,d*A,!d*A")
- (plus:HI (match_operand:HI 1 "general_operand" "%0,0,0,0,0,0")
- (match_operand:HI 2 "general_operand" "N,I,i,I,mi*A*d,!u*d*w")))]
+ [(set (match_operand:HI 0 "hard_reg_operand" "=A,dA,d,!A,d*A,d,!d*A")
+ (plus:HI (match_operand:HI 1 "general_operand" "%0,0,0,0,0,0,0")
+ (match_operand:HI 2 "general_operand" "N,I,i,I,mi*A*d,*u,!u*d*w")))]
"TARGET_M6811"
"*
{
@@ -2707,9 +2711,9 @@
(define_insn "*subhi3"
- [(set (match_operand:HI 0 "register_operand" "=d,*A,d*A")
- (minus:HI (match_operand:HI 1 "register_operand" "0,0,0")
- (match_operand:HI 2 "general_operand" "im*A*d,im*d*A,!u")))]
+ [(set (match_operand:HI 0 "register_operand" "=d,*A,d,*A")
+ (minus:HI (match_operand:HI 1 "register_operand" "0,0,0,0")
+ (match_operand:HI 2 "general_operand" "im*A*d,im*d*A,u,!u")))]
""
"*
{
@@ -3054,21 +3058,29 @@
;;- and instructions.
;;--------------------------------------------------------------------
-(define_insn "anddi3"
+(define_insn_and_split "anddi3"
[(set (match_operand:DI 0 "reg_or_some_mem_operand" "=m,u")
(and:DI (match_operand:DI 1 "reg_or_some_mem_operand" "%imu,imu")
(match_operand:DI 2 "general_operand" "imu,imu")))
(clobber (match_scratch:HI 3 "=d,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (SImode, AND, operands);
+ DONE;")
-(define_insn "andsi3"
+(define_insn_and_split "andsi3"
[(set (match_operand:SI 0 "register_operand" "=D,!u")
(and:SI (match_operand:SI 1 "register_operand" "%0,0")
(match_operand:SI 2 "general_operand" "Dimu,imu")))
(clobber (match_scratch:HI 3 "=X,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (HImode, AND, operands);
+ DONE;")
(define_expand "andhi3"
[(set (match_operand:HI 0 "register_operand" "")
@@ -3078,10 +3090,10 @@
"")
(define_insn "*andhi3_mem"
- [(set (match_operand:HI 0 "memory_operand" "=Q,R")
+ [(set (match_operand:HI 0 "memory_operand" "=R,Q")
(and:HI (match_dup 0)
(match_operand:HI 1 "immediate_operand" "i,i")))
- (clobber (match_scratch:HI 2 "=xy,X"))]
+ (clobber (match_scratch:HI 2 "=X,xy"))]
"TARGET_RELAX && !TARGET_M6812"
"*
{
@@ -3101,7 +3113,7 @@
/* When destination is a global variable, generate a .relax instruction
and load the address in the clobber register. That load can be
eliminated by the linker if the address is in page0. */
- if (which_alternative == 0)
+ if (which_alternative == 1)
{
rtx ops[3];
@@ -3236,10 +3248,10 @@
"")
(define_insn "*andqi3_mem"
- [(set (match_operand:QI 0 "memory_operand" "=Q,R")
+ [(set (match_operand:QI 0 "memory_operand" "=R,Q")
(and:QI (match_dup 0)
(match_operand:QI 1 "const_int_operand" "i,i")))
- (clobber (match_scratch:HI 2 "=xy,X"))]
+ (clobber (match_scratch:HI 2 "=X,xy"))]
"TARGET_RELAX && !TARGET_M6812"
"*
{
@@ -3257,7 +3269,7 @@
/* When destination is a global variable, generate a .relax instruction
and load the address in the clobber register. That load can be
eliminated by the linker if the address is in page0. */
- if (which_alternative == 0)
+ if (which_alternative == 1)
{
rtx ops[3];
@@ -3330,21 +3342,29 @@
;;- Bit set or instructions.
;;--------------------------------------------------------------------
-(define_insn "iordi3"
+(define_insn_and_split "iordi3"
[(set (match_operand:DI 0 "reg_or_some_mem_operand" "=m,u")
(ior:DI (match_operand:DI 1 "reg_or_some_mem_operand" "%imu,imu")
(match_operand:DI 2 "general_operand" "imu,imu")))
(clobber (match_scratch:HI 3 "=d,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (SImode, IOR, operands);
+ DONE;")
-(define_insn "iorsi3"
+(define_insn_and_split "iorsi3"
[(set (match_operand:SI 0 "register_operand" "=D,!u")
(ior:SI (match_operand:SI 1 "register_operand" "%0,0")
(match_operand:SI 2 "general_operand" "Dimu,imu")))
(clobber (match_scratch:HI 3 "=X,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (HImode, IOR, operands);
+ DONE;")
(define_expand "iorhi3"
[(set (match_operand:HI 0 "register_operand" "")
@@ -3354,10 +3374,10 @@
"")
(define_insn "*iorhi3_mem"
- [(set (match_operand:HI 0 "memory_operand" "=Q,R")
+ [(set (match_operand:HI 0 "memory_operand" "=R,Q")
(ior:HI (match_dup 0)
(match_operand:HI 1 "const_int_operand" "")))
- (clobber (match_scratch:HI 2 "=xy,X"))]
+ (clobber (match_scratch:HI 2 "=X,xy"))]
"TARGET_RELAX && !TARGET_M6812"
"*
{
@@ -3369,7 +3389,7 @@
return \"\";
}
CC_STATUS_INIT;
- if (which_alternative == 0)
+ if (which_alternative == 1)
{
rtx ops[3];
@@ -3457,10 +3477,10 @@
"")
(define_insn "*iorqi3_mem"
- [(set (match_operand:QI 0 "memory_operand" "=Q,R")
+ [(set (match_operand:QI 0 "memory_operand" "=R,Q")
(ior:QI (match_dup 0)
(match_operand:QI 1 "const_int_operand" "")))
- (clobber (match_scratch:HI 2 "=xy,X"))]
+ (clobber (match_scratch:HI 2 "=X,xy"))]
"TARGET_RELAX && !TARGET_M6812"
"*
{
@@ -3471,7 +3491,7 @@
cc_status = cc_prev_status;
return \"\";
}
- if (which_alternative == 0)
+ if (which_alternative == 1)
{
rtx ops[3];
@@ -3541,21 +3561,29 @@
;;- xor instructions.
;;--------------------------------------------------------------------
-(define_insn "xordi3"
+(define_insn_and_split "xordi3"
[(set (match_operand:DI 0 "reg_or_some_mem_operand" "=m,u")
(xor:DI (match_operand:DI 1 "reg_or_some_mem_operand" "%imu,imu")
(match_operand:DI 2 "general_operand" "imu,imu")))
(clobber (match_scratch:HI 3 "=d,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (SImode, XOR, operands);
+ DONE;")
-(define_insn "xorsi3"
+(define_insn_and_split "xorsi3"
[(set (match_operand:SI 0 "register_operand" "=D,!u")
(xor:SI (match_operand:SI 1 "register_operand" "%0,0")
(match_operand:SI 2 "general_operand" "Dimu,imu")))
(clobber (match_scratch:HI 3 "=X,d"))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(const_int 0)]
+ "m68hc11_split_logical (HImode, XOR, operands);
+ DONE;")
(define_insn "xorhi3"
[(set (match_operand:HI 0 "register_operand" "=d,d,!*A")
@@ -3641,30 +3669,47 @@
;;- Bit set or instructions.
;;--------------------------------------------------------------------
-(define_insn "*logicalsi3_zexthi"
+(define_insn_and_split "*logicalsi3_zexthi"
[(set (match_operand:SI 0 "register_operand" "=D")
(match_operator:SI 3 "m68hc11_logical_operator"
[(zero_extend:SI
(match_operand:HI 1 "general_operand" "imudA"))
(match_operand:SI 2 "general_operand" "Dimu")]))]
""
- "#")
+ "#"
+ "reload_completed"
+ [(set (reg:HI D_REGNUM) (match_dup 4))
+ (set (reg:HI D_REGNUM) (match_op_dup 3 [(reg:HI D_REGNUM) (match_dup 5)]))
+ (set (reg:HI X_REGNUM) (match_dup 6))]
+ "PUT_MODE (operands[3], HImode);
+ if (X_REG_P (operands[2]))
+ {
+ operands[5] = operands[1];
+ /* Make all the (set (REG:x) (REG:y)) a nop set. */
+ operands[4] = gen_rtx (REG, HImode, HARD_D_REGNUM);
+ operands[6] = gen_rtx (REG, HImode, HARD_X_REGNUM);
+ }
+ else
+ {
+ operands[4] = operands[1];
+ operands[5] = m68hc11_gen_lowpart (HImode, operands[2]);
+ operands[6] = m68hc11_gen_highpart (HImode, operands[2]);
+ }
+ /* For an AND, make sure the high 16-bit part is cleared. */
+ if (GET_CODE (operands[3]) == AND)
+ {
+ operands[6] = const0_rtx;
+ }
+ ")
-(define_insn "*logicalsi3_zextqi"
+(define_insn_and_split "*logicalsi3_zextqi"
[(set (match_operand:SI 0 "register_operand" "=D,D,D")
(match_operator:SI 3 "m68hc11_logical_operator"
[(zero_extend:SI
(match_operand:QI 1 "general_operand" "d,*A,imu"))
(match_operand:SI 2 "general_operand" "imu,imu,0")]))]
""
- "#")
-
-(define_split /* logicalsi3_zextqi */
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operator:SI 3 "m68hc11_logical_operator"
- [(zero_extend:SI
- (match_operand:QI 1 "general_operand" ""))
- (match_operand:SI 2 "general_operand" "")]))]
+ "#"
"z_replacement_completed == 2"
[(set (reg:QI A_REGNUM) (match_dup 4))
(set (reg:QI D_REGNUM) (match_dup 7))
@@ -3695,63 +3740,47 @@
}
")
-(define_split /* logicalsi3_zexthi */
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operator:SI 3 "m68hc11_logical_operator"
- [(zero_extend:SI
- (match_operand:HI 1 "general_operand" ""))
- (match_operand:SI 2 "general_operand" "")]))]
- "reload_completed"
- [(set (reg:HI D_REGNUM) (match_dup 4))
- (set (reg:HI D_REGNUM) (match_op_dup 3 [(reg:HI D_REGNUM) (match_dup 5)]))
- (set (reg:HI X_REGNUM) (match_dup 6))]
- "PUT_MODE (operands[3], HImode);
- if (X_REG_P (operands[2]))
- {
- operands[5] = operands[1];
- /* Make all the (set (REG:x) (REG:y)) a nop set. */
- operands[4] = gen_rtx (REG, HImode, HARD_D_REGNUM);
- operands[6] = gen_rtx (REG, HImode, HARD_X_REGNUM);
- }
- else
- {
- operands[4] = operands[1];
- operands[5] = m68hc11_gen_lowpart (HImode, operands[2]);
- operands[6] = m68hc11_gen_highpart (HImode, operands[2]);
- }
- /* For an AND, make sure the high 16-bit part is cleared. */
- if (GET_CODE (operands[3]) == AND)
- {
- operands[6] = const0_rtx;
- }
- ")
-
-(define_insn "*logicalhi3_zexthi_ashift8"
+(define_insn_and_split "*logicalhi3_zexthi_ashift8"
[(set (match_operand:HI 0 "register_operand" "=d")
(match_operator:HI 3 "m68hc11_logical_operator"
[(zero_extend:HI
- (match_operand:QI 1 "general_operand" "imud"))
+ (match_operand:QI 1 "general_operand" "imud*A"))
(ashift:HI
- (match_operand:HI 2 "general_operand" "dimu")
+ (match_operand:HI 2 "general_operand" "imud*A")
(const_int 8))]))]
""
- "#")
+ "#"
+ "z_replacement_completed == 2"
+ [(set (reg:QI A_REGNUM) (match_dup 4))
+ (set (reg:QI B_REGNUM) (match_dup 5))]
+ "
+ if (GET_CODE (operands[3]) == AND)
+ {
+ emit_insn (gen_movhi (operands[0], const0_rtx));
+ DONE;
+ }
+ else
+ {
+ operands[5] = operands[1];
+ if (D_REG_P (operands[2]))
+ {
+ operands[4] = gen_rtx (REG, QImode, HARD_B_REGNUM);
+ }
+ else
+ {
+ operands[4] = m68hc11_gen_lowpart (QImode, operands[2]);
+ }
+ }
+ ")
-(define_insn "*logicalhi3_zexthi"
+(define_insn_and_split "*logicalhi3_zexthi"
[(set (match_operand:HI 0 "register_operand" "=d,d")
(match_operator:HI 3 "m68hc11_logical_operator"
[(zero_extend:HI
(match_operand:QI 1 "general_operand" "imd*A,?u"))
(match_operand:HI 2 "general_operand" "dim,?dimu")]))]
""
- "#")
-
-(define_split /* logicalhi3_zexthi */
- [(set (match_operand:HI 0 "register_operand" "")
- (match_operator:HI 3 "m68hc11_logical_operator"
- [(zero_extend:HI
- (match_operand:QI 1 "general_operand" ""))
- (match_operand:HI 2 "general_operand" "")]))]
+ "#"
"z_replacement_completed == 2"
[(set (reg:QI B_REGNUM) (match_dup 6))
(set (reg:QI A_REGNUM) (match_dup 4))
@@ -3780,54 +3809,16 @@
}
")
-(define_split /* logicalhi3_zexthi_ashift8 */
- [(set (match_operand:HI 0 "register_operand" "")
- (match_operator:HI 3 "m68hc11_logical_operator"
- [(zero_extend:HI
- (match_operand:QI 1 "general_operand" ""))
- (ashift:HI
- (match_operand:HI 2 "general_operand" "")
- (const_int 8))]))]
- "z_replacement_completed == 2"
- [(set (reg:QI A_REGNUM) (match_dup 4))
- (set (reg:QI B_REGNUM) (match_dup 5))]
- "
- if (GET_CODE (operands[3]) == AND)
- {
- emit_insn (gen_movhi (operands[0], const0_rtx));
- DONE;
- }
- else
- {
- operands[5] = operands[1];
- if (D_REG_P (operands[2]))
- {
- operands[4] = gen_rtx (REG, QImode, HARD_B_REGNUM);
- }
- else
- {
- operands[4] = m68hc11_gen_lowpart (QImode, operands[2]);
- }
- }
- ")
-(define_insn "*logicalsi3_silshr16"
- [(set (match_operand:SI 0 "register_operand" "=D,D,D")
+(define_insn_and_split "*logicalsi3_silshr16"
+ [(set (match_operand:SI 0 "register_operand" "=D,D,D,?D")
(match_operator:SI 3 "m68hc11_logical_operator"
[(lshiftrt:SI
- (match_operand:SI 1 "general_operand" "uim,uim,?D")
+ (match_operand:SI 1 "general_operand" "uim,uim,0,0")
(const_int 16))
- (match_operand:SI 2 "general_operand" "uim,0,0")]))]
+ (match_operand:SI 2 "general_operand" "uim,0,uim,0")]))]
""
- "#")
-
-(define_split /* logicalsi3_silshr16 */
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operator:SI 3 "m68hc11_logical_operator"
- [(lshiftrt:SI
- (match_operand:SI 1 "general_operand" "")
- (const_int 16))
- (match_operand:SI 2 "general_operand" "")]))]
+ "#"
"reload_completed"
[(set (reg:HI D_REGNUM) (match_dup 4))
(set (reg:HI D_REGNUM) (match_op_dup 3 [(reg:HI D_REGNUM) (match_dup 5)]))
@@ -3852,7 +3843,7 @@
}
")
-(define_insn "*logicalsi3_silshl16"
+(define_insn_and_split "*logicalsi3_silshl16"
[(set (match_operand:SI 0 "register_operand" "=D,D")
(match_operator:SI 3 "m68hc11_logical_operator"
[(ashift:SI
@@ -3860,15 +3851,7 @@
(const_int 16))
(match_operand:SI 2 "general_operand" "0,0")]))]
""
- "#")
-
-(define_split /* logicalsi3_silshl16 */
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operator:SI 3 "m68hc11_logical_operator"
- [(ashift:SI
- (match_operand:SI 1 "general_operand" "")
- (const_int 16))
- (match_operand:SI 2 "general_operand" "")]))]
+ "#"
"z_replacement_completed == 2"
[(set (reg:HI X_REGNUM) (match_op_dup 3 [(reg:HI X_REGNUM) (match_dup 4)]))
(set (reg:HI D_REGNUM) (match_dup 5))]
@@ -3881,48 +3864,45 @@
operands[5] = gen_rtx (REG, HImode, HARD_D_REGNUM);
")
-
-;;--------------------------------------------------------------------
-;;- 64/32-bit Logical Operations. Patterns are defined so that GCC
-;; can optimize correctly. These insns are split by the `final'
-;; pass (# pattern). They are split to fall in the corresponding
-;; 16-bit logical patterns.
-;;--------------------------------------------------------------------
-
-;; Split 64-bit logical operations: anddi3, iordi3, xordi3
-(define_split
- [(set (match_operand:DI 0 "reg_or_some_mem_operand" "")
- (match_operator:DI 4 "m68hc11_logical_operator"
- [(match_operand:DI 1 "reg_or_some_mem_operand" "")
- (match_operand:DI 2 "general_operand" "")]))
- (clobber (match_scratch:HI 3 ""))]
+(define_insn_and_split "*logicalsi3_silshl16_zext"
+ [(set (match_operand:SI 0 "register_operand" "=D,D,D")
+ (match_operator:SI 3 "m68hc11_logical_operator"
+ [(ashift:SI
+ (zero_extend:SI
+ (match_operand:HI 1 "general_operand" "uim,udA,!dA"))
+ (const_int 16))
+ (zero_extend:SI (match_operand:HI 2 "general_operand" "uidA,um,!dA"))]))]
+ ""
+ "#"
+ ;; Must split before z register replacement
"reload_completed"
- [(const_int 0)]
- "m68hc11_split_logical (SImode, GET_CODE (operands[4]), operands);
- DONE;")
-
-;; Split 32-bit logical operations: andsi3, iorsi3, xorsi3
-(define_split
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operator:SI 3 "m68hc11_logical_operator"
- [(match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "general_operand" "")]))]
- "0 && reload_completed"
- [(const_int 0)]
- "m68hc11_split_logical (HImode, GET_CODE (operands[3]), operands);
- DONE;")
+ [(set (match_dup 4) (match_dup 5))
+ (set (match_dup 6) (match_dup 7))]
+ "
+ /* set (X_REGNUM) (d), set (D_REGNUM) (1) */
+ if (GET_CODE (operands[1]) == HARD_D_REGNUM
+ && GET_CODE (operands[3]) != AND)
+ {
+ /* This particular case is too early to be split before
+ Z register replacement because the cse-reg pass we do
+ does not recognize the 'swap_areg'. It is ok to handle
+ this case after. */
+ if (z_replacement_completed != 2)
+ {
+ FAIL;
+ }
+ emit_move_insn (gen_rtx (REG, HImode, HARD_X_REGNUM), operands[2]);
+ emit_insn (gen_swap_areg (gen_rtx (REG, HImode, HARD_D_REGNUM),
+ gen_rtx (REG, HImode, HARD_X_REGNUM)));
+ }
+ operands[4] = gen_rtx (REG, HImode, HARD_D_REGNUM);
+ operands[6] = gen_rtx (REG, HImode, HARD_X_REGNUM);
+ operands[5] = operands[2];
+ operands[7] = operands[1];
-;; Split 32-bit logical operations: andsi3, iorsi3, xorsi3
-(define_split
- [(set (match_operand:SI 0 "reg_or_some_mem_operand" "")
- (match_operator:SI 4 "m68hc11_logical_operator"
- [(match_operand:SI 1 "reg_or_some_mem_operand" "")
- (match_operand:SI 2 "general_operand" "")]))
- (clobber (match_scratch:HI 3 ""))]
- "reload_completed"
- [(const_int 0)]
- "m68hc11_split_logical (HImode, GET_CODE (operands[4]), operands);
- DONE;")
+ if (GET_CODE (operands[3]) == AND)
+ operands[5] = operands[7] = const0_rtx;
+ ")
;;--------------------------------------------------------------------
;; 16-bit Arithmetic and logical operations on X and Y:
@@ -4421,19 +4401,13 @@
}
}")
-(define_insn "*ashldi3_const32"
+(define_insn_and_split "*ashldi3_const32"
[(set (match_operand:DI 0 "nonimmediate_operand" "=<,m,u")
(ashift:DI (match_operand:DI 1 "general_operand" "umi,umi,umi")
(const_int 32)))
(clobber (match_scratch:HI 2 "=&A,d,d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "")
- (ashift:DI (match_operand:DI 1 "general_operand" "")
- (const_int 32)))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"reload_completed"
[(const_int 0)]
"/* Move the lowpart in the highpart first in case the shift
@@ -4442,6 +4416,13 @@
{
m68hc11_split_move (m68hc11_gen_lowpart (SImode, operands[0]),
const0_rtx, operands[2]);
+
+ /* Adjust first operand if it uses SP so that we take into
+ account the above push. Can occur only for 68HC12. */
+ if (reg_mentioned_p (gen_rtx (REG, HImode, HARD_SP_REGNUM),
+ operands[1]))
+ operands[1] = adjust_address (operands[1],
+ GET_MODE (operands[0]), 4);
}
m68hc11_split_move (m68hc11_gen_highpart (SImode, operands[0]),
m68hc11_gen_lowpart (SImode, operands[1]),
@@ -4453,19 +4434,13 @@
}
DONE;")
-(define_insn "*ashldi3_const1"
+(define_insn_and_split "*ashldi3_const1"
[(set (match_operand:DI 0 "non_push_operand" "=m,m,u")
(ashift:DI (match_operand:DI 1 "general_operand" "mi,u,umi")
(const_int 1)))
(clobber (match_scratch:HI 2 "=d,d,d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "non_push_operand" "")
- (ashift:DI (match_operand:DI 1 "general_operand" "")
- (const_int 1)))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"z_replacement_completed == 2"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 2) (ashift:HI (match_dup 2) (const_int 1)))
@@ -4505,10 +4480,10 @@
operands[8] = m68hc11_gen_lowpart (HImode, operands[8]);")
(define_insn "addsi_silshr16"
- [(set (match_operand:SI 0 "register_operand" "=D,D")
- (plus:SI (lshiftrt:SI (match_operand:SI 1 "general_operand" "!*uim,0")
+ [(set (match_operand:SI 0 "register_operand" "=D,D,!D")
+ (plus:SI (lshiftrt:SI (match_operand:SI 1 "general_operand" "!*uim,0,0")
(const_int 16))
- (match_operand:SI 2 "general_operand" "0,m!*u")))]
+ (match_operand:SI 2 "general_operand" "0,m!*u,0")))]
""
"#")
@@ -4530,14 +4505,24 @@
(const_int 16))
(match_operand:SI 2 "general_operand" "")))]
"z_replacement_completed == 2 && X_REG_P (operands[1])"
- [(set (reg:HI D_REGNUM) (reg:HI X_REGNUM))
+ [(set (reg:HI D_REGNUM) (match_dup 5))
(set (reg:HI X_REGNUM) (match_dup 3))
(set (reg:HI D_REGNUM) (plus:HI (reg:HI D_REGNUM) (match_dup 4)))
(set (reg:HI X_REGNUM) (plus:HI (plus:HI (reg:HI X_REGNUM)
(const_int 0))
(reg:HI CC_REGNUM)))]
"operands[3] = m68hc11_gen_highpart (HImode, operands[2]);
- operands[4] = m68hc11_gen_lowpart (HImode, operands[2]);")
+ if (X_REG_P (operands[2]))
+ {
+ operands[4] = gen_rtx (REG, HImode, HARD_X_REGNUM);
+ operands[5] = gen_rtx (REG, HImode, HARD_D_REGNUM);
+ }
+ else
+ {
+ operands[4] = m68hc11_gen_lowpart (HImode, operands[2]);
+ operands[5] = gen_rtx (REG, HImode, HARD_X_REGNUM);
+ }
+")
(define_insn "addsi_ashift16"
[(set (match_operand:SI 0 "register_operand" "=D")
@@ -4563,19 +4548,13 @@
operands[4] = m68hc11_gen_lowpart (HImode, operands[2]);
}")
-(define_insn "addsi_andshr16"
+(define_insn_and_split "addsi_andshr16"
[(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (and:SI (match_operand:SI 1 "general_operand" "%uim")
(const_int 65535))
(match_operand:SI 2 "general_operand" "0")))]
""
- "#")
-
-(define_split
- [(set (match_operand:SI 0 "register_operand" "")
- (plus:SI (and:SI (match_operand:SI 1 "general_operand" "")
- (const_int 65535))
- (match_operand:SI 2 "general_operand" "")))]
+ "#"
"z_replacement_completed == 2"
[(set (reg:HI D_REGNUM) (plus:HI (reg:HI D_REGNUM) (match_dup 3)))
(set (reg:HI X_REGNUM) (plus:HI (plus:HI (reg:HI X_REGNUM) (const_int 0)) (reg:HI CC_REGNUM)))]
@@ -4622,31 +4601,24 @@
""
"#")
-(define_insn "*ashlsi3_const16_zexthi"
+(define_insn_and_split "*ashlsi3_const16_zexthi"
[(set (match_operand:SI 0 "nonimmediate_operand" "=D")
(ashift:SI (zero_extend:HI
(match_operand:HI 1 "general_operand" "duim*A"))
(const_int 16)))
(clobber (match_scratch:HI 2 "=X"))]
""
- "#")
-
-(define_split /* "*ashlsi3_const16_zexthi"*/
- [(set (match_operand:SI 0 "nonimmediate_operand" "")
- (ashift:SI (zero_extend:HI
- (match_operand:HI 1 "general_operand" ""))
- (const_int 16)))
- (clobber (match_scratch:HI 2 "=X"))]
+ "#"
"reload_completed"
[(set (reg:HI X_REGNUM) (match_dup 1))
(set (reg:HI D_REGNUM) (const_int 0))]
"")
(define_insn "*ashlsi3_const1"
- [(set (match_operand:SI 0 "non_push_operand" "=D,D,m,!*u,?*um")
- (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,*um,0,0,*um")
+ [(set (match_operand:SI 0 "non_push_operand" "=D,D,D,m,*u")
+ (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,m,*u,m,*u")
(const_int 1)))
- (clobber (match_scratch:HI 2 "=X,X,&d,&d,&d"))]
+ (clobber (match_scratch:HI 2 "=X,X,X,&d,&d"))]
""
"*
{
@@ -5240,19 +5212,13 @@
}
}")
-(define_insn "*lshrdi3_const32"
+(define_insn_and_split "*lshrdi3_const32"
[(set (match_operand:DI 0 "nonimmediate_operand" "=<,m,u")
(lshiftrt:DI (match_operand:DI 1 "general_operand" "umi,umi,umi")
(const_int 32)))
(clobber (match_scratch:HI 2 "=&A,d,d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand" "")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
- (const_int 32)))
- (clobber (match_scratch:HI 2 "=&A,d"))]
+ "#"
"reload_completed"
[(const_int 0)]
"m68hc11_split_move (m68hc11_gen_lowpart (SImode, operands[0]),
@@ -5322,19 +5288,13 @@
operands[7] = m68hc11_gen_highpart (HImode, operands[6]);
operands[6] = m68hc11_gen_lowpart (HImode, operands[6]);")
-(define_insn "*lshrdi_const1"
+(define_insn_and_split "*lshrdi_const1"
[(set (match_operand:DI 0 "non_push_operand" "=m,u")
(lshiftrt:DI (match_operand:DI 1 "general_operand" "umi,umi")
(const_int 1)))
(clobber (match_scratch:HI 2 "=d,d"))]
""
- "#")
-
-(define_split
- [(set (match_operand:DI 0 "non_push_operand" "")
- (lshiftrt:DI (match_operand:DI 1 "general_operand" "")
- (const_int 1)))
- (clobber (match_scratch:HI 2 ""))]
+ "#"
"z_replacement_completed == 2"
[(set (match_dup 2) (match_dup 3))
(set (match_dup 2) (lshiftrt:HI (match_dup 2) (const_int 1)))
@@ -5407,10 +5367,10 @@
#")
(define_insn "*lshrsi3_const1"
- [(set (match_operand:SI 0 "non_push_operand" "=D,m,*u")
- (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "D*um,*um,*um")
+ [(set (match_operand:SI 0 "non_push_operand" "=D,D,D,m,*u")
+ (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,m,*u,m,*u")
(const_int 1)))
- (clobber (match_scratch:HI 2 "=X,&d,&d"))]
+ (clobber (match_scratch:HI 2 "=X,X,X,&d,&d"))]
""
"*
{
@@ -5979,14 +5939,18 @@
if (GET_MODE (operands[0]) == HImode)
{
emit_jump_insn (gen_m68hc12_dbcc_dec_hi (operands[0],
- gen_rtx (NE, HImode),
+ gen_rtx (NE, HImode,
+ operands[0],
+ operands[1]),
operands[4]));
DONE;
}
if (GET_MODE (operands[0]) == QImode)
{
emit_jump_insn (gen_m68hc12_dbcc_dec_qi (operands[0],
- gen_rtx (NE, QImode),
+ gen_rtx (NE, QImode,
+ operands[0],
+ operands[1]),
operands[4]));
DONE;
}
@@ -6940,6 +6904,61 @@
gen_rtx (POST_INC, HImode,
gen_rtx_REG (HImode, HARD_SP_REGNUM)));")
+;; Replace: "pshx; tfr d,x; stx 0,sp" into "pshd; tfr d,x"
+(define_peephole2
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (match_operand:HI 0 "hard_reg_operand" ""))
+ (set (match_dup 0)
+ (match_operand:HI 1 "hard_reg_operand" ""))
+ (set (mem:HI (reg:HI SP_REGNUM))
+ (match_dup 0))]
+ "TARGET_M6812"
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (match_dup 1))
+ (set (match_dup 0) (match_dup 1))]
+ "")
+
+;;
+;; Change: "ldd 0,sp; pulx" into "puld"
+;; This sequence usually appears at end a functions.
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (mem:HI (reg:HI SP_REGNUM)))
+ (use (match_dup 0))
+ (set (match_operand:HI 1 "hard_reg_operand" "")
+ (mem:HI (post_inc:HI (reg:HI SP_REGNUM))))]
+ "peep2_reg_dead_p (2, operands[1])"
+ [(set (match_dup 0) (mem:HI (post_inc:HI (reg:HI SP_REGNUM))))
+ (use (match_dup 0))]
+ "")
+
+;; Replace: "pshx; clr 0,sp; clr 1,sp" by "clr 1,-sp; clr 1,-sp"
+;; Appears to allocate local variables.
+(define_peephole2
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (match_operand:HI 0 "hard_reg_operand" ""))
+ (set (mem:QI (plus:HI (reg:HI SP_REGNUM) (const_int 1)))
+ (const_int 0))
+ (set (mem:QI (reg:HI SP_REGNUM))
+ (const_int 0))]
+ "TARGET_M6812"
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (const_int 0))]
+ "")
+
+;; Likewise for HI mode
+(define_peephole2
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (match_operand:HI 0 "hard_reg_operand" ""))
+ (set (mem:HI (reg:HI SP_REGNUM))
+ (const_int 0))]
+ "TARGET_M6812"
+ [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM)))
+ (const_int 0))]
+ "")
+;;--------------------------------------------------------------------
+;;-
+;;--------------------------------------------------------------------
;;
;; Optimize memory<->memory moves when the value is also loaded in
;; a register.
@@ -7004,6 +7023,36 @@
"")
;;
+;; Replace: "ldx #N; xgdx; addd <var>; xgdx" by "ldab #N; ldx <var>; abx"
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "const_int_operand" ""))
+ (set (match_dup 0)
+ (plus:HI (match_dup 0)
+ (match_operand:HI 2 "general_operand" "")))
+ (match_scratch:QI 3 "d")]
+ "TARGET_M6811 && (INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 0x0ff)"
+ [(set (match_dup 3) (match_dup 4))
+ (set (match_dup 0) (match_dup 2))
+ (set (match_dup 0) (plus:HI (zero_extend:HI (match_dup 3)) (match_dup 0)))]
+ "operands[4] = m68hc11_gen_lowpart (QImode, operands[1]);")
+
+;;
+;; Replace: "ldx #N; xgdx; addd <var>; xgdx" by "ldab #N; ldx <var>; abx"
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "const_int_operand" ""))
+ (set (match_dup 0)
+ (plus:HI (match_dup 0)
+ (match_operand:HI 2 "general_operand" "")))]
+ "TARGET_M6812"
+ [(set (match_dup 0) (match_dup 2))
+ (set (match_dup 0) (plus:HI (match_dup 0) (match_dup 1)))]
+ "")
+
+;;
;; Optimize an address register increment and a compare to use
;; a PRE_INC or PRE_DEC addressing mode (disabled on the tst insn
;; before reload, but can be enabled after).
@@ -7095,6 +7144,31 @@
"")
;;
+;;
+;;
+(define_peephole2
+ [(parallel
+ [(set (match_operand:SI 0 "hard_reg_operand" "")
+ (ashift:SI (match_operand:SI 1 "general_operand" "")
+ (const_int 1)))
+ (clobber (match_scratch:HI 2 ""))])
+ (set (match_operand:HI 3 "nonimmediate_operand" "") (reg:HI D_REGNUM))
+ (set (match_operand:HI 4 "nonimmediate_operand" "") (reg:HI X_REGNUM))]
+ "!X_REG_P (operands[1])
+ && peep2_reg_dead_p (2, gen_rtx (REG, HImode, D_REGNUM))
+ && peep2_reg_dead_p (3, gen_rtx (REG, HImode, X_REGNUM))"
+ [(set (reg:HI D_REGNUM) (match_dup 5))
+ (set (reg:HI D_REGNUM) (ashift:HI (reg:HI D_REGNUM) (const_int 1)))
+ (set (match_dup 3) (reg:HI D_REGNUM))
+ (set (reg:HI D_REGNUM) (match_dup 6))
+ (parallel [(set (reg:HI D_REGNUM)
+ (rotate:HI (reg:HI D_REGNUM) (const_int 1)))
+ (clobber (reg:HI CC_REGNUM))])
+ (set (match_dup 4) (reg:HI D_REGNUM))]
+ "operands[5] = m68hc11_gen_lowpart (HImode, operands[1]);
+ operands[6] = m68hc11_gen_highpart (HImode, operands[1]);")
+
+;;
;; Replace a "ldd <mem>; psha; pshb" with a "ldx <mem>; pshx".
;;
(define_peephole2
@@ -7109,6 +7183,25 @@
"")
;;
+;; Remove one load when copying a value to/from memory and also
+;; to a register. Take care not cloberring a possible register used
+;; by operand 2.
+;; Replace: "ldd 0,y; std 2,y; ldx 0,y" into "ldx 0,y; stx 2,y"
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "general_operand" ""))
+ (set (match_operand:HI 2 "nonimmediate_operand" "") (match_dup 0))
+ (set (match_operand:HI 3 "hard_reg_operand" "") (match_dup 1))]
+ "peep2_reg_dead_p (2, operands[0])
+ && !side_effects_p (operands[1])
+ && !side_effects_p (operands[2])
+ && !reg_mentioned_p (operands[3], operands[2])"
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 2) (match_dup 3))]
+ "")
+
+;;
;; Replace a "ldd <mem>; addd #N; std <mem>" into a
;; "ldx <mem>; leax; stx <mem>" if we have a free X/Y register
;; and the constant is small.
@@ -7131,6 +7224,174 @@
"if (reg_mentioned_p (operands[4], operands[1])) FAIL;
if (reg_mentioned_p (operands[4], operands[3])) FAIL;")
+;;--------------------------------------------------------------------
+;;- Bset peephole2
+;;--------------------------------------------------------------------
+;; These peepholes try to replace some logical sequences by 'bset' and 'bclr'.
+;;
+;; Replace 'ldab <mem>; orab #N; stab <mem>' by 'bset <mem> #N'.
+;; Register D must be dead and there must be no register side effects for mem.
+;; The <mem> *can* be volatile this is why we must not use 'side_effects_p'.
+;; The good side effect is that it makes the sequence atomic.
+;;
+(define_peephole2
+ [(set (match_operand:QI 0 "hard_reg_operand" "")
+ (match_operand:QI 1 "nonimmediate_operand" ""))
+ (set (match_dup 0) (ior:QI (match_dup 0)
+ (match_operand:QI 2 "const_int_operand" "")))
+ (set (match_dup 1) (match_dup 0))]
+ "(TARGET_M6812 || m68hc11_indirect_p (operands[1], QImode))
+ && (GET_CODE (operands[1]) != MEM || !auto_inc_p (XEXP (operands[1], 0)))
+ && peep2_reg_dead_p (3, operands[0])"
+ [(set (match_dup 1) (ior:QI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "nonimmediate_operand" ""))
+ (set (match_dup 0) (ior:HI (match_dup 0)
+ (match_operand:HI 2 "const_int_operand" "")))
+ (set (match_dup 1) (match_dup 0))]
+ "(TARGET_M6812 || m68hc11_indirect_p (operands[1], HImode))
+ && (GET_CODE (operands[1]) != MEM || !auto_inc_p (XEXP (operands[1], 0)))
+ && peep2_reg_dead_p (3, operands[0])"
+ [(set (match_dup 1) (ior:HI (match_dup 1) (match_dup 2)))]
+ "")
+
+;;--------------------------------------------------------------------
+;;- Bclr peephole2
+;;--------------------------------------------------------------------
+;; Replace 'ldab <mem>; andab #N; stab <mem>' by 'bclr <mem> #N'.
+;; See Bset peephole2.
+;;
+(define_peephole2
+ [(set (match_operand:QI 0 "hard_reg_operand" "")
+ (match_operand:QI 1 "nonimmediate_operand" ""))
+ (set (match_dup 0) (and:QI (match_dup 0)
+ (match_operand:QI 2 "const_int_operand" "")))
+ (set (match_dup 1) (match_dup 0))]
+ "(TARGET_M6812 || m68hc11_indirect_p (operands[1], QImode))
+ && (GET_CODE (operands[1]) != MEM || !auto_inc_p (XEXP (operands[1], 0)))
+ && peep2_reg_dead_p (3, operands[0])"
+ [(set (match_dup 1) (and:QI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "nonimmediate_operand" ""))
+ (set (match_dup 0) (and:HI (match_dup 0)
+ (match_operand:HI 2 "const_int_operand" "")))
+ (set (match_dup 1) (match_dup 0))]
+ "(TARGET_M6812 || m68hc11_indirect_p (operands[1], HImode))
+ && (GET_CODE (operands[1]) != MEM || !auto_inc_p (XEXP (operands[1], 0)))
+ && peep2_reg_dead_p (3, operands[0])"
+ [(set (match_dup 1) (and:HI (match_dup 1) (match_dup 2)))]
+ "")
+
+
+;;--------------------------------------------------------------------
+;;- Compare peephole2
+;;--------------------------------------------------------------------
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "hard_reg_operand" ""))
+ (set (match_dup 1) (plus:HI (match_dup 1)
+ (match_operand:HI 2 "const_int_operand" "")))
+ (set (cc0) (match_dup 0))]
+ "peep2_reg_dead_p (3, operands[0]) && !Z_REG_P (operands[1])"
+ [(set (match_dup 1) (plus:HI (match_dup 1) (match_dup 2)))
+ (set (cc0) (compare (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "hard_reg_operand" ""))
+ (set (match_operand:HI 2 "hard_reg_operand" "")
+ (plus:HI (match_dup 2)
+ (match_operand:HI 3 "const_int_operand" "")))
+ (set (match_operand:HI 4 "memory_operand" "") (match_dup 2))
+ (set (cc0) (match_operand:HI 5 "hard_reg_operand" ""))]
+ "peep2_reg_dead_p (4, operands[5]) && !Z_REG_P (operands[2])
+ && !reg_mentioned_p (operands[2], operands[4])
+
+ && ((rtx_equal_p (operands[5], operands[0])
+ && rtx_equal_p (operands[2], operands[1]))
+
+ || (rtx_equal_p (operands[5], operands[1])
+ && rtx_equal_p (operands[2], operands[0])))"
+ [(set (match_dup 2) (match_dup 1))
+ (set (match_dup 2) (plus:HI (match_dup 2) (match_dup 3)))
+ (set (match_dup 4) (match_dup 2))
+ (set (cc0) (compare (match_dup 2) (match_dup 3)))]
+ "")
+
+
+;;--------------------------------------------------------------------
+;;- Load peephole2
+;;--------------------------------------------------------------------
+;;
+;; Optimize initialization of 2 hard regs from the same memory location
+;; Since we can't copy easily X, Y and D to each other, load the 2 registers
+;; from the same memory location.
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "memory_operand" ""))
+ (set (match_operand:HI 2 "hard_reg_operand" "") (match_dup 0))]
+ "TARGET_M6811
+ && !side_effects_p (operands[1])
+ && !reg_mentioned_p (operands[0], operands[1])"
+ [(set (match_dup 0) (match_dup 1))
+ (set (match_dup 2) (match_dup 1))]
+ "")
+
+;; Replace "ldd #N; addd <op>" with "ldd <op>; addd #N".
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "nonimmediate_operand" "") (const_int 0))
+ (set (match_operand:HI 1 "nonimmediate_operand" "") (const_int 0))
+ (set (match_operand:HI 2 "nonimmediate_operand" "") (const_int 0))
+ (set (match_operand:HI 3 "nonimmediate_operand" "") (const_int 0))
+ (match_scratch:HI 4 "d")]
+ ""
+ [(set (match_dup 4) (const_int 0))
+ (set (match_dup 0) (match_dup 4))
+ (set (match_dup 1) (match_dup 4))
+ (set (match_dup 2) (match_dup 4))
+ (set (match_dup 3) (match_dup 4))]
+ "")
+
+;;
+;; Replace "ldd #N; addd <op>" with "ldd <op>; addd #N".
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "nonimmediate_operand" "") (const_int 0))
+ (set (match_operand:HI 1 "nonimmediate_operand" "") (const_int 0))
+ (set (match_operand:HI 2 "nonimmediate_operand" "") (const_int 0))
+ (match_scratch:HI 3 "d")]
+ ""
+ [(set (match_dup 3) (const_int 0))
+ (set (match_dup 0) (match_dup 3))
+ (set (match_dup 1) (match_dup 3))
+ (set (match_dup 2) (match_dup 3))]
+ "")
+
+;;
+;; Replace "ldd #N; addd <op>" with "ldd <op>; addd #N".
+;;
+(define_peephole2
+ [(set (match_operand:HI 0 "hard_reg_operand" "") (const_int 0))
+ (set (match_operand:HI 1 "push_operand" "") (match_dup 0))
+ (set (match_operand:HI 2 "push_operand" "") (match_dup 0))
+ (set (match_operand:HI 3 "push_operand" "") (match_dup 0))
+ (match_scratch:HI 4 "x")]
+ "TARGET_M6811 && D_REG_P (operands[0]) && peep2_reg_dead_p (4, operands[0])"
+ [(set (match_dup 4) (const_int 0))
+ (set (match_dup 1) (match_dup 4))
+ (set (match_dup 2) (match_dup 4))
+ (set (match_dup 3) (match_dup 4))]
+ "")
+
;;
;; This peephole catches the address computations generated by the reload
;; pass.
@@ -7400,3 +7661,41 @@
return \"sts\\t%t0\\n\\tld%0\\t%t0\";
}
")
+
+(define_peephole
+ [(set (match_operand:HI 0 "hard_reg_operand" "")
+ (match_operand:HI 1 "memory_operand" ""))
+ (set (match_operand:HI 2 "hard_reg_operand" "") (match_dup 0))]
+ "TARGET_M6811
+ && !side_effects_p (operands[1])
+ && !reg_mentioned_p (operands[0], operands[1])"
+ "*
+{
+ rtx ops[2];
+
+ ops[0] = operands[0];
+ ops[1] = operands[1];
+ m68hc11_gen_movhi (insn, ops);
+ ops[0] = operands[2];
+ m68hc11_gen_movhi (insn, ops);
+ return \"\";
+}")
+
+;; Peephole for Z register replacement.
+;; Avoid to use _.tmp register when comparing D and X if we can compare
+;; with soft register
+(define_peephole
+ [(set (match_operand:HI 0 "hard_reg_operand" "") (reg:HI SOFT_XY_REGNUM))
+ (set (reg:HI SOFT_TMP_REGNUM) (match_dup 0))
+ (set (cc0) (compare (match_operand:HI 2 "hard_reg_operand" "")
+ (reg:HI SOFT_TMP_REGNUM)))]
+ "X_REG_P (operands[0]) || Y_REG_P (operands[0])"
+ "*
+{
+ rtx ops[2];
+
+ ops[0] = operands[0];
+ ops[1] = operands[1];
+ m68hc11_gen_movhi (insn, ops);
+ return \"cp%2\\t%1\";
+}")
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index f3550f3cb4d..2dd1c44a6f7 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -1,5 +1,6 @@
;;- Machine description for GNU compiler, Motorola 68000 Version
-;; Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
+;; Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
+;; 2002, 2003, 2004
;; Free Software Foundation, Inc.
;; This file is part of GCC.
diff --git a/gcc/config/m68k/netbsd-elf.h b/gcc/config/m68k/netbsd-elf.h
index 6669e5a2a30..b15a713d3e0 100644
--- a/gcc/config/m68k/netbsd-elf.h
+++ b/gcc/config/m68k/netbsd-elf.h
@@ -1,7 +1,7 @@
/* Definitions of target machine for GNU compiler,
for m68k (including m68010) NetBSD platforms using the
ELF object format.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Wasabi Systems. Inc.
This file is derived from <m68k/m68kv4.h>, <m68k/m68kelf.h>,
diff --git a/gcc/config/m68k/t-slibgcc-elf-ver b/gcc/config/m68k/t-slibgcc-elf-ver
new file mode 100644
index 00000000000..6aac37cc08f
--- /dev/null
+++ b/gcc/config/m68k/t-slibgcc-elf-ver
@@ -0,0 +1,3 @@
+# Bump the version number of the shared libgcc library
+
+SHLIB_SOVERSION = 2
diff --git a/gcc/config/mcore/mcore-elf.h b/gcc/config/mcore/mcore-elf.h
index 2234e7d1957..11b80ebbab3 100644
--- a/gcc/config/mcore/mcore-elf.h
+++ b/gcc/config/mcore/mcore-elf.h
@@ -1,5 +1,6 @@
/* Definitions of MCore target.
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
+ Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
This file is part of GCC.
diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c
index 53ceea3d554..6e9f4705024 100644
--- a/gcc/config/mcore/mcore.c
+++ b/gcc/config/mcore/mcore.c
@@ -1,5 +1,6 @@
/* Output routines for Motorola MCore processor
- Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mcore/mcore.h b/gcc/config/mcore/mcore.h
index b19104f9cf1..ccca2fa015c 100644
--- a/gcc/config/mcore/mcore.h
+++ b/gcc/config/mcore/mcore.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for Motorola M*CORE Processor.
- Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mcore/mcore.md b/gcc/config/mcore/mcore.md
index e1e598b7ddd..e10be256946 100644
--- a/gcc/config/mcore/mcore.md
+++ b/gcc/config/mcore/mcore.md
@@ -1,5 +1,5 @@
;; Machine description the Motorola MCore
-;; Copyright (C) 1993, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1999, 2000, 2004 Free Software Foundation, Inc.
;; Contributed by Motorola.
;; This file is part of GCC.
diff --git a/gcc/config/mips/elf.h b/gcc/config/mips/elf.h
index febb8216bad..ff70b59cc20 100644
--- a/gcc/config/mips/elf.h
+++ b/gcc/config/mips/elf.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler. MIPS R3000 version with
GOFAST floating point library.
- Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003
+ Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mips/elf64.h b/gcc/config/mips/elf64.h
index 071f6fa061a..2b39287c893 100644
--- a/gcc/config/mips/elf64.h
+++ b/gcc/config/mips/elf64.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler. MIPS R4000 version with
GOFAST floating point library.
- Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2002
+ Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mips/iris5.h b/gcc/config/mips/iris5.h
index 41de65223f9..4f26dd7c59f 100644
--- a/gcc/config/mips/iris5.h
+++ b/gcc/config/mips/iris5.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler. IRIX version 5.
Copyright (C) 1993, 1995, 1996, 1998, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -29,6 +29,10 @@ Boston, MA 02111-1307, USA. */
#define ABICALLS_ASM_OP "\t.option pic2"
+/* Dummy definition which allows EXTRA_SECTION_FUNCTIONS to be the same
+ for IRIX 5 and 6. */
+#define BSS_SECTION_ASM_OP "\t.data"
+
/* ??? This is correct, but not very useful, because there is no file that
uses this macro. */
/* ??? The best way to handle global constructors under ELF is to use .init
@@ -133,8 +137,7 @@ Boston, MA 02111-1307, USA. */
-_SYSTYPE_SVR4"
/* We now support shared libraries. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "\
+#define IRIX_STARTFILE_SPEC "\
%{!static: \
%{!shared:%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}}} \
%{static: \
@@ -142,11 +145,16 @@ Boston, MA 02111-1307, USA. */
%{!pg:%{p:/usr/lib/nonshared/mcrt1.o%s libprof1.a%s} \
%{!p:/usr/lib/nonshared/crt1.o%s}}}"
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "%(irix_startfile_spec)"
+
#undef LIB_SPEC
#define LIB_SPEC "%{!shared:%{p:-lprof1} %{pg:-lprof1} -lc}"
+#define IRIX_ENDFILE_SPEC "%{!shared:crtn.o%s}"
+
#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "%{!shared:crtn.o%s}"
+#define ENDFILE_SPEC "%(irix_endfile_spec)"
/* We do not want to run mips-tfile! */
#undef ASM_FINAL_SPEC
@@ -192,14 +200,61 @@ Boston, MA 02111-1307, USA. */
#undef MIPS_DEFAULT_GVALUE
#define MIPS_DEFAULT_GVALUE 0
+/* Switch into a generic section. */
+#undef TARGET_ASM_NAMED_SECTION
+#define TARGET_ASM_NAMED_SECTION irix_asm_named_section
+
+/* Define functions to read the name and flags of the current section.
+ They are used by irix_asm_output_align. */
+
+#undef EXTRA_SECTION_FUNCTIONS
+#define EXTRA_SECTION_FUNCTIONS \
+const char * \
+current_section_name (void) \
+{ \
+ switch (in_section) \
+ { \
+ case no_section: return NULL; \
+ case in_text: return ".text"; \
+ case in_data: return ".data"; \
+ case in_bss: return ".bss"; \
+ case in_readonly_data: \
+ if (mips_abi != ABI_32 && mips_abi != ABI_O64) \
+ return ".rodata"; \
+ else \
+ return ".rdata"; \
+ case in_named: \
+ return in_named_name; \
+ } \
+ abort (); \
+} \
+ \
+unsigned int \
+current_section_flags (void) \
+{ \
+ switch (in_section) \
+ { \
+ case no_section: return 0; \
+ case in_text: return SECTION_CODE; \
+ case in_data: return SECTION_WRITE; \
+ case in_bss: return SECTION_WRITE | SECTION_BSS; \
+ case in_readonly_data: return 0; \
+ case in_named: return get_named_section_flags (in_named_name); \
+ } \
+ abort (); \
+}
+
/* Some assemblers have a bug that causes backslash escaped chars in .ascii
- to be misassembled, so we just completely avoid it. */
+ to be misassembled, so avoid it by using .byte instead. Write the original
+ string in a comment, partly to improve readability and partly for the sake
+ of scan-assembler-type tests. */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { \
const unsigned char *s_ = (const unsigned char *)(PTR); \
unsigned len_ = (LEN); \
unsigned i_; \
+ mips_output_ascii (FILE, (const char *) s_, len_, "\t# "); \
for (i_ = 0; i_ < len_; s_++, i_++) \
{ \
if ((i_ % 8) == 0) \
@@ -242,3 +297,8 @@ do { \
/* Handle #pragma weak and #pragma pack. */
#define HANDLE_SYSV_PRAGMA 1
+
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+ { "irix_startfile_spec", IRIX_STARTFILE_SPEC }, \
+ { "irix_endfile_spec", IRIX_ENDFILE_SPEC },
diff --git a/gcc/config/mips/iris5gas.h b/gcc/config/mips/iris5gas.h
index 6abd98c3f18..49af06b5367 100644
--- a/gcc/config/mips/iris5gas.h
+++ b/gcc/config/mips/iris5gas.h
@@ -1,5 +1,5 @@
-/* Definitions of target machine for GNU compiler. Irix version 5 with gas.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+/* Definitions of target machine for GNU compiler. IRIX version 5 with gas.
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -19,6 +19,9 @@
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+/* Reenable debugging. */
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
+
/* GNU as does handle DWARF2 directives. */
#undef DWARF2_UNWIND_INFO
#define DWARF2_UNWIND_INFO 1
@@ -40,17 +43,10 @@
/* Override iris5.h versions to include crtbegin.o and crtend.o. */
#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "\
-%{!static: \
- %{!shared:%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}}} \
-%{static: \
- %{pg:gcrt1.o%s} \
- %{!pg:%{p:/usr/lib/nonshared/mcrt1.o%s libprof1.a%s} \
- %{!p:/usr/lib/nonshared/crt1.o%s}}} \
-crtbegin.o%s"
+#define STARTFILE_SPEC "%(irix_startfile_spec) crtbegin.o%s"
#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s %{!shared:crtn.o%s}"
+#define ENDFILE_SPEC "crtend.o%s %(irix_endfile_spec)"
/* Irix 5 does not have some strange restrictions that Irix 3 had. */
#undef SET_FILE_NUMBER
@@ -74,10 +70,6 @@ do { \
fprintf (asm_out_file, "\t.etype\t0x%x;", (a)); \
} while (0)
-/* Switch into a generic section. */
-#undef TARGET_ASM_NAMED_SECTION
-#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
-
/* Add -g to mips.h default to avoid confusing gas with local symbols
generated from stabs info. */
#undef NM_FLAGS
diff --git a/gcc/config/mips/iris5gld.h b/gcc/config/mips/iris5gld.h
new file mode 100644
index 00000000000..2e93c11b58b
--- /dev/null
+++ b/gcc/config/mips/iris5gld.h
@@ -0,0 +1,42 @@
+/* Definitions of target machine for GNU compiler. IRIX 5 with GNU ld.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC 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.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
+%{bestGnum} %{shared} %{non_shared} \
+%{call_shared} %{no_archive} %{exact_version} \
+%{static: -non_shared} \
+%{!static: \
+ %{!shared: %{!non_shared: %{!call_shared: -call_shared}}}} \
+%{rpath} -init __gcc_init -fini __gcc_fini \
+-melf32bsmip"
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "%(irix_startfile_spec) irix-crti.o%s crtbegin.o%s"
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC "crtend.o%s irix-crtn.o%s %(irix_endfile_spec)"
+
+/* The GNU linker supports one-only sections. */
+#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
+
+#define INIT_SECTION_ASM_OP "\t.section\t.init,0x1,0x6,4,4"
+#define FINI_SECTION_ASM_OP "\t.section\t.fini,0x1,0x6,4,4"
diff --git a/gcc/config/mips/iris6-o32-as.h b/gcc/config/mips/iris6-o32-as.h
deleted file mode 100644
index 5cda89e13cf..00000000000
--- a/gcc/config/mips/iris6-o32-as.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Definitions of target machine for GNU compiler, for MIPS running IRIX 6
- (O32 ABI) using the SGI assembler. */
-
-/* Enforce use of O32 linker, irrespective of SGI_ABI environment variable
- and machine type (e.g., R8000 systems default to -64). Copied from
- iris5.h, only adding -32. The default options -call_shared -no_unresolved
- are only passed if not invoked with -r. */
-#undef LINK_SPEC
-#define LINK_SPEC "\
-%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
-%{bestGnum} %{shared} %{non_shared} \
-%{call_shared} %{no_archive} %{exact_version} \
-%{static: -non_shared} \
-%{!static: \
- %{!shared:%{!non_shared:%{!call_shared:%{!r: -call_shared -no_unresolved}}}}} \
-%{rpath} \
--_SYSTYPE_SVR4 \
--32"
diff --git a/gcc/config/mips/iris6-o32-gas.h b/gcc/config/mips/iris6-o32-gas.h
deleted file mode 100644
index fb540a922cf..00000000000
--- a/gcc/config/mips/iris6-o32-gas.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Definitions of target machine for GNU compiler, for MIPS running IRIX 6
- (O32 ABI) using the GNU assembler. */
-
-/* Enforce use of O32 linker, irrespective of SGI_ABI environment variable
- and machine type (e.g., R8000 systems default to -64). Copied from
- iris5gas.h, only adding -32. The default options -call_shared
- -no_unresolved are only passed if not invoked with -r. */
-#undef LINK_SPEC
-#define LINK_SPEC "\
-%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
-%{bestGnum} %{shared} %{non_shared} \
-%{call_shared} %{no_archive} %{exact_version} \
-%{static: -non_shared} \
-%{!static: \
- %{!shared:%{!non_shared:%{!call_shared:%{!r: -call_shared -no_unresolved}}}}} \
-%{rpath} -init __do_global_ctors -fini __do_global_dtors \
-%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
--_SYSTYPE_SVR4 \
--32"
diff --git a/gcc/config/mips/iris6-o32.h b/gcc/config/mips/iris6-o32.h
deleted file mode 100644
index a525db163ae..00000000000
--- a/gcc/config/mips/iris6-o32.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Definitions of target machine for GNU compiler, for MIPS running IRIX 6
- (O32 ABI). */
-
-/* The O32 ABI on IRIX 6 defaults to the mips2 ISA. */
-#undef MIPS_CPU_STRING_DEFAULT
-#define MIPS_CPU_STRING_DEFAULT "mips2"
-
-/* Specify wchar_t and wint_t types. */
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "long int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
-
-#undef WINT_TYPE
-#define WINT_TYPE "long int"
-
-#undef WINT_TYPE_SIZE
-#define WINT_TYPE_SIZE 32
-
-/* Enforce use of O32 assembler, irrespective of SGI_ABI environment variable
- and machine type (e.g., R8000 systems default to -64). Gas doesn't need
- this, but doesn't hurt either. Need to pass -mips2 to gas which defaults
- to -mips1 if no ISA is specified. */
-#undef SUBTARGET_ASM_SPEC
-#define SUBTARGET_ASM_SPEC "-32 %{!mips*:-mips2}"
diff --git a/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h
index 53b88d84fc8..33d6b09825a 100644
--- a/gcc/config/mips/iris6.h
+++ b/gcc/config/mips/iris6.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. IRIX version 6.
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -288,6 +288,7 @@ Boston, MA 02111-1307, USA. */
and dtor lists this way, so we use -init and -fini to invoke the
do_global_* functions instead of running collect2. */
+#undef BSS_SECTION_ASM_OP
#define BSS_SECTION_ASM_OP_32 "\t.data"
#define BSS_SECTION_ASM_OP_64 "\t.section\t.bss"
#define BSS_SECTION_ASM_OP \
@@ -303,10 +304,6 @@ Boston, MA 02111-1307, USA. */
? READONLY_DATA_SECTION_ASM_OP_64 \
: READONLY_DATA_SECTION_ASM_OP_32)
-/* Switch into a generic section. */
-#undef TARGET_ASM_NAMED_SECTION
-#define TARGET_ASM_NAMED_SECTION irix_asm_named_section
-
/* The default definition in defaults.h cannot cope with the runtime-variable
definition of DWARF2_UNWIND_INFO above, so define here explicitly. */
#define EH_FRAME_SECTION_NAME ".eh_frame"
@@ -336,46 +333,6 @@ Boston, MA 02111-1307, USA. */
#endif /* _MIPS_SIM == _ABIO32 && !GAS */
-/* Define functions to read the name and flags of the current section.
- They are used by irix_asm_output_align. */
-
-#undef EXTRA_SECTION_FUNCTIONS
-#define EXTRA_SECTION_FUNCTIONS \
-const char * \
-current_section_name (void) \
-{ \
- switch (in_section) \
- { \
- case no_section: return NULL; \
- case in_text: return ".text"; \
- case in_data: return ".data"; \
- case in_bss: return ".bss"; \
- case in_readonly_data: \
- if (mips_abi != ABI_32 && mips_abi != ABI_O64) \
- return ".rodata"; \
- else \
- return ".rdata"; \
- case in_named: \
- return in_named_name; \
- } \
- abort (); \
-} \
- \
-unsigned int \
-current_section_flags (void) \
-{ \
- switch (in_section) \
- { \
- case no_section: return 0; \
- case in_text: return SECTION_CODE; \
- case in_data: return SECTION_WRITE; \
- case in_bss: return SECTION_WRITE | SECTION_BSS; \
- case in_readonly_data: return 0; \
- case in_named: return get_named_section_flags (in_named_name); \
- } \
- abort (); \
-}
-
/* SGI assembler needs all sorts of extra help to do alignment properly. */
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN irix_asm_output_align
@@ -437,7 +394,8 @@ while (0)
/* Profiling is supported via libprof1.a not -lc_p as in IRIX 3. */
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
-#define IRIX6_STARTFILE_SPEC \
+#undef IRIX_STARTFILE_SPEC
+#define IRIX_STARTFILE_SPEC \
"%{!shared: \
%{mabi=32:%{pg:gcrt1.o%s} \
%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}} \
@@ -464,7 +422,7 @@ while (0)
%{!p:/usr/lib32/mips3/crt1.o%s}}}}}"
#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%(irix6_startfile_spec) crtbegin.o%s"
+#define STARTFILE_SPEC "%(irix_startfile_spec) crtbegin.o%s"
#undef LIB_SPEC
#define LIB_SPEC \
@@ -483,7 +441,8 @@ while (0)
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
-#define IRIX6_ENDFILE_SPEC \
+#undef IRIX_ENDFILE_SPEC
+#define IRIX_ENDFILE_SPEC \
"%{!shared: \
%{mabi=32:crtn.o%s}\
%{mabi=n32:%{mips4:/usr/lib32/mips4/crtn.o%s}\
@@ -494,7 +453,7 @@ while (0)
%{!mips4:/usr/lib32/mips3/crtn.o%s}}}"
#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s %(irix6_endfile_spec)"
+#define ENDFILE_SPEC "crtend.o%s %(irix_endfile_spec)"
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
@@ -519,8 +478,3 @@ do { \
} while (0)
#define MIPS_TFMODE_FORMAT mips_extended_format
-
-#undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
- { "irix6_startfile_spec", IRIX6_STARTFILE_SPEC }, \
- { "irix6_endfile_spec", IRIX6_ENDFILE_SPEC },
diff --git a/gcc/config/mips/iris6gas.h b/gcc/config/mips/iris6gas.h
index 532e9e43f16..01634faa414 100644
--- a/gcc/config/mips/iris6gas.h
+++ b/gcc/config/mips/iris6gas.h
@@ -1,5 +1,5 @@
/* Definitions for MIPS running IRIX 6 using GNU AS
- Copyright (C) 2003
+ Copyright (C) 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mips/iris6gld.h b/gcc/config/mips/iris6gld.h
index 1e5ee2c9f96..c6e04e14cee 100644
--- a/gcc/config/mips/iris6gld.h
+++ b/gcc/config/mips/iris6gld.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler. Iris version 6 with
GNU ld.
- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Written by Mark Mitchell <mark@codesourcery.com>.
This file is part of GCC.
@@ -48,10 +48,10 @@ Boston, MA 02111-1307, USA. */
%{mabi=32: -melf32bsmip}%{mabi=n32: -melf32bmipn32}%{mabi=64: -melf64bmip}%{!mabi*: -melf32bmipn32}"
#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%(irix6_startfile_spec) irix6-crti.o%s crtbegin.o%s"
+#define STARTFILE_SPEC "%(irix_startfile_spec) irix-crti.o%s crtbegin.o%s"
#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s irix6-crtn.o%s %(irix6_endfile_spec)"
+#define ENDFILE_SPEC "crtend.o%s irix-crtn.o%s %(irix_endfile_spec)"
/* The GNU linker supports one-only sections. */
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
diff --git a/gcc/config/mips/irix6-crti.asm b/gcc/config/mips/irix-crti.asm
index 5d8ede70390..5d8ede70390 100644
--- a/gcc/config/mips/irix6-crti.asm
+++ b/gcc/config/mips/irix-crti.asm
diff --git a/gcc/config/mips/irix6-crtn.asm b/gcc/config/mips/irix-crtn.asm
index 647e8e13e31..647e8e13e31 100644
--- a/gcc/config/mips/irix6-crtn.asm
+++ b/gcc/config/mips/irix-crtn.asm
diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
index a087758b095..66f22e54bb8 100644
--- a/gcc/config/mips/linux.h
+++ b/gcc/config/mips/linux.h
@@ -1,5 +1,5 @@
/* Definitions for MIPS running Linux-based GNU systems with ELF format.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -58,6 +58,7 @@ Boston, MA 02111-1307, USA. */
LINUX_TARGET_OS_CPP_BUILTINS(); \
builtin_define ("__PIC__"); \
builtin_define ("__pic__"); \
+ builtin_assert ("machine=mips"); \
/* The GNU C++ standard library requires this. */ \
if (c_dialect_cxx ()) \
builtin_define ("_GNU_SOURCE"); \
diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h
index 6bf635c1e9c..0a430a08bd3 100644
--- a/gcc/config/mips/mips-protos.h
+++ b/gcc/config/mips/mips-protos.h
@@ -26,7 +26,7 @@ Boston, MA 02111-1307, USA. */
#ifndef GCC_MIPS_PROTOS_H
#define GCC_MIPS_PROTOS_H
-extern int mips_reg_mode_ok_for_base_p (rtx, enum machine_mode, int);
+extern int mips_regno_mode_ok_for_base_p (int, enum machine_mode, int);
extern int mips_address_insns (rtx, enum machine_mode);
extern int mips_const_insns (rtx);
extern int mips_fetch_insns (rtx);
@@ -103,11 +103,14 @@ extern void irix_output_external_libcall (rtx);
#endif
extern void mips_output_filename (FILE *, const char *);
extern void mips_output_lineno (FILE *, int);
-extern void mips_output_ascii (FILE *, const char *, size_t);
+extern void mips_output_ascii (FILE *, const char *, size_t, const char *);
extern void mips_output_aligned_bss (FILE *, tree, const char *,
unsigned HOST_WIDE_INT, int);
+extern void mips_output_aligned_decl_common (FILE *, tree, const char *,
+ unsigned HOST_WIDE_INT,
+ unsigned int);
extern void mips_declare_object (FILE *, const char *, const char *,
- const char *, int);
+ const char *, ...);
extern void mips_declare_object_name (FILE *, const char *, tree);
extern void mips_finish_declare_object (FILE *, tree, int, int);
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 477f98964aa..414b1b0b83d 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -53,6 +53,7 @@ Boston, MA 02111-1307, USA. */
#include "target-def.h"
#include "integrate.h"
#include "langhooks.h"
+#include "cfglayout.h"
/* Enumeration for all of the relational tests, so that we can build
arrays indexed by the test type, and not worry about the order
@@ -190,6 +191,7 @@ struct mips_integer_op;
static enum mips_symbol_type mips_classify_symbol (rtx);
static void mips_split_const (rtx, rtx *, HOST_WIDE_INT *);
+static bool mips_offset_within_object_p (rtx, HOST_WIDE_INT);
static bool mips_symbolic_constant_p (rtx, enum mips_symbol_type *);
static bool mips_valid_base_register_p (rtx, enum machine_mode, int);
static bool mips_symbolic_address_p (enum mips_symbol_type, enum machine_mode);
@@ -200,7 +202,7 @@ static bool mips16_unextended_reference_p (enum machine_mode mode, rtx, rtx);
static rtx mips_force_temporary (rtx, rtx);
static rtx mips_split_symbol (rtx, rtx);
static rtx mips_unspec_address (rtx, enum mips_symbol_type);
-static rtx mips_unspec_offset_high (rtx, rtx, enum mips_symbol_type);
+static rtx mips_unspec_offset_high (rtx, rtx, rtx, enum mips_symbol_type);
static rtx mips_load_got (rtx, rtx, enum mips_symbol_type);
static rtx mips_add_offset (rtx, HOST_WIDE_INT);
static unsigned int mips_build_shift (struct mips_integer_op *, HOST_WIDE_INT);
@@ -216,6 +218,7 @@ static int mips_address_cost (rtx);
static enum internal_test map_test_to_internal_test (enum rtx_code);
static void get_float_compare_codes (enum rtx_code, enum rtx_code *,
enum rtx_code *);
+static void mips_load_call_address (rtx, rtx, int);
static bool mips_function_ok_for_sibcall (tree, tree);
static void mips_block_move_straight (rtx, rtx, HOST_WIDE_INT);
static void mips_adjust_block_mem (rtx, HOST_WIDE_INT, rtx *, rtx *);
@@ -239,12 +242,16 @@ static bool mips_save_reg_p (unsigned int);
static void mips_save_restore_reg (enum machine_mode, int, HOST_WIDE_INT,
mips_save_restore_fn);
static void mips_for_each_saved_reg (HOST_WIDE_INT, mips_save_restore_fn);
+static void mips_output_cplocal (void);
+static void mips_emit_loadgp (void);
static void mips_output_function_prologue (FILE *, HOST_WIDE_INT);
static void mips_set_frame_expr (rtx);
static rtx mips_frame_set (rtx, rtx);
static void mips_save_reg (rtx, rtx);
static void mips_output_function_epilogue (FILE *, HOST_WIDE_INT);
static void mips_restore_reg (rtx, rtx);
+static void mips_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
+ HOST_WIDE_INT, tree);
static int symbolic_expression_p (rtx);
static void mips_select_rtx_section (enum machine_mode, rtx,
unsigned HOST_WIDE_INT);
@@ -260,7 +267,6 @@ static rtx mips_return_fpr_pair (enum machine_mode mode,
static rtx mips16_gp_pseudo_reg (void);
static void mips16_fp_args (FILE *, int, int);
static void build_mips16_function_stub (FILE *);
-static void mips16_optimize_gp (void);
static rtx add_constant (struct constant **, rtx, enum machine_mode);
static void dump_constants (struct constant *, rtx);
static rtx mips_find_symbol (rtx);
@@ -533,7 +539,7 @@ char mips_print_operand_punct[256];
int mips_dbx_regno[FIRST_PSEUDO_REGISTER];
/* An alias set for the GOT. */
-static int mips_got_alias_set;
+static GTY(()) int mips_got_alias_set;
/* A copy of the original flag_delayed_branch: see override_options. */
static int mips_flag_delayed_branch;
@@ -566,7 +572,7 @@ char mips_reg_names[][8] =
"$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23",
"$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "$f31",
"hi", "lo", "", "$fcc0","$fcc1","$fcc2","$fcc3","$fcc4",
- "$fcc5","$fcc6","$fcc7","", "", "", "", "$fakec",
+ "$fcc5","$fcc6","$fcc7","", "", "$arg", "$frame", "$fakec",
"$c0r0", "$c0r1", "$c0r2", "$c0r3", "$c0r4", "$c0r5", "$c0r6", "$c0r7",
"$c0r8", "$c0r9", "$c0r10","$c0r11","$c0r12","$c0r13","$c0r14","$c0r15",
"$c0r16","$c0r17","$c0r18","$c0r19","$c0r20","$c0r21","$c0r22","$c0r23",
@@ -595,7 +601,7 @@ char mips_sw_reg_names[][8] =
"$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23",
"$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "$f31",
"hi", "lo", "", "$fcc0","$fcc1","$fcc2","$fcc3","$fcc4",
- "$fcc5","$fcc6","$fcc7","$rap", "", "", "", "$fakec",
+ "$fcc5","$fcc6","$fcc7","$rap", "", "$arg", "$frame", "$fakec",
"$c0r0", "$c0r1", "$c0r2", "$c0r3", "$c0r4", "$c0r5", "$c0r6", "$c0r7",
"$c0r8", "$c0r9", "$c0r10","$c0r11","$c0r12","$c0r13","$c0r14","$c0r15",
"$c0r16","$c0r17","$c0r18","$c0r19","$c0r20","$c0r21","$c0r22","$c0r23",
@@ -632,7 +638,7 @@ const enum reg_class mips_regno_to_class[] =
HI_REG, LO_REG, NO_REGS, ST_REGS,
ST_REGS, ST_REGS, ST_REGS, ST_REGS,
ST_REGS, ST_REGS, ST_REGS, NO_REGS,
- NO_REGS, NO_REGS, NO_REGS, NO_REGS,
+ NO_REGS, ALL_REGS, ALL_REGS, NO_REGS,
COP0_REGS, COP0_REGS, COP0_REGS, COP0_REGS,
COP0_REGS, COP0_REGS, COP0_REGS, COP0_REGS,
COP0_REGS, COP0_REGS, COP0_REGS, COP0_REGS,
@@ -792,6 +798,11 @@ const struct mips_cpu_info mips_cpu_info_table[] = {
#undef TARGET_RETURN_IN_MSB
#define TARGET_RETURN_IN_MSB mips_return_in_msb
+#undef TARGET_ASM_OUTPUT_MI_THUNK
+#define TARGET_ASM_OUTPUT_MI_THUNK mips_output_mi_thunk
+#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
+#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Classify symbol X, which must be a SYMBOL_REF or a LABEL_REF. */
@@ -882,6 +893,29 @@ mips_split_const (rtx x, rtx *base, HOST_WIDE_INT *offset)
}
+/* Return true if SYMBOL is a SYMBOL_REF and OFFSET + SYMBOL points
+ to the same object as SYMBOL. */
+
+static bool
+mips_offset_within_object_p (rtx symbol, HOST_WIDE_INT offset)
+{
+ if (GET_CODE (symbol) != SYMBOL_REF)
+ return false;
+
+ if (CONSTANT_POOL_ADDRESS_P (symbol)
+ && offset >= 0
+ && offset < (int) GET_MODE_SIZE (get_pool_mode (symbol)))
+ return true;
+
+ if (SYMBOL_REF_DECL (symbol) != 0
+ && offset >= 0
+ && offset < int_size_in_bytes (TREE_TYPE (SYMBOL_REF_DECL (symbol))))
+ return true;
+
+ return false;
+}
+
+
/* Return true if X is a symbolic constant that can be calculated in
the same way as a bare symbol. If it is, store the type of the
symbol in *SYMBOL_TYPE. */
@@ -907,21 +941,22 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
switch (*symbol_type)
{
case SYMBOL_GENERAL:
- /* %hi() and %lo() can handle anything. */
+ /* If the target has 64-bit pointers and the object file only
+ supports 32-bit symbols, the values of those symbols will be
+ sign-extended. In this case we can't allow an arbitrary offset
+ in case the 32-bit value X + OFFSET has a different sign from X. */
+ if (Pmode == DImode && !ABI_HAS_64BIT_SYMBOLS)
+ return mips_offset_within_object_p (x, offset);
+
+ /* In other cases the relocations can handle any offset. */
return true;
case SYMBOL_SMALL_DATA:
- /* Make sure that the offset refers to something within the
- -G limit. If the offset is allowed to grow too much,
- it could overflow the range of %gp_rel(). */
- return (offset > 0 && offset < mips_section_threshold);
-
case SYMBOL_CONSTANT_POOL:
- /* Similarly check the range of offsets for mips16 constant
- pool entries. */
- return (CONSTANT_POOL_ADDRESS_P (x)
- && offset > 0
- && offset < (int) GET_MODE_SIZE (get_pool_mode (x)));
+ /* Make sure that the offset refers to something within the
+ underlying object. This should guarantee that the final
+ PC- or GP-relative offset is within the 16-bit limit. */
+ return mips_offset_within_object_p (x, offset);
case SYMBOL_GOT_LOCAL:
case SYMBOL_GOTOFF_PAGE:
@@ -942,11 +977,40 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type)
/* This function is used to implement REG_MODE_OK_FOR_BASE_P. */
int
-mips_reg_mode_ok_for_base_p (rtx reg, enum machine_mode mode, int strict)
+mips_regno_mode_ok_for_base_p (int regno, enum machine_mode mode, int strict)
{
- return (strict
- ? REGNO_MODE_OK_FOR_BASE_P (REGNO (reg), mode)
- : GP_REG_OR_PSEUDO_NONSTRICT_P (REGNO (reg), mode));
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ {
+ if (!strict)
+ return true;
+ regno = reg_renumber[regno];
+ }
+
+ /* These fake registers will be eliminated to either the stack or
+ hard frame pointer, both of which are usually valid base registers.
+ Reload deals with the cases where the eliminated form isn't valid. */
+ if (regno == ARG_POINTER_REGNUM || regno == FRAME_POINTER_REGNUM)
+ return true;
+
+ /* In mips16 mode, the stack pointer can only address word and doubleword
+ values, nothing smaller. There are two problems here:
+
+ (a) Instantiating virtual registers can introduce new uses of the
+ stack pointer. If these virtual registers are valid addresses,
+ the stack pointer should be too.
+
+ (b) Most uses of the stack pointer are not made explicit until
+ FRAME_POINTER_REGNUM and ARG_POINTER_REGNUM have been eliminated.
+ We don't know until that stage whether we'll be eliminating to the
+ stack pointer (which needs the restriction) or the hard frame
+ pointer (which doesn't).
+
+ All in all, it seems more consitent to only enforce this restriction
+ during and after reload. */
+ if (TARGET_MIPS16 && regno == STACK_POINTER_REGNUM)
+ return !strict || GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8;
+
+ return TARGET_MIPS16 ? M16_REG_P (regno) : GP_REG_P (regno);
}
@@ -960,7 +1024,7 @@ mips_valid_base_register_p (rtx x, enum machine_mode mode, int strict)
x = SUBREG_REG (x);
return (GET_CODE (x) == REG
- && mips_reg_mode_ok_for_base_p (x, mode, strict));
+ && mips_regno_mode_ok_for_base_p (REGNO (x), mode, strict));
}
@@ -1160,8 +1224,13 @@ mips_address_insns (rtx x, enum machine_mode mode)
struct mips_address_info addr;
int factor;
- /* Each word of a multi-word value will be accessed individually. */
- factor = (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+ if (mode == BLKmode)
+ /* BLKmode is used for single unaligned loads and stores. */
+ factor = 1;
+ else
+ /* Each word of a multi-word value will be accessed individually. */
+ factor = (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+
if (mips_classify_address (&addr, x, mode, false))
switch (addr.type)
{
@@ -1648,17 +1717,19 @@ mips_unspec_address (rtx address, enum mips_symbol_type symbol_type)
/* If mips_unspec_address (ADDR, SYMBOL_TYPE) is a 32-bit value, add the
high part to BASE and return the result. Just return BASE otherwise.
+ TEMP is available as a temporary register if needed.
The returned expression can be used as the first operand to a LO_SUM. */
static rtx
-mips_unspec_offset_high (rtx base, rtx addr, enum mips_symbol_type symbol_type)
+mips_unspec_offset_high (rtx temp, rtx base, rtx addr,
+ enum mips_symbol_type symbol_type)
{
if (mips_split_p[symbol_type])
{
addr = gen_rtx_HIGH (Pmode, mips_unspec_address (addr, symbol_type));
- base = force_reg (Pmode, expand_simple_binop (Pmode, PLUS, base, addr,
- NULL, 0, OPTAB_WIDEN));
+ addr = mips_force_temporary (temp, addr);
+ return mips_force_temporary (temp, gen_rtx_PLUS (Pmode, addr, base));
}
return base;
}
@@ -3192,6 +3263,35 @@ mips_gen_conditional_trap (rtx *operands)
operands[1]));
}
+/* Load function address ADDR into register DEST. SIBCALL_P is true
+ if the address is needed for a sibling call. */
+
+static void
+mips_load_call_address (rtx dest, rtx addr, int sibcall_p)
+{
+ /* If we're generating PIC, and this call is to a global function,
+ try to allow its address to be resolved lazily. This isn't
+ possible for NewABI sibcalls since the value of $gp on entry
+ to the stub would be our caller's gp, not ours. */
+ if (TARGET_EXPLICIT_RELOCS
+ && !(sibcall_p && TARGET_NEWABI)
+ && global_got_operand (addr, VOIDmode))
+ {
+ rtx high, lo_sum_symbol;
+
+ high = mips_unspec_offset_high (dest, pic_offset_table_rtx,
+ addr, SYMBOL_GOTOFF_CALL);
+ lo_sum_symbol = mips_unspec_address (addr, SYMBOL_GOTOFF_CALL);
+ if (Pmode == SImode)
+ emit_insn (gen_load_callsi (dest, high, lo_sum_symbol));
+ else
+ emit_insn (gen_load_calldi (dest, high, lo_sum_symbol));
+ }
+ else
+ emit_move_insn (dest, addr);
+}
+
+
/* Expand a call or call_value instruction. RESULT is where the
result will go (null for calls), ADDR is the address of the
function, ARGS_SIZE is the size of the arguments and AUX is
@@ -3202,55 +3302,46 @@ mips_gen_conditional_trap (rtx *operands)
void
mips_expand_call (rtx result, rtx addr, rtx args_size, rtx aux, int sibcall_p)
{
+ rtx orig_addr, pattern, insn;
+
+ orig_addr = addr;
if (!call_insn_operand (addr, VOIDmode))
{
- /* If we're generating PIC, and this call is to a global function,
- try to allow its address to be resolved lazily. This isn't
- possible for NewABI sibcalls since the value of $gp on entry
- to the stub would be our caller's gp, not ours. */
- if (TARGET_EXPLICIT_RELOCS
- && !(sibcall_p && TARGET_NEWABI)
- && global_got_operand (addr, VOIDmode))
- {
- rtx high, lo_sum_symbol;
-
- high = mips_unspec_offset_high (pic_offset_table_rtx,
- addr, SYMBOL_GOTOFF_CALL);
- lo_sum_symbol = mips_unspec_address (addr, SYMBOL_GOTOFF_CALL);
- addr = gen_reg_rtx (Pmode);
- if (Pmode == SImode)
- emit_insn (gen_load_callsi (addr, high, lo_sum_symbol));
- else
- emit_insn (gen_load_calldi (addr, high, lo_sum_symbol));
- }
- else
- addr = force_reg (Pmode, addr);
+ addr = gen_reg_rtx (Pmode);
+ mips_load_call_address (addr, orig_addr, sibcall_p);
}
if (TARGET_MIPS16
&& mips16_hard_float
&& build_mips16_call_stub (result, addr, args_size,
aux == 0 ? 0 : (int) GET_MODE (aux)))
- /* Nothing more to do */;
- else if (result == 0)
- emit_call_insn (sibcall_p
- ? gen_sibcall_internal (addr, args_size)
- : gen_call_internal (addr, args_size));
+ return;
+
+ if (result == 0)
+ pattern = (sibcall_p
+ ? gen_sibcall_internal (addr, args_size)
+ : gen_call_internal (addr, args_size));
else if (GET_CODE (result) == PARALLEL && XVECLEN (result, 0) == 2)
{
rtx reg1, reg2;
reg1 = XEXP (XVECEXP (result, 0, 0), 0);
reg2 = XEXP (XVECEXP (result, 0, 1), 0);
- emit_call_insn
+ pattern =
(sibcall_p
? gen_sibcall_value_multiple_internal (reg1, addr, args_size, reg2)
: gen_call_value_multiple_internal (reg1, addr, args_size, reg2));
}
else
- emit_call_insn (sibcall_p
- ? gen_sibcall_value_internal (result, addr, args_size)
- : gen_call_value_internal (result, addr, args_size));
+ pattern = (sibcall_p
+ ? gen_sibcall_value_internal (result, addr, args_size)
+ : gen_call_value_internal (result, addr, args_size));
+
+ insn = emit_call_insn (pattern);
+
+ /* Lazy-binding stubs require $gp to be valid on entry. */
+ if (global_got_operand (orig_addr, VOIDmode))
+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx);
}
@@ -5704,17 +5795,20 @@ mips_output_lineno (FILE *stream, int line)
}
}
-/* Output an ASCII string, in a space-saving way. */
+/* Output an ASCII string, in a space-saving way. PREFIX is the string
+ that should be written before the opening quote, such as "\t.ascii\t"
+ for real string data or "\t# " for a comment. */
void
-mips_output_ascii (FILE *stream, const char *string_param, size_t len)
+mips_output_ascii (FILE *stream, const char *string_param, size_t len,
+ const char *prefix)
{
size_t i;
int cur_pos = 17;
register const unsigned char *string =
(const unsigned char *)string_param;
- fprintf (stream, "\t.ascii\t\"");
+ fprintf (stream, "%s\"", prefix);
for (i = 0; i < len; i++)
{
register int c = string[i];
@@ -5774,7 +5868,7 @@ mips_output_ascii (FILE *stream, const char *string_param, size_t len)
if (cur_pos > 72 && i+1 < len)
{
cur_pos = 17;
- fprintf (stream, "\"\n\t.ascii\t\"");
+ fprintf (stream, "\"\n%s\"", prefix);
}
}
fprintf (stream, "\"\n");
@@ -5910,17 +6004,63 @@ mips_file_end (void)
}
}
+/* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON. This is usually the same as
+ the elfos.h version, but we also need to handle -muninit-const-in-rodata
+ and the limitations of the SGI o32 assembler. */
+
+void
+mips_output_aligned_decl_common (FILE *stream, tree decl, const char *name,
+ unsigned HOST_WIDE_INT size,
+ unsigned int align)
+{
+ /* If the target wants uninitialized const declarations in
+ .rdata then don't put them in .comm. */
+ if (TARGET_EMBEDDED_DATA && TARGET_UNINIT_CONST_IN_RODATA
+ && TREE_CODE (decl) == VAR_DECL && TREE_READONLY (decl)
+ && (DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node))
+ {
+ if (TREE_PUBLIC (decl) && DECL_NAME (decl))
+ targetm.asm_out.globalize_label (stream, name);
+
+ readonly_data_section ();
+ ASM_OUTPUT_ALIGN (stream, floor_log2 (align / BITS_PER_UNIT));
+ mips_declare_object (stream, name, "",
+ ":\n\t.space\t" HOST_WIDE_INT_PRINT_UNSIGNED "\n",
+ size);
+ }
+ else if (TARGET_SGI_O32_AS)
+ {
+ /* The SGI o32 assembler doesn't accept an alignment, so round up
+ the size instead. */
+ size += (align / BITS_PER_UNIT) - 1;
+ size -= size % (align / BITS_PER_UNIT);
+ mips_declare_object (stream, name, "\n\t.comm\t",
+ "," HOST_WIDE_INT_PRINT_UNSIGNED "\n", size);
+ }
+ else
+ mips_declare_object (stream, name, "\n\t.comm\t",
+ "," HOST_WIDE_INT_PRINT_UNSIGNED ",%u\n",
+ size, align / BITS_PER_UNIT);
+}
+
/* Emit either a label, .comm, or .lcomm directive. When using assembler
macros, mark the symbol as written so that mips_file_end won't emit an
- .extern for it. */
+ .extern for it. STREAM is the output file, NAME is the name of the
+ symbol, INIT_STRING is the string that should be written before the
+ symbol and FINAL_STRING is the string that shoulbe written after it.
+ FINAL_STRING is a printf() format that consumes the remaining arguments. */
void
mips_declare_object (FILE *stream, const char *name, const char *init_string,
- const char *final_string, int size)
+ const char *final_string, ...)
{
- fputs (init_string, stream); /* "", "\t.comm\t", or "\t.lcomm\t" */
+ va_list ap;
+
+ fputs (init_string, stream);
assemble_name (stream, name);
- fprintf (stream, final_string, size); /* ":\n", ",%u\n", ",%u\n" */
+ va_start (ap, final_string);
+ vfprintf (stream, final_string, ap);
+ va_end (ap);
if (!TARGET_EXPLICIT_RELOCS)
{
@@ -6466,6 +6606,38 @@ mips_for_each_saved_reg (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
#undef BITSET_P
}
+/* If we're generating n32 or n64 abicalls, and the current function
+ does not use $28 as its global pointer, emit a cplocal directive.
+ Use pic_offset_table_rtx as the argument to the directive. */
+
+static void
+mips_output_cplocal (void)
+{
+ if (!TARGET_EXPLICIT_RELOCS
+ && cfun->machine->global_pointer > 0
+ && cfun->machine->global_pointer != GLOBAL_POINTER_REGNUM)
+ output_asm_insn (".cplocal %+", 0);
+}
+
+/* If we're generating n32 or n64 abicalls, emit instructions
+ to set up the global pointer. */
+
+static void
+mips_emit_loadgp (void)
+{
+ if (TARGET_ABICALLS && TARGET_NEWABI && cfun->machine->global_pointer > 0)
+ {
+ rtx addr, offset, incoming_address;
+
+ addr = XEXP (DECL_RTL (current_function_decl), 0);
+ offset = mips_unspec_address (addr, SYMBOL_GOTOFF_LOADGP);
+ incoming_address = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM);
+ emit_insn (gen_loadgp (offset, incoming_address));
+ if (!TARGET_EXPLICIT_RELOCS)
+ emit_insn (gen_loadgp_blockage ());
+ }
+}
+
/* Set up the stack and frame (if desired) for the function. */
static void
@@ -6554,6 +6726,11 @@ mips_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
}
else if (cfun->machine->all_noreorder_p)
output_asm_insn ("%(%<", 0);
+
+ /* Tell the assembler which register we're using as the global
+ pointer. This is needed for thunks, since they can use either
+ explicit relocs or assembler macros. */
+ mips_output_cplocal ();
}
/* Make the last instruction frame related and note that it performs
@@ -6709,18 +6886,7 @@ mips_expand_prologue (void)
if (TARGET_ABICALLS && !TARGET_NEWABI && !current_function_is_leaf)
emit_insn (gen_cprestore (GEN_INT (current_function_outgoing_args_size)));
- /* If generating n32/n64 abicalls, emit the instructions to load $gp. */
- if (TARGET_ABICALLS && TARGET_NEWABI && cfun->machine->global_pointer > 0)
- {
- rtx addr, offset, incoming_address;
-
- addr = XEXP (DECL_RTL (current_function_decl), 0);
- offset = mips_unspec_address (addr, SYMBOL_GOTOFF_LOADGP);
- incoming_address = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM);
- emit_insn (gen_loadgp (offset, incoming_address));
- if (!TARGET_EXPLICIT_RELOCS)
- emit_insn (gen_loadgp_blockage ());
- }
+ mips_emit_loadgp ();
/* If we are profiling, make sure no instructions are scheduled before
the call to mcount. */
@@ -6741,6 +6907,10 @@ mips_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
{
rtx string;
+ /* Reinstate the normal $gp. */
+ REGNO (pic_offset_table_rtx) = GLOBAL_POINTER_REGNUM;
+ mips_output_cplocal ();
+
if (cfun->machine->all_noreorder_p)
{
/* Avoid using %>%) since it adds excess whitespace. */
@@ -6781,9 +6951,6 @@ mips_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
for (string = mips16_strings; string != 0; string = XEXP (string, 1))
SYMBOL_REF_FLAG (XEXP (string, 0)) = 0;
free_EXPR_LIST_list (&mips16_strings);
-
- /* Reinstate the normal $gp. */
- REGNO (pic_offset_table_rtx) = GLOBAL_POINTER_REGNUM;
}
/* Emit instructions to restore register REG from slot MEM. */
@@ -6954,6 +7121,132 @@ mips_can_use_return_insn (void)
return compute_frame_size (get_frame_size ()) == 0;
}
+/* Implement TARGET_ASM_OUTPUT_MI_THUNK. Generate rtl rather than asm text
+ in order to avoid duplicating too much logic from elsewhere. */
+
+static void
+mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
+ HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset,
+ tree function)
+{
+ rtx this, temp1, temp2, insn, fnaddr;
+
+ /* Pretend to be a post-reload pass while generating rtl. */
+ no_new_pseudos = 1;
+ reload_completed = 1;
+
+ /* Pick a global pointer for -mabicalls. Use $15 rather than $28
+ for TARGET_NEWABI since the latter is a call-saved register. */
+ if (TARGET_ABICALLS)
+ cfun->machine->global_pointer
+ = REGNO (pic_offset_table_rtx)
+ = TARGET_NEWABI ? 15 : GLOBAL_POINTER_REGNUM;
+
+ /* Set up the global pointer for n32 or n64 abicalls. */
+ mips_emit_loadgp ();
+
+ /* We need two temporary registers in some cases. */
+ temp1 = gen_rtx_REG (Pmode, 2);
+ temp2 = gen_rtx_REG (Pmode, 3);
+
+ /* Find out which register contains the "this" pointer. */
+ if (aggregate_value_p (TREE_TYPE (TREE_TYPE (function)), function))
+ this = gen_rtx_REG (Pmode, GP_ARG_FIRST + 1);
+ else
+ this = gen_rtx_REG (Pmode, GP_ARG_FIRST);
+
+ /* Add DELTA to THIS. */
+ if (delta != 0)
+ {
+ rtx offset = GEN_INT (delta);
+ if (!SMALL_OPERAND (delta))
+ {
+ emit_move_insn (temp1, offset);
+ offset = temp1;
+ }
+ emit_insn (gen_add3_insn (this, this, offset));
+ }
+
+ /* If needed, add *(*THIS + VCALL_OFFSET) to THIS. */
+ if (vcall_offset != 0)
+ {
+ rtx addr;
+
+ /* Set TEMP1 to *THIS. */
+ emit_move_insn (temp1, gen_rtx_MEM (Pmode, this));
+
+ /* Set ADDR to a legitimate address for *THIS + VCALL_OFFSET. */
+ if (SMALL_OPERAND (vcall_offset))
+ addr = gen_rtx_PLUS (Pmode, temp1, GEN_INT (vcall_offset));
+ else if (TARGET_MIPS16)
+ {
+ /* Load the full offset into a register so that we can use
+ an unextended instruction for the load itself. */
+ emit_move_insn (temp2, GEN_INT (vcall_offset));
+ emit_insn (gen_add3_insn (temp1, temp1, temp2));
+ addr = temp1;
+ }
+ else
+ {
+ /* Load the high part of the offset into a register and
+ leave the low part for the address. */
+ emit_move_insn (temp2, GEN_INT (CONST_HIGH_PART (vcall_offset)));
+ emit_insn (gen_add3_insn (temp1, temp1, temp2));
+ addr = gen_rtx_PLUS (Pmode, temp1,
+ GEN_INT (CONST_LOW_PART (vcall_offset)));
+ }
+
+ /* Load the offset and add it to THIS. */
+ emit_move_insn (temp1, gen_rtx_MEM (Pmode, addr));
+ emit_insn (gen_add3_insn (this, this, temp1));
+ }
+
+ /* Jump to the target function. Use a sibcall if direct jumps are
+ allowed, otherwise load the address into a register first. */
+ fnaddr = XEXP (DECL_RTL (function), 0);
+ if (TARGET_MIPS16 || TARGET_ABICALLS || TARGET_LONG_CALLS)
+ {
+ /* This is messy. gas treats "la $25,foo" as part of a call
+ sequence and may allow a global "foo" to be lazily bound.
+ The general move patterns therefore reject this combination.
+
+ In this context, lazy binding would actually be OK for o32 and o64,
+ but it's still wrong for n32 and n64; see mips_load_call_address.
+ We must therefore load the address via a temporary register if
+ mips_dangerous_for_la25_p.
+
+ If we jump to the temporary register rather than $25, the assembler
+ can use the move insn to fill the jump's delay slot. */
+ if (TARGET_ABICALLS && !mips_dangerous_for_la25_p (fnaddr))
+ temp1 = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM);
+ mips_load_call_address (temp1, fnaddr, true);
+
+ if (TARGET_ABICALLS && REGNO (temp1) != PIC_FUNCTION_ADDR_REGNUM)
+ emit_move_insn (gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM), temp1);
+ emit_jump_insn (gen_indirect_jump (temp1));
+ }
+ else
+ {
+ insn = emit_call_insn (gen_sibcall_internal (fnaddr, const0_rtx));
+ SIBLING_CALL_P (insn) = 1;
+ }
+
+ /* Run just enough of rest_of_compilation. This sequence was
+ "borrowed" from alpha.c. */
+ insn = get_insns ();
+ insn_locators_initialize ();
+ split_all_insns_noflow ();
+ shorten_branches (insn);
+ final_start_function (insn, file, 1);
+ final (insn, file, 1, 0);
+ final_end_function ();
+
+ /* Clean up the vars set above. Note that final_end_function resets
+ the global pointer for us. */
+ reload_completed = 0;
+ no_new_pseudos = 0;
+}
+
/* Returns nonzero if X contains a SYMBOL_REF. */
static int
@@ -8042,223 +8335,6 @@ build_mips16_call_stub (rtx retval, rtx fn, rtx arg_size, int fp_code)
return 0;
}
-/* This function looks through the code for a function, and tries to
- optimize the usage of the $gp register. We arrange to copy $gp
- into a pseudo-register, and then let gcc's normal reload handling
- deal with the pseudo-register. Unfortunately, if reload choose to
- put the pseudo-register into a call-clobbered register, it will
- emit saves and restores for that register around any function
- calls. We don't need the saves, and it's faster to copy $gp than
- to do an actual restore. ??? This still means that we waste a
- stack slot.
-
- This is an optimization, and the code which gcc has actually
- generated is correct, so we do not need to catch all cases. */
-
-static void
-mips16_optimize_gp (void)
-{
- rtx gpcopy, slot, insn;
-
- /* Look through the instructions. Set GPCOPY to the register which
- holds a copy of $gp. Set SLOT to the stack slot where it is
- saved. If we find an instruction which sets GPCOPY to anything
- other than $gp or SLOT, then we can't use it. If we find an
- instruction which sets SLOT to anything other than GPCOPY, we
- can't use it. */
-
- gpcopy = NULL_RTX;
- slot = NULL_RTX;
- for (insn = get_insns (); insn != NULL_RTX; insn = next_active_insn (insn))
- {
- rtx set;
-
- if (! INSN_P (insn))
- continue;
-
- set = PATTERN (insn);
-
- /* We know that all references to memory will be inside a SET,
- because there is no other way to access memory on the mips16.
- We don't have to worry about a PARALLEL here, because the
- mips.md file will never generate them for memory references. */
- if (GET_CODE (set) != SET)
- continue;
-
- if (gpcopy == NULL_RTX
- && GET_CODE (SET_SRC (set)) == CONST
- && XEXP (SET_SRC (set), 0) == pic_offset_table_rtx
- && GET_CODE (SET_DEST (set)) == REG)
- gpcopy = SET_DEST (set);
- else if (slot == NULL_RTX
- && gpcopy != NULL_RTX
- && GET_CODE (SET_DEST (set)) == MEM
- && GET_CODE (SET_SRC (set)) == REG
- && REGNO (SET_SRC (set)) == REGNO (gpcopy))
- {
- rtx base, offset;
-
- offset = const0_rtx;
- base = eliminate_constant_term (XEXP (SET_DEST (set), 0), &offset);
- if (GET_CODE (base) == REG
- && (REGNO (base) == STACK_POINTER_REGNUM
- || REGNO (base) == FRAME_POINTER_REGNUM))
- slot = SET_DEST (set);
- }
- else if (gpcopy != NULL_RTX
- && (GET_CODE (SET_DEST (set)) == REG
- || GET_CODE (SET_DEST (set)) == SUBREG)
- && reg_overlap_mentioned_p (SET_DEST (set), gpcopy)
- && (GET_CODE (SET_DEST (set)) != REG
- || REGNO (SET_DEST (set)) != REGNO (gpcopy)
- || ((GET_CODE (SET_SRC (set)) != CONST
- || XEXP (SET_SRC (set), 0) != pic_offset_table_rtx)
- && ! rtx_equal_p (SET_SRC (set), slot))))
- break;
- else if (slot != NULL_RTX
- && GET_CODE (SET_DEST (set)) == MEM
- && rtx_equal_p (SET_DEST (set), slot)
- && (GET_CODE (SET_SRC (set)) != REG
- || REGNO (SET_SRC (set)) != REGNO (gpcopy)))
- break;
- }
-
- /* If we couldn't find a unique value for GPCOPY or SLOT, then try a
- different optimization. Any time we find a copy of $28 into a
- register, followed by an add of a symbol_ref to that register, we
- convert it to load the value from the constant table instead.
- The copy and add will take six bytes, just as the load and
- constant table entry will take six bytes. However, it is
- possible that the constant table entry will be shared.
-
- This could be a peephole optimization, but I don't know if the
- peephole code can call force_const_mem.
-
- Using the same register for the copy of $28 and the add of the
- symbol_ref is actually pretty likely, since the add instruction
- requires the destination and the first addend to be the same
- register. */
-
- if (insn != NULL_RTX || gpcopy == NULL_RTX || slot == NULL_RTX)
- {
-#if 0
- /* Used below in #if 0 area. */
- rtx next;
-#endif
- /* This optimization is only reasonable if the constant table
- entries are only 4 bytes. */
- if (Pmode != SImode)
- return;
-
-#if 0
- /* ??? FIXME. Rewrite for new UNSPEC_RELOC stuff. */
- for (insn = get_insns (); insn != NULL_RTX; insn = next)
- {
- rtx set1, set2;
-
- next = insn;
- do
- {
- next = NEXT_INSN (next);
- }
- while (next != NULL_RTX
- && (GET_CODE (next) == NOTE
- || (GET_CODE (next) == INSN
- && (GET_CODE (PATTERN (next)) == USE
- || GET_CODE (PATTERN (next)) == CLOBBER))));
-
- if (next == NULL_RTX)
- break;
-
- if (! INSN_P (insn))
- continue;
-
- if (! INSN_P (next))
- continue;
-
- set1 = PATTERN (insn);
- if (GET_CODE (set1) != SET)
- continue;
- set2 = PATTERN (next);
- if (GET_CODE (set2) != SET)
- continue;
-
- if (GET_CODE (SET_DEST (set1)) == REG
- && GET_CODE (SET_SRC (set1)) == CONST
- && XEXP (SET_SRC (set1), 0) == pic_offset_table_rtx
- && rtx_equal_p (SET_DEST (set1), SET_DEST (set2))
- && GET_CODE (SET_SRC (set2)) == PLUS
- && rtx_equal_p (SET_DEST (set1), XEXP (SET_SRC (set2), 0))
- && mips16_gp_offset_p (XEXP (SET_SRC (set2), 1))
- && GET_CODE (XEXP (XEXP (SET_SRC (set2), 1), 0)) == MINUS)
- {
- rtx sym;
-
- /* We've found a case we can change to load from the
- constant table. */
-
- sym = XEXP (XEXP (XEXP (SET_SRC (set2), 1), 0), 0);
- if (GET_CODE (sym) != SYMBOL_REF)
- abort ();
- emit_insn_after (gen_rtx (SET, VOIDmode, SET_DEST (set1),
- force_const_mem (Pmode, sym)),
- next);
-
- PUT_CODE (insn, NOTE);
- NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
- NOTE_SOURCE_FILE (insn) = 0;
-
- PUT_CODE (next, NOTE);
- NOTE_LINE_NUMBER (next) = NOTE_INSN_DELETED;
- NOTE_SOURCE_FILE (next) = 0;
- }
- }
-#endif
-
- return;
- }
- /* We can safely remove all assignments to SLOT from GPCOPY, and
- replace all assignments from SLOT to GPCOPY with assignments from
- $28. */
-
- for (insn = get_insns (); insn != NULL_RTX; insn = next_active_insn (insn))
- {
- rtx set;
-
- if (! INSN_P (insn))
- continue;
-
- set = PATTERN (insn);
- if (GET_CODE (set) != SET)
- continue;
-
- if (GET_CODE (SET_DEST (set)) == MEM
- && rtx_equal_p (SET_DEST (set), slot)
- && GET_CODE (SET_SRC (set)) == REG
- && REGNO (SET_SRC (set)) == REGNO (gpcopy))
- {
- PUT_CODE (insn, NOTE);
- NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
- NOTE_SOURCE_FILE (insn) = 0;
- }
- else if (GET_CODE (SET_DEST (set)) == REG
- && REGNO (SET_DEST (set)) == REGNO (gpcopy)
- && GET_CODE (SET_SRC (set)) == MEM
- && rtx_equal_p (SET_SRC (set), slot))
- {
- enum machine_mode mode;
- rtx src;
-
- mode = GET_MODE (SET_DEST (set));
- src = gen_rtx_CONST (mode, pic_offset_table_rtx);
- emit_insn_after (gen_rtx_SET (VOIDmode, SET_DEST (set), src), insn);
- PUT_CODE (insn, NOTE);
- NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
- NOTE_SOURCE_FILE (insn) = 0;
- }
- }
-}
-
/* We keep a list of constants we which we have to add to internal
constant tables in the middle of large functions. */
@@ -8707,11 +8783,7 @@ static void
mips_reorg (void)
{
if (TARGET_MIPS16)
- {
- if (optimize)
- mips16_optimize_gp ();
- mips16_lay_out_constants ();
- }
+ mips16_lay_out_constants ();
else if (TARGET_EXPLICIT_RELOCS)
{
if (mips_flag_delayed_branch)
@@ -9108,7 +9180,7 @@ mips_output_conditional_branch (rtx insn, rtx *operands, int two_operands_p,
/* Output delay slot instruction. */
rtx insn = final_sequence;
final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file,
- optimize, 0, 1);
+ optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
else
@@ -9127,7 +9199,7 @@ mips_output_conditional_branch (rtx insn, rtx *operands, int two_operands_p,
/* Output delay slot instruction. */
rtx insn = final_sequence;
final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file,
- optimize, 0, 1);
+ optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
else
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 049933a6a86..857864fa17f 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -290,9 +290,22 @@ extern const struct mips_cpu_info *mips_tune_info;
(!TARGET_MIPS16 && (!TARGET_ABICALLS || TARGET_EXPLICIT_RELOCS))
/* True if .gpword or .gpdword should be used for switch tables.
- Not all SGI assemblers support this. */
+ There are some problems with using these directives with the
+ native IRIX tools:
-#define TARGET_GPWORD (TARGET_ABICALLS && (!TARGET_NEWABI || TARGET_GAS))
+ - It has been reported that some versions of the native n32
+ assembler mishandle .gpword, complaining that symbols are
+ global when they are in fact local.
+
+ - The native assemblers don't understand .gpdword.
+
+ - Although GAS does understand .gpdword, the native linker
+ mishandles the relocations GAS generates (R_MIPS_GPREL32
+ followed by R_MIPS_64).
+
+ We therefore disable GP-relative switch tables for n32 and n64
+ on IRIX targets. */
+#define TARGET_GPWORD (TARGET_ABICALLS && !(TARGET_NEWABI && TARGET_IRIX))
/* Generate mips16 code */
#define TARGET_MIPS16 (target_flags & MASK_MIPS16)
@@ -1474,8 +1487,11 @@ extern const struct mips_cpu_info *mips_tune_info;
- 8 condition code registers
- 2 accumulator registers (hi and lo)
- 32 registers each for coprocessors 0, 2 and 3
- - FAKE_CALL_REGNO (see the comment above load_callsi for details)
- - 5 dummy entries that were used at various times in the past. */
+ - 3 fake registers:
+ - ARG_POINTER_REGNUM
+ - FRAME_POINTER_REGNUM
+ - FAKE_CALL_REGNO (see the comment above load_callsi for details)
+ - 3 dummy entries that were used at various times in the past. */
#define FIRST_PSEUDO_REGISTER 176
@@ -1661,11 +1677,10 @@ extern char mips_hard_regno_mode_ok[][FIRST_PSEUDO_REGISTER];
/* Register to use for pushing function arguments. */
#define STACK_POINTER_REGNUM (GP_REG_FIRST + 29)
-/* Base register for access to local variables of the function. We
- pretend that the frame pointer is $1, and then eliminate it to
- HARD_FRAME_POINTER_REGNUM. We can get away with this because $1 is
- a fixed register, and will not be used for anything else. */
-#define FRAME_POINTER_REGNUM (GP_REG_FIRST + 1)
+/* These two registers don't really exist: they get eliminated to either
+ the stack or hard frame pointer. */
+#define ARG_POINTER_REGNUM 77
+#define FRAME_POINTER_REGNUM 78
/* $30 is not available on the mips16, so we use $17 as the frame
pointer. */
@@ -1678,9 +1693,6 @@ extern char mips_hard_regno_mode_ok[][FIRST_PSEUDO_REGISTER];
This is computed in `reload', in reload1.c. */
#define FRAME_POINTER_REQUIRED (current_function_calls_alloca)
-/* Base register for access to arguments of the function. */
-#define ARG_POINTER_REGNUM GP_REG_FIRST
-
/* Register in which static-chain is passed to a function. */
#define STATIC_CHAIN_REGNUM (GP_REG_FIRST + 2)
@@ -2510,31 +2522,9 @@ typedef struct mips_args {
/* Addressing modes, and classification of registers for them. */
-/* These assume that REGNO is a hard or pseudo reg number.
- They give nonzero only if REGNO is a hard reg of the suitable class
- or a pseudo reg currently allocated to a suitable hard reg.
- These definitions are NOT overridden anywhere. */
-
-#define BASE_REG_P(regno, mode) \
- (TARGET_MIPS16 \
- ? (M16_REG_P (regno) \
- || (regno) == FRAME_POINTER_REGNUM \
- || (regno) == ARG_POINTER_REGNUM \
- || ((regno) == STACK_POINTER_REGNUM \
- && (GET_MODE_SIZE (mode) == 4 \
- || GET_MODE_SIZE (mode) == 8))) \
- : GP_REG_P (regno))
-
-#define GP_REG_OR_PSEUDO_STRICT_P(regno, mode) \
- BASE_REG_P((regno < FIRST_PSEUDO_REGISTER) ? (int) regno : reg_renumber[regno], \
- (mode))
-
-#define GP_REG_OR_PSEUDO_NONSTRICT_P(regno, mode) \
- (((regno) >= FIRST_PSEUDO_REGISTER) || (BASE_REG_P ((regno), (mode))))
-
-#define REGNO_OK_FOR_INDEX_P(regno) 0
-#define REGNO_MODE_OK_FOR_BASE_P(regno, mode) \
- GP_REG_OR_PSEUDO_STRICT_P ((regno), (mode))
+#define REGNO_OK_FOR_INDEX_P(REGNO) 0
+#define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE) \
+ mips_regno_mode_ok_for_base_p (REGNO, MODE, 1)
/* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
and check its validity for a certain class.
@@ -2549,10 +2539,10 @@ typedef struct mips_args {
#ifndef REG_OK_STRICT
#define REG_MODE_OK_FOR_BASE_P(X, MODE) \
- mips_reg_mode_ok_for_base_p (X, MODE, 0)
+ mips_regno_mode_ok_for_base_p (REGNO (X), MODE, 0)
#else
#define REG_MODE_OK_FOR_BASE_P(X, MODE) \
- mips_reg_mode_ok_for_base_p (X, MODE, 1)
+ mips_regno_mode_ok_for_base_p (REGNO (X), MODE, 1)
#endif
#define REG_OK_FOR_INDEX_P(X) 0
@@ -3216,28 +3206,7 @@ while (0)
/* This says how to define a global common symbol. */
-#define ASM_OUTPUT_ALIGNED_DECL_COMMON(STREAM, DECL, NAME, SIZE, ALIGN) \
- do { \
- /* If the target wants uninitialized const declarations in \
- .rdata then don't put them in .comm */ \
- if (TARGET_EMBEDDED_DATA && TARGET_UNINIT_CONST_IN_RODATA \
- && TREE_CODE (DECL) == VAR_DECL && TREE_READONLY (DECL) \
- && (DECL_INITIAL (DECL) == 0 \
- || DECL_INITIAL (DECL) == error_mark_node)) \
- { \
- if (TREE_PUBLIC (DECL) && DECL_NAME (DECL)) \
- (*targetm.asm_out.globalize_label) (STREAM, NAME); \
- \
- readonly_data_section (); \
- ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT)); \
- mips_declare_object (STREAM, NAME, "", ":\n\t.space\t%u\n", \
- (SIZE)); \
- } \
- else \
- mips_declare_object (STREAM, NAME, "\n\t.comm\t", ",%u\n", \
- (SIZE)); \
- } while (0)
-
+#define ASM_OUTPUT_ALIGNED_DECL_COMMON mips_output_aligned_decl_common
/* This says how to define a local common symbol (ie, not visible to
linker). */
@@ -3338,7 +3307,7 @@ do { \
/* This is how to output a string. */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(STREAM, STRING, LEN) \
- mips_output_ascii (STREAM, STRING, LEN)
+ mips_output_ascii (STREAM, STRING, LEN, "\t.ascii\t")
/* Output #ident as a in the read-only data section. */
#undef ASM_OUTPUT_IDENT
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 2b39f3a05fd..6054595154a 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -1,6 +1,6 @@
;; Mips.md Machine Description for MIPS based processors
;; Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by A. Lichnewsky, lich@inria.inria.fr
;; Changes by Michael Meissner, meissner@osf.org
;; 64 bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
@@ -976,7 +976,7 @@
(define_insn "adddi3_internal_2"
[(set (match_operand:DI 0 "register_operand" "=d,d,d")
- (plus:DI (match_operand:DI 1 "register_operand" "%d,%d,%d")
+ (plus:DI (match_operand:DI 1 "register_operand" "%d,d,d")
(match_operand:DI 2 "small_int" "P,J,N")))
(clobber (match_operand:SI 3 "register_operand" "=d,d,d"))]
"!TARGET_64BIT && !TARGET_DEBUG_G_MODE && !TARGET_MIPS16"
@@ -4058,6 +4058,10 @@ dsrl\t%3,%3,1\n\
;; refers to just the first or the last byte (depending on endianness).
;; We therefore use two memory operands to each instruction, one to
;; describe the rtl effect and one to use in the assembly output.
+;;
+;; Operands 0 and 1 are the rtl-level target and source respectively.
+;; This allows us to use the standard length calculations for the "load"
+;; and "store" type attributes.
(define_insn "mov_lwl"
[(set (match_operand:SI 0 "register_operand" "=d")
@@ -8123,8 +8127,15 @@ srl\t%M0,%M1,%2\n\
(clobber (match_operand:SI 2 "register_operand" "=d"))
(clobber (reg:SI 31))]
"TARGET_EMBEDDED_PIC"
- "%(bal\t%S1\;sll\t%2,%0,2\n%~%S1:\;addu\t%2,%2,$31%)\;\
-lw\t%2,%1-%S1(%2)\;addu\t%2,%2,$31\;%*j\t%2%/"
+ {
+ if (set_nomacro)
+ return "%(bal\\t%S1\;sll\\t%2,%0,2\\n%~%S1:\;addu\\t%2,%2,$31%)\;\\
+.set macro\;lw\\t%2,%1-%S1(%2)\;.set nomacro\;addu\\t%2,%2,$31\\n\\t%*j\\t%2%/";
+ return
+ "%(bal\\t%S1\;sll\\t%2,%0,2\\n%~%S1:\;addu\\t%2,%2,$31%)\;\\
+lw\\t%2,%1-%S1(%2)\;addu\\t%2,%2,$31\\n\\t%*j\\t%2%/"
+ ;
+ }
[(set_attr "type" "jump")
(set_attr "mode" "none")
(set_attr "length" "24")])
@@ -8140,8 +8151,15 @@ lw\t%2,%1-%S1(%2)\;addu\t%2,%2,$31\;%*j\t%2%/"
(clobber (match_operand:DI 2 "register_operand" "=d"))
(clobber (reg:DI 31))]
"TARGET_EMBEDDED_PIC"
- "%(bal\t%S1\;sll\t%2,%0,3\n%~%S1:\;daddu\t%2,%2,$31%)\;\
-ld\t%2,%1-%S1(%2)\;daddu\t%2,%2,$31\;%*j\t%2%/"
+ {
+ if (set_nomacro)
+ return "%(bal\\t%S1\;sll\\t%2,%0,3\\n%~%S1:\;daddu\\t%2,%2,$31%)\;\\
+.set macro\;ld\\t%2,%1-%S1(%2)\;.set nomacro\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2%/";
+ return
+ "%(bal\\t%S1\;sll\\t%2,%0,3\\n%~%S1:\;daddu\\t%2,%2,$31%)\;\\
+ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2%/"
+ ;
+ }
[(set_attr "type" "jump")
(set_attr "mode" "none")
(set_attr "length" "24")])
diff --git a/gcc/config/mips/netbsd.h b/gcc/config/mips/netbsd.h
index 24c88139937..9d75e8efbfc 100644
--- a/gcc/config/mips/netbsd.h
+++ b/gcc/config/mips/netbsd.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
- Copyright (C) 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mips/openbsd.h b/gcc/config/mips/openbsd.h
index bea4981073f..7faeeb5ec8d 100644
--- a/gcc/config/mips/openbsd.h
+++ b/gcc/config/mips/openbsd.h
@@ -1,5 +1,5 @@
/* Configuration for a Mips ABI32 OpenBSD target.
- Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/mips/t-iris5-as b/gcc/config/mips/t-iris5-as
index a1e48956a56..4e111fa75a0 100644
--- a/gcc/config/mips/t-iris5-as
+++ b/gcc/config/mips/t-iris5-as
@@ -5,3 +5,7 @@ BOOT_CFLAGS = -O2 -save-temps
# omit -g1
LIBGCC2_DEBUG_CFLAGS =
+
+# omit -g
+FORCE_DEBUG_ADAFLAGS =
+GNATLIBCFLAGS = -O2
diff --git a/gcc/config/mips/t-iris6gld b/gcc/config/mips/t-iris6gld
deleted file mode 100644
index 2926be0cb44..00000000000
--- a/gcc/config/mips/t-iris6gld
+++ /dev/null
@@ -1,9 +0,0 @@
-$(T)irix6-crti.o: $(srcdir)/config/mips/irix6-crti.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $@ -x assembler-with-cpp $<
-
-$(T)irix6-crtn.o: $(srcdir)/config/mips/irix6-crtn.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $@ -x assembler-with-cpp $<
-
-EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o irix6-crti.o irix6-crtn.o
diff --git a/gcc/config/mips/t-irix-gld b/gcc/config/mips/t-irix-gld
new file mode 100644
index 00000000000..1e7ceafaff9
--- /dev/null
+++ b/gcc/config/mips/t-irix-gld
@@ -0,0 +1,9 @@
+$(T)irix-crti.o: $(srcdir)/config/mips/irix-crti.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $@ -x assembler-with-cpp $<
+
+$(T)irix-crtn.o: $(srcdir)/config/mips/irix-crtn.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $@ -x assembler-with-cpp $<
+
+EXTRA_MULTILIB_PARTS += irix-crti.o irix-crtn.o
diff --git a/gcc/config/mips/windiss.h b/gcc/config/mips/windiss.h
index 32b92b61a36..0f8ef7e1663 100644
--- a/gcc/config/mips/windiss.h
+++ b/gcc/config/mips/windiss.h
@@ -1,5 +1,5 @@
/* Support for GCC on MIPS using WindISS simulator.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by CodeSourcery, LLC.
This file is part of GCC.
diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c
index 74aab427d71..e50611668c7 100644
--- a/gcc/config/mn10300/mn10300.c
+++ b/gcc/config/mn10300/mn10300.c
@@ -1,5 +1,5 @@
/* Subroutines for insn-output.c for Matsushita MN10300 series
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h
index 9aaf7ffc5ff..2f0a06fd311 100644
--- a/gcc/config/mn10300/mn10300.h
+++ b/gcc/config/mn10300/mn10300.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Matsushita MN10300 series
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h
index 9bf5e97e32c..848997e4d3e 100644
--- a/gcc/config/pa/pa-protos.h
+++ b/gcc/config/pa/pa-protos.h
@@ -1,5 +1,5 @@
/* Prototypes for pa.c functions used in the md file & elsewhere.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -137,7 +137,7 @@ extern struct rtx_def *hppa_builtin_saveregs (void);
extern void override_options (void);
extern void output_ascii (FILE *, const char *, int);
-extern int compute_frame_size (int, int *);
+extern HOST_WIDE_INT compute_frame_size (HOST_WIDE_INT, int *);
extern int and_mask_p (unsigned HOST_WIDE_INT);
extern int cint_ok_for_move (HOST_WIDE_INT);
extern void hppa_expand_prologue (void);
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 1f8622d30f4..1c994d5b2d1 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for HPPA.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Tim Moore (moore@cs.utah.edu), based on sparc.c
This file is part of GCC.
@@ -107,10 +107,10 @@ static int compute_movstr_length (rtx);
static int compute_clrstr_length (rtx);
static bool pa_assemble_integer (rtx, unsigned int, int);
static void remove_useless_addtr_insns (int);
-static void store_reg (int, int, int);
-static void store_reg_modify (int, int, int);
-static void load_reg (int, int, int);
-static void set_reg_plus_d (int, int, int, int);
+static void store_reg (int, HOST_WIDE_INT, int);
+static void store_reg_modify (int, int, HOST_WIDE_INT);
+static void load_reg (int, HOST_WIDE_INT, int);
+static void set_reg_plus_d (int, int, HOST_WIDE_INT, int);
static void pa_output_function_prologue (FILE *, HOST_WIDE_INT);
static void update_total_code_bytes (int);
static void pa_output_function_epilogue (FILE *, HOST_WIDE_INT);
@@ -1552,13 +1552,13 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
/* Handle secondary reloads for loads/stores of FP registers from
REG+D addresses where D does not fit in 5 bits, including
(subreg (mem (addr))) cases. */
- if (fp_reg_operand (operand0, mode)
+ if (scratch_reg
+ && fp_reg_operand (operand0, mode)
&& ((GET_CODE (operand1) == MEM
&& !memory_address_p (DFmode, XEXP (operand1, 0)))
|| ((GET_CODE (operand1) == SUBREG
&& GET_CODE (XEXP (operand1, 0)) == MEM
- && !memory_address_p (DFmode, XEXP (XEXP (operand1, 0), 0)))))
- && scratch_reg)
+ && !memory_address_p (DFmode, XEXP (XEXP (operand1, 0), 0))))))
{
if (GET_CODE (operand1) == SUBREG)
operand1 = XEXP (operand1, 0);
@@ -1585,14 +1585,14 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
gen_rtx_MEM (mode, scratch_reg)));
return 1;
}
- else if (fp_reg_operand (operand1, mode)
+ else if (scratch_reg
+ && fp_reg_operand (operand1, mode)
&& ((GET_CODE (operand0) == MEM
&& ! memory_address_p (DFmode, XEXP (operand0, 0)))
|| ((GET_CODE (operand0) == SUBREG)
&& GET_CODE (XEXP (operand0, 0)) == MEM
&& !memory_address_p (DFmode,
- XEXP (XEXP (operand0, 0), 0))))
- && scratch_reg)
+ XEXP (XEXP (operand0, 0), 0)))))
{
if (GET_CODE (operand0) == SUBREG)
operand0 = XEXP (operand0, 0);
@@ -1623,15 +1623,15 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
/* Handle secondary reloads for loads of FP registers from constant
expressions by forcing the constant into memory.
- use scratch_reg to hold the address of the memory location.
+ Use scratch_reg to hold the address of the memory location.
The proper fix is to change PREFERRED_RELOAD_CLASS to return
NO_REGS when presented with a const_int and a register class
containing only FP registers. Doing so unfortunately creates
more problems than it solves. Fix this for 2.5. */
- else if (fp_reg_operand (operand0, mode)
+ else if (scratch_reg
&& CONSTANT_P (operand1)
- && scratch_reg)
+ && fp_reg_operand (operand0, mode))
{
rtx xoperands[2];
@@ -1653,14 +1653,14 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
}
/* Handle secondary reloads for SAR. These occur when trying to load
the SAR from memory, FP register, or with a constant. */
- else if (GET_CODE (operand0) == REG
+ else if (scratch_reg
+ && GET_CODE (operand0) == REG
&& REGNO (operand0) < FIRST_PSEUDO_REGISTER
&& REGNO_REG_CLASS (REGNO (operand0)) == SHIFT_REGS
&& (GET_CODE (operand1) == MEM
|| GET_CODE (operand1) == CONST_INT
|| (GET_CODE (operand1) == REG
- && FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1)))))
- && scratch_reg)
+ && FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1))))))
{
/* D might not fit in 14 bits either; for such cases load D into
scratch reg. */
@@ -1971,16 +1971,22 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
return 1;
}
else if (GET_CODE (operand1) != CONST_INT
- || ! cint_ok_for_move (INTVAL (operand1)))
+ || !cint_ok_for_move (INTVAL (operand1)))
{
- rtx extend = NULL_RTX;
- rtx temp;
+ rtx insn, temp;
+ rtx op1 = operand1;
+ HOST_WIDE_INT value = 0;
+ HOST_WIDE_INT insv = 0;
+ int insert = 0;
- if (TARGET_64BIT && GET_CODE (operand1) == CONST_INT
+ if (GET_CODE (operand1) == CONST_INT)
+ value = INTVAL (operand1);
+
+ if (TARGET_64BIT
+ && GET_CODE (operand1) == CONST_INT
&& HOST_BITS_PER_WIDE_INT > 32
&& GET_MODE_BITSIZE (GET_MODE (operand0)) > 32)
{
- HOST_WIDE_INT val = INTVAL (operand1);
HOST_WIDE_INT nval;
/* Extract the low order 32 bits of the value and sign extend.
@@ -1988,19 +1994,21 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
can use the original value as-is. If the new value is
different, we use it and insert the most-significant 32-bits
of the original value into the final result. */
- nval = ((val & (((HOST_WIDE_INT) 2 << 31) - 1))
+ nval = ((value & (((HOST_WIDE_INT) 2 << 31) - 1))
^ ((HOST_WIDE_INT) 1 << 31)) - ((HOST_WIDE_INT) 1 << 31);
- if (val != nval)
+ if (value != nval)
{
#if HOST_BITS_PER_WIDE_INT > 32
- extend = GEN_INT (val >> 32);
+ insv = value >= 0 ? value >> 32 : ~(~value >> 32);
#endif
+ insert = 1;
+ value = nval;
operand1 = GEN_INT (nval);
}
}
if (reload_in_progress || reload_completed)
- temp = operand0;
+ temp = scratch_reg ? scratch_reg : operand0;
else
temp = gen_reg_rtx (mode);
@@ -2008,7 +2016,8 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
because PLUS uses an 11-bit immediate and the insn sequence
generated is not as efficient as the one using HIGH/LO_SUM. */
if (GET_CODE (operand1) == CONST_INT
- && GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT)
+ && GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
+ && !insert)
{
/* Directly break constant into high and low parts. This
provides better optimization opportunities because various
@@ -2016,7 +2025,6 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
We use a 14-bit signed low part except when the addition
of 0x4000 to the high part might change the sign of the
high part. */
- HOST_WIDE_INT value = INTVAL (operand1);
HOST_WIDE_INT low = value & 0x3fff;
HOST_WIDE_INT high = value & ~ 0x3fff;
@@ -2040,11 +2048,60 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
operands[1] = gen_rtx_LO_SUM (mode, temp, operand1);
}
- emit_move_insn (operands[0], operands[1]);
+ insn = emit_move_insn (operands[0], operands[1]);
+
+ /* Now insert the most significant 32 bits of the value
+ into the register. When we don't have a second register
+ available, it could take up to nine instructions to load
+ a 64-bit integer constant. Prior to reload, we force
+ constants that would take more than three instructions
+ to load to the constant pool. During and after reload,
+ we have to handle all possible values. */
+ if (insert)
+ {
+ /* Use a HIGH/LO_SUM/INSV sequence if we have a second
+ register and the value to be inserted is outside the
+ range that can be loaded with three depdi instructions. */
+ if (temp != operand0 && (insv >= 16384 || insv < -16384))
+ {
+ operand1 = GEN_INT (insv);
+
+ emit_insn (gen_rtx_SET (VOIDmode, temp,
+ gen_rtx_HIGH (mode, operand1)));
+ emit_move_insn (temp, gen_rtx_LO_SUM (mode, temp, operand1));
+ emit_insn (gen_insv (operand0, GEN_INT (32),
+ const0_rtx, temp));
+ }
+ else
+ {
+ int len = 5, pos = 27;
+
+ /* Insert the bits using the depdi instruction. */
+ while (pos >= 0)
+ {
+ HOST_WIDE_INT v5 = ((insv & 31) ^ 16) - 16;
+ HOST_WIDE_INT sign = v5 < 0;
- if (extend != NULL_RTX)
- emit_insn (gen_insv (operands[0], GEN_INT (32), const0_rtx,
- extend));
+ /* Left extend the insertion. */
+ insv = (insv >= 0 ? insv >> len : ~(~insv >> len));
+ while (pos > 0 && (insv & 1) == sign)
+ {
+ insv = (insv >= 0 ? insv >> 1 : ~(~insv >> 1));
+ len += 1;
+ pos -= 1;
+ }
+
+ emit_insn (gen_insv (operand0, GEN_INT (len),
+ GEN_INT (pos), GEN_INT (v5)));
+
+ len = pos > 0 && pos < 5 ? pos : 5;
+ pos -= len;
+ }
+ }
+ }
+
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_EQUAL, op1, REG_NOTES (insn));
return 1;
}
@@ -3334,8 +3391,8 @@ remove_useless_addtr_insns (int check_notes)
/* Global variables set by output_function_prologue(). */
/* Size of frame. Need to know this to emit return insns from
leaf procedures. */
-static int actual_fsize;
-static int local_fsize, save_fregs;
+static HOST_WIDE_INT actual_fsize, local_fsize;
+static int save_fregs;
/* Emit RTL to store REG at the memory location specified by BASE+DISP.
Handle case where DISP > 8k by using the add_high_const patterns.
@@ -3344,7 +3401,7 @@ static int local_fsize, save_fregs;
in %r1. There is code in expand_hppa_{prologue,epilogue} that knows this.*/
static void
-store_reg (int reg, int disp, int base)
+store_reg (int reg, HOST_WIDE_INT disp, int base)
{
rtx insn, dest, src, basereg;
@@ -3355,11 +3412,33 @@ store_reg (int reg, int disp, int base)
dest = gen_rtx_MEM (word_mode, plus_constant (basereg, disp));
insn = emit_move_insn (dest, src);
}
+ else if (TARGET_64BIT && !VAL_32_BITS_P (disp))
+ {
+ rtx delta = GEN_INT (disp);
+ rtx tmpreg = gen_rtx_REG (Pmode, 1);
+
+ emit_move_insn (tmpreg, delta);
+ emit_move_insn (tmpreg, gen_rtx_PLUS (Pmode, tmpreg, basereg));
+ dest = gen_rtx_MEM (word_mode, tmpreg);
+ insn = emit_move_insn (dest, src);
+ if (DO_FRAME_NOTES)
+ {
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
+ gen_rtx_SET (VOIDmode,
+ gen_rtx_MEM (word_mode,
+ gen_rtx_PLUS (word_mode, basereg,
+ delta)),
+ src),
+ REG_NOTES (insn));
+ }
+ }
else
{
rtx delta = GEN_INT (disp);
rtx high = gen_rtx_PLUS (Pmode, basereg, gen_rtx_HIGH (Pmode, delta));
rtx tmpreg = gen_rtx_REG (Pmode, 1);
+
emit_move_insn (tmpreg, high);
dest = gen_rtx_MEM (word_mode, gen_rtx_LO_SUM (Pmode, tmpreg, delta));
insn = emit_move_insn (dest, src);
@@ -3384,11 +3463,11 @@ store_reg (int reg, int disp, int base)
add MOD to BASE. MOD must be <= 8k. */
static void
-store_reg_modify (int base, int reg, int mod)
+store_reg_modify (int base, int reg, HOST_WIDE_INT mod)
{
rtx insn, basereg, srcreg, delta;
- if (! VAL_14_BITS_P (mod))
+ if (!VAL_14_BITS_P (mod))
abort ();
basereg = gen_rtx_REG (Pmode, base);
@@ -3431,7 +3510,7 @@ store_reg_modify (int base, int reg, int mod)
There is code in expand_hppa_{prologue,epilogue} that knows about this. */
static void
-set_reg_plus_d (int reg, int base, int disp, int note)
+set_reg_plus_d (int reg, int base, HOST_WIDE_INT disp, int note)
{
rtx insn;
@@ -3440,25 +3519,35 @@ set_reg_plus_d (int reg, int base, int disp, int note)
insn = emit_move_insn (gen_rtx_REG (Pmode, reg),
plus_constant (gen_rtx_REG (Pmode, base), disp));
}
+ else if (TARGET_64BIT && !VAL_32_BITS_P (disp))
+ {
+ rtx basereg = gen_rtx_REG (Pmode, base);
+ rtx delta = GEN_INT (disp);
+ rtx tmpreg = gen_rtx_REG (Pmode, 1);
+
+ emit_move_insn (tmpreg, delta);
+ insn = emit_move_insn (gen_rtx_REG (Pmode, reg),
+ gen_rtx_PLUS (Pmode, tmpreg, basereg));
+ }
else
{
rtx basereg = gen_rtx_REG (Pmode, base);
rtx delta = GEN_INT (disp);
+ rtx tmpreg = gen_rtx_REG (Pmode, 1);
- emit_move_insn (gen_rtx_REG (Pmode, 1),
+ emit_move_insn (tmpreg,
gen_rtx_PLUS (Pmode, basereg,
gen_rtx_HIGH (Pmode, delta)));
insn = emit_move_insn (gen_rtx_REG (Pmode, reg),
- gen_rtx_LO_SUM (Pmode, gen_rtx_REG (Pmode, 1),
- delta));
+ gen_rtx_LO_SUM (Pmode, tmpreg, delta));
}
if (DO_FRAME_NOTES && note)
RTX_FRAME_RELATED_P (insn) = 1;
}
-int
-compute_frame_size (int size, int *fregs_live)
+HOST_WIDE_INT
+compute_frame_size (HOST_WIDE_INT size, int *fregs_live)
{
int freg_saved = 0;
int i, j;
@@ -3562,7 +3651,7 @@ pa_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
/* hppa_expand_prologue does the dirty work now. We just need
to output the assembler directives which denote the start
of a function. */
- fprintf (file, "\t.CALLINFO FRAME=%d", actual_fsize);
+ fprintf (file, "\t.CALLINFO FRAME=" HOST_WIDE_INT_PRINT_DEC, actual_fsize);
if (regs_ever_live[2])
fputs (",CALLS,SAVE_RP", file);
else
@@ -3603,8 +3692,9 @@ void
hppa_expand_prologue (void)
{
int merge_sp_adjust_with_store = 0;
- int size = get_frame_size ();
- int i, offset;
+ HOST_WIDE_INT size = get_frame_size ();
+ HOST_WIDE_INT offset;
+ int i;
rtx insn, tmpreg;
gr_saved = 0;
@@ -3668,8 +3758,8 @@ hppa_expand_prologue (void)
So instead use stwm to store at *sp and post-increment the
stack pointer as an atomic operation. Then increment sp to
finish allocating the new frame. */
- int adjust1 = 8192 - 64;
- int adjust2 = actual_fsize - adjust1;
+ HOST_WIDE_INT adjust1 = 8192 - 64;
+ HOST_WIDE_INT adjust2 = actual_fsize - adjust1;
store_reg_modify (STACK_POINTER_REGNUM, 1, adjust1);
set_reg_plus_d (STACK_POINTER_REGNUM, STACK_POINTER_REGNUM,
@@ -3901,26 +3991,39 @@ hppa_expand_prologue (void)
Handle case where DISP > 8k by using the add_high_const patterns. */
static void
-load_reg (int reg, int disp, int base)
+load_reg (int reg, HOST_WIDE_INT disp, int base)
{
- rtx src, dest, basereg;
+ rtx dest = gen_rtx_REG (word_mode, reg);
+ rtx basereg = gen_rtx_REG (Pmode, base);
+ rtx src;
- dest = gen_rtx_REG (word_mode, reg);
- basereg = gen_rtx_REG (Pmode, base);
if (VAL_14_BITS_P (disp))
+ src = gen_rtx_MEM (word_mode, plus_constant (basereg, disp));
+ else if (TARGET_64BIT && !VAL_32_BITS_P (disp))
{
- src = gen_rtx_MEM (word_mode, plus_constant (basereg, disp));
- emit_move_insn (dest, src);
+ rtx delta = GEN_INT (disp);
+ rtx tmpreg = gen_rtx_REG (Pmode, 1);
+
+ emit_move_insn (tmpreg, delta);
+ if (TARGET_DISABLE_INDEXING)
+ {
+ emit_move_insn (tmpreg, gen_rtx_PLUS (Pmode, tmpreg, basereg));
+ src = gen_rtx_MEM (word_mode, tmpreg);
+ }
+ else
+ src = gen_rtx_MEM (word_mode, gen_rtx_PLUS (Pmode, tmpreg, basereg));
}
else
{
rtx delta = GEN_INT (disp);
rtx high = gen_rtx_PLUS (Pmode, basereg, gen_rtx_HIGH (Pmode, delta));
rtx tmpreg = gen_rtx_REG (Pmode, 1);
+
emit_move_insn (tmpreg, high);
src = gen_rtx_MEM (word_mode, gen_rtx_LO_SUM (Pmode, tmpreg, delta));
- emit_move_insn (dest, src);
}
+
+ emit_move_insn (dest, src);
}
/* Update the total code bytes output to the text section. */
@@ -4006,9 +4109,10 @@ void
hppa_expand_epilogue (void)
{
rtx tmpreg;
- int offset, i;
+ HOST_WIDE_INT offset;
+ HOST_WIDE_INT ret_off = 0;
+ int i;
int merge_sp_adjust_with_load = 0;
- int ret_off = 0;
/* We will use this often. */
tmpreg = gen_rtx_REG (word_mode, 1);
@@ -6125,7 +6229,7 @@ output_lbranch (rtx dest, rtx insn)
abort ();
final_scan_insn (NEXT_INSN (insn), asm_out_file,
- optimize, 0, 0);
+ optimize, 0, 0, NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
@@ -7129,7 +7233,7 @@ output_call (rtx insn, rtx call_dest, int sibcall)
&& !sibcall)
{
final_scan_insn (NEXT_INSN (insn), asm_out_file,
- optimize, 0, 0);
+ optimize, 0, 0, NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
@@ -7177,7 +7281,8 @@ output_call (rtx insn, rtx call_dest, int sibcall)
/* A non-jump insn in the delay slot. By definition we can
emit this insn before the call (and in fact before argument
relocating. */
- final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, 0);
+ final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, 0,
+ NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 312d58c4213..3250b3a7364 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler, for the HP Spectrum.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
Software Science at the University of Utah.
@@ -542,10 +542,11 @@ do { \
/* Register in which static-chain is passed to a function. */
#define STATIC_CHAIN_REGNUM 29
-/* Register which holds offset table for position-independent
+/* Register used to address the offset table for position-independent
data references. */
+#define PIC_OFFSET_TABLE_REGNUM \
+ (flag_pic ? (TARGET_64BIT ? 27 : 19) : INVALID_REGNUM)
-#define PIC_OFFSET_TABLE_REGNUM (TARGET_64BIT ? 27 : 19)
#define PIC_OFFSET_TABLE_REG_CALL_CLOBBERED 1
/* Function to return the rtx used to save the pic offset table register
@@ -646,7 +647,6 @@ extern struct rtx_def *hppa_pic_save_rtx (void);
to IN. If it can be done directly NO_REGS is returned.
Avoid doing any work for the common case calls. */
-
#define SECONDARY_RELOAD_CLASS(CLASS,MODE,IN) \
((CLASS == BASE_REG_CLASS && GET_CODE (IN) == REG \
&& REGNO (IN) < FIRST_PSEUDO_REGISTER) \
@@ -1223,16 +1223,36 @@ extern int may_call_alloca;
|| GET_CODE (X) == HIGH) \
&& (reload_in_progress || reload_completed || ! symbolic_expression_p (X)))
-/* Include all constant integers and constant doubles, but not
- floating-point, except for floating-point zero.
-
- Reject LABEL_REFs if we're not using gas or the new HP assembler.
+/* A C expression that is nonzero if we are using the new HP assembler. */
- ?!? For now also reject CONST_DOUBLES in 64bit mode. This will need
- further work. */
#ifndef NEW_HP_ASSEMBLER
#define NEW_HP_ASSEMBLER 0
#endif
+
+/* The macros below define the immediate range for CONST_INTS on
+ the 64-bit port. Constants in this range can be loaded in three
+ instructions using a ldil/ldo/depdi sequence. Constants outside
+ this range are forced to the constant pool prior to reload. */
+
+#define MAX_LEGIT_64BIT_CONST_INT ((HOST_WIDE_INT) 32 << 31)
+#define MIN_LEGIT_64BIT_CONST_INT ((HOST_WIDE_INT) -32 << 31)
+#define LEGITIMATE_64BIT_CONST_INT_P(X) \
+ ((X) >= MIN_LEGIT_64BIT_CONST_INT && (X) < MAX_LEGIT_64BIT_CONST_INT)
+
+/* A C expression that is nonzero if X is a legitimate constant for an
+ immediate operand.
+
+ We include all constant integers and constant doubles, but not
+ floating-point, except for floating-point zero. We reject LABEL_REFs
+ if we're not using gas or the new HP assembler.
+
+ In 64-bit mode, we reject CONST_DOUBLES. We also reject CONST_INTS
+ that need more than three instructions to load prior to reload. This
+ limit is somewhat arbitrary. It takes three instructions to load a
+ CONST_INT from memory but two are memory accesses. It may be better
+ to increase the allowed range for CONST_INTS. We may also be able
+ to handle CONST_DOUBLES. */
+
#define LEGITIMATE_CONSTANT_P(X) \
((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \
|| (X) == CONST0_RTX (GET_MODE (X))) \
@@ -1240,8 +1260,8 @@ extern int may_call_alloca;
&& !(TARGET_64BIT && GET_CODE (X) == CONST_DOUBLE) \
&& !(TARGET_64BIT && GET_CODE (X) == CONST_INT \
&& !(HOST_BITS_PER_WIDE_INT <= 32 \
- || (INTVAL (X) >= (HOST_WIDE_INT) -32 << 31 \
- && INTVAL (X) < (HOST_WIDE_INT) 32 << 31) \
+ || (reload_in_progress || reload_completed) \
+ || LEGITIMATE_64BIT_CONST_INT_P (INTVAL (X)) \
|| cint_ok_for_move (INTVAL (X)))) \
&& !function_label_operand (X, VOIDmode))
@@ -1425,6 +1445,15 @@ extern int may_call_alloca;
#define VAL_14_BITS_P(X) ((unsigned HOST_WIDE_INT)(X) + 0x2000 < 0x4000)
#define INT_14_BITS(X) VAL_14_BITS_P (INTVAL (X))
+#if HOST_BITS_PER_WIDE_INT > 32
+#define VAL_32_BITS_P(X) \
+ ((unsigned HOST_WIDE_INT)(X) + ((unsigned HOST_WIDE_INT) 1 << 31) \
+ < (unsigned HOST_WIDE_INT) 2 << 31)
+#else
+#define VAL_32_BITS_P(X) 1
+#endif
+#define INT_32_BITS(X) VAL_32_BITS_P (INTVAL (X))
+
/* These are the modes that we allow for scaled indexing. */
#define MODE_OK_FOR_SCALED_INDEXING_P(MODE) \
((TARGET_64BIT && (MODE) == DImode) \
@@ -1557,14 +1586,13 @@ extern int may_call_alloca;
There may be more opportunities to improve code with this hook. */
#define LEGITIMIZE_RELOAD_ADDRESS(AD, MODE, OPNUM, TYPE, IND, WIN) \
do { \
- int offset, newoffset, mask; \
+ long offset, newoffset, mask; \
rtx new, temp = NULL_RTX; \
\
mask = (GET_MODE_CLASS (MODE) == MODE_FLOAT \
? (TARGET_PA_20 && !TARGET_ELF32 ? 0x3fff : 0x1f) : 0x3fff); \
\
- if (optimize \
- && GET_CODE (AD) == PLUS) \
+ if (optimize && GET_CODE (AD) == PLUS) \
temp = simplify_binary_operation (PLUS, Pmode, \
XEXP (AD, 0), XEXP (AD, 1)); \
\
@@ -1583,16 +1611,14 @@ do { \
else \
newoffset = offset & ~mask; \
\
- if (newoffset != 0 \
- && VAL_14_BITS_P (newoffset)) \
+ if (newoffset != 0 && VAL_14_BITS_P (newoffset)) \
{ \
- \
temp = gen_rtx_PLUS (Pmode, XEXP (new, 0), \
GEN_INT (newoffset)); \
AD = gen_rtx_PLUS (Pmode, temp, GEN_INT (offset - newoffset));\
push_reload (XEXP (AD, 0), 0, &XEXP (AD, 0), 0, \
- BASE_REG_CLASS, Pmode, VOIDmode, 0, 0, \
- (OPNUM), (TYPE)); \
+ BASE_REG_CLASS, Pmode, VOIDmode, 0, 0, \
+ (OPNUM), (TYPE)); \
goto WIN; \
} \
} \
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index dd2159cfe09..f009f559eb4 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -1,6 +1,6 @@
;;- Machine description for HP PA-RISC architecture for GCC compiler
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;; 2002, 2003 Free Software Foundation, Inc.
+;; 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by the Center for Software Science at the University
;; of Utah.
@@ -2305,7 +2305,7 @@
(const_int 4))
(match_operand:SI 2 "register_operand" "")))
(set (mem:SI (match_dup 0))
- (match_operand:SI 3 "reg_or_0_operand" ""))]
+ (match_operand:SI 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
@@ -3194,7 +3194,7 @@
(define_insn "movstrsi_prereload"
[(set (mem:BLK (match_operand:SI 0 "register_operand" "r,r"))
(mem:BLK (match_operand:SI 1 "register_operand" "r,r")))
- (clobber (match_operand:SI 2 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:SI 2 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:SI 3 "register_operand" "=&r,&r")) ;item tmp1
(clobber (match_operand:SI 6 "register_operand" "=&r,&r")) ;item tmp2
(clobber (match_operand:SI 7 "register_operand" "=&r,&r")) ;item tmp3
@@ -3263,9 +3263,9 @@
}")
(define_insn "movstrsi_postreload"
- [(set (mem:BLK (match_operand:SI 0 "register_operand" "r,r"))
- (mem:BLK (match_operand:SI 1 "register_operand" "r,r")))
- (clobber (match_operand:SI 2 "register_operand" "=r,r")) ;loop cnt/tmp
+ [(set (mem:BLK (match_operand:SI 0 "register_operand" "+r,r"))
+ (mem:BLK (match_operand:SI 1 "register_operand" "+r,r")))
+ (clobber (match_operand:SI 2 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:SI 3 "register_operand" "=&r,&r")) ;item tmp1
(clobber (match_operand:SI 6 "register_operand" "=&r,&r")) ;item tmp2
(clobber (match_dup 0))
@@ -3360,7 +3360,7 @@
(define_insn "movstrdi_prereload"
[(set (mem:BLK (match_operand:DI 0 "register_operand" "r,r"))
(mem:BLK (match_operand:DI 1 "register_operand" "r,r")))
- (clobber (match_operand:DI 2 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:DI 2 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:DI 3 "register_operand" "=&r,&r")) ;item tmp1
(clobber (match_operand:DI 6 "register_operand" "=&r,&r")) ;item tmp2
(clobber (match_operand:DI 7 "register_operand" "=&r,&r")) ;item tmp3
@@ -3429,9 +3429,9 @@
}")
(define_insn "movstrdi_postreload"
- [(set (mem:BLK (match_operand:DI 0 "register_operand" "r,r"))
- (mem:BLK (match_operand:DI 1 "register_operand" "r,r")))
- (clobber (match_operand:DI 2 "register_operand" "=r,r")) ;loop cnt/tmp
+ [(set (mem:BLK (match_operand:DI 0 "register_operand" "+r,r"))
+ (mem:BLK (match_operand:DI 1 "register_operand" "+r,r")))
+ (clobber (match_operand:DI 2 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:DI 3 "register_operand" "=&r,&r")) ;item tmp1
(clobber (match_operand:DI 6 "register_operand" "=&r,&r")) ;item tmp2
(clobber (match_dup 0))
@@ -3482,7 +3482,7 @@
(define_insn "clrstrsi_prereload"
[(set (mem:BLK (match_operand:SI 0 "register_operand" "r,r"))
(const_int 0))
- (clobber (match_operand:SI 1 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:SI 1 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:SI 4 "register_operand" "=&r,&r")) ;tmp1
(use (match_operand:SI 2 "arith_operand" "J,1")) ;byte count
(use (match_operand:SI 3 "const_int_operand" "n,n"))] ;alignment
@@ -3530,9 +3530,9 @@
}")
(define_insn "clrstrsi_postreload"
- [(set (mem:BLK (match_operand:SI 0 "register_operand" "r,r"))
+ [(set (mem:BLK (match_operand:SI 0 "register_operand" "+r,r"))
(const_int 0))
- (clobber (match_operand:SI 1 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:SI 1 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_dup 0))
(use (match_operand:SI 2 "arith_operand" "J,1")) ;byte count
(use (match_operand:SI 3 "const_int_operand" "n,n")) ;alignment
@@ -3580,7 +3580,7 @@
(define_insn "clrstrdi_prereload"
[(set (mem:BLK (match_operand:DI 0 "register_operand" "r,r"))
(const_int 0))
- (clobber (match_operand:DI 1 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:DI 1 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_operand:DI 4 "register_operand" "=&r,&r")) ;item tmp1
(use (match_operand:DI 2 "arith_operand" "J,1")) ;byte count
(use (match_operand:DI 3 "const_int_operand" "n,n"))] ;alignment
@@ -3628,9 +3628,9 @@
}")
(define_insn "clrstrdi_postreload"
- [(set (mem:BLK (match_operand:DI 0 "register_operand" "r,r"))
+ [(set (mem:BLK (match_operand:DI 0 "register_operand" "+r,r"))
(const_int 0))
- (clobber (match_operand:DI 1 "register_operand" "=r,r")) ;loop cnt/tmp
+ (clobber (match_operand:DI 1 "register_operand" "=&r,&r")) ;loop cnt/tmp
(clobber (match_dup 0))
(use (match_operand:DI 2 "arith_operand" "J,1")) ;byte count
(use (match_operand:DI 3 "const_int_operand" "n,n")) ;alignment
diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h
index eed16720c1a..098f47f79e1 100644
--- a/gcc/config/pa/pa64-hpux.h
+++ b/gcc/config/pa/pa64-hpux.h
@@ -57,14 +57,20 @@ Boston, MA 02111-1307, USA. */
%{static:-a archive} %{shared:%{mgnu-ld:-shared}%{!mgnu-ld:-b}}"
#endif
-/* Like the default, except no -lg. */
+/* Profiling support is only provided in libc.a. However, libprof and
+ libgprof are only available in shared form on HP-UX 11.00. We use
+ the shared form if we are using the GNU linker or an archive form
+ isn't available. We also usually need to link with libdld and it's
+ only available in shared form. */
#undef LIB_SPEC
#define LIB_SPEC \
"%{!shared:\
%{!p:%{!pg: -lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
- %{p:%{!pg:-lprof -lc\
- %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
- %{pg:-lgprof -lc\
+ %{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
+ -lprof %{static:-a archive} -lc\
+ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
+ %{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
+ -lgprof %{static:-a archive} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
/usr/lib/pa20_64/milli.a"
diff --git a/gcc/config/pa/t-slibgcc-elf-ver b/gcc/config/pa/t-slibgcc-elf-ver
new file mode 100644
index 00000000000..6aac37cc08f
--- /dev/null
+++ b/gcc/config/pa/t-slibgcc-elf-ver
@@ -0,0 +1,3 @@
+# Bump the version number of the shared libgcc library
+
+SHLIB_SOVERSION = 2
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 049b541a4ac..3426d17f29e 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -1,5 +1,5 @@
/* Subroutines for gcc2 for pdp11.
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004
Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h
index 3318621a253..f189407b3f4 100644
--- a/gcc/config/rs6000/aix.h
+++ b/gcc/config/rs6000/aix.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -139,14 +139,12 @@
/* AIX increases natural record alignment to doubleword if the first
field is an FP double while the FP fields remain word aligned. */
-#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
- ((TREE_CODE (STRUCT) == RECORD_TYPE \
- || TREE_CODE (STRUCT) == UNION_TYPE \
- || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
- && TYPE_FIELDS (STRUCT) != 0 \
- && TARGET_ALIGN_NATURAL == 0 \
- && DECL_MODE (TYPE_FIELDS (STRUCT)) == DFmode \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 64) \
+#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
+ ((TREE_CODE (STRUCT) == RECORD_TYPE \
+ || TREE_CODE (STRUCT) == UNION_TYPE \
+ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
+ && TARGET_ALIGN_NATURAL == 0 \
+ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
: MAX ((COMPUTED), (SPECIFIED)))
/* The AIX ABI isn't explicit on whether aggregates smaller than a
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index c98d6ea3743..1bd8f4549ca 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -1,5 +1,5 @@
/* PowerPC AltiVec include file.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Aldy Hernandez (aldyh@redhat.com).
This file is part of GCC.
@@ -118,6 +118,8 @@ extern int __altivec_link_error_invalid_argument ();
#ifdef __cplusplus
+extern "C++" {
+
/* Prototypes for builtins that take literals and must always be
inlined. */
inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
@@ -6117,6 +6119,8 @@ struct __vec_step_help<vector float>
#define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
+}//extern "C++"
+
#else /* not C++ */
/* "... and so I think no man in a century will suffer as greatly as
@@ -8533,6 +8537,7 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
+
#endif /* __cplusplus */
#endif /* _ALTIVEC_H */
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index 73d0417771d..a18ccede7fe 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -93,7 +93,9 @@
(define_insn "*movv4si_internal"
[(set (match_operand:V4SI 0 "nonimmediate_operand" "=m,v,v,o,r,r,v")
(match_operand:V4SI 1 "input_operand" "v,m,v,r,o,r,W"))]
- "TARGET_ALTIVEC"
+ "TARGET_ALTIVEC
+ && (register_operand (operands[0], V4SImode)
+ || register_operand (operands[1], V4SImode))"
"*
{
switch (which_alternative)
@@ -139,7 +141,9 @@
(define_insn "*movv8hi_internal1"
[(set (match_operand:V8HI 0 "nonimmediate_operand" "=m,v,v,o,r,r,v")
(match_operand:V8HI 1 "input_operand" "v,m,v,r,o,r,W"))]
- "TARGET_ALTIVEC"
+ "TARGET_ALTIVEC
+ && (register_operand (operands[0], V8HImode)
+ || register_operand (operands[1], V8HImode))"
"*
{
switch (which_alternative)
@@ -185,7 +189,9 @@
(define_insn "*movv16qi_internal1"
[(set (match_operand:V16QI 0 "nonimmediate_operand" "=m,v,v,o,r,r,v")
(match_operand:V16QI 1 "input_operand" "v,m,v,r,o,r,W"))]
- "TARGET_ALTIVEC"
+ "TARGET_ALTIVEC
+ && (register_operand (operands[0], V16QImode)
+ || register_operand (operands[1], V16QImode))"
"*
{
switch (which_alternative)
@@ -231,7 +237,9 @@
(define_insn "*movv4sf_internal1"
[(set (match_operand:V4SF 0 "nonimmediate_operand" "=m,v,v,o,r,r,v")
(match_operand:V4SF 1 "input_operand" "v,m,v,r,o,r,W"))]
- "TARGET_ALTIVEC"
+ "TARGET_ALTIVEC
+ && (register_operand (operands[0], V4SFmode)
+ || register_operand (operands[1], V4SFmode))"
"*
{
switch (which_alternative)
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index c77279d2142..62ed74c00d8 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -1,5 +1,5 @@
/* Target definitions for PowerPC running Darwin (Mac OS X).
- Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
This file is part of GCC.
@@ -295,16 +295,14 @@ do { \
/* Darwin increases natural record alignment to doubleword if the first
field is an FP double while the FP fields remain word aligned. */
-#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
- ((TREE_CODE (STRUCT) == RECORD_TYPE \
- || TREE_CODE (STRUCT) == UNION_TYPE \
- || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
- && TYPE_FIELDS (STRUCT) != 0 \
- && TARGET_ALIGN_NATURAL == 0 \
- && DECL_MODE (TYPE_FIELDS (STRUCT)) == DFmode \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 64) \
- : (TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
+#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
+ ((TREE_CODE (STRUCT) == RECORD_TYPE \
+ || TREE_CODE (STRUCT) == UNION_TYPE \
+ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
+ && TARGET_ALIGN_NATURAL == 0 \
+ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
+ : (TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
+ ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
: MAX ((COMPUTED), (SPECIFIED)))
/* XXX: Darwin supports neither .quad, or .llong, but it also doesn't
@@ -322,3 +320,4 @@ do { \
#undef REGISTER_TARGET_PRAGMAS
#define REGISTER_TARGET_PRAGMAS DARWIN_REGISTER_TARGET_PRAGMAS
+
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
index 1ef484e629d..009ac6637bb 100644
--- a/gcc/config/rs6000/linux.h
+++ b/gcc/config/rs6000/linux.h
@@ -91,6 +91,8 @@
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define TARGET_HAS_F_SETLKW
+
/* Do code reading to identify a signal frame, and set the frame
state data appropriately. See unwind-dw2.c for the structs. */
@@ -174,3 +176,4 @@ enum { SIGNAL_FRAMESIZE = 64 };
goto SUCCESS; \
} while (0)
+#define OS_MISSING_POWERPC64 1
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
index d56c106b533..4b51a12ead4 100644
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
@@ -224,19 +224,17 @@
: (COMPUTED))
/* PowerPC64 Linux increases natural record alignment to doubleword if
- the first field is an FP double. */
+ the first field is an FP double, only if in power alignment mode. */
#undef ROUND_TYPE_ALIGN
-#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
- ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
- : (TARGET_64BIT \
- && (TREE_CODE (STRUCT) == RECORD_TYPE \
- || TREE_CODE (STRUCT) == UNION_TYPE \
- || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
- && TYPE_FIELDS (STRUCT) != 0 \
- && TARGET_ALIGN_NATURAL == 0 \
- && DECL_MODE (TYPE_FIELDS (STRUCT)) == DFmode) \
- ? MAX (MAX ((COMPUTED), (SPECIFIED)), 64) \
+#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
+ ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
+ ? MAX (MAX ((COMPUTED), (SPECIFIED)), 128) \
+ : (TARGET_64BIT \
+ && (TREE_CODE (STRUCT) == RECORD_TYPE \
+ || TREE_CODE (STRUCT) == UNION_TYPE \
+ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
+ && TARGET_ALIGN_NATURAL == 0) \
+ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
: MAX ((COMPUTED), (SPECIFIED)))
/* Indicate that jump tables go in the text section. */
@@ -544,6 +542,8 @@ while (0)
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define TARGET_HAS_F_SETLKW
+
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
@@ -552,13 +552,27 @@ while (0)
#ifdef IN_LIBGCC2
#include <signal.h>
+#ifdef __powerpc64__
#include <sys/ucontext.h>
-#ifdef __powerpc64__
enum { SIGNAL_FRAMESIZE = 128 };
+
#else
+
+/* During the 2.5 kernel series the kernel ucontext was changed, but
+ the new layout is compatible with the old one, so we just define
+ and use the old one here for simplicity and compatibility. */
+
+struct kernel_old_ucontext {
+ unsigned long uc_flags;
+ struct ucontext *uc_link;
+ stack_t uc_stack;
+ struct sigcontext_struct uc_mcontext;
+ sigset_t uc_sigmask;
+};
enum { SIGNAL_FRAMESIZE = 64 };
#endif
+
#endif
#ifdef __powerpc64__
@@ -636,10 +650,10 @@ enum { SIGNAL_FRAMESIZE = 64 };
get the same result for multiple evaluation of the same signal \
frame. */ \
sc_->regs->gpr[47] = sc_->regs->nip + 4; \
- (FS)->regs.reg[CR0_REGNO].how = REG_SAVED_OFFSET; \
- (FS)->regs.reg[CR0_REGNO].loc.offset \
+ (FS)->regs.reg[ARG_POINTER_REGNUM].how = REG_SAVED_OFFSET; \
+ (FS)->regs.reg[ARG_POINTER_REGNUM].loc.offset \
= (long)&(sc_->regs->gpr[47]) - new_cfa_; \
- (FS)->retaddr_column = CR0_REGNO; \
+ (FS)->retaddr_column = ARG_POINTER_REGNUM; \
goto SUCCESS; \
} while (0)
@@ -676,7 +690,7 @@ enum { SIGNAL_FRAMESIZE = 64 };
struct siginfo *pinfo; \
void *puc; \
struct siginfo info; \
- struct ucontext uc; \
+ struct kernel_old_ucontext uc; \
} *rt_ = (CONTEXT)->cfa; \
sc_ = &rt_->uc.uc_mcontext; \
} \
@@ -700,17 +714,14 @@ enum { SIGNAL_FRAMESIZE = 64 };
(FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \
= (long)&(sc_->regs->link) - new_cfa_; \
\
- /* The unwinder expects the IP to point to the following insn, \
- whereas the kernel returns the address of the actual \
- faulting insn. We store NIP+4 in an unused register slot to \
- get the same result for multiple evaluation of the same signal \
- frame. */ \
- sc_->regs->gpr[47] = sc_->regs->nip + 4; \
(FS)->regs.reg[CR0_REGNO].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[CR0_REGNO].loc.offset \
- = (long)&(sc_->regs->gpr[47]) - new_cfa_; \
+ = (long)&(sc_->regs->nip) - new_cfa_; \
(FS)->retaddr_column = CR0_REGNO; \
goto SUCCESS; \
} while (0)
#endif
+
+
+#define OS_MISSING_POWERPC64 !TARGET_64BIT
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
index abf39c6ed96..2dcdd0df34e 100644
--- a/gcc/config/rs6000/rs6000-protos.h
+++ b/gcc/config/rs6000/rs6000-protos.h
@@ -144,6 +144,7 @@ extern rtx rs6000_machopic_legitimize_pic_address (rtx orig,
#endif /* RTX_CODE */
#ifdef TREE_CODE
+extern unsigned int rs6000_special_round_type_align (tree, int, int);
extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode,
tree, int);
extern int function_arg_boundary (enum machine_mode, tree);
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 9a399b16f06..e7bcab192e6 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -230,7 +230,7 @@ int toc_initialized;
char toc_label_name[10];
/* Alias set for saves and restores from the rs6000 stack. */
-static int rs6000_sr_alias_set;
+static GTY(()) int rs6000_sr_alias_set;
/* Call distance, overridden by -mlongcall and #pragma longcall(1).
The only place that looks at this is rs6000_set_default_type_attributes;
@@ -840,6 +840,13 @@ rs6000_override_options (const char *default_cpu)
rs6000_long_double_type_size = size;
}
+ /* Set Altivec ABI as default for powerpc64 linux. */
+ if (TARGET_ELF && TARGET_64BIT)
+ {
+ rs6000_altivec_abi = 1;
+ rs6000_altivec_vrsave = 1;
+ }
+
/* Handle -mabi= options. */
rs6000_parse_abi_options ();
@@ -2317,6 +2324,26 @@ input_operand (rtx op, enum machine_mode mode)
return 0;
}
+
+/* Darwin, AIX increases natural record alignment to doubleword if the first
+ field is an FP double while the FP fields remain word aligned. */
+
+unsigned int
+rs6000_special_round_type_align (tree type, int computed, int specified)
+{
+ tree field = TYPE_FIELDS (type);
+
+ /* Skip all the static variables only if ABI is greater than
+ 1 or equal to 0. */
+ while (field != NULL && TREE_CODE (field) == VAR_DECL)
+ field = TREE_CHAIN (field);
+
+ if (field == NULL || field == type || DECL_MODE (field) != DFmode)
+ return MAX (computed, specified);
+
+ return MAX (MAX (computed, specified), 64);
+}
+
/* Return 1 for an operand in small memory on V.4/eabi. */
int
@@ -3827,6 +3854,16 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
fprintf (stderr, " proto = %d, nargs = %d\n",
cum->prototype, cum->nargs_prototype);
}
+
+ if (fntype
+ && !TARGET_ALTIVEC
+ && TARGET_ALTIVEC_ABI
+ && ALTIVEC_VECTOR_MODE (TYPE_MODE (TREE_TYPE (fntype))))
+ {
+ error ("Cannot return value in vector register because"
+ " altivec instructions are disabled, use -maltivec"
+ " to enable them.");
+ }
}
/* If defined, a C expression which determines whether, and in which
@@ -3919,12 +3956,19 @@ function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
if (TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode))
{
if (USE_ALTIVEC_FOR_ARG_P (cum, mode, type, named))
- cum->vregno++;
-
- /* In variable-argument functions, vector arguments get GPRs allocated
- even if they are going to be passed in a vector register. */
- if (cum->stdarg && DEFAULT_ABI != ABI_V4)
- {
+ {
+ cum->vregno++;
+ if (!TARGET_ALTIVEC)
+ error ("Cannot pass argument in vector register because"
+ " altivec instructions are disabled, use -maltivec"
+ " to enable them.");
+ }
+ /* PowerPC64 Linux and AIX allocates GPRs for a vector argument
+ even if it is going to be passed in a vector register.
+ Darwin does the same for variable-argument functions. */
+ if ((DEFAULT_ABI == ABI_AIX && TARGET_64BIT)
+ || (cum->stdarg && DEFAULT_ABI != ABI_V4))
+ {
int align;
/* Vector parameters must be 16-byte aligned. This places
@@ -4228,7 +4272,32 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode,
}
if (USE_ALTIVEC_FOR_ARG_P (cum, mode, type, named))
- return gen_rtx_REG (mode, cum->vregno);
+ if (TARGET_64BIT && ! cum->prototype)
+ {
+ /* Vector parameters get passed in vector register
+ and also in GPRs or memory, in absence of prototype. */
+ int align_words;
+ rtx slot;
+ align_words = (cum->words + 1) & ~1;
+
+ if (align_words >= GP_ARG_NUM_REG)
+ {
+ slot = NULL_RTX;
+ }
+ else
+ {
+ slot = gen_rtx_REG (mode, GP_ARG_MIN_REG + align_words);
+ }
+ return gen_rtx_PARALLEL (mode,
+ gen_rtvec (2,
+ gen_rtx_EXPR_LIST (VOIDmode,
+ slot, const0_rtx),
+ gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_REG (mode, cum->vregno),
+ const0_rtx)));
+ }
+ else
+ return gen_rtx_REG (mode, cum->vregno);
else if (TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode))
{
if (named || abi == ABI_V4)
@@ -8417,7 +8486,14 @@ ccr_bit (rtx op, int scc_p)
allowed. */
if (scc_p && code != EQ && code != GT && code != LT && code != UNORDERED
&& code != GTU && code != LTU)
- abort ();
+ {
+#if ! ENABLE_CHECKING
+ if (TARGET_E500)
+ inform ("your function will be miscompiled");
+ else
+#endif
+ abort ();
+ }
switch (code)
{
@@ -10913,11 +10989,7 @@ rs6000_ra_ever_killed (void)
rtx reg;
rtx insn;
- /* Irritatingly, there are two kinds of thunks -- those created with
- TARGET_ASM_OUTPUT_MI_THUNK and those with DECL_THUNK_P that go
- through the regular part of the compiler. This is a very hacky
- way to tell them apart. */
- if (current_function_is_thunk && !no_new_pseudos)
+ if (current_function_is_thunk)
return 0;
/* regs_ever_live has LR marked as used if any sibcalls are present,
@@ -11106,13 +11178,14 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch)
emit_move_insn (gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM), operands[0]);
}
+static GTY(()) int set = -1;
+
int
get_TOC_alias_set (void)
{
- static int set = -1;
- if (set == -1)
- set = new_alias_set ();
- return set;
+ if (set == -1)
+ set = new_alias_set ();
+ return set;
}
/* This returns nonzero if the current function uses the TOC. This is
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 28f5f257b20..d84f79e52c5 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -4961,9 +4961,9 @@
;; Conversions to and from floating-point.
-(define_expand "fixunssfsi2"
+(define_expand "fixuns_truncsfsi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
- (unsigned_fix:SI (fix:SF (match_operand:SF 1 "gpc_reg_operand" ""))))]
+ (unsigned_fix:SI (match_operand:SF 1 "gpc_reg_operand" "")))]
"TARGET_HARD_FLOAT && !TARGET_FPRS"
"")
@@ -8163,7 +8163,7 @@
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,??r,!r,f,f,m,!cl,!r,!r,!r,!r")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,!r,f,f,m,!cl,!r,!r,!r,!r")
(match_operand:DF 1 "input_operand" "r,Y,r,f,m,f,r,h,G,H,F"))]
"TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode)
@@ -10229,7 +10229,7 @@
if (DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_DARWIN)
- operands[0] = force_reg (Pmode, operands[0]);
+ operands[1] = force_reg (Pmode, operands[1]);
else if (DEFAULT_ABI == ABI_AIX)
{
diff --git a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md
index becdaa42bb2..34faba7e0ce 100644
--- a/gcc/config/rs6000/spe.md
+++ b/gcc/config/rs6000/spe.md
@@ -76,25 +76,18 @@
"efsdiv %0,%1,%2"
[(set_attr "type" "vecfdiv")])
-(define_insn "spe_efsctuiz"
+(define_insn "spe_fixuns_truncsfsi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (unspec:SI [(match_operand:SF 1 "gpc_reg_operand" "r")] 700))]
+ (unsigned_fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
"TARGET_HARD_FLOAT && !TARGET_FPRS"
"efsctuiz %0,%1"
[(set_attr "type" "fp")])
-(define_insn "spe_fixunssfsi2"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (unsigned_fix:SI (fix:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))]
- "TARGET_HARD_FLOAT && !TARGET_FPRS"
- "efsctui %0,%1"
- [(set_attr "type" "fp")])
-
(define_insn "spe_fix_truncsfsi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
"TARGET_HARD_FLOAT && !TARGET_FPRS"
- "efsctsi %0,%1"
+ "efsctsiz %0,%1"
[(set_attr "type" "fp")])
(define_insn "spe_floatunssisf2"
@@ -2165,7 +2158,9 @@
(define_insn "*movv2si_internal"
[(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r,r")
(match_operand:V2SI 1 "input_operand" "r,m,r,W"))]
- "TARGET_SPE"
+ "TARGET_SPE
+ && (gpc_reg_operand (operands[0], V2SImode)
+ || gpc_reg_operand (operands[1], V2SImode))"
"*
{
switch (which_alternative)
@@ -2197,7 +2192,9 @@
(define_insn "*movv1di_internal"
[(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r,r")
(match_operand:V1DI 1 "input_operand" "r,m,r,W"))]
- "TARGET_SPE"
+ "TARGET_SPE
+ && (gpc_reg_operand (operands[0], V1DImode)
+ || gpc_reg_operand (operands[1], V1DImode))"
"@
evstdd%X0 %1,%y0
evldd%X1 %0,%y1
@@ -2215,7 +2212,9 @@
(define_insn "*movv4hi_internal"
[(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r")
(match_operand:V4HI 1 "input_operand" "r,m,r"))]
- "TARGET_SPE"
+ "TARGET_SPE
+ && (gpc_reg_operand (operands[0], V4HImode)
+ || gpc_reg_operand (operands[1], V4HImode))"
"@
evstdd%X0 %1,%y0
evldd%X1 %0,%y1
@@ -2231,7 +2230,9 @@
(define_insn "*movv2sf_internal"
[(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r,r")
(match_operand:V2SF 1 "input_operand" "r,m,r,W"))]
- "TARGET_SPE"
+ "TARGET_SPE
+ && (gpc_reg_operand (operands[0], V2SFmode)
+ || gpc_reg_operand (operands[1], V2SFmode))"
"@
evstdd%X0 %1,%y0
evldd%X1 %0,%y1
@@ -2240,6 +2241,8 @@
[(set_attr "type" "vecload,vecstore,*,*")
(set_attr "length" "*,*,*,*")])
+;; End of vector move instructions.
+
(define_insn "spe_evmwhssfaa"
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index 20e7c9a24a4..1e0ac3707f6 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -744,6 +744,18 @@ extern int fixuplabelno;
#define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
+/* Map register numbers held in the call frame info that gcc has
+ collected using DWARF_FRAME_REGNUM to those that should be output in
+ .debug_frame and .eh_frame. We continue to use gcc hard reg numbers
+ for .eh_frame, but use the numbers mandated by the various ABIs for
+ .debug_frame. rs6000_emit_prologue has translated any combination of
+ CR2, CR3, CR4 saves to a save of CR2. The actual code emitted saves
+ the whole of CR, so we map CR2_REGNO to the DWARF reg for CR. */
+#define DWARF2_FRAME_REG_OUT(REGNO, FOR_EH) \
+ ((FOR_EH) ? (REGNO) \
+ : (REGNO) == CR2_REGNO ? 64 \
+ : DBX_REGISTER_NUMBER (REGNO))
+
#define TARGET_ENCODE_SECTION_INFO rs6000_elf_encode_section_info
#define TARGET_IN_SMALL_DATA_P rs6000_elf_in_small_data_p
#define TARGET_SECTION_TYPE_FLAGS rs6000_elf_section_type_flags
@@ -1080,16 +1092,16 @@ extern int fixuplabelno;
#define LINK_OS_FREEBSD_SPEC "\
%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
- %{!static: \
- %{rdynamic: -export-dynamic} \
- %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}} \
- %{symbolic:-Bsymbolic}"
+ %{Wl,*:%*} \
+ %{v:-V} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+ %{shared:-Bshareable %{h*} %{soname*}} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic: -export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
+ %{static:-Bstatic}} \
+ %{symbolic:-Bsymbolic}"
/* GNU/Linux support. */
#define LIB_LINUX_SPEC "%{mnewlib: --start-group -llinux -lc --end-group } \
@@ -1302,6 +1314,7 @@ ncrtn.o%s"
{ "cpp_os_openbsd", CPP_OS_OPENBSD_SPEC }, \
{ "cpp_os_windiss", CPP_OS_WINDISS_SPEC }, \
{ "cpp_os_default", CPP_OS_DEFAULT_SPEC }, \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }, \
SUBSUBTARGET_EXTRA_SPECS
#define SUBSUBTARGET_EXTRA_SPECS
diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h
index 36c2aa88623..d4e056b4b74 100644
--- a/gcc/config/rs6000/xcoff.h
+++ b/gcc/config/rs6000/xcoff.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for some generic XCOFF file format
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h
index c45ff4dcd0f..90815a87938 100644
--- a/gcc/config/s390/s390-protos.h
+++ b/gcc/config/s390/s390-protos.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, for IBM S/390.
- Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com)
This file is part of GCC.
@@ -23,7 +23,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
extern void optimization_options (int, int);
extern void override_options (void);
-extern int s390_arg_frame_offset (void);
+extern HOST_WIDE_INT s390_arg_frame_offset (void);
extern void s390_load_got (int);
extern void s390_emit_prologue (void);
extern void s390_emit_epilogue (void);
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index b79a2675909..cbb10093d47 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -1,5 +1,6 @@
/* Subroutines used for code generation on IBM S/390 and zSeries
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com) and
Ulrich Weigand (uweigand@de.ibm.com).
@@ -2072,8 +2073,6 @@ s390_decompose_address (register rtx addr, struct s390_address *out)
&& frame_pointer_needed
&& REGNO (base) == HARD_FRAME_POINTER_REGNUM)
|| REGNO (base) == ARG_POINTER_REGNUM
- || (REGNO (base) >= FIRST_VIRTUAL_REGISTER
- && REGNO (base) <= LAST_VIRTUAL_REGISTER)
|| (flag_pic
&& REGNO (base) == PIC_OFFSET_TABLE_REGNUM))
pointer = base_ptr = TRUE;
@@ -2099,8 +2098,6 @@ s390_decompose_address (register rtx addr, struct s390_address *out)
&& frame_pointer_needed
&& REGNO (indx) == HARD_FRAME_POINTER_REGNUM)
|| REGNO (indx) == ARG_POINTER_REGNUM
- || (REGNO (indx) >= FIRST_VIRTUAL_REGISTER
- && REGNO (indx) <= LAST_VIRTUAL_REGISTER)
|| (flag_pic
&& REGNO (indx) == PIC_OFFSET_TABLE_REGNUM))
pointer = indx_ptr = TRUE;
@@ -4422,6 +4419,10 @@ s390_mainpool_start (void)
if (pool->size >= 4096)
{
+ /* We're going to chunkify the pool, so remove the main
+ pool placeholder insn. */
+ remove_insn (pool->pool_insn);
+
s390_free_pool (pool);
pool = NULL;
}
@@ -5259,6 +5260,11 @@ s390_return_addr_rtx (int count, rtx frame)
{
rtx addr;
+ /* Without backchain, we fail for all but the current frame. */
+
+ if (!TARGET_BACKCHAIN && count > 0)
+ return NULL_RTX;
+
/* For the current frame, we need to make sure the initial
value of RETURN_REGNUM is actually saved. */
@@ -5295,7 +5301,7 @@ s390_frame_info (void)
int i, j;
HOST_WIDE_INT fsize = get_frame_size ();
- if (fsize > 0x7fff0000)
+ if (!TARGET_64BIT && fsize > 0x7fff0000)
fatal_error ("Total size of local variables exceeds architecture limit.");
/* fprs 8 - 15 are caller saved for 64 Bit ABI. */
@@ -5368,7 +5374,7 @@ s390_frame_info (void)
/* Return offset between argument pointer and frame pointer
initially after prologue. */
-int
+HOST_WIDE_INT
s390_arg_frame_offset (void)
{
HOST_WIDE_INT fsize = get_frame_size ();
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index cbe02d657f8..d7616119ecb 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -1,5 +1,6 @@
/* Definitions of target machine for GNU compiler, for IBM S/390
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com) and
Ulrich Weigand (uweigand@de.ibm.com).
@@ -114,9 +115,9 @@ extern int target_flags;
#define TARGET_IEEE_FLOAT 1
#ifdef DEFAULT_TARGET_64BIT
-#define TARGET_DEFAULT 0x33
+#define TARGET_DEFAULT 0x31
#else
-#define TARGET_DEFAULT 0x3
+#define TARGET_DEFAULT 0x1
#endif
#define TARGET_SWITCHES \
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 215848b9f1d..c123104ba85 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -1,5 +1,6 @@
;;- Machine description for GNU compiler -- S/390 / zSeries version.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+;; Free Software Foundation, Inc.
;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and
;; Ulrich Weigand (uweigand@de.ibm.com).
@@ -432,13 +433,31 @@
}
[(set_attr "op_type" "RI")])
-(define_insn "*tmqi_ext"
+(define_insn "*tmqisi_ext"
[(set (reg 33)
(compare (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q,S")
(match_operand:SI 1 "const_int_operand" "n,n")
(match_operand:SI 2 "const_int_operand" "n,n"))
(const_int 0)))]
- "s390_match_ccmode(insn, CCTmode)
+ "!TARGET_64BIT && s390_match_ccmode(insn, CCTmode)
+ && INTVAL (operands[1]) >= 1 && INTVAL (operands[2]) >= 0
+ && INTVAL (operands[1]) + INTVAL (operands[2]) <= 8"
+{
+ int block = (1 << INTVAL (operands[1])) - 1;
+ int shift = 8 - INTVAL (operands[1]) - INTVAL (operands[2]);
+
+ operands[2] = GEN_INT (block << shift);
+ return which_alternative == 0 ? "tm\t%0,%b2" : "tmy\t%0,%b2";
+}
+ [(set_attr "op_type" "SI,SIY")])
+
+(define_insn "*tmqidi_ext"
+ [(set (reg 33)
+ (compare (zero_extract:DI (match_operand:QI 0 "memory_operand" "Q,S")
+ (match_operand:SI 1 "const_int_operand" "n,n")
+ (match_operand:SI 2 "const_int_operand" "n,n"))
+ (const_int 0)))]
+ "TARGET_64BIT && s390_match_ccmode(insn, CCTmode)
&& INTVAL (operands[1]) >= 1 && INTVAL (operands[2]) >= 0
&& INTVAL (operands[1]) + INTVAL (operands[2]) <= 8"
{
@@ -450,6 +469,7 @@
}
[(set_attr "op_type" "SI,SIY")])
+
; Test-under-Mask instructions
(define_insn "*tmdi_mem"
@@ -1170,6 +1190,52 @@
[(set (match_dup 0) (match_dup 2))]
"operands[2] = get_pool_constant (operands[1]);")
+(define_insn "*la_64"
+ [(set (match_operand:DI 0 "register_operand" "=d,d")
+ (match_operand:QI 1 "address_operand" "U,W"))]
+ "TARGET_64BIT"
+ "@
+ la\t%0,%a1
+ lay\t%0,%a1"
+ [(set_attr "op_type" "RX,RXY")
+ (set_attr "type" "la")])
+
+(define_peephole2
+ [(parallel
+ [(set (match_operand:DI 0 "register_operand" "")
+ (match_operand:QI 1 "address_operand" ""))
+ (clobber (reg:CC 33))])]
+ "TARGET_64BIT
+ && strict_memory_address_p (VOIDmode, operands[1])
+ && preferred_la_operand_p (operands[1])"
+ [(set (match_dup 0) (match_dup 1))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:DI 0 "register_operand" "")
+ (match_operand:DI 1 "register_operand" ""))
+ (parallel
+ [(set (match_dup 0)
+ (plus:DI (match_dup 0)
+ (match_operand:DI 2 "nonmemory_operand" "")))
+ (clobber (reg:CC 33))])]
+ "TARGET_64BIT
+ && !reg_overlap_mentioned_p (operands[0], operands[2])
+ && strict_memory_address_p (VOIDmode, gen_rtx_PLUS (DImode, operands[1], operands[2]))
+ && preferred_la_operand_p (gen_rtx_PLUS (DImode, operands[1], operands[2]))"
+ [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_expand "reload_indi"
+ [(parallel [(match_operand:DI 0 "register_operand" "=a")
+ (match_operand:DI 1 "s390_plus_operand" "")
+ (match_operand:DI 2 "register_operand" "=&a")])]
+ "TARGET_64BIT"
+{
+ s390_expand_plus_operand (operands[0], operands[1], operands[2]);
+ DONE;
+})
+
;
; movsi instruction pattern(s).
;
@@ -1266,6 +1332,88 @@
[(set (match_dup 0) (match_dup 2))]
"operands[2] = get_pool_constant (operands[1]);")
+(define_insn "*la_31"
+ [(set (match_operand:SI 0 "register_operand" "=d,d")
+ (match_operand:QI 1 "address_operand" "U,W"))]
+ "!TARGET_64BIT && legitimate_la_operand_p (operands[1])"
+ "@
+ la\t%0,%a1
+ lay\t%0,%a1"
+ [(set_attr "op_type" "RX,RXY")
+ (set_attr "type" "la")])
+
+(define_peephole2
+ [(parallel
+ [(set (match_operand:SI 0 "register_operand" "")
+ (match_operand:QI 1 "address_operand" ""))
+ (clobber (reg:CC 33))])]
+ "!TARGET_64BIT
+ && strict_memory_address_p (VOIDmode, operands[1])
+ && preferred_la_operand_p (operands[1])"
+ [(set (match_dup 0) (match_dup 1))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (match_operand:SI 1 "register_operand" ""))
+ (parallel
+ [(set (match_dup 0)
+ (plus:SI (match_dup 0)
+ (match_operand:SI 2 "nonmemory_operand" "")))
+ (clobber (reg:CC 33))])]
+ "!TARGET_64BIT
+ && !reg_overlap_mentioned_p (operands[0], operands[2])
+ && strict_memory_address_p (VOIDmode, gen_rtx_PLUS (SImode, operands[1], operands[2]))
+ && preferred_la_operand_p (gen_rtx_PLUS (SImode, operands[1], operands[2]))"
+ [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_insn "*la_31_and"
+ [(set (match_operand:SI 0 "register_operand" "=d,d")
+ (and:SI (match_operand:QI 1 "address_operand" "U,W")
+ (const_int 2147483647)))]
+ "!TARGET_64BIT"
+ "@
+ la\t%0,%a1
+ lay\t%0,%a1"
+ [(set_attr "op_type" "RX,RXY")
+ (set_attr "type" "la")])
+
+(define_insn_and_split "*la_31_and_cc"
+ [(set (match_operand:SI 0 "register_operand" "=d")
+ (and:SI (match_operand:QI 1 "address_operand" "p")
+ (const_int 2147483647)))
+ (clobber (reg:CC 33))]
+ "!TARGET_64BIT"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 0)
+ (and:SI (match_dup 1) (const_int 2147483647)))]
+ ""
+ [(set_attr "op_type" "RX")
+ (set_attr "type" "la")])
+
+(define_insn "force_la_31"
+ [(set (match_operand:SI 0 "register_operand" "=d,d")
+ (match_operand:QI 1 "address_operand" "U,W"))
+ (use (const_int 0))]
+ "!TARGET_64BIT"
+ "@
+ la\t%0,%a1
+ lay\t%0,%a1"
+ [(set_attr "op_type" "RX")
+ (set_attr "type" "la")])
+
+(define_expand "reload_insi"
+ [(parallel [(match_operand:SI 0 "register_operand" "=a")
+ (match_operand:SI 1 "s390_plus_operand" "")
+ (match_operand:SI 2 "register_operand" "=&a")])]
+ "!TARGET_64BIT"
+{
+ s390_expand_plus_operand (operands[0], operands[1], operands[2]);
+ DONE;
+})
+
;
; movhi instruction pattern(s).
;
@@ -2391,10 +2539,12 @@
"lgb\t%0,%1"
[(set_attr "op_type" "RXY")])
-(define_split
- [(set (match_operand:DI 0 "register_operand" "")
- (sign_extend:DI (match_operand:QI 1 "s_operand" "")))]
- "TARGET_64BIT && !TARGET_LONG_DISPLACEMENT && !reload_completed"
+(define_insn_and_split "*extendqidi2_short_displ"
+ [(set (match_operand:DI 0 "register_operand" "=d")
+ (sign_extend:DI (match_operand:QI 1 "s_operand" "Q")))]
+ "TARGET_64BIT && !TARGET_LONG_DISPLACEMENT"
+ "#"
+ "&& reload_completed"
[(parallel
[(set (match_dup 0) (unspec:DI [(match_dup 1)] UNSPEC_SETHIGH))
(clobber (reg:CC 33))])
@@ -2453,10 +2603,12 @@
"lb\t%0,%1"
[(set_attr "op_type" "RXY")])
-(define_split
- [(set (match_operand:SI 0 "register_operand" "")
- (sign_extend:SI (match_operand:QI 1 "s_operand" "")))]
- "!TARGET_LONG_DISPLACEMENT && !reload_completed"
+(define_insn_and_split "*extendsiqi2_short_displ"
+ [(set (match_operand:SI 0 "register_operand" "=d")
+ (sign_extend:SI (match_operand:QI 1 "s_operand" "Q")))]
+ "!TARGET_LONG_DISPLACEMENT"
+ "#"
+ "&& reload_completed"
[(parallel
[(set (match_dup 0) (unspec:SI [(match_dup 1)] UNSPEC_SETHIGH))
(clobber (reg:CC 33))])
@@ -3402,53 +3554,6 @@
""
"")
-(define_insn "*la_64"
- [(set (match_operand:DI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))]
- "TARGET_64BIT"
- "@
- la\t%0,%a1
- lay\t%0,%a1"
- [(set_attr "op_type" "RX,RXY")
- (set_attr "type" "la")])
-
-(define_peephole2
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "")
- (match_operand:QI 1 "address_operand" ""))
- (clobber (reg:CC 33))])]
- "TARGET_64BIT
- && strict_memory_address_p (VOIDmode, operands[1])
- && preferred_la_operand_p (operands[1])"
- [(set (match_dup 0) (match_dup 1))]
- "")
-
-(define_peephole2
- [(set (match_operand:DI 0 "register_operand" "")
- (match_operand:DI 1 "register_operand" ""))
- (parallel
- [(set (match_dup 0)
- (plus:DI (match_dup 0)
- (match_operand:DI 2 "nonmemory_operand" "")))
- (clobber (reg:CC 33))])]
- "TARGET_64BIT
- && !reg_overlap_mentioned_p (operands[0], operands[2])
- && strict_memory_address_p (VOIDmode, gen_rtx_PLUS (DImode, operands[1], operands[2]))
- && preferred_la_operand_p (gen_rtx_PLUS (DImode, operands[1], operands[2]))"
- [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]
- "")
-
-(define_expand "reload_indi"
- [(parallel [(match_operand:DI 0 "register_operand" "=a")
- (match_operand:DI 1 "s390_plus_operand" "")
- (match_operand:DI 2 "register_operand" "=&a")])]
- "TARGET_64BIT"
-{
- s390_expand_plus_operand (operands[0], operands[1], operands[2]);
- DONE;
-})
-
-
;
; addsi3 instruction pattern(s).
;
@@ -3582,89 +3687,6 @@
ay\t%0,%2"
[(set_attr "op_type" "RR,RI,RX,RXY")])
-(define_insn "*la_31"
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))]
- "!TARGET_64BIT && legitimate_la_operand_p (operands[1])"
- "@
- la\t%0,%a1
- lay\t%0,%a1"
- [(set_attr "op_type" "RX,RXY")
- (set_attr "type" "la")])
-
-(define_peephole2
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:QI 1 "address_operand" ""))
- (clobber (reg:CC 33))])]
- "!TARGET_64BIT
- && strict_memory_address_p (VOIDmode, operands[1])
- && preferred_la_operand_p (operands[1])"
- [(set (match_dup 0) (match_dup 1))]
- "")
-
-(define_peephole2
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "register_operand" ""))
- (parallel
- [(set (match_dup 0)
- (plus:SI (match_dup 0)
- (match_operand:SI 2 "nonmemory_operand" "")))
- (clobber (reg:CC 33))])]
- "!TARGET_64BIT
- && !reg_overlap_mentioned_p (operands[0], operands[2])
- && strict_memory_address_p (VOIDmode, gen_rtx_PLUS (SImode, operands[1], operands[2]))
- && preferred_la_operand_p (gen_rtx_PLUS (SImode, operands[1], operands[2]))"
- [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]
- "")
-
-(define_insn "*la_31_and"
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (and:SI (match_operand:QI 1 "address_operand" "U,W")
- (const_int 2147483647)))]
- "!TARGET_64BIT"
- "@
- la\t%0,%a1
- lay\t%0,%a1"
- [(set_attr "op_type" "RX,RXY")
- (set_attr "type" "la")])
-
-(define_insn_and_split "*la_31_and_cc"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (and:SI (match_operand:QI 1 "address_operand" "p")
- (const_int 2147483647)))
- (clobber (reg:CC 33))]
- "!TARGET_64BIT"
- "#"
- "&& reload_completed"
- [(set (match_dup 0)
- (and:SI (match_dup 1) (const_int 2147483647)))]
- ""
- [(set_attr "op_type" "RX")
- (set_attr "type" "la")])
-
-(define_insn "force_la_31"
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))
- (use (const_int 0))]
- "!TARGET_64BIT"
- "@
- la\t%0,%a1
- lay\t%0,%a1"
- [(set_attr "op_type" "RX")
- (set_attr "type" "la")])
-
-(define_expand "reload_insi"
- [(parallel [(match_operand:SI 0 "register_operand" "=a")
- (match_operand:SI 1 "s390_plus_operand" "")
- (match_operand:SI 2 "register_operand" "=&a")])]
- "!TARGET_64BIT"
-{
- s390_expand_plus_operand (operands[0], operands[1], operands[2]);
- DONE;
-})
-
-
;
; adddf3 instruction pattern(s).
;
@@ -4086,7 +4108,7 @@
(define_insn "*subdf3_cc"
[(set (reg 33)
- (compare (minus:DF (match_operand:DF 1 "nonimmediate_operand" "%0,0")
+ (compare (minus:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")
(match_operand:DF 2 "general_operand" "f,R"))
(match_operand:DF 3 "const0_operand" "")))
(set (match_operand:DF 0 "register_operand" "=f,f")
@@ -4100,7 +4122,7 @@
(define_insn "*subdf3_cconly"
[(set (reg 33)
- (compare (minus:DF (match_operand:DF 1 "nonimmediate_operand" "%0,0")
+ (compare (minus:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")
(match_operand:DF 2 "general_operand" "f,R"))
(match_operand:DF 3 "const0_operand" "")))
(clobber (match_scratch:DF 0 "=f,f"))]
@@ -4150,7 +4172,7 @@
(define_insn "*subsf3_cc"
[(set (reg 33)
- (compare (minus:SF (match_operand:SF 1 "nonimmediate_operand" "%0,0")
+ (compare (minus:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")
(match_operand:SF 2 "general_operand" "f,R"))
(match_operand:SF 3 "const0_operand" "")))
(set (match_operand:SF 0 "register_operand" "=f,f")
@@ -4164,7 +4186,7 @@
(define_insn "*subsf3_cconly"
[(set (reg 33)
- (compare (minus:SF (match_operand:SF 1 "nonimmediate_operand" "%0,0")
+ (compare (minus:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")
(match_operand:SF 2 "general_operand" "f,R"))
(match_operand:SF 3 "const0_operand" "")))
(clobber (match_scratch:SF 0 "=f,f"))]
@@ -4697,7 +4719,7 @@
(ashift:DI
(zero_extend:DI
(truncate:SI
- (mod:DI (match_dup 1) (sign_extend:SI (match_dup 2)))))
+ (mod:DI (match_dup 1) (sign_extend:DI (match_dup 2)))))
(const_int 32))))]
"!TARGET_64BIT"
"@
@@ -7246,7 +7268,7 @@
(plus (reg 15) (match_operand 1 "general_operand" "")))
(set (match_operand 0 "general_operand" "")
(reg 15))]
- ""
+ "TARGET_BACKCHAIN"
{
rtx stack = gen_rtx (REG, Pmode, STACK_POINTER_REGNUM);
rtx chain = gen_rtx (MEM, Pmode, stack);
diff --git a/gcc/config/sh/netbsd-elf.h b/gcc/config/sh/netbsd-elf.h
index 7c52aa67ac3..bb8d0339837 100644
--- a/gcc/config/sh/netbsd-elf.h
+++ b/gcc/config/sh/netbsd-elf.h
@@ -1,5 +1,5 @@
/* Definitions for SH running NetBSD using ELF
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Wasabi Systems, Inc.
This file is part of GCC.
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 757f5aa1ee8..be2feb08dd9 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -49,6 +49,7 @@ Boston, MA 02111-1307, USA. */
#include "ra.h"
#include "cfglayout.h"
#include "intl.h"
+#include "ggc.h"
int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch;
@@ -1095,7 +1096,7 @@ output_movedouble (rtx insn ATTRIBUTE_UNUSED, rtx operands[],
static void
print_slot (rtx insn)
{
- final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 0, 1);
+ final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
@@ -6774,8 +6775,8 @@ sh_handle_sp_switch_attribute (tree *node, tree name, tree args,
}
else
{
- char *s = ggc_strdup (TREE_STRING_POINTER (TREE_VALUE (args)));
- sp_switch = gen_rtx_SYMBOL_REF (VOIDmode, s);
+ sp_switch = gen_rtx_SYMBOL_REF (VOIDmode,
+ TREE_STRING_POINTER (TREE_VALUE (args)));
}
return NULL_TREE;
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index d035f67f36a..adde03bb07b 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003 Free Software Foundation, Inc.
+ 2003, 2004 Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com).
Improved by Jim Wilson (wilson@cygnus.com).
diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux
index c3c4f9e8a1b..be38d114d05 100644
--- a/gcc/config/sh/t-linux
+++ b/gcc/config/sh/t-linux
@@ -27,9 +27,9 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \
) > $(SHLIB_SOLINK)
SHLIB_INSTALL = \
- $$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+ $$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \
- $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
- rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
+ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
+ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(INSTALL_DATA) $(SHLIB_SOLINK) \
- $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
diff --git a/gcc/config/sh/vxworks.h b/gcc/config/sh/vxworks.h
index 4201028bb0d..11dd1e187aa 100644
--- a/gcc/config/sh/vxworks.h
+++ b/gcc/config/sh/vxworks.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GCC,
for SuperH with targeting the VXWorks run time environment.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Contributed by CodeSourcery, LLC.
This file is part of GCC.
diff --git a/gcc/config/sparc/freebsd.h b/gcc/config/sparc/freebsd.h
index f308263d36d..4f4d0e16d27 100644
--- a/gcc/config/sparc/freebsd.h
+++ b/gcc/config/sparc/freebsd.h
@@ -18,6 +18,10 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#define SUBTARGET_EXTRA_SPECS \
+ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
+
/* FreeBSD needs the platform name (sparc64) defined.
Emacs needs to know if the arch is 64 or 32-bits. */
@@ -35,7 +39,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
+ %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
%{static:-Bstatic}}"
diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
index 8af7c5a0259..76213fef4b4 100644
--- a/gcc/config/sparc/linux.h
+++ b/gcc/config/sparc/linux.h
@@ -250,6 +250,8 @@ do { \
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define TARGET_HAS_F_SETLKW
+
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
index 2969880edad..f96d297a719 100644
--- a/gcc/config/sparc/linux64.h
+++ b/gcc/config/sparc/linux64.h
@@ -328,6 +328,8 @@ do { \
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#define TARGET_HAS_F_SETLKW
+
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
diff --git a/gcc/config/sparc/sol2-bi.h b/gcc/config/sparc/sol2-bi.h
index 0a763748d85..43180c971bd 100644
--- a/gcc/config/sparc/sol2-bi.h
+++ b/gcc/config/sparc/sol2-bi.h
@@ -18,6 +18,7 @@
#undef ASM_CPU32_DEFAULT_SPEC
#define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plus"
#endif
+
#if TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc
#undef CPP_CPU64_DEFAULT_SPEC
#define CPP_CPU64_DEFAULT_SPEC ""
@@ -27,6 +28,15 @@
#define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG "a"
#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3
+#undef CPP_CPU64_DEFAULT_SPEC
+#define CPP_CPU64_DEFAULT_SPEC ""
+#undef ASM_CPU32_DEFAULT_SPEC
+#define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusb"
+#undef ASM_CPU64_DEFAULT_SPEC
+#define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG "b"
+#endif
+
#if DEFAULT_ARCH32_P
#define DEF_ARCH32_SPEC(__str) "%{!m64:" __str "}"
#define DEF_ARCH64_SPEC(__str) "%{m64:" __str "}"
@@ -45,15 +55,16 @@
%{mcpu=sparclite|mcpu-f930|mcpu=f934:-D__sparclite__} \
%{mcpu=v8:" DEF_ARCH32_SPEC("-D__sparcv8") "} \
%{mcpu=supersparc:-D__supersparc__ " DEF_ARCH32_SPEC("-D__sparcv8") "} \
-%{mcpu=v9|mcpu=ultrasparc:" DEF_ARCH32_SPEC("-D__sparcv8") "} \
+%{mcpu=v9|mcpu=ultrasparc|mcpu=ultrasparc3:" DEF_ARCH32_SPEC("-D__sparcv8") "} \
%{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:%(cpp_cpu_default)}}}}}}} \
"
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC "\
-%{mcpu=ultrasparc:" DEF_ARCH32_SPEC("-xarch=v8plusa") DEF_ARCH64_SPEC(AS_SPARC64_FLAG "a") "} \
%{mcpu=v9:" DEF_ARCH32_SPEC("-xarch=v8plus") DEF_ARCH64_SPEC(AS_SPARC64_FLAG) "} \
-%{!mcpu=ultrasparc:%{!mcpu=v9:%{mcpu*:" DEF_ARCH32_SPEC("-xarch=v8") DEF_ARCH64_SPEC(AS_SPARC64_FLAG) "}}} \
+%{mcpu=ultrasparc:" DEF_ARCH32_SPEC("-xarch=v8plusa") DEF_ARCH64_SPEC(AS_SPARC64_FLAG "a") "} \
+%{mcpu=ultrasparc3:" DEF_ARCH32_SPEC("-xarch=v8plusb") DEF_ARCH64_SPEC(AS_SPARC64_FLAG "b") "} \
+%{!mcpu=ultrasparc3:%{!mcpu=ultrasparc:%{!mcpu=v9:%{mcpu*:" DEF_ARCH32_SPEC("-xarch=v8") DEF_ARCH64_SPEC(AS_SPARC64_FLAG) "}}}} \
%{!mcpu*:%(asm_cpu_default)} \
"
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 53c364daade..11389419900 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GCC, for SPARC running Solaris 2
- Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+ Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004
Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@netcom.com).
Additional changes by David V. Henkel-Wallace (gumby@cygnus.com).
@@ -36,11 +36,16 @@ Boston, MA 02111-1307, USA. */
#define ASM_CPU_DEFAULT_SPEC "-xarch=v8plusa"
#endif
+#if TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3
+#undef ASM_CPU_DEFAULT_SPEC
+#define ASM_CPU_DEFAULT_SPEC "-xarch=v8plusb"
+#endif
+
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC "\
-%{mcpu=v8plus:-xarch=v8plus} \
%{mcpu=v9:-xarch=v8plus} \
%{mcpu=ultrasparc:-xarch=v8plusa} \
+%{mcpu=ultrasparc3:-xarch=v8plusb} \
%{!mcpu*:%(asm_cpu_default)} \
"
@@ -81,6 +86,33 @@ Boston, MA 02111-1307, USA. */
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
sprintf ((LABEL), "*.L%s%ld", (PREFIX), (long)(NUM))
+/* The native TLS-enabled assembler requires the directive #tls_object
+ to be put on objects in TLS sections (as of v7.1). This is not
+ required by the GNU assembler but supported on SPARC. */
+#undef ASM_DECLARE_OBJECT_NAME
+#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
+ do \
+ { \
+ HOST_WIDE_INT size; \
+ \
+ if (DECL_THREAD_LOCAL (DECL)) \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "tls_object"); \
+ else \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
+ \
+ size_directive_output = 0; \
+ if (!flag_inhibit_size_directive \
+ && (DECL) && DECL_SIZE (DECL)) \
+ { \
+ size_directive_output = 1; \
+ size = int_size_in_bytes (TREE_TYPE (DECL)); \
+ ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \
+ } \
+ \
+ ASM_OUTPUT_LABEL (FILE, NAME); \
+ } \
+ while (0)
+
#undef ENDFILE_SPEC
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index a3fdcc6cdb2..6b378b9e4a0 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for SPARC.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
at Cygnus Support.
@@ -137,6 +137,7 @@ static void sparc_init_modes (void);
static int save_regs (FILE *, int, int, const char *, int, int, HOST_WIDE_INT);
static int restore_regs (FILE *, int, int, const char *, int, int);
static void build_big_number (FILE *, HOST_WIDE_INT, const char *);
+static void scan_record_type (tree, int *, int *, int *);
static int function_arg_slotno (const CUMULATIVE_ARGS *, enum machine_mode,
tree, int, int, int *, int *);
@@ -3103,7 +3104,7 @@ static GTY(()) rtx global_offset_table;
/* The function we use to get at it. */
static GTY(()) rtx get_pc_symbol;
-static char get_pc_symbol_name[256];
+static GTY(()) char get_pc_symbol_name[256];
/* Ensure that we are not using patterns that are not OK with PIC. */
@@ -4539,7 +4540,7 @@ sparc_nonflat_function_epilogue (FILE *file,
? "\treturn\t%i7+12\n"
: "\treturn\t%i7+8\n", file);
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, 0, 0);
+ file, 1, 0, 0, NULL);
}
else
{
@@ -4564,7 +4565,7 @@ sparc_nonflat_function_epilogue (FILE *file,
insn = emit_jump_insn (insn);
sparc_emitting_epilogue = true;
- final_scan_insn (insn, file, 1, 0, 1);
+ final_scan_insn (insn, file, 1, 0, 1, NULL);
sparc_emitting_epilogue = false;
}
}
@@ -4586,7 +4587,7 @@ sparc_nonflat_function_epilogue (FILE *file,
abort ();
fprintf (file, "\t%s\n", ret);
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, 0, 1);
+ file, 1, 0, 1, NULL);
}
/* Output 'nop' instead of 'sub %sp,-0,%sp' when no frame, so as to
avoid generating confusing assembly language output. */
@@ -4629,7 +4630,7 @@ output_sibcall (rtx insn, rtx call_operand)
if (! delay)
abort ();
- final_scan_insn (delay, asm_out_file, 1, 0, 1);
+ final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
PATTERN (delay) = gen_blockage ();
INSN_CODE (delay) = -1;
delay_slot = 0;
@@ -4659,7 +4660,7 @@ output_sibcall (rtx insn, rtx call_operand)
if (! delay)
abort ();
- final_scan_insn (delay, asm_out_file, 1, 0, 1);
+ final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
PATTERN (delay) = gen_blockage ();
INSN_CODE (delay) = -1;
delay_slot = 0;
@@ -4816,8 +4817,39 @@ init_cumulative_args (struct sparc_args *cum, tree fntype,
cum->libcall_p = fntype == 0;
}
+/* Scan the record type TYPE and return the following predicates:
+ - INTREGS_P: the record contains at least one field or sub-field
+ that is eligible for promotion in integer registers.
+ - FP_REGS_P: the record contains at least one field or sub-field
+ that is eligible for promotion in floating-point registers.
+ - PACKED_P: the record contains at least one field that is packed.
+
+ Sub-fields are not taken into account for the PACKED_P predicate. */
+
+static void
+scan_record_type (tree type, int *intregs_p, int *fpregs_p, int *packed_p)
+{
+ tree field;
+
+ for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
+ {
+ if (TREE_CODE (field) == FIELD_DECL)
+ {
+ if (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE)
+ scan_record_type (TREE_TYPE (field), intregs_p, fpregs_p, 0);
+ else if (FLOAT_TYPE_P (TREE_TYPE (field)) && TARGET_FPU)
+ *fpregs_p = 1;
+ else
+ *intregs_p = 1;
+
+ if (packed_p && DECL_PACKED (field))
+ *packed_p = 1;
+ }
+ }
+}
+
/* Compute the slot number to pass an argument in.
- Returns the slot number or -1 if passing on the stack.
+ Return the slot number or -1 if passing on the stack.
CUM is a variable of type CUMULATIVE_ARGS which gives info about
the preceding args and about the function being called.
@@ -4858,19 +4890,27 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
See emit_call_1. */
return -1;
+ case TImode : case CTImode :
+ if (TARGET_ARCH64 && (slotno & 1) != 0)
+ slotno++, *ppadding = 1;
+ /* fallthrough */
+
case QImode : case CQImode :
case HImode : case CHImode :
case SImode : case CSImode :
case DImode : case CDImode :
- case TImode : case CTImode :
if (slotno >= SPARC_INT_ARG_MAX)
return -1;
regno = regbase + slotno;
break;
+ case TFmode : case TCmode :
+ if (TARGET_ARCH64 && (slotno & 1) != 0)
+ slotno++, *ppadding = 1;
+ /* fallthrough */
+
case SFmode : case SCmode :
case DFmode : case DCmode :
- case TFmode : case TCmode :
if (TARGET_ARCH32)
{
if (slotno >= SPARC_INT_ARG_MAX)
@@ -4879,9 +4919,6 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
}
else
{
- if ((mode == TFmode || mode == TCmode)
- && (slotno & 1) != 0)
- slotno++, *ppadding = 1;
if (TARGET_FPU && named)
{
if (slotno >= SPARC_FP_ARG_MAX)
@@ -4916,27 +4953,14 @@ function_arg_slotno (const struct sparc_args *cum, enum machine_mode mode,
}
else
{
- tree field;
- int intregs_p = 0, fpregs_p = 0;
- /* The ABI obviously doesn't specify how packed
- structures are passed. These are defined to be passed
- in int regs if possible, otherwise memory. */
- int packed_p = 0;
+ int intregs_p = 0, fpregs_p = 0, packed_p = 0;
- /* First see what kinds of registers we need. */
- for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
- {
- if (TREE_CODE (field) == FIELD_DECL)
- {
- if (TREE_CODE (TREE_TYPE (field)) == REAL_TYPE
- && TARGET_FPU)
- fpregs_p = 1;
- else
- intregs_p = 1;
- if (DECL_PACKED (field))
- packed_p = 1;
- }
- }
+ /* First see what kinds of registers we would need. */
+ scan_record_type (type, &intregs_p, &fpregs_p, &packed_p);
+
+ /* The ABI obviously doesn't specify how packed structures
+ are passed. These are defined to be passed in int regs
+ if possible, otherwise memory. */
if (packed_p || !named)
fpregs_p = 0, intregs_p = 1;
@@ -4972,7 +4996,7 @@ struct function_arg_record_value_parms
int named; /* whether the argument is named. */
int regbase; /* regno of the base register. */
int stack; /* 1 if part of the argument is on the stack. */
- int intoffset; /* offset of the pending integer field. */
+ int intoffset; /* offset of the first pending integer field. */
unsigned int nregs; /* number of words passed in registers. */
};
@@ -4983,6 +5007,7 @@ static void function_arg_record_value_2
static void function_arg_record_value_1
(tree, HOST_WIDE_INT, struct function_arg_record_value_parms *, bool);
static rtx function_arg_record_value (tree, enum machine_mode, int, int, int);
+static rtx function_arg_union_value (int, int);
/* A subroutine of function_arg_record_value. Traverse the structure
recursively and determine how many registers will be required. */
@@ -5029,20 +5054,20 @@ function_arg_record_value_1 (tree type, HOST_WIDE_INT startbitpos,
bitpos,
parms,
packed_p);
- else if ((TREE_CODE (TREE_TYPE (field)) == REAL_TYPE
- || (TREE_CODE (TREE_TYPE (field)) == COMPLEX_TYPE
- && (TREE_CODE (TREE_TYPE (TREE_TYPE (field)))
- == REAL_TYPE)))
- && TARGET_FPU
- && ! packed_p
- && parms->named)
+ else if (FLOAT_TYPE_P (TREE_TYPE (field))
+ && TARGET_FPU
+ && parms->named
+ && ! packed_p)
{
if (parms->intoffset != -1)
{
+ unsigned int startbit, endbit;
int intslots, this_slotno;
- intslots = (bitpos - parms->intoffset + BITS_PER_WORD - 1)
- / BITS_PER_WORD;
+ startbit = parms->intoffset & -BITS_PER_WORD;
+ endbit = (bitpos + BITS_PER_WORD - 1) & -BITS_PER_WORD;
+
+ intslots = (endbit - startbit) / BITS_PER_WORD;
this_slotno = parms->slotno + parms->intoffset
/ BITS_PER_WORD;
@@ -5121,6 +5146,7 @@ function_arg_record_value_3 (HOST_WIDE_INT bitpos,
this_slotno += 1;
intoffset = (intoffset | (UNITS_PER_WORD-1)) + 1;
+ mode = word_mode;
parms->nregs += 1;
intslots -= 1;
}
@@ -5166,13 +5192,10 @@ function_arg_record_value_2 (tree type, HOST_WIDE_INT startbitpos,
bitpos,
parms,
packed_p);
- else if ((TREE_CODE (TREE_TYPE (field)) == REAL_TYPE
- || (TREE_CODE (TREE_TYPE (field)) == COMPLEX_TYPE
- && (TREE_CODE (TREE_TYPE (TREE_TYPE (field)))
- == REAL_TYPE)))
- && TARGET_FPU
- && ! packed_p
- && parms->named)
+ else if (FLOAT_TYPE_P (TREE_TYPE (field))
+ && TARGET_FPU
+ && parms->named
+ && ! packed_p)
{
int this_slotno = parms->slotno + bitpos / BITS_PER_WORD;
int regno;
@@ -5248,6 +5271,7 @@ function_arg_record_value (tree type, enum machine_mode mode,
parms.intoffset = 0;
function_arg_record_value_1 (type, 0, &parms, false);
+ /* Take into account pending integer fields. */
if (parms.intoffset != -1)
{
unsigned int startbit, endbit;
@@ -5317,6 +5341,34 @@ function_arg_record_value (tree type, enum machine_mode mode,
return parms.ret;
}
+/* Used by function_arg and function_value to implement the conventions
+ of the 64-bit ABI for passing and returning unions.
+ Return an expression valid as a return value for the two macros
+ FUNCTION_ARG and FUNCTION_VALUE.
+
+ SIZE is the size in bytes of the union.
+ REGNO is the hard register the union will be passed in. */
+
+static rtx
+function_arg_union_value (int size, int regno)
+{
+ enum machine_mode mode;
+ rtx reg;
+
+ if (size <= UNITS_PER_WORD)
+ mode = word_mode;
+ else
+ mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0);
+
+ reg = gen_rtx_REG (mode, regno);
+
+ /* Unions are passed left-justified. */
+ return gen_rtx_PARALLEL (mode,
+ gen_rtvec (1, gen_rtx_EXPR_LIST (VOIDmode,
+ reg,
+ const0_rtx)));
+}
+
/* Handle the FUNCTION_ARG macro.
Determine where to put an argument to a function.
Value is zero to push the argument on the stack,
@@ -5353,13 +5405,32 @@ function_arg (const struct sparc_args *cum, enum machine_mode mode,
reg = gen_rtx_REG (mode, regno);
return reg;
}
+
+ if (type && TREE_CODE (type) == RECORD_TYPE)
+ {
+ /* Structures up to 16 bytes in size are passed in arg slots on the
+ stack and are promoted to registers where possible. */
+
+ if (int_size_in_bytes (type) > 16)
+ abort (); /* shouldn't get here */
+
+ return function_arg_record_value (type, mode, slotno, named, regbase);
+ }
+ else if (type && TREE_CODE (type) == UNION_TYPE)
+ {
+ HOST_WIDE_INT size = int_size_in_bytes (type);
+
+ if (size > 16)
+ abort (); /* shouldn't get here */
+ return function_arg_union_value (size, regno);
+ }
/* v9 fp args in reg slots beyond the int reg slots get passed in regs
but also have the slot allocated for them.
If no prototype is in scope fp values in register slots get passed
in two places, either fp regs and int regs or fp regs and memory. */
- if ((GET_MODE_CLASS (mode) == MODE_FLOAT
- || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
+ else if ((GET_MODE_CLASS (mode) == MODE_FLOAT
+ || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
&& SPARC_FP_REG_P (regno))
{
reg = gen_rtx_REG (mode, regno);
@@ -5423,27 +5494,6 @@ function_arg (const struct sparc_args *cum, enum machine_mode mode,
}
}
}
- else if (type && TREE_CODE (type) == RECORD_TYPE)
- {
- /* Structures up to 16 bytes in size are passed in arg slots on the
- stack and are promoted to registers where possible. */
-
- if (int_size_in_bytes (type) > 16)
- abort (); /* shouldn't get here */
-
- return function_arg_record_value (type, mode, slotno, named, regbase);
- }
- else if (type && TREE_CODE (type) == UNION_TYPE)
- {
- enum machine_mode mode;
- int bytes = int_size_in_bytes (type);
-
- if (bytes > 16)
- abort ();
-
- mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 0);
- reg = gen_rtx_REG (mode, regno);
- }
else
{
/* Scalar or complex int. */
@@ -5546,7 +5596,8 @@ function_arg_pass_by_reference (const struct sparc_args *cum ATTRIBUTE_UNUSED,
if (TARGET_ARCH32)
{
return ((type && AGGREGATE_TYPE_P (type))
- || mode == TFmode || mode == TCmode);
+ || mode == SCmode
+ || GET_MODE_SIZE (mode) > 8);
}
else
{
@@ -5628,12 +5679,13 @@ rtx
function_value (tree type, enum machine_mode mode, int incoming_p)
{
int regno;
- int regbase = (incoming_p
- ? SPARC_OUTGOING_INT_ARG_FIRST
- : SPARC_INCOMING_INT_ARG_FIRST);
if (TARGET_ARCH64 && type)
{
+ int regbase = (incoming_p
+ ? SPARC_OUTGOING_INT_ARG_FIRST
+ : SPARC_INCOMING_INT_ARG_FIRST);
+
if (TREE_CODE (type) == RECORD_TYPE)
{
/* Structures up to 32 bytes in size are passed in registers,
@@ -5644,6 +5696,15 @@ function_value (tree type, enum machine_mode mode, int incoming_p)
return function_arg_record_value (type, mode, 0, 1, regbase);
}
+ else if (TREE_CODE (type) == UNION_TYPE)
+ {
+ HOST_WIDE_INT size = int_size_in_bytes (type);
+
+ if (size > 32)
+ abort (); /* shouldn't get here */
+
+ return function_arg_union_value (size, regbase);
+ }
else if (AGGREGATE_TYPE_P (type))
{
/* All other aggregate types are passed in an integer register
@@ -5655,13 +5716,10 @@ function_value (tree type, enum machine_mode mode, int incoming_p)
mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 0);
}
+ else if (GET_MODE_CLASS (mode) == MODE_INT
+ && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
+ mode = word_mode;
}
-
- if (TARGET_ARCH64
- && GET_MODE_CLASS (mode) == MODE_INT
- && GET_MODE_SIZE (mode) < UNITS_PER_WORD
- && type && ! AGGREGATE_TYPE_P (type))
- mode = DImode;
if (incoming_p)
regno = BASE_RETURN_VALUE_REG (mode);
@@ -5750,8 +5808,8 @@ sparc_va_arg (tree valist, tree type)
else
{
if (AGGREGATE_TYPE_P (type)
- || TYPE_MODE (type) == TFmode
- || TYPE_MODE (type) == TCmode)
+ || TYPE_MODE (type) == SCmode
+ || GET_MODE_SIZE (TYPE_MODE (type)) > 8)
{
indirect = 1;
size = rsize = UNITS_PER_WORD;
@@ -7916,7 +7974,7 @@ sparc_flat_function_epilogue (FILE *file, HOST_WIDE_INT size)
{
if (size)
abort ();
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
}
else if (size > 4096)
@@ -8478,6 +8536,8 @@ sparc_elf_asm_named_section (const char *name, unsigned int flags)
fputs (",#alloc", asm_out_file);
if (flags & SECTION_WRITE)
fputs (",#write", asm_out_file);
+ if (flags & SECTION_TLS)
+ fputs (",#tls", asm_out_file);
if (flags & SECTION_CODE)
fputs (",#execinstr", asm_out_file);
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 06fd5ee328a..a9f6868cdc6 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1,8 +1,8 @@
/* Definitions of target machine for GNU compiler, for Sun SPARC.
Copyright (C) 1987, 1988, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com).
- 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
+ 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
at Cygnus Support.
This file is part of GCC.
@@ -1157,8 +1157,7 @@ extern int sparc_mode_class[];
#define RETURN_IN_MEMORY(TYPE) \
(TARGET_ARCH32 \
? (TYPE_MODE (TYPE) == BLKmode \
- || TYPE_MODE (TYPE) == TFmode \
- || TYPE_MODE (TYPE) == TCmode) \
+ || TYPE_MODE (TYPE) == TFmode) \
: (TYPE_MODE (TYPE) == BLKmode \
&& (unsigned HOST_WIDE_INT) int_size_in_bytes (TYPE) > 32))
@@ -1264,6 +1263,20 @@ enum reg_class { NO_REGS, FPCC_REGS, I64_REGS, GENERAL_REGS, FP_REGS,
{-1, -1, -1, 0x20}, /* GENERAL_OR_EXTRA_FP_REGS */ \
{-1, -1, -1, 0x3f}} /* ALL_REGS */
+/* Defines invalid mode changes. Borrowed from pa64-regs.h.
+
+ SImode loads to floating-point registers are not zero-extended.
+ The definition for LOAD_EXTEND_OP specifies that integer loads
+ narrower than BITS_PER_WORD will be zero-extended. As a result,
+ we inhibit changes from SImode unless they are to a mode that is
+ identical in size. */
+
+#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
+ (TARGET_ARCH64 \
+ && (FROM) == SImode \
+ && GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
+ ? reg_classes_intersect_p (CLASS, FP_REGS) : 0)
+
/* The same information, inverted:
Return the class number of the smallest class containing
reg number REGNO. This could be a conditional expression
@@ -1657,13 +1670,13 @@ extern char leaf_reg_remap[];
#define BASE_RETURN_VALUE_REG(MODE) \
(TARGET_ARCH64 \
? (TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 : 8) \
- : (((MODE) == SFmode || (MODE) == DFmode) && TARGET_FPU ? 32 : 8))
+ : (TARGET_FPU && FLOAT_MODE_P (MODE) && (MODE) != TFmode ? 32 : 8))
#define BASE_OUTGOING_VALUE_REG(MODE) \
(TARGET_ARCH64 \
? (TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 \
: TARGET_FLAT ? 8 : 24) \
- : (((MODE) == SFmode || (MODE) == DFmode) && TARGET_FPU ? 32 \
+ : (TARGET_FPU && FLOAT_MODE_P (MODE) && (MODE) != TFmode ? 32\
: (TARGET_FLAT ? 8 : 24)))
#define BASE_PASSING_ARG_REG(MODE) \
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 08434789c5a..14302804436 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -1,8 +1,8 @@
;; Machine description for SPARC chip for GCC
;; Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+;; 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by Michael Tiemann (tiemann@cygnus.com)
-;; 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
+;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
;; at Cygnus Support.
;; This file is part of GCC.
@@ -1818,8 +1818,8 @@
;; We always work with constants here.
(define_insn "*movhi_lo_sum"
[(set (match_operand:HI 0 "register_operand" "=r")
- (ior:HI (match_operand:HI 1 "arith_operand" "%r")
- (match_operand:HI 2 "arith_operand" "I")))]
+ (ior:HI (match_operand:HI 1 "register_operand" "%r")
+ (match_operand:HI 2 "small_int" "I")))]
""
"or\t%1, %2, %0")
@@ -8267,31 +8267,6 @@
[(set_attr "type" "multi")
(set_attr "length" "2")])
-;; Now peepholes to do a call followed by a jump.
-
-(define_peephole
- [(parallel [(set (match_operand 0 "" "")
- (call (mem:SI (match_operand:SI 1 "call_operand_address" "ps"))
- (match_operand 2 "" "")))
- (clobber (reg:SI 15))])
- (set (pc) (label_ref (match_operand 3 "" "")))]
- "short_branch (INSN_UID (insn), INSN_UID (operands[3]))
- && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))
- && sparc_cpu != PROCESSOR_ULTRASPARC
- && sparc_cpu != PROCESSOR_ULTRASPARC3"
- "call\t%a1, %2\n\tadd\t%%o7, (%l3-.-4), %%o7")
-
-(define_peephole
- [(parallel [(call (mem:SI (match_operand:SI 0 "call_operand_address" "ps"))
- (match_operand 1 "" ""))
- (clobber (reg:SI 15))])
- (set (pc) (label_ref (match_operand 2 "" "")))]
- "short_branch (INSN_UID (insn), INSN_UID (operands[2]))
- && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))
- && sparc_cpu != PROCESSOR_ULTRASPARC
- && sparc_cpu != PROCESSOR_ULTRASPARC3"
- "call\t%a0, %1\n\tadd\t%%o7, (%l2-.-4), %%o7")
-
;; ??? UltraSPARC-III note: A memory operation loading into the floating point register
;; ??? file, if it hits the prefetch cache, has a chance to dual-issue with other memory
;; ??? operations. With DFA we might be able to model this, but it requires a lot of
diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h
index a8c619e77a8..6658c3c16cc 100644
--- a/gcc/config/stormy16/stormy16.h
+++ b/gcc/config/stormy16/stormy16.h
@@ -1,5 +1,5 @@
/* Xstormy16 cpu description.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
diff --git a/gcc/config/t-slibgcc-elf-ver b/gcc/config/t-slibgcc-elf-ver
index a176b10fa0a..a4f8ef07c84 100644
--- a/gcc/config/t-slibgcc-elf-ver
+++ b/gcc/config/t-slibgcc-elf-ver
@@ -3,8 +3,9 @@
SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so
-SHLIB_SONAME = @shlib_so_name@.so.1
-SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.1
+SHLIB_SOVERSION = 1
+SHLIB_SONAME = @shlib_so_name@.so.$(SHLIB_SOVERSION)
+SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.$(SHLIB_SOVERSION)
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h
index cf7f09075c9..f240355093f 100644
--- a/gcc/config/xtensa/xtensa-protos.h
+++ b/gcc/config/xtensa/xtensa-protos.h
@@ -1,5 +1,5 @@
/* Prototypes of target machine for GNU compiler for Xtensa.
- Copyright 2001,2002,2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
@@ -68,14 +68,14 @@ extern int xtensa_expand_scc (rtx *);
extern int xtensa_expand_block_move (rtx *);
extern void xtensa_split_operand_pair (rtx *, enum machine_mode);
extern int xtensa_emit_move_sequence (rtx *, enum machine_mode);
-extern bool xtensa_copy_incoming_a7 (rtx *, enum machine_mode);
+extern rtx xtensa_copy_incoming_a7 (rtx);
extern void xtensa_emit_block_move (rtx *, rtx *, int);
extern void xtensa_expand_nonlocal_goto (rtx *);
extern void xtensa_emit_loop_end (rtx, rtx *);
extern char *xtensa_emit_call (int, rtx *);
#ifdef TREE_CODE
-extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx);
+extern void init_cumulative_args (CUMULATIVE_ARGS *, int);
extern void xtensa_va_start (tree, rtx);
extern rtx xtensa_va_arg (tree, tree);
#endif /* TREE_CODE */
@@ -89,7 +89,6 @@ extern enum reg_class xtensa_preferred_reload_class (rtx, enum reg_class, int);
extern enum reg_class xtensa_secondary_reload_class (enum reg_class,
enum machine_mode, rtx,
int);
-extern int a7_overlap_mentioned_p (rtx);
#endif /* RTX_CODE */
#ifdef TREE_CODE
diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
index e8926c9c1e3..733cc4a1a40 100644
--- a/gcc/config/xtensa/xtensa.c
+++ b/gcc/config/xtensa/xtensa.c
@@ -1,5 +1,5 @@
/* Subroutines for insn-output.c for Tensilica's Xtensa architecture.
- Copyright 2001,2002,2003 Free Software Foundation, Inc.
+ Copyright 2001,2002,2003,2004 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
@@ -91,7 +91,9 @@ const char *xtensa_st_opcodes[(int) MAX_MACHINE_MODE];
struct machine_function GTY(())
{
int accesses_prev_frame;
- bool incoming_a7_copied;
+ bool need_a7_copy;
+ bool vararg_a7;
+ rtx set_frame_ptr_insn;
};
/* Vector, indexed by hard register number, which contains 1 for a
@@ -1256,14 +1258,11 @@ xtensa_emit_move_sequence (rtx *operands, enum machine_mode mode)
}
}
- if (!(reload_in_progress | reload_completed))
- {
- if (!xtensa_valid_move (mode, operands))
- operands[1] = force_reg (mode, operands[1]);
+ if (!(reload_in_progress | reload_completed)
+ && !xtensa_valid_move (mode, operands))
+ operands[1] = force_reg (mode, operands[1]);
- if (xtensa_copy_incoming_a7 (operands, mode))
- return 1;
- }
+ operands[1] = xtensa_copy_incoming_a7 (operands[1]);
/* During reload we don't want to emit (subreg:X (mem:Y)) since that
instruction won't be recognized after reload, so we remove the
@@ -1294,69 +1293,114 @@ fixup_subreg_mem (rtx x)
}
-/* Check if this move is copying an incoming argument in a7. If so,
- emit the move, followed by the special "set_frame_ptr"
- unspec_volatile insn, at the very beginning of the function. This
- is necessary because the register allocator will ignore conflicts
- with a7 and may assign some other pseudo to a7. If that pseudo was
- assigned prior to this move, it would clobber the incoming argument
- in a7. By copying the argument out of a7 as the very first thing,
- and then immediately following that with an unspec_volatile to keep
- the scheduler away, we should avoid any problems. */
+/* Check if an incoming argument in a7 is expected to be used soon and
+ if OPND is a register or register pair that includes a7. If so,
+ create a new pseudo and copy a7 into that pseudo at the very
+ beginning of the function, followed by the special "set_frame_ptr"
+ unspec_volatile insn. The return value is either the original
+ operand, if it is not a7, or the new pseudo containing a copy of
+ the incoming argument. This is necessary because the register
+ allocator will ignore conflicts with a7 and may either assign some
+ other pseudo to a7 or use a7 as the hard_frame_pointer, clobbering
+ the incoming argument in a7. By copying the argument out of a7 as
+ the very first thing, and then immediately following that with an
+ unspec_volatile to keep the scheduler away, we should avoid any
+ problems. Putting the set_frame_ptr insn at the beginning, with
+ only the a7 copy before it, also makes it easier for the prologue
+ expander to initialize the frame pointer after the a7 copy and to
+ fix up the a7 copy to use the stack pointer instead of the frame
+ pointer. */
-bool
-xtensa_copy_incoming_a7 (rtx *operands, enum machine_mode mode)
+rtx
+xtensa_copy_incoming_a7 (rtx opnd)
{
- if (a7_overlap_mentioned_p (operands[1])
- && !cfun->machine->incoming_a7_copied)
+ rtx entry_insns = 0;
+ rtx reg, tmp;
+ enum machine_mode mode;
+
+ if (!cfun->machine->need_a7_copy)
+ return opnd;
+
+ /* This function should never be called again once a7 has been copied. */
+ if (cfun->machine->set_frame_ptr_insn)
+ abort ();
+
+ mode = GET_MODE (opnd);
+
+ /* The operand using a7 may come in a later instruction, so just return
+ the original operand if it doesn't use a7. */
+ reg = opnd;
+ if (GET_CODE (reg) == SUBREG)
{
- rtx mov;
- switch (mode)
- {
- case DFmode:
- mov = gen_movdf_internal (operands[0], operands[1]);
- break;
- case SFmode:
- mov = gen_movsf_internal (operands[0], operands[1]);
- break;
- case DImode:
- mov = gen_movdi_internal (operands[0], operands[1]);
- break;
- case SImode:
- mov = gen_movsi_internal (operands[0], operands[1]);
- break;
- case HImode:
- mov = gen_movhi_internal (operands[0], operands[1]);
- break;
- case QImode:
- mov = gen_movqi_internal (operands[0], operands[1]);
- break;
- default:
- abort ();
- }
+ if (SUBREG_BYTE (reg) != 0)
+ abort ();
+ reg = SUBREG_REG (reg);
+ }
+ if (GET_CODE (reg) != REG
+ || REGNO (reg) > A7_REG
+ || REGNO (reg) + HARD_REGNO_NREGS (A7_REG, mode) <= A7_REG)
+ return opnd;
- /* Insert the instructions before any other argument copies.
- (The set_frame_ptr insn comes _after_ the move, so push it
- out first.) */
- push_topmost_sequence ();
- emit_insn_after (gen_set_frame_ptr (), get_insns ());
- emit_insn_after (mov, get_insns ());
- pop_topmost_sequence ();
+ /* 1-word args will always be in a7; 2-word args in a6/a7. */
+ if (REGNO (reg) + HARD_REGNO_NREGS (A7_REG, mode) - 1 != A7_REG)
+ abort ();
- /* Ideally the incoming argument in a7 would only be copied
- once, since propagating a7 into the body of a function
- will almost certainly lead to errors. However, there is
- at least one harmless case (in GCSE) where the original
- copy from a7 is changed to copy into a new pseudo. Thus,
- we use a flag to only do this special treatment for the
- first copy of a7. */
+ cfun->machine->need_a7_copy = false;
- cfun->machine->incoming_a7_copied = true;
+ /* Copy a7 to a new pseudo at the function entry. Use gen_raw_REG to
+ create the REG for a7 so that hard_frame_pointer_rtx is not used. */
- return 1;
+ push_to_sequence (entry_insns);
+ tmp = gen_reg_rtx (mode);
+
+ switch (mode)
+ {
+ case DFmode:
+ case DImode:
+ emit_insn (gen_movsi_internal (gen_rtx_SUBREG (SImode, tmp, 0),
+ gen_rtx_REG (SImode, A7_REG - 1)));
+ emit_insn (gen_movsi_internal (gen_rtx_SUBREG (SImode, tmp, 4),
+ gen_raw_REG (SImode, A7_REG)));
+ break;
+ case SFmode:
+ emit_insn (gen_movsf_internal (tmp, gen_raw_REG (mode, A7_REG)));
+ break;
+ case SImode:
+ emit_insn (gen_movsi_internal (tmp, gen_raw_REG (mode, A7_REG)));
+ break;
+ case HImode:
+ emit_insn (gen_movhi_internal (tmp, gen_raw_REG (mode, A7_REG)));
+ break;
+ case QImode:
+ emit_insn (gen_movqi_internal (tmp, gen_raw_REG (mode, A7_REG)));
+ break;
+ default:
+ abort ();
}
- return 0;
+ cfun->machine->set_frame_ptr_insn = emit_insn (gen_set_frame_ptr ());
+ entry_insns = get_insns ();
+ end_sequence ();
+
+ if (cfun->machine->vararg_a7)
+ {
+ /* This is called from within builtin_savereg, so we're already
+ inside a start_sequence that will be placed at the start of
+ the function. */
+ emit_insn (entry_insns);
+ }
+ else
+ {
+ /* Put entry_insns after the NOTE that starts the function. If
+ this is inside a start_sequence, make the outer-level insn
+ chain current, so the code is placed at the start of the
+ function. */
+ push_topmost_sequence ();
+ emit_insn_after (entry_insns, get_insns ());
+ pop_topmost_sequence ();
+ }
+
+ return tmp;
}
@@ -1692,11 +1736,10 @@ xtensa_dbx_register_number (int regno)
/* Initialize CUMULATIVE_ARGS for a function. */
void
-init_cumulative_args (CUMULATIVE_ARGS *cum,
- tree fntype ATTRIBUTE_UNUSED,
- rtx libname ATTRIBUTE_UNUSED)
+init_cumulative_args (CUMULATIVE_ARGS *cum, int incoming)
{
cum->arg_words = 0;
+ cum->incoming = incoming;
}
@@ -1733,7 +1776,6 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
int regbase, words, max;
int *arg_words;
int regno;
- enum machine_mode result_mode;
arg_words = &cum->arg_words;
regbase = (incoming_p ? GP_ARG_FIRST : GP_OUTGOING_ARG_FIRST);
@@ -1750,33 +1792,11 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
return (rtx)0;
regno = regbase + *arg_words;
- result_mode = (mode == BLKmode ? TYPE_MODE (type) : mode);
- /* We need to make sure that references to a7 are represented with
- rtx that is not equal to hard_frame_pointer_rtx. For BLKmode and
- modes bigger than 2 words (because we only have patterns for
- modes of 2 words or smaller), we can't control the expansion
- unless we explicitly list the individual registers in a PARALLEL. */
+ if (cum->incoming && regno <= A7_REG && regno + words > A7_REG)
+ cfun->machine->need_a7_copy = true;
- if ((mode == BLKmode || words > 2)
- && regno < A7_REG
- && regno + words > A7_REG)
- {
- rtx result;
- int n;
-
- result = gen_rtx_PARALLEL (result_mode, rtvec_alloc (words));
- for (n = 0; n < words; n++)
- {
- XVECEXP (result, 0, n) =
- gen_rtx_EXPR_LIST (VOIDmode,
- gen_raw_REG (SImode, regno + n),
- GEN_INT (n * UNITS_PER_WORD));
- }
- return result;
- }
-
- return gen_raw_REG (result_mode, regno);
+ return gen_rtx_REG (mode, regno);
}
@@ -2225,41 +2245,18 @@ xtensa_expand_prologue (void)
if (frame_pointer_needed)
{
- rtx first, insn, set_frame_ptr_insn = 0;
-
- push_topmost_sequence ();
- first = get_insns ();
- pop_topmost_sequence ();
-
- /* Search all instructions, looking for the insn that sets up the
- frame pointer. This search will fail if the function does not
- have an incoming argument in $a7, but in that case, we can just
- set up the frame pointer at the very beginning of the
- function. */
-
- for (insn = first; insn; insn = NEXT_INSN (insn))
+ if (cfun->machine->set_frame_ptr_insn)
{
- rtx pat;
+ rtx first, insn;
- if (!INSN_P (insn))
- continue;
+ push_topmost_sequence ();
+ first = get_insns ();
+ pop_topmost_sequence ();
- pat = PATTERN (insn);
- if (GET_CODE (pat) == SET
- && GET_CODE (SET_SRC (pat)) == UNSPEC_VOLATILE
- && (XINT (SET_SRC (pat), 1) == UNSPECV_SET_FP))
- {
- set_frame_ptr_insn = insn;
- break;
- }
- }
-
- if (set_frame_ptr_insn)
- {
/* For all instructions prior to set_frame_ptr_insn, replace
hard_frame_pointer references with stack_pointer. */
for (insn = first;
- insn != set_frame_ptr_insn;
+ insn != cfun->machine->set_frame_ptr_insn;
insn = NEXT_INSN (insn))
{
if (INSN_P (insn))
@@ -2361,9 +2358,8 @@ xtensa_builtin_saveregs (void)
rtx gp_regs, dest;
int arg_words = current_function_arg_words;
int gp_left = MAX_ARGS_IN_REGISTERS - arg_words;
- int i;
- if (gp_left == 0)
+ if (gp_left <= 0)
return const0_rtx;
/* Allocate the general-purpose register space. */
@@ -2375,16 +2371,9 @@ xtensa_builtin_saveregs (void)
dest = change_address (gp_regs, SImode,
plus_constant (XEXP (gp_regs, 0),
arg_words * UNITS_PER_WORD));
-
- /* Note: Don't use move_block_from_reg() here because the incoming
- argument in a7 cannot be represented by hard_frame_pointer_rtx.
- Instead, call gen_raw_REG() directly so that we get a distinct
- instance of (REG:SI 7). */
- for (i = 0; i < gp_left; i++)
- {
- emit_move_insn (operand_subword (dest, i, 1, BLKmode),
- gen_raw_REG (SImode, GP_ARG_FIRST + arg_words + i));
- }
+ cfun->machine->need_a7_copy = true;
+ cfun->machine->vararg_a7 = true;
+ move_block_from_reg (GP_ARG_FIRST + arg_words, dest, gp_left);
return XEXP (gp_regs, 0);
}
@@ -2447,6 +2436,25 @@ xtensa_va_arg (tree valist, tree type)
rtx array, orig_ndx, r, addr, size, va_size;
rtx lab_false, lab_over, lab_false2;
+ /* Handle complex values as separate real and imaginary parts. */
+ if (TREE_CODE (type) == COMPLEX_TYPE)
+ {
+ rtx real_part, imag_part, concat_val, local_copy;
+
+ real_part = xtensa_va_arg (valist, TREE_TYPE (type));
+ imag_part = xtensa_va_arg (valist, TREE_TYPE (type));
+
+ /* Make a copy of the value in case the parts are not contiguous. */
+ real_part = gen_rtx_MEM (TYPE_MODE (TREE_TYPE (type)), real_part);
+ imag_part = gen_rtx_MEM (TYPE_MODE (TREE_TYPE (type)), imag_part);
+ concat_val = gen_rtx_CONCAT (TYPE_MODE (type), real_part, imag_part);
+
+ local_copy = assign_temp (type, 0, 1, 0);
+ emit_move_insn (local_copy, concat_val);
+
+ return XEXP (local_copy, 0);
+ }
+
f_stk = TYPE_FIELDS (va_list_type_node);
f_reg = TREE_CHAIN (f_stk);
f_ndx = TREE_CHAIN (f_reg);
@@ -2691,55 +2699,6 @@ order_regs_for_local_alloc (void)
}
-/* A customized version of reg_overlap_mentioned_p that only looks for
- references to a7 (as opposed to hard_frame_pointer_rtx). */
-
-int
-a7_overlap_mentioned_p (rtx x)
-{
- int i, j;
- unsigned int x_regno;
- const char *fmt;
-
- if (GET_CODE (x) == REG)
- {
- x_regno = REGNO (x);
- return (x != hard_frame_pointer_rtx
- && x_regno < A7_REG + 1
- && x_regno + HARD_REGNO_NREGS (A7_REG, GET_MODE (x)) > A7_REG);
- }
-
- if (GET_CODE (x) == SUBREG
- && GET_CODE (SUBREG_REG (x)) == REG
- && REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER)
- {
- x_regno = subreg_regno (x);
- return (SUBREG_REG (x) != hard_frame_pointer_rtx
- && x_regno < A7_REG + 1
- && x_regno + HARD_REGNO_NREGS (A7_REG, GET_MODE (x)) > A7_REG);
- }
-
- /* X does not match, so try its subexpressions. */
- fmt = GET_RTX_FORMAT (GET_CODE (x));
- for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)
- {
- if (fmt[i] == 'e')
- {
- if (a7_overlap_mentioned_p (XEXP (x, i)))
- return 1;
- }
- else if (fmt[i] == 'E')
- {
- for (j = XVECLEN (x, i) - 1; j >=0; j--)
- if (a7_overlap_mentioned_p (XVECEXP (x, i, j)))
- return 1;
- }
- }
-
- return 0;
-}
-
-
/* Some Xtensa targets support multiple bss sections. If the section
name ends with ".bss", add SECTION_BSS to the flags. */
diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
index a7f470ec0b5..88d656eae6c 100644
--- a/gcc/config/xtensa/xtensa.h
+++ b/gcc/config/xtensa/xtensa.h
@@ -1,5 +1,5 @@
/* Definitions of Tensilica's Xtensa target machine for GNU compiler.
- Copyright 2001,2002,2003 Free Software Foundation, Inc.
+ Copyright 2001,2002,2003,2004 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
@@ -106,6 +106,7 @@ extern unsigned xtensa_current_frame_size;
do { \
builtin_assert ("cpu=xtensa"); \
builtin_assert ("machine=xtensa"); \
+ builtin_define ("__xtensa__"); \
builtin_define ("__XTENSA__"); \
builtin_define (TARGET_BIG_ENDIAN ? "__XTENSA_EB__" : "__XTENSA_EL__"); \
if (!TARGET_HARD_FLOAT) \
@@ -763,23 +764,21 @@ extern enum reg_class xtensa_char_to_class[256];
#define FUNCTION_ARG_REGNO_P(N) \
((N) >= GP_OUTGOING_ARG_FIRST && (N) <= GP_OUTGOING_ARG_LAST)
-/* Define a data type for recording info about an argument list
- during the scan of that argument list. This data type should
- hold all necessary information about the function itself
- and about the args processed so far, enough to enable macros
- such as FUNCTION_ARG to determine where the next arg should go. */
-typedef struct xtensa_args {
- int arg_words; /* # total words the arguments take */
+/* Record the number of argument words seen so far, along with a flag to
+ indicate whether these are incoming arguments. (FUNCTION_INCOMING_ARG
+ is used for both incoming and outgoing args, so a separate flag is
+ needed. */
+typedef struct xtensa_args
+{
+ int arg_words;
+ int incoming;
} CUMULATIVE_ARGS;
-/* Initialize a variable CUM of type CUMULATIVE_ARGS
- for a call to a function whose data type is FNTYPE.
- For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT) \
- init_cumulative_args (&CUM, FNTYPE, LIBNAME)
+ init_cumulative_args (&CUM, 0)
#define INIT_CUMULATIVE_INCOMING_ARGS(CUM, FNTYPE, LIBNAME) \
- init_cumulative_args (&CUM, FNTYPE, LIBNAME)
+ init_cumulative_args (&CUM, 1)
/* Update the data in CUM to advance over an argument
of mode MODE and data type TYPE.
@@ -806,7 +805,6 @@ typedef struct xtensa_args {
? PARM_BOUNDARY \
: GET_MODE_ALIGNMENT (MODE)))
-
/* Nonzero if we do not know how to pass TYPE solely in registers.
We cannot do so in the following cases:
@@ -823,6 +821,9 @@ typedef struct xtensa_args {
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
|| TREE_ADDRESSABLE (TYPE)))
+/* Pass complex arguments independently. */
+#define SPLIT_COMPLEX_ARGS 1
+
/* Profiling Xtensa code is typically done with the built-in profiling
feature of Tensilica's instruction set simulator, which does not
require any compiler support. Profiling code on a real (i.e.,
@@ -1170,11 +1171,6 @@ typedef struct xtensa_args {
/* Prefer word-sized loads. */
#define SLOW_BYTE_ACCESS 1
-/* ??? Xtensa doesn't have any instructions that set integer values
- based on the results of comparisons, but the simplification code in
- the combiner also uses STORE_FLAG_VALUE. The default value (1) is
- fine for us, but (-1) might be better. */
-
/* Shift instructions ignore all but the low-order few bits. */
#define SHIFT_COUNT_TRUNCATED 1
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index 01ec40d63a7..acc77675d5d 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -1,5 +1,5 @@
;; GCC machine description for Tensilica's Xtensa architecture.
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
;; This file is part of GCC.
@@ -807,8 +807,7 @@
&& !register_operand (operands[1], DImode))
operands[1] = force_reg (DImode, operands[1]);
- if (xtensa_copy_incoming_a7 (operands, DImode))
- DONE;
+ operands[1] = xtensa_copy_incoming_a7 (operands[1]);
})
(define_insn_and_split "movdi_internal"
@@ -931,18 +930,15 @@
if (!TARGET_CONST16 && CONSTANT_P (operands[1]))
operands[1] = force_const_mem (SFmode, operands[1]);
- if (!(reload_in_progress | reload_completed))
- {
- if ((!register_operand (operands[0], SFmode)
- && !register_operand (operands[1], SFmode))
- || (FP_REG_P (xt_true_regnum (operands[0]))
- && (constantpool_mem_p (operands[1])
- || CONSTANT_P (operands[1]))))
- operands[1] = force_reg (SFmode, operands[1]);
-
- if (xtensa_copy_incoming_a7 (operands, SFmode))
- DONE;
- }
+ if ((!register_operand (operands[0], SFmode)
+ && !register_operand (operands[1], SFmode))
+ || (FP_REG_P (xt_true_regnum (operands[0]))
+ && !(reload_in_progress | reload_completed)
+ && (constantpool_mem_p (operands[1])
+ || CONSTANT_P (operands[1]))))
+ operands[1] = force_reg (SFmode, operands[1]);
+
+ operands[1] = xtensa_copy_incoming_a7 (operands[1]);
})
(define_insn "movsf_internal"
@@ -1016,8 +1012,7 @@
&& !register_operand (operands[1], DFmode))
operands[1] = force_reg (DFmode, operands[1]);
- if (xtensa_copy_incoming_a7 (operands, DFmode))
- DONE;
+ operands[1] = xtensa_copy_incoming_a7 (operands[1]);
})
(define_insn_and_split "movdf_internal"
@@ -1075,7 +1070,16 @@
;; Shift instructions.
-(define_insn "ashlsi3"
+(define_expand "ashlsi3"
+ [(set (match_operand:SI 0 "register_operand" "")
+ (ashift:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "arith_operand" "")))]
+ ""
+{
+ operands[1] = xtensa_copy_incoming_a7 (operands[1]);
+})
+
+(define_insn "ashlsi3_internal"
[(set (match_operand:SI 0 "register_operand" "=a,a")
(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
(match_operand:SI 2 "arith_operand" "J,r")))]
diff --git a/gcc/configure b/gcc/configure
index 34bf28a917f..69587ae1e88 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -308,7 +308,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP GNATBIND ac_ct_GNATBIND strict1_warn warn_cflags WERROR nocommon_flag EGREP valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep SET_MAKE AWK LN LN_S RANLIB ac_ct_RANLIB INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LIBICONV_DEP manext objext extra_modes_file FORBUILD PACKAGE VERSION USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS CROSS ALL SYSTEM_HEADER_DIR inhibit_libc BUILD_PREFIX BUILD_PREFIX_1 CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO libgcc_visibility gthread_flags GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir objdir subdirs srcdir docobjdir all_boot_languages all_compilers all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files all_lang_makefrags all_lang_makefiles all_languages all_stagestuff build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines check_languages cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir xmake_file tmake_file extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir gcc_version gcc_version_full gcc_version_trigger host_exeext host_extra_gcc_objs host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure symbolic_link thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines target_noncanonical c_target_objs cxx_target_objs target_cpu_default LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP GNATBIND ac_ct_GNATBIND strict1_warn warn_cflags WERROR nocommon_flag EGREP valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep SET_MAKE AWK LN LN_S RANLIB ac_ct_RANLIB INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LIBICONV_DEP manext objext extra_modes_file FORBUILD PACKAGE VERSION USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS CROSS ALL SYSTEM_HEADER_DIR inhibit_libc BUILD_PREFIX BUILD_PREFIX_1 CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO libgcc_visibility gthread_flags GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir objdir subdirs srcdir all_boot_languages all_compilers all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files all_lang_makefrags all_lang_makefiles all_languages all_stagestuff build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines check_languages cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir gcc_version gcc_version_full gcc_version_trigger host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure symbolic_link thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines target_noncanonical c_target_objs cxx_target_objs target_cpu_default LIBOBJS LTLIBOBJS'
ac_subst_files='language_hooks'
# Initialize some variables set by options.
@@ -858,7 +858,7 @@ Optional Features:
enable expensive run-time checks. With LIST,
enable only specific categories of checks.
Categories are: misc,tree,rtl,rtlflag,gc,gcac,fold;
- default is misc,tree,gc,rtlflag
+ default is no checking
--enable-coverage=LEVEL
enable compiler\'s code coverage collection.
Use to measure compiler performance and locate
@@ -1631,10 +1631,8 @@ echo "${ECHO_T}$generated_files_in_srcdir" >&6
if test "$generated_files_in_srcdir" = "yes"; then
GENINSRC=''
- docobjdir='$(srcdir)/doc'
else
GENINSRC='#'
- docobjdir='$(objdir)/doc'
fi
@@ -1741,6 +1739,15 @@ fi
# Find C compiler
# ---------------
+# If a non-executable a.out is present (e.g. created by GNU as above even if
+# invoked with -v only), the IRIX 6 native ld just overwrites the existing
+# file, even when creating an executable, so an execution test fails.
+# Remove possible default executable files to avoid this.
+#
+# FIXME: This really belongs into AC_PROG_CC and can be removed once
+# Autoconf includes it.
+rm -f a.out a.exe b.out
+
# Find the native compiler
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -3736,7 +3743,7 @@ if test "${enable_werror+set}" = set; then
enableval="$enable_werror"
else
- enable_werror=yes
+ enable_werror=no
fi;
if test x$enable_werror = xyes ; then
WERROR=-Werror
@@ -3781,8 +3788,8 @@ echo "$as_me: error: unknown check category $check" >&2;}
esac
else
- # Enable some checks by default for development versions of GCC
-ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;
+ # By default, disable all checks for release versions of GCC.
+ac_checking=; ac_tree_checking=; ac_gc_checking=; ac_rtlflag_checking=;
fi;
nocommon_flag=""
if test x$ac_checking != x ; then
@@ -4999,7 +5006,7 @@ if test "${gcc_cv_prog_makeinfo_modern+set}" = set; then
else
ac_prog_version=`$MAKEINFO --version 2>&1 |
sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- echo "configure:5002: version of makeinfo is $ac_prog_version" >&5
+ echo "configure:5009: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
4.[2-9]*)
@@ -8625,6 +8632,7 @@ target_gtfiles=
. ${srcdir}/config.gcc
extra_objs="${host_extra_objs} ${extra_objs}"
+extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
# Default the target-machine variables that were not explicitly set.
if test x"$tm_file" = x
@@ -8766,11 +8774,88 @@ fi
if test x$enable___cxa_atexit = xyes || \
test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
+ echo "$as_me:$LINENO: checking for __cxa_atexit" >&5
+echo $ECHO_N "checking for __cxa_atexit... $ECHO_C" >&6
+if test "${ac_cv_func___cxa_atexit+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char __cxa_atexit (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char __cxa_atexit ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub___cxa_atexit) || defined (__stub_____cxa_atexit)
+choke me
+#else
+char (*f) () = __cxa_atexit;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != __cxa_atexit;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func___cxa_atexit=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func___cxa_atexit=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func___cxa_atexit" >&5
+echo "${ECHO_T}$ac_cv_func___cxa_atexit" >&6
+if test $ac_cv_func___cxa_atexit = yes; then
cat >>confdefs.h <<\_ACEOF
#define DEFAULT_USE_CXA_ATEXIT 1
_ACEOF
+else
+ echo "__cxa_atexit can't be enabled on this target"
+fi
+
fi
# Look for a file containing extra machine modes.
@@ -9436,8 +9521,8 @@ if test "x$gcc_cv_as" = x; then
gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
fi
- test_dirs="$test_prefix/lib/gcc-lib/$target_noncanonical/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_noncanonical \
+ test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
+ $test_prefix/libexec/gcc/$target_noncanonical \
/usr/lib/gcc/$target_noncanonical/$gcc_version \
/usr/lib/gcc/$target_noncanonical \
$test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
@@ -9551,8 +9636,8 @@ if test "x$gcc_cv_ld" = x; then
gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
fi
- test_dirs="$test_prefix/lib/gcc-lib/$target_noncanonical/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_noncanonical \
+ test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
+ $test_prefix/libexec/gcc/$target_noncanonical \
/usr/lib/gcc/$target_noncanonical/$gcc_version \
/usr/lib/gcc/$target_noncanonical \
$test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
@@ -10138,6 +10223,7 @@ foo: .long 25
lda $4,foo($29) !tprel'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
i[34567]86-*-*)
conftest_s='
@@ -10157,6 +10243,7 @@ foo: .long 25
leal foo@NTPOFF(%ecx), %eax'
tls_first_major=2
tls_first_minor=14
+ tls_as_opt=--fatal-warnings
;;
x86_64-*-*)
conftest_s='
@@ -10171,6 +10258,7 @@ foo: .long 25
movq $foo@TPOFF, %rax'
tls_first_major=2
tls_first_minor=14
+ tls_as_opt=--fatal-warnings
;;
ia64-*-*)
conftest_s='
@@ -10188,6 +10276,7 @@ foo: data8 25
movl r24 = @tprel(foo#)'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
powerpc-*-*)
conftest_s='
@@ -10213,7 +10302,7 @@ x3: .space 4
addi 9,9,x2@tprel@l'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-a32
+ tls_as_opt="-a32 --fatal-warnings"
;;
powerpc64-*-*)
conftest_s='
@@ -10247,7 +10336,7 @@ x3: .space 8
nop'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-a64
+ tls_as_opt="-a64 --fatal-warnings"
;;
s390-*-*)
conftest_s='
@@ -10266,7 +10355,7 @@ foo: .long 25
bas %r14,0(%r1,%r13):tls_ldcall:foo'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-m31
+ tls_as_opt="-m31 --fatal-warnings"
;;
s390x-*-*)
conftest_s='
@@ -10284,7 +10373,7 @@ foo: .long 25
brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
tls_first_major=2
tls_first_minor=14
- tls_as_opt="-m64 -Aesame"
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
sh-*-* | sh[34]-*-*)
conftest_s='
@@ -10298,9 +10387,44 @@ foo: .long 25
.long foo@TPOFF'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
sparc*-*-*)
- conftest_s='
+ case "$target" in
+ sparc*-sun-solaris2.*)
+ on_solaris=yes
+ ;;
+ *)
+ on_solaris=no
+ ;;
+ esac
+ if test x$on_solaris = xyes && test x$gas_flag = xno; then
+ conftest_s='
+ .section ".tdata",#alloc,#write,#tls
+foo: .long 25
+ .text
+ sethi %tgd_hi22(foo), %o0
+ add %o0, %tgd_lo10(foo), %o1
+ add %l7, %o1, %o0, %tgd_add(foo)
+ call __tls_get_addr, %tgd_call(foo)
+ sethi %tldm_hi22(foo), %l1
+ add %l1, %tldm_lo10(foo), %l2
+ add %l7, %l2, %o0, %tldm_add(foo)
+ call __tls_get_addr, %tldm_call(foo)
+ sethi %tldo_hix22(foo), %l3
+ xor %l3, %tldo_lox10(foo), %l4
+ add %o0, %l4, %l5, %tldo_add(foo)
+ sethi %tie_hi22(foo), %o3
+ add %o3, %tie_lo10(foo), %o3
+ ld [%l7 + %o3], %o2, %tie_ld(foo)
+ add %g7, %o2, %o4, %tie_add(foo)
+ sethi %tle_hix22(foo), %l1
+ xor %l1, %tle_lox10(foo), %o5
+ ld [%g7 + %o5], %o1'
+ tls_first_major=0
+ tls_first_minor=0
+ else
+ conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25
.text
@@ -10324,7 +10448,8 @@ foo: .long 25
ld [%g7 + %o5], %o1'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-32
+ tls_as_opt="-32 --fatal-warnings"
+ fi
;;
esac
if test -z "$tls_first_major"; then
@@ -10342,7 +10467,7 @@ else
fi
elif test x$gcc_cv_as != x; then
echo "$conftest_s" > conftest.s
- if { ac_try='$gcc_cv_as $tls_as_opt --fatal-warnings -o conftest.o conftest.s >&5'
+ if { ac_try='$gcc_cv_as $tls_as_opt -o conftest.o conftest.s >&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10785,11 +10910,13 @@ fi
powerpc*-*-*)
case $target in
- *-*-aix) conftest_s=' .csect .textPR';;
- *) conftest_s=' .text';;
+ *-*-aix*) conftest_s=' .csect .text[PR]
+ mfcr 3,128';;
+ *-*-darwin*) conftest_s=' .text
+ mfcr r3,128';;
+ *) conftest_s=' .text
+ mfcr 3,128';;
esac
- conftest_s="$conftest_s
- mfcr 3,128"
echo "$as_me:$LINENO: checking assembler for mfcr field support" >&5
echo $ECHO_N "checking assembler for mfcr field support... $ECHO_C" >&6
@@ -10880,7 +11007,7 @@ case "$target" in
| xstormy16*-*-* | cris-*-* | xtensa-*-*)
insn="nop"
;;
- ia64*-*-*)
+ ia64*-*-* | s390*-*-*)
insn="nop 0"
;;
mmix-*-*)
@@ -11449,7 +11576,7 @@ rm -f Make-hooks
touch Make-hooks
target_list="all.build all.cross start.encap rest.encap tags \
install-normal install-common install-man \
- uninstall srcextra \
+ uninstall info man srcextra srcman srcinfo \
mostlyclean clean distclean maintainer-clean \
stage1 stage2 stage3 stage4 stageprofile stagefeedback"
for t in $target_list
@@ -11611,6 +11738,13 @@ objdir=`${PWDCMD-pwd}`
+# If it doesn't already exist, create document directory
+echo "checking for the document directory." 1>&2
+if test -d doc ; then
+ true
+else
+ mkdir doc
+fi
# Echo link setup.
if test x${build} = x${host} ; then
@@ -12365,7 +12499,6 @@ s,@slibdir@,$slibdir,;t t
s,@objdir@,$objdir,;t t
s,@subdirs@,$subdirs,;t t
s,@srcdir@,$srcdir,;t t
-s,@docobjdir@,$docobjdir,;t t
s,@all_boot_languages@,$all_boot_languages,;t t
s,@all_compilers@,$all_compilers,;t t
s,@all_gtfiles@,$all_gtfiles,;t t
@@ -12386,6 +12519,7 @@ s,@quoted_cc_set_by_configure@,$quoted_cc_set_by_configure,;t t
s,@cpp_install_dir@,$cpp_install_dir,;t t
s,@xmake_file@,$xmake_file,;t t
s,@tmake_file@,$tmake_file,;t t
+s,@extra_gcc_objs@,$extra_gcc_objs,;t t
s,@extra_headers_list@,$extra_headers_list,;t t
s,@extra_objs@,$extra_objs,;t t
s,@extra_parts@,$extra_parts,;t t
@@ -12399,7 +12533,6 @@ s,@gcc_version@,$gcc_version,;t t
s,@gcc_version_full@,$gcc_version_full,;t t
s,@gcc_version_trigger@,$gcc_version_trigger,;t t
s,@host_exeext@,$host_exeext,;t t
-s,@host_extra_gcc_objs@,$host_extra_gcc_objs,;t t
s,@host_xm_file_list@,$host_xm_file_list,;t t
s,@host_xm_include_list@,$host_xm_include_list,;t t
s,@host_xm_defines@,$host_xm_defines,;t t
diff --git a/gcc/configure.ac b/gcc/configure.ac
index cf26ee29f74..16d39236f85 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -171,10 +171,8 @@ AC_MSG_RESULT($generated_files_in_srcdir)
if test "$generated_files_in_srcdir" = "yes"; then
GENINSRC=''
- docobjdir='$(srcdir)/doc'
else
GENINSRC='#'
- docobjdir='$(objdir)/doc'
fi
AC_SUBST(GENINSRC)
@@ -251,6 +249,15 @@ fi
# Find C compiler
# ---------------
+# If a non-executable a.out is present (e.g. created by GNU as above even if
+# invoked with -v only), the IRIX 6 native ld just overwrites the existing
+# file, even when creating an executable, so an execution test fails.
+# Remove possible default executable files to avoid this.
+#
+# FIXME: This really belongs into AC_PROG_CC and can be removed once
+# Autoconf includes it.
+rm -f a.out a.exe b.out
+
# Find the native compiler
AC_PROG_CC
AC_PROG_CC_C_O
@@ -323,7 +330,7 @@ AC_SUBST(warn_cflags)
# Change the default to "no" on release branches.
AC_ARG_ENABLE(werror,
[ --enable-werror enable -Werror in bootstrap stage2 and later], [],
-[enable_werror=yes])
+[enable_werror=no])
if test x$enable_werror = xyes ; then
WERROR=-Werror
fi
@@ -335,7 +342,7 @@ AC_ARG_ENABLE(checking,
enable expensive run-time checks. With LIST,
enable only specific categories of checks.
Categories are: misc,tree,rtl,rtlflag,gc,gcac,fold;
- default is misc,tree,gc,rtlflag],
+ default is no checking],
[ac_checking=
ac_tree_checking=
ac_rtl_checking=
@@ -367,8 +374,8 @@ no) ;;
;;
esac
],
-# Enable some checks by default for development versions of GCC
-[ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
+# By default, disable all checks for release versions of GCC.
+[ac_checking=; ac_tree_checking=; ac_gc_checking=; ac_rtlflag_checking=;])
nocommon_flag=""
if test x$ac_checking != x ; then
AC_DEFINE(ENABLE_CHECKING, 1,
@@ -1003,6 +1010,7 @@ target_gtfiles=
. ${srcdir}/config.gcc
extra_objs="${host_extra_objs} ${extra_objs}"
+extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
# Default the target-machine variables that were not explicitly set.
if test x"$tm_file" = x
@@ -1138,11 +1146,13 @@ fi
if test x$enable___cxa_atexit = xyes || \
test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
- AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
- [Define if you want to use __cxa_atexit, rather than atexit, to
- register C++ destructors for local statics and global objects.
- This is essential for fully standards-compliant handling of
- destructors, but requires __cxa_atexit in libc.])
+ AC_CHECK_FUNC(__cxa_atexit,
+ [AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
+ [Define if you want to use __cxa_atexit, rather than atexit, to
+ register C++ destructors for local statics and global objects.
+ This is essential for fully standards-compliant handling of
+ destructors, but requires __cxa_atexit in libc.])],
+ echo "__cxa_atexit can't be enabled on this target")
fi
# Look for a file containing extra machine modes.
@@ -1616,8 +1626,8 @@ if test "x$gcc_cv_as" = x; then
gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
fi
- test_dirs="$test_prefix/lib/gcc-lib/$target_noncanonical/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_noncanonical \
+ test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
+ $test_prefix/libexec/gcc/$target_noncanonical \
/usr/lib/gcc/$target_noncanonical/$gcc_version \
/usr/lib/gcc/$target_noncanonical \
$test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
@@ -1732,8 +1742,8 @@ if test "x$gcc_cv_ld" = x; then
gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
fi
- test_dirs="$test_prefix/lib/gcc-lib/$target_noncanonical/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_noncanonical \
+ test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
+ $test_prefix/libexec/gcc/$target_noncanonical \
/usr/lib/gcc/$target_noncanonical/$gcc_version \
/usr/lib/gcc/$target_noncanonical \
$test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
@@ -2060,6 +2070,7 @@ foo: .long 25
lda $4,foo($29) !tprel'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
i[34567]86-*-*)
conftest_s='
@@ -2079,6 +2090,7 @@ foo: .long 25
leal foo@NTPOFF(%ecx), %eax'
tls_first_major=2
tls_first_minor=14
+ tls_as_opt=--fatal-warnings
;;
x86_64-*-*)
conftest_s='
@@ -2093,6 +2105,7 @@ foo: .long 25
movq $foo@TPOFF, %rax'
tls_first_major=2
tls_first_minor=14
+ tls_as_opt=--fatal-warnings
;;
ia64-*-*)
conftest_s='
@@ -2110,6 +2123,7 @@ foo: data8 25
movl r24 = @tprel(foo#)'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
powerpc-*-*)
conftest_s='
@@ -2135,7 +2149,7 @@ x3: .space 4
addi 9,9,x2@tprel@l'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-a32
+ tls_as_opt="-a32 --fatal-warnings"
;;
powerpc64-*-*)
conftest_s='
@@ -2169,7 +2183,7 @@ x3: .space 8
nop'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-a64
+ tls_as_opt="-a64 --fatal-warnings"
;;
s390-*-*)
conftest_s='
@@ -2188,7 +2202,7 @@ foo: .long 25
bas %r14,0(%r1,%r13):tls_ldcall:foo'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-m31
+ tls_as_opt="-m31 --fatal-warnings"
;;
s390x-*-*)
conftest_s='
@@ -2206,7 +2220,7 @@ foo: .long 25
brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
tls_first_major=2
tls_first_minor=14
- tls_as_opt="-m64 -Aesame"
+ tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
sh-*-* | sh[34]-*-*)
conftest_s='
@@ -2220,9 +2234,44 @@ foo: .long 25
.long foo@TPOFF'
tls_first_major=2
tls_first_minor=13
+ tls_as_opt=--fatal-warnings
;;
sparc*-*-*)
- conftest_s='
+ case "$target" in
+ sparc*-sun-solaris2.*)
+ on_solaris=yes
+ ;;
+ *)
+ on_solaris=no
+ ;;
+ esac
+ if test x$on_solaris = xyes && test x$gas_flag = xno; then
+ conftest_s='
+ .section ".tdata",#alloc,#write,#tls
+foo: .long 25
+ .text
+ sethi %tgd_hi22(foo), %o0
+ add %o0, %tgd_lo10(foo), %o1
+ add %l7, %o1, %o0, %tgd_add(foo)
+ call __tls_get_addr, %tgd_call(foo)
+ sethi %tldm_hi22(foo), %l1
+ add %l1, %tldm_lo10(foo), %l2
+ add %l7, %l2, %o0, %tldm_add(foo)
+ call __tls_get_addr, %tldm_call(foo)
+ sethi %tldo_hix22(foo), %l3
+ xor %l3, %tldo_lox10(foo), %l4
+ add %o0, %l4, %l5, %tldo_add(foo)
+ sethi %tie_hi22(foo), %o3
+ add %o3, %tie_lo10(foo), %o3
+ ld [%l7 + %o3], %o2, %tie_ld(foo)
+ add %g7, %o2, %o4, %tie_add(foo)
+ sethi %tle_hix22(foo), %l1
+ xor %l1, %tle_lox10(foo), %o5
+ ld [%g7 + %o5], %o1'
+ tls_first_major=0
+ tls_first_minor=0
+ else
+ conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25
.text
@@ -2246,7 +2295,8 @@ foo: .long 25
ld [%g7 + %o5], %o1'
tls_first_major=2
tls_first_minor=14
- tls_as_opt=-32
+ tls_as_opt="-32 --fatal-warnings"
+ fi
;;
changequote([,])dnl
esac
@@ -2254,8 +2304,7 @@ if test -z "$tls_first_major"; then
: # If we don't have a check, assume no support.
else
gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
- [$tls_first_major,$tls_first_minor,0], [$tls_as_opt --fatal-warnings],
- [$conftest_s],,
+ [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
[AC_DEFINE(HAVE_AS_TLS, 1,
[Define if your assembler supports thread-local storage.])])
fi
@@ -2399,11 +2448,13 @@ changequote([,])dnl
powerpc*-*-*)
case $target in
- *-*-aix) conftest_s=' .csect .text[PR]';;
- *) conftest_s=' .text';;
+ *-*-aix*) conftest_s=' .csect .text[[PR]]
+ mfcr 3,128';;
+ *-*-darwin*) conftest_s=' .text
+ mfcr r3,128';;
+ *) conftest_s=' .text
+ mfcr 3,128';;
esac
- conftest_s="$conftest_s
- mfcr 3,128"
gcc_GAS_CHECK_FEATURE([mfcr field support],
gcc_cv_as_powerpc_mfcrf, [2,14,0],,
@@ -2435,7 +2486,7 @@ case "$target" in
| xstormy16*-*-* | cris-*-* | xtensa-*-*)
insn="nop"
;;
- ia64*-*-*)
+ ia64*-*-* | s390*-*-*)
insn="nop 0"
;;
mmix-*-*)
@@ -2858,7 +2909,7 @@ rm -f Make-hooks
touch Make-hooks
target_list="all.build all.cross start.encap rest.encap tags \
install-normal install-common install-man \
- uninstall srcextra \
+ uninstall info man srcextra srcman srcinfo \
mostlyclean clean distclean maintainer-clean \
stage1 stage2 stage3 stage4 stageprofile stagefeedback"
for t in $target_list
@@ -2951,7 +3002,6 @@ AC_SUBST(objdir)
# Substitute configuration variables
AC_SUBST(subdirs)
AC_SUBST(srcdir)
-AC_SUBST(docobjdir)
AC_SUBST(all_boot_languages)
AC_SUBST(all_compilers)
AC_SUBST(all_gtfiles)
@@ -2972,6 +3022,7 @@ AC_SUBST(quoted_cc_set_by_configure)
AC_SUBST(cpp_install_dir)
AC_SUBST(xmake_file)
AC_SUBST(tmake_file)
+AC_SUBST(extra_gcc_objs)
AC_SUBST(extra_headers_list)
AC_SUBST(extra_objs)
AC_SUBST(extra_parts)
@@ -2985,7 +3036,6 @@ AC_SUBST(gcc_version)
AC_SUBST(gcc_version_full)
AC_SUBST(gcc_version_trigger)
AC_SUBST(host_exeext)
-AC_SUBST(host_extra_gcc_objs)
AC_SUBST(host_xm_file_list)
AC_SUBST(host_xm_include_list)
AC_SUBST(host_xm_defines)
@@ -3018,6 +3068,14 @@ AC_SUBST(target_cpu_default)
AC_SUBST_FILE(language_hooks)
+# If it doesn't already exist, create document directory
+echo "checking for the document directory." 1>&2
+if test -d doc ; then
+ true
+else
+ mkdir doc
+fi
+
# Echo link setup.
if test x${build} = x${host} ; then
if test x${host} = x${target} ; then
diff --git a/gcc/coverage.c b/gcc/coverage.c
index f14f0f666fe..395c1e4de55 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -109,7 +109,7 @@ static int htab_counts_entry_eq (const void *, const void *);
static void htab_counts_entry_del (void *);
static void read_counts_file (void);
static unsigned compute_checksum (void);
-static unsigned checksum_string (unsigned, const char *);
+static unsigned coverage_checksum_string (unsigned, const char *);
static tree build_fn_info_type (unsigned);
static tree build_fn_info_value (const struct function_list *, tree);
static tree build_ctr_info_type (void);
@@ -397,6 +397,7 @@ coverage_counter_ref (unsigned counter, unsigned no)
ref = plus_constant (ctr_labels[counter], gcov_size / BITS_PER_UNIT * no);
ref = gen_rtx_MEM (mode, ref);
set_mem_alias_set (ref, new_alias_set ());
+ MEM_NOTRAP_P (ref) = 1;
return ref;
}
@@ -405,23 +406,51 @@ coverage_counter_ref (unsigned counter, unsigned no)
checksum. */
static unsigned
-checksum_string (unsigned chksum, const char *string)
+coverage_checksum_string (unsigned chksum, const char *string)
{
- do
+ int i;
+ char *dup = NULL;
+
+ /* Look for everything that looks if it were produced by
+ get_file_function_name_long and zero out the second part
+ that may result from flag_random_seed. This is not critical
+ as the checksums are used only for sanity checking. */
+ for (i = 0; string[i]; i++)
{
- unsigned value = *string << 24;
- unsigned ix;
-
- for (ix = 8; ix--; value <<= 1)
- {
- unsigned feedback;
-
- feedback = (value ^ chksum) & 0x80000000 ? 0x04c11db7 : 0;
- chksum <<= 1;
- chksum ^= feedback;
- }
+ if (!strncmp (string + i, "_GLOBAL__", 9))
+ for (i = i + 9; string[i]; i++)
+ if (string[i]=='_')
+ {
+ int y;
+ unsigned seed;
+
+ for (y = 1; y < 9; y++)
+ if (!(string[i + y] >= '0' && string[i + y] <= '9')
+ && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
+ break;
+ if (y != 9 || string[i + 9] != '_')
+ continue;
+ for (y = 10; y < 18; y++)
+ if (!(string[i + y] >= '0' && string[i + y] <= '9')
+ && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
+ break;
+ if (y != 18)
+ continue;
+ if (!sscanf (string + i + 10, "%X", &seed))
+ abort ();
+ if (seed != crc32_string (0, flag_random_seed))
+ continue;
+ string = dup = xstrdup (string);
+ for (y = 10; y < 18; y++)
+ dup[i + y] = '0';
+ break;
+ }
+ break;
}
- while (*string++);
+
+ chksum = crc32_string (chksum, string);
+ if (dup)
+ free (dup);
return chksum;
}
@@ -433,8 +462,9 @@ compute_checksum (void)
{
unsigned chksum = DECL_SOURCE_LINE (current_function_decl);
- chksum = checksum_string (chksum, DECL_SOURCE_FILE (current_function_decl));
- chksum = checksum_string
+ chksum = coverage_checksum_string (chksum,
+ DECL_SOURCE_FILE (current_function_decl));
+ chksum = coverage_checksum_string
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl)));
return chksum;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index fb2b43dd98a..d89803a80da 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,553 @@
+2004-03-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/13944
+ * except.c (do_free_exception): Remove #if 0 wrapper.
+ (build_throw): Use it if we elide a copy into the
+ exception object.
+
+ * tree.c (stabilize_call): Fix thinko.
+
+ * init.c (build_new_1): Preevaluate initializer. Simplify EH code.
+ (build_init): Call a constructor rather than call build_aggr_init
+ for classes.
+ * except.c (stabilize_throw_expr): Remove.
+ (build_throw): Use stabilize_init instead of stabilize_throw_expr.
+ * tree.c (stabilize_call, stabilize_init): New fns.
+ * call.c (build_over_call): A constructor no longer returns the
+ address of the object.
+
+2004-03-01 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14324
+ * lex.c (retrofit_lang_decl): Treat entities with no linkage as
+ having C++ linkage for name-mangling purposes.
+
+ PR c++/14260
+ * parser.c (cp_parser_direct_declarator): Recognize constructor
+ declarators that use a template-id to name the class being
+ constructed.
+
+ PR c++/14337
+ * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
+ (tsubst_expr): Do not call tsubst_copy, even when
+ processing_template_decl.
+
+2004-03-01 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14369
+ * pt.c (build_non_dependent_expr): Do not create a
+ NON_DEPENDENT_EXPR for a THROW_EXPR.
+
+ PR c++/14360
+ * parser.c (cp_parser_postfix_expression): Do not perform Koenig
+ lookup if ordinary name-lookup finds a non-function.
+ * pt.c (tsubst_copy_and_build): Likewise.
+
+ PR c++/14361
+ * parser.c (cp_parser_late_parsing_default_args): Check that there
+ are no extra tokens after the end of the default-argument
+ expression.
+
+ PR c++/14359
+ Backport 2004-02-12 Mark Mitchell <mark@codesourcery.com>
+ * decl.c (redeclaration_error_message): Correct handling of
+ templates.
+ * pt.c (tsubst_friend_declaration): Adjust code to determine
+ whether or not a friend template is a definition.
+ (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
+
+2004-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/14369
+ * error.c (dump_expr): Handle THROW_EXPR.
+
+2004-02-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14138
+ * name-lookup.h (push_scope): Change prototype.
+ * name-lookup.c (push_scope): Do not reenter the current class
+ scope.
+ * decl.c (grokfndecl): Check return code from push_scope before
+ calling pop_scope.
+ * decl2.c (check_classfn): Likewise.
+ * parser.c (cp_parser_conversion_function_id): Likewise.
+ (cp_parser_init_declarator): Likewise.
+ (cp_parser_direct_declarator): Likewise.
+ (cp_parser_class_specifier): Likewise.
+ (cp_parser_class_head): Likewise.
+ (cp_parser_lookup_name): Likewise.
+ (cp_parser_constructor_declarator_p): Likewise.
+ * pt.c (instantiate_class_template): Likewise.
+ (resolve_typename_type): Likewise.
+
+2004-02-27 Mark Mitchell <mark@codesourcery.com>
+
+ PR debug/12103
+ * class.c (update_vtable_entry_for_fn): Do not go through
+ covariance machinery if the type returned by an overrider is the
+ same as the original.
+
+2004-02-27 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14284
+ * pt.c (dependent_type_p_r): A template template parameter is a
+ dependent type.
+
+2004-02-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14278
+ * parser.c (cp_parser_parameter_declaration_list): Commit
+ to fewer tentative parses.
+
+2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14246
+ * mangle.c (write_template_arg_literal): Don't rely on identity for
+ boolean constants.
+
+2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14250
+ * cvt.c (build_expr_type_conversion): Type must be complete before
+ looking up for conversions.
+
+2004-02-20 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14199
+ * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
+
+ PR c++/14173
+ * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
+ for all type variants.
+
+2004-02-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14186
+ * name-lookup.c (push_class_level_binding): Do not complain about
+ adding a binding for a member whose name is the same as the
+ enclosing class if the member is located in a base class of the
+ current class.
+
+2004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14181
+ * parser.c (cp_parser_new_expression): Parse an ill-formed
+ direct-new-declarator after a parenthesized type-id to emit good
+ diagnostic.
+
+2004-02-17 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/11326
+ * cp-tree.h (abi_version_at_least): Remove.
+ * mangle.c: Include flags.h.
+
+2004-02-15 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13971
+ * call.c (build_conditional_expr): Handle conversions between
+ class types which result in differently cv-qualified type
+ variants.
+
+ PR c++/14086
+ * class.c (delete_duplicate_fields_1): Remove.
+ (delete_duplicate_fields): Likewise.
+ (finish_struct_anon): Remove check for members with the same name
+ as their enclosing class.
+ (check_field_decls): Do not call duplicate_fields.
+ * decl.c (grokdeclarator): Remove check for static data members
+ with the same name as their enclosing class.
+ * name-lookup.c (push_class_level_binding): Check for members with
+ the same name as their enclosing class.
+
+2004-02-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/14085
+ * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
+
+2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13635
+ * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
+ has full set of arguments.
+
+2004-02-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14122
+ * cp-tree.h (delete_sanity): Change prototype.
+ * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
+ Remove dead code. Adjust code to warn about deleting an array.
+ * typekc.c (decay_conversion): Use build_address and build_nop.
+
+ PR c++/14108
+ * search.c (accessible_p): Do not check access in thunks.
+
+2004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13927
+ * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
+
+2004-02-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14083
+ * call.c (build_conditional_expr): Call force_rvalue on the
+ non-void operand in the case that one result is a throw-expression
+ and the other is not.
+
+2004-02-13 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR c++/9851
+ * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
+ the type name and look ahead for ::~, and bail out early with a
+ better error message if the parse is going to fail.
+
+2004-02-10 Mark Mitchell <mark@codesourcery.com>
+
+ * typeck.c (lookup_destructor): Fix typo in error message.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ Bug 13856
+ * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
+ * decl.c (duplicate_decls, start_function): Likewise.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ * name-lookup.c (pushdecl): Issue shadow warnings directly.
+ * parser.c (free_parser_stacks): Delete.
+
+2004-02-07 Kazu Hirata <kazu@cs.umass.edu>
+
+ * rtti.c, tree.c: Update copyright.
+
+2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14033
+ * decl.c (require_complete_types_for_parms): Do not insert
+ error_mark_node in the parameter list.
+
+2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14028
+ * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
+ error when terminator can not be found.
+
+2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
+
+ Make-lang.in (po-generated): Delete.
+
+2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR middle-end/13750
+ Revert:
+ 2004-01-15 Geoffrey Keating <geoffk@apple.com>
+ PR pch/13361
+ * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
+ (handle_pragma_implementation): Likewise.
+
+2004-02-05 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13714
+ * typeck.c (lookup_destructor): Tweak error message.
+
+2004-02-05 Paul Brook <paul@codesourcery.com>
+
+ Backport from mainline.
+
+ 2003-11-05 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (cxx_push_function_context): Do not set
+ current_function_is_thunk.
+ * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
+ actual function.
+
+2004-02-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13932
+ * call.c (convert_like_real): Use "converting" rather than
+ "argument" as the descriptive keyword to
+ dubious_conversion_warnings.
+ * typeck.c (convert_for_assignment): Do not call
+ dubious_conversion_warnings.
+
+2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13086
+ * init.c (build_delete): Emit a more informative error message in
+ case of an incomplete type, and on the correct source line.
+
+2004-02-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/9941
+ * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
+ linkage for the typeinfo name string.
+
+ PR c++/13969
+ * cp-tree.h (fold_non_dependent_expr): New function.
+ * parser.c (cp_parser_fold_non_dependent_expr): Remove.
+ (cp_parser_template_argument): Use fold_non_dependent_expr.
+ (cp_parser_direct_declarator): Likewise.
+ * pt.c (fold_non_dependent_expr): New function.
+ (convert_nontype_argument): Use it.
+ (tsubst_qualified_id): Simplify.
+ (tsubst_copy_and_build): Likewise.
+
+2003-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13997
+ * pt.c (more_specialized_class): Increase processing_template_decl
+ while partial ordering.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13950
+ * parser.c (cp_parser_class_name): Robustify.
+
+ PR c++/13970
+ * parser.c (cp_parser_cache_group): Do not consume the EOF token.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13925
+ * decl.c (start_function): Do not call pushdecl for any
+ instantiation or specialization of a primary template.
+
+ PR c++/14002
+ * semantics.c (finish_id_expression): Do not return an
+ IDENTIFIER_NODE when lookup finds a PARM_DECL.
+
+ PR c++/13978
+ * pt.c (build_non_dependent_expr): Do not build
+ NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
+
+ PR c++/13968
+ * semantics.c (finish_id_expression): Do not return an
+ IDENTIFIER_NODE when lookup finds a VAR_DECL.
+
+ PR c++/13975
+ * parser.c (cp_parser_simple_declaration): When skipping to the
+ end of the statement swallow the terminating semicolon.
+
+2004-02-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ DR206
+ PR c++/13813
+ * decl.c (grokdeclarator): Check immediatly type completeness for
+ non-dependent types.
+
+2004-01-30 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13113
+ * init.c (build_offset_ref): Improve error recovery for invalid
+ uses of non-static member functions.
+
+ PR c++/13854
+ * cp-tree.h (cp_build_type_attribute_variant): New function.
+ * class.c (build_clone): Use cp_build_type_attribute_variant.
+ * decl.c (duplicate_decls): Likewise.
+ * pt.c (copy_default_args_to_explicit_spec): Likewise.
+ (tsubst_function_type): Likewise.
+ * tree.c (build_exception_variant): Check attributes before
+ concluding that two types are the same.
+ (cp_build_type-attribute_variant): New method.
+ * typeck.c (merge_types): Use cp_build_type_attribute_variant.
+
+ PR c++/13907
+ * call.c (convert_class_to_reference): Keep better track of
+ pedantically invalid user-defined conversions.
+
+2004-02-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13957
+ * pt.c (tsubst_qualified_id): Improved error message when a type
+ is expected but not found.
+
+2004-01-30 Michael Matz <matz@suse.de>
+
+ * parser.c (cp_parser_labeled_statement): Accept case ranges.
+
+2004-01-28 Jan Hubicka <jh@suse.czi
+
+ * semantics.c (expand_body) Do emit_associated_thunks before
+ expansion.
+
+2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13683
+ * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
+ a sizeof expression.block
+
+2004-01-29 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
+ template name as it was `<::' (digraph typo).
+ (cp_parser_nth_token_starts_template_argument_list_p): New function.
+ (cp_parser_id_expression): Use it.
+ (cp_parser_nested_name_specifier_opt): Likewise.
+ (cp_parser_template_name): Likewise.
+ (cp_parser_class_name): Likewise.
+ (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
+
+2004-01-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13883
+ * mangle.c (write_encoding): Correct encoding of member template
+ constructors.
+
+2004-01-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13791
+ * typeck.c (merge_types): Do not merge attributes into
+ TYPENAME_TYPEs.
+
+2004-01-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13736
+ * parser.c (cp_parser_direct_declarator): Do not prevent
+ backtracking inside a parenthesized declarator.
+ (cp_parser_parameter_declaration): Fix typo in comment.
+
+2004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cp-tree.h (language_function, lang_type_header): Use
+ BOOL_BITFIELD.
+ * name-lookup.h (cp_binding_level): Likewise.
+
+2004-01-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13663
+ * semantics.c (finish_for_expr): Check for unresolved overloaded
+ functions.
+
+2004-01-26 Mark Mitchell <mark@codesourcery.com>
+
+ * class.c (add_method): Just check processing_template_decl to
+ determine whether or not we are within a template.
+ * decl2.c (maybe_retrofit_in_chrg): Likewise.
+ * init.c (decl_constant_value): Check the type of the declaration,
+ not TREE_READONLY.
+ * name-lookup.c (maybe_push_to_top_level): Rename to ...
+ (push_to_top_level): ... this.
+ * name-lookup.h (maybe_push_to_top_level): Do not declare it.
+ * pt.c (push_template_decl_real): Reorder condition for speed.
+ (convert_template_argument): Use dependency-checking functions in
+ place of uses_template_parms.
+ (lookup_template_class): Avoid calling uses_template_parms more
+ than once.
+ (uses_template_parms): Reimplement, using dependency-checking
+ functions.
+ (instantiate_class_template): Use push_to_top_level, not
+ maybe_push_to_top_level.
+ (type_unification_real): Simplify.
+ (type_dependent_expression_p): Handle OFFSET_REFs and
+ TEMPLATE_DECLs.
+ (any_dependent_template_arguments_p): Handle multiple levels of
+ template argument.
+ * semantics.c (expand_or_defer_fn): Do not check
+ uses_template_parms for template instantiations.
+ * typeck.c (comptypes): Avoid calling cp_type_quals.
+
+2004-01-25 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13833
+ * call.c (build_over_call): Do not convert arguments when
+ processing a template.
+ * pt.c (build_non_dependent_expr): Do not build a
+ NON_DEPENDENT_EXPR for arithmetic constants.
+
+2004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13810
+ * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
+ returns a TYPE_DECL. no further lookup is required.
+ * semantics.c (check_template_template_default_arg): A TYPE_DECL
+ is invalid. Rework to give better diagnostics.
+
+2004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13797
+ * pt.c (instantiate_class_template): Add an error_mark_node
+ check.
+ (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
+
+2004-01-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * call.c: Update copyright.
+ * class.c: Likewise.
+ * decl2.c: Likewise.
+ * except.c: Likewise.
+ * expr.c: Likewise.
+ * init.c: Likewise.
+ * mangle.c: Likewise.
+ * optimize.c: Likewise.
+ * typeck.c: Likewise.
+ * typeck2.c: Likewise.
+
+2004-01-23 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/13701
+ * decl.c (finish_function): Move the call to
+ finish_fname_decls below the call to
+ finish_eh_spec_block.
+
+2004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * parser.c (cp_parser_class_specifier): Prevent garbage collection.
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in: Replace $(docdir) with doc.
+ (c++.info, c++.srcinfo): Dummy entry.
+ (c++.man, c++.srcman): New rules.
+ (c++.install-man): Revamp rule.
+
+2004-01-19 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
+ CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
+ immediate $(shell) instead of deferred backquote.
+
+2004-01-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13651
+ * parser.c (cp_parser_postfix_expression): When encountering
+ incomplete type on left-hand side of "->" or ".", treat the entire
+ expression as erroneous.
+
+2004-01-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13592
+ * call.c (build_field_call): Remove.
+ (n_build_method_call): Likewise.
+ (build_method_call): Likewise.
+ (build_new_method_call): Do not call build_field_call.
+ * class.c (n_build_method_call): Remove.
+ (print_class_statistics): Do not print it.
+ * cp-tree.h (build_method_call): Remove declaration.
+ (finish_object_call_expr): Likewise.
+ (build_new_1): Do not use build_method_call.
+ * parser.c (cp_parser_postfix_expression): Use finish_call_expr
+ when the function appearing on the right-hand-side of "." or "->"
+ is not actually a function.
+ * pt.c (tsubst_copy_and_build): Likewise.
+ * semantics.c (finish_object_call_expr): Remove.
+
+2004-01-18 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13710
+ * pt.c (tsubst): Use finish_typeof.
+
+2004-01-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/11725
+ * except.c (build_throw): In a template, set
+ current_function_returns_abnormally.
+
+2004-01-17 Fred Fish <fnf@intrinsity.com>
+
+ PR c++/11895
+ * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
+ except don't call array_type_nelts() with a VECTOR_TYPE.
+
2004-01-16 Jan Hubicka <jh@suse.cz>
* mangle.c (write_mangled_name): Remove inline modifier.
@@ -62,7 +612,7 @@
2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/8856
- * parser.c (cp_parser_template_name): Don't try to parse a
+ * parser.c (cp_parser_template_name): Don't try to parse a
conversion-function-id, as it cannot be a template-name.
(cp_parser_simple_type_specifier): Check for invalid template-ids
even after a built-in type.
@@ -173,7 +723,7 @@
DR 337
PR c++/9256
- * pt.c (tsubst): Substitution must fail if we are attempting to
+ * pt.c (tsubst): Substitution must fail if we are attempting to
create an array with element type that is an abstract class type.
* decl.c (cp_finish_decl): Strip pointers and array types recursively
before calling abstract_virtuals_error.
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 771496b59b2..9f7ebfb87cc 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -37,10 +37,10 @@
# - define the names for selecting the language in LANGUAGES.
# Actual names to use when installing a native compiler.
-CXX_INSTALL_NAME = `echo c++|sed '$(program_transform_name)'`
-GXX_INSTALL_NAME = `echo g++|sed '$(program_transform_name)'`
-CXX_TARGET_INSTALL_NAME = $(target_noncanonical)-`echo c++|sed '$(program_transform_name)'`
-GXX_TARGET_INSTALL_NAME = $(target_noncanonical)-`echo g++|sed '$(program_transform_name)'`
+CXX_INSTALL_NAME := $(shell echo c++|sed '$(program_transform_name)')
+GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
+CXX_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo c++|sed '$(program_transform_name)')
+GXX_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo g++|sed '$(program_transform_name)')
#
# Define the names for selecting c++ in LANGUAGES.
@@ -58,8 +58,6 @@ g++spec.o: $(srcdir)/cp/g++spec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CON
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
$(INCLUDES) $(srcdir)/cp/g++spec.c)
-po-generated:
-
# Create the compiler driver for g++.
GXX_OBJS = gcc.o g++spec.o intl.o prefix.o version.o
g++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS)
@@ -108,6 +106,8 @@ c++.all.build: g++$(exeext)
c++.all.cross: g++-cross$(exeext)
c++.start.encap: g++$(exeext)
c++.rest.encap:
+c++.info:
+c++.srcinfo:
c++.srcextra:
c++.tags: force
@@ -115,7 +115,10 @@ c++.tags: force
--regex='/DEFTREECODE [(]\([A-Z_]+\)/\1/' cp-tree.def; \
etags --include TAGS.sub --include ../TAGS.sub
-generated-manpages:: $(docobjdir)/g++.1
+c++.man: doc/g++.1
+
+c++.srcman: doc/g++.1
+ -cp -p $^ $(srcdir)/doc
check-c++ : check-g++
lang_checks += check-g++
@@ -157,15 +160,15 @@ c++.install-common: installdirs
# We can't use links because not everyone supports them, and we can't use
# .so because Irix 6.5 doesn't support them. So just copy the manpage.
-$(docobjdir)/g++.1: $(docobjdir)/gcc.1
- cp $(docobjdir)/gcc.1 $(docobjdir)/g++.1
+doc/g++.1: doc/gcc.1
+ cp doc/gcc.1 doc/g++.1
-c++.install-man: installdirs $(docobjdir)/g++.1
- -if [ -f cc1plus$(exeext) ] ; then \
- rm -f $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
- $(INSTALL_DATA) $(docobjdir)/g++.1 $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
- chmod a-x $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
- else true; fi
+c++.install-man: installdirs $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext)
+
+$(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext): doc/g++.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
c++.uninstall:
-rm -rf $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext)
@@ -177,7 +180,7 @@ c++.uninstall:
# We just have to delete files specific to us.
c++.mostlyclean:
- -rm -f $(docobjdir)/g++.1
+ -rm -f doc/g++.1
-rm -f cp/*$(objext)
-rm -f cp/*$(coverageexts)
c++.clean:
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 7864d088206..bcfe127b704 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1,6 +1,6 @@
/* Functions related to invoking methods and overloaded functions.
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) and
modified by Brendan Kehoe (brendan@cygnus.com).
@@ -40,7 +40,6 @@ Boston, MA 02111-1307, USA. */
#include "target.h"
#include "convert.h"
-static tree build_field_call (tree, tree, tree);
static struct z_candidate * tourney (struct z_candidate *);
static int equal_functions (tree, tree);
static int joust (struct z_candidate *, struct z_candidate *, bool);
@@ -128,42 +127,6 @@ build_vfield_ref (tree datum, tree type)
datum, TYPE_VFIELD (type));
}
-/* Build a call to a member of an object. I.e., one that overloads
- operator ()(), or is a pointer-to-function or pointer-to-method. */
-
-static tree
-build_field_call (tree instance_ptr, tree decl, tree parms)
-{
- tree instance;
-
- if (decl == error_mark_node || decl == NULL_TREE)
- return decl;
-
- if (TREE_CODE (decl) == FIELD_DECL || TREE_CODE (decl) == VAR_DECL)
- {
- /* If it's a field, try overloading operator (),
- or calling if the field is a pointer-to-function. */
- instance = build_indirect_ref (instance_ptr, NULL);
- instance = build_class_member_access_expr (instance, decl,
- /*access_path=*/NULL_TREE,
- /*preserve_reference=*/false);
-
- if (instance == error_mark_node)
- return error_mark_node;
-
- if (IS_AGGR_TYPE (TREE_TYPE (instance)))
- return build_new_op (CALL_EXPR, LOOKUP_NORMAL,
- instance, parms, NULL_TREE);
- else if (TREE_CODE (TREE_TYPE (instance)) == FUNCTION_TYPE
- || (TREE_CODE (TREE_TYPE (instance)) == POINTER_TYPE
- && (TREE_CODE (TREE_TYPE (TREE_TYPE (instance)))
- == FUNCTION_TYPE)))
- return build_function_call (instance, parms);
- }
-
- return NULL_TREE;
-}
-
/* Returns nonzero iff the destructor name specified in NAME
(a BIT_NOT_EXPR) matches BASETYPE. The operand of NAME can take many
forms... */
@@ -342,102 +305,6 @@ build_call (tree function, tree parms)
`operator()()' is defined for the type of that field, then we return
that result. */
-#ifdef GATHER_STATISTICS
-extern int n_build_method_call;
-#endif
-
-tree
-build_method_call (tree instance, tree name, tree parms,
- tree basetype_path, int flags)
-{
- tree fn;
- tree object_type;
- tree template_args = NULL_TREE;
- bool has_template_args = false;
-
-#ifdef GATHER_STATISTICS
- n_build_method_call++;
-#endif
-
- if (error_operand_p (instance)
- || name == error_mark_node
- || parms == error_mark_node)
- return error_mark_node;
-
- my_friendly_assert (!processing_template_decl, 20030707);
-
- if (TREE_CODE (TREE_TYPE (instance)) == REFERENCE_TYPE)
- instance = convert_from_reference (instance);
- object_type = TREE_TYPE (instance);
-
- if (TREE_CODE (name) == BIT_NOT_EXPR)
- {
- tree instance_ptr;
-
- if (parms)
- error ("destructors take no parameters");
-
- if (! check_dtor_name (object_type, name))
- error
- ("destructor name `~%T' does not match type `%T' of expression",
- TREE_OPERAND (name, 0), object_type);
-
- if (! TYPE_HAS_DESTRUCTOR (complete_type (object_type)))
- return convert_to_void (instance, /*implicit=*/NULL);
- instance = default_conversion (instance);
- instance_ptr = build_unary_op (ADDR_EXPR, instance, 0);
- return build_delete (build_pointer_type (object_type),
- instance_ptr, sfk_complete_destructor,
- LOOKUP_NORMAL|LOOKUP_DESTRUCTOR, 0);
- }
-
- if (!CLASS_TYPE_P (object_type))
- {
- if ((flags & LOOKUP_COMPLAIN)
- && TREE_TYPE (instance) != error_mark_node)
- error ("request for member `%D' in `%E', which is of non-aggregate type `%T'",
- name, instance, object_type);
- return error_mark_node;
- }
-
- if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
- {
- template_args = TREE_OPERAND (name, 1);
- has_template_args = true;
- name = TREE_OPERAND (name, 0);
- }
- if (TREE_CODE (name) == OVERLOAD)
- name = DECL_NAME (get_first_fn (name));
- else if (DECL_P (name))
- name = DECL_NAME (name);
- if (has_template_args)
- fn = lookup_fnfields (object_type, name, /*protect=*/2);
- else
- fn = lookup_member (object_type, name, /*protect=*/2, /*want_type=*/false);
-
- if (fn && TREE_CODE (fn) == TREE_LIST)
- {
- error ("request for member `%D' is ambiguous", name);
- print_candidates (fn);
- return error_mark_node;
- }
-
- /* If the name could not be found, issue an error. */
- if (!fn)
- return unqualified_name_lookup_error (name);
-
- if (BASELINK_P (fn) && has_template_args)
- BASELINK_FUNCTIONS (fn)
- = build_nt (TEMPLATE_ID_EXPR,
- BASELINK_FUNCTIONS (fn),
- template_args);
- if (BASELINK_P (fn) && basetype_path)
- BASELINK_ACCESS_BINFO (fn) = basetype_path;
-
- return build_new_method_call (instance, fn, parms,
- /*conversion_path=*/NULL_TREE, flags);
-}
-
/* New overloading code. */
struct z_candidate GTY(()) {
@@ -961,15 +828,19 @@ convert_class_to_reference (tree t, tree s, tree expr)
LOOKUP_NORMAL);
if (cand)
- /* Build a standard conversion sequence indicating the
- binding from the reference type returned by the
- function to the desired REFERENCE_TYPE. */
- cand->second_conv
- = (direct_reference_binding
- (reference_type,
- build1 (IDENTITY_CONV,
- TREE_TYPE (TREE_TYPE (TREE_TYPE (cand->fn))),
- NULL_TREE)));
+ {
+ /* Build a standard conversion sequence indicating the
+ binding from the reference type returned by the
+ function to the desired REFERENCE_TYPE. */
+ cand->second_conv
+ = (direct_reference_binding
+ (reference_type,
+ build1 (IDENTITY_CONV,
+ TREE_TYPE (TREE_TYPE (TREE_TYPE (cand->fn))),
+ NULL_TREE)));
+ ICS_BAD_FLAG (cand->second_conv)
+ |= ICS_BAD_FLAG (TREE_VEC_ELT (cand->convs, 0));
+ }
}
conversions = TREE_CHAIN (conversions);
}
@@ -3136,10 +3007,20 @@ build_conditional_expr (tree arg1, tree arg2, tree arg3)
--Both the second and the third operands have type void; the
result is of type void and is an rvalue. */
- if ((TREE_CODE (arg2) == THROW_EXPR)
- ^ (TREE_CODE (arg3) == THROW_EXPR))
- result_type = ((TREE_CODE (arg2) == THROW_EXPR)
- ? arg3_type : arg2_type);
+ if (TREE_CODE (arg2) == THROW_EXPR
+ && TREE_CODE (arg3) != THROW_EXPR)
+ {
+ arg3 = force_rvalue (arg3);
+ arg3_type = TREE_TYPE (arg3);
+ result_type = arg3_type;
+ }
+ else if (TREE_CODE (arg2) != THROW_EXPR
+ && TREE_CODE (arg3) == THROW_EXPR)
+ {
+ arg2 = force_rvalue (arg2);
+ arg2_type = TREE_TYPE (arg2);
+ result_type = arg2_type;
+ }
else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type))
result_type = void_type_node;
else
@@ -3184,23 +3065,37 @@ build_conditional_expr (tree arg1, tree arg2, tree arg3)
{
arg2 = convert_like (conv2, arg2);
arg2 = convert_from_reference (arg2);
- if (!same_type_p (TREE_TYPE (arg2), arg3_type)
- && CLASS_TYPE_P (arg3_type))
- /* The types need to match if we're converting to a class type.
- If not, we don't care about cv-qual mismatches, since
- non-class rvalues are not cv-qualified. */
- abort ();
arg2_type = TREE_TYPE (arg2);
}
else if (conv3 && !ICS_BAD_FLAG (conv3))
{
arg3 = convert_like (conv3, arg3);
arg3 = convert_from_reference (arg3);
- if (!same_type_p (TREE_TYPE (arg3), arg2_type)
- && CLASS_TYPE_P (arg2_type))
- abort ();
arg3_type = TREE_TYPE (arg3);
}
+
+ /* If, after the conversion, both operands have class type,
+ treat the cv-qualification of both operands as if it were the
+ union of the cv-qualification of the operands.
+
+ The standard is not clear about what to do in this
+ circumstance. For example, if the first operand has type
+ "const X" and the second operand has a user-defined
+ conversion to "volatile X", what is the type of the second
+ operand after this step? Making it be "const X" (matching
+ the first operand) seems wrong, as that discards the
+ qualification without actuall performing a copy. Leaving it
+ as "volatile X" seems wrong as that will result in the
+ conditional expression failing altogether, even though,
+ according to this step, the one operand could be converted to
+ the type of the other. */
+ if ((conv2 || conv3)
+ && CLASS_TYPE_P (arg2_type)
+ && TYPE_QUALS (arg2_type) != TYPE_QUALS (arg3_type))
+ arg2_type = arg3_type =
+ cp_build_qualified_type (arg2_type,
+ TYPE_QUALS (arg2_type)
+ | TYPE_QUALS (arg3_type));
}
/* [expr.cond]
@@ -3284,16 +3179,15 @@ build_conditional_expr (tree arg1, tree arg2, tree arg3)
We need to force the lvalue-to-rvalue conversion here for class types,
so we get TARGET_EXPRs; trying to deal with a COND_EXPR of class rvalues
that isn't wrapped with a TARGET_EXPR plays havoc with exception
- regions.
-
- We use ocp_convert rather than build_user_type_conversion because the
- latter returns NULL_TREE on failure, while the former gives an error. */
+ regions. */
arg2 = force_rvalue (arg2);
- arg2_type = TREE_TYPE (arg2);
+ if (!CLASS_TYPE_P (arg2_type))
+ arg2_type = TREE_TYPE (arg2);
arg3 = force_rvalue (arg3);
- arg3_type = TREE_TYPE (arg3);
+ if (!CLASS_TYPE_P (arg2_type))
+ arg3_type = TREE_TYPE (arg3);
if (arg2 == error_mark_node || arg3 == error_mark_node)
return error_mark_node;
@@ -3380,7 +3274,7 @@ build_conditional_expr (tree arg1, tree arg2, tree arg3)
/* Expand both sides into the same slot, hopefully the target of the
?: expression. We used to check for TARGET_EXPRs here, but now we
sometimes wrap them in NOP_EXPRs so the test would fail. */
- if (!lvalue_p && IS_AGGR_TYPE (TREE_TYPE (result)))
+ if (!lvalue_p && CLASS_TYPE_P (TREE_TYPE (result)))
result = get_target_expr (result);
/* If this expression is an rvalue, but might be mistaken for an
@@ -4029,7 +3923,7 @@ convert_like_real (tree convs, tree expr, tree fn, int argnum, int inner,
if (issue_conversion_warnings)
expr = dubious_conversion_warnings
- (totype, expr, "argument", fn, argnum);
+ (totype, expr, "converting", fn, argnum);
switch (TREE_CODE (convs))
{
case USER_CONV:
@@ -4260,14 +4154,18 @@ convert_arg_to_ellipsis (tree arg)
arg = require_complete_type (arg);
- if (arg != error_mark_node && ! pod_type_p (TREE_TYPE (arg)))
+ if (arg != error_mark_node
+ && !pod_type_p (TREE_TYPE (arg)))
{
/* Undefined behavior [expr.call] 5.2.2/7. We used to just warn
here and do a bitwise copy, but now cp_expr_size will abort if we
- try to do that. */
- warning ("cannot pass objects of non-POD type `%#T' through `...'; \
-call will abort at runtime",
- TREE_TYPE (arg));
+ try to do that.
+ If the call appears in the context of a sizeof expression,
+ there is no need to emit a warning, since the expression won't be
+ evaluated. We keep the builtin_trap just as a safety check. */
+ if (!skip_evaluation)
+ warning ("cannot pass objects of non-POD type `%#T' through `...'; "
+ "call will abort at runtime", TREE_TYPE (arg));
arg = call_builtin_trap (TREE_TYPE (arg));
}
@@ -4439,6 +4337,21 @@ build_over_call (struct z_candidate *cand, int flags)
int i = 0;
int is_method = 0;
+ /* In a template, there is no need to perform all of the work that
+ is normally done. We are only interested in the type of the call
+ expression, i.e., the return type of the function. Any semantic
+ errors will be deferred until the template is instantiated. */
+ if (processing_template_decl)
+ {
+ tree expr;
+ tree return_type;
+ return_type = TREE_TYPE (TREE_TYPE (fn));
+ expr = build (CALL_EXPR, return_type, fn, args);
+ if (!VOID_TYPE_P (return_type))
+ require_complete_type (return_type);
+ return convert_from_reference (expr);
+ }
+
/* Give any warnings we noticed during overload resolution. */
if (cand->warnings)
for (val = cand->warnings; val; val = TREE_CHAIN (val))
@@ -4639,16 +4552,11 @@ build_over_call (struct z_candidate *cand, int flags)
else if (TREE_CODE (arg) == TARGET_EXPR
|| TYPE_HAS_TRIVIAL_INIT_REF (DECL_CONTEXT (fn)))
{
- tree address;
tree to = stabilize_reference
(build_indirect_ref (TREE_VALUE (args), 0));
val = build (INIT_EXPR, DECL_CONTEXT (fn), to, arg);
- address = build_unary_op (ADDR_EXPR, val, 0);
- /* Avoid a warning about this expression, if the address is
- never used. */
- TREE_USED (address) = 1;
- return address;
+ return val;
}
}
else if (DECL_OVERLOADED_OPERATOR_P (fn) == NOP_EXPR
@@ -5058,9 +4966,6 @@ build_new_method_call (tree instance, tree fns, tree args,
if (!BASELINK_P (fns))
{
- call = build_field_call (instance_ptr, fns, args);
- if (call)
- goto finish;
error ("call to non-function `%D'", fns);
return error_mark_node;
}
@@ -5221,7 +5126,6 @@ build_new_method_call (tree instance, tree fns, tree args,
if (!is_dummy_object (instance_ptr) && TREE_SIDE_EFFECTS (instance))
call = build (COMPOUND_EXPR, TREE_TYPE (call), instance, call);
}
- finish:;
if (processing_template_decl && call != error_mark_node)
return build_min_non_dep
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index b376f99aa21..db7ad06f199 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1,6 +1,6 @@
/* Functions related to building classes and their related objects.
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -114,8 +114,6 @@ static int build_primary_vtable (tree, tree);
static int build_secondary_vtable (tree);
static void finish_vtbls (tree);
static void modify_vtable_entry (tree, tree, tree, tree, tree *);
-static tree delete_duplicate_fields_1 (tree, tree);
-static void delete_duplicate_fields (tree);
static void finish_struct_bits (tree);
static int alter_access (tree, tree, tree);
static void handle_using_decl (tree, tree);
@@ -227,7 +225,6 @@ int n_vtable_searches = 0;
int n_vtable_elems = 0;
int n_convert_harshness = 0;
int n_compute_conversion_costs = 0;
-int n_build_method_call = 0;
int n_inner_fields_searched = 0;
#endif
@@ -867,7 +864,7 @@ add_method (tree type, tree method, int error_p)
}
}
- if (template_class_depth (type))
+ if (processing_template_decl)
/* TYPE is a template class. Don't issue any errors now; wait
until instantiation time to complain. */
;
@@ -958,106 +955,6 @@ add_method (tree type, tree method, int error_p)
/* Subroutines of finish_struct. */
-/* Look through the list of fields for this struct, deleting
- duplicates as we go. This must be recursive to handle
- anonymous unions.
-
- FIELD is the field which may not appear anywhere in FIELDS.
- FIELD_PTR, if non-null, is the starting point at which
- chained deletions may take place.
- The value returned is the first acceptable entry found
- in FIELDS.
-
- Note that anonymous fields which are not of UNION_TYPE are
- not duplicates, they are just anonymous fields. This happens
- when we have unnamed bitfields, for example. */
-
-static tree
-delete_duplicate_fields_1 (tree field, tree fields)
-{
- tree x;
- tree prev = 0;
- if (DECL_NAME (field) == 0)
- {
- if (! ANON_AGGR_TYPE_P (TREE_TYPE (field)))
- return fields;
-
- for (x = TYPE_FIELDS (TREE_TYPE (field)); x; x = TREE_CHAIN (x))
- fields = delete_duplicate_fields_1 (x, fields);
- return fields;
- }
- else
- {
- for (x = fields; x; prev = x, x = TREE_CHAIN (x))
- {
- if (DECL_NAME (x) == 0)
- {
- if (! ANON_AGGR_TYPE_P (TREE_TYPE (x)))
- continue;
- TYPE_FIELDS (TREE_TYPE (x))
- = delete_duplicate_fields_1 (field, TYPE_FIELDS (TREE_TYPE (x)));
- if (TYPE_FIELDS (TREE_TYPE (x)) == 0)
- {
- if (prev == 0)
- fields = TREE_CHAIN (fields);
- else
- TREE_CHAIN (prev) = TREE_CHAIN (x);
- }
- }
- else if (TREE_CODE (field) == USING_DECL)
- /* A using declaration is allowed to appear more than
- once. We'll prune these from the field list later, and
- handle_using_decl will complain about invalid multiple
- uses. */
- ;
- else if (DECL_NAME (field) == DECL_NAME (x))
- {
- if (TREE_CODE (field) == CONST_DECL
- && TREE_CODE (x) == CONST_DECL)
- cp_error_at ("duplicate enum value `%D'", x);
- else if (TREE_CODE (field) == CONST_DECL
- || TREE_CODE (x) == CONST_DECL)
- cp_error_at ("duplicate field `%D' (as enum and non-enum)",
- x);
- else if (DECL_DECLARES_TYPE_P (field)
- && DECL_DECLARES_TYPE_P (x))
- {
- if (same_type_p (TREE_TYPE (field), TREE_TYPE (x)))
- continue;
- cp_error_at ("duplicate nested type `%D'", x);
- }
- else if (DECL_DECLARES_TYPE_P (field)
- || DECL_DECLARES_TYPE_P (x))
- {
- /* Hide tag decls. */
- if ((TREE_CODE (field) == TYPE_DECL
- && DECL_ARTIFICIAL (field))
- || (TREE_CODE (x) == TYPE_DECL
- && DECL_ARTIFICIAL (x)))
- continue;
- cp_error_at ("duplicate field `%D' (as type and non-type)",
- x);
- }
- else
- cp_error_at ("duplicate member `%D'", x);
- if (prev == 0)
- fields = TREE_CHAIN (fields);
- else
- TREE_CHAIN (prev) = TREE_CHAIN (x);
- }
- }
- }
- return fields;
-}
-
-static void
-delete_duplicate_fields (tree fields)
-{
- tree x;
- for (x = fields; x && TREE_CHAIN (x); x = TREE_CHAIN (x))
- TREE_CHAIN (x) = delete_duplicate_fields_1 (x, TREE_CHAIN (x));
-}
-
/* Change the access of FDECL to ACCESS in T. Return 1 if change was
legit, otherwise return 0. */
@@ -2193,7 +2090,8 @@ update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals,
TREE_VALUE (purpose_member
(BINFO_TYPE (virtual_offset),
CLASSTYPE_VBASECLASSES (TREE_TYPE (over_return))));
- else
+ else if (!same_type_p (TREE_TYPE (over_return),
+ TREE_TYPE (base_return)))
{
/* There was no existing virtual thunk (which takes
precedence). */
@@ -2581,10 +2479,6 @@ finish_struct_anon (tree t)
|| TYPE_ANONYMOUS_P (TREE_TYPE (elt))))
continue;
- if (constructor_name_p (DECL_NAME (elt), t))
- cp_pedwarn_at ("ISO C++ forbids member `%D' with same name as enclosing class",
- elt);
-
if (TREE_CODE (elt) != FIELD_DECL)
{
cp_pedwarn_at ("`%#D' invalid; an anonymous union can only have non-static data members",
@@ -2961,9 +2855,6 @@ check_field_decls (tree t, tree *access_decls,
int has_pointers;
int any_default_members;
- /* First, delete any duplicate fields. */
- delete_duplicate_fields (TYPE_FIELDS (t));
-
/* Assume there are no access declarations. */
*access_decls = NULL_TREE;
/* Assume this class has no pointer members. */
@@ -3874,8 +3765,8 @@ build_clone (tree fn, tree name)
TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone),
exceptions);
TREE_TYPE (clone)
- = build_type_attribute_variant (TREE_TYPE (clone),
- TYPE_ATTRIBUTES (TREE_TYPE (fn)));
+ = cp_build_type_attribute_variant (TREE_TYPE (clone),
+ TYPE_ATTRIBUTES (TREE_TYPE (fn)));
}
/* Copy the function parameters. But, DECL_ARGUMENTS on a TEMPLATE_DECL
@@ -6288,8 +6179,6 @@ print_class_statistics (void)
#ifdef GATHER_STATISTICS
fprintf (stderr, "convert_harshness = %d\n", n_convert_harshness);
fprintf (stderr, "compute_conversion_costs = %d\n", n_compute_conversion_costs);
- fprintf (stderr, "build_method_call = %d (inner = %d)\n",
- n_build_method_call, n_inner_fields_searched);
if (n_vtables)
{
fprintf (stderr, "vtables = %d; vtable searches = %d\n",
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index ac6ecdfed7c..e599a548496 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -214,12 +214,6 @@ struct diagnostic_context;
#endif
-/* Returns TRUE if generated code should match ABI version N or
- greater is in use. */
-
-#define abi_version_at_least(N) \
- (flag_abi_version == 0 || flag_abi_version >= (N))
-
/* Language-dependent contents of an identifier. */
@@ -794,7 +788,7 @@ struct language_function GTY(())
int in_base_initializer;
/* True if this function can throw an exception. */
- bool can_throw : 1;
+ BOOL_BITFIELD can_throw : 1;
struct named_label_use_list *x_named_label_uses;
struct named_label_list *x_named_labels;
@@ -1013,15 +1007,15 @@ enum languages { lang_c, lang_cplusplus, lang_java };
are put in this structure to save space. */
struct lang_type_header GTY(())
{
- CHAR_BITFIELD is_lang_type_class : 1;
-
- CHAR_BITFIELD has_type_conversion : 1;
- CHAR_BITFIELD has_init_ref : 1;
- CHAR_BITFIELD has_default_ctor : 1;
- CHAR_BITFIELD uses_multiple_inheritance : 1;
- CHAR_BITFIELD const_needs_init : 1;
- CHAR_BITFIELD ref_needs_init : 1;
- CHAR_BITFIELD has_const_assign_ref : 1;
+ BOOL_BITFIELD is_lang_type_class : 1;
+
+ BOOL_BITFIELD has_type_conversion : 1;
+ BOOL_BITFIELD has_init_ref : 1;
+ BOOL_BITFIELD has_default_ctor : 1;
+ BOOL_BITFIELD uses_multiple_inheritance : 1;
+ BOOL_BITFIELD const_needs_init : 1;
+ BOOL_BITFIELD ref_needs_init : 1;
+ BOOL_BITFIELD has_const_assign_ref : 1;
};
/* This structure provides additional information above and beyond
@@ -3299,7 +3293,7 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG };
#define B_CLR(A,X) ((A)[(X)>>3] &= ~(1 << ((X)&7)))
#define B_TST(A,X) ((A)[(X)>>3] & (1 << ((X)&7)))
-/* These are uses as bits in flags passed to build_method_call
+/* These are uses as bits in flags passed to build_new_method_call
to control its error reporting behavior.
LOOKUP_PROTECT means flag access violations.
@@ -3512,7 +3506,6 @@ extern tree build_vfield_ref (tree, tree);
extern tree build_conditional_expr (tree, tree, tree);
extern tree build_addr_func (tree);
extern tree build_call (tree, tree);
-extern tree build_method_call (tree, tree, tree, tree, int);
extern bool null_ptr_cst_p (tree);
extern bool sufficient_parms_p (tree);
extern tree type_decays_to (tree);
@@ -3722,7 +3715,7 @@ extern void maybe_retrofit_in_chrg (tree);
extern void maybe_make_one_only (tree);
extern void grokclassfn (tree, tree, enum overload_flags, tree);
extern tree grok_array_decl (tree, tree);
-extern tree delete_sanity (tree, tree, int, int);
+extern tree delete_sanity (tree, tree, bool, int);
extern tree check_classfn (tree, tree, bool);
extern void check_member_template (tree);
extern tree grokfield (tree, tree, tree, tree, tree);
@@ -3928,6 +3921,7 @@ extern tree template_for_substitution (tree);
extern tree build_non_dependent_expr (tree);
extern tree build_non_dependent_args (tree);
extern bool reregister_specialization (tree, tree, tree);
+extern tree fold_non_dependent_expr (tree);
/* in repo.c */
extern void repo_template_used (tree);
@@ -4062,7 +4056,6 @@ extern tree perform_koenig_lookup (tree, tree);
extern tree finish_call_expr (tree, tree, bool, bool);
extern tree finish_increment_expr (tree, enum tree_code);
extern tree finish_this_expr (void);
-extern tree finish_object_call_expr (tree, tree, tree);
extern tree finish_pseudo_destructor_expr (tree, tree, tree);
extern tree finish_unary_op_expr (enum tree_code, tree);
extern tree finish_compound_literal (tree, tree);
@@ -4106,6 +4099,8 @@ extern void simplify_aggr_init_expr (tree *);
extern void lang_check_failed (const char *, int,
const char *);
extern tree stabilize_expr (tree, tree *);
+extern void stabilize_call (tree, tree *);
+extern void stabilize_init (tree, tree *);
extern tree cxx_unsave_expr_now (tree);
extern tree cxx_maybe_build_cleanup (tree);
extern void init_tree (void);
@@ -4156,6 +4151,7 @@ extern tree maybe_dummy_object (tree, tree *);
extern int is_dummy_object (tree);
extern const struct attribute_spec cxx_attribute_table[];
extern tree make_ptrmem_cst (tree, tree);
+extern tree cp_build_type_attribute_variant (tree, tree);
extern tree cp_build_qualified_type_real (tree, int, tsubst_flags_t);
#define cp_build_qualified_type(TYPE, QUALS) \
cp_build_qualified_type_real ((TYPE), (QUALS), tf_error | tf_warning)
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 4672830ed60..17eaa5d7808 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -1041,8 +1041,9 @@ build_expr_type_conversion (int desires, tree expr, bool complain)
/* The code for conversions from class type is currently only used for
delete expressions. Other expressions are handled by build_new_op. */
-
- if (! TYPE_HAS_CONVERSION (basetype))
+ if (!complete_type_or_else (basetype, expr))
+ return error_mark_node;
+ if (!TYPE_HAS_CONVERSION (basetype))
return NULL_TREE;
for (conv = lookup_conversions (basetype); conv; conv = TREE_CHAIN (conv))
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index b95cf1e6171..8d2e1e8675c 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -1266,7 +1266,7 @@ duplicate_decls (tree newdecl, tree olddecl)
tree attribs = (*targetm.merge_type_attributes)
(TREE_TYPE (olddecl), type);
- type = build_type_attribute_variant (type, attribs);
+ type = cp_build_type_attribute_variant (type, attribs);
TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = type;
}
@@ -1853,8 +1853,6 @@ duplicate_decls (tree newdecl, tree olddecl)
regardless of declaration matches. */
SET_DECL_RTL (newdecl, DECL_RTL (olddecl));
}
- else
- DECL_ESTIMATED_INSNS (newdecl) = DECL_ESTIMATED_INSNS (olddecl);
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
/* Don't clear out the arguments if we're redefining a function. */
@@ -2030,16 +2028,31 @@ redeclaration_error_message (tree newdecl, tree olddecl)
}
else if (TREE_CODE (newdecl) == TEMPLATE_DECL)
{
- if ((TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL
- && (DECL_TEMPLATE_RESULT (newdecl)
- != DECL_TEMPLATE_RESULT (olddecl))
- && DECL_INITIAL (DECL_TEMPLATE_RESULT (newdecl))
- && DECL_INITIAL (DECL_TEMPLATE_RESULT (olddecl)))
- || (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL
- && COMPLETE_TYPE_P (TREE_TYPE (newdecl))
- && COMPLETE_TYPE_P (TREE_TYPE (olddecl))))
+ tree nt, ot;
+
+ if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL)
+ {
+ if (COMPLETE_TYPE_P (TREE_TYPE (newdecl))
+ && COMPLETE_TYPE_P (TREE_TYPE (olddecl)))
+ return "redefinition of `%#D'";
+ return NULL;
+ }
+
+ if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != FUNCTION_DECL
+ || (DECL_TEMPLATE_RESULT (newdecl)
+ == DECL_TEMPLATE_RESULT (olddecl)))
+ return NULL;
+
+ nt = DECL_TEMPLATE_RESULT (newdecl);
+ if (DECL_TEMPLATE_INFO (nt))
+ nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt));
+ ot = DECL_TEMPLATE_RESULT (olddecl);
+ if (DECL_TEMPLATE_INFO (ot))
+ ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot));
+ if (DECL_INITIAL (nt) && DECL_INITIAL (ot))
return "redefinition of `%#D'";
- return 0;
+
+ return NULL;
}
else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl))
{
@@ -4330,14 +4343,14 @@ reshape_init (tree type, tree *initp)
}
}
}
- else if (TREE_CODE (type) == ARRAY_TYPE)
+ else if ((TREE_CODE (type) == ARRAY_TYPE)|| (TREE_CODE (type) == VECTOR_TYPE))
{
tree index;
tree max_index;
/* If the bound of the array is known, take no more initializers
than are allowed. */
- max_index = (TYPE_DOMAIN (type)
+ max_index = ((TYPE_DOMAIN (type) && (TREE_CODE (type) == ARRAY_TYPE))
? array_type_nelts (type) : NULL_TREE);
/* Loop through the array elements, gathering initializers. */
for (index = size_zero_node;
@@ -5743,6 +5756,7 @@ grokfndecl (tree ctype,
if (old_decl)
{
tree ok;
+ bool pop_p;
/* Since we've smashed OLD_DECL to its
DECL_TEMPLATE_RESULT, we must do the same to DECL. */
@@ -5751,9 +5765,10 @@ grokfndecl (tree ctype,
/* Attempt to merge the declarations. This can fail, in
the case of some invalid specialization declarations. */
- push_scope (ctype);
+ pop_p = push_scope (ctype);
ok = duplicate_decls (decl, old_decl);
- pop_scope (ctype);
+ if (pop_p)
+ pop_scope (ctype);
if (!ok)
{
error ("no `%#D' member function declared in class `%T'",
@@ -8177,7 +8192,7 @@ grokdeclarator (tree declarator,
if (decl == NULL_TREE)
return NULL_TREE;
}
- else if (!staticp && ! processing_template_decl
+ else if (!staticp && !dependent_type_p (type)
&& !COMPLETE_TYPE_P (complete_type (type))
&& (TREE_CODE (type) != ARRAY_TYPE || initialized == 0))
{
@@ -8276,13 +8291,6 @@ grokdeclarator (tree declarator,
if (staticp)
{
- /* [class.mem] forbids static data members with the
- same name as the enclosing class. Non-static data
- members are checked in check_field_decls. */
- if (constructor_name_p (declarator, current_class_type))
- pedwarn ("ISO C++ forbids static data member `%D' with same name as enclosing class",
- declarator);
-
/* C++ allows static class members. All other work
for this is done by grokfield. */
decl = build_lang_decl (VAR_DECL, declarator, type);
@@ -8467,8 +8475,6 @@ require_complete_types_for_parms (tree parms)
layout_decl (parms, 0);
DECL_ARG_TYPE (parms) = type_passed_as (TREE_TYPE (parms));
}
- else
- TREE_TYPE (parms) = error_mark_node;
}
}
@@ -10260,9 +10266,6 @@ start_function (tree declspecs, tree declarator, tree attrs, int flags)
/* Start the statement-tree, start the tree now. */
begin_stmt_tree (&DECL_SAVED_TREE (decl1));
- /* Don't double-count statements in templates. */
- DECL_ESTIMATED_INSNS (decl1) = 0;
-
/* Let the user know we're compiling this function. */
announce_function (decl1);
@@ -10272,8 +10275,9 @@ start_function (tree declspecs, tree declarator, tree attrs, int flags)
if (!processing_template_decl && !(flags & SF_PRE_PARSED))
{
/* A specialization is not used to guide overload resolution. */
- if (!DECL_TEMPLATE_SPECIALIZATION (decl1)
- && ! DECL_FUNCTION_MEMBER_P (decl1))
+ if (!DECL_FUNCTION_MEMBER_P (decl1)
+ && !(DECL_USE_TEMPLATE (decl1) &&
+ PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl1))))
{
tree olddecl = pushdecl (decl1);
@@ -10736,8 +10740,6 @@ finish_function (int flags)
which then got a warning when stored in a ptr-to-function variable. */
my_friendly_assert (building_stmt_tree (), 20000911);
-
- finish_fname_decls ();
/* For a cloned function, we've already got all the code we need;
there's no need to add any extra bits. */
@@ -10762,6 +10764,8 @@ finish_function (int flags)
current_eh_spec_block);
}
+ finish_fname_decls ();
+
/* If we're saving up tree structure, tie off the function now. */
finish_stmt_tree (&DECL_SAVED_TREE (fndecl));
@@ -11196,8 +11200,6 @@ cxx_push_function_context (struct function * f)
{
tree fn = f->decl;
- current_function_is_thunk = DECL_THUNK_P (fn);
-
if (DECL_SAVED_FUNCTION_DATA (fn))
{
/* If we already parsed this function, and we're just expanding it
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index ec7b77dc659..0de5c792f1f 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1,6 +1,6 @@
/* Process declarations and variables for C++ compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -229,7 +229,7 @@ maybe_retrofit_in_chrg (tree fn)
/* When processing templates we can't know, in general, whether or
not we're going to have virtual baseclasses. */
- if (uses_template_parms (fn))
+ if (processing_template_decl)
return;
/* We don't need an in-charge parameter for constructors that don't
@@ -432,18 +432,14 @@ grok_array_decl (tree array_expr, tree index_exp)
/* Given the cast expression EXP, checking out its validity. Either return
an error_mark_node if there was an unavoidable error, return a cast to
void for trying to delete a pointer w/ the value 0, or return the
- call to delete. If DOING_VEC is 1, we handle things differently
- for doing an array delete. If DOING_VEC is 2, they gave us the
- array size as an argument to delete.
+ call to delete. If DOING_VEC is true, we handle things differently
+ for doing an array delete.
Implements ARM $5.3.4. This is called from the parser. */
tree
-delete_sanity (tree exp, tree size, int doing_vec, int use_global_delete)
+delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete)
{
tree t, type;
- /* For a regular vector delete (aka, no size argument) we will pass
- this down as a NULL_TREE into build_vec_delete. */
- tree maxindex = NULL_TREE;
if (exp == error_mark_node)
return exp;
@@ -457,6 +453,12 @@ delete_sanity (tree exp, tree size, int doing_vec, int use_global_delete)
}
exp = convert_from_reference (exp);
+
+ /* An array can't have been allocated by new, so complain. */
+ if (TREE_CODE (exp) == VAR_DECL
+ && TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE)
+ warning ("deleting array `%#D'", exp);
+
t = build_expr_type_conversion (WANT_POINTER, exp, true);
if (t == NULL_TREE || t == error_mark_node)
@@ -466,12 +468,6 @@ delete_sanity (tree exp, tree size, int doing_vec, int use_global_delete)
return error_mark_node;
}
- if (doing_vec == 2)
- {
- maxindex = cp_build_binary_op (MINUS_EXPR, size, integer_one_node);
- pedwarn ("anachronistic use of array size in vector delete");
- }
-
type = TREE_TYPE (t);
/* As of Valley Forge, you can delete a pointer to const. */
@@ -490,18 +486,13 @@ delete_sanity (tree exp, tree size, int doing_vec, int use_global_delete)
doing_vec = 0;
}
- /* An array can't have been allocated by new, so complain. */
- if (TREE_CODE (t) == ADDR_EXPR
- && TREE_CODE (TREE_OPERAND (t, 0)) == VAR_DECL
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == ARRAY_TYPE)
- warning ("deleting array `%#D'", TREE_OPERAND (t, 0));
-
/* Deleting a pointer with the value zero is valid and has no effect. */
if (integer_zerop (t))
return build1 (NOP_EXPR, void_type_node, t);
if (doing_vec)
- return build_vec_delete (t, maxindex, sfk_deleting_destructor,
+ return build_vec_delete (t, /*maxindex=*/NULL_TREE,
+ sfk_deleting_destructor,
use_global_delete);
else
return build_delete (type, t, sfk_deleting_destructor,
@@ -661,9 +652,10 @@ check_classfn (tree ctype, tree function, bool template_header_p)
tree methods = CLASSTYPE_METHOD_VEC (ctype);
tree fndecls, fndecl = 0;
bool is_conv_op;
+ bool pop_p;
const char *format = NULL;
- push_scope (ctype);
+ pop_p = push_scope (ctype);
for (fndecls = TREE_VEC_ELT (methods, ix);
fndecls; fndecls = OVL_NEXT (fndecls))
{
@@ -699,7 +691,8 @@ check_classfn (tree ctype, tree function, bool template_header_p)
== DECL_TI_TEMPLATE (fndecl))))
break;
}
- pop_scope (ctype);
+ if (pop_p)
+ pop_scope (ctype);
if (fndecls)
return OVL_CURRENT (fndecls);
error ("prototype for `%#D' does not match any in class `%T'",
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index bb6ff341572..988c539492c 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -791,6 +791,7 @@ dump_decl (tree t, int flags)
/* Else fall through. */
case FIELD_DECL:
case PARM_DECL:
+ case ALIAS_DECL:
dump_simple_decl (t, TREE_TYPE (t), flags);
break;
@@ -939,6 +940,13 @@ dump_decl (tree t, int flags)
dump_expr (t, flags);
break;
+ case TEMPLATE_TYPE_PARM:
+ if (flags & TFF_DECL_SPECIFIERS)
+ pp_cxx_declaration (cxx_pp, t);
+ else
+ pp_type_id (cxx_pp, t);
+ break;
+
default:
pp_unsupported_tree (cxx_pp, t);
/* Fallthrough to error. */
@@ -1311,6 +1319,11 @@ dump_expr (tree t, int flags)
pp_c_constant (pp_c_base (cxx_pp), t);
break;
+ case THROW_EXPR:
+ pp_identifier (cxx_pp, "throw");
+ dump_expr (TREE_OPERAND (t, 0), flags);
+ break;
+
case PTRMEM_CST:
pp_ampersand (cxx_pp);
dump_type (PTRMEM_CST_CLASS (t), flags);
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 03a3274e90a..3cb7f8882c9 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -1,6 +1,6 @@
/* Handle exceptional things in C++.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann <tiemann@cygnus.com>
Rewritten by Mike Stump <mrs@cygnus.com>, based upon an
initial re-implementation courtesy Tad Hunt.
@@ -47,7 +47,6 @@ static tree do_end_catch (tree);
static bool decl_is_java_type (tree decl, int err);
static void initialize_handler_parm (tree, tree);
static tree do_allocate_exception (tree);
-static tree stabilize_throw_expr (tree, tree *);
static tree wrap_cleanups_r (tree *, int *, void *);
static int complete_ptr_ref_or_void_ptr_p (tree, tree);
static bool is_admissible_throw_operand (tree);
@@ -507,7 +506,6 @@ do_allocate_exception (tree type)
NULL_TREE));
}
-#if 0
/* Call __cxa_free_exception from a cleanup. This is never invoked
directly, but see the comment for stabilize_throw_expr. */
@@ -526,7 +524,6 @@ do_free_exception (tree ptr)
return build_function_call (fn, tree_cons (NULL_TREE, ptr, NULL_TREE));
}
-#endif
/* Wrap all cleanups for TARGET_EXPRs in MUST_NOT_THROW_EXPR.
Called from build_throw via walk_tree_without_duplicates. */
@@ -558,58 +555,6 @@ wrap_cleanups_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
return NULL_TREE;
}
-/* Like stabilize_expr, but specifically for a thrown expression. When
- throwing a temporary class object, we want to construct it directly into
- the thrown exception, so we look past the TARGET_EXPR and stabilize the
- arguments of the call instead.
-
- The case where EXP is a call to a function returning a class is a bit of
- a grey area in the standard; it's unclear whether or not it should be
- allowed to throw. I'm going to say no, as that allows us to optimize
- this case without worrying about deallocating the exception object if it
- does. The alternatives would be either not optimizing this case, or
- wrapping the initialization in a TRY_CATCH_EXPR to call do_free_exception
- rather than in a MUST_NOT_THROW_EXPR, for this case only. */
-
-static tree
-stabilize_throw_expr (tree exp, tree *initp)
-{
- tree init_expr;
-
- if (TREE_CODE (exp) == TARGET_EXPR
- && TREE_CODE (TARGET_EXPR_INITIAL (exp)) == AGGR_INIT_EXPR
- && flag_elide_constructors)
- {
- tree aggr_init = AGGR_INIT_EXPR_CHECK (TARGET_EXPR_INITIAL (exp));
- tree args = TREE_OPERAND (aggr_init, 1);
- tree newargs = NULL_TREE;
- tree *p = &newargs;
-
- init_expr = void_zero_node;
- for (; args; args = TREE_CHAIN (args))
- {
- tree arg = TREE_VALUE (args);
- tree arg_init_expr;
-
- arg = stabilize_expr (arg, &arg_init_expr);
-
- if (TREE_SIDE_EFFECTS (arg_init_expr))
- init_expr = build (COMPOUND_EXPR, void_type_node, init_expr,
- arg_init_expr);
- *p = tree_cons (NULL_TREE, arg, NULL_TREE);
- p = &TREE_CHAIN (*p);
- }
- TREE_OPERAND (aggr_init, 1) = newargs;
- }
- else
- {
- exp = stabilize_expr (exp, &init_expr);
- }
-
- *initp = init_expr;
- return exp;
-}
-
/* Build a throw expression. */
tree
@@ -621,7 +566,10 @@ build_throw (tree exp)
return exp;
if (processing_template_decl)
- return build_min (THROW_EXPR, void_type_node, exp);
+ {
+ current_function_returns_abnormally = 1;
+ return build_min (THROW_EXPR, void_type_node, exp);
+ }
if (exp == null_node)
warning ("throwing NULL, which has integral, not pointer type");
@@ -660,6 +608,7 @@ build_throw (tree exp)
tree object, ptr;
tree tmp;
tree temp_expr, allocate_expr;
+ bool elided;
fn = get_identifier ("__cxa_throw");
if (!get_global_value_if_present (fn, &fn))
@@ -700,11 +649,6 @@ build_throw (tree exp)
the call to __cxa_allocate_exception first (which doesn't
matter, since it can't throw). */
- /* Pre-evaluate the thrown expression first, since if we allocated
- the space first we would have to deal with cleaning it up if
- evaluating this expression throws. */
- exp = stabilize_throw_expr (exp, &temp_expr);
-
/* Allocate the space for the exception. */
allocate_expr = do_allocate_exception (TREE_TYPE (exp));
allocate_expr = get_target_expr (allocate_expr);
@@ -712,6 +656,8 @@ build_throw (tree exp)
object = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (exp)), ptr);
object = build_indirect_ref (object, NULL);
+ elided = (TREE_CODE (exp) == TARGET_EXPR);
+
/* And initialize the exception object. */
exp = build_init (object, exp, LOOKUP_ONLYCONVERTING);
if (exp == error_mark_node)
@@ -720,10 +666,30 @@ build_throw (tree exp)
return error_mark_node;
}
- exp = build1 (MUST_NOT_THROW_EXPR, void_type_node, exp);
+ /* Pre-evaluate the thrown expression first, since if we allocated
+ the space first we would have to deal with cleaning it up if
+ evaluating this expression throws.
+
+ The case where EXP the initializer is a call to a constructor or a
+ function returning a class is a bit of a grey area in the
+ standard; it's unclear whether or not it should be allowed to
+ throw. We used to say no, as that allowed us to optimize this
+ case without worrying about deallocating the exception object if
+ it does. But that conflicted with expectations (PR 13944) and the
+ EDG compiler; now we wrap the initialization in a TRY_CATCH_EXPR
+ to call do_free_exception rather than in a MUST_NOT_THROW_EXPR,
+ for this case only. */
+ stabilize_init (exp, &temp_expr);
+
+ if (elided)
+ exp = build (TRY_CATCH_EXPR, void_type_node, exp,
+ do_free_exception (ptr));
+ else
+ exp = build1 (MUST_NOT_THROW_EXPR, void_type_node, exp);
+
/* Prepend the allocation. */
exp = build (COMPOUND_EXPR, TREE_TYPE (exp), allocate_expr, exp);
- if (temp_expr != void_zero_node)
+ if (temp_expr)
{
/* Prepend the calculation of the throw expression. Also, force
any cleanups from the expression to be evaluated here so that
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index 14453bf7534..00f8676e180 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -1,7 +1,7 @@
/* Convert language-specific tree expression to rtl instructions,
for GNU compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index e74a5980098..19204ebf678 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1,6 +1,6 @@
/* Handle initialization things in C++.
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -1150,9 +1150,13 @@ build_init (tree decl, tree init, int flags)
{
tree expr;
- if (IS_AGGR_TYPE (TREE_TYPE (decl))
- || TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
+ if (TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
expr = build_aggr_init (decl, init, flags);
+ else if (CLASS_TYPE_P (TREE_TYPE (decl)))
+ expr = build_special_member_call (decl, complete_ctor_identifier,
+ build_tree_list (NULL_TREE, init),
+ TYPE_BINFO (TREE_TYPE (decl)),
+ LOOKUP_NORMAL|flags);
else
expr = build (INIT_EXPR, TREE_TYPE (decl), decl, init);
@@ -1251,8 +1255,8 @@ expand_default_init (tree binfo, tree true_exp, tree exp, tree init, int flags)
from TRUE_EXP. In constructors, we don't know anything about
the value being initialized.
- FLAGS is just passes to `build_method_call'. See that function for
- its description. */
+ FLAGS is just passed to `build_new_method_call'. See that function
+ for its description. */
static void
expand_aggr_init_1 (tree binfo, tree true_exp, tree exp, tree init, int flags)
@@ -1559,16 +1563,20 @@ build_offset_ref (tree type, tree name, bool address_p)
a class derived from that class (_class.base.init_). */
if (DECL_NONSTATIC_MEMBER_FUNCTION_P (member))
{
+ /* Build a representation of a the qualified name suitable
+ for use as the operand to "&" -- even though the "&" is
+ not actually present. */
+ member = build (OFFSET_REF, TREE_TYPE (member), decl, member);
/* In Microsoft mode, treat a non-static member function as if
it were a pointer-to-member. */
if (flag_ms_extensions)
{
- member = build (OFFSET_REF, TREE_TYPE (member), decl, member);
PTRMEM_OK_P (member) = 1;
return build_unary_op (ADDR_EXPR, member, 0);
}
- error ("invalid use of non-static member function `%D'", member);
- return error_mark_node;
+ error ("invalid use of non-static member function `%D'",
+ TREE_OPERAND (member, 1));
+ return member;
}
else if (TREE_CODE (member) == FIELD_DECL)
{
@@ -1610,8 +1618,12 @@ decl_constant_value (tree decl)
TREE_OPERAND (decl, 0), d1, d2);
}
- if (TREE_READONLY_DECL_P (decl)
- && ! TREE_THIS_VOLATILE (decl)
+ if (DECL_P (decl)
+ && (/* Enumeration constants are constant. */
+ TREE_CODE (decl) == CONST_DECL
+ /* And so are variables with a 'const' type -- unless they
+ are also 'volatile'. */
+ || CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (decl)))
&& DECL_INITIAL (decl)
&& DECL_INITIAL (decl) != error_mark_node
/* This is invalid if initial value is not constant.
@@ -1907,7 +1919,7 @@ static tree
build_new_1 (tree exp)
{
tree placement, init;
- tree true_type, size, rval, t;
+ tree true_type, size, rval;
/* The type of the new-expression. (This type is always a pointer
type.) */
tree pointer_type;
@@ -1948,6 +1960,7 @@ build_new_1 (tree exp)
address of the first array element. This node is a VAR_DECL, and
is therefore reusable. */
tree data_addr;
+ tree init_preeval_expr = NULL_TREE;
placement = TREE_OPERAND (exp, 0);
type = TREE_OPERAND (exp, 1);
@@ -2012,12 +2025,12 @@ build_new_1 (tree exp)
use_java_new = 1;
if (!get_global_value_if_present (get_identifier (alloc_name),
&alloc_decl))
- {
+ {
error ("call to Java constructor with `%s' undefined", alloc_name);
return error_mark_node;
}
else if (really_overloaded_fn (alloc_decl))
- {
+ {
error ("`%D' should never be overloaded", alloc_decl);
return error_mark_node;
}
@@ -2031,6 +2044,7 @@ build_new_1 (tree exp)
else
{
tree fnname;
+ tree fns;
fnname = ansi_opname (code);
@@ -2049,11 +2063,18 @@ build_new_1 (tree exp)
}
/* Create the argument list. */
args = tree_cons (NULL_TREE, size, placement);
- /* Call the function. */
- alloc_call = build_method_call (build_dummy_object (true_type),
- fnname, args,
- TYPE_BINFO (true_type),
- LOOKUP_NORMAL);
+ /* Do name-lookup to find the appropriate operator. */
+ fns = lookup_fnfields (true_type, fnname, /*protect=*/2);
+ if (TREE_CODE (fns) == TREE_LIST)
+ {
+ error ("request for member `%D' is ambiguous", fnname);
+ print_candidates (fns);
+ return error_mark_node;
+ }
+ alloc_call = build_new_method_call (build_dummy_object (true_type),
+ fns, args,
+ /*conversion_path=*/NULL_TREE,
+ LOOKUP_NORMAL);
}
else
{
@@ -2108,18 +2129,8 @@ build_new_1 (tree exp)
placement delete. */
if (placement_allocation_fn_p)
{
- tree inits = NULL_TREE;
- t = TREE_CHAIN (TREE_OPERAND (alloc_call, 1));
- for (; t; t = TREE_CHAIN (t))
- if (TREE_SIDE_EFFECTS (TREE_VALUE (t)))
- {
- tree init;
- TREE_VALUE (t) = stabilize_expr (TREE_VALUE (t), &init);
- if (inits)
- inits = build (COMPOUND_EXPR, void_type_node, inits, init);
- else
- inits = init;
- }
+ tree inits;
+ stabilize_call (alloc_call, &inits);
if (inits)
alloc_expr = build (COMPOUND_EXPR, TREE_TYPE (alloc_expr), inits,
alloc_expr);
@@ -2162,14 +2173,18 @@ build_new_1 (tree exp)
data_addr = alloc_node;
}
- /* Now initialize the allocated object. */
+ /* Now initialize the allocated object. Note that we preevaluate the
+ initialization expression, apart from the actual constructor call or
+ assignment--we do this because we want to delay the allocation as long
+ as possible in order to minimize the size of the exception region for
+ placement delete. */
if (is_initialized)
{
init_expr = build_indirect_ref (data_addr, NULL);
if (init == void_zero_node)
init = build_default_init (full_type, nelts);
- else if (init && pedantic && has_array)
+ else if (init && has_array)
pedwarn ("ISO C++ forbids initialization in array new");
if (has_array)
@@ -2179,10 +2194,13 @@ build_new_1 (tree exp)
integer_one_node),
init, /*from_array=*/0);
else if (TYPE_NEEDS_CONSTRUCTING (type))
- init_expr = build_special_member_call (init_expr,
- complete_ctor_identifier,
- init, TYPE_BINFO (true_type),
- LOOKUP_NORMAL);
+ {
+ init_expr = build_special_member_call (init_expr,
+ complete_ctor_identifier,
+ init, TYPE_BINFO (true_type),
+ LOOKUP_NORMAL);
+ stabilize_init (init_expr, &init_preeval_expr);
+ }
else
{
/* We are processing something like `new int (10)', which
@@ -2190,15 +2208,13 @@ build_new_1 (tree exp)
if (TREE_CODE (init) == TREE_LIST)
init = build_x_compound_expr_from_list (init, "new initializer");
-
+
else if (TREE_CODE (init) == CONSTRUCTOR
&& TREE_TYPE (init) == NULL_TREE)
- {
- pedwarn ("ISO C++ forbids aggregate initializer to new");
- init = digest_init (type, init, 0);
- }
+ abort ();
init_expr = build_modify_expr (init_expr, INIT_EXPR, init);
+ stabilize_init (init_expr, &init_preeval_expr);
}
if (init_expr == error_mark_node)
@@ -2228,51 +2244,11 @@ build_new_1 (tree exp)
(placement_allocation_fn_p
? alloc_call : NULL_TREE));
- /* Ack! First we allocate the memory. Then we set our sentry
- variable to true, and expand a cleanup that deletes the memory
- if sentry is true. Then we run the constructor, and finally
- clear the sentry.
-
- It would be nice to be able to handle this without the sentry
- variable, perhaps with a TRY_CATCH_EXPR, but this doesn't
- work. We allocate the space first, so if there are any
- temporaries with cleanups in the constructor args we need this
- EH region to extend until end of full-expression to preserve
- nesting.
-
- If the backend had some mechanism so that we could force the
- allocation to be expanded after all the other args to the
- constructor, that would fix the nesting problem and we could
- do away with this complexity. But that would complicate other
- things; in particular, it would make it difficult to bail out
- if the allocation function returns null. Er, no, it wouldn't;
- we just don't run the constructor. The standard says it's
- unspecified whether or not the args are evaluated.
-
- FIXME FIXME FIXME inline invisible refs as refs. That way we
- can preevaluate value parameters. */
-
+ /* This is much simpler now that we've preevaluated all of the
+ arguments to the constructor call. */
if (cleanup)
- {
- tree end, sentry, begin;
-
- begin = get_target_expr (boolean_true_node);
- CLEANUP_EH_ONLY (begin) = 1;
-
- sentry = TARGET_EXPR_SLOT (begin);
-
- TARGET_EXPR_CLEANUP (begin)
- = build (COND_EXPR, void_type_node, sentry,
- cleanup, void_zero_node);
-
- end = build (MODIFY_EXPR, TREE_TYPE (sentry),
- sentry, boolean_false_node);
-
- init_expr
- = build (COMPOUND_EXPR, void_type_node, begin,
- build (COMPOUND_EXPR, void_type_node, init_expr,
- end));
- }
+ init_expr = build (TRY_CATCH_EXPR, void_type_node,
+ init_expr, cleanup);
}
}
else
@@ -2305,6 +2281,9 @@ build_new_1 (tree exp)
rval = build (COMPOUND_EXPR, TREE_TYPE (rval), alloc_expr, rval);
}
+ if (init_preeval_expr)
+ rval = build (COMPOUND_EXPR, TREE_TYPE (rval), init_preeval_expr, rval);
+
/* Convert to the final type. */
rval = build_nop (pointer_type, rval);
@@ -2840,23 +2819,35 @@ build_delete (tree type, tree addr, special_function_kind auto_delete,
if (TREE_CODE (type) == POINTER_TYPE)
{
+ bool complete_p = true;
+
type = TYPE_MAIN_VARIANT (TREE_TYPE (type));
if (TREE_CODE (type) == ARRAY_TYPE)
goto handle_array;
- if (VOID_TYPE_P (type)
- /* We don't want to warn about delete of void*, only other
- incomplete types. Deleting other incomplete types
- invokes undefined behavior, but it is not ill-formed, so
- compile to something that would even do The Right Thing
- (TM) should the type have a trivial dtor and no delete
- operator. */
- || !complete_type_or_diagnostic (type, addr, 1)
- || !IS_AGGR_TYPE (type))
+ /* We don't want to warn about delete of void*, only other
+ incomplete types. Deleting other incomplete types
+ invokes undefined behavior, but it is not ill-formed, so
+ compile to something that would even do The Right Thing
+ (TM) should the type have a trivial dtor and no delete
+ operator. */
+ if (!VOID_TYPE_P (type))
{
- /* Call the builtin operator delete. */
- return build_builtin_delete_call (addr);
+ complete_type (type);
+ if (!COMPLETE_TYPE_P (type))
+ {
+ warning ("possible problem detected in invocation of "
+ "delete operator:");
+ cxx_incomplete_type_diagnostic (addr, type, 1);
+ inform ("neither the destructor nor the class-specific "
+ "operator delete will be called, even if they are "
+ "declared when the class is defined.");
+ complete_p = false;
+ }
}
+ if (VOID_TYPE_P (type) || !complete_p || !IS_AGGR_TYPE (type))
+ /* Call the builtin operator delete. */
+ return build_builtin_delete_call (addr);
if (TREE_SIDE_EFFECTS (addr))
addr = save_expr (addr);
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index 4fb45280e2e..2239c76ca87 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -535,7 +535,7 @@ handle_pragma_interface (cpp_reader* dfile ATTRIBUTE_UNUSED )
else if (fname == 0)
main_filename = lbasename (input_filename);
else
- main_filename = ggc_strdup (TREE_STRING_POINTER (fname));
+ main_filename = TREE_STRING_POINTER (fname);
finfo = get_fileinfo (input_filename);
@@ -585,7 +585,7 @@ handle_pragma_implementation (cpp_reader* dfile ATTRIBUTE_UNUSED )
}
else
{
- main_filename = ggc_strdup (TREE_STRING_POINTER (fname));
+ main_filename = TREE_STRING_POINTER (fname);
if (cpp_included (parse_in, main_filename))
warning ("#pragma implementation for %s appears after file is included",
main_filename);
@@ -726,7 +726,8 @@ retrofit_lang_decl (tree t)
ld->u.f.u3sel = TREE_CODE (t) == FUNCTION_DECL ? 1 : 0;
DECL_LANG_SPECIFIC (t) = ld;
- if (current_lang_name == lang_name_cplusplus)
+ if (current_lang_name == lang_name_cplusplus
+ || decl_linkage (t) == lk_none)
SET_DECL_LANGUAGE (t, lang_cplusplus);
else if (current_lang_name == lang_name_c)
SET_DECL_LANGUAGE (t, lang_c);
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index a1810d3e72f..760d8b348dd 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1,5 +1,5 @@
/* Name mangling for the 3.0 C++ ABI.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Alex Samuel <sameul@codesourcery.com>
This file is part of GCC.
@@ -58,6 +58,7 @@
#include "obstack.h"
#include "toplev.h"
#include "varray.h"
+#include "flags.h"
/* Debugging support. */
@@ -688,18 +689,25 @@ write_encoding (const tree decl)
if (TREE_CODE (decl) == FUNCTION_DECL)
{
tree fn_type;
+ tree d;
if (decl_is_template_id (decl, NULL))
- fn_type = get_mostly_instantiated_function_type (decl);
+ {
+ fn_type = get_mostly_instantiated_function_type (decl);
+ d = NULL_TREE;
+ }
else
- fn_type = TREE_TYPE (decl);
+ {
+ fn_type = TREE_TYPE (decl);
+ d = decl;
+ }
write_bare_function_type (fn_type,
(!DECL_CONSTRUCTOR_P (decl)
&& !DECL_DESTRUCTOR_P (decl)
&& !DECL_CONV_FN_P (decl)
&& decl_is_template_id (decl, NULL)),
- decl);
+ d);
}
}
@@ -2109,9 +2117,9 @@ write_template_arg_literal (const tree value)
{
if (same_type_p (type, boolean_type_node))
{
- if (value == boolean_false_node || integer_zerop (value))
+ if (integer_zerop (value))
write_unsigned_number (0);
- else if (value == boolean_true_node)
+ else if (integer_onep (value))
write_unsigned_number (1);
else
abort ();
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 106585571f9..36e48674294 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -487,6 +487,7 @@ use_thunk (tree thunk_fndecl, bool emit_p)
t = tree_cons (NULL_TREE, a, t);
t = nreverse (t);
t = build_call (alias, t);
+ CALL_FROM_THUNK_P (t) = 1;
t = force_target_expr (TREE_TYPE (t), t);
if (!this_adjusting)
t = thunk_adjust (t, /*this_adjusting=*/0,
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 4893e5ebda0..9c8b111475c 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -936,15 +936,16 @@ pushdecl (tree x)
/* ARM $8.3 */
if (b->kind == sk_function_parms)
{
- error ("declaration of `%#D' shadows a parameter",
- name);
+ error ("declaration of '%#D' shadows a parameter", x);
err = true;
}
}
if (warn_shadow && !err)
- shadow_warning (SW_PARAM,
- IDENTIFIER_POINTER (name), oldlocal);
+ {
+ warning ("declaration of '%#D' shadows a parameter", x);
+ warning ("%Jshadowed declaration is here", oldlocal);
+ }
}
/* Maybe warn if shadowing something else. */
@@ -957,17 +958,25 @@ pushdecl (tree x)
if (IDENTIFIER_CLASS_VALUE (name) != NULL_TREE
&& current_class_ptr
&& !TREE_STATIC (name))
- warning ("declaration of `%s' shadows a member of `this'",
- IDENTIFIER_POINTER (name));
+ {
+ /* Location of previous decl is not useful in this case. */
+ warning ("declaration of '%D' shadows a member of 'this'",
+ x);
+ }
else if (oldlocal != NULL_TREE
&& TREE_CODE (oldlocal) == VAR_DECL)
- shadow_warning (SW_LOCAL,
- IDENTIFIER_POINTER (name), oldlocal);
+ {
+ warning ("declaration of '%D' shadows a previous local", x);
+ warning ("%Jshadowed declaration is here", oldlocal);
+ }
else if (oldglobal != NULL_TREE
&& TREE_CODE (oldglobal) == VAR_DECL)
/* XXX shadow warnings in outer-more namespaces */
- shadow_warning (SW_GLOBAL,
- IDENTIFIER_POINTER (name), oldglobal);
+ {
+ warning ("declaration of '%D' shadows a global declaration",
+ x);
+ warning ("%Jshadowed declaration is here", oldglobal);
+ }
}
}
@@ -2479,15 +2488,30 @@ is_ancestor (tree root, tree child)
}
}
-/* Enter a class or namespace scope. */
+/* Enter the class or namespace scope indicated by T. Returns TRUE iff
+ pop_scope should be called later to exit this scope. */
-void
+bool
push_scope (tree t)
{
+ bool pop = true;
+
if (TREE_CODE (t) == NAMESPACE_DECL)
push_decl_namespace (t);
- else if CLASS_TYPE_P (t)
- push_nested_class (t);
+ else if (CLASS_TYPE_P (t))
+ {
+ if (!at_class_scope_p ()
+ || !same_type_p (current_class_type, t))
+ push_nested_class (t);
+ else
+ /* T is the same as the current scope. There is therefore no
+ need to re-enter the scope. Since we are not actually
+ pushing a new scope, our caller should not call
+ pop_scope. */
+ pop = false;
+ }
+
+ return pop;
}
/* Leave scope pushed by push_scope. */
@@ -2721,6 +2745,41 @@ push_class_level_binding (tree name, tree x)
if (TYPE_BEING_DEFINED (current_class_type))
check_template_shadow (x);
+ /* [class.mem]
+
+ If T is the name of a class, then each of the following shall
+ have a name different from T:
+
+ -- every static data member of class T;
+
+ -- every member of class T that is itself a type;
+
+ -- every enumerator of every member of class T that is an
+ enumerated type;
+
+ -- every member of every anonymous union that is a member of
+ class T.
+
+ (Non-static data members were also forbidden to have the same
+ name as T until TC1.) */
+ if ((TREE_CODE (x) == VAR_DECL
+ || TREE_CODE (x) == CONST_DECL
+ || (TREE_CODE (x) == TYPE_DECL
+ && !DECL_SELF_REFERENCE_P (x))
+ /* A data member of an anonymous union. */
+ || (TREE_CODE (x) == FIELD_DECL
+ && DECL_CONTEXT (x) != current_class_type))
+ && DECL_NAME (x) == constructor_name (current_class_type))
+ {
+ tree scope = context_for_name_lookup (x);
+ if (TYPE_P (scope) && same_type_p (scope, current_class_type))
+ {
+ error ("`%D' has the same name as the class in which it is declared",
+ x);
+ POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
+ }
+ }
+
/* If this declaration shadows a declaration from an enclosing
class, then we will need to restore IDENTIFIER_CLASS_VALUE when
we leave this class. Record the shadowed declaration here. */
@@ -4688,7 +4747,7 @@ store_bindings (tree names, cxx_saved_binding *old_bindings)
}
void
-maybe_push_to_top_level (int pseudo)
+push_to_top_level (void)
{
struct saved_scope *s;
struct cp_binding_level *b;
@@ -4723,7 +4782,7 @@ maybe_push_to_top_level (int pseudo)
inserted into namespace level, finish_file wouldn't find them
when doing pending instantiations. Therefore, don't stop at
namespace level, but continue until :: . */
- if (global_scope_p (b) || (pseudo && b->kind == sk_template_parms))
+ if (global_scope_p (b))
break;
old_bindings = store_bindings (b->names, old_bindings);
@@ -4752,12 +4811,6 @@ maybe_push_to_top_level (int pseudo)
}
void
-push_to_top_level (void)
-{
- maybe_push_to_top_level (0);
-}
-
-void
pop_from_top_level (void)
{
struct saved_scope *s = scope_chain;
diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h
index d2fe5946a06..83775752053 100644
--- a/gcc/cp/name-lookup.h
+++ b/gcc/cp/name-lookup.h
@@ -215,7 +215,7 @@ struct cp_binding_level GTY(())
/* True if this scope is an SK_TEMPLATE_SPEC scope. This field is
only valid if KIND == SK_TEMPLATE_PARMS. */
- bool explicit_spec_p : 1;
+ BOOL_BITFIELD explicit_spec_p : 1;
/* true means make a BLOCK for this level regardless of all else. */
unsigned keep : 1;
@@ -264,11 +264,10 @@ extern void print_binding_stack (void);
extern void print_binding_level (cxx_scope *);
extern void push_to_top_level (void);
extern void pop_from_top_level (void);
-extern void maybe_push_to_top_level (int);
extern void pop_everything (void);
extern void keep_next_level (bool);
extern bool is_ancestor (tree, tree);
-extern void push_scope (tree);
+extern bool push_scope (tree);
extern void pop_scope (tree);
extern void push_namespace (tree);
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 1ddffc9c76c..5ada1312e59 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -1,5 +1,6 @@
/* Perform optimizations on tree structure.
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
+ Free Software Foundation, Inc.
Written by Mark Michell (mark@codesourcery.com).
This file is part of GCC.
@@ -231,10 +232,6 @@ maybe_clone_body (tree fn)
/* Clone the body. */
clone_body (clone, fn, decl_map);
- /* There are as many statements in the clone as in the
- original. */
- DECL_ESTIMATED_INSNS (clone) = DECL_ESTIMATED_INSNS (fn);
-
/* Clean up. */
splay_tree_delete (decl_map);
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 481864b1095..8e6b9591323 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -72,6 +72,8 @@ typedef struct cp_token GTY (())
/* If this token is a keyword, this value indicates which keyword.
Otherwise, this value is RID_MAX. */
ENUM_BITFIELD (rid) keyword : 8;
+ /* Token flags. */
+ unsigned char flags;
/* The value associated with this token, if any. */
tree value;
/* The location at which this token was found. */
@@ -597,7 +599,7 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer ATTRIBUTE_UNUSED ,
while (!done)
{
/* Get a new token from the preprocessor. */
- token->type = c_lex (&token->value);
+ token->type = c_lex_with_flags (&token->value, &token->flags);
/* Issue messages about tokens we cannot process. */
switch (token->type)
{
@@ -1667,8 +1669,6 @@ static tree cp_parser_sizeof_operand
(cp_parser *, enum rid);
static bool cp_parser_declares_only_class_p
(cp_parser *);
-static tree cp_parser_fold_non_dependent_expr
- (tree);
static bool cp_parser_friend_p
(tree);
static cp_token *cp_parser_require
@@ -1681,6 +1681,8 @@ static bool cp_parser_next_token_starts_class_definition_p
(cp_parser *);
static bool cp_parser_next_token_ends_template_argument_p
(cp_parser *);
+static bool cp_parser_nth_token_starts_template_argument_list_p
+ (cp_parser *, size_t);
static enum tag_types cp_parser_token_is_class_key
(cp_token *);
static void cp_parser_check_class_key
@@ -2741,7 +2743,8 @@ cp_parser_id_expression (cp_parser *parser,
we can avoid the template-id case. This is an optimization
for this common case. */
if (token->type == CPP_NAME
- && cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_LESS)
+ && !cp_parser_nth_token_starts_template_argument_list_p
+ (parser, 2))
return cp_parser_identifier (parser);
cp_parser_parse_tentatively (parser);
@@ -3113,7 +3116,9 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
template-id), nor a `::', then we are not looking at a
nested-name-specifier. */
token = cp_lexer_peek_nth_token (parser->lexer, 2);
- if (token->type != CPP_LESS && token->type != CPP_SCOPE)
+ if (token->type != CPP_SCOPE
+ && !cp_parser_nth_token_starts_template_argument_list_p
+ (parser, 2))
break;
}
@@ -3731,9 +3736,11 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
koenig_p = false;
if (idk == CP_ID_KIND_UNQUALIFIED)
{
+ /* We do not perform argument-dependent lookup if
+ normal lookup finds a non-function, in accordance
+ with the expected resolution of DR 218. */
if (args
&& (is_overloaded_fn (postfix_expression)
- || DECL_P (postfix_expression)
|| TREE_CODE (postfix_expression) == IDENTIFIER_NODE))
{
koenig_p = true;
@@ -3761,12 +3768,18 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
= build_min_nt (CALL_EXPR, postfix_expression, args);
break;
}
-
- postfix_expression
- = (build_new_method_call
- (instance, fn, args, NULL_TREE,
- (idk == CP_ID_KIND_QUALIFIED
- ? LOOKUP_NONVIRTUAL : LOOKUP_NORMAL)));
+
+ if (BASELINK_P (fn))
+ postfix_expression
+ = (build_new_method_call
+ (instance, fn, args, NULL_TREE,
+ (idk == CP_ID_KIND_QUALIFIED
+ ? LOOKUP_NONVIRTUAL : LOOKUP_NORMAL)));
+ else
+ postfix_expression
+ = finish_call_expr (postfix_expression, args,
+ /*disallow_virtual=*/false,
+ /*koenig_p=*/false);
}
else if (TREE_CODE (postfix_expression) == OFFSET_REF
|| TREE_CODE (postfix_expression) == MEMBER_REF
@@ -3843,6 +3856,11 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
being dependent. */
if (!scope)
scope = error_mark_node;
+ /* If the SCOPE was erroneous, make the various
+ semantic analysis functions exit quickly -- and
+ without issuing additional error messages. */
+ if (scope == error_mark_node)
+ postfix_expression = error_mark_node;
}
/* Consume the `.' or `->' operator. */
@@ -4097,7 +4115,7 @@ cp_parser_parenthesized_expression_list (cp_parser* parser,
If either of the first two productions is used, sets *SCOPE to the
TYPE specified before the final `::'. Otherwise, *SCOPE is set to
NULL_TREE. *TYPE is set to the TYPE_DECL for the final type-name,
- or ERROR_MARK_NODE if no type-name is present. */
+ or ERROR_MARK_NODE if the parse fails. */
static void
cp_parser_pseudo_destructor_name (cp_parser* parser,
@@ -4137,6 +4155,21 @@ cp_parser_pseudo_destructor_name (cp_parser* parser,
{
/* Look for the type-name. */
*scope = TREE_TYPE (cp_parser_type_name (parser));
+
+ /* If we didn't get an aggregate type, or we don't have ::~,
+ then something has gone wrong. Since the only caller of this
+ function is looking for something after `.' or `->' after a
+ scalar type, most likely the program is trying to get a
+ member of a non-aggregate type. */
+ if (*scope == error_mark_node
+ || cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE)
+ || cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_COMPL)
+ {
+ cp_parser_error (parser, "request for member of non-aggregate type");
+ *type = error_mark_node;
+ return;
+ }
+
/* Look for the `::' token. */
cp_parser_require (parser, CPP_SCOPE, "`::'");
}
@@ -4426,6 +4459,15 @@ cp_parser_new_expression (cp_parser* parser)
type = cp_parser_type_id (parser);
/* Look for the closing `)'. */
cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'");
+ /* There should not be a direct-new-declarator in this production,
+ but GCC used to allowed this, so we check and emit a sensible error
+ message for this case. */
+ if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
+ {
+ error ("array bound forbidden after parenthesized type-id");
+ inform ("try removing the parentheses around the type-id");
+ cp_parser_direct_new_declarator (parser);
+ }
}
/* Otherwise, there must be a new-type-id. */
else
@@ -5454,7 +5496,12 @@ cp_parser_statement (cp_parser* parser, bool in_statement_expr_p)
labeled-statement:
identifier : statement
case constant-expression : statement
- default : statement
+ default : statement
+
+ GNU Extension:
+
+ labeled-statement:
+ case constant-expression ... constant-expression : statement
Returns the new CASE_LABEL, for a `case' or `default' label. For
an ordinary label, returns a LABEL_STMT. */
@@ -5478,7 +5525,8 @@ cp_parser_labeled_statement (cp_parser* parser, bool in_statement_expr_p)
{
case RID_CASE:
{
- tree expr;
+ tree expr, expr_hi;
+ cp_token *ellipsis;
/* Consume the `case' token. */
cp_lexer_consume_token (parser->lexer);
@@ -5486,10 +5534,26 @@ cp_parser_labeled_statement (cp_parser* parser, bool in_statement_expr_p)
expr = cp_parser_constant_expression (parser,
/*allow_non_constant_p=*/false,
NULL);
+
+ ellipsis = cp_lexer_peek_token (parser->lexer);
+ if (ellipsis->type == CPP_ELLIPSIS)
+ {
+ /* Consume the `...' token. */
+ cp_lexer_consume_token (parser->lexer);
+ expr_hi =
+ cp_parser_constant_expression (parser,
+ /*allow_non_constant_p=*/false,
+ NULL);
+ /* We don't need to emit warnings here, as the common code
+ will do this for us. */
+ }
+ else
+ expr_hi = NULL_TREE;
+
if (!parser->in_switch_statement_p)
error ("case label `%E' not within a switch statement", expr);
else
- statement = finish_case_label (expr, NULL_TREE);
+ statement = finish_case_label (expr, expr_hi);
}
break;
@@ -6466,6 +6530,9 @@ cp_parser_simple_declaration (cp_parser* parser,
cp_parser_error (parser, "expected `,' or `;'");
/* Skip tokens until we reach the end of the statement. */
cp_parser_skip_to_end_of_statement (parser);
+ /* If the next token is now a `;', consume it. */
+ if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))
+ cp_lexer_consume_token (parser->lexer);
goto done;
}
/* After the first time around, a function-definition is not
@@ -6885,6 +6952,7 @@ cp_parser_conversion_function_id (cp_parser* parser)
tree saved_scope;
tree saved_qualifying_scope;
tree saved_object_scope;
+ bool pop_p = false;
/* Look for the `operator' token. */
if (!cp_parser_require_keyword (parser, RID_OPERATOR, "`operator'"))
@@ -6909,11 +6977,11 @@ cp_parser_conversion_function_id (cp_parser* parser)
In order to see that `I' is a type-name in the definition, we
must be in the scope of `S'. */
if (saved_scope)
- push_scope (saved_scope);
+ pop_p = push_scope (saved_scope);
/* Parse the conversion-type-id. */
type = cp_parser_conversion_type_id (parser);
/* Leave the scope of the class, if any. */
- if (saved_scope)
+ if (pop_p)
pop_scope (saved_scope);
/* Restore the saved scope. */
parser->scope = saved_scope;
@@ -7697,13 +7765,19 @@ cp_parser_type_parameter (cp_parser* parser)
/*check_dependency_p=*/true,
/*template_p=*/&is_template,
/*declarator_p=*/false);
- /* Look up the name. */
- default_argument
- = cp_parser_lookup_name (parser, default_argument,
- /*is_type=*/false,
- /*is_template=*/is_template,
- /*is_namespace=*/false,
- /*check_dependency=*/true);
+ if (TREE_CODE (default_argument) == TYPE_DECL)
+ /* If the id-expression was a template-id that refers to
+ a template-class, we already have the declaration here,
+ so no further lookup is needed. */
+ ;
+ else
+ /* Look up the name. */
+ default_argument
+ = cp_parser_lookup_name (parser, default_argument,
+ /*is_type=*/false,
+ /*is_template=*/is_template,
+ /*is_namespace=*/false,
+ /*check_dependency=*/true);
/* See if the default argument is valid. */
default_argument
= check_template_template_default_arg (default_argument);
@@ -7752,7 +7826,7 @@ cp_parser_template_id (cp_parser *parser,
tree template_id;
ptrdiff_t start_of_id;
tree access_check = NULL_TREE;
- cp_token *next_token;
+ cp_token *next_token, *next_token_2;
bool is_identifier;
/* If the next token corresponds to a template-id, there is no need
@@ -7777,7 +7851,8 @@ cp_parser_template_id (cp_parser *parser,
finding a template-id. */
if ((next_token->type != CPP_NAME && next_token->keyword != RID_OPERATOR)
|| (next_token->type == CPP_NAME
- && cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_LESS))
+ && !cp_parser_nth_token_starts_template_argument_list_p
+ (parser, 2)))
{
cp_parser_error (parser, "expected template-id");
return error_mark_node;
@@ -7809,15 +7884,60 @@ cp_parser_template_id (cp_parser *parser,
return template;
}
- /* Look for the `<' that starts the template-argument-list. */
- if (!cp_parser_require (parser, CPP_LESS, "`<'"))
+ /* If we find the sequence `[:' after a template-name, it's probably
+ a digraph-typo for `< ::'. Substitute the tokens and check if we can
+ parse correctly the argument list. */
+ next_token = cp_lexer_peek_nth_token (parser->lexer, 1);
+ next_token_2 = cp_lexer_peek_nth_token (parser->lexer, 2);
+ if (next_token->type == CPP_OPEN_SQUARE
+ && next_token->flags & DIGRAPH
+ && next_token_2->type == CPP_COLON
+ && !(next_token_2->flags & PREV_WHITE))
{
- pop_deferring_access_checks ();
- return error_mark_node;
+ cp_parser_parse_tentatively (parser);
+ /* Change `:' into `::'. */
+ next_token_2->type = CPP_SCOPE;
+ /* Consume the first token (CPP_OPEN_SQUARE - which we pretend it is
+ CPP_LESS. */
+ cp_lexer_consume_token (parser->lexer);
+ /* Parse the arguments. */
+ arguments = cp_parser_enclosed_template_argument_list (parser);
+ if (!cp_parser_parse_definitely (parser))
+ {
+ /* If we couldn't parse an argument list, then we revert our changes
+ and return simply an error. Maybe this is not a template-id
+ after all. */
+ next_token_2->type = CPP_COLON;
+ cp_parser_error (parser, "expected `<'");
+ pop_deferring_access_checks ();
+ return error_mark_node;
+ }
+ /* Otherwise, emit an error about the invalid digraph, but continue
+ parsing because we got our argument list. */
+ pedwarn ("`<::' cannot begin a template-argument list");
+ inform ("`<:' is an alternate spelling for `['. Insert whitespace "
+ "between `<' and `::'");
+ if (!flag_permissive)
+ {
+ static bool hint;
+ if (!hint)
+ {
+ inform ("(if you use `-fpermissive' G++ will accept your code)");
+ hint = true;
+ }
+ }
+ }
+ else
+ {
+ /* Look for the `<' that starts the template-argument-list. */
+ if (!cp_parser_require (parser, CPP_LESS, "`<'"))
+ {
+ pop_deferring_access_checks ();
+ return error_mark_node;
+ }
+ /* Parse the arguments. */
+ arguments = cp_parser_enclosed_template_argument_list (parser);
}
-
- /* Parse the arguments. */
- arguments = cp_parser_enclosed_template_argument_list (parser);
/* Build a representation of the specialization. */
if (TREE_CODE (template) == IDENTIFIER_NODE)
@@ -7957,7 +8077,7 @@ cp_parser_template_name (cp_parser* parser,
-- but we do not if there is no `<'. */
if (processing_template_decl
- && cp_lexer_next_token_is (parser->lexer, CPP_LESS))
+ && cp_parser_nth_token_starts_template_argument_list_p (parser, 1))
{
/* In a declaration, in a dependent context, we pretend that the
"template" keyword was present in order to improve error
@@ -8316,7 +8436,7 @@ cp_parser_template_argument (cp_parser* parser)
argument = cp_parser_constant_expression (parser,
/*allow_non_constant_p=*/false,
/*non_constant_p=*/NULL);
- argument = cp_parser_fold_non_dependent_expr (argument);
+ argument = fold_non_dependent_expr (argument);
if (!maybe_type_id)
return argument;
if (!cp_parser_next_token_ends_template_argument_p (parser))
@@ -9729,6 +9849,7 @@ cp_parser_init_declarator (cp_parser* parser,
bool is_non_constant_init;
int ctor_dtor_or_conv_p;
bool friend_p;
+ bool pop_p = false;
/* Assume that this is not the declarator for a function
definition. */
@@ -9886,7 +10007,7 @@ cp_parser_init_declarator (cp_parser* parser,
/* Enter the SCOPE. That way unqualified names appearing in the
initializer will be looked up in SCOPE. */
if (scope)
- push_scope (scope);
+ pop_p = push_scope (scope);
/* Perform deferred access control checks, now that we know in which
SCOPE the declared entity resides. */
@@ -9936,7 +10057,7 @@ cp_parser_init_declarator (cp_parser* parser,
is important to do this before calling cp_finish_decl because it
makes decisions about whether to create DECL_STMTs or not based
on the current scope. */
- if (scope)
+ if (pop_p)
pop_scope (scope);
/* For an in-class declaration, use `grokfield' to create the
@@ -10156,7 +10277,8 @@ cp_parser_direct_declarator (cp_parser* parser,
bool saved_default_arg_ok_p = parser->default_arg_ok_p;
bool saved_in_declarator_p = parser->in_declarator_p;
bool first = true;
-
+ bool pop_p = false;
+
while (true)
{
/* Peek at the next token. */
@@ -10268,15 +10390,20 @@ cp_parser_direct_declarator (cp_parser* parser,
declarator. */
if (first)
{
+ bool saved_in_type_id_in_expr_p;
+
parser->default_arg_ok_p = saved_default_arg_ok_p;
parser->in_declarator_p = saved_in_declarator_p;
/* Consume the `('. */
cp_lexer_consume_token (parser->lexer);
/* Parse the nested declarator. */
+ saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p;
+ parser->in_type_id_in_expr_p = true;
declarator
= cp_parser_declarator (parser, dcl_kind, ctor_dtor_or_conv_p,
/*parenthesized_p=*/NULL);
+ parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p;
first = false;
/* Expect a `)'. */
if (!cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"))
@@ -10317,7 +10444,7 @@ cp_parser_direct_declarator (cp_parser* parser,
/*allow_non_constant=*/true,
&non_constant_p);
if (!non_constant_p)
- bounds = cp_parser_fold_non_dependent_expr (bounds);
+ bounds = fold_non_dependent_expr (bounds);
}
else
bounds = NULL_TREE;
@@ -10414,16 +10541,19 @@ cp_parser_direct_declarator (cp_parser* parser,
/* See if it names ctor, dtor or conv. */
if (TREE_CODE (unqualified_name) == BIT_NOT_EXPR
|| IDENTIFIER_TYPENAME_P (unqualified_name)
- || constructor_name_p (unqualified_name, class_type))
+ || constructor_name_p (unqualified_name, class_type)
+ || (TREE_CODE (unqualified_name) == TYPE_DECL
+ && same_type_p (TREE_TYPE (unqualified_name),
+ class_type)))
*ctor_dtor_or_conv_p = -1;
}
handle_declarator:;
scope = get_scope_of_declarator (declarator);
if (scope)
- /* Any names that appear after the declarator-id for a member
- are looked up in the containing scope. */
- push_scope (scope);
+ /* Any names that appear after the declarator-id for a
+ member are looked up in the containing scope. */
+ pop_p = push_scope (scope);
parser->in_declarator_p = true;
if ((ctor_dtor_or_conv_p && *ctor_dtor_or_conv_p)
|| (declarator
@@ -10448,7 +10578,7 @@ cp_parser_direct_declarator (cp_parser* parser,
cp_parser_error (parser, "expected declarator");
/* If we entered a scope, we must exit it now. */
- if (scope)
+ if (pop_p)
pop_scope (scope);
parser->default_arg_ok_p = saved_default_arg_ok_p;
@@ -10912,6 +11042,7 @@ cp_parser_parameter_declaration_list (cp_parser* parser)
cannot use this technique when inside a template argument
list. */
if (!parser->in_template_argument_list_p
+ && !parser->in_type_id_in_expr_p
&& cp_parser_parsing_tentatively (parser)
&& !cp_parser_committed_to_tentative_parse (parser)
/* However, a parameter-declaration of the form
@@ -11031,11 +11162,11 @@ cp_parser_parameter_declaration (cp_parser *parser,
if (!parser->in_template_argument_list_p
/* In an expression context, having seen:
- (int((char *)...
+ (int((char ...
we cannot be sure whether we are looking at a
- function-type (taking a "char*" as a parameter) or a cast
- of some object of type "char*" to "int". */
+ function-type (taking a "char" as a parameter) or a cast
+ of some object of type "char" to "int". */
&& !parser->in_type_id_in_expr_p
&& cp_parser_parsing_tentatively (parser)
&& !cp_parser_committed_to_tentative_parse (parser)
@@ -11474,7 +11605,7 @@ cp_parser_class_name (cp_parser *parser,
/* Handle the common case (an identifier, but not a template-id)
efficiently. */
if (token->type == CPP_NAME
- && cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_LESS)
+ && !cp_parser_nth_token_starts_template_argument_list_p (parser, 2))
{
tree identifier;
@@ -11522,8 +11653,11 @@ cp_parser_class_name (cp_parser *parser,
/* If this is a typename, create a TYPENAME_TYPE. */
if (typename_p && decl != error_mark_node)
- decl = TYPE_NAME (make_typename_type (scope, decl,
- /*complain=*/1));
+ {
+ decl = make_typename_type (scope, decl, /*complain=*/1);
+ if (decl != error_mark_node)
+ decl = TYPE_NAME (decl);
+ }
/* Check to see that it is really the name of a class. */
if (TREE_CODE (decl) == TEMPLATE_ID_EXPR
@@ -11567,6 +11701,7 @@ cp_parser_class_specifier (cp_parser* parser)
int has_trailing_semicolon;
bool nested_name_specifier_p;
unsigned saved_num_template_parameter_lists;
+ bool pop_p = false;
push_deferring_access_checks (dk_no_deferred);
@@ -11601,7 +11736,7 @@ cp_parser_class_specifier (cp_parser* parser)
/* Start the class. */
if (nested_name_specifier_p)
- push_scope (CP_DECL_CONTEXT (TYPE_MAIN_DECL (type)));
+ pop_p = push_scope (CP_DECL_CONTEXT (TYPE_MAIN_DECL (type)));
type = begin_class_definition (type);
if (type == error_mark_node)
/* If the type is erroneous, skip the entire body of the class. */
@@ -11626,7 +11761,7 @@ cp_parser_class_specifier (cp_parser* parser)
TYPE_ATTRIBUTES (type) = NULL_TREE;
type = finish_struct (type, attributes);
}
- if (nested_name_specifier_p)
+ if (pop_p)
pop_scope (CP_DECL_CONTEXT (TYPE_MAIN_DECL (type)));
/* If this class is not itself within the scope of another class,
then we need to parse the bodies of all of the queued function
@@ -11688,8 +11823,12 @@ cp_parser_class_specifier (cp_parser* parser)
/* Figure out which function we need to process. */
fn = TREE_VALUE (queue_entry);
+ /* A hack to prevent garbage collection. */
+ function_depth++;
+
/* Parse the function. */
cp_parser_late_parsing_for_member (parser, fn);
+ function_depth--;
}
}
@@ -11740,6 +11879,7 @@ cp_parser_class_head (cp_parser* parser,
bool qualified_p = false;
bool invalid_nested_name_p = false;
bool invalid_explicit_specialization_p = false;
+ bool pop_p = false;
unsigned num_templates;
/* Assume no nested-name-specifier will be present. */
@@ -11960,6 +12100,7 @@ cp_parser_class_head (cp_parser* parser,
else
{
tree class_type;
+ bool pop_p = false;
/* Given:
@@ -11986,7 +12127,7 @@ cp_parser_class_head (cp_parser* parser,
class_type = current_class_type;
/* Enter the scope indicated by the nested-name-specifier. */
if (nested_name_specifier)
- push_scope (nested_name_specifier);
+ pop_p = push_scope (nested_name_specifier);
/* Get the canonical version of this type. */
type = TYPE_MAIN_DECL (TREE_TYPE (type));
if (PROCESSING_REAL_TEMPLATE_DECL_P ()
@@ -11996,7 +12137,8 @@ cp_parser_class_head (cp_parser* parser,
if (nested_name_specifier)
{
*nested_name_specifier_p = true;
- pop_scope (nested_name_specifier);
+ if (pop_p)
+ pop_scope (nested_name_specifier);
}
}
/* Indicate whether this class was declared as a `class' or as a
@@ -12013,7 +12155,7 @@ cp_parser_class_head (cp_parser* parser,
is valid. */
if (nested_name_specifier)
- push_scope (nested_name_specifier);
+ pop_p = push_scope (nested_name_specifier);
/* Now, look for the base-clause. */
token = cp_lexer_peek_token (parser->lexer);
if (token->type == CPP_COLON)
@@ -12027,7 +12169,7 @@ cp_parser_class_head (cp_parser* parser,
}
/* Leave the scope given by the nested-name-specifier. We will
enter the class scope itself while processing the members. */
- if (nested_name_specifier)
+ if (pop_p)
pop_scope (nested_name_specifier);
done:
@@ -12690,8 +12832,8 @@ cp_parser_base_specifier (cp_parser* parser)
break;
}
}
- /* It is not uncommon to see programs mechanically, errouneously, use
- the 'typename' keyword to denote (dependent) qualified types
+ /* It is not uncommon to see programs mechanically, errouneously, use
+ the 'typename' keyword to denote (dependent) qualified types
as base classes. */
if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME))
{
@@ -13452,20 +13594,22 @@ cp_parser_lookup_name (cp_parser *parser, tree name,
}
else
{
+ bool pop_p = false;
+
/* If PARSER->SCOPE is a dependent type, then it must be a
class type, and we must not be checking dependencies;
otherwise, we would have processed this lookup above. So
that PARSER->SCOPE is not considered a dependent base by
lookup_member, we must enter the scope here. */
if (dependent_p)
- push_scope (parser->scope);
+ pop_p = push_scope (parser->scope);
/* If the PARSER->SCOPE is a a template specialization, it
may be instantiated during name lookup. In that case,
errors may be issued. Even if we rollback the current
tentative parse, those errors are valid. */
decl = lookup_qualified_name (parser->scope, name, is_type,
/*complain=*/true);
- if (dependent_p)
+ if (pop_p)
pop_scope (parser->scope);
}
parser->qualifying_scope = parser->scope;
@@ -13897,6 +14041,7 @@ cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p)
&& !cp_parser_storage_class_specifier_opt (parser))
{
tree type;
+ bool pop_p = false;
unsigned saved_num_template_parameter_lists;
/* Names appearing in the type-specifier should be looked up
@@ -13916,7 +14061,7 @@ cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p)
return false;
}
}
- push_scope (type);
+ pop_p = push_scope (type);
}
/* Inside the constructor parameter list, surrounding
@@ -13937,7 +14082,7 @@ cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p)
= saved_num_template_parameter_lists;
/* Leave the scope of the class. */
- if (type)
+ if (pop_p)
pop_scope (type);
constructor_p = !cp_parser_error_occurred (parser);
@@ -14359,8 +14504,8 @@ cp_parser_enclosed_template_argument_list (cp_parser* parser)
cp_lexer_consume_token (parser->lexer);
}
}
- else
- cp_parser_require (parser, CPP_GREATER, "`>'");
+ else if (!cp_parser_require (parser, CPP_GREATER, "`>'"))
+ error ("missing `>' to terminate the template argument list");
/* The `>' token might be a greater-than operator again now. */
parser->greater_than_is_operator_p
= saved_greater_than_is_operator_p;
@@ -14519,6 +14664,12 @@ cp_parser_late_parsing_default_args (cp_parser *parser, tree fn)
if (DECL_CLASS_SCOPE_P (fn))
pop_nested_class ();
+ /* If the token stream has not been completely used up, then
+ there was extra junk after the end of the default
+ argument. */
+ if (!cp_lexer_next_token_is (parser->lexer, CPP_EOF))
+ cp_parser_error (parser, "expected `,'");
+
/* Restore saved state. */
parser->lexer = saved_lexer;
parser->local_variables_forbidden_p = saved_local_variables_forbidden_p;
@@ -14627,37 +14778,6 @@ cp_parser_declares_only_class_p (cp_parser *parser)
|| cp_lexer_next_token_is (parser->lexer, CPP_COMMA));
}
-/* Simplify EXPR if it is a non-dependent expression. Returns the
- (possibly simplified) expression. */
-
-static tree
-cp_parser_fold_non_dependent_expr (tree expr)
-{
- /* If we're in a template, but EXPR isn't value dependent, simplify
- it. We're supposed to treat:
-
- template <typename T> void f(T[1 + 1]);
- template <typename T> void f(T[2]);
-
- as two declarations of the same function, for example. */
- if (processing_template_decl
- && !type_dependent_expression_p (expr)
- && !value_dependent_expression_p (expr))
- {
- HOST_WIDE_INT saved_processing_template_decl;
-
- saved_processing_template_decl = processing_template_decl;
- processing_template_decl = 0;
- expr = tsubst_copy_and_build (expr,
- /*args=*/NULL_TREE,
- tf_error,
- /*in_decl=*/NULL_TREE,
- /*function_p=*/false);
- processing_template_decl = saved_processing_template_decl;
- }
- return expr;
-}
-
/* DECL_SPECIFIERS is the representation of a decl-specifier-seq.
Returns TRUE iff `friend' appears among the DECL_SPECIFIERS. */
@@ -14821,6 +14941,31 @@ cp_parser_next_token_ends_template_argument_p (cp_parser *parser)
return (token->type == CPP_COMMA || token->type == CPP_GREATER
|| token->type == CPP_RSHIFT);
}
+
+/* Returns TRUE iff the n-th token is a ">", or the n-th is a "[" and the
+ (n+1)-th is a ":" (which is a possible digraph typo for "< ::"). */
+
+static bool
+cp_parser_nth_token_starts_template_argument_list_p (cp_parser * parser,
+ size_t n)
+{
+ cp_token *token;
+
+ token = cp_lexer_peek_nth_token (parser->lexer, n);
+ if (token->type == CPP_LESS)
+ return true;
+ /* Check for the sequence `<::' in the original code. It would be lexed as
+ `[:', where `[' is a digraph, and there is no whitespace before
+ `:'. */
+ if (token->type == CPP_OPEN_SQUARE && token->flags & DIGRAPH)
+ {
+ cp_token *token2;
+ token2 = cp_lexer_peek_nth_token (parser->lexer, n+1);
+ if (token2->type == CPP_COLON && !(token2->flags & PREV_WHITE))
+ return true;
+ }
+ return false;
+}
/* Returns the kind of tag indicated by TOKEN, if it is a class-key,
or none_type otherwise. */
@@ -14940,11 +15085,11 @@ cp_parser_cache_group (cp_parser *parser,
if ((end == CPP_CLOSE_PAREN || depth == 0)
&& cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))
return;
- /* Consume the next token. */
- token = cp_lexer_consume_token (parser->lexer);
/* If we've reached the end of the file, stop. */
- if (token->type == CPP_EOF)
+ if (cp_lexer_next_token_is (parser->lexer, CPP_EOF))
return;
+ /* Consume the next token. */
+ token = cp_lexer_consume_token (parser->lexer);
/* Add this token to the tokens we are saving. */
cp_token_cache_push_token (cache, token);
/* See if it starts a new group. */
@@ -15101,14 +15246,6 @@ c_parse_file (void)
the_parser = NULL;
}
-/* Clean up after parsing the entire translation unit. */
-
-void
-free_parser_stacks (void)
-{
- /* Nothing to do. */
-}
-
/* This variable must be provided by every front end. */
int yydebug;
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 97a7d7852f9..bd2c1d29311 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1035,7 +1035,7 @@ register_specialization (tree spec, tree tmpl, tree args)
the default argument expression is not substituted for in an
instantiation unless and until it is actually needed. */
return spec;
-
+
/* There should be as many levels of arguments as there are
levels of parameters. */
my_friendly_assert (TMPL_ARGS_DEPTH (args)
@@ -1526,8 +1526,8 @@ copy_default_args_to_explicit_spec (tree decl)
else
new_type = build_function_type (TREE_TYPE (old_type),
new_spec_types);
- new_type = build_type_attribute_variant (new_type,
- TYPE_ATTRIBUTES (old_type));
+ new_type = cp_build_type_attribute_variant (new_type,
+ TYPE_ATTRIBUTES (old_type));
new_type = build_exception_variant (new_type,
TYPE_RAISES_EXCEPTIONS (old_type));
TREE_TYPE (decl) = new_type;
@@ -2909,10 +2909,10 @@ push_template_decl_real (tree decl, int is_friend)
else
tmpl = DECL_TI_TEMPLATE (decl);
- if (is_member_template (tmpl)
- && DECL_FUNCTION_TEMPLATE_P (tmpl)
+ if (DECL_FUNCTION_TEMPLATE_P (tmpl)
&& DECL_TEMPLATE_INFO (decl) && DECL_TI_ARGS (decl)
- && DECL_TEMPLATE_SPECIALIZATION (decl))
+ && DECL_TEMPLATE_SPECIALIZATION (decl)
+ && is_member_template (tmpl))
{
tree new_tmpl;
@@ -3001,6 +3001,13 @@ push_template_decl_real (tree decl, int is_friend)
}
}
+ /* The DECL_TI_ARGS of DECL contains full set of arguments refering
+ back to its most general template. If TMPL is a specialization,
+ ARGS may only have the innermost set of arguments. Add the missing
+ argument levels if necessary. */
+ if (DECL_TEMPLATE_INFO (tmpl))
+ args = add_outermost_template_args (DECL_TI_ARGS (tmpl), args);
+
info = tree_cons (tmpl, args, NULL_TREE);
if (DECL_IMPLICIT_TYPEDEF_P (decl))
@@ -3099,20 +3106,60 @@ redeclare_class_template (tree type, tree parms)
}
}
+/* Simplify EXPR if it is a non-dependent expression. Returns the
+ (possibly simplified) expression. */
+
+tree
+fold_non_dependent_expr (tree expr)
+{
+ /* If we're in a template, but EXPR isn't value dependent, simplify
+ it. We're supposed to treat:
+
+ template <typename T> void f(T[1 + 1]);
+ template <typename T> void f(T[2]);
+
+ as two declarations of the same function, for example. */
+ if (processing_template_decl
+ && !type_dependent_expression_p (expr)
+ && !value_dependent_expression_p (expr))
+ {
+ HOST_WIDE_INT saved_processing_template_decl;
+
+ saved_processing_template_decl = processing_template_decl;
+ processing_template_decl = 0;
+ expr = tsubst_copy_and_build (expr,
+ /*args=*/NULL_TREE,
+ tf_error,
+ /*in_decl=*/NULL_TREE,
+ /*function_p=*/false);
+ processing_template_decl = saved_processing_template_decl;
+ }
+ return expr;
+}
+
/* Attempt to convert the non-type template parameter EXPR to the
indicated TYPE. If the conversion is successful, return the
converted value. If the conversion is unsuccessful, return
NULL_TREE if we issued an error message, or error_mark_node if we
did not. We issue error messages for out-and-out bad template
parameters, but not simply because the conversion failed, since we
- might be just trying to do argument deduction. By the time this
- function is called, neither TYPE nor EXPR may make use of template
- parameters. */
+ might be just trying to do argument deduction. Both TYPE and EXPR
+ must be non-dependent. */
static tree
convert_nontype_argument (tree type, tree expr)
{
- tree expr_type = TREE_TYPE (expr);
+ tree expr_type;
+
+ /* If we are in a template, EXPR may be non-dependent, but still
+ have a syntactic, rather than semantic, form. For example, EXPR
+ might be a SCOPE_REF, rather than the VAR_DECL to which the
+ SCOPE_REF refers. Preserving the qualifying scope is necessary
+ so that access checking can be performed when the template is
+ instantiated -- but here we need the resolved form so that we can
+ convert the argument. */
+ expr = fold_non_dependent_expr (expr);
+ expr_type = TREE_TYPE (expr);
/* A template-argument for a non-type, non-template
template-parameter shall be one of:
@@ -3136,12 +3183,31 @@ convert_nontype_argument (tree type, tree expr)
--a pointer to member expressed as described in _expr.unary.op_. */
/* An integral constant-expression can include const variables or
- enumerators. Simplify things by folding them to their values,
+. enumerators. Simplify things by folding them to their values,
unless we're about to bind the declaration to a reference
parameter. */
- if (INTEGRAL_TYPE_P (expr_type)
- && TREE_CODE (type) != REFERENCE_TYPE)
- expr = decl_constant_value (expr);
+ if (INTEGRAL_TYPE_P (expr_type) && TREE_CODE (type) != REFERENCE_TYPE)
+ while (true)
+ {
+ tree const_expr = decl_constant_value (expr);
+ /* In a template, the initializer for a VAR_DECL may not be
+ marked as TREE_CONSTANT, in which case decl_constant_value
+ will not return the initializer. Handle that special case
+ here. */
+ if (expr == const_expr
+ && TREE_CODE (expr) == VAR_DECL
+ && DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (expr)
+ && CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (expr))
+ /* DECL_INITIAL can be NULL if we are processing a
+ variable initialized to an expression involving itself.
+ We know it is initialized to a constant -- but not what
+ constant, yet. */
+ && DECL_INITIAL (expr))
+ const_expr = DECL_INITIAL (expr);
+ if (expr == const_expr)
+ break;
+ expr = fold_non_dependent_expr (const_expr);
+ }
if (is_overloaded_fn (expr))
/* OK for now. We'll check that it has external linkage later.
@@ -4275,11 +4341,7 @@ lookup_template_class (tree d1,
template,
complain, /*require_all_args=*/1);
- if (arglist == error_mark_node
- || (!uses_template_parms (INNERMOST_TEMPLATE_ARGS (arglist))
- && check_instantiated_args (template,
- INNERMOST_TEMPLATE_ARGS (arglist),
- complain)))
+ if (arglist == error_mark_node)
/* We were unable to bind the arguments. */
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
@@ -4340,6 +4402,14 @@ lookup_template_class (tree d1,
well. */
is_partial_instantiation = uses_template_parms (arglist);
+ /* If the deduced arguments are invalid, then the binding
+ failed. */
+ if (!is_partial_instantiation
+ && check_instantiated_args (template,
+ INNERMOST_TEMPLATE_ARGS (arglist),
+ complain))
+ POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
+
if (!is_partial_instantiation
&& !PRIMARY_TEMPLATE_P (template)
&& TREE_CODE (CP_DECL_CONTEXT (template)) == NAMESPACE_DECL)
@@ -4717,7 +4787,34 @@ for_each_template_parm (tree t, tree_fn_t fn, void* data, htab_t visited)
int
uses_template_parms (tree t)
{
- return for_each_template_parm (t, 0, 0, NULL);
+ bool dependent_p;
+ int saved_processing_template_decl;
+
+ saved_processing_template_decl = processing_template_decl;
+ if (!saved_processing_template_decl)
+ processing_template_decl = 1;
+ if (TYPE_P (t))
+ dependent_p = dependent_type_p (t);
+ else if (TREE_CODE (t) == TREE_VEC)
+ dependent_p = any_dependent_template_arguments_p (t);
+ else if (TREE_CODE (t) == TREE_LIST)
+ dependent_p = (uses_template_parms (TREE_VALUE (t))
+ || uses_template_parms (TREE_CHAIN (t)));
+ else if (DECL_P (t)
+ || EXPR_P (t)
+ || TREE_CODE (t) == TEMPLATE_PARM_INDEX
+ || TREE_CODE (t) == OVERLOAD
+ || TREE_CODE (t) == BASELINK
+ || TREE_CODE_CLASS (TREE_CODE (t)) == 'c')
+ dependent_p = (type_dependent_expression_p (t)
+ || value_dependent_expression_p (t));
+ else if (t == error_mark_node)
+ dependent_p = false;
+ else
+ abort ();
+ processing_template_decl = saved_processing_template_decl;
+
+ return dependent_p;
}
/* Returns true if T depends on any template parameter with level LEVEL. */
@@ -4919,21 +5016,20 @@ tsubst_friend_function (tree decl, tree args)
duplicate decls since that function will free NEW_FRIEND if
possible. */
new_friend_template_info = DECL_TEMPLATE_INFO (new_friend);
+ new_friend_is_defn =
+ (DECL_INITIAL (DECL_TEMPLATE_RESULT
+ (template_for_substitution (new_friend)))
+ != NULL_TREE);
if (TREE_CODE (new_friend) == TEMPLATE_DECL)
{
/* This declaration is a `primary' template. */
DECL_PRIMARY_TEMPLATE (new_friend) = new_friend;
- new_friend_is_defn
- = DECL_INITIAL (DECL_TEMPLATE_RESULT (new_friend)) != NULL_TREE;
new_friend_result_template_info
= DECL_TEMPLATE_INFO (DECL_TEMPLATE_RESULT (new_friend));
}
else
- {
- new_friend_is_defn = DECL_INITIAL (new_friend) != NULL_TREE;
- new_friend_result_template_info = NULL_TREE;
- }
+ new_friend_result_template_info = NULL_TREE;
/* Inside pushdecl_namespace_level, we will push into the
current namespace. However, the friend function should go
@@ -5229,7 +5325,7 @@ instantiate_class_template (tree type)
it now. */
push_deferring_access_checks (dk_no_deferred);
- maybe_push_to_top_level (uses_template_parms (type));
+ push_to_top_level ();
if (t)
{
@@ -5309,12 +5405,13 @@ instantiate_class_template (tree type)
tree pbases = BINFO_BASETYPES (pbinfo);
tree paccesses = BINFO_BASEACCESSES (pbinfo);
tree context = TYPE_CONTEXT (type);
+ bool pop_p;
int i;
/* We must enter the scope containing the type, as that is where
the accessibility of types named in dependent bases are
looked up from. */
- push_scope (context ? context : global_namespace);
+ pop_p = push_scope (context ? context : global_namespace);
/* Substitute into each of the bases to determine the actual
basetypes. */
@@ -5343,7 +5440,8 @@ instantiate_class_template (tree type)
information. */
xref_basetypes (type, base_list);
- pop_scope (context ? context : global_namespace);
+ if (pop_p)
+ pop_scope (context ? context : global_namespace);
}
/* Now that our base classes are set up, enter the scope of the
@@ -5370,7 +5468,9 @@ instantiate_class_template (tree type)
tree newtag;
newtag = tsubst (tag, args, tf_error, NULL_TREE);
- my_friendly_assert (newtag != error_mark_node, 20010206);
+ if (newtag == error_mark_node)
+ continue;
+
if (TREE_CODE (newtag) != ENUMERAL_TYPE)
{
if (TYPE_LANG_SPECIFIC (tag) && CLASSTYPE_IS_TEMPLATE (tag))
@@ -5902,6 +6002,9 @@ tsubst_decl (tree t, tree args, tree type, tsubst_flags_t complain)
if (TREE_CODE (decl) == TYPE_DECL)
{
tree new_type = tsubst (TREE_TYPE (t), args, complain, in_decl);
+ if (new_type == error_mark_node)
+ return error_mark_node;
+
TREE_TYPE (r) = new_type;
CLASSTYPE_TI_TEMPLATE (new_type) = r;
DECL_TEMPLATE_RESULT (r) = TYPE_MAIN_DECL (new_type);
@@ -6068,7 +6171,7 @@ tsubst_decl (tree t, tree args, tree type, tsubst_flags_t complain)
/* Clear out the mangled name and RTL for the instantiation. */
SET_DECL_ASSEMBLER_NAME (r, NULL_TREE);
SET_DECL_RTL (r, NULL_RTX);
-
+ DECL_INITIAL (r) = NULL_TREE;
DECL_CONTEXT (r) = ctx;
if (member && DECL_CONV_FN_P (r))
@@ -6440,7 +6543,7 @@ tsubst_function_type (tree t,
TREE_CHAIN (arg_types));
}
fntype = cp_build_qualified_type_real (fntype, TYPE_QUALS (t), complain);
- fntype = build_type_attribute_variant (fntype, TYPE_ATTRIBUTES (t));
+ fntype = cp_build_type_attribute_variant (fntype, TYPE_ATTRIBUTES (t));
return fntype;
}
@@ -7106,13 +7209,13 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case TYPEOF_TYPE:
{
- tree e1 = tsubst_expr (TYPE_FIELDS (t), args, complain, in_decl);
- if (e1 == error_mark_node)
- return error_mark_node;
+ tree type;
- return cp_build_qualified_type_real (TREE_TYPE (e1),
+ type = finish_typeof (tsubst_expr (TYPE_FIELDS (t), args, complain,
+ in_decl));
+ return cp_build_qualified_type_real (type,
cp_type_quals (t)
- | cp_type_quals (TREE_TYPE (e1)),
+ | cp_type_quals (type),
complain);
}
@@ -7219,7 +7322,8 @@ tsubst_qualified_id (tree qualified_id, tree args,
else
expr = name;
- my_friendly_assert (!dependent_type_p (scope), 20030729);
+ if (dependent_type_p (scope))
+ return build_nt (SCOPE_REF, scope, expr);
if (!BASELINK_P (name) && !DECL_P (expr))
{
@@ -7228,8 +7332,11 @@ tsubst_qualified_id (tree qualified_id, tree args,
? DECL_TEMPLATE_RESULT (expr) : expr) == TYPE_DECL)
{
if (complain & tf_error)
- error ("`%E' names a type, but a non-type is expected",
- qualified_id);
+ {
+ error ("dependent-name `%E' is parsed as a non-type, but "
+ "instantiation yields a type", qualified_id);
+ inform ("say `typename %E' if a type is meant", qualified_id);
+ }
return error_mark_node;
}
}
@@ -7240,11 +7347,7 @@ tsubst_qualified_id (tree qualified_id, tree args,
/* Remember that there was a reference to this entity. */
if (DECL_P (expr))
- {
- mark_used (expr);
- if (!args && TREE_CODE (expr) == VAR_DECL)
- expr = DECL_INITIAL (expr);
- }
+ mark_used (expr);
if (is_template)
expr = lookup_template_function (expr, template_args);
@@ -7281,6 +7384,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case PARM_DECL:
r = retrieve_local_specialization (t);
my_friendly_assert (r != NULL, 20020903);
+ mark_used (r);
return r;
case CONST_DECL:
@@ -7632,9 +7736,6 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
if (t == NULL_TREE || t == error_mark_node)
return t;
- if (processing_template_decl)
- return tsubst_copy (t, args, complain, in_decl);
-
if (!STATEMENT_CODE_P (TREE_CODE (t)))
return tsubst_copy_and_build (t, args, complain, in_decl,
/*function_p=*/false);
@@ -8257,10 +8358,12 @@ tsubst_copy_and_build (tree t,
}
call_args = RECUR (TREE_OPERAND (t, 1));
-
+
+ /* We do not perform argument-dependent lookup if normal
+ lookup finds a non-function, in accordance with the
+ expected resolution of DR 218. */
if (koenig_p
&& (is_overloaded_fn (function)
- || DECL_P (function)
|| TREE_CODE (function) == IDENTIFIER_NODE))
function = perform_koenig_lookup (function, call_args);
@@ -8279,11 +8382,18 @@ tsubst_copy_and_build (tree t,
if (TREE_CODE (function) == OFFSET_REF)
return build_offset_ref_call_from_tree (function, call_args);
if (TREE_CODE (function) == COMPONENT_REF)
- return (build_new_method_call
- (TREE_OPERAND (function, 0),
- TREE_OPERAND (function, 1),
- call_args, NULL_TREE,
- qualified_p ? LOOKUP_NONVIRTUAL : LOOKUP_NORMAL));
+ {
+ if (!BASELINK_P (TREE_OPERAND (function, 1)))
+ return finish_call_expr (function, call_args,
+ /*disallow_virtual=*/false,
+ /*koenig_p=*/false);
+ else
+ return (build_new_method_call
+ (TREE_OPERAND (function, 0),
+ TREE_OPERAND (function, 1),
+ call_args, NULL_TREE,
+ qualified_p ? LOOKUP_NONVIRTUAL : LOOKUP_NORMAL));
+ }
return finish_call_expr (function, call_args,
/*disallow_virtual=*/qualified_p,
koenig_p);
@@ -8439,11 +8549,6 @@ tsubst_copy_and_build (tree t,
case VAR_DECL:
if (args)
t = tsubst_copy (t, args, complain, in_decl);
- else
- /* If there are no ARGS, then we are evaluating a
- non-dependent expression. If the expression is
- non-dependent, the variable must be a constant. */
- t = DECL_INITIAL (t);
return convert_from_reference (t);
case VA_ARG_EXPR:
@@ -8940,17 +9045,14 @@ type_unification_real (tree tparms,
corresponds with a function parameter that contains only
non-deducible template parameters and explicitly specified
template parameters. */
- if (! uses_template_parms (parm))
+ if (!uses_template_parms (parm))
{
tree type;
if (!TYPE_P (arg))
type = TREE_TYPE (arg);
else
- {
- type = arg;
- arg = NULL_TREE;
- }
+ type = arg;
if (strict == DEDUCE_EXACT || strict == DEDUCE_ORDER)
{
@@ -10078,6 +10180,11 @@ more_specialized_class (tree pat1, tree pat2, tree full_args)
tree targs;
int winner = 0;
+ /* Just like what happens for functions, if we are ordering between
+ different class template specializations, we may encounter dependent
+ types in the arguments, and we need our dependency check functions
+ to behave correctly. */
+ ++processing_template_decl;
targs = get_class_bindings (TREE_VALUE (pat1), TREE_PURPOSE (pat1),
add_outermost_template_args (full_args, TREE_PURPOSE (pat2)));
if (targs)
@@ -10087,6 +10194,7 @@ more_specialized_class (tree pat1, tree pat2, tree full_args)
add_outermost_template_args (full_args, TREE_PURPOSE (pat1)));
if (targs)
++winner;
+ --processing_template_decl;
return winner;
}
@@ -11435,8 +11543,11 @@ dependent_type_p_r (tree type)
A type is dependent if it is:
- -- a template parameter. */
- if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
+ -- a template parameter. Template template parameters are
+ types for us (since TYPE_P holds true for them) so we
+ handle them here. */
+ if (TREE_CODE (type) == TEMPLATE_TYPE_PARM
+ || TREE_CODE (type) == TEMPLATE_TEMPLATE_PARM)
return true;
/* -- a qualified-id with a nested-name-specifier which contains a
class-name that names a dependent type or whose unqualified-id
@@ -11755,11 +11866,16 @@ type_dependent_expression_p (tree expression)
(INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression)))))
return true;
+ if (TREE_CODE (expression) == TEMPLATE_DECL
+ && !DECL_TEMPLATE_TEMPLATE_PARM_P (expression))
+ return false;
+
if (TREE_TYPE (expression) == unknown_type_node)
{
if (TREE_CODE (expression) == ADDR_EXPR)
return type_dependent_expression_p (TREE_OPERAND (expression, 0));
- if (TREE_CODE (expression) == COMPONENT_REF)
+ if (TREE_CODE (expression) == COMPONENT_REF
+ || TREE_CODE (expression) == OFFSET_REF)
{
if (type_dependent_expression_p (TREE_OPERAND (expression, 0)))
return true;
@@ -11835,13 +11951,18 @@ bool
any_dependent_template_arguments_p (tree args)
{
int i;
-
+ int j;
+
if (!args)
return false;
- for (i = 0; i < TREE_VEC_LENGTH (args); ++i)
- if (dependent_template_arg_p (TREE_VEC_ELT (args, i)))
- return true;
+ for (i = 0; i < TMPL_ARGS_DEPTH (args); ++i)
+ {
+ tree level = TMPL_ARGS_LEVEL (args, i + 1);
+ for (j = 0; j < TREE_VEC_LENGTH (level); ++j)
+ if (dependent_template_arg_p (TREE_VEC_ELT (level, j)))
+ return true;
+ }
return false;
}
@@ -11897,6 +12018,7 @@ resolve_typename_type (tree type, bool only_current_p)
tree name;
tree decl;
int quals;
+ bool pop_p;
my_friendly_assert (TREE_CODE (type) == TYPENAME_TYPE,
20010702);
@@ -11926,7 +12048,7 @@ resolve_typename_type (tree type, bool only_current_p)
/* Enter the SCOPE so that name lookup will be resolved as if we
were in the class definition. In particular, SCOPE will no
longer be considered a dependent type. */
- push_scope (scope);
+ pop_p = push_scope (scope);
/* Look up the declaration. */
decl = lookup_member (scope, name, /*protect=*/0, /*want_type=*/true);
/* Obtain the set of qualifiers applied to the TYPE. */
@@ -11956,7 +12078,8 @@ resolve_typename_type (tree type, bool only_current_p)
if (type != error_mark_node && quals)
type = cp_build_qualified_type (type, quals);
/* Leave the SCOPE. */
- pop_scope (scope);
+ if (pop_p)
+ pop_scope (scope);
return type;
}
@@ -11974,13 +12097,26 @@ build_non_dependent_expr (tree expr)
return expr;
/* Preserve OVERLOADs; the functions must be available to resolve
types. */
- if (TREE_CODE (expr) == OVERLOAD)
+ if (TREE_CODE (expr) == OVERLOAD
+ || TREE_CODE (expr) == FUNCTION_DECL
+ || TREE_CODE (expr) == TEMPLATE_DECL)
return expr;
/* Preserve string constants; conversions from string constants to
"char *" are allowed, even though normally a "const char *"
cannot be used to initialize a "char *". */
if (TREE_CODE (expr) == STRING_CST)
return expr;
+ /* Preserve arithmetic constants, as an optimization -- there is no
+ reason to create a new node. */
+ if (TREE_CODE (expr) == INTEGER_CST || TREE_CODE (expr) == REAL_CST)
+ return expr;
+ /* Preserve THROW_EXPRs -- all throw-expressions have type "void".
+ There is at least one place where we want to know that a
+ particular expression is a throw-expression: when checking a ?:
+ expression, there are special rules if the second or third
+ argument is a throw-expresion. */
+ if (TREE_CODE (expr) == THROW_EXPR)
+ return expr;
if (TREE_CODE (expr) == COND_EXPR)
return build (COND_EXPR,
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index a965383ad4e..fb611a76f91 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -1,5 +1,5 @@
/* RunTime Type Identification
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Mostly written by Jason Merrill (jason@cygnus.com).
@@ -760,7 +760,7 @@ tinfo_base_init (tree desc, tree target)
TREE_STATIC (name_decl) = 1;
DECL_EXTERNAL (name_decl) = 0;
TREE_PUBLIC (name_decl) = 1;
- comdat_linkage (name_decl);
+ import_export_tinfo (name_decl, target, typeinfo_in_lib_p (target));
/* External name of the string containing the type's name has a
special name. */
SET_DECL_ASSEMBLER_NAME (name_decl,
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index 15927c69166..2048c9d1be1 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -905,6 +905,7 @@ accessible_p (tree type, tree decl)
{
tree binfo;
tree t;
+ tree scope;
access_kind access;
/* Nonzero if it's OK to access DECL if it has protected
@@ -916,6 +917,11 @@ accessible_p (tree type, tree decl)
if (!TYPE_P (context_for_name_lookup (decl)))
return 1;
+ /* There is no need to perform access checks inside a thunk. */
+ scope = current_scope ();
+ if (scope && DECL_THUNK_P (scope))
+ return 1;
+
/* In a template declaration, we cannot be sure whether the
particular specialization that is instantiated will be a friend
or not. Therefore, all access checks are deferred until
@@ -958,7 +964,7 @@ accessible_p (tree type, tree decl)
/* Now, loop through the classes of which we are a friend. */
if (!protected_ok)
- protected_ok = friend_accessible_p (current_scope (), decl, binfo);
+ protected_ok = friend_accessible_p (scope, decl, binfo);
/* Standardize the binfo that access_in_type will use. We don't
need to know what path was chosen from this point onwards. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 00f1a4f2fe9..b7a7f4a919b 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -678,6 +678,13 @@ finish_for_cond (tree cond, tree for_stmt)
void
finish_for_expr (tree expr, tree for_stmt)
{
+ /* If EXPR is an overloaded function, issue an error; there is no
+ context available to use to perform overload resolution. */
+ if (expr && type_unknown_p (expr))
+ {
+ cxx_incomplete_type_error (expr, TREE_TYPE (expr));
+ expr = error_mark_node;
+ }
FOR_EXPR (for_stmt) = expr;
}
@@ -1774,42 +1781,6 @@ finish_this_expr (void)
return result;
}
-/* Finish a member function call using OBJECT and ARGS as arguments to
- FN. Returns an expression for the call. */
-
-tree
-finish_object_call_expr (tree fn, tree object, tree args)
-{
- if (DECL_DECLARES_TYPE_P (fn))
- {
- if (processing_template_decl)
- /* This can happen on code like:
-
- class X;
- template <class T> void f(T t) {
- t.X();
- }
-
- We just grab the underlying IDENTIFIER. */
- fn = DECL_NAME (fn);
- else
- {
- error ("calling type `%T' like a method", fn);
- return error_mark_node;
- }
- }
-
- if (processing_template_decl)
- return build_nt (CALL_EXPR,
- build_nt (COMPONENT_REF, object, fn),
- args);
-
- if (name_p (fn))
- return build_method_call (object, fn, args, NULL_TREE, LOOKUP_NORMAL);
- else
- return build_new_method_call (object, fn, args, NULL_TREE, LOOKUP_NORMAL);
-}
-
/* Finish a pseudo-destructor expression. If SCOPE is NULL, the
expression was of the form `OBJECT.~DESTRUCTOR' where DESTRUCTOR is
the TYPE for the type given. If SCOPE is non-NULL, the expression
@@ -1978,10 +1949,24 @@ check_template_template_default_arg (tree argument)
{
if (TREE_CODE (argument) != TEMPLATE_DECL
&& TREE_CODE (argument) != TEMPLATE_TEMPLATE_PARM
- && TREE_CODE (argument) != TYPE_DECL
&& TREE_CODE (argument) != UNBOUND_CLASS_TEMPLATE)
{
- error ("invalid default template argument");
+ if (TREE_CODE (argument) == TYPE_DECL)
+ {
+ tree t = TREE_TYPE (argument);
+
+ /* Try to emit a slightly smarter error message if we detect
+ that the user is using a template instantiation. */
+ if (CLASSTYPE_TEMPLATE_INFO (t)
+ && CLASSTYPE_TEMPLATE_INSTANTIATION (t))
+ error ("invalid use of type `%T' as a default value for a "
+ "template template-parameter", t);
+ else
+ error ("invalid use of `%D' as a default value for a template "
+ "template-parameter", argument);
+ }
+ else
+ error ("invalid default argument for a template template parameter");
return error_mark_node;
}
@@ -2057,7 +2042,16 @@ begin_class_definition (tree t)
maybe_process_partial_specialization (t);
pushclass (t);
TYPE_BEING_DEFINED (t) = 1;
- TYPE_PACKED (t) = flag_pack_struct;
+ if (flag_pack_struct)
+ {
+ tree v;
+ TYPE_PACKED (t) = 1;
+ /* Even though the type is being defined for the first time
+ here, there might have been a forward declaration, so there
+ might be cv-qualified variants of T. */
+ for (v = TYPE_NEXT_VARIANT (t); v; v = TYPE_NEXT_VARIANT (v))
+ TYPE_PACKED (v) = 1;
+ }
/* Reset the interface data, at the earliest possible
moment, as it might have been set via a class foo;
before. */
@@ -2539,6 +2533,12 @@ finish_id_expression (tree id_expression,
if (integral_constant_expression_p)
*non_integral_constant_expression_p = true;
*idk = CP_ID_KIND_UNQUALIFIED_DEPENDENT;
+ /* If we found a variable, then name lookup during the
+ instantiation will always resolve to the same VAR_DECL
+ (or an instantiation thereof). */
+ if (TREE_CODE (decl) == VAR_DECL
+ || TREE_CODE (decl) == PARM_DECL)
+ return decl;
return id_expression;
}
@@ -2900,6 +2900,9 @@ expand_body (tree fn)
/* ??? When is this needed? */
saved_function = current_function_decl;
+ /* Emit any thunks that should be emitted at the same time as FN. */
+ emit_associated_thunks (fn);
+
timevar_push (TV_INTEGRATION);
optimize_function (fn);
timevar_pop (TV_INTEGRATION);
@@ -2910,9 +2913,6 @@ expand_body (tree fn)
extract_interface_info ();
- /* Emit any thunks that should be emitted at the same time as FN. */
- emit_associated_thunks (fn);
-
/* 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. */
@@ -2952,14 +2952,8 @@ void
expand_or_defer_fn (tree fn)
{
/* When the parser calls us after finishing the body of a template
- function, we don't really want to expand the body. When we're
- processing an in-class definition of an inline function,
- PROCESSING_TEMPLATE_DECL will no longer be set here, so we have
- to look at the function itself. */
- if (processing_template_decl
- || (DECL_LANG_SPECIFIC (fn)
- && DECL_TEMPLATE_INFO (fn)
- && uses_template_parms (DECL_TI_ARGS (fn))))
+ function, we don't really want to expand the body. */
+ if (processing_template_decl)
{
/* Normally, collection only occurs in rest_of_compilation. So,
if we don't collect here, we never collect junk generated
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index bedbbe96b44..ca8a9537a55 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1,6 +1,6 @@
/* Language-dependent node constructors for parse phase of GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -985,7 +985,8 @@ build_exception_variant (tree type, tree raises)
for (; v; v = TYPE_NEXT_VARIANT (v))
if (TYPE_QUALS (v) == type_quals
- && comp_except_specs (raises, TYPE_RAISES_EXCEPTIONS (v), 1))
+ && comp_except_specs (raises, TYPE_RAISES_EXCEPTIONS (v), 1)
+ && (*targetm.comp_type_attributes) (type, v))
return v;
/* Need to build a new variant. */
@@ -1956,6 +1957,23 @@ make_ptrmem_cst (tree type, tree member)
return ptrmem_cst;
}
+/* Build a variant of TYPE that has the indicated ATTRIBUTES. May
+ return an existing type of an appropriate type already exists. */
+
+tree
+cp_build_type_attribute_variant (tree type, tree attributes)
+{
+ tree new_type;
+
+ new_type = build_type_attribute_variant (type, attributes);
+ if (TREE_CODE (new_type) == FUNCTION_TYPE
+ && (TYPE_RAISES_EXCEPTIONS (new_type)
+ != TYPE_RAISES_EXCEPTIONS (type)))
+ new_type = build_exception_variant (new_type,
+ TYPE_RAISES_EXCEPTIONS (type));
+ return new_type;
+}
+
/* Apply FUNC to all language-specific sub-trees of TP in a pre-order
traversal. Called from walk_tree(). */
@@ -2411,7 +2429,7 @@ stabilize_expr (tree exp, tree* initp)
if (!TREE_SIDE_EFFECTS (exp))
{
- init_expr = void_zero_node;
+ init_expr = NULL_TREE;
}
else if (!real_lvalue_p (exp)
|| !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)))
@@ -2430,6 +2448,73 @@ stabilize_expr (tree exp, tree* initp)
*initp = init_expr;
return exp;
}
+
+/* Like stabilize_expr, but for a call whose args we want to
+ pre-evaluate. */
+
+void
+stabilize_call (tree call, tree *initp)
+{
+ tree inits = NULL_TREE;
+ tree t;
+
+ if (call == error_mark_node)
+ return;
+
+ if (TREE_CODE (call) != CALL_EXPR
+ && TREE_CODE (call) != AGGR_INIT_EXPR)
+ abort ();
+
+ for (t = TREE_OPERAND (call, 1); t; t = TREE_CHAIN (t))
+ if (TREE_SIDE_EFFECTS (TREE_VALUE (t)))
+ {
+ tree init;
+ TREE_VALUE (t) = stabilize_expr (TREE_VALUE (t), &init);
+ if (!init)
+ /* Nothing. */;
+ else if (inits)
+ inits = build (COMPOUND_EXPR, void_type_node, inits, init);
+ else
+ inits = init;
+ }
+
+ *initp = inits;
+}
+
+/* Like stabilize_expr, but for an initialization. If we are initializing
+ an object of class type, we don't want to introduce an extra temporary,
+ so we look past the TARGET_EXPR and stabilize the arguments of the call
+ instead. */
+
+void
+stabilize_init (tree init, tree *initp)
+{
+ tree t = init;
+
+ if (t == error_mark_node)
+ return;
+
+ if (TREE_CODE (t) == INIT_EXPR
+ && TREE_CODE (TREE_OPERAND (t, 1)) != TARGET_EXPR)
+ TREE_OPERAND (t, 1) = stabilize_expr (TREE_OPERAND (t, 1), initp);
+ else
+ {
+ if (TREE_CODE (t) == INIT_EXPR)
+ t = TREE_OPERAND (t, 1);
+ if (TREE_CODE (t) == TARGET_EXPR)
+ t = TARGET_EXPR_INITIAL (t);
+ if (TREE_CODE (t) == CONSTRUCTOR
+ && CONSTRUCTOR_ELTS (t) == NULL_TREE)
+ {
+ /* Default-initialization. */
+ *initp = NULL_TREE;
+ return;
+ }
+
+ stabilize_call (t, initp);
+ }
+}
+
#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
/* Complain that some language-specific thing hanging off a tree
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index a238eb41c8c..117b90bd2e7 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1,6 +1,6 @@
/* Build expressions with type checking for C++ compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -666,9 +666,9 @@ merge_types (tree t1, tree t2)
/* Save space: see if the result is identical to one of the args. */
if (valtype == TREE_TYPE (t1) && ! p2)
- return build_type_attribute_variant (t1, attributes);
+ return cp_build_type_attribute_variant (t1, attributes);
if (valtype == TREE_TYPE (t2) && ! p1)
- return build_type_attribute_variant (t2, attributes);
+ return cp_build_type_attribute_variant (t2, attributes);
/* Simple way if one arg fails to specify argument types. */
if (p1 == NULL_TREE || TREE_VALUE (p1) == void_type_node)
@@ -676,7 +676,7 @@ merge_types (tree t1, tree t2)
rval = build_function_type (valtype, p2);
if ((raises = TYPE_RAISES_EXCEPTIONS (t2)))
rval = build_exception_variant (rval, raises);
- return build_type_attribute_variant (rval, attributes);
+ return cp_build_type_attribute_variant (rval, attributes);
}
raises = TYPE_RAISES_EXCEPTIONS (t1);
if (p2 == NULL_TREE || TREE_VALUE (p2) == void_type_node)
@@ -684,7 +684,7 @@ merge_types (tree t1, tree t2)
rval = build_function_type (valtype, p1);
if (raises)
rval = build_exception_variant (rval, raises);
- return build_type_attribute_variant (rval, attributes);
+ return cp_build_type_attribute_variant (rval, attributes);
}
rval = build_function_type (valtype, commonparms (p1, p2));
@@ -714,9 +714,15 @@ merge_types (tree t1, tree t2)
break;
}
+ case TYPENAME_TYPE:
+ /* There is no need to merge attributes into a TYPENAME_TYPE.
+ When the type is instantiated it will have whatever
+ attributes result from the instantiation. */
+ return t1;
+
default:;
}
- return build_type_attribute_variant (t1, attributes);
+ return cp_build_type_attribute_variant (t1, attributes);
}
/* Return the common type of two types.
@@ -963,8 +969,10 @@ comptypes (tree t1, tree t2, int strict)
if (TREE_CODE (t1) != TREE_CODE (t2))
return false;
- /* Qualifiers must match. */
- if (cp_type_quals (t1) != cp_type_quals (t2))
+ /* Qualifiers must match. For array types, we will check when we
+ recur on the array element types. */
+ if (TREE_CODE (t1) != ARRAY_TYPE
+ && TYPE_QUALS (t1) != TYPE_QUALS (t2))
return false;
if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
return false;
@@ -973,7 +981,8 @@ comptypes (tree t1, tree t2, int strict)
definition. Note that we already checked for equality of the type
qualifiers (just above). */
- if (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
+ if (TREE_CODE (t1) != ARRAY_TYPE
+ && TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
return true;
if (!(*targetm.comp_type_attributes) (t1, t2))
@@ -1362,14 +1371,9 @@ decay_conversion (tree exp)
if (TREE_CODE (exp) == VAR_DECL)
{
- /* ??? This is not really quite correct
- in that the type of the operand of ADDR_EXPR
- is not the target type of the type of the ADDR_EXPR itself.
- Question is, can this lossage be avoided? */
- adr = build1 (ADDR_EXPR, ptrtype, exp);
if (!cxx_mark_addressable (exp))
return error_mark_node;
- TREE_CONSTANT (adr) = staticp (exp);
+ adr = build_nop (ptrtype, build_address (exp));
TREE_SIDE_EFFECTS (adr) = 0; /* Default would be, same as EXP. */
return adr;
}
@@ -1792,8 +1796,8 @@ lookup_destructor (tree object, tree scope, tree dtor_name)
}
if (!same_type_p (dtor_type, TYPE_MAIN_VARIANT (object_type)))
{
- error ("destructor name `%T' does not match type `%T' of expression",
- dtor_type, object_type);
+ error ("the type being destroyed is `%T', but the destructor refers to `%T'",
+ TYPE_MAIN_VARIANT (object_type), dtor_type);
return error_mark_node;
}
if (!TYPE_HAS_DESTRUCTOR (object_type))
@@ -5012,7 +5016,9 @@ build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs)
return cond;
/* Make sure the code to compute the rhs comes out
before the split. */
- return build (COMPOUND_EXPR, TREE_TYPE (lhs), preeval, cond);
+ if (preeval)
+ cond = build (COMPOUND_EXPR, TREE_TYPE (lhs), preeval, cond);
+ return cond;
}
default:
@@ -5633,8 +5639,6 @@ convert_for_assignment (tree type, tree rhs,
if (TREE_CODE (rhs) == TREE_LIST && TREE_VALUE (rhs) == error_mark_node)
return error_mark_node;
- rhs = dubious_conversion_warnings (type, rhs, errtype, fndecl, parmnum);
-
/* The RHS of an assignment cannot have void type. */
if (coder == VOID_TYPE)
{
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index bad9b1e0ac2..adc57491870 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1,7 +1,7 @@
/* Report error messages, build initializers, and perform
some front-end optimizations for C++ compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
diff --git a/gcc/cppcharset.c b/gcc/cppcharset.c
index 1b2d0b2a091..a6a65ed7986 100644
--- a/gcc/cppcharset.c
+++ b/gcc/cppcharset.c
@@ -1,5 +1,5 @@
/* CPP Library - charsets
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Broken out of c-lex.c Apr 2003, adding valid C99 UCN ranges.
@@ -170,7 +170,7 @@ one_utf8_to_cppchar (const uchar **inbufp, size_t *inbytesleftp,
{
static const uchar masks[6] = { 0x7F, 0x1F, 0x0F, 0x07, 0x02, 0x01 };
static const uchar patns[6] = { 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
-
+
cppchar_t c;
const uchar *inbuf = *inbufp;
size_t nbytes, i;
@@ -274,7 +274,7 @@ one_cppchar_to_utf8 (cppchar_t c, uchar **outbufp, size_t *outbytesleftp)
The return value is either 0 for success, or an errno value for
failure, which may be E2BIG (need more space), EILSEQ (ill-formed
input sequence), ir EINVAL (incomplete input sequence). */
-
+
static inline int
one_utf8_to_utf32 (iconv_t bigend, const uchar **inbufp, size_t *inbytesleftp,
uchar **outbufp, size_t *outbytesleftp)
@@ -489,7 +489,7 @@ conversion_loop (int (*const one_conversion)(iconv_t, const uchar **, size_t *,
outbuf = to->text + to->asize - outbytesleft;
}
}
-
+
/* These functions convert entire strings between character sets.
They all have the signature
@@ -619,7 +619,7 @@ init_iconv_desc (cpp_reader *pfile, const char *to, const char *from)
struct cset_converter ret;
char *pair;
size_t i;
-
+
if (!strcasecmp (to, from))
{
ret.func = convert_no_conversion;
@@ -1270,7 +1270,7 @@ narrow_str_to_charconst (cpp_reader *pfile, cpp_string str,
*unsignedp = unsigned_p;
return result;
}
-
+
/* Subroutine of cpp_interpret_charconst which performs the conversion
to a number, for wide strings. STR is the string structure returned
by cpp_interpret_string. PCHARS_SEEN and UNSIGNEDP are as for
@@ -1352,3 +1352,60 @@ cpp_interpret_charconst (cpp_reader *pfile, const cpp_token *token,
return result;
}
+
+uchar *
+_cpp_convert_input (cpp_reader *pfile, const char *input_charset,
+ uchar *input, size_t size, size_t len, off_t *st_size)
+{
+ struct cset_converter input_cset;
+ struct _cpp_strbuf to;
+
+ input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset);
+ if (input_cset.func == convert_no_conversion)
+ {
+ to.text = input;
+ to.asize = size;
+ to.len = len;
+ }
+ else
+ {
+ to.asize = MAX (65536, len);
+ to.text = xmalloc (to.asize);
+ to.len = 0;
+
+ if (!APPLY_CONVERSION (input_cset, input, len, &to))
+ cpp_error (pfile, CPP_DL_ERROR,
+ "failure to convert %s to %s",
+ CPP_OPTION (pfile, input_charset), SOURCE_CHARSET);
+
+ free (input);
+ }
+
+ /* Clean up the mess. */
+ if (input_cset.func == convert_using_iconv)
+ iconv_close (input_cset.cd);
+
+ /* Resize buffer if we allocated substantially too much, or if we
+ haven't enough space for the \n-terminator. */
+ if (to.len + 4096 < to.asize || to.len >= to.asize)
+ to.text = xrealloc (to.text, to.len + 1);
+
+ to.text[to.len] = '\n';
+ *st_size = to.len;
+ return to.text;
+}
+
+const char *
+_cpp_default_encoding (void)
+{
+ const char *current_encoding = NULL;
+
+#if defined (HAVE_LOCALE_H) && defined (HAVE_LANGINFO_CODESET)
+ setlocale (LC_CTYPE, "");
+ current_encoding = nl_langinfo (CODESET);
+#endif
+ if (current_encoding == NULL || *current_encoding == '\0')
+ current_encoding = SOURCE_CHARSET;
+
+ return current_encoding;
+}
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index c6f1f1d39a5..5603f5bd58a 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -1347,7 +1347,8 @@ num_binary_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op)
/* Comma. */
default: /* case CPP_COMMA: */
- if (CPP_PEDANTIC (pfile) && !pfile->state.skip_eval)
+ if (CPP_PEDANTIC (pfile) && (!CPP_OPTION (pfile, c99)
+ || !pfile->state.skip_eval))
cpp_error (pfile, CPP_DL_PEDWARN,
"comma operator in operand of #if");
lhs = rhs;
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index d844947218d..cf144a7ecdc 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -1,6 +1,6 @@
/* Part of CPP library. File handling.
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -509,15 +509,8 @@ read_file_guts (cpp_reader *pfile, _cpp_file *file)
cpp_error (pfile, CPP_DL_WARNING,
"%s is shorter than expected", file->path);
- /* Shrink buffer if we allocated substantially too much. */
- if (total + 4096 < size)
- buf = xrealloc (buf, total + 1);
-
- /* The lexer requires that the buffer be \n-terminated. */
- buf[total] = '\n';
-
- file->buffer = buf;
- file->st.st_size = total;
+ file->buffer = _cpp_convert_input (pfile, CPP_OPTION (pfile, input_charset),
+ buf, size, total, &file->st.st_size);
file->buffer_valid = true;
return true;
diff --git a/gcc/cpphash.h b/gcc/cpphash.h
index 80cb04c5f52..3b0d901ed33 100644
--- a/gcc/cpphash.h
+++ b/gcc/cpphash.h
@@ -1,5 +1,5 @@
/* Part of CPP library.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
@@ -270,7 +270,7 @@ struct cpp_buffer
const uchar *cur; /* Current location. */
const uchar *line_base; /* Start of current physical line. */
const uchar *next_line; /* Start of to-be-cleaned logical line. */
-
+
const uchar *buf; /* Entire character buffer. */
const uchar *rlimit; /* Writable byte at end of file. */
@@ -303,9 +303,10 @@ struct cpp_buffer
buffers. */
unsigned char from_stage3;
- /* Nonzero means that the directory to start searching for ""
- include files has been calculated and stored in "dir" below. */
- unsigned char search_cached;
+ /* At EOF, a buffer is automatically popped. If RETURN_AT_EOF is
+ true, a CPP_EOF token is then returned. Otherwise, the next
+ token from the enclosing buffer is returned. */
+ unsigned int return_at_eof : 1;
/* The directory of the this buffer's file. Its NAME member is not
allocated, so we don't need to worry about freeing it. */
@@ -573,8 +574,13 @@ extern size_t _cpp_replacement_text_len (const cpp_macro *);
extern cppchar_t _cpp_valid_ucn (cpp_reader *, const uchar **,
const uchar *, int);
extern void _cpp_destroy_iconv (cpp_reader *);
-extern bool _cpp_interpret_string_notranslate (cpp_reader *, const cpp_string *,
+extern bool _cpp_interpret_string_notranslate (cpp_reader *,
+ const cpp_string *,
cpp_string *);
+extern uchar *_cpp_convert_input (cpp_reader *, const char *, uchar *,
+ size_t, size_t, off_t *);
+extern const char *_cpp_default_encoding (void);
+
/* Utility routines and macros. */
#define DSC(str) (const uchar *)str, sizeof str - 1
diff --git a/gcc/cppinit.c b/gcc/cppinit.c
index 13326886778..3c15cbb566a 100644
--- a/gcc/cppinit.c
+++ b/gcc/cppinit.c
@@ -1,6 +1,6 @@
/* CPP Library.
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 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
@@ -157,9 +157,10 @@ cpp_create_reader (enum c_lang lang, hash_table *table)
CPP_OPTION (pfile, unsigned_wchar) = 1;
CPP_OPTION (pfile, bytes_big_endian) = 1; /* does not matter */
- /* Default to no charset conversion. */
- CPP_OPTION (pfile, narrow_charset) = 0;
+ /* Default to locale/UTF-8. */
+ CPP_OPTION (pfile, narrow_charset) = _cpp_default_encoding ();
CPP_OPTION (pfile, wide_charset) = 0;
+ CPP_OPTION (pfile, input_charset) = _cpp_default_encoding ();
/* A fake empty "directory" used as the starting point for files
looked up without a search path. Name cannot be '/' because we
@@ -450,9 +451,10 @@ cpp_post_options (cpp_reader *pfile)
}
/* Setup for processing input from the file named FNAME, or stdin if
- it is the empty string. Returns true if the file was found. */
-bool
-cpp_find_main_file (cpp_reader *pfile, const char *fname)
+ it is the empty string. Return the original filename
+ on success (e.g. foo.i->foo.c), or NULL on failure. */
+const char *
+cpp_read_main_file (cpp_reader *pfile, const char *fname)
{
if (CPP_OPTION (pfile, deps.style) != DEPS_NONE)
{
@@ -468,26 +470,6 @@ cpp_find_main_file (cpp_reader *pfile, const char *fname)
if (_cpp_find_failed (pfile->main_file))
return false;
- if (CPP_OPTION (pfile, working_directory))
- {
- const char *dir = getpwd ();
- char *dir_with_slashes = alloca (strlen (dir) + 3);
-
- memcpy (dir_with_slashes, dir, strlen (dir));
- memcpy (dir_with_slashes + strlen (dir), "//", 3);
-
- if (pfile->cb.dir_change)
- pfile->cb.dir_change (pfile, dir);
- }
- return true;
-}
-
-/* This function reads the file, but does not start preprocessing.
- This will generate at least one file change callback, and possibly
- a line change callback. */
-void
-cpp_push_main_file (cpp_reader *pfile)
-{
_cpp_stack_file (pfile, pfile->main_file, false);
/* For foo.i, read the original filename foo.c now, for the benefit
@@ -495,10 +477,7 @@ cpp_push_main_file (cpp_reader *pfile)
if (CPP_OPTION (pfile, preprocessed))
read_original_filename (pfile);
- /* Set this here so the client can change the option if it wishes,
- and after stacking the main file so we don't trace the main
- file. */
- pfile->line_maps.trace_includes = CPP_OPTION (pfile, print_include_names);
+ return fname;
}
/* For preprocessed files, if the first tokens are of the form # NUM.
@@ -577,18 +556,12 @@ read_original_directory (cpp_reader *pfile)
pfile->cb.dir_change (pfile, debugdir);
}
-
- /* We want to process the fake line changes as regular changes, to
- get them output. */
- _cpp_backup_tokens (pfile, 3);
-
- CPP_OPTION (pfile, working_directory) = false;
}
/* This is called at the end of preprocessing. It pops the last
buffer and writes dependency output, and returns the number of
errors.
-
+
Maybe it should also reset state, such that you could call
cpp_start_read with a new filename to restart processing. */
int
diff --git a/gcc/cpplex.c b/gcc/cpplex.c
index 783732fa444..5e92a2146b8 100644
--- a/gcc/cpplex.c
+++ b/gcc/cpplex.c
@@ -744,6 +744,8 @@ _cpp_lex_token (cpp_reader *pfile)
bool
_cpp_get_fresh_line (cpp_reader *pfile)
{
+ int return_at_eof;
+
/* We can't get a new line until we leave the current directive. */
if (pfile->state.in_directive)
return false;
@@ -776,9 +778,10 @@ _cpp_get_fresh_line (cpp_reader *pfile)
CPP_BUF_COLUMN (buffer, buffer->cur),
"no newline at end of file");
}
-
+
+ return_at_eof = buffer->return_at_eof;
_cpp_pop_buffer (pfile);
- if (pfile->buffer == NULL)
+ if (pfile->buffer == NULL || return_at_eof)
return false;
}
}
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 2b213cb461a..83ed175c02b 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -1904,7 +1904,7 @@ cpp_get_callbacks (cpp_reader *pfile)
}
/* The line map set. */
-const struct line_maps *
+struct line_maps *
cpp_get_line_maps (cpp_reader *pfile)
{
return &pfile->line_maps;
diff --git a/gcc/cpplib.h b/gcc/cpplib.h
index 5f189245eb5..3ea4b6b1856 100644
--- a/gcc/cpplib.h
+++ b/gcc/cpplib.h
@@ -1,5 +1,5 @@
/* Definitions for CPP library.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Per Bothner, 1994-95.
@@ -332,6 +332,9 @@ struct cpp_options
/* Holds the name of the target wide character set. */
const char *wide_charset;
+ /* Holds the name of the input character set. */
+ const char *input_charset;
+
/* True to warn about precompiled header files we couldn't use. */
bool warn_invalid_pch;
@@ -370,11 +373,6 @@ struct cpp_options
/* Nonzero means __STDC__ should have the value 0 in system headers. */
unsigned char stdc_0_in_system_headers;
-
- /* Nonzero means output a directory line marker right after the
- initial file name line marker, and before a duplicate initial
- line marker. */
- bool working_directory;
};
/* Call backs to cpplib client. */
@@ -417,7 +415,7 @@ struct cpp_dir
/* Mapping of file names for this directory for MS-DOS and related
platforms. A NULL-terminated array of (from, to) pairs. */
const char **name_map;
-
+
/* The C front end uses these to recognize duplicated
directories in the search path. */
ino_t ino;
@@ -481,7 +479,7 @@ struct cpp_hashnode GTY(())
{
struct ht_identifier ident;
unsigned int is_directive : 1;
- unsigned int directive_index : 7; /* If is_directive,
+ unsigned int directive_index : 7; /* If is_directive,
then index into directive table.
Otherwise, a NODE_OPERATOR. */
unsigned char rid_code; /* Rid code - for front ends. */
@@ -528,18 +526,16 @@ extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
through the pointer returned from cpp_get_callbacks, or set them
with cpp_set_callbacks. */
extern cpp_options *cpp_get_options (cpp_reader *);
-extern const struct line_maps *cpp_get_line_maps (cpp_reader *);
+extern struct line_maps *cpp_get_line_maps (cpp_reader *);
extern cpp_callbacks *cpp_get_callbacks (cpp_reader *);
extern void cpp_set_callbacks (cpp_reader *, cpp_callbacks *);
-/* This function finds the main file, but does not start reading it.
- Returns true iff the file was found. */
-extern bool cpp_find_main_file (cpp_reader *, const char *);
-
-/* This function reads the file, but does not start preprocessing.
- This will generate at least one file change callback, and possibly
- a line change callback. */
-extern void cpp_push_main_file (cpp_reader *);
+/* This function reads the file, but does not start preprocessing. It
+ returns the name of the original file; this is the same as the
+ input file, except for preprocessed input. This will generate at
+ least one file change callback, and possibly a line change callback
+ too. If there was an error opening the file, it returns NULL. */
+extern const char *cpp_read_main_file (cpp_reader *, const char *);
/* Set up built-ins like __FILE__. */
extern void cpp_init_builtins (cpp_reader *, int);
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c
index efae0f094e1..11ac09f12e1 100644
--- a/gcc/cppmacro.c
+++ b/gcc/cppmacro.c
@@ -1136,6 +1136,10 @@ cpp_sys_macro_p (cpp_reader *pfile)
void
cpp_scan_nooutput (cpp_reader *pfile)
{
+ /* Request a CPP_EOF token at the end of this file, rather than
+ transparently continuing with the including file. */
+ pfile->buffer->return_at_eof = true;
+
if (CPP_OPTION (pfile, traditional))
while (_cpp_read_logical_line_trad (pfile))
;
diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c
index 3d23cab1fe4..6315b1074f5 100644
--- a/gcc/cpptrad.c
+++ b/gcc/cpptrad.c
@@ -1,5 +1,5 @@
/* CPP Library - traditional lexical analysis and macro expansion.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
Contributed by Neil Booth, May 2002
This program is free software; you can redistribute it and/or modify it
diff --git a/gcc/cse.c b/gcc/cse.c
index bcfe68facf4..008dd0aa731 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -1,6 +1,6 @@
/* Common subexpression elimination for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -658,6 +658,9 @@ static void flush_hash_table (void);
static bool insn_live_p (rtx, int *);
static bool set_live_p (rtx, rtx, int *);
static bool dead_libcall_p (rtx, int *);
+static int cse_change_cc_mode (rtx *, void *);
+static void cse_change_cc_mode_insns (rtx, rtx, rtx);
+static enum machine_mode cse_cc_succs (basic_block, rtx, rtx, bool);
/* Nonzero if X has the form (PLUS frame-pointer integer). We check for
virtual regs here because the simplify_*_operation routines are called
@@ -7108,6 +7111,7 @@ cse_basic_block (rtx from, rtx to, struct branch_path *next_branch,
int to_usage = 0;
rtx libcall_insn = NULL_RTX;
int num_insns = 0;
+ int no_conflict = 0;
/* This array is undefined before max_reg, so only allocate
the space actually needed and adjust the start. */
@@ -7187,11 +7191,26 @@ cse_basic_block (rtx from, rtx to, struct branch_path *next_branch,
if ((p = find_reg_note (insn, REG_LIBCALL, NULL_RTX)))
libcall_insn = XEXP (p, 0);
else if (find_reg_note (insn, REG_RETVAL, NULL_RTX))
- libcall_insn = 0;
+ {
+ /* Keep libcall_insn for the last SET insn of a no-conflict
+ block to prevent changing the destination. */
+ if (! no_conflict)
+ libcall_insn = 0;
+ else
+ no_conflict = -1;
+ }
+ else if (find_reg_note (insn, REG_NO_CONFLICT, NULL_RTX))
+ no_conflict = 1;
}
cse_insn (insn, libcall_insn);
+ if (no_conflict == -1)
+ {
+ libcall_insn = 0;
+ no_conflict = 0;
+ }
+
/* If we haven't already found an insn where we added a LABEL_REF,
check this one. */
if (GET_CODE (insn) == INSN && ! recorded_label_ref
@@ -7638,3 +7657,350 @@ delete_trivially_dead_insns (rtx insns, int nreg)
timevar_pop (TV_DELETE_TRIVIALLY_DEAD);
return ndead;
}
+
+/* This function is called via for_each_rtx. The argument, NEWREG, is
+ a condition code register with the desired mode. If we are looking
+ at the same register in a different mode, replace it with
+ NEWREG. */
+
+static int
+cse_change_cc_mode (rtx *loc, void *data)
+{
+ rtx newreg = (rtx) data;
+
+ if (*loc
+ && GET_CODE (*loc) == REG
+ && REGNO (*loc) == REGNO (newreg)
+ && GET_MODE (*loc) != GET_MODE (newreg))
+ {
+ *loc = newreg;
+ return -1;
+ }
+ return 0;
+}
+
+/* Change the mode of any reference to the register REGNO (NEWREG) to
+ GET_MODE (NEWREG), starting at START. Stop before END. Stop at
+ any instruction which modifies NEWREG. */
+
+static void
+cse_change_cc_mode_insns (rtx start, rtx end, rtx newreg)
+{
+ rtx insn;
+
+ for (insn = start; insn != end; insn = NEXT_INSN (insn))
+ {
+ if (! INSN_P (insn))
+ continue;
+
+ if (reg_set_p (newreg, insn))
+ return;
+
+ for_each_rtx (&PATTERN (insn), cse_change_cc_mode, newreg);
+ for_each_rtx (&REG_NOTES (insn), cse_change_cc_mode, newreg);
+ }
+}
+
+/* BB is a basic block which finishes with CC_REG as a condition code
+ register which is set to CC_SRC. Look through the successors of BB
+ to find blocks which have a single predecessor (i.e., this one),
+ and look through those blocks for an assignment to CC_REG which is
+ equivalent to CC_SRC. CAN_CHANGE_MODE indicates whether we are
+ permitted to change the mode of CC_SRC to a compatible mode. This
+ returns VOIDmode if no equivalent assignments were found.
+ Otherwise it returns the mode which CC_SRC should wind up with.
+
+ The main complexity in this function is handling the mode issues.
+ We may have more than one duplicate which we can eliminate, and we
+ try to find a mode which will work for multiple duplicates. */
+
+static enum machine_mode
+cse_cc_succs (basic_block bb, rtx cc_reg, rtx cc_src, bool can_change_mode)
+{
+ bool found_equiv;
+ enum machine_mode mode;
+ unsigned int insn_count;
+ edge e;
+ rtx insns[2];
+ enum machine_mode modes[2];
+ rtx last_insns[2];
+ unsigned int i;
+ rtx newreg;
+
+ /* We expect to have two successors. Look at both before picking
+ the final mode for the comparison. If we have more successors
+ (i.e., some sort of table jump, although that seems unlikely),
+ then we require all beyond the first two to use the same
+ mode. */
+
+ found_equiv = false;
+ mode = GET_MODE (cc_src);
+ insn_count = 0;
+ for (e = bb->succ; e; e = e->succ_next)
+ {
+ rtx insn;
+ rtx end;
+
+ if (e->flags & EDGE_COMPLEX)
+ continue;
+
+ if (! e->dest->pred
+ || e->dest->pred->pred_next
+ || e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ end = NEXT_INSN (BB_END (e->dest));
+ for (insn = BB_HEAD (e->dest); insn != end; insn = NEXT_INSN (insn))
+ {
+ rtx set;
+
+ if (! INSN_P (insn))
+ continue;
+
+ /* If CC_SRC is modified, we have to stop looking for
+ something which uses it. */
+ if (modified_in_p (cc_src, insn))
+ break;
+
+ /* Check whether INSN sets CC_REG to CC_SRC. */
+ set = single_set (insn);
+ if (set
+ && GET_CODE (SET_DEST (set)) == REG
+ && REGNO (SET_DEST (set)) == REGNO (cc_reg))
+ {
+ bool found;
+ enum machine_mode set_mode;
+ enum machine_mode comp_mode;
+
+ found = false;
+ set_mode = GET_MODE (SET_SRC (set));
+ comp_mode = set_mode;
+ if (rtx_equal_p (cc_src, SET_SRC (set)))
+ found = true;
+ else if (GET_CODE (cc_src) == COMPARE
+ && GET_CODE (SET_SRC (set)) == COMPARE
+ && mode != set_mode
+ && rtx_equal_p (XEXP (cc_src, 0),
+ XEXP (SET_SRC (set), 0))
+ && rtx_equal_p (XEXP (cc_src, 1),
+ XEXP (SET_SRC (set), 1)))
+
+ {
+ comp_mode = (*targetm.cc_modes_compatible) (mode, set_mode);
+ if (comp_mode != VOIDmode
+ && (can_change_mode || comp_mode == mode))
+ found = true;
+ }
+
+ if (found)
+ {
+ found_equiv = true;
+ if (insn_count < ARRAY_SIZE (insns))
+ {
+ insns[insn_count] = insn;
+ modes[insn_count] = set_mode;
+ last_insns[insn_count] = end;
+ ++insn_count;
+
+ if (mode != comp_mode)
+ {
+ if (! can_change_mode)
+ abort ();
+ mode = comp_mode;
+ PUT_MODE (cc_src, mode);
+ }
+ }
+ else
+ {
+ if (set_mode != mode)
+ {
+ /* We found a matching expression in the
+ wrong mode, but we don't have room to
+ store it in the array. Punt. This case
+ should be rare. */
+ break;
+ }
+ /* INSN sets CC_REG to a value equal to CC_SRC
+ with the right mode. We can simply delete
+ it. */
+ delete_insn (insn);
+ }
+
+ /* We found an instruction to delete. Keep looking,
+ in the hopes of finding a three-way jump. */
+ continue;
+ }
+
+ /* We found an instruction which sets the condition
+ code, so don't look any farther. */
+ break;
+ }
+
+ /* If INSN sets CC_REG in some other way, don't look any
+ farther. */
+ if (reg_set_p (cc_reg, insn))
+ break;
+ }
+
+ /* If we fell off the bottom of the block, we can keep looking
+ through successors. We pass CAN_CHANGE_MODE as false because
+ we aren't prepared to handle compatibility between the
+ further blocks and this block. */
+ if (insn == end)
+ {
+ enum machine_mode submode;
+
+ submode = cse_cc_succs (e->dest, cc_reg, cc_src, false);
+ if (submode != VOIDmode)
+ {
+ if (submode != mode)
+ abort ();
+ found_equiv = true;
+ can_change_mode = false;
+ }
+ }
+ }
+
+ if (! found_equiv)
+ return VOIDmode;
+
+ /* Now INSN_COUNT is the number of instructions we found which set
+ CC_REG to a value equivalent to CC_SRC. The instructions are in
+ INSNS. The modes used by those instructions are in MODES. */
+
+ newreg = NULL_RTX;
+ for (i = 0; i < insn_count; ++i)
+ {
+ if (modes[i] != mode)
+ {
+ /* We need to change the mode of CC_REG in INSNS[i] and
+ subsequent instructions. */
+ if (! newreg)
+ {
+ if (GET_MODE (cc_reg) == mode)
+ newreg = cc_reg;
+ else
+ newreg = gen_rtx_REG (mode, REGNO (cc_reg));
+ }
+ cse_change_cc_mode_insns (NEXT_INSN (insns[i]), last_insns[i],
+ newreg);
+ }
+
+ delete_insn (insns[i]);
+ }
+
+ return mode;
+}
+
+/* If we have a fixed condition code register (or two), walk through
+ the instructions and try to eliminate duplicate assignments. */
+
+void
+cse_condition_code_reg (void)
+{
+ unsigned int cc_regno_1;
+ unsigned int cc_regno_2;
+ rtx cc_reg_1;
+ rtx cc_reg_2;
+ basic_block bb;
+
+ if (! (*targetm.fixed_condition_code_regs) (&cc_regno_1, &cc_regno_2))
+ return;
+
+ cc_reg_1 = gen_rtx_REG (CCmode, cc_regno_1);
+ if (cc_regno_2 != INVALID_REGNUM)
+ cc_reg_2 = gen_rtx_REG (CCmode, cc_regno_2);
+ else
+ cc_reg_2 = NULL_RTX;
+
+ FOR_EACH_BB (bb)
+ {
+ rtx last_insn;
+ rtx cc_reg;
+ rtx insn;
+ rtx cc_src_insn;
+ rtx cc_src;
+ enum machine_mode mode;
+ enum machine_mode orig_mode;
+
+ /* Look for blocks which end with a conditional jump based on a
+ condition code register. Then look for the instruction which
+ sets the condition code register. Then look through the
+ successor blocks for instructions which set the condition
+ code register to the same value. There are other possible
+ uses of the condition code register, but these are by far the
+ most common and the ones which we are most likely to be able
+ to optimize. */
+
+ last_insn = BB_END (bb);
+ if (GET_CODE (last_insn) != JUMP_INSN)
+ continue;
+
+ if (reg_referenced_p (cc_reg_1, PATTERN (last_insn)))
+ cc_reg = cc_reg_1;
+ else if (cc_reg_2 && reg_referenced_p (cc_reg_2, PATTERN (last_insn)))
+ cc_reg = cc_reg_2;
+ else
+ continue;
+
+ cc_src_insn = NULL_RTX;
+ cc_src = NULL_RTX;
+ for (insn = PREV_INSN (last_insn);
+ insn && insn != PREV_INSN (BB_HEAD (bb));
+ insn = PREV_INSN (insn))
+ {
+ rtx set;
+
+ if (! INSN_P (insn))
+ continue;
+ set = single_set (insn);
+ if (set
+ && GET_CODE (SET_DEST (set)) == REG
+ && REGNO (SET_DEST (set)) == REGNO (cc_reg))
+ {
+ cc_src_insn = insn;
+ cc_src = SET_SRC (set);
+ break;
+ }
+ else if (reg_set_p (cc_reg, insn))
+ break;
+ }
+
+ if (! cc_src_insn)
+ continue;
+
+ if (modified_between_p (cc_src, cc_src_insn, NEXT_INSN (last_insn)))
+ continue;
+
+ /* Now CC_REG is a condition code register used for a
+ conditional jump at the end of the block, and CC_SRC, in
+ CC_SRC_INSN, is the value to which that condition code
+ register is set, and CC_SRC is still meaningful at the end of
+ the basic block. */
+
+ orig_mode = GET_MODE (cc_src);
+ mode = cse_cc_succs (bb, cc_reg, cc_src, true);
+ if (mode != VOIDmode)
+ {
+ if (mode != GET_MODE (cc_src))
+ abort ();
+ if (mode != orig_mode)
+ {
+ rtx newreg = gen_rtx_REG (mode, REGNO (cc_reg));
+
+ /* Change the mode of CC_REG in CC_SRC_INSN to
+ GET_MODE (NEWREG). */
+ for_each_rtx (&PATTERN (cc_src_insn), cse_change_cc_mode,
+ newreg);
+ for_each_rtx (&REG_NOTES (cc_src_insn), cse_change_cc_mode,
+ newreg);
+
+ /* Do the same in the following insns that use the
+ current value of CC_REG within BB. */
+ cse_change_cc_mode_insns (NEXT_INSN (cc_src_insn),
+ NEXT_INSN (last_insn),
+ newreg);
+ }
+ }
+ }
+}
diff --git a/gcc/cselib.c b/gcc/cselib.c
index c3a68726a2b..702c16bf996 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -1,6 +1,6 @@
/* Common subexpression elimination library for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -40,6 +40,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "hashtab.h"
#include "cselib.h"
#include "params.h"
+#include "alloc-pool.h"
static int entry_and_rtx_equal_p (const void *, const void *);
static hashval_t get_value_hash (const void *);
@@ -117,11 +118,6 @@ static GTY((deletable (""))) varray_type used_regs_old;
memory for a non-const call instruction. */
static GTY(()) rtx callmem;
-/* Caches for unused structures. */
-static GTY((deletable (""))) cselib_val *empty_vals;
-static GTY((deletable (""))) struct elt_list *empty_elt_lists;
-static GTY((deletable (""))) struct elt_loc_list *empty_elt_loc_lists;
-
/* Set by discard_useless_locs if it deleted the last location of any
value. */
static int values_became_useless;
@@ -134,20 +130,17 @@ static cselib_val dummy_val;
May or may not contain the useless values - the list is compacted
each time memory is invalidated. */
static cselib_val *first_containing_mem = &dummy_val;
+static alloc_pool elt_loc_list_pool, elt_list_pool, cselib_val_pool, value_pool;
/* Allocate a struct elt_list and fill in its two elements with the
arguments. */
-static struct elt_list *
+static inline struct elt_list *
new_elt_list (struct elt_list *next, cselib_val *elt)
{
- struct elt_list *el = empty_elt_lists;
-
- if (el)
- empty_elt_lists = el->next;
- else
- el = ggc_alloc (sizeof (struct elt_list));
+ struct elt_list *el;
+ el = pool_alloc (elt_list_pool);
el->next = next;
el->elt = elt;
return el;
@@ -156,15 +149,11 @@ new_elt_list (struct elt_list *next, cselib_val *elt)
/* Allocate a struct elt_loc_list and fill in its two elements with the
arguments. */
-static struct elt_loc_list *
+static inline struct elt_loc_list *
new_elt_loc_list (struct elt_loc_list *next, rtx loc)
{
- struct elt_loc_list *el = empty_elt_loc_lists;
-
- if (el)
- empty_elt_loc_lists = el->next;
- else
- el = ggc_alloc (sizeof (struct elt_loc_list));
+ struct elt_loc_list *el;
+ el = pool_alloc (elt_loc_list_pool);
el->next = next;
el->loc = loc;
el->canon_loc = NULL;
@@ -176,14 +165,13 @@ new_elt_loc_list (struct elt_loc_list *next, rtx loc)
/* The elt_list at *PL is no longer needed. Unchain it and free its
storage. */
-static void
+static inline void
unchain_one_elt_list (struct elt_list **pl)
{
struct elt_list *l = *pl;
*pl = l->next;
- l->next = empty_elt_lists;
- empty_elt_lists = l;
+ pool_free (elt_list_pool, l);
}
/* Likewise for elt_loc_lists. */
@@ -194,8 +182,7 @@ unchain_one_elt_loc_list (struct elt_loc_list **pl)
struct elt_loc_list *l = *pl;
*pl = l->next;
- l->next = empty_elt_loc_lists;
- empty_elt_loc_lists = l;
+ pool_free (elt_loc_list_pool, l);
}
/* Likewise for cselib_vals. This also frees the addr_list associated with
@@ -207,8 +194,7 @@ unchain_one_value (cselib_val *v)
while (v->addr_list)
unchain_one_elt_list (&v->addr_list);
- v->u.next_free = empty_vals;
- empty_vals = v;
+ pool_free (cselib_val_pool, v);
}
/* Remove all entries from the hash table. Also used during
@@ -346,6 +332,7 @@ discard_useless_values (void **x, void *info ATTRIBUTE_UNUSED)
if (v->locs == 0)
{
+ CSELIB_VAL_PTR (v->u.val_rtx) = NULL;
htab_clear_slot (hash_table, x);
unchain_one_value (v);
n_useless_values--;
@@ -371,8 +358,6 @@ remove_useless_values (void)
while (values_became_useless);
/* Second pass: actually remove the values. */
- htab_traverse (hash_table, discard_useless_values, 0);
-
p = &first_containing_mem;
for (v = *p; v != &dummy_val; v = v->next_containing_mem)
if (v->locs)
@@ -382,6 +367,8 @@ remove_useless_values (void)
}
*p = &dummy_val;
+ htab_traverse (hash_table, discard_useless_values, 0);
+
if (n_useless_values != 0)
abort ();
}
@@ -697,21 +684,23 @@ hash_rtx (rtx x, enum machine_mode mode, int create)
/* Create a new value structure for VALUE and initialize it. The mode of the
value is MODE. */
-static cselib_val *
+static inline cselib_val *
new_cselib_val (unsigned int value, enum machine_mode mode)
{
- cselib_val *e = empty_vals;
-
- if (e)
- empty_vals = e->u.next_free;
- else
- e = ggc_alloc (sizeof (cselib_val));
+ cselib_val *e = pool_alloc (cselib_val_pool);
+#ifdef ENABLE_CHECKING
if (value == 0)
abort ();
+#endif
e->value = value;
- e->u.val_rtx = gen_rtx_VALUE (mode);
+ /* We use custom method to allocate this RTL construct because it accounts
+ about 8% of overall memory usage. */
+ e->u.val_rtx = pool_alloc (value_pool);
+ memset (e->u.val_rtx, 0, RTX_HDR_SIZE);
+ PUT_CODE (e->u.val_rtx, VALUE);
+ PUT_MODE (e->u.val_rtx, mode);
CSELIB_VAL_PTR (e->u.val_rtx) = e;
e->addr_list = 0;
e->locs = 0;
@@ -1403,6 +1392,14 @@ cselib_update_varray_sizes (void)
void
cselib_init (void)
{
+ elt_list_pool = create_alloc_pool ("elt_list",
+ sizeof (struct elt_list), 10);
+ elt_loc_list_pool = create_alloc_pool ("elt_loc_list",
+ sizeof (struct elt_loc_list), 10);
+ cselib_val_pool = create_alloc_pool ("cselib_val_list",
+ sizeof (cselib_val), 10);
+ value_pool = create_alloc_pool ("value",
+ RTX_SIZE (VALUE), 10);
/* This is only created once. */
if (! callmem)
callmem = gen_rtx_MEM (BLKmode, const0_rtx);
@@ -1428,6 +1425,10 @@ cselib_init (void)
void
cselib_finish (void)
{
+ free_alloc_pool (elt_list_pool);
+ free_alloc_pool (elt_loc_list_pool);
+ free_alloc_pool (cselib_val_pool);
+ free_alloc_pool (value_pool);
clear_table ();
reg_values_old = reg_values;
reg_values = 0;
diff --git a/gcc/cselib.h b/gcc/cselib.h
index c751c42dbca..f86f6572419 100644
--- a/gcc/cselib.h
+++ b/gcc/cselib.h
@@ -1,6 +1,6 @@
/* Common subexpression elimination for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2003 Free Software Foundation, Inc.
+ 1999, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 23539485f51..fff782f21ba 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1,5 +1,5 @@
/* Definitions of various defaults for tm.h macros.
- Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@monkeys.com)
diff --git a/gcc/df.c b/gcc/df.c
index 63f6c7c8245..d91f95e37d0 100644
--- a/gcc/df.c
+++ b/gcc/df.c
@@ -1,5 +1,6 @@
/* Dataflow support routines.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz,
mhayes@redhat.com)
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index cf331e0df5f..daf24279d5e 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -1,5 +1,5 @@
/* Various declarations for language-independent diagnostics subroutines.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
This file is part of GCC.
@@ -27,7 +27,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Constants used to discriminate diagnostics. */
typedef enum
{
-#define DEFINE_DIAGNOSTIC_KIND(K, M) K,
+#define DEFINE_DIAGNOSTIC_KIND(K, msgid) K,
#include "diagnostic.def"
#undef DEFINE_DIAGNOSTIC_KIND
DK_LAST_DIAGNOSTIC_KIND
diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi
index 9151fec67f5..d1afe655c76 100644
--- a/gcc/doc/c-tree.texi
+++ b/gcc/doc/c-tree.texi
@@ -1,4 +1,4 @@
-@c Copyright (c) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+@c Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@c Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -98,24 +98,24 @@ Many macros behave as predicates. Many, although not all, of these
predicates end in @samp{_P}. Do not rely on the result type of these
macros being of any particular type. You may, however, rely on the fact
that the type can be compared to @code{0}, so that statements like
-@example
+@smallexample
if (TEST_P (t) && !TEST_P (y))
x = 1;
-@end example
+@end smallexample
@noindent
and
-@example
+@smallexample
int i = (TEST_P (t) != 0);
-@end example
+@end smallexample
@noindent
are legal. Macros that return @code{int} values now may be changed to
return @code{tree} values, or other pointers in the future. Even those
that continue to return @code{int} may return multiple nonzero codes
where previously they returned only zero and one. Therefore, you should
not write code like
-@example
+@smallexample
if (TEST_P (t) == 1)
-@end example
+@end smallexample
@noindent
as this code is not guaranteed to work correctly in the future.
@@ -871,15 +871,15 @@ This predicate holds if the declaration was implicitly generated by the
compiler. For example, this predicate will hold of an implicitly
declared member function, or of the @code{TYPE_DECL} implicitly
generated for a class type. Recall that in C++ code like:
-@example
+@smallexample
struct S @{@};
-@end example
+@end smallexample
@noindent
is roughly equivalent to C code like:
-@example
+@smallexample
struct S @{@};
typedef struct S S;
-@end example
+@end smallexample
The implicitly generated @code{typedef} declaration is represented by a
@code{TYPE_DECL} for which @code{DECL_ARTIFICIAL} holds.
@@ -1024,14 +1024,14 @@ To determine the scope of a function, you can use the
@code{NAMESPACE_DECL}) of which the function is a member. For a virtual
function, this macro returns the class in which the function was
actually defined, not the base class in which the virtual declaration
-occurred.
+occurred.
If a friend function is defined in a class scope, the
@code{DECL_FRIEND_CONTEXT} macro can be used to determine the class in
which it was defined. For example, in
-@example
+@smallexample
class C @{ friend void f() @{@} @};
-@end example
+@end smallexample
@noindent
the @code{DECL_CONTEXT} for @code{f} will be the
@code{global_namespace}, but the @code{DECL_FRIEND_CONTEXT} will be the
@@ -1378,7 +1378,7 @@ the expression has been omitted. A substatement may in fact be a list
of statements, connected via their @code{TREE_CHAIN}s. So, you should
always process the statement tree by looping over substatements, like
this:
-@example
+@smallexample
void process_stmt (stmt)
tree stmt;
@{
@@ -1397,7 +1397,7 @@ void process_stmt (stmt)
stmt = TREE_CHAIN (stmt);
@}
@}
-@end example
+@end smallexample
In other words, while the @code{then} clause of an @code{if} statement
in C++ can be only one statement (although that one statement may be a
compound statement), the intermediate representation will sometimes use
@@ -1408,18 +1408,18 @@ several statements chained together.
Used to represent an inline assembly statement. For an inline assembly
statement like:
-@example
+@smallexample
asm ("mov x, y");
-@end example
+@end smallexample
The @code{ASM_STRING} macro will return a @code{STRING_CST} node for
@code{"mov x, y"}. If the original statement made use of the
extended-assembly syntax, then @code{ASM_OUTPUTS},
@code{ASM_INPUTS}, and @code{ASM_CLOBBERS} will be the outputs, inputs,
and clobbers for the statement, represented as @code{STRING_CST} nodes.
The extended-assembly syntax looks like:
-@example
+@smallexample
asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
-@end example
+@end smallexample
The first string is the @code{ASM_STRING}, containing the instruction
template. The next two strings are the output and inputs, respectively;
this statement has no clobbers. As this example indicates, ``plain''
@@ -1451,9 +1451,9 @@ the same type as the condition expression in the switch statement.
Otherwise, if both @code{CASE_LOW} and @code{CASE_HIGH} are defined, the
statement is a range of case labels. Such statements originate with the
extension that allows users to write things of the form:
-@example
+@smallexample
case 2 ... 5:
-@end example
+@end smallexample
The first value will be @code{CASE_LOW}, while the second will be
@code{CASE_HIGH}.
@@ -1549,7 +1549,7 @@ is the type of exception that will be caught by this handler; it is
equal (by pointer equality) to @code{NULL} if this handler is for all
types. @code{HANDLER_PARMS} is the @code{DECL_STMT} for the catch
parameter, and @code{HANDLER_BODY} is the @code{COMPOUND_STMT} for the
-block itself.
+block itself.
@item IF_STMT
@@ -1562,9 +1562,9 @@ evaluated, the statement should be executed. Then, the
@code{TREE_VALUE} should be used as the conditional expression itself.
This representation is used to handle C++ code like this:
-@example
+@smallexample
if (int i = 7) @dots{}
-@end example
+@end smallexample
where there is a new local variable (or variables) declared within the
condition.
@@ -1584,9 +1584,9 @@ the @code{LABEL_DECL} with @code{DECL_NAME}.
If the function uses the G++ ``named return value'' extension, meaning
that the function has been defined like:
-@example
+@smallexample
S f(int) return s @{@dots{}@}
-@end example
+@end smallexample
then there will be a @code{RETURN_INIT}. There is never a named
returned value for a constructor. The first argument to the
@code{RETURN_INIT} is the name of the object returned; the second
@@ -1601,9 +1601,9 @@ constructed in the place where the object will be returned.
Used to represent a @code{return} statement. The @code{RETURN_EXPR} is
the expression returned; it will be @code{NULL_TREE} if the statement
was just
-@example
+@smallexample
return;
-@end example
+@end smallexample
@item SCOPE_STMT
@@ -1803,9 +1803,9 @@ noted otherwise, the operands to an expression are accessed using the
@code{TREE_OPERAND} macro. For example, to access the first operand to
a binary plus expression @code{expr}, use:
-@example
+@smallexample
TREE_OPERAND (expr, 0)
-@end example
+@end smallexample
@noindent
As this example indicates, the operands are zero-indexed.
@@ -1819,10 +1819,11 @@ These nodes represent integer constants. Note that the type of these
constants is obtained with @code{TREE_TYPE}; they are not always of type
@code{int}. In particular, @code{char} constants are represented with
@code{INTEGER_CST} nodes. The value of the integer constant @code{e} is
-given by @example
+given by
+@smallexample
((TREE_INT_CST_HIGH (e) << HOST_BITS_PER_WIDE_INT)
+ TREE_INST_CST_LOW (e))
-@end example
+@end smallexample
@noindent
HOST_BITS_PER_WIDE_INT is at least thirty-two on all platforms. Both
@code{TREE_INT_CST_HIGH} and @code{TREE_INT_CST_LOW} return a
@@ -1893,11 +1894,11 @@ or @code{UNION_TYPE} within which the pointer points), and the
Note that the @code{DECL_CONTEXT} for the @code{PTRMEM_CST_MEMBER} is in
general different from the @code{PTRMEM_CST_CLASS}. For example,
given:
-@example
+@smallexample
struct B @{ int i; @};
struct D : public B @{@};
int D::*dp = &D::i;
-@end example
+@end smallexample
@noindent
The @code{PTRMEM_CST_CLASS} for @code{&D::i} is @code{D}, even though
the @code{DECL_CONTEXT} for the @code{PTRMEM_CST_MEMBER} is @code{B},
@@ -2181,9 +2182,9 @@ sites.
@item STMT_EXPR
These nodes are used to represent GCC's statement-expression extension.
The statement-expression extension allows code like this:
-@example
+@smallexample
int f() @{ return (@{ int j; j = 3; j + 7; @}); @}
-@end example
+@end smallexample
In other words, an sequence of statements may occur where a single
expression would normally appear. The @code{STMT_EXPR} node represents
such an expression. The @code{STMT_EXPR_STMT} gives the statement
@@ -2192,13 +2193,13 @@ value of the expression is the value of the last sub-statement in the
@code{COMPOUND_STMT}. More precisely, the value is the value computed
by the last @code{EXPR_STMT} in the outermost scope of the
@code{COMPOUND_STMT}. For example, in:
-@example
+@smallexample
(@{ 3; @})
-@end example
+@end smallexample
the value is @code{3} while in:
-@example
+@smallexample
(@{ if (x) @{ 3; @} @})
-@end example
+@end smallexample
(represented by a nested @code{COMPOUND_STMT}), there is no value. If
the @code{STMT_EXPR} does not yield a value, it's type will be
@code{void}.
diff --git a/gcc/doc/compat.texi b/gcc/doc/compat.texi
index 274368a20e3..5b02ebcac71 100644
--- a/gcc/doc/compat.texi
+++ b/gcc/doc/compat.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2002 Free Software Foundation, Inc.
+@c Copyright (C) 2002, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -133,9 +133,9 @@ build was configured, but can be seen by using the G++ @option{-v} option.
With default configuration options for G++ 3.3 the compile line for a
different C++ compiler needs to include
-@example
+@smallexample
-I@var{gcc_install_directory}/include/c++/3.3
-@end example
+@end smallexample
Similarly, compiling code with G++ that must use a C++ library other
than the GNU C++ library requires specifying the location of the header
diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi
index 80399ed784f..67675b52299 100644
--- a/gcc/doc/contrib.texi
+++ b/gcc/doc/contrib.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,
-@c 2001,2002,2003 Free Software Foundation, Inc.
+@c 2001,2002,2003,2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -55,7 +55,7 @@ Scott Bambrough for help porting the Java compiler.
Wolfgang Bangerth for processing tons of bug reports.
@item
-Jon Beniston for his Windows port of Java.
+Jon Beniston for his Microsoft Windows port of Java.
@item
Daniel Berlin for better DWARF2 support, faster/better optimizations,
@@ -121,8 +121,8 @@ Stephan Buys for contributing Doxygen notes for libstdc++.
@item
Paolo Carlini for libstdc++ work: lots of efficiency improvements to
-the string class, hard detective work on the frustrating localization
-issues, and keeping up with the problem reports.
+the C++ strings, streambufs and formatted I/O, hard detective work on
+the frustrating localization issues, and keeping up with the problem reports.
@item
John Carr for his alias work, SPARC hacking, infrastructure improvements,
@@ -162,6 +162,10 @@ other random hacking.
Michael Cook for libstdc++ cleanup patches to reduce warnings.
@item
+R. Kelley Cook for making GCC buildable from a read-only directory as
+well as other miscellaneous build process and documentation clean-ups.
+
+@item
Ralf Corsepius for SH testing and minor bugfixing.
@item
@@ -417,7 +421,7 @@ head maintainer of GCC for several years.
@item
Mumit Khan for various contributions to the Cygwin and Mingw32 ports and
-maintaining binary releases for Windows hosts, and for massive libstdc++
+maintaining binary releases for Microsoft Windows hosts, and for massive libstdc++
porting work to Cygwin/Mingw32.
@item
@@ -515,7 +519,7 @@ for Java test code.
Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
@item
-Adam Megacz for his work on the Windows port of GCJ.
+Adam Megacz for his work on the Microsoft Windows port of GCJ.
@item
Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
@@ -653,6 +657,9 @@ Ovidiu Predescu for his work on the Objective-C front end and runtime
libraries.
@item
+Jerry Quinn for major performance improvements in C++ formatted I/O.
+
+@item
Ken Raeburn for various improvements to checker, MIPS ports and various
cleanups in the compiler.
@@ -689,6 +696,10 @@ Ken Rose for fixes to our delay slot filling code.
Paul Rubin wrote most of the preprocessor.
@item
+P@'etur Run@'olfsson for major performance improvements in C++ formatted I/O and
+large file support in C++ filebuf.
+
+@item
Chip Salzenberg for libstdc++ patches and improvements to locales, traits,
Makefiles, libio, libtool hackery, and ``long long'' support.
@@ -745,7 +756,7 @@ the LWG (thereby keeping us in line with updates from the ISO).
@item
Franz Sirl for his ongoing work with making the PPC port stable
-for linux.
+for GNU/Linux.
@item
Andrey Slepuhin for assorted AIX hacking.
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index 0ab1b3203ec..5d1cb9b3029 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -9,7 +9,7 @@
@copying
@c man begin COPYRIGHT
Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2000, 2001, 2002, 2003
+1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@@ -258,7 +258,7 @@ At present, GNU CPP does not implement conversion from arbitrary file
encodings to the source character set. Use of any encoding other than
plain ASCII or UTF-8, except in comments, will cause errors. Use of
encodings that are not strict supersets of ASCII, such as Shift JIS,
-may cause errors even if non-ASCII characters appear only in comments.
+may cause errors even if non-ASCII characters appear only in comments.
We plan to fix this in the near future.
All preprocessing work (the subject of the rest of this manual) is
@@ -351,10 +351,10 @@ do not recognize these idioms.
The nine trigraphs and their replacements are
-@example
+@smallexample
Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
Replacement: [ ] @{ @} # \ ^ | ~
-@end example
+@end smallexample
@item
@cindex continued lines
@@ -385,23 +385,23 @@ There are two kinds of comments. @dfn{Block comments} begin with
@samp{/*} and continue until the next @samp{*/}. Block comments do not
nest:
-@example
+@smallexample
/* @r{this is} /* @r{one comment} */ @r{text outside comment}
-@end example
+@end smallexample
@dfn{Line comments} begin with @samp{//} and continue to the end of the
current line. Line comments do not nest either, but it does not matter,
because they would end in the same place anyway.
-@example
+@smallexample
// @r{this is} // @r{one comment}
@r{text outside comment}
-@end example
+@end smallexample
@end enumerate
It is safe to put line comments inside block comments, or vice versa.
-@example
+@smallexample
@group
/* @r{block comment}
// @r{contains line comment}
@@ -410,19 +410,19 @@ It is safe to put line comments inside block comments, or vice versa.
// @r{line comment} /* @r{contains block comment} */
@end group
-@end example
+@end smallexample
But beware of commenting out one end of a block comment with a line
comment.
-@example
+@smallexample
@group
// @r{l.c.} /* @r{block comment begins}
@r{oops! this isn't a comment anymore} */
@end group
-@end example
+@end smallexample
-Comments are not recognized within string literals.
+Comments are not recognized within string literals.
@t{@w{"/* blah */"}} is the string constant @samp{@w{/* blah */}}, not
an empty string.
@@ -437,7 +437,7 @@ next line with backslash-newline. You can even split @samp{/*},
@samp{*/}, and @samp{//} onto multiple lines with backslash-newline.
For example:
-@example
+@smallexample
@group
/\
*
@@ -447,7 +447,7 @@ ne FO\
O 10\
20
@end group
-@end example
+@end smallexample
@noindent
is equivalent to @code{@w{#define FOO 1020}}. All these tricks are
@@ -482,7 +482,7 @@ Once the input file is broken into tokens, the token boundaries never
change, except when the @samp{##} preprocessing operator is used to paste
tokens together. @xref{Concatenation}. For example,
-@example
+@smallexample
@group
#define foo() bar
foo()baz
@@ -490,7 +490,7 @@ foo()baz
@emph{not}
@expansion{} barbaz
@end group
-@end example
+@end smallexample
The compiler does not re-tokenize the preprocessor's output. Each
preprocessing token becomes one compiler token.
@@ -590,10 +590,10 @@ punctuation in obsolete systems. It has no negative side effects,
unlike trigraphs, but does not cover as much ground. The digraphs and
their corresponding normal punctuators are:
-@example
+@smallexample
Digraph: <% %> <: :> %: %:%:
Punctuator: @{ @} [ ] # ##
-@end example
+@end smallexample
@cindex other tokens
Any other single character is considered ``other.'' It is passed on to
@@ -613,10 +613,10 @@ silently ignored, just as any other character would be. In running
text, NUL is considered white space. For example, these two directives
have the same meaning.
-@example
+@smallexample
#define X^@@1
#define X 1
-@end example
+@end smallexample
@noindent
(where @samp{^@@} is ASCII NUL)@. Within string or character constants,
@@ -791,15 +791,15 @@ file, followed by the output that comes from the text after the
@samp{#include} directive. For example, if you have a header file
@file{header.h} as follows,
-@example
+@smallexample
char *test (void);
-@end example
+@end smallexample
@noindent
and a main program called @file{program.c} that uses the header file,
like this,
-@example
+@smallexample
int x;
#include "header.h"
@@ -808,13 +808,13 @@ main (void)
@{
puts (test ());
@}
-@end example
+@end smallexample
@noindent
the compiler will see the same token stream as it would if
@file{program.c} read
-@example
+@smallexample
int x;
char *test (void);
@@ -823,7 +823,7 @@ main (void)
@{
puts (test ());
@}
-@end example
+@end smallexample
Included files are not limited to declarations and macro definitions;
those are merely the typical uses. Any fragment of a C program can be
@@ -850,12 +850,12 @@ GCC looks in several different places for headers. On a normal Unix
system, if you do not instruct it otherwise, it will look for headers
requested with @code{@w{#include <@var{file}>}} in:
-@example
+@smallexample
/usr/local/include
@var{libdir}/gcc/@var{target}/@var{version}/include
/usr/@var{target}/include
/usr/include
-@end example
+@end smallexample
For C++ programs, it will also look in @file{/usr/include/g++-v3},
first. In the above, @var{target} is the canonical name of the system
@@ -926,7 +926,7 @@ it will certainly waste time.
The standard way to prevent this is to enclose the entire real contents
of the file in a conditional, like this:
-@example
+@smallexample
@group
/* File foo. */
#ifndef FILE_FOO_SEEN
@@ -936,7 +936,7 @@ of the file in a conditional, like this:
#endif /* !FILE_FOO_SEEN */
@end group
-@end example
+@end smallexample
This construct is commonly known as a @dfn{wrapper #ifndef}.
When the header is included again, the conditional will be false,
@@ -971,7 +971,7 @@ files to be included into your program. They might specify
configuration parameters to be used on different sorts of operating
systems, for instance. You could do this with a series of conditionals,
-@example
+@smallexample
#if SYSTEM_1
# include "system_1.h"
#elif SYSTEM_2
@@ -979,18 +979,18 @@ systems, for instance. You could do this with a series of conditionals,
#elif SYSTEM_3
@dots{}
#endif
-@end example
+@end smallexample
That rapidly becomes tedious. Instead, the preprocessor offers the
ability to use a macro for the header name. This is called a
@dfn{computed include}. Instead of writing a header name as the direct
argument of @samp{#include}, you simply put a macro name there instead:
-@example
+@smallexample
#define SYSTEM_H "system_1.h"
@dots{}
#include SYSTEM_H
-@end example
+@end smallexample
@noindent
@code{SYSTEM_H} will be expanded, and the preprocessor will look for
@@ -1015,10 +1015,10 @@ string constant are the file to be included. CPP does not re-examine the
string for embedded quotes, but neither does it process backslash
escapes in the string. Therefore
-@example
+@smallexample
#define HEADER "a\"b"
#include HEADER
-@end example
+@end smallexample
@noindent
looks for a file named @file{a\"b}. CPP searches for the file according
@@ -1063,9 +1063,9 @@ header is not protected from multiple inclusion (@pxref{Once-Only
Headers}), it will recurse infinitely and cause a fatal error.
You could include the old header with an absolute pathname:
-@example
+@smallexample
#include "/usr/include/old-header.h"
-@end example
+@end smallexample
@noindent
This works, but is not clean; should the system headers ever move, you
would have to edit the new headers to match.
@@ -1184,27 +1184,27 @@ followed by the name of the macro and then the token sequence it should
be an abbreviation for, which is variously referred to as the macro's
@dfn{body}, @dfn{expansion} or @dfn{replacement list}. For example,
-@example
+@smallexample
#define BUFFER_SIZE 1024
-@end example
+@end smallexample
@noindent
defines a macro named @code{BUFFER_SIZE} as an abbreviation for the
token @code{1024}. If somewhere after this @samp{#define} directive
there comes a C statement of the form
-@example
+@smallexample
foo = (char *) malloc (BUFFER_SIZE);
-@end example
+@end smallexample
@noindent
then the C preprocessor will recognize and @dfn{expand} the macro
@code{BUFFER_SIZE}. The C compiler will see the same tokens as it would
if you had written
-@example
+@smallexample
foo = (char *) malloc (1024);
-@end example
+@end smallexample
By convention, macro names are written in uppercase. Programs are
easier to read when it is possible to tell at a glance which names are
@@ -1215,13 +1215,13 @@ continue the definition onto multiple lines, if necessary, using
backslash-newline. When the macro is expanded, however, it will all
come out on one line. For example,
-@example
+@smallexample
#define NUMBERS 1, \
2, \
3
int x[] = @{ NUMBERS @};
@expansion{} int x[] = @{ 1, 2, 3 @};
-@end example
+@end smallexample
@noindent
The most common visible consequence of this is surprising line numbers
@@ -1236,25 +1236,25 @@ The C preprocessor scans your program sequentially. Macro definitions
take effect at the place you write them. Therefore, the following input
to the C preprocessor
-@example
+@smallexample
foo = X;
#define X 4
bar = X;
-@end example
+@end smallexample
@noindent
produces
-@example
+@smallexample
foo = X;
bar = 4;
-@end example
+@end smallexample
When the preprocessor expands a macro name, the macro's expansion
replaces the macro invocation, then the expansion is examined for more
macros to expand. For example,
-@example
+@smallexample
@group
#define TABLESIZE BUFSIZE
#define BUFSIZE 1024
@@ -1262,7 +1262,7 @@ TABLESIZE
@expansion{} BUFSIZE
@expansion{} 1024
@end group
-@end example
+@end smallexample
@noindent
@code{TABLESIZE} is expanded first to produce @code{BUFSIZE}, then that
@@ -1280,12 +1280,12 @@ at some point in the source file. @code{TABLESIZE}, defined as shown,
will always expand using the definition of @code{BUFSIZE} that is
currently in effect:
-@example
+@smallexample
#define BUFSIZE 1020
#define TABLESIZE BUFSIZE
#undef BUFSIZE
#define BUFSIZE 37
-@end example
+@end smallexample
@noindent
Now @code{TABLESIZE} expands (in two stages) to @code{37}.
@@ -1304,24 +1304,24 @@ are called @dfn{function-like macros}. To define a function-like macro,
you use the same @samp{#define} directive, but you put a pair of
parentheses immediately after the macro name. For example,
-@example
+@smallexample
#define lang_init() c_init()
lang_init()
@expansion{} c_init()
-@end example
+@end smallexample
A function-like macro is only expanded if its name appears with a pair
of parentheses after it. If you write just the name, it is left alone.
This can be useful when you have a function and a macro of the same
name, and you wish to use the function sometimes.
-@example
+@smallexample
extern void foo(void);
#define foo() /* optimized inline version */
@dots{}
foo();
funcptr = foo;
-@end example
+@end smallexample
Here the call to @code{foo()} will use the macro, but the function
pointer will get the address of the real function. If the macro were to
@@ -1332,11 +1332,11 @@ macro definition, that does not define a function-like macro, it defines
an object-like macro whose expansion happens to begin with a pair of
parentheses.
-@example
+@smallexample
#define lang_init () c_init()
lang_init()
@expansion{} () c_init()()
-@end example
+@end smallexample
The first two pairs of parentheses in this expansion come from the
macro. The third is the pair that was originally after the macro
@@ -1368,12 +1368,12 @@ macro body.)
As an example, here is a macro that computes the minimum of two numeric
values, as it is defined in many C programs, and some uses.
-@example
+@smallexample
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
x = min(a, b); @expansion{} x = ((a) < (b) ? (a) : (b));
y = min(1, 2); @expansion{} y = ((1) < (2) ? (1) : (2));
z = min(a + 28, *p); @expansion{} z = ((a + 28) < (*p) ? (a + 28) : (*p));
-@end example
+@end smallexample
@noindent
(In this small example you can already see several of the dangers of
@@ -1386,9 +1386,9 @@ such parentheses does not end the argument. However, there is no
requirement for square brackets or braces to balance, and they do not
prevent a comma from separating arguments. Thus,
-@example
+@smallexample
macro (array[x = y, x + 1])
-@end example
+@end smallexample
@noindent
passes two arguments to @code{macro}: @code{array[x = y} and @code{x +
@@ -1406,20 +1406,20 @@ Prescan}, for detailed discussion.
For example, @code{min (min (a, b), c)} is first expanded to
-@example
+@smallexample
min (((a) < (b) ? (a) : (b)), (c))
-@end example
+@end smallexample
@noindent
and then to
-@example
+@smallexample
@group
((((a) < (b) ? (a) : (b))) < (c)
? (((a) < (b) ? (a) : (b)))
: (c))
@end group
-@end example
+@end smallexample
@noindent
(Line breaks shown here for clarity would not actually be generated.)
@@ -1431,7 +1431,7 @@ You cannot leave out arguments entirely; if a macro takes two arguments,
there must be exactly one comma at the top level of its argument list.
Here are some silly examples using @code{min}:
-@example
+@smallexample
min(, b) @expansion{} (( ) < (b) ? ( ) : (b))
min(a, ) @expansion{} ((a ) < ( ) ? (a ) : ( ))
min(,) @expansion{} (( ) < ( ) ? ( ) : ( ))
@@ -1439,7 +1439,7 @@ min((,),) @expansion{} (((,)) < ( ) ? ((,)) : ( ))
min() @error{} macro "min" requires 2 arguments, but only 1 given
min(,,) @error{} macro "min" passed 3 arguments, but takes just 2
-@end example
+@end smallexample
Whitespace is not a preprocessing token, so if a macro @code{foo} takes
one argument, @code{@w{foo ()}} and @code{@w{foo ( )}} both supply it an
@@ -1451,10 +1451,10 @@ empty argument was required.
Macro parameters appearing inside string literals are not replaced by
their corresponding actual arguments.
-@example
+@smallexample
#define foo(x) x, "x"
foo(bar) @expansion{} bar, "x"
-@end example
+@end smallexample
@node Stringification
@section Stringification
@@ -1478,7 +1478,7 @@ long string.
Here is an example of a macro definition that uses stringification:
-@example
+@smallexample
@group
#define WARN_IF(EXP) \
do @{ if (EXP) \
@@ -1488,7 +1488,7 @@ WARN_IF (x == 0);
@expansion{} do @{ if (x == 0)
fprintf (stderr, "Warning: " "x == 0" "\n"); @} while (0);
@end group
-@end example
+@end smallexample
@noindent
The argument for @code{EXP} is substituted once, as-is, into the
@@ -1521,7 +1521,7 @@ There is no way to convert a macro argument into a character constant.
If you want to stringify the result of expansion of a macro argument,
you have to use two levels of macros.
-@example
+@smallexample
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
@@ -1531,7 +1531,7 @@ xstr (foo)
@expansion{} xstr (4)
@expansion{} str (4)
@expansion{} "4"
-@end example
+@end smallexample
@code{s} is stringified when it is used in @code{str}, so it is not
macro-expanded first. But @code{s} is an ordinary argument to
@@ -1588,7 +1588,7 @@ Consider a C program that interprets named commands. There probably
needs to be a table of commands, perhaps an array of structures declared
as follows:
-@example
+@smallexample
@group
struct command
@{
@@ -1605,7 +1605,7 @@ struct command commands[] =
@dots{}
@};
@end group
-@end example
+@end smallexample
It would be cleaner not to have to give each command name twice, once in
the string constant and once in the function name. A macro which takes the
@@ -1613,7 +1613,7 @@ name of a command as an argument can make this unnecessary. The string
constant can be created with stringification, and the function name by
concatenating the argument with @samp{_command}. Here is how it is done:
-@example
+@smallexample
#define COMMAND(NAME) @{ #NAME, NAME ## _command @}
struct command commands[] =
@@ -1622,7 +1622,7 @@ struct command commands[] =
COMMAND (help),
@dots{}
@};
-@end example
+@end smallexample
@node Variadic Macros
@section Variadic Macros
@@ -1634,9 +1634,9 @@ A macro can be declared to accept a variable number of arguments much as
a function can. The syntax for defining the macro is similar to that of
a function. Here is an example:
-@example
+@smallexample
#define eprintf(@dots{}) fprintf (stderr, __VA_ARGS__)
-@end example
+@end smallexample
This kind of macro is called @dfn{variadic}. When the macro is invoked,
all the tokens in its argument list after the last named argument (this
@@ -1645,10 +1645,10 @@ argument}. This sequence of tokens replaces the identifier
@code{@w{__VA_ARGS__}} in the macro body wherever it appears. Thus, we
have this expansion:
-@example
+@smallexample
eprintf ("%s:%d: ", input_file, lineno)
@expansion{} fprintf (stderr, "%s:%d: ", input_file, lineno)
-@end example
+@end smallexample
The variable argument is completely macro-expanded before it is inserted
into the macro expansion, just like an ordinary argument. You may use
@@ -1662,9 +1662,9 @@ this, as an extension. You may write an argument name immediately
before the @samp{@dots{}}; that name is used for the variable argument.
The @code{eprintf} macro above could be written
-@example
+@smallexample
#define eprintf(args@dots{}) fprintf (stderr, args)
-@end example
+@end smallexample
@noindent
using this extension. You cannot use @code{@w{__VA_ARGS__}} and this
@@ -1673,9 +1673,9 @@ extension in the same macro.
You can have named arguments as well as variable arguments in a variadic
macro. We could define @code{eprintf} like this, instead:
-@example
+@smallexample
#define eprintf(format, @dots{}) fprintf (stderr, format, __VA_ARGS__)
-@end example
+@end smallexample
@noindent
This formulation looks more descriptive, but unfortunately it is less
@@ -1685,26 +1685,26 @@ argument from the variable arguments. Furthermore, if you leave the
variable argument empty, you will get a syntax error, because
there will be an extra comma after the format string.
-@example
+@smallexample
eprintf("success!\n", );
@expansion{} fprintf(stderr, "success!\n", );
-@end example
+@end smallexample
GNU CPP has a pair of extensions which deal with this problem. First,
you are allowed to leave the variable argument out entirely:
-@example
+@smallexample
eprintf ("success!\n")
@expansion{} fprintf(stderr, "success!\n", );
-@end example
+@end smallexample
@noindent
Second, the @samp{##} token paste operator has a special meaning when
placed between a comma and a variable argument. If you write
-@example
+@smallexample
#define eprintf(format, @dots{}) fprintf (stderr, format, ##__VA_ARGS__)
-@end example
+@end smallexample
@noindent
and the variable argument is left out when the @code{eprintf} macro is
@@ -1712,10 +1712,10 @@ used, then the comma before the @samp{##} will be deleted. This does
@emph{not} happen if you pass an empty argument, nor does it happen if
the token preceding @samp{##} is anything other than a comma.
-@example
+@smallexample
eprintf ("success!\n")
@expansion{} fprintf(stderr, "success!\n");
-@end example
+@end smallexample
@noindent
The above explanation is ambiguous about the case where the only macro
@@ -1748,9 +1748,9 @@ previous versions of GCC, the token preceding the special @samp{##} must
be a comma, and there must be white space between that comma and
whatever comes immediately before it:
-@example
+@smallexample
#define eprintf(format, args@dots{}) fprintf (stderr, format , ##args)
-@end example
+@end smallexample
@noindent
@xref{Differences from previous versions}, for the gory details.
@@ -1803,12 +1803,12 @@ message to report an inconsistency detected by the program; the message
can state the source line at which the inconsistency was detected. For
example,
-@example
+@smallexample
fprintf (stderr, "Internal error: "
"negative string length "
"%d at %s, line %d.",
length, __FILE__, __LINE__);
-@end example
+@end smallexample
An @samp{#include} directive changes the expansions of @code{__FILE__}
and @code{__LINE__} to correspond to the included file. At the end of
@@ -1942,26 +1942,26 @@ minor version and patch level are reset. If you wish to use the
predefined macros directly in the conditional, you will need to write it
like this:
-@example
+@smallexample
/* @r{Test for GCC > 3.2.0} */
#if __GNUC__ > 3 || \
(__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \
(__GNUC_MINOR__ == 2 && \
__GNUC_PATCHLEVEL__ > 0))
-@end example
+@end smallexample
@noindent
Another approach is to use the predefined macros to
calculate a single number, then compare that against a threshold:
-@example
+@smallexample
#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
@dots{}
/* @r{Test for GCC > 3.2.0} */
#if GCC_VERSION > 30200
-@end example
+@end smallexample
@noindent
Many people find this form easier to understand.
@@ -2067,7 +2067,7 @@ this macro directly; instead, include the appropriate headers.
@itemx __INT_MAX__
@itemx __LONG_MAX__
@itemx __LONG_LONG_MAX__
-Defined to the maximum value of the @code{signed char}, @code{wchar_t},
+Defined to the maximum value of the @code{signed char}, @code{wchar_t},
@code{signed short},
@code{signed int}, @code{signed long}, and @code{signed long long} types
respectively. They exist to make the standard header given numerical limits
@@ -2176,12 +2176,12 @@ macro is function-like. It is an error if anything appears on the line
after the macro name. @samp{#undef} has no effect if the name is not a
macro.
-@example
+@smallexample
#define FOO 4
x = FOO; @expansion{} x = 4;
#undef FOO
x = FOO; @expansion{} x = FOO;
-@end example
+@end smallexample
Once a macro has been undefined, that identifier may be @dfn{redefined}
as a macro by a subsequent @samp{#define} directive. The new definition
@@ -2201,19 +2201,19 @@ count as whitespace.
@noindent
These definitions are effectively the same:
-@example
+@smallexample
#define FOUR (2 + 2)
#define FOUR (2 + 2)
#define FOUR (2 /* two */ + 2)
-@end example
+@end smallexample
@noindent
but these are not:
-@example
+@smallexample
#define FOUR (2 + 2)
#define FOUR ( 2+2 )
#define FOUR (2 * 2)
#define FOUR(score,and,seven,years,ago) (2 + 2)
-@end example
+@end smallexample
If a macro is redefined with a definition that is not effectively the
same as the old one, the preprocessor issues a warning and changes the
@@ -2294,25 +2294,25 @@ the input file, for more macro calls. It is possible to piece together
a macro call coming partially from the macro body and partially from the
arguments. For example,
-@example
+@smallexample
#define twice(x) (2*(x))
#define call_with_1(x) x(1)
call_with_1 (twice)
@expansion{} twice(1)
@expansion{} (2*(1))
-@end example
+@end smallexample
Macro definitions do not have to have balanced parentheses. By writing
an unbalanced open parenthesis in a macro body, it is possible to create
a macro call that begins inside the macro body but ends outside of it.
For example,
-@example
+@smallexample
#define strange(file) fprintf (file, "%s %d",
@dots{}
strange(stderr) p, 35)
@expansion{} fprintf (stderr, "%s %d", p, 35)
-@end example
+@end smallexample
The ability to piece together a macro call can be useful, but the use of
unbalanced open parentheses in a macro body is just confusing, and
@@ -2330,41 +2330,41 @@ way.
Suppose you define a macro as follows,
-@example
+@smallexample
#define ceil_div(x, y) (x + y - 1) / y
-@end example
+@end smallexample
@noindent
whose purpose is to divide, rounding up. (One use for this operation is
to compute how many @code{int} objects are needed to hold a certain
number of @code{char} objects.) Then suppose it is used as follows:
-@example
+@smallexample
a = ceil_div (b & c, sizeof (int));
@expansion{} a = (b & c + sizeof (int) - 1) / sizeof (int);
-@end example
+@end smallexample
@noindent
This does not do what is intended. The operator-precedence rules of
C make it equivalent to this:
-@example
+@smallexample
a = (b & (c + sizeof (int) - 1)) / sizeof (int);
-@end example
+@end smallexample
@noindent
What we want is this:
-@example
+@smallexample
a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
-@end example
+@end smallexample
@noindent
Defining the macro as
-@example
+@smallexample
#define ceil_div(x, y) ((x) + (y) - 1) / (y)
-@end example
+@end smallexample
@noindent
provides the desired result.
@@ -2374,9 +2374,9 @@ ceil_div(1, 2)}. That has the appearance of a C expression that would
compute the size of the type of @code{ceil_div (1, 2)}, but in fact it
means something very different. Here is what it expands to:
-@example
+@smallexample
sizeof ((1) + (2) - 1) / (2)
-@end example
+@end smallexample
@noindent
This would take the size of an integer and divide it by two. The
@@ -2386,9 +2386,9 @@ was intended to be inside.
Parentheses around the entire macro definition prevent such problems.
Here, then, is the recommended way to define @code{ceil_div}:
-@example
+@smallexample
#define ceil_div(x, y) (((x) + (y) - 1) / (y))
-@end example
+@end smallexample
@node Swallowing the Semicolon
@subsection Swallowing the Semicolon
@@ -2399,13 +2399,13 @@ statement. Consider, for example, the following macro, that advances a
pointer (the argument @code{p} says where to find it) across whitespace
characters:
-@example
+@smallexample
#define SKIP_SPACES(p, limit) \
@{ char *lim = (limit); \
while (p < lim) @{ \
if (*p++ != ' ') @{ \
p--; break; @}@}@}
-@end example
+@end smallexample
@noindent
Here backslash-newline is used to split the macro definition, which must
@@ -2422,11 +2422,11 @@ like a function call, writing a semicolon afterward, as in
This can cause trouble before @code{else} statements, because the
semicolon is actually a null statement. Suppose you write
-@example
+@smallexample
if (*p != 0)
SKIP_SPACES (p, lim);
else @dots{}
-@end example
+@end smallexample
@noindent
The presence of two statements---the compound statement and a null
@@ -2436,20 +2436,20 @@ makes invalid C code.
The definition of the macro @code{SKIP_SPACES} can be altered to solve
this problem, using a @code{do @dots{} while} statement. Here is how:
-@example
+@smallexample
#define SKIP_SPACES(p, limit) \
do @{ char *lim = (limit); \
while (p < lim) @{ \
if (*p++ != ' ') @{ \
p--; break; @}@}@} \
while (0)
-@end example
+@end smallexample
Now @code{SKIP_SPACES (p, lim);} expands into
-@example
+@smallexample
do @{@dots{}@} while (0);
-@end example
+@end smallexample
@noindent
which is one statement. The loop executes exactly once; most compilers
@@ -2462,23 +2462,23 @@ generate no extra code for it.
@cindex unsafe macros
Many C programs define a macro @code{min}, for ``minimum'', like this:
-@example
+@smallexample
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
-@end example
+@end smallexample
When you use this macro with an argument containing a side effect,
as shown here,
-@example
+@smallexample
next = min (x + y, foo (z));
-@end example
+@end smallexample
@noindent
it expands as follows:
-@example
+@smallexample
next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
-@end example
+@end smallexample
@noindent
where @code{x + y} has been substituted for @code{X} and @code{foo (z)}
@@ -2496,12 +2496,12 @@ computes the value of @code{foo (z)} only once. The C language offers
no standard way to do this, but it can be done with GNU extensions as
follows:
-@example
+@smallexample
#define min(X, Y) \
(@{ typeof (X) x_ = (X); \
typeof (Y) y_ = (Y); \
(x_ < y_) ? x_ : y_; @})
-@end example
+@end smallexample
The @samp{(@{ @dots{} @})} notation produces a compound statement that
acts as an expression. Its value is the value of its last statement.
@@ -2515,7 +2515,7 @@ careful when @emph{using} the macro @code{min}. For example, you can
calculate the value of @code{foo (z)}, save it in a variable, and use
that variable in @code{min}:
-@example
+@smallexample
@group
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
@dots{}
@@ -2524,7 +2524,7 @@ that variable in @code{min}:
next = min (x + y, tem);
@}
@end group
-@end example
+@end smallexample
@noindent
(where we assume that @code{foo} returns type @code{int}).
@@ -2540,9 +2540,9 @@ macro, it would produce an infinitely large expansion. To prevent this,
the self-reference is not considered a macro call. It is passed into
the preprocessor output unchanged. Let's consider an example:
-@example
+@smallexample
#define foo (4 + foo)
-@end example
+@end smallexample
@noindent
where @code{foo} is also a variable in your program.
@@ -2565,9 +2565,9 @@ of the variable @code{foo}, whereas in fact the value is four greater.
One common, useful use of self-reference is to create a macro which
expands to itself. If you write
-@example
+@smallexample
#define EPERM EPERM
-@end example
+@end smallexample
@noindent
then the macro @code{EPERM} expands to @code{EPERM}. Effectively, it is
@@ -2581,15 +2581,15 @@ If a macro @code{x} expands to use a macro @code{y}, and the expansion of
self-reference} of @code{x}. @code{x} is not expanded in this case
either. Thus, if we have
-@example
+@smallexample
#define x (4 + y)
#define y (2 * x)
-@end example
+@end smallexample
@noindent
then @code{x} and @code{y} expand as follows:
-@example
+@smallexample
@group
x @expansion{} (4 + y)
@expansion{} (4 + (2 * x))
@@ -2597,7 +2597,7 @@ x @expansion{} (4 + y)
y @expansion{} (2 * x)
@expansion{} (2 * (4 + y))
@end group
-@end example
+@end smallexample
@noindent
Each macro is expanded when it appears in the definition of the other
@@ -2658,12 +2658,12 @@ concatenate its expansion, you can do that by causing one macro to call
another macro that does the stringification or concatenation. For
instance, if you have
-@example
+@smallexample
#define AFTERX(x) X_ ## x
#define XAFTERX(x) AFTERX(x)
#define TABLESIZE 1024
#define BUFSIZE TABLESIZE
-@end example
+@end smallexample
then @code{AFTERX(BUFSIZE)} expands to @code{X_BUFSIZE}, and
@code{XAFTERX(BUFSIZE)} expands to @code{X_1024}. (Not to
@@ -2675,11 +2675,11 @@ Macros used in arguments, whose expansions contain unshielded commas.
This can cause a macro expanded on the second scan to be called with the
wrong number of arguments. Here is an example:
-@example
+@smallexample
#define foo a,b
#define bar(x) lose(x)
#define lose(x) (1 + (x))
-@end example
+@end smallexample
We would like @code{bar(foo)} to turn into @code{(1 + (foo))}, which
would then turn into @code{(1 + (a,b))}. Instead, @code{bar(foo)}
@@ -2688,11 +2688,11 @@ requires a single argument. In this case, the problem is easily solved
by the same parentheses that ought to be used to prevent misnesting of
arithmetic operations:
-@example
+@smallexample
#define foo (a,b)
@exdent or
#define bar(x) lose((x))
-@end example
+@end smallexample
The extra pair of parentheses prevents the comma in @code{foo}'s
definition from being interpreted as an argument separator.
@@ -2711,13 +2711,13 @@ different to the line containing the argument causing the problem.
Here is an example illustrating this:
-@example
+@smallexample
#define ignore_second_arg(a,b,c) a; c
ignore_second_arg (foo (),
ignored (),
syntax error);
-@end example
+@end smallexample
@noindent
The syntax error triggered by the tokens @code{syntax error} results in
@@ -2818,7 +2818,7 @@ directive}: @samp{#if}, @samp{#ifdef} or @samp{#ifndef}.
The simplest sort of conditional is
-@example
+@smallexample
@group
#ifdef @var{MACRO}
@@ -2826,7 +2826,7 @@ The simplest sort of conditional is
#endif /* @var{MACRO} */
@end group
-@end example
+@end smallexample
@cindex conditional group
This block is called a @dfn{conditional group}. @var{controlled text}
@@ -2899,7 +2899,7 @@ automated by a tool such as @command{autoconf}, or done by hand.
The @samp{#if} directive allows you to test the value of an arithmetic
expression, rather than the mere existence of one macro. Its syntax is
-@example
+@smallexample
@group
#if @var{expression}
@@ -2907,7 +2907,7 @@ expression, rather than the mere existence of one macro. Its syntax is
#endif /* @var{expression} */
@end group
-@end example
+@end smallexample
@var{expression} is a C expression of integer type, subject to stringent
restrictions. It may contain
@@ -2977,9 +2977,9 @@ defined MACRO}} is precisely equivalent to @code{@w{#ifdef MACRO}}.
@code{defined} is useful when you wish to test more than one macro for
existence at once. For example,
-@example
+@smallexample
#if defined (__vax__) || defined (__ns16000__)
-@end example
+@end smallexample
@noindent
would succeed if either of the names @code{__vax__} or
@@ -2987,9 +2987,9 @@ would succeed if either of the names @code{__vax__} or
Conditionals written like this:
-@example
+@smallexample
#if defined BUFSIZE && BUFSIZE >= 1024
-@end example
+@end smallexample
@noindent
can generally be simplified to just @code{@w{#if BUFSIZE >= 1024}},
@@ -3010,7 +3010,7 @@ The @samp{#else} directive can be added to a conditional to provide
alternative text to be used if the condition fails. This is what it
looks like:
-@example
+@smallexample
@group
#if @var{expression}
@var{text-if-true}
@@ -3018,7 +3018,7 @@ looks like:
@var{text-if-false}
#endif /* Not @var{expression} */
@end group
-@end example
+@end smallexample
@noindent
If @var{expression} is nonzero, the @var{text-if-true} is included and
@@ -3034,7 +3034,7 @@ You can use @samp{#else} with @samp{#ifdef} and @samp{#ifndef}, too.
One common case of nested conditionals is used to check for more than two
possible alternatives. For example, you might have
-@example
+@smallexample
#if X == 1
@dots{}
#else /* X != 1 */
@@ -3044,12 +3044,12 @@ possible alternatives. For example, you might have
@dots{}
#endif /* X != 2 */
#endif /* X != 1 */
-@end example
+@end smallexample
Another conditional directive, @samp{#elif}, allows this to be
abbreviated as follows:
-@example
+@smallexample
#if X == 1
@dots{}
#elif X == 2
@@ -3057,7 +3057,7 @@ abbreviated as follows:
#else /* X != 2 and X != 1*/
@dots{}
#endif /* X != 2 and X != 1*/
-@end example
+@end smallexample
@samp{#elif} stands for ``else if''. Like @samp{#else}, it goes in the
middle of a conditional group and subdivides it; it does not require a
@@ -3117,23 +3117,23 @@ combination of parameters which you know the program does not properly
support. For example, if you know that the program will not run
properly on a VAX, you might write
-@example
+@smallexample
@group
#ifdef __vax__
#error "Won't work on VAXen. See comments at get_last_object."
#endif
@end group
-@end example
+@end smallexample
If you have several configuration parameters that must be set up by
the installation in a consistent way, you can use conditionals to detect
an inconsistency and report it with @samp{#error}. For example,
-@example
+@smallexample
#if !defined(UNALIGNED_INT_ASM_OP) && defined(DWARF2_DEBUGGING_INFO)
#error "DWARF2_DEBUGGING_INFO requires UNALIGNED_INT_ASM_OP."
#endif
-@end example
+@end smallexample
@findex #warning
The directive @samp{#warning} is like @samp{#error}, but causes the
@@ -3267,18 +3267,18 @@ literal. It is destringized, by replacing all @samp{\\} with a single
processed as if it had appeared as the right hand side of a
@samp{#pragma} directive. For example,
-@example
+@smallexample
_Pragma ("GCC dependency \"parse.y\"")
-@end example
+@end smallexample
@noindent
has the same effect as @code{#pragma GCC dependency "parse.y"}. The
same effect could be achieved using macros, for example
-@example
+@smallexample
#define DO_PRAGMA(x) _Pragma (#x)
DO_PRAGMA (GCC dependency "parse.y")
-@end example
+@end smallexample
The standard is unclear on where a @code{_Pragma} operator can appear.
The preprocessor does not accept it within a preprocessing conditional
@@ -3300,10 +3300,10 @@ other file is searched for using the normal include search path.
Optional trailing text can be used to give more information in the
warning message.
-@example
+@smallexample
#pragma GCC dependency "parse.y"
#pragma GCC dependency "/usr/include/time.h" rerun fixincludes
-@end example
+@end smallexample
@item #pragma GCC poison
Sometimes, there is an identifier that you want to remove completely
@@ -3313,10 +3313,10 @@ enforce this, you can @dfn{poison} the identifier with this pragma.
poison. If any of those identifiers appears anywhere in the source
after the directive, it is a hard error. For example,
-@example
+@smallexample
#pragma GCC poison printf sprintf fprintf
sprintf(some_string, "hello");
-@end example
+@end smallexample
@noindent
will produce an error.
@@ -3328,11 +3328,11 @@ about system headers defining macros that use it.
For example,
-@example
+@smallexample
#define strrchr rindex
#pragma GCC poison rindex
strrchr(some_string, 'h');
-@end example
+@end smallexample
@noindent
will not produce an error.
@@ -3401,9 +3401,9 @@ necessary to prevent an accidental token paste.
Source file name and line number information is conveyed by lines
of the form
-@example
+@smallexample
# @var{linenum} @var{filename} @var{flags}
-@end example
+@end smallexample
@noindent
These are called @dfn{linemarkers}. They are inserted as needed into
@@ -3924,9 +3924,9 @@ all.
@cindex predicates
An assertion looks like this:
-@example
+@smallexample
#@var{predicate} (@var{answer})
-@end example
+@end smallexample
@noindent
@var{predicate} must be a single identifier. @var{answer} can be any
@@ -3942,26 +3942,26 @@ To test an assertion, you write it in an @samp{#if}. For example, this
conditional succeeds if either @code{vax} or @code{ns16000} has been
asserted as an answer for @code{machine}.
-@example
+@smallexample
#if #machine (vax) || #machine (ns16000)
-@end example
+@end smallexample
@noindent
You can test whether @emph{any} answer is asserted for a predicate by
omitting the answer in the conditional:
-@example
+@smallexample
#if #machine
-@end example
+@end smallexample
@findex #assert
Assertions are made with the @samp{#assert} directive. Its sole
argument is the assertion to make, without the leading @samp{#} that
identifies assertions in conditionals.
-@example
+@smallexample
#assert @var{predicate} (@var{answer})
-@end example
+@end smallexample
@noindent
You may make several assertions with the same predicate and different
@@ -3977,9 +3977,9 @@ answer which was specified on the @samp{#unassert} line; other answers
for that predicate remain true. You can cancel an entire predicate by
leaving out the answer:
-@example
+@smallexample
#unassert @var{predicate}
-@end example
+@end smallexample
@noindent
In either form, if no such assertion has been made, @samp{#unassert} has
@@ -4135,7 +4135,7 @@ cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
[@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
[@option{-MP}] [@option{-MQ} @var{target}@dots{}]
[@option{-MT} @var{target}@dots{}]
- [@option{-P}] [@option{-fno-working-directory}]
+ [@option{-P}] [@option{-fno-working-directory}]
[@option{-x} @var{language}] [@option{-std=}@var{standard}]
@var{infile} @var{outfile}
@@ -4188,7 +4188,7 @@ Note that you can also specify places to search using options such as
@option{-M} (@pxref{Invocation}). These take precedence over
environment variables, which in turn take precedence over the
configuration of GCC@.
-
+
@include cppenv.texi
@c man end
diff --git a/gcc/doc/cppenv.texi b/gcc/doc/cppenv.texi
index 7a913f15903..bb29cb2d140 100644
--- a/gcc/doc/cppenv.texi
+++ b/gcc/doc/cppenv.texi
@@ -1,4 +1,4 @@
-@c Copyright (c) 1999, 2000, 2001, 2002
+@c Copyright (c) 1999, 2000, 2001, 2002, 2004
@c Free Software Foundation, Inc.
@c This is part of the CPP and GCC manuals.
@c For copying conditions, see the file gcc.texi.
@@ -20,7 +20,7 @@
Each variable's value is a list of directories separated by a special
character, much like @env{PATH}, in which to look for header files.
The special character, @code{PATH_SEPARATOR}, is target-dependent and
-determined at GCC build time. For Windows-based targets it is a
+determined at GCC build time. For Microsoft Windows-based targets it is a
semicolon, and for almost all other targets it is a colon.
@env{CPATH} specifies a list of directories to be searched as if
diff --git a/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi
index 2e7f50e37a6..fb8f5c72122 100644
--- a/gcc/doc/cppopts.texi
+++ b/gcc/doc/cppopts.texi
@@ -1,4 +1,4 @@
-@c Copyright (c) 1999, 2000, 2001, 2002, 2003
+@c Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004
@c Free Software Foundation, Inc.
@c This is part of the CPP and GCC manuals.
@c For copying conditions, see the file gcc.texi.
@@ -255,11 +255,11 @@ files without updating the @file{Makefile} to match.
This is typical output:
-@example
+@smallexample
test.o: test.c test.h
test.h:
-@end example
+@end smallexample
@item -MT @var{target}
@opindex MT
@@ -275,9 +275,9 @@ argument to @option{-MT}, or use multiple @option{-MT} options.
For example, @option{@w{-MT '$(objpfx)foo.o'}} might give
-@example
+@smallexample
$(objpfx)foo.o: foo.c
-@end example
+@end smallexample
@item -MQ @var{target}
@opindex MQ
@@ -285,9 +285,9 @@ $(objpfx)foo.o: foo.c
Same as @option{-MT}, but it quotes any characters which are special to
Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives
-@example
+@smallexample
$$(objpfx)foo.o: foo.c
-@end example
+@end smallexample
The default target is automatically quoted, as if it were given with
@option{-MQ}.
@@ -511,6 +511,16 @@ corresponds to the width of @code{wchar_t}. As with
by the system's @code{iconv} library routine; however, you will have
problems with encodings that do not fit exactly in @code{wchar_t}.
+@item -finput-charset=@var{charset}
+@opindex finput-charset
+Set the input character set, used for translation from the character
+set of the input file to the source character set used by GCC. If the
+locale does not specify, or GCC cannot get this information from the
+locale, the default is UTF-8. This can be overridden by either the locale
+or this command line option. Currently the command line option takes
+precedence if there's a conflict. @var{charset} can be any encoding
+supported by the system's @code{iconv} library routine.
+
@item -fworking-directory
@opindex fworking-directory
@opindex fno-working-directory
@@ -563,9 +573,9 @@ preprocessor, including predefined macros. This gives you a way of
finding out what is predefined in your version of the preprocessor.
Assuming you have no file @file{foo.h}, the command
-@example
+@smallexample
touch foo.h; cpp -dM foo.h
-@end example
+@end smallexample
@noindent
will show all the predefined macros.
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index e0361dff025..75ef43d4ea3 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -253,7 +253,7 @@ The @code{register} specifier affects code generation only in these ways:
@itemize @bullet
@item
-When used as part of the register variable extension, see
+When used as part of the register variable extension, see
@ref{Explicit Reg Vars}.
@item
@@ -494,12 +494,12 @@ Recall that a compound statement is a sequence of statements surrounded
by braces; in this construct, parentheses go around the braces. For
example:
-@example
+@smallexample
(@{ int y = foo (); int z;
if (y > 0) z = y;
else z = - y;
z; @})
-@end example
+@end smallexample
@noindent
is a valid (though slightly more complex than necessary) expression
@@ -516,9 +516,9 @@ that they evaluate each operand exactly once). For example, the
``maximum'' function is commonly defined as a macro in standard C as
follows:
-@example
+@smallexample
#define max(a,b) ((a) > (b) ? (a) : (b))
-@end example
+@end smallexample
@noindent
@cindex side effects, macro argument
@@ -527,10 +527,10 @@ results if the operand has side effects. In GNU C, if you know the
type of the operands (here let's assume @code{int}), you can define
the macro safely as follows:
-@example
+@smallexample
#define maxint(a,b) \
(@{int _a = (a), _b = (b); _a > _b ? _a : _b; @})
-@end example
+@end smallexample
Embedded statements are not allowed in constant expressions, such as
the value of an enumeration constant, the width of a bit-field, or
@@ -594,20 +594,20 @@ bug.)
GCC allows you to declare @dfn{local labels} in any nested block
scope. A local label is just like an ordinary label, but you can
only reference it (with a @code{goto} statement, or by taking its
-address) within the block in which it was declared.
+address) within the block in which it was declared.
A local label declaration looks like this:
-@example
+@smallexample
__label__ @var{label};
-@end example
+@end smallexample
@noindent
or
-@example
+@smallexample
__label__ @var{label1}, @var{label2}, /* @r{@dots{}} */;
-@end example
+@end smallexample
Local label declarations must come at the beginning of the block,
before any ordinary declarations or statements.
@@ -623,7 +623,7 @@ cannot be used: if the macro can be expanded several times in one
function, the label will be multiply defined in that function. A
local label avoids this problem. For example:
-@example
+@smallexample
#define SEARCH(value, array, target) \
do @{ \
__label__ found; \
@@ -638,11 +638,11 @@ do @{ \
(value) = -1; \
found:; \
@} while (0)
-@end example
+@end smallexample
This could also be written using a statement-expression:
-@example
+@smallexample
#define SEARCH(array, target) \
(@{ \
__label__ found; \
@@ -658,7 +658,7 @@ This could also be written using a statement-expression:
found: \
value; \
@})
-@end example
+@end smallexample
Local label declarations also make the labels they declare visible to
nested functions, if there are any. @xref{Nested Functions}, for details.
@@ -675,11 +675,11 @@ You can get the address of a label defined in the current function
value has type @code{void *}. This value is a constant and can be used
wherever a constant of that type is valid. For example:
-@example
+@smallexample
void *ptr;
/* @r{@dots{}} */
ptr = &&foo;
-@end example
+@end smallexample
To use these values, you need to be able to jump to one. This is done
with the computed goto statement@footnote{The analogous feature in
@@ -687,9 +687,9 @@ Fortran is called an assigned goto, but that name seems inappropriate in
C, where one can do more than simply store label addresses in label
variables.}, @code{goto *@var{exp};}. For example,
-@example
+@smallexample
goto *ptr;
-@end example
+@end smallexample
@noindent
Any expression of type @code{void *} is allowed.
@@ -697,15 +697,15 @@ Any expression of type @code{void *} is allowed.
One way of using these constants is in initializing a static array that
will serve as a jump table:
-@example
+@smallexample
static void *array[] = @{ &&foo, &&bar, &&hack @};
-@end example
+@end smallexample
Then you can select a label with indexing, like this:
-@example
+@smallexample
goto *array[i];
-@end example
+@end smallexample
@noindent
Note that this does not check whether the subscript is in bounds---array
@@ -727,11 +727,11 @@ never pass it as an argument.
An alternate way to write the above example is
-@example
+@smallexample
static const int array[] = @{ &&foo - &&foo, &&bar - &&foo,
&&hack - &&foo @};
goto *(&&foo + array[i]);
-@end example
+@end smallexample
@noindent
This is more friendly to code living in shared libraries, as it reduces
@@ -749,7 +749,7 @@ A @dfn{nested function} is a function defined inside another function.
name is local to the block where it is defined. For example, here we
define a nested function named @code{square}, and call it twice:
-@example
+@smallexample
@group
foo (double a, double b)
@{
@@ -758,14 +758,14 @@ foo (double a, double b)
return square (a) + square (b);
@}
@end group
-@end example
+@end smallexample
The nested function can access all the variables of the containing
function that are visible at the point of its definition. This is
called @dfn{lexical scoping}. For example, here we show a nested
function which uses an inherited variable named @code{offset}:
-@example
+@smallexample
@group
bar (int *array, int offset, int size)
@{
@@ -777,7 +777,7 @@ bar (int *array, int offset, int size)
/* @r{@dots{}} */ access (array, i) /* @r{@dots{}} */
@}
@end group
-@end example
+@end smallexample
Nested function definitions are permitted within functions in the places
where variable definitions are allowed; that is, in any block, before
@@ -786,7 +786,7 @@ the first statement in the block.
It is possible to call the nested function from outside the scope of its
name by storing its address or passing the address to another function:
-@example
+@smallexample
hack (int *array, int size)
@{
void store (int index, int value)
@@ -794,7 +794,7 @@ hack (int *array, int size)
intermediate (store, size);
@}
-@end example
+@end smallexample
Here, the function @code{intermediate} receives the address of
@code{store} as an argument. If @code{intermediate} calls @code{store},
@@ -822,7 +822,7 @@ function (@pxref{Local Labels}). Such a jump returns instantly to the
containing function, exiting the nested function which did the
@code{goto} and any intermediate functions as well. Here is an example:
-@example
+@smallexample
@group
bar (int *array, int offset, int size)
@{
@@ -846,14 +846,14 @@ bar (int *array, int offset, int size)
return -1;
@}
@end group
-@end example
+@end smallexample
A nested function always has internal linkage. Declaring one with
@code{extern} is erroneous. If you need to declare the nested function
before its definition, use @code{auto} (which is otherwise meaningless
for function declarations).
-@example
+@smallexample
bar (int *array, int offset, int size)
@{
__label__ failure;
@@ -867,7 +867,7 @@ bar (int *array, int offset, int size)
@}
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
@node Constructing Calls
@section Constructing Function Calls
@@ -938,9 +938,9 @@ construct acts semantically like a type name defined with @code{typedef}.
There are two ways of writing the argument to @code{typeof}: with an
expression or with a type. Here is an example with an expression:
-@example
+@smallexample
typeof (x[0](1))
-@end example
+@end smallexample
@noindent
This assumes that @code{x} is an array of pointers to functions;
@@ -948,9 +948,9 @@ the type described is that of the values of the functions.
Here is an example with a typename as the argument:
-@example
+@smallexample
typeof (int *)
-@end example
+@end smallexample
@noindent
Here the type described is that of pointers to @code{int}.
@@ -968,12 +968,12 @@ statements-within-expressions feature. Here is how the two together can
be used to define a safe ``maximum'' macro that operates on any
arithmetic type and evaluates each of its arguments exactly once:
-@example
+@smallexample
#define max(a,b) \
(@{ typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; @})
-@end example
+@end smallexample
@cindex underscores in variables in macros
@cindex @samp{_} in variables in macros
@@ -995,45 +995,45 @@ Some more examples of the use of @code{typeof}:
@item
This declares @code{y} with the type of what @code{x} points to.
-@example
+@smallexample
typeof (*x) y;
-@end example
+@end smallexample
@item
This declares @code{y} as an array of such values.
-@example
+@smallexample
typeof (*x) y[4];
-@end example
+@end smallexample
@item
This declares @code{y} as an array of pointers to characters:
-@example
+@smallexample
typeof (typeof (char *)[4]) y;
-@end example
+@end smallexample
@noindent
It is equivalent to the following traditional C declaration:
-@example
+@smallexample
char *y[4];
-@end example
+@end smallexample
To see the meaning of the declaration using @code{typeof}, and why it
might be a useful way to write, let's rewrite it with these macros:
-@example
+@smallexample
#define pointer(T) typeof(T *)
#define array(T, N) typeof(T [N])
-@end example
+@end smallexample
@noindent
Now the declaration can be rewritten this way:
-@example
+@smallexample
array (pointer (char), 4) y;
-@end example
+@end smallexample
@noindent
Thus, @code{array (pointer (char), 4)} is the type of arrays of 4
@@ -1043,9 +1043,9 @@ pointers to @code{char}.
@emph{Compatibility Note:} In addition to @code{typeof}, GCC 2 supported
a more limited extension which permitted one to write
-@example
+@smallexample
typedef @var{T} = @var{expr};
-@end example
+@end smallexample
@noindent
with the effect of declaring @var{T} to have the type of the expression
@@ -1053,9 +1053,9 @@ with the effect of declaring @var{T} to have the type of the expression
3.0 and 3.2 will crash; 3.2.1 and later give an error). Code which
relies on it should be rewritten to use @code{typeof}:
-@example
+@smallexample
typedef typeof(@var{expr}) @var{T};
-@end example
+@end smallexample
@noindent
This will work with all versions of GCC@.
@@ -1085,27 +1085,27 @@ For example, a compound expression can be assigned, provided the last
expression in the sequence is an lvalue. These two expressions are
equivalent:
-@example
+@smallexample
(a, b) += 5
a, (b += 5)
-@end example
+@end smallexample
Similarly, the address of the compound expression can be taken. These two
expressions are equivalent:
-@example
+@smallexample
&(a, b)
a, &b
-@end example
+@end smallexample
A conditional expression is a valid lvalue if its type is not void and the
true and false branches are both valid lvalues. For example, these two
expressions are equivalent:
-@example
+@smallexample
(a ? b : c) = 5
(a ? b = 5 : (c = 5))
-@end example
+@end smallexample
A cast is a valid lvalue if its operand is an lvalue. This extension
is deprecated. A simple
@@ -1116,20 +1116,20 @@ converted back to the specified type to become the value of the
assignment. Thus, if @code{a} has type @code{char *}, the following two
expressions are equivalent:
-@example
+@smallexample
(int)a = 5
(int)(a = (char *)(int)5)
-@end example
+@end smallexample
An assignment-with-arithmetic operation such as @samp{+=} applied to a cast
performs the arithmetic using the type resulting from the cast, and then
continues as in the previous case. Therefore, these two expressions are
equivalent:
-@example
+@smallexample
(int)a += 5
(int)(a = (char *)(int) ((int)a + 5))
-@end example
+@end smallexample
You cannot take the address of an lvalue cast, because the use of its
address would not work out coherently. Suppose that @code{&(int)f} were
@@ -1137,9 +1137,9 @@ permitted, where @code{f} has type @code{float}. Then the following
statement would try to store an integer bit-pattern where a floating
point number belongs:
-@example
+@smallexample
*&(int)f = 1;
-@end example
+@end smallexample
This is quite different from what @code{(int)f = 1} would do---that
would convert 1 to floating point and store it. Rather than cause this
@@ -1162,9 +1162,9 @@ expression.
Therefore, the expression
-@example
+@smallexample
x ? : y
-@end example
+@end smallexample
@noindent
has the value of @code{x} if that is nonzero; otherwise, the value of
@@ -1172,9 +1172,9 @@ has the value of @code{x} if that is nonzero; otherwise, the value of
This example is perfectly equivalent to
-@example
+@smallexample
x ? x : y
-@end example
+@end smallexample
@cindex side effect in ?:
@cindex ?: side effect
@@ -1312,7 +1312,7 @@ Zero-length arrays are allowed in GNU C@. They are very useful as the
last element of a structure which is really a header for a variable-length
object:
-@example
+@smallexample
struct line @{
int length;
char contents[0];
@@ -1321,7 +1321,7 @@ struct line @{
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
-@end example
+@end smallexample
In ISO C90, you would have to give @code{contents} a length of 1, which
means either you waste space or complicate the argument to @code{malloc}.
@@ -1365,7 +1365,7 @@ structure followed by an array of sufficient size to contain the data.
I.e.@: in the following, @code{f1} is constructed as if it were declared
like @code{f2}.
-@example
+@smallexample
struct f1 @{
int x; int y[];
@} f1 = @{ 1, @{ 2, 3, 4 @} @};
@@ -1373,7 +1373,7 @@ struct f1 @{
struct f2 @{
struct f1 f1; int data[3];
@} f2 = @{ @{ 1 @}, @{ 2, 3, 4 @} @};
-@end example
+@end smallexample
@noindent
The convenience of this extension is that @code{f1} has the desired
@@ -1389,7 +1389,7 @@ with initialization of deeply nested arrays, we simply disallow any
non-empty initialization except when the structure is the top-level
object. For example:
-@example
+@smallexample
struct foo @{ int x; int y[]; @};
struct bar @{ struct foo z; @};
@@ -1397,7 +1397,7 @@ struct foo a = @{ 1, @{ 2, 3, 4 @} @}; // @r{Valid.}
struct bar b = @{ @{ 1, @{ 2, 3, 4 @} @} @}; // @r{Invalid.}
struct bar c = @{ @{ 1, @{ @} @} @}; // @r{Valid.}
struct foo d[1] = @{ @{ 1 @{ 2, 3, 4 @} @} @}; // @r{Invalid.}
-@end example
+@end smallexample
@node Empty Structures
@section Structures With No Members
@@ -1406,10 +1406,10 @@ struct foo d[1] = @{ @{ 1 @{ 2, 3, 4 @} @} @}; // @r{Invalid.}
GCC permits a C structure to have no members:
-@example
+@smallexample
struct empty @{
@};
-@end example
+@end smallexample
The structure will have size zero. In C++, empty structures are part
of the language. G++ treats empty structures as if they had a single
@@ -1430,7 +1430,7 @@ a constant expression. The storage is allocated at the point of
declaration and deallocated when the brace-level is exited. For
example:
-@example
+@smallexample
FILE *
concat_fopen (char *s1, char *s2, char *mode)
@{
@@ -1439,7 +1439,7 @@ concat_fopen (char *s1, char *s2, char *mode)
strcat (str, s2);
return fopen (str, mode);
@}
-@end example
+@end smallexample
@cindex scope of a variable length array
@cindex variable-length array scope
@@ -1463,13 +1463,13 @@ will also deallocate anything more recently allocated with @code{alloca}.)
You can also use variable-length arrays as arguments to functions:
-@example
+@smallexample
struct entry
tester (int len, char data[len][len])
@{
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
The length of an array is computed once when the storage is allocated
and is remembered for the scope of the array in case you access it with
@@ -1478,13 +1478,13 @@ and is remembered for the scope of the array in case you access it with
If you want to pass the array first and the length afterward, you can
use a forward declaration in the parameter list---another GNU extension.
-@example
+@smallexample
struct entry
tester (int len; char data[len][len], int len)
@{
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
@cindex parameter forward declaration
The @samp{int len} before the semicolon is a @dfn{parameter forward
@@ -1524,9 +1524,9 @@ GCC has long supported variadic macros, and used a different syntax that
allowed you to give a name to the variable arguments just like any other
argument. Here is an example:
-@example
+@smallexample
#define debug(format, args...) fprintf (stderr, format, args)
-@end example
+@end smallexample
This is in all ways equivalent to the ISO C example above, but arguably
more readable and descriptive.
@@ -1539,9 +1539,9 @@ entirely; but you are allowed to pass an empty argument. For example,
this invocation is invalid in ISO C, because there is no comma after
the string:
-@example
+@smallexample
debug ("A message")
-@end example
+@end smallexample
GNU CPP permits you to completely omit the variable arguments in this
way. In the above examples, the compiler would complain, though since
@@ -1592,7 +1592,7 @@ subscripted in C89 mode, though otherwise they do not decay to
pointers outside C99 mode. For example,
this is valid in GNU C though not valid in C89:
-@example
+@smallexample
@group
struct foo @{int a[4];@};
@@ -1603,7 +1603,7 @@ bar (int index)
return f().a[index];
@}
@end group
-@end example
+@end smallexample
@node Pointer Arith
@section Arithmetic on @code{void}- and Function-Pointers
@@ -1632,13 +1632,13 @@ As in standard C++ and ISO C99, the elements of an aggregate initializer for an
automatic variable are not required to be constant expressions in GNU C@.
Here is an example of an initializer with run-time varying elements:
-@example
+@smallexample
foo (float f, float g)
@{
float beat_freqs[2] = @{ f-g, f+g @};
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
@node Compound Literals
@section Compound Literals
@@ -1658,26 +1658,26 @@ compound literals in C89 mode and in C++.
Usually, the specified type is a structure. Assume that
@code{struct foo} and @code{structure} are declared as shown:
-@example
+@smallexample
struct foo @{int a; char b[2];@} structure;
-@end example
+@end smallexample
@noindent
Here is an example of constructing a @code{struct foo} with a compound literal:
-@example
+@smallexample
structure = ((struct foo) @{x + y, 'a', 0@});
-@end example
+@end smallexample
@noindent
This is equivalent to writing the following:
-@example
+@smallexample
@{
struct foo temp = @{x + y, 'a', 0@};
structure = temp;
@}
-@end example
+@end smallexample
You can also construct an array. If all the elements of the compound literal
are (made up of) simple constant expressions, suitable for use in
@@ -1685,9 +1685,9 @@ initializers of objects of static storage duration, then the compound
literal can be coerced to a pointer to its first element and used in
such an initializer, as shown here:
-@example
+@smallexample
char **foo = (char *[]) @{ "x", "y", "z" @};
-@end example
+@end smallexample
Compound literals for scalar types and union types are is
also allowed, but then the compound literal is equivalent
@@ -1702,19 +1702,19 @@ The initializer list of the compound literal must be constant.
If the object being initialized has array type of unknown size, the size is
determined by compound literal size.
-@example
+@smallexample
static struct foo x = (struct foo) @{1, 'a', 'b'@};
static int y[] = (int []) @{1, 2, 3@};
static int z[] = (int [3]) @{1@};
-@end example
+@end smallexample
@noindent
The above lines are equivalent to the following:
-@example
+@smallexample
static struct foo x = @{1, 'a', 'b'@};
static int y[] = @{1, 2, 3@};
static int z[] = @{1, 0, 0@};
-@end example
+@end smallexample
@node Designated Inits
@section Designated Initializers
@@ -1735,16 +1735,16 @@ implemented in GNU C++.
To specify an array index, write
@samp{[@var{index}] =} before the element value. For example,
-@example
+@smallexample
int a[6] = @{ [4] = 29, [2] = 15 @};
-@end example
+@end smallexample
@noindent
is equivalent to
-@example
+@smallexample
int a[6] = @{ 0, 0, 15, 0, 29, 0 @};
-@end example
+@end smallexample
@noindent
The index values must be constant expressions, even if the array being
@@ -1758,9 +1758,9 @@ To initialize a range of elements to the same value, write
@samp{[@var{first} ... @var{last}] = @var{value}}. This is a GNU
extension. For example,
-@example
+@smallexample
int widths[] = @{ [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 @};
-@end example
+@end smallexample
@noindent
If the value in it has side-effects, the side-effects will happen only once,
@@ -1774,30 +1774,30 @@ In a structure initializer, specify the name of a field to initialize
with @samp{.@var{fieldname} =} before the element value. For example,
given the following structure,
-@example
+@smallexample
struct point @{ int x, y; @};
-@end example
+@end smallexample
@noindent
the following initialization
-@example
+@smallexample
struct point p = @{ .y = yvalue, .x = xvalue @};
-@end example
+@end smallexample
@noindent
is equivalent to
-@example
+@smallexample
struct point p = @{ xvalue, yvalue @};
-@end example
+@end smallexample
Another syntax which has the same meaning, obsolete since GCC 2.5, is
@samp{@var{fieldname}:}, as shown here:
-@example
+@smallexample
struct point p = @{ y: yvalue, x: xvalue @};
-@end example
+@end smallexample
@cindex designators
The @samp{[@var{index}]} or @samp{.@var{fieldname}} is known as a
@@ -1805,11 +1805,11 @@ The @samp{[@var{index}]} or @samp{.@var{fieldname}} is known as a
syntax) when initializing a union, to specify which element of the union
should be used. For example,
-@example
+@smallexample
union foo @{ int i; double d; @};
union foo f = @{ .d = 4 @};
-@end example
+@end smallexample
@noindent
will convert 4 to a @code{double} to store it in the union using
@@ -1822,26 +1822,26 @@ initialization of successive elements. Each initializer element that
does not have a designator applies to the next consecutive element of the
array or structure. For example,
-@example
+@smallexample
int a[6] = @{ [1] = v1, v2, [4] = v4 @};
-@end example
+@end smallexample
@noindent
is equivalent to
-@example
+@smallexample
int a[6] = @{ 0, v1, v2, 0, v4, 0 @};
-@end example
+@end smallexample
Labeling the elements of an array initializer is especially useful
when the indices are characters or belong to an @code{enum} type.
For example:
-@example
+@smallexample
int whitespace[256]
= @{ [' '] = 1, ['\t'] = 1, ['\h'] = 1,
['\f'] = 1, ['\n'] = 1, ['\r'] = 1 @};
-@end example
+@end smallexample
@cindex designator lists
You can also write a series of @samp{.@var{fieldname}} and
@@ -1868,9 +1868,9 @@ Currently, gcc will discard them and issue a warning.
You can specify a range of consecutive values in a single @code{case} label,
like this:
-@example
+@smallexample
case @var{low} ... @var{high}:
-@end example
+@end smallexample
@noindent
This has the same effect as the proper number of individual @code{case}
@@ -1878,24 +1878,24 @@ labels, one for each integer value from @var{low} to @var{high}, inclusive.
This feature is especially useful for ranges of ASCII character codes:
-@example
+@smallexample
case 'A' ... 'Z':
-@end example
+@end smallexample
@strong{Be careful:} Write spaces around the @code{...}, for otherwise
it may be parsed wrong when you use it with integer values. For example,
write this:
-@example
+@smallexample
case 1 ... 5:
-@end example
+@end smallexample
@noindent
rather than this:
-@example
+@smallexample
case 1...5:
-@end example
+@end smallexample
@node Cast to Union
@section Cast to a Union Type
@@ -1911,11 +1911,11 @@ normal casts. (@xref{Compound Literals}.)
The types that may be cast to the union type are those of the members
of the union. Thus, given the following union and variables:
-@example
+@smallexample
union foo @{ int i; double d; @};
int x;
double y;
-@end example
+@end smallexample
@noindent
both @code{x} and @code{y} can be cast to type @code{union foo}.
@@ -1923,20 +1923,20 @@ both @code{x} and @code{y} can be cast to type @code{union foo}.
Using the cast as the right-hand side of an assignment to a variable of
union type is equivalent to storing in a member of the union:
-@example
+@smallexample
union foo u;
/* @r{@dots{}} */
u = (union foo) x @equiv{} u.i = x
u = (union foo) y @equiv{} u.d = y
-@end example
+@end smallexample
You can also use the union cast as a function argument:
-@example
+@smallexample
void hack (union foo);
/* @r{@dots{}} */
hack ((union foo) x);
-@end example
+@end smallexample
@node Mixed Declarations
@section Mixed Declarations and Code
@@ -1948,12 +1948,12 @@ ISO C99 and ISO C++ allow declarations and code to be freely mixed
within compound statements. As an extension, GCC also allows this in
C89 mode. For example, you could do:
-@example
+@smallexample
int i;
/* @r{@dots{}} */
i++;
int j = i + 2;
-@end example
+@end smallexample
Each identifier is visible from where it is declared until the end of
the enclosing block.
@@ -2394,7 +2394,7 @@ See the ELF gABI for complete details, but the short story is:
@table @dfn
@item default
-Default visibility is the normal case for ELF. This value is
+Default visibility is the normal case for ELF. This value is
available for the visibility attribute to override other options
that may change the assumed visibility of symbols.
@@ -2451,7 +2451,7 @@ pass arguments, unless it takes a variable number of arguments.
@cindex functions that pop the argument stack on the 386
On the Intel 386, the @code{fastcall} attribute causes the compiler to
pass the first two arguments in the registers ECX and EDX. Subsequent
-arguments are passed on the stack. The called function will pop the
+arguments are passed on the stack. The called function will pop the
arguments off the stack. If the number of arguments is variable all
arguments are pushed on the stack.
@@ -2636,9 +2636,9 @@ option.
@item dllimport
@cindex @code{__declspec(dllimport)}
-On Windows targets, the @code{dllimport} attribute causes the compiler
+On Microsoft Windows targets, the @code{dllimport} attribute causes the compiler
to reference a function or variable via a global pointer to a pointer
-that is set up by the Windows dll library. The pointer name is formed by
+that is set up by the Microsoft Windows dll library. The pointer name is formed by
combining @code{_imp__} and the function or variable name. The attribute
implies @code{extern} storage.
@@ -2647,7 +2647,7 @@ attribute is applied to a symbol @emph{definition}, an error is reported.
If a symbol previously declared @code{dllimport} is later defined, the
attribute is ignored in subsequent references, and a warning is emitted.
The attribute is also overridden by a subsequent declaration as
-@code{dllexport}.
+@code{dllexport}.
When applied to C++ classes, the attribute marks non-inlined
member functions and static data members as imports. However, the
@@ -2656,14 +2656,14 @@ using thunks.
On cygwin, mingw and arm-pe targets, @code{__declspec(dllimport)} is
recognized as a synonym for @code{__attribute__ ((dllimport))} for
-compatibility with other Windows compilers.
+compatibility with other Microsoft Windows compilers.
The use of the @code{dllimport} attribute on functions is not necessary,
but provides a small performance benefit by eliminating a thunk in the
dll. The use of the @code{dllimport} attribute on imported variables was
required on older versions of GNU ld, but can now be avoided by passing
the @option{--enable-auto-import} switch to ld. As with functions, using
-the attribute for a variable eliminates a thunk in the dll.
+the attribute for a variable eliminates a thunk in the dll.
One drawback to using this attribute is that a pointer to a function or
variable marked as dllimport cannot be used as a constant address. The
@@ -2672,7 +2672,7 @@ attribute can be disabled for functions by setting the
@item dllexport
@cindex @code{__declspec(dllexport)}
-On Windows targets the @code{dllexport} attribute causes the compiler to
+On Microsoft Windows targets the @code{dllexport} attribute causes the compiler to
provide a global pointer to a pointer in a dll, so that it can be
referenced with the @code{dllimport} attribute. The pointer name is
formed by combining @code{_imp__} and the function or variable name.
@@ -2689,7 +2689,7 @@ out-of-class.
On cygwin, mingw and arm-pe targets, @code{__declspec(dllexport)} is
recognized as a synonym for @code{__attribute__ ((dllexport))} for
-compatibility with other Windows compilers.
+compatibility with other Microsoft Windows compilers.
Alternative methods for including the symbol in the dll's export table
are to use a .def file with an @code{EXPORTS} section or, with GNU ld,
@@ -2974,7 +2974,7 @@ to the function type.
GNU C extends ISO C to allow a function prototype to override a later
old-style non-prototype definition. Consider the following example:
-@example
+@smallexample
/* @r{Use prototypes unless the compiler is old-fashioned.} */
#ifdef __STDC__
#define P(x) x
@@ -2992,7 +2992,7 @@ isroot (x) /* ??? lossage here ??? */
@{
return x == 0;
@}
-@end example
+@end smallexample
Suppose the type @code{uid_t} happens to be @code{short}. ISO C does
not allow this example, because subword arguments in old-style
@@ -3010,7 +3010,7 @@ by a later old-style definition if the former type is the same as the
latter type before promotion. Thus in GNU C the above example is
equivalent to the following:
-@example
+@smallexample
int isroot (uid_t);
int
@@ -3018,7 +3018,7 @@ isroot (uid_t x)
@{
return x == 0;
@}
-@end example
+@end smallexample
@noindent
GNU C++ does not support old-style function definitions, so this
@@ -3079,9 +3079,9 @@ any minimum alignment specified with GCC's @code{__attribute__}
extension (@pxref{Variable Attributes}). For example, after this
declaration:
-@example
+@smallexample
struct foo @{ int x; char y; @} foo1;
-@end example
+@end smallexample
@noindent
the value of @code{__alignof__ (foo1.y)} is 1, even though its actual
@@ -3196,7 +3196,7 @@ The @code{common} attribute requests GCC to place a variable in
``common'' storage. The @code{nocommon} attribute requests the
opposite -- to allocate space for it directly.
-These attributes override the default chosen by the
+These attributes override the default chosen by the
@option{-fno-common} and @option{-fcommon} flags respectively.
@item deprecated
@@ -3241,13 +3241,13 @@ and one bit for a field, unless you specify a larger value with the
Here is a structure in which the field @code{x} is packed, so that it
immediately follows @code{a}:
-@example
+@smallexample
struct foo
@{
char a;
int x[2] __attribute__ ((packed));
@};
-@end example
+@end smallexample
@item section ("@var{section-name}")
@cindex @code{section} variable attribute
@@ -3299,7 +3299,7 @@ section, consider using the facilities of the linker instead.
@item shared
@cindex @code{shared} variable attribute
-On Windows, in addition to putting variable definitions in a named
+On Microsoft Windows, in addition to putting variable definitions in a named
section, the section can also be shared among all running copies of an
executable or DLL@. For example, this small program defines shared data
by putting it in a named section @code{shared} and marking the section
@@ -3322,7 +3322,7 @@ You may only use the @code{shared} attribute along with @code{section}
attribute with a fully initialized global definition because of the way
linkers work. See @code{section} attribute for more information.
-The @code{shared} attribute is only available on Windows@.
+The @code{shared} attribute is only available on Microsoft Windows@.
@item tls_model ("@var{tls_model}")
@cindex @code{tls_model} attribute
@@ -3425,7 +3425,7 @@ data between functions compiled with GCC and the native Microsoft compiler
(either via function call or as data in a file), it may be necessary to access
either format.
-Currently @option{-m[no-]ms-bitfields} is provided for the Windows X86
+Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows X86
compilers to match the native Microsoft compiler.
@end table
@@ -3622,19 +3622,19 @@ This interface allows either @code{int *} or @code{union wait *}
arguments to be passed, using the @code{int *} calling convention.
The program can call @code{wait} with arguments of either type:
-@example
+@smallexample
int w1 () @{ int w; return wait (&w); @}
int w2 () @{ union wait w; return wait (&w); @}
-@end example
+@end smallexample
With this interface, @code{wait}'s implementation might look like this:
-@example
+@smallexample
pid_t wait (wait_status_ptr_t p)
@{
return waitpid (-1, p.__ip, 0);
@}
-@end example
+@end smallexample
@item unused
When attached to a type (including a @code{union} or a @code{struct}),
@@ -3721,7 +3721,7 @@ data between functions compiled with GCC and the native Microsoft compiler
(either via function call or as data in a file), it may be necessary to access
either format.
-Currently @option{-m[no-]ms-bitfields} is provided for the Windows X86
+Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows X86
compilers to match the native Microsoft compiler.
@end table
@@ -3754,13 +3754,13 @@ the ISO C99 standard requires.
To declare a function inline, use the @code{inline} keyword in its
declaration, like this:
-@example
+@smallexample
inline int
inc (int *a)
@{
(*a)++;
@}
-@end example
+@end smallexample
(If you are writing a header file to be included in ISO C programs, write
@code{__inline__} instead of @code{inline}. @xref{Alternate Keywords}.)
@@ -3835,10 +3835,10 @@ that will implement the C99 semantics, though it does not do so yet.)
GCC does not inline any functions when not optimizing unless you specify
the @samp{always_inline} attribute for the function, like this:
-@example
+@smallexample
/* Prototype. */
inline void foo (const char) __attribute__((always_inline));
-@end example
+@end smallexample
@node Extended Asm
@section Assembler Instructions with C Expression Operands
@@ -3858,9 +3858,9 @@ each operand.
For example, here is how to use the 68881's @code{fsinx} instruction:
-@example
+@smallexample
asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
-@end example
+@end smallexample
@noindent
Here @code{angle} is the C expression for the input operand while
@@ -3890,11 +3890,11 @@ assembler code using @code{%[@var{name}]} instead of a percentage sign
followed by the operand number. Using named operands the above example
could look like:
-@example
+@smallexample
asm ("fsinx %[angle],%[output]"
: [output] "=f" (result)
: [angle] "f" (angle));
-@end example
+@end smallexample
@noindent
Note that the symbolic operand names have no relation whatsoever to
@@ -3932,9 +3932,9 @@ different expressions. For example, here we write the (fictitious)
@samp{combine} instruction with @code{bar} as its read-only source
operand and @code{foo} as its read-write destination:
-@example
+@smallexample
asm ("combine %2,%0" : "=r" (foo) : "0" (foo), "g" (bar));
-@end example
+@end smallexample
@noindent
The constraint @samp{"0"} for operand 1 says that it must occupy the
@@ -3947,9 +3947,9 @@ of both operands is not enough to guarantee that they will be in the
same place in the generated assembler code. The following would not
work reliably:
-@example
+@smallexample
asm ("combine %2,%0" : "=r" (foo) : "r" (foo), "g" (bar));
-@end example
+@end smallexample
Various optimizations or reloading could cause operands 0 and 1 to be in
different registers; GCC knows no reason not to do so. For example, the
@@ -3962,23 +3962,23 @@ code, the result will not work, but GCC can't tell that.
As of GCC version 3.1, one may write @code{[@var{name}]} instead of
the operand number for a matching constraint. For example:
-@example
+@smallexample
asm ("cmoveq %1,%2,%[result]"
: [result] "=r"(result)
: "r" (test), "r"(new), "[result]"(old));
-@end example
+@end smallexample
Some instructions clobber specific hard registers. To describe this,
write a third colon after the input operands, followed by the names of
the clobbered hard registers (given as strings). Here is a realistic
example for the VAX:
-@example
+@smallexample
asm volatile ("movc3 %0,%1,%2"
: /* no outputs */
: "g" (from), "g" (to), "g" (count)
: "r0", "r1", "r2", "r3", "r4", "r5");
-@end example
+@end smallexample
You may not write a clobber description in a way that overlaps with an
input or output operand. For example, you may not have an operand
@@ -4006,13 +4006,35 @@ represents the condition codes as a specific hardware register;
condition code is handled differently, and specifying @samp{cc} has no
effect. But it is valid no matter what the machine.
-If your assembler instruction modifies memory in an unpredictable
+If your assembler instructions access memory in an unpredictable
fashion, add @samp{memory} to the list of clobbered registers. This
-will cause GCC to not keep memory values cached in registers across
-the assembler instruction. You will also want to add the
-@code{volatile} keyword if the memory affected is not listed in the
-inputs or outputs of the @code{asm}, as the @samp{memory} clobber does
-not count as a side-effect of the @code{asm}.
+will cause GCC to not keep memory values cached in registers across the
+assembler instruction and not optimize stores or loads to that memory.
+You will also want to add the @code{volatile} keyword if the memory
+affected is not listed in the inputs or outputs of the @code{asm}, as
+the @samp{memory} clobber does not count as a side-effect of the
+@code{asm}. If you know how large the accessed memory is, you can add
+it as input or output but if this is not known, you should add
+@samp{memory}. As an example, if you access ten bytes of a string, you
+can use a memory input like:
+
+@example
+@{"m"( (@{ struct @{ char x[10]; @} *p = (void *)ptr ; *p; @}) )@}.
+@end example
+
+Note that in the following example the memory input is necessary,
+otherwise GCC might optimize the store to @code{x} away:
+@example
+int foo ()
+@{
+ int x = 42;
+ int *y = &x;
+ int result;
+ asm ("magic stuff accessing an 'int' pointed to by '%1'"
+ "=&d" (r) : "a" (y), "m" (*y));
+ return result;
+@}
+@end example
You can put multiple assembler instructions together in a single
@code{asm} template, separated by the characters normally used in assembly
@@ -4027,12 +4049,12 @@ read and write the clobbered registers as many times as you like. Here
is an example of multiple instructions in a template; it assumes the
subroutine @code{_foo} accepts arguments in registers 9 and 10:
-@example
+@smallexample
asm ("movl %0,r9\n\tmovl %1,r10\n\tcall _foo"
: /* no outputs */
: "g" (from), "g" (to)
: "r9", "r10");
-@end example
+@end smallexample
Unless an output operand has the @samp{&} constraint modifier, GCC
may allocate it in the same register as an unrelated input operand, on
@@ -4045,11 +4067,11 @@ If you want to test the condition code produced by an assembler
instruction, you must include a branch and a label in the @code{asm}
construct, as follows:
-@example
+@smallexample
asm ("clr %0\n\tfrob %1\n\tbeq 0f\n\tmov #1,%0\n0:"
: "g" (result)
: "g" (input));
-@end example
+@end smallexample
@noindent
This assumes your assembler supports local labels, as the GNU assembler
@@ -4064,12 +4086,12 @@ optimize.
Usually the most convenient way to use these @code{asm} instructions is to
encapsulate them in macros that look like functions. For example,
-@example
+@smallexample
#define sin(x) \
(@{ double __value, __arg = (x); \
asm ("fsinx %1,%0": "=f" (__value): "f" (__arg)); \
__value; @})
-@end example
+@end smallexample
@noindent
Here the variable @code{__arg} is used to make sure that the instruction
@@ -4098,13 +4120,13 @@ You can prevent an @code{asm} instruction from being deleted, moved
significantly, or combined, by writing the keyword @code{volatile} after
the @code{asm}. For example:
-@example
+@smallexample
#define get_and_set_priority(new) \
(@{ int __old; \
asm volatile ("get_and_set_priority %0, %1" \
: "=g" (__old) : "g" (new)); \
__old; @})
-@end example
+@end smallexample
@noindent
If you write an @code{asm} instruction with no outputs, GCC will know
@@ -4118,10 +4140,10 @@ prove that control-flow will never reach the location of the
instruction.) In addition, GCC will not reschedule instructions
across a volatile @code{asm} instruction. For example:
-@example
+@smallexample
*(volatile int *)addr = foo;
asm volatile ("eieio" : : );
-@end example
+@end smallexample
@noindent
Assume @code{addr} contains the address of a memory mapped device
@@ -4209,9 +4231,9 @@ the reg-stack than any input that is not implicitly popped.
It is possible that if an input dies in an insn, reload might
use the input reg for an output reload. Consider this example:
-@example
+@smallexample
asm ("foo" : "=t" (a) : "f" (b));
-@end example
+@end smallexample
This asm says that input B is not popped by the asm, and that
the asm pushes a result onto the reg-stack, i.e., the stack is one
@@ -4224,9 +4246,9 @@ constraints must use the @code{&} earlyclobber.
The asm above would be written as
-@example
+@smallexample
asm ("foo" : "=&t" (a) : "f" (b));
-@end example
+@end smallexample
@item
Some operands need to be in particular places on the stack. All
@@ -4257,17 +4279,17 @@ unrelated to the inputs and outputs.
Here are a couple of reasonable asms to want to write. This asm
takes one input, which is internally popped, and produces two outputs.
-@example
+@smallexample
asm ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp));
-@end example
+@end smallexample
This asm takes two inputs, which are popped by the @code{fyl2xp1} opcode,
and replaces them with one output. The user must code the @code{st(1)}
clobber for reg-stack.c to know that @code{fyl2xp1} pops both inputs.
-@example
+@smallexample
asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
-@end example
+@end smallexample
@include md.texi
@@ -4281,9 +4303,9 @@ You can specify the name to be used in the assembler code for a C
function or variable by writing the @code{asm} (or @code{__asm__})
keyword after the declarator as follows:
-@example
+@smallexample
int foo asm ("myfoo") = 2;
-@end example
+@end smallexample
@noindent
This specifies that the name to be used for the variable @code{foo} in
@@ -4305,13 +4327,13 @@ You cannot use @code{asm} in this way in a function @emph{definition}; but
you can get the same effect by writing a declaration for the function
before its definition and putting @code{asm} there, like this:
-@example
+@smallexample
extern func () asm ("FUNC");
func (x, y)
int x, y;
/* @r{@dots{}} */
-@end example
+@end smallexample
It is up to you to make sure that the assembler names you choose do not
conflict with any other assembler symbols. Also, you must not use a
@@ -4364,9 +4386,9 @@ specified for that operand in the @code{asm}.)
You can define a global register variable in GNU C like this:
-@example
+@smallexample
register int *foo asm ("a5");
-@end example
+@end smallexample
@noindent
Here @code{a5} is the name of the register which should be used. Choose a
@@ -4463,9 +4485,9 @@ Of course, it will not do to use more than a few of those.
You can define a local register variable with a specified register
like this:
-@example
+@smallexample
register int *foo asm ("a5");
-@end example
+@end smallexample
@noindent
Here @code{a5} is the name of the register which should be used. Note
@@ -4522,11 +4544,11 @@ Other C compilers won't accept these alternative keywords; if you want to
compile with another compiler, you can define the alternate keywords as
macros to replace them with the customary keywords. It looks like this:
-@example
+@smallexample
#ifndef __GNUC__
#define __asm__ asm
#endif
-@end example
+@end smallexample
@findex __extension__
@opindex pedantic
@@ -4700,9 +4722,9 @@ this way.
The first step in using these extensions is to provide the necessary data
types. This should be done using an appropriate @code{typedef}:
-@example
+@smallexample
typedef int v4si __attribute__ ((mode(V4SI)));
-@end example
+@end smallexample
The base type @code{int} is effectively ignored by the compiler, the
actual properties of the new type @code{v4si} are defined by the
@@ -4742,13 +4764,13 @@ example, in the code below, each of the 4 elements in @var{a} will be
added to the corresponding 4 elements in @var{b} and the resulting
vector will be stored in @var{c}.
-@example
+@smallexample
typedef int v4si __attribute__ ((mode(V4SI)));
v4si a, b, c;
c = a + b;
-@end example
+@end smallexample
Subtraction, multiplication, division, and the logical operations
operate in a similar manner. Likewise, the result of using the unary
@@ -4771,14 +4793,14 @@ of built-in functions that can be used to operate on vectors. For
example, a function to add two vectors and multiply the result by a
third could look like this:
-@example
+@smallexample
v4si f (v4si a, v4si b, v4si c)
@{
v4si tmp = __builtin_addv4si (a, b);
return __builtin_mulv4si (tmp, c);
@}
-@end example
+@end smallexample
@node Other Builtins
@section Other built-in functions provided by GCC
@@ -5501,7 +5523,7 @@ do not implement, a description of the parsing is in order. The string
is parsed as by @code{strtol}; that is, the base is recognized by
leading @samp{0} or @samp{0x} prefixes. The number parsed is placed
in the significand such that the least significant bit of the number
-is at the least significant bit of the significand. The number is
+is at the least significant bit of the significand. The number is
truncated to fit the significand field provided. The significand is
forced to be a quiet NaN.
@@ -5518,7 +5540,7 @@ Similar to @code{__builtin_nan}, except the return type is @code{long double}.
@end deftypefn
@deftypefn {Built-in Function} double __builtin_nans (const char *str)
-Similar to @code{__builtin_nan}, except the significand is forced
+Similar to @code{__builtin_nan}, except the significand is forced
to be a signaling NaN. The @code{nans} function is proposed by
@uref{http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n965.htm,,WG14 N965}.
@end deftypefn
@@ -5629,7 +5651,7 @@ processors, depending on the command-line switches used.
The following built-in functions are always available. They
all generate the machine instruction that is part of the name.
-@example
+@smallexample
long __builtin_alpha_implver (void)
long __builtin_alpha_rpcc (void)
long __builtin_alpha_amask (long)
@@ -5658,14 +5680,14 @@ long __builtin_alpha_mskqh (long, long)
long __builtin_alpha_umulh (long, long)
long __builtin_alpha_zap (long, long)
long __builtin_alpha_zapnot (long, long)
-@end example
+@end smallexample
The following built-in functions are always with @option{-mmax}
or @option{-mcpu=@var{cpu}} where @var{cpu} is @code{pca56} or
later. They all generate the machine instruction that is part
of the name.
-@example
+@smallexample
long __builtin_alpha_pklb (long)
long __builtin_alpha_pkwb (long)
long __builtin_alpha_unpkbl (long)
@@ -5679,28 +5701,28 @@ long __builtin_alpha_maxsb8 (long, long)
long __builtin_alpha_maxuw4 (long, long)
long __builtin_alpha_maxsw4 (long, long)
long __builtin_alpha_perr (long, long)
-@end example
+@end smallexample
The following built-in functions are always with @option{-mcix}
or @option{-mcpu=@var{cpu}} where @var{cpu} is @code{ev67} or
later. They all generate the machine instruction that is part
of the name.
-@example
+@smallexample
long __builtin_alpha_cttz (long)
long __builtin_alpha_ctlz (long)
long __builtin_alpha_ctpop (long)
-@end example
+@end smallexample
The following builtins are available on systems that use the OSF/1
PALcode. Normally they invoke the @code{rduniq} and @code{wruniq}
PAL calls, but when invoked with @option{-mtls-kernel}, they invoke
@code{rdval} and @code{wrval}.
-@example
+@smallexample
void *__builtin_thread_pointer (void)
void __builtin_set_thread_pointer (void *)
-@end example
+@end smallexample
@node ARM Built-in Functions
@subsection ARM Built-in Functions
@@ -5708,7 +5730,7 @@ void __builtin_set_thread_pointer (void *)
These built-in functions are available for the ARM family of
processors, when the @option{-mcpu=iwmmxt} switch is used:
-@example
+@smallexample
typedef int __v2si __attribute__ ((__mode__ (__V2SI__)))
v2si __builtin_arm_waddw (v2si, v2si)
@@ -5858,7 +5880,7 @@ v2si __builtin_arm_wunpckeluw (v2si)
v2si __builtin_arm_wsubwss (v2si, v2si)
v2si __builtin_arm_wsraw (v2si, v2si)
v2si __builtin_arm_wsrad (v2si, v2si)
-@end example
+@end smallexample
@node X86 Built-in Functions
@subsection X86 Built-in Functions
@@ -5884,7 +5906,7 @@ entire vector register, interpreting it as a 128-bit integer, these use mode
The following built-in functions are made available by @option{-mmmx}.
All of them generate the machine instruction that is part of the name.
-@example
+@smallexample
v8qi __builtin_ia32_paddb (v8qi, v8qi)
v4hi __builtin_ia32_paddw (v4hi, v4hi)
v2si __builtin_ia32_paddd (v2si, v2si)
@@ -5920,14 +5942,14 @@ v2si __builtin_ia32_punpckldq (v2si, v2si)
v8qi __builtin_ia32_packsswb (v4hi, v4hi)
v4hi __builtin_ia32_packssdw (v2si, v2si)
v8qi __builtin_ia32_packuswb (v4hi, v4hi)
-@end example
+@end smallexample
The following built-in functions are made available either with
@option{-msse}, or with a combination of @option{-m3dnow} and
@option{-march=athlon}. All of them generate the machine
instruction that is part of the name.
-@example
+@smallexample
v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)
v8qi __builtin_ia32_pavgb (v8qi, v8qi)
v4hi __builtin_ia32_pavgw (v4hi, v4hi)
@@ -5942,12 +5964,12 @@ int __builtin_ia32_pmovmskb (v8qi)
void __builtin_ia32_maskmovq (v8qi, v8qi, char *)
void __builtin_ia32_movntq (di *, di)
void __builtin_ia32_sfence (void)
-@end example
+@end smallexample
The following built-in functions are available when @option{-msse} is used.
All of them generate the machine instruction that is part of the name.
-@example
+@smallexample
int __builtin_ia32_comieq (v4sf, v4sf)
int __builtin_ia32_comineq (v4sf, v4sf)
int __builtin_ia32_comilt (v4sf, v4sf)
@@ -6016,7 +6038,7 @@ v4sf __builtin_ia32_sqrtss (v4sf)
v4sf __builtin_ia32_shufps (v4sf, v4sf, int)
void __builtin_ia32_movntps (float *, v4sf)
int __builtin_ia32_movmskps (v4sf)
-@end example
+@end smallexample
The following built-in functions are available when @option{-msse} is used.
@@ -6043,10 +6065,10 @@ Generates the @code{movhps} machine instruction as a store to memory.
Generates the @code{movlps} machine instruction as a store to memory.
@end table
-The following built-in functions are available when @option{-mpni} is used.
+The following built-in functions are available when @option{-msse3} is used.
All of them generate the machine instruction that is part of the name.
-@example
+@smallexample
v2df __builtin_ia32_addsubpd (v2df, v2df)
v2df __builtin_ia32_addsubps (v2df, v2df)
v2df __builtin_ia32_haddpd (v2df, v2df)
@@ -6059,9 +6081,9 @@ v2df __builtin_ia32_movddup (v2df)
v4sf __builtin_ia32_movshdup (v4sf)
v4sf __builtin_ia32_movsldup (v4sf)
void __builtin_ia32_mwait (unsigned int, unsigned int)
-@end example
+@end smallexample
-The following built-in functions are available when @option{-mpni} is used.
+The following built-in functions are available when @option{-msse3} is used.
@table @code
@item v2df __builtin_ia32_loadddup (double const *)
@@ -6071,7 +6093,7 @@ Generates the @code{movddup} machine instruction as a load from memory.
The following built-in functions are available when @option{-m3dnow} is used.
All of them generate the machine instruction that is part of the name.
-@example
+@smallexample
void __builtin_ia32_femms (void)
v8qi __builtin_ia32_pavgusb (v8qi, v8qi)
v2si __builtin_ia32_pf2id (v2sf)
@@ -6092,20 +6114,20 @@ v2sf __builtin_ia32_pfsub (v2sf, v2sf)
v2sf __builtin_ia32_pfsubr (v2sf, v2sf)
v2sf __builtin_ia32_pi2fd (v2si)
v4hi __builtin_ia32_pmulhrw (v4hi, v4hi)
-@end example
+@end smallexample
The following built-in functions are available when both @option{-m3dnow}
and @option{-march=athlon} are used. All of them generate the machine
instruction that is part of the name.
-@example
+@smallexample
v2si __builtin_ia32_pf2iw (v2sf)
v2sf __builtin_ia32_pfnacc (v2sf, v2sf)
v2sf __builtin_ia32_pfpnacc (v2sf, v2sf)
v2sf __builtin_ia32_pi2fw (v2si)
v2sf __builtin_ia32_pswapdsf (v2sf)
v2si __builtin_ia32_pswapdsi (v2si)
-@end example
+@end smallexample
@node PowerPC AltiVec Built-in Functions
@subsection PowerPC AltiVec Built-in Functions
@@ -7346,7 +7368,7 @@ For compatibility with other compilers, GCC allows you to define
a structure or union that contains, as fields, structures and unions
without names. For example:
-@example
+@smallexample
struct @{
int a;
union @{
@@ -7355,7 +7377,7 @@ struct @{
@};
int d;
@} foo;
-@end example
+@end smallexample
In this example, the user would be able to access members of the unnamed
union with code like @samp{foo.b}. Note that only unnamed structs and
@@ -7365,14 +7387,14 @@ unions are allowed, you may not have, for example, an unnamed
You must never create such structures that cause ambiguous field definitions.
For example, this structure:
-@example
+@smallexample
struct @{
int a;
struct @{
int a;
@};
@} foo;
-@end example
+@end smallexample
It is ambiguous which @code{a} is being referred to with @samp{foo.a}.
Such constructs are not supported and must be avoided. In the future,
@@ -7396,11 +7418,11 @@ is not available everywhere.
At the user level, the extension is visible with a new storage
class keyword: @code{__thread}. For example:
-@example
+@smallexample
__thread int i;
extern __thread struct state s;
static __thread char *p;
-@end example
+@end smallexample
The @code{__thread} specifier may be used alone, with the @code{extern}
or @code{static} specifiers, but with no other storage class specifier.
@@ -7694,9 +7716,9 @@ These operations are not primitive in ordinary C++, since you can
use a macro to return the minimum of two things in C++, as in the
following example.
-@example
+@smallexample
#define MIN(X,Y) ((X) < (Y) ? : (X) : (Y))
-@end example
+@end smallexample
@noindent
You might then use @w{@samp{int min = MIN (i, j);}} to set @var{min} to
@@ -7741,11 +7763,11 @@ within a sequence point.
In most expressions, it is intuitively obvious what is a read and what is
a write. For instance
-@example
+@smallexample
volatile int *dst = @var{somevalue};
volatile int *src = @var{someothervalue};
*dst = *src;
-@end example
+@end smallexample
@noindent
will cause a read of the volatile object pointed to by @var{src} and stores the
@@ -7756,10 +7778,10 @@ larger than @code{int}.
Less obvious expressions are where something which looks like an access
is used in a void context. An example would be,
-@example
+@smallexample
volatile int *src = @var{somevalue};
*src;
-@end example
+@end smallexample
With C, such expressions are rvalues, and as rvalues cause a read of
the object, GCC interprets this as a read of the volatile being pointed
@@ -7774,14 +7796,14 @@ pointer to volatile object of complete type in a void context as a read
of the object. When the object has incomplete type, G++ issues a
warning.
-@example
+@smallexample
struct S;
struct T @{int m;@};
volatile S *ptr1 = @var{somevalue};
volatile T *ptr2 = @var{somevalue};
*ptr1;
*ptr2;
-@end example
+@end smallexample
In this example, a warning is issued for @code{*ptr1}, and @code{*ptr2}
causes a read of the object pointed to. If you wish to force an error on
@@ -7811,12 +7833,12 @@ In addition to allowing restricted pointers, you can specify restricted
references, which indicate that the reference is not aliased in the local
context.
-@example
+@smallexample
void fn (int *__restrict__ rptr, int &__restrict__ rref)
@{
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
@noindent
In the body of @code{fn}, @var{rptr} points to an unaliased integer and
@@ -7825,12 +7847,12 @@ In the body of @code{fn}, @var{rptr} points to an unaliased integer and
You may also specify whether a member function's @var{this} pointer is
unaliased by using @code{__restrict__} as a member function qualifier.
-@example
+@smallexample
void T::fn () __restrict__
@{
/* @r{@dots{}} */
@}
-@end example
+@end smallexample
@noindent
Within the body of @code{T::fn}, @var{this} will have the effective
@@ -7905,7 +7927,7 @@ but there are other options as well.
@end table
When used with GNU ld version 2.8 or later on an ELF system such as
-Linux/GNU or Solaris 2, or on Microsoft Windows, duplicate copies of
+GNU/Linux or Solaris 2, or on Microsoft Windows, duplicate copies of
these constructs will be discarded at link time. This is known as
COMDAT support.
@@ -8082,7 +8104,7 @@ compiled separately.
@end table
When used with GNU ld version 2.8 or later on an ELF system such as
-Linux/GNU or Solaris 2, or on Microsoft Windows, g++ supports the
+GNU/Linux or Solaris 2, or on Microsoft Windows, g++ supports the
Borland model. On other systems, g++ implements neither automatic
model.
@@ -8136,14 +8158,14 @@ that define the templates themselves; you can put all of the explicit
instantiations you need into one big file; or you can create small files
like
-@example
+@smallexample
#include "Foo.h"
#include "Foo.cc"
template class Foo<int>;
template ostream& operator <<
(ostream&, const Foo<int>&);
-@end example
+@end smallexample
for each of the instances you need, and create a template instantiation
library from those.
@@ -8165,11 +8187,11 @@ members (with @code{inline}), and instantiation of only the static data
members of a template class, without the support data or member
functions (with (@code{static}):
-@example
+@smallexample
extern template int max (int, int);
inline template class Foo<int>;
static template class Foo<int>;
-@end example
+@end smallexample
@item
Do nothing. Pretend g++ does implement automatic instantiation
@@ -8205,21 +8227,21 @@ virtual function calls.
The syntax for this extension is
-@example
+@smallexample
extern A a;
extern int (A::*fp)();
typedef int (*fptr)(A *);
fptr p = (fptr)(a.*fp);
-@end example
+@end smallexample
For PMF constants (i.e.@: expressions of the form @samp{&Klasse::Member}),
no object is needed to obtain the address of the function. They can be
converted to function pointers directly:
-@example
+@smallexample
fptr p1 = (fptr)(&A::foo);
-@end example
+@end smallexample
@opindex Wno-pmf-conversions
You must specify @option{-Wno-pmf-conversions} to use this extension.
diff --git a/gcc/doc/frontends.texi b/gcc/doc/frontends.texi
index 1ee56856df3..8b5ea63947f 100644
--- a/gcc/doc/frontends.texi
+++ b/gcc/doc/frontends.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -11,7 +11,7 @@
@cindex Java
@cindex Ada
@cindex treelang
-Several versions of the compiler (C, C++, Objective-C, Ada,
+Several versions of the compiler (C, C++, Objective-C, Ada,
Fortran, Java and treelang) are integrated; this is why we use the name
``GNU Compiler Collection''. GCC can compile programs written in any of these
languages. The Ada, Fortran, Java and treelang compilers are described in
diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi
index 8f0a23cae5d..8154ccc80bf 100644
--- a/gcc/doc/gcov.texi
+++ b/gcc/doc/gcov.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1996, 1997, 1999, 2000, 2001,
-@c 2002, 2003 Free Software Foundation, Inc.
+@c 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -211,12 +211,12 @@ Unconditional branches are normally not interesting.
@end table
-@command{gcov} should be run with the current directory the same as that
-when you invoked the compiler. Otherwise it will not be able to locate
-the source files. @command{gcov} produces files called
-@file{@var{mangledname}.gcov} in the current directory. These contain
-the coverage information of the source file they correspond to.
-One @file{.gcov} file is produced for each source file containing code,
+@command{gcov} should be run with the current directory the same as that
+when you invoked the compiler. Otherwise it will not be able to locate
+the source files. @command{gcov} produces files called
+@file{@var{mangledname}.gcov} in the current directory. These contain
+the coverage information of the source file they correspond to.
+One @file{.gcov} file is produced for each source file containing code,
which was compiled to produce the data files. The @var{mangledname} part
of the output file name is usually simply the source file name, but can
be something more complicated if the @samp{-l} or @samp{-p} options are
@@ -280,12 +280,12 @@ Here is a sample:
function main called 1 returned 1 blocks executed 75%
1: 4:@{
1: 5: int i, total;
- -: 6:
+ -: 6:
1: 7: total = 0;
- -: 8:
+ -: 8:
11: 9: for (i = 0; i < 10; i++)
10: 10: total += i;
- -: 11:
+ -: 11:
1: 12: if (total != 45)
#####: 13: printf ("Failure\n");
-: 14: else
@@ -310,14 +310,14 @@ function main called 1 returned 1 blocks executed 75%
1: 4:@{
1: 4-block 0
1: 5: int i, total;
- -: 6:
+ -: 6:
1: 7: total = 0;
- -: 8:
+ -: 8:
11: 9: for (i = 0; i < 10; i++)
11: 9-block 0
10: 10: total += i;
10: 10-block 0
- -: 11:
+ -: 11:
1: 12: if (total != 45)
1: 12-block 0
#####: 13: printf ("Failure\n");
@@ -369,14 +369,14 @@ Here is a sample of a resulting @file{tmp.c.gcov} file:
function main called 1 returned 1 blocks executed 75%
1: 4:@{
1: 5: int i, total;
- -: 6:
+ -: 6:
1: 7: total = 0;
- -: 8:
+ -: 8:
11: 9: for (i = 0; i < 10; i++)
branch 0 taken 91% (fallthrough)
branch 1 taken 9%
10: 10: total += i;
- -: 11:
+ -: 11:
1: 12: if (total != 45)
branch 0 taken 0% (fallthrough)
branch 1 taken 100%
diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi
index 56ce597f8dc..2dc5b86dce3 100644
--- a/gcc/doc/gty.texi
+++ b/gcc/doc/gty.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2002, 2003
+@c Copyright (C) 2002, 2003, 2004
@c Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -48,7 +48,7 @@ These markers can be placed:
@item
In a structure definition, before the open brace;
@item
-In a global variable declaration, after the keyword @code{static} or
+In a global variable declaration, after the keyword @code{static} or
@code{extern}; and
@item
In a structure field definition, before the name of the field.
@@ -311,19 +311,19 @@ things you need to do:
@enumerate
@item
You need to add the file to the list of source files the type
-machinery scans. There are three cases:
+machinery scans. There are three cases:
@enumerate a
@item
For a back-end file, this is usually done
automatically; if not, you should add it to @code{target_gtfiles} in
-the appropriate port's entries in @file{config.gcc}.
+the appropriate port's entries in @file{config.gcc}.
@item
For files shared by all front ends, this is done by adding the
filename to the @code{GTFILES} variable in @file{Makefile.in}.
-@item
+@item
For any other file used by a front end, this is done by adding the
filename to the @code{gtfiles} variable defined in
@file{config-lang.in}. For C, the file is @file{c-config-lang.in}.
@@ -342,7 +342,7 @@ header file, this should be done automatically. For a front-end header
file, it needs to be included by the same file that includes
@file{gtype-@var{lang}.h}. For other header files, it needs to be
included in @file{gtype-desc.c}, which is a generated file, so add it to
-@code{ifiles} in @code{open_base_file} in @file{gengtype.c}.
+@code{ifiles} in @code{open_base_file} in @file{gengtype.c}.
For source files that aren't header files, the machinery will generate a
header file that should be included in the source file you just changed.
diff --git a/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi
index 2d934bda540..5c1a8d2f034 100644
--- a/gcc/doc/include/gcc-common.texi
+++ b/gcc/doc/include/gcc-common.texi
@@ -9,7 +9,7 @@
@c DEVELOPMENT is set to indicate an in-development version,
@c as compared to a release version. When making a release
@c branch, clear this.
-@set DEVELOPMENT
+@clear DEVELOPMENT
@c Common macros to support generating man pages:
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 305ce41eb61..dfe0c771bb8 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -152,7 +152,7 @@ We recommend you browse the entire generic installation instructions before
you proceed.
Lists of successful builds for released versions of GCC are
-available at @uref{http://gcc.gnu.org/buildstat.html}.
+available at @uref{http://gcc.gnu.org/buildstat.html}.
These lists are updated as new information becomes available.
The installation procedure itself is broken into five steps.
@@ -256,7 +256,7 @@ use @command{bash} to be sure. Then set @env{CONFIG_SHELL} in your
environment to your ``good'' shell prior to running
@command{configure}/@command{make}.
-@command{zsh} is not a fully compliant POSIX shell and will not
+@command{zsh} is not a fully compliant POSIX shell and will not
work when configuring GCC.
@item GNU binutils
@@ -293,15 +293,24 @@ systems' @command{tar} programs will also work, only try GNU
Necessary when modifying @file{configure.in}, @file{aclocal.m4}, etc.@:
to regenerate @file{configure} and @file{config.in} files. Most
directories require autoconf 2.13 (exactly), but @file{libiberty},
-@file{fastjar}, @file{libstdc++-v3}, and @file{gcc} require
-autoconf 2.57 (exactly).
+@file{fastjar}, @file{libstdc++-v3}, @file{libjava/libltdl}, and @file{gcc}
+require autoconf 2.57 (exactly).
-@item automake versions 1.4-p? and 1.7.?
+@item automake versions 1.4-gcj and 1.7.9
Necessary when modifying a @file{Makefile.am} file to regenerate its
-associated @file{Makefile.in}. Most directories require a 1.4 series
-automake; @file{libstdc++-v3} and @file{fastjar} requires a 1.7 series
-automake.
+associated @file{Makefile.in}.
+
+Much of GCC does not use automake, so directly edit the @file{Makefile.in}
+file. Specifically this applies to the @file{gcc}, @file{intl},
+@file{libf2c}, @file{libiberty}, @file{libobjc} directories as well as any
+of their subdirectories.
+
+The @file{libstdc++-v3}, @file{libjava/libltdl}, and @file{fastjar}
+directories require automake 1.7.9. However, the Java directories, which
+include @file{boehm-gc}, @file{libffi}, @file{libjava}, and @file{zlib},
+require a modified version of automake 1.4 downloadable from
+@uref{ftp://gcc.gnu.org/pub/java/automake-gcj-1.4.tar.gz}.
@item gettext version 0.12 (or later)
@@ -327,7 +336,7 @@ Necessary to regenerate @file{fixinc/fixincl.x} from
Necessary to run the @file{fixinc} @command{make check}.
-Necessary to regenerate the top level @file{Makefile.am} files from
+Necessary to regenerate the top level @file{Makefile.in} file from
@file{Makefile.tpl} and @file{Makefile.def}.
@item GNU Bison version 1.28 (or later)
@@ -513,11 +522,11 @@ affected by this requirement, see
To configure GCC:
-@example
+@smallexample
% mkdir @var{objdir}
% cd @var{objdir}
% @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
+@end smallexample
@heading Target specification
@@ -545,6 +554,10 @@ GCC@. A list of supported @var{options} follows; @samp{configure
--help} may list other options, but those not listed below may not
work and should not normally be used.
+Note that each @option{--enable} option has a corresponding
+@option{--disable} option and that each @option{--with} option has a
+corresponding @option{--without} option.
+
@table @code
@item --prefix=@var{dirname}
Specify the toplevel installation
@@ -600,7 +613,7 @@ manual.)
@item --with-gxx-include-dir=@var{dirname}
Specify
the installation directory for G++ header files. The default is
-@file{@var{prefix}/include/g++-v3}.
+@file{@var{prefix}/include/c++/@var{version}}.
@end table
@@ -939,6 +952,14 @@ option will adjust the ABI for AltiVec enhancements, as well as generate
AltiVec code when appropriate. This option is only available for
PowerPC systems.
+@item --enable-__cxa_atexit
+Define if you want to use __cxa_atexit, rather than atexit, to
+register C++ destructors for local statics and global objects.
+This is essential for fully standards-compliant handling of
+destructors, but requires __cxa_atexit in libc. This option is currently
+only available on systems with GNU libc. When enabled, this will cause
+@option{-fuse-cxa-exit} to be passed by default.
+
@item --enable-target-optspace
Specify that target
libraries should be optimized for code space instead of code speed.
@@ -980,7 +1001,7 @@ If you configure with @option{--enable-generated-files-in-srcdir} then those
generated files will go into the source directory. This is mainly intended
for generating release or prerelease tarballs of the GCC sources, since it
is not a requirement that the users of source releases to have flex, bison, or
-makeinfo.
+makeinfo.
@item --enable-version-specific-runtime-libs
Specify
@@ -999,9 +1020,9 @@ Specify that only a particular subset of compilers and
their runtime libraries should be built. For a list of valid values for
@var{langN} you can issue the following command in the
@file{gcc} directory of your GCC source tree:@*
-@example
+@smallexample
grep language= */config-lang.in
-@end example
+@end smallexample
Currently, you can use any of the following:
@code{ada}, @code{c}, @code{c++}, @code{f77}, @code{java}, @code{objc}.
Building the Ada compiler has special requirements, see below.@*
@@ -1010,18 +1031,6 @@ sub-tree will be configured. Re-defining @code{LANGUAGES} when calling
@samp{make bootstrap} @strong{does not} work anymore, as those
language sub-directories might not have been configured!
-@item --disable-libgcj
-Specify that the run-time libraries
-used by GCJ should not be built. This is useful in case you intend
-to use GCJ with some other run-time, or you're going to install it
-separately, or it just happens not to build on your particular
-machine. In general, if the Java front end is enabled, the GCJ
-libraries will be enabled too, unless they're known to not work on
-the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
-may need to port it; in this case, before modifying the top-level
-@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
-you may use @option{--enable-libgcj} to override the default.
-
@item --with-dwarf2
Specify that the compiler should
use DWARF 2 debugging information as the default.
@@ -1029,7 +1038,7 @@ use DWARF 2 debugging information as the default.
@item --enable-win32-registry
@itemx --enable-win32-registry=@var{key}
@itemx --disable-win32-registry
-The @option{--enable-win32-registry} option enables Windows-hosted GCC
+The @option{--enable-win32-registry} option enables Microsoft Windows-hosted GCC
to look up installations paths in the registry using the following key:
@smallexample
@@ -1091,7 +1100,7 @@ without optimization.
@item --enable-gather-detailed-mem-stats
When this option is specified more detailed information on memory
allocation is gathered. This information is printed when using
-@option{-fmem-report}.
+@option{-fmem-report}.
@item --enable-nls
@itemx --disable-nls
@@ -1115,10 +1124,6 @@ build procedure to use the host's @code{catgets} in this situation.
Search for libiconv header files in @file{@var{dir}/include} and
libiconv library files in @file{@var{dir}/lib}.
-@item --with-system-zlib
-Use installed zlib rather than that included with GCC@. This option
-only applies if the Java front end is being built.
-
@item --enable-obsolete
Enable configuration for an obsoleted system. If you attempt to
configure GCC for a system (build, host, or target) which has been
@@ -1130,7 +1135,8 @@ is removed entirely in the next major release, unless someone steps
forward to maintain the port.
@end table
-Some options which only apply to building cross compilers:
+@subheading Cross-Compiler-Specific Options
+The following options only apply to building cross compilers.
@table @code
@item --with-sysroot
@itemx --with-sysroot=@var{dir}
@@ -1178,9 +1184,141 @@ omitted from @file{libgcc.a} on the assumption that it will be provided by
@samp{newlib}.
@end table
-Note that each @option{--enable} option has a corresponding
-@option{--disable} option and that each @option{--with} option has a
-corresponding @option{--without} option.
+@subheading Java-Specific Options
+
+The following option applies to the build of the Java front end.
+
+@table @code
+@item --disable-libgcj
+Specify that the run-time libraries
+used by GCJ should not be built. This is useful in case you intend
+to use GCJ with some other run-time, or you're going to install it
+separately, or it just happens not to build on your particular
+machine. In general, if the Java front end is enabled, the GCJ
+libraries will be enabled too, unless they're known to not work on
+the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
+may need to port it; in this case, before modifying the top-level
+@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
+you may use @option{--enable-libgcj} to override the default.
+
+@end table
+
+The following options apply to building @samp{libgcj}.
+
+@subsubheading General Options
+
+@table @code
+@item --disable-getenv-properties
+Don't set system properties from @env{GCJ_PROPERTIES}.
+
+@item --enable-hash-synchronization
+Use a global hash table for monitor locks. Ordinarily,
+@samp{libgcj}'s @samp{configure} script automatically makes
+the correct choice for this option for your platform. Only use
+this if you know you need the library to be configured differently.
+
+@item --enable-interpreter
+Enable the Java interpreter. The interpreter is automatically
+enabled by default on all platforms that support it. This option
+is really only useful if you want to disable the interpreter
+(using @option{--disable-interpreter}).
+
+@item --disable-java-net
+Disable java.net. This disables the native part of java.net only,
+using non-functional stubs for native method implementations.
+
+@item --disable-jvmpi
+Disable JVMPI support.
+
+@item --with-ecos
+Enable runtime eCos target support.
+
+@item --without-libffi
+Don't use @samp{libffi}. This will disable the interpreter and JNI
+support as well, as these require @samp{libffi} to work.
+
+@item --enable-libgcj-debug
+Enable runtime debugging code.
+
+@item --enable-libgcj-multifile
+If specified, causes all @file{.java} source files to be
+compiled into @file{.class} files in one invocation of
+@samp{gcj}. This can speed up build time, but is more
+resource-intensive. If this option is unspecified or
+disabled, @samp{gcj} is invoked once for each @file{.java}
+file to compile into a @file{.class} file.
+
+@item --with-libiconv-prefix=DIR
+Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
+
+@item --enable-sjlj-exceptions
+Force use of @code{builtin_setjmp} for exceptions. @samp{configure}
+ordinarily picks the correct value based on the platform. Only use
+this option if you are sure you need a different setting.
+
+@item --with-system-zlib
+Use installed @samp{zlib} rather than that included with GCC@.
+
+@item --with-win32-nlsapi=ansi, unicows or unicode
+Indicates how MinGW @samp{libgcj} translates between UNICODE
+characters and the Win32 API.
+@table @code
+@item ansi
+Use the single-byte @code{char} and the Win32 A functions natively,
+translating to and from UNICODE when using these functions. If
+unspecified, this is the default.
+
+@item unicows
+Use the @code{WCHAR} and Win32 W functions natively. Adds
+@code{-lunicows} to @file{libgcj.spec} to link with @samp{libunicows}.
+@file{unicows.dll} needs to be deployed on Microsoft Windows 9X machines
+running built executables. @file{libunicows.a}, an open-source
+import library around Microsoft's @code{unicows.dll}, is obtained from
+@uref{http://libunicows.sourceforge.net/}, which also gives details
+on getting @file{unicows.dll} from Microsoft.
+
+@item unicode
+Use the @code{WCHAR} and Win32 W functions natively. Does @emph{not}
+add @code{-lunicows} to @file{libgcj.spec}. The built executables will
+only run on Microsoft Windows NT and above.
+@end table
+@end table
+
+@subsubheading AWT-Specific Options
+
+@table @code
+@item --with-x
+Use the X Window System.
+
+@item --enable-java-awt=PEER(S)
+Specifies the AWT peer library or libraries to build alongside
+@samp{libgcj}. If this option is unspecified or disabled, AWT
+will be non-functional. Current valid values are @option{gtk} and
+@option{xlib}. Multiple libraries should be separated by a
+comma (i.e. @option{--enable-java-awt=gtk,xlib}).
+
+@item --enable-gtk-cairo
+Build the cairo Graphics2D implementation on GTK.
+
+@item --enable-java-gc=TYPE
+Choose garbage collector. Defaults to @option{boehm} if unspecified.
+
+@item --disable-gtktest
+Do not try to compile and run a test GTK+ program.
+
+@item --disable-glibtest
+Do not try to compile and run a test GLIB program.
+
+@item --with-libart-prefix=PFX
+Prefix where libart is installed (optional).
+
+@item --with-libart-exec-prefix=PFX
+Exec prefix where libart is installed (optional).
+
+@item --disable-libarttest
+Do not try to compile and run a test libart program.
+
+@end table
@html
<hr />
@@ -1205,7 +1343,7 @@ corresponding @option{--without} option.
Now that GCC is configured, you are ready to build the compiler and
runtime libraries.
-We @strong{highly} recommend that GCC be built using GNU make;
+We @strong{highly} recommend that GCC be built using GNU make;
other versions may work, then again they might not.
GNU make is required for compiling GNAT (the Ada compiler) and the Java
runtime library.
@@ -1294,10 +1432,10 @@ without debugging information as in the following example. This will save
roughly 40% of disk space both for the bootstrap and the final installation.
(Libraries will still contain debugging information.)
-@example
+@smallexample
make CFLAGS='-O' LIBCFLAGS='-g -O2' \
LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
-@end example
+@end smallexample
If you wish to use non-default GCC flags when compiling the stage2 and
stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
@@ -1441,7 +1579,7 @@ library would be the same as the one built for the cross compiler.
For example, you can build a native Ada compiler by issuing the
following commands (assuming @command{make} is GNU make):
-@example
+@smallexample
cd @var{objdir}
@var{srcdir}/configure --enable-languages=c,ada
cd @var{objdir}
@@ -1449,7 +1587,7 @@ following commands (assuming @command{make} is GNU make):
cd gcc
make gnatlib_and_tools
cd ..
-@end example
+@end smallexample
Currently, when compiling the Ada front end, you cannot use the parallel
build feature described in the previous section.
@@ -1519,10 +1657,10 @@ installed are not in the @env{PATH}, you may need to set the following
environment variables appropriately, as in the following example (which
assumes that DejaGnu has been installed under @file{/usr/local}):
-@example
+@smallexample
TCL_LIBRARY = /usr/local/share/tcl8.0
DEJAGNULIBS = /usr/local/share/dejagnu
-@end example
+@end smallexample
(On systems such as Cygwin, these paths are required to be actual
paths, not mounts or links; presumably this is due to some lack of
@@ -1530,14 +1668,14 @@ portability in the DejaGnu code.)
Finally, you can run the testsuite (which may take a long time):
-@example
+@smallexample
cd @var{objdir}; make -k check
-@end example
+@end smallexample
This will test various components of GCC, such as compiler
front ends and runtime libraries. While running the testsuite, DejaGnu
might emit some harmless messages resembling
-@samp{WARNING: Couldn't find the global config file.} or
+@samp{WARNING: Couldn't find the global config file.} or
@samp{WARNING: Couldn't find tool init file} that can be ignored.
@section How can I run the test suite on selected tests?
@@ -1551,16 +1689,16 @@ just run @samp{make check} in a subdirectory of the object directory.
A more selective way to just run all @command{gcc} execute tests in the
testsuite is to use
-@example
+@smallexample
make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
-@end example
+@end smallexample
Likewise, in order to run only the @command{g++} ``old-deja'' tests in
the testsuite with filenames matching @samp{9805*}, you would use
-@example
+@smallexample
make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
-@end example
+@end smallexample
The @file{*.exp} files are located in the testsuite directories of the GCC
source, the most important ones being @file{compile.exp},
@@ -1576,9 +1714,9 @@ You can pass multiple options to the testsuite using the
@samp{RUNTESTFLAGS}, or directly to @command{runtest} if you prefer to
work outside the makefiles. For example,
-@example
+@smallexample
make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fno-strength-reduce"
-@end example
+@end smallexample
will run the standard @command{g++} testsuites (``unix'' is the target name
for a standard native testsuite situation), passing
@@ -1588,15 +1726,15 @@ slashes separate options.
You can run the testsuites multiple times using combinations of options
with a syntax similar to the brace expansion of popular shells:
-@example
+@smallexample
@dots{}"--target_board=arm-sim@{-mhard-float,-msoft-float@}@{-O1,-O2,-O3,@}"
-@end example
+@end smallexample
(Note the empty option caused by the trailing comma in the final group.)
The following will run each testsuite eight times using the @samp{arm-sim}
target, as if you had specified all possible combinations yourself:
-@example
+@smallexample
--target_board=arm-sim/-mhard-float/-O1
--target_board=arm-sim/-mhard-float/-O2
--target_board=arm-sim/-mhard-float/-O3
@@ -1605,14 +1743,14 @@ target, as if you had specified all possible combinations yourself:
--target_board=arm-sim/-msoft-float/-O2
--target_board=arm-sim/-msoft-float/-O3
--target_board=arm-sim/-msoft-float
-@end example
+@end smallexample
They can be combined as many times as you wish, in arbitrary ways. This
list:
-@example
+@smallexample
@dots{}"--target_board=unix/-Wextra@{-O3,-fno-strength-reduce@}@{-fomit-frame-pointer,@}"
-@end example
+@end smallexample
will generate four combinations, all involving @samp{-Wextra}.
@@ -1623,15 +1761,15 @@ parallel by having the shell perform the combinations and @command{make}
do the parallel runs. Instead of using @samp{--target_board}, use a
special makefile target:
-@example
+@smallexample
make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
-@end example
+@end smallexample
For example,
-@example
+@smallexample
make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
-@end example
+@end smallexample
will run three concurrent ``make-gcc'' testsuites, eventually testing all
ten combinations as described above. Note that this is currently only
@@ -1662,8 +1800,8 @@ the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
The result of running the testsuite are various @file{*.sum} and @file{*.log}
files in the testsuite subdirectories. The @file{*.log} files contain a
detailed log of the compiler invocations and the corresponding
-results, the @file{*.sum} files summarize the results. These summaries
-contain status codes for all tests:
+results, the @file{*.sum} files summarize the results. These summaries
+contain status codes for all tests:
@itemize @bullet
@item
@@ -1693,10 +1831,10 @@ problem in future releases.
If you want to report the results to the GCC project, use the
@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
-@example
+@smallexample
@var{srcdir}/contrib/test_summary -p your_commentary.txt \
-m gcc-testresults@@gcc.gnu.org |sh
-@end example
+@end smallexample
This script uses the @command{Mail} program to send the results, so
make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
@@ -1725,9 +1863,9 @@ messages may be automatically processed.
@end ifnothtml
Now that GCC has been built (and optionally tested), you can install it with
-@example
+@smallexample
cd @var{objdir}; make install
-@end example
+@end smallexample
We strongly recommend to install into a target directory where there is
no previous version of GCC present.
@@ -1755,9 +1893,9 @@ binutils, including assembler and linker.
Installation into a temporary staging area or into a @command{chroot}
jail can be achieved with the command
-@example
+@smallexample
make DESTDIR=@var{path-to-rootdir} install
-@end example
+@end smallexample
@noindent where @var{path-to-rootdir} is the absolute path of
a directory relative to which all installation paths will be
@@ -1915,7 +2053,7 @@ OpenServer/Unixware}.
@item
Sinix/Reliant Unix---@uref{ftp://ftp.fujitsu-siemens.com/pub/pd/gnu/gcc/,,Siemens}.
-
+
@item
Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
@@ -2158,15 +2296,15 @@ we need to use the old assembler, invoked via the barely documented
@option{-oldas} option. To bootstrap GCC, you either need to use the
Compaq C Compiler:
-@example
+@smallexample
% CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
+@end smallexample
or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
-@example
+@smallexample
% CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
+@end smallexample
As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
are supported on Tru64 UNIX, so you must not configure GCC with
@@ -2231,10 +2369,10 @@ need to tell GCC where to find the assembler and the linker. The
simplest way to do so is by providing @option{--with-as} and
@option{--with-ld} to @file{configure}, e.g.@:
-@example
+@smallexample
configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
--enable-languages=c
-@end example
+@end smallexample
The comparison test during @samp{make bootstrap} fails on Unicos/Mk
because the assembler inserts timestamps into object files. You should
@@ -2306,9 +2444,9 @@ can also be obtained from:
We @emph{strongly} recommend using binutils 2.13 or newer.
The following error:
-@example
+@smallexample
Error: register required
-@end example
+@end smallexample
indicates that you should upgrade to a newer version of the binutils.
@@ -2403,12 +2541,15 @@ A port to the AT&T DSP1610 family of processors.
@end html
@heading @anchor{*-*-freebsd*}*-*-freebsd*
-The version of binutils installed in @file{/usr/bin} is known to work unless
-otherwise specified in any per-architecture notes. However, binutils
-2.12.1 or greater is known to improve overall testsuite results.
+The version of binutils installed in @file{/usr/bin} probably works with
+this release of GCC. However, on FreeBSD 4, bootstrapping against the
+latest FSF binutils is known to improve overall testsuite results; and,
+on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava.
Support for FreeBSD 1 was discontinued in GCC 3.2.
+Support for FreeBSD 2 will be discontinued after GCC 3.4. The
+following was true for GCC 3.1 but the current status is unknown.
For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
configuration support and files as shipped with GCC 2.95 are still in
place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
@@ -2425,9 +2566,9 @@ of the configuration used in the stock FreeBSD configuration of GCC. In
particular, @option{--enable-threads} is now configured by default.
However, as a general user, do not attempt to replace the system
compiler with this release. Known to bootstrap and check with good
-results on FreeBSD 4.8-STABLE and 5-CURRENT@. In the past, known to
+results on FreeBSD 4.9-STABLE and 5-CURRENT@. In the past, known to
bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2,
-4.3, 4.4, 4.5-STABLE@.
+4.3, 4.4, 4.5, 4.8-STABLE@.
In principle, @option{--enable-threads} is now compatible with
@option{--enable-libgcj} on FreeBSD@. However, it has only been built
@@ -2690,7 +2831,7 @@ A modern bintuils (as well as a plethora of other development related
GNU utilities) can be found in Support Level Supplement OSS658A, the
"GNU Development Tools" package. See the SCO web and ftp sites for details.
That package also contains the currently "officially supported" version of
-GCC, version 2.95.3. It is useful for bootstrapping this version.
+GCC, version 2.95.3. It is useful for bootstrapping this version.
@html
<hr />
@@ -2712,10 +2853,10 @@ from the right place) while making the tools not think we're actually
building a cross compiler. The easiest way to do this is with a configure
command like this:
-@example
+@smallexample
CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \
--host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
-@end example
+@end smallexample
@emph{You should substitute @samp{i686} in the above command with the appropriate
processor for your host.}
@@ -2803,21 +2944,21 @@ multilib @file{libstdc++.a} installed:
Extract the shared object from each the GCC 3.1 @file{libstdc++.a}
archive:
-@example
+@smallexample
% ar -x libstdc++.a libstdc++.so.4
-@end example
+@end smallexample
Enable the @samp{F_LOADONLY} flag so that the shared object will be
available for runtime dynamic loading, but not linking:
-@example
+@smallexample
% strip -e libstdc++.so.4
-@end example
+@end smallexample
Archive the runtime-only shared object in the GCC 3.2
@file{libstdc++.a} archive:
-@example
+@smallexample
% ar -q libstdc++.a libstdc++.so.4
-@end example
+@end smallexample
Linking executables and shared libraries may produce warnings of
duplicate symbols. The assembly files generated by GCC for AIX always
@@ -2950,16 +3091,16 @@ encounter this problem, upgrade your operating system or use BASH (the
GNU shell) to run @command{fixproto}. This bug will cause the fixproto
program to report an error of the form:
-@example
+@smallexample
./fixproto: sh internal 1K buffer overflow
-@end example
+@end smallexample
To fix this, you can also change the first line of the fixproto script
to look like:
-@example
+@smallexample
#!/bin/ksh
-@end example
+@end smallexample
@html
<hr />
@@ -3042,21 +3183,21 @@ ensure that the N32 ABI is in use. To test this, compile a simple C
file with @command{cc} and then run @command{file} on the
resulting object file. The output should look like:
-@example
+@smallexample
test.o: ELF N32 MSB @dots{}
-@end example
+@end smallexample
If you see:
-@example
+@smallexample
test.o: ELF 32-bit MSB @dots{}
-@end example
+@end smallexample
or
-@example
+@smallexample
test.o: ELF 64-bit MSB @dots{}
-@end example
+@end smallexample
then your version of @command{cc} uses the O32 or N64 ABI by default. You
should set the environment variable @env{CC} to @samp{cc -n32}
@@ -3070,15 +3211,15 @@ the ISA depending on the machine where GCC is built. Using one of them
as the bootstrap compiler may result in mips4 code, which won't run at
all on mips3-only systems. For the test program above, you should see:
-@example
+@smallexample
test.o: ELF N32 MSB mips-3 @dots{}
-@end example
+@end smallexample
If you get:
-@example
+@smallexample
test.o: ELF N32 MSB mips-4 @dots{}
-@end example
+@end smallexample
instead, you should set the environment variable @env{CC} to @samp{cc
-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
@@ -3222,19 +3363,19 @@ Embedded PowerPC system in little endian mode.
<hr />
@end html
@heading @anchor{s390-*-linux*}s390-*-linux*
-S/390 system running Linux for S/390@.
+S/390 system running GNU/Linux for S/390@.
@html
<hr />
@end html
@heading @anchor{s390x-*-linux*}s390x-*-linux*
-zSeries system (64-bit) running Linux for zSeries@.
+zSeries system (64-bit) running GNU/Linux for zSeries@.
@html
<hr />
@end html
@heading @anchor{s390x-ibm-tpf*}s390x-ibm-tpf*
-zSeries system (64-bit) running TPF. This platform is
+zSeries system (64-bit) running TPF. This platform is
supported as cross-compilation target only.
@html
@@ -3338,6 +3479,11 @@ that supports only 32-bit binaries, one must configure with
@option{--disable-multilib}, since we will not be able to build the
64-bit target libraries.
+GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
+and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
+failure in form of a miscompilation of the stage1 compiler by the Sun
+compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
+
@html
<hr />
@end html
@@ -3407,9 +3553,9 @@ releases mishandled unaligned relocations on @code{sparc-*-*} targets.
The following compiler flags must be specified in the configure
step in order to bootstrap this target with the Sun compiler:
-@example
+@smallexample
% CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
+@end smallexample
@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9}
specifies the SPARC-V9 architecture to the Sun linker and assembler.
@@ -3443,10 +3589,10 @@ is said to work. Smaller values may also work.
On System V, if you get an error like this,
-@example
+@smallexample
/usr/local/lib/bison.simple: In function `yyparse':
/usr/local/lib/bison.simple:625: virtual memory exhausted
-@end example
+@end smallexample
@noindent
that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
@@ -3495,7 +3641,7 @@ to do so.
GCC's exception handling runtime requires a special ``configlette''
module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in
that file to add the module to your kernel build. (Future versions of
-VxWorks will incorporate this module.)
+VxWorks will incorporate this module.)
@html
<hr />
diff --git a/gcc/doc/interface.texi b/gcc/doc/interface.texi
index d2210e93865..b55293d863c 100644
--- a/gcc/doc/interface.texi
+++ b/gcc/doc/interface.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -28,8 +28,8 @@ long in the same registers used for @code{int} or @code{double} return
values. (GCC typically allocates variables of such types in
registers also.) Structures and unions of other sizes are returned by
storing them into an address passed by the caller (usually in a
-register). The machine-description macros @code{STRUCT_VALUE} and
-@code{STRUCT_INCOMING_VALUE} tell GCC where to pass this address.
+register). The target hook @code{TARGET_STRUCT_VALUE_RTX}
+tells GCC where to pass this address.
By contrast, PCC on most target machines returns structures and unions
of any size by copying the data into an area of static storage, and then
@@ -76,10 +76,10 @@ just take the address of the variable. If a variable's address is ever
taken, even if just to compute it and ignore it, then the variable cannot
go in a register:
-@example
+@smallexample
@{
int careful;
&careful;
@dots{}
@}
-@end example
+@end smallexample
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index f7182f081ea..0084f56a2e1 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -356,15 +356,17 @@ in the following sections.
@gccoptlist{-mcpu=@var{cpu-type} @gol
-mtune=@var{cpu-type} @gol
-mcmodel=@var{code-model} @gol
--m32 -m64 @gol
--mapp-regs -mbroken-saverestore -mcypress @gol
--mfaster-structs -mflat @gol
--mfpu -mhard-float -mhard-quad-float @gol
--mimpure-text -mlittle-endian -mlive-g0 -mno-app-regs @gol
--mno-faster-structs -mno-flat -mno-fpu @gol
--mno-impure-text -mno-stack-bias -mno-unaligned-doubles @gol
--msoft-float -msoft-quad-float -msparclite -mstack-bias @gol
--msupersparc -munaligned-doubles -mv8}
+-m32 -m64 -mapp-regs -mno-app-regs @gol
+-mfaster-structs -mno-faster-structs @gol
+-mflat -mno-flat -mfpu -mno-fpu @gol
+-mhard-float -msoft-float @gol
+-mhard-quad-float -msoft-quad-float @gol
+-mimpure-text -mno-impure-text -mlittle-endian @gol
+-mstack-bias -mno-stack-bias @gol
+-munaligned-doubles -mno-unaligned-doubles @gol
+-mv8plus -mno-v8plus -mvis -mno-vis @gol
+-mcypress -mf930 -mf934 @gol
+-msparclite -msupersparc -mv8}
@emph{ARM Options}
@gccoptlist{-mapcs-frame -mno-apcs-frame @gol
@@ -488,7 +490,7 @@ in the following sections.
-mno-fp-ret-in-387 -msoft-float -msvr3-shlib @gol
-mno-wide-multiply -mrtd -malign-double @gol
-mpreferred-stack-boundary=@var{num} @gol
--mmmx -msse -msse2 -mpni -m3dnow @gol
+-mmmx -msse -msse2 -msse3 -m3dnow @gol
-mthreads -mno-align-stringops -minline-all-stringops @gol
-mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol
-m96bit-long-double -mregparm=@var{num} -momit-leaf-frame-pointer @gol
@@ -807,7 +809,7 @@ Specify explicitly the @var{language} for the following input files
(rather than letting the compiler choose a default based on the file
name suffix). This option applies to all following input files until
the next @option{-x} option. Possible values for @var{language} are:
-@example
+@smallexample
c c-header cpp-output
c++ c++-header c++-cpp-output
objective-c objective-c-header objc-cpp-output
@@ -816,7 +818,7 @@ ada
f77 f77-cpp-input ratfor
java
treelang
-@end example
+@end smallexample
@item -x none
Turn off any specification of a language, so that subsequent files are
@@ -1029,7 +1031,7 @@ ISO C90 as modified in amendment 1.
@itemx iso9899:1999
@itemx iso9899:199x
ISO C99. Note that this standard is not yet fully supported; see
-@w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The
+@w{@uref{http://gcc.gnu.org/gcc-3.4/c99status.html}} for more information. The
names @samp{c9x} and @samp{iso9899:199x} are deprecated.
@item gnu89
@@ -1247,9 +1249,9 @@ for C++ programs; but you can also use most of the GNU compiler options
regardless of what language your program is in. For example, you
might compile a file @code{firstClass.C} like this:
-@example
+@smallexample
g++ -g -frepo -O -c firstClass.C
-@end example
+@end smallexample
@noindent
In this example, only @option{-frepo} is an option meant
@@ -1269,7 +1271,7 @@ the version that conforms most closely to the C++ ABI specification.
Therefore, the ABI obtained using version 0 will change as ABI bugs
are fixed.
-The default is version 1.
+The default is version 2.
@item -fno-access-control
@opindex fno-access-control
@@ -1460,7 +1462,7 @@ inlined by default.
@opindex Wabi
Warn when G++ generates code that is probably not compatible with the
vendor-neutral C++ ABI. Although an effort has been made to warn about
-all such cases, there are probably some cases that are not warned about,
+all such cases, there are probably some cases that are not warned about,
even though G++ is generating incompatible code. There may also be
cases where warnings are emitted even though the code that is generated
will be compatible.
@@ -1484,7 +1486,7 @@ struct B : public A @{ int f2 : 1; @};
@noindent
In this case, G++ will place @code{B::f2} into the same byte
-as@code{A::f1}; other compilers will not. You can avoid this problem
+as@code{A::f1}; other compilers will not. You can avoid this problem
by explicitly padding @code{A} so that its size is a multiple of the
byte size on your platform; that will cause G++ and other compilers to
layout @code{B} identically.
@@ -1521,7 +1523,7 @@ union too small by the number of bits in an @code{int}.
@item
Empty classes can be placed at incorrect offsets. For example:
-
+
@smallexample
struct A @{@};
@@ -1614,7 +1616,7 @@ Item 23: Don't try to return a reference when you must return an object.
@end itemize
-Also warn about violations of the following style guidelines from
+Also warn about violations of the following style guidelines from
Scott Meyers' @cite{More Effective C++} book:
@itemize @bullet
@@ -1735,9 +1737,9 @@ for Objective-C programs, but you can also use most of the GNU compiler
options regardless of what language your program is in. For example,
you might compile a file @code{some_class.m} like this:
-@example
+@smallexample
gcc -g -fgnu-runtime -O -c some_class.m
-@end example
+@end smallexample
@noindent
In this example, @option{-fgnu-runtime} is an option meant only for
@@ -1772,17 +1774,17 @@ used.
@item -fno-nil-receivers
@opindex -fno-nil-receivers
-Assume that all Objective-C message dispatches (e.g.,
-@code{[receiver message:arg]}) in this translation unit ensure that the receiver
-is not @code{nil}. This allows for more efficient entry points in the runtime to be
-used. Currently, this option is only available in conjunction with
+Assume that all Objective-C message dispatches (e.g.,
+@code{[receiver message:arg]}) in this translation unit ensure that the receiver
+is not @code{nil}. This allows for more efficient entry points in the runtime to be
+used. Currently, this option is only available in conjunction with
the NeXT runtime on Mac OS X 10.3 and later.
@item -fobjc-exceptions
@opindex -fobjc-exceptions
-Enable syntactic support for structured exception handling in Objective-C,
-similar to what is offered by C++ and Java. Currently, this option is only
-available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
+Enable syntactic support for structured exception handling in Objective-C,
+similar to what is offered by C++ and Java. Currently, this option is only
+available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
@smallexample
@@try @{
@@ -1811,15 +1813,15 @@ available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
@end smallexample
The @code{@@throw} statement may appear anywhere in an Objective-C or
-Objective-C++ program; when used inside of a @code{@@catch} block, the
-@code{@@throw} may appear without an argument (as shown above), in which case
+Objective-C++ program; when used inside of a @code{@@catch} block, the
+@code{@@throw} may appear without an argument (as shown above), in which case
the object caught by the @code{@@catch} will be rethrown.
Note that only (pointers to) Objective-C objects may be thrown and
caught using this scheme. When an object is thrown, it will be caught
by the nearest @code{@@catch} clause capable of handling objects of that type,
-analogously to how @code{catch} blocks work in C++ and Java. A
-@code{@@catch(id @dots{})} clause (as shown above) may also be provided to catch
+analogously to how @code{catch} blocks work in C++ and Java. A
+@code{@@catch(id @dots{})} clause (as shown above) may also be provided to catch
any and all Objective-C exceptions not caught by previous @code{@@catch}
clauses (if any).
@@ -1833,7 +1835,7 @@ There are several caveats to using the new exception mechanism:
@itemize @bullet
@item
-Although currently designed to be binary compatible with @code{NS_HANDLER}-style
+Although currently designed to be binary compatible with @code{NS_HANDLER}-style
idioms provided by the @code{NSException} class, the new
exceptions can only be used on Mac OS X 10.3 (Panther) and later
systems, due to additional functionality needed in the (NeXT) Objective-C
@@ -1841,13 +1843,13 @@ runtime.
@item
As mentioned above, the new exceptions do not support handling
-types other than Objective-C objects. Furthermore, when used from
+types other than Objective-C objects. Furthermore, when used from
Objective-C++, the Objective-C exception model does not interoperate with C++
exceptions at this time. This means you cannot @code{@@throw} an exception
-from Objective-C and @code{catch} it in C++, or vice versa
+from Objective-C and @code{catch} it in C++, or vice versa
(i.e., @code{throw @dots{} @@catch}).
@end itemize
-
+
The @option{-fobjc-exceptions} switch also enables the use of synchronization
blocks for thread-safe execution:
@@ -1860,7 +1862,7 @@ blocks for thread-safe execution:
Upon entering the @code{@@synchronized} block, a thread of execution shall
first check whether a lock has been placed on the corresponding @code{guard}
object by another thread. If it has, the current thread shall wait until
-the other thread relinquishes its lock. Once @code{guard} becomes available,
+the other thread relinquishes its lock. Once @code{guard} becomes available,
the current thread will place its own lock on it, execute the code contained in
the @code{@@synchronized} block, and finally relinquish the lock (thereby
making @code{guard} available to other threads).
@@ -1875,10 +1877,10 @@ to be unlocked properly.
Emit a special marker instructing @command{ld(1)} not to statically link in
the resulting object file, and allow @command{dyld(1)} to load it in at
run time instead. This is used in conjunction with the Fix-and-Continue
-debugging mode, where the object file in question may be recompiled and
+debugging mode, where the object file in question may be recompiled and
dynamically reloaded in the course of program execution, without the need
to restart the program itself. Currently, Fix-and-Continue functionality
-is only available in conjunction with the NeXT runtime on Mac OS X 10.3
+is only available in conjunction with the NeXT runtime on Mac OS X 10.3
and later.
@item -fzero-link
@@ -1888,7 +1890,7 @@ to @code{objc_getClass("@dots{}")} (when the name of the class is known at
compile time) with static class references that get initialized at load time,
which improves run-time performance. Specifying the @option{-fzero-link} flag
suppresses this behavior and causes calls to @code{objc_getClass("@dots{}")}
-to be retained. This is useful in Zero-Link debugging mode, since it allows
+to be retained. This is useful in Zero-Link debugging mode, since it allows
for individual class implementations to be modified during program execution.
@item -gen-decls
@@ -1923,7 +1925,7 @@ being used.
@opindex Wundeclared-selector
Warn if a @code{@@selector(@dots{})} expression referring to an
undeclared selector is found. A selector is considered undeclared if no
-method with that name has been declared before the
+method with that name has been declared before the
@code{@@selector(@dots{})} expression, either explicitly in an
@code{@@interface} or @code{@@protocol} declaration, or implicitly in
an @code{@@implementation} section. This option always performs its
@@ -2158,7 +2160,7 @@ requiring a non-null value by the @code{nonnull} function attribute.
@option{-Wnonnull} is included in @option{-Wall} and @option{-Wformat}. It
can be disabled with the @option{-Wno-nonnull} option.
-@item -Winit-self @r{(C, C++, and Objective-C only)}
+@item -Winit-self @r{(C, C++, and Objective-C only)}
@opindex Winit-self
Warn about uninitialized variables which are initialized with themselves.
Note this option can only be used with the @option{-Wuninitialized} option,
@@ -2940,7 +2942,7 @@ code is to provide behavior which is selectable at compile-time.
@opindex Winline
Warn if a function can not be inlined and it was declared as inline.
Even with this option, the compiler will not warn about failures to
-inline functions declared in system headers.
+inline functions declared in system headers.
The compiler uses a variety of heuristics to determine whether or not
to inline a function. For example, the compiler takes into account
@@ -3513,9 +3515,9 @@ Same as @option{-print-file-name=libgcc.a}.
This is useful when you use @option{-nostdlib} or @option{-nodefaultlibs}
but you do want to link with @file{libgcc.a}. You can do
-@example
+@smallexample
gcc -nostdlib @var{files}@dots{} `gcc -print-libgcc-file-name`
-@end example
+@end smallexample
@item -print-search-dirs
@opindex print-search-dirs
@@ -3577,7 +3579,7 @@ Turning on optimization flags makes the compiler attempt to improve
the performance and/or code size at the expense of compilation time
and possibly the ability to debug the program.
-The compiler performs optimisation based on the knowledge it has of
+The compiler performs optimization based on the knowledge it has of
the program. Using the @option{-funit-at-a-time} flag will allow the
compiler to consider information gained from later functions in the
file when compiling a function. Compiling multiple files at once to a
@@ -3600,7 +3602,7 @@ With @option{-O}, the compiler tries to reduce code size and execution
time, without performing any optimizations that take a great deal of
compilation time.
-@option{-O} turns on the following optimization flags:
+@option{-O} turns on the following optimization flags:
@gccoptlist{-fdefer-pop @gol
-fmerge-constants @gol
-fthread-jumps @gol
@@ -3774,7 +3776,7 @@ use inlining heavily such as those based on recursive templates with C++.
Inlining is actually controlled by a number of parameters, which may be
specified individually by using @option{--param @var{name}=@var{value}}.
-The @option{-finline-limit=@var{n}} option sets some of these parameters
+The @option{-finline-limit=@var{n}} option sets some of these parameters
as follows:
@table @gcctabopt
@@ -4085,9 +4087,9 @@ of stalled insns into the ready list, during the second scheduling pass.
@item -fsched-stalled-insns-dep=@var{n}
@opindex fsched-stalled-insns-dep
-Define how many insn groups (cycles) will be examined for a dependency
-on a stalled insn that is candidate for premature removal from the queue
-of stalled insns. Has an effect only during the second scheduling pass,
+Define how many insn groups (cycles) will be examined for a dependency
+on a stalled insn that is candidate for premature removal from the queue
+of stalled insns. Has an effect only during the second scheduling pass,
and only if @option{-fsched-stalled-insns} is used and its value is not zero.
@item -fsched2-use-superblocks
@@ -4096,7 +4098,7 @@ When scheduling after register allocation, do use superblock scheduling
algorithm. Superblock scheduling allows motion across basic block boundaries
resulting on faster schedules. This option is experimental, as not all machine
descriptions used by GCC model the CPU closely enough to avoid unreliable
-results from the algorithm.
+results from the algorithm.
This only makes sense when scheduling after register allocation, i.e.@: with
@option{-fschedule-insns2} or at @option{-O2} or higher.
@@ -4217,7 +4219,7 @@ example, an @code{unsigned int} can alias an @code{int}, but not a
type.
Pay special attention to code like this:
-@example
+@smallexample
union a_union @{
int i;
double d;
@@ -4228,13 +4230,13 @@ int f() @{
t.d = 3.0;
return t.i;
@}
-@end example
+@end smallexample
The practice of reading from a different union member than the one most
recently written to (called ``type-punning'') is common. Even with
@option{-fstrict-aliasing}, type-punning is allowed, provided the memory
is accessed through the union type. So, the code above will work as
expected. However, this code might not:
-@example
+@smallexample
int f() @{
a_union t;
int* ip;
@@ -4242,7 +4244,7 @@ int f() @{
ip = &t.i;
return *ip;
@}
-@end example
+@end smallexample
Every language that wishes to perform language-specific alias analysis
should define a function that computes, given an @code{tree}
@@ -4513,7 +4515,7 @@ file The information in this data file is very dependent on the
structure of the generated code, so you must use the same source code
and the same optimization options for both compilations.
-With @option{-fbranch-probabilities}, GCC puts a
+With @option{-fbranch-probabilities}, GCC puts a
@samp{REG_BR_PROB} note on each @samp{JUMP_INSN} and @samp{CALL_INSN}.
These can be used to improve optimization. Currently, they are only
used in one place: in @file{reorg.c}, instead of guessing which path a
@@ -4598,7 +4600,7 @@ the loop is entered. This is done using the old loop unroller whose loop
recognition is based on notes from frontend. This usually makes programs run more slowly.
@option{-fold-unroll-all-loops} implies the same options as
@option{-fold-unroll-loops}.
-
+
@item -funswitch-loops
@opindex funswitch-loops
Move branches with loop invariant conditions out of the loop, with duplicates
@@ -4659,6 +4661,10 @@ that contain more that a certain number of instructions. You can
control some of these constants on the command-line using the
@option{--param} option.
+The names of specific parameters, and the meaning of the values, are
+tied to the internals of the compiler, and are subject to change
+without notice in future releases.
+
In each case, the @var{value} is an integer. The allowable choices for
@var{name} are given in the following table:
@@ -4704,7 +4710,7 @@ needlessly consume memory and resources.
@item max-inline-insns-single
Several parameters control the tree inliner used in gcc.
This number sets the maximum number of instructions (counted in gcc's
-internal representation) in a single function that the tree inliner
+internal representation) in a single function that the tree inliner
will consider for inlining. This only affects functions declared
inline and methods implemented in a class declaration (C++).
The default value is 500.
@@ -4715,7 +4721,7 @@ a lot of functions that would otherwise not be considered for inlining
by the compiler will be investigated. To those functions, a different
(more restrictive) limit compared to functions declared inline can
be applied.
-The default value is 150.
+The default value is 100.
@item large-function-insns
The limit specifying really large functions. For functions greater than this
@@ -4723,10 +4729,10 @@ limit inlining is constrained by @option{--param large-function-growth}.
This parameter is useful primarily to avoid extreme compilation time caused by non-linear
algorithms used by the backend.
This parameter is ignored when @option{-funit-at-a-time} is not used.
-The default value is 30000.
+The default value is 3000.
@item large-function-growth
-Specifies maximal growth of large functtion caused by inlining in percents.
+Specifies maximal growth of large function caused by inlining in percents.
This parameter is ignored when @option{-funit-at-a-time} is not used.
The default value is 200.
@@ -4737,7 +4743,7 @@ The default value is 150.
@item max-inline-insns-rtl
For languages that use the RTL inliner (this happens at a later stage
-than tree inlining), you can set the maximum allowable size (counted
+than tree inlining), you can set the maximum allowable size (counted
in RTL instructions) for the RTL inliner with this parameter.
The default value is 600.
@@ -5644,12 +5650,12 @@ returns the pathname. If it does not exist, it returns the second argument.
This way, @code{if-exists-else} can be used to select one file or another,
based on the existence of the first. Here is a small example of its usage:
-@smallexample
+@smallexample
*startfile:
crt0%O%s %:if-exists(crti%O%s) \
%:if-exists-else(crtbeginT%O%s crtbegin%O%s)
@end smallexample
-@end table
+@end table
@item %@{@code{S}@}
Substitutes the @code{-S} switch, if that switch was given to GCC@.
@@ -5724,7 +5730,7 @@ jim.d -bar -boggle
If @code{S} was given to GCC, substitutes @code{X}; else if @code{T} was
given to GCC, substitutes @code{Y}; else substitutes @code{D}. There can
-be as many clauses as you need. This may be combined with @code{.},
+be as many clauses as you need. This may be combined with @code{.},
@code{!}, @code{|}, and @code{*} as needed.
@@ -6081,7 +6087,7 @@ when the compiler is configured for 68HC12-based systems.
@itemx -m68hcs12
@opindex m68S12
@opindex m68hcs12
-Generate output for a 68HCS12.
+Generate output for a 68HCS12.
@item -mauto-incdec
@opindex mauto-incdec
@@ -6142,7 +6148,7 @@ Output code for g-format floating point numbers instead of d-format.
@subsection SPARC Options
@cindex SPARC options
-These @samp{-m} switches are supported on the SPARC:
+These @samp{-m} options are supported on the SPARC:
@table @gcctabopt
@item -mno-app-regs
@@ -6193,7 +6199,7 @@ Generate output containing library calls for quad-word (long double)
floating point instructions. The functions called are those specified
in the SPARC ABI@. This is the default.
-As of this writing, there are no sparc implementations that have hardware
+As of this writing, there are no SPARC implementations that have hardware
support for the quad-word floating point instructions. They all invoke
a trap handler for one of these instructions, and then the trap handler
emulates the effect of the instruction. Because of the trap handler overhead,
@@ -6214,6 +6220,8 @@ The local registers and the input registers (0--5) are still treated as
With @option{-mno-flat} (the default), the compiler emits save/restore
instructions (except for leaf functions) and is the normal mode of operation.
+These options are deprecated and will be deleted in a future GCC release.
+
@item -mno-unaligned-doubles
@itemx -munaligned-doubles
@opindex mno-unaligned-doubles
@@ -6245,7 +6253,7 @@ the rules of the ABI@.
@option{-mimpure-text}, used in addition to @option{-shared}, tells
the compiler to not pass @option{-z text} to the linker when linking a
shared object. Using this option, you can link position-dependent
-code into a shared object.
+code into a shared object.
@option{-mimpure-text} suppresses the ``relocations remain against
allocatable but non-writable sections'' linker error message.
@@ -6261,35 +6269,18 @@ This option is only available on SunOS and Solaris.
@opindex mv8
@opindex msparclite
These two options select variations on the SPARC architecture.
-
-By default (unless specifically configured for the Fujitsu SPARClite),
-GCC generates code for the v7 variant of the SPARC architecture.
-
-@option{-mv8} will give you SPARC v8 code. The only difference from v7
-code is that the compiler emits the integer multiply and integer
-divide instructions which exist in SPARC v8 but not in SPARC v7.
-
-@option{-msparclite} will give you SPARClite code. This adds the integer
-multiply, integer divide step and scan (@code{ffs}) instructions which
-exist in SPARClite but not in SPARC v7.
-
These options are deprecated and will be deleted in a future GCC release.
They have been replaced with @option{-mcpu=xxx}.
@item -mcypress
@itemx -msupersparc
+@itemx -mf930
+@itemx -mf934
@opindex mcypress
@opindex msupersparc
-These two options select the processor for which the code is optimized.
-
-With @option{-mcypress} (the default), the compiler optimizes code for the
-Cypress CY7C602 chip, as used in the SPARCStation/SPARCServer 3xx series.
-This is also appropriate for the older SPARCStation 1, 2, IPX etc.
-
-With @option{-msupersparc} the compiler optimizes code for the SuperSPARC cpu, as
-used in the SPARCStation 10, 1000 and 2000 series. This flag also enables use
-of the full SPARC v8 instruction set.
-
+@opindex -mf930
+@opindex -mf934
+These four options select the processor for which the code is optimized.
These options are deprecated and will be deleted in a future GCC release.
They have been replaced with @option{-mcpu=xxx}.
@@ -6298,7 +6289,7 @@ They have been replaced with @option{-mcpu=xxx}.
Set the instruction set, register set, and instruction scheduling parameters
for machine type @var{cpu_type}. Supported values for @var{cpu_type} are
@samp{v7}, @samp{cypress}, @samp{v8}, @samp{supersparc}, @samp{sparclite},
-@samp{hypersparc}, @samp{sparclite86x}, @samp{f930}, @samp{f934},
+@samp{f930}, @samp{f934}, @samp{hypersparc}, @samp{sparclite86x},
@samp{sparclet}, @samp{tsc701}, @samp{v9}, @samp{ultrasparc}, and
@samp{ultrasparc3}.
@@ -6317,6 +6308,41 @@ implementations.
v9: ultrasparc, ultrasparc3
@end smallexample
+By default (unless configured otherwise), GCC generates code for the V7
+variant of the SPARC architecture. With @option{-mcpu=cypress}, the compiler
+additionally optimizes it for the Cypress CY7C602 chip, as used in the
+SPARCStation/SPARCServer 3xx series. This is also appropriate for the older
+SPARCStation 1, 2, IPX etc.
+
+With @option{-mcpu=v8}, GCC generates code for the V8 variant of the SPARC
+architecture. The only difference from V7 code is that the compiler emits
+the integer multiply and integer divide instructions which exist in SPARC-V8
+but not in SPARC-V7. With @option{-mcpu=supersparc}, the compiler additionally
+optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and
+2000 series.
+
+With @option{-mcpu=sparclite}, GCC generates code for the SPARClite variant of
+the SPARC architecture. This adds the integer multiply, integer divide step
+and scan (@code{ffs}) instructions which exist in SPARClite but not in SPARC-V7.
+With @option{-mcpu=f930}, the compiler additionally optimizes it for the
+Fujitsu MB86930 chip, which is the original SPARClite, with no FPU. With
+@option{-mcpu=f934}, the compiler additionally optimizes it for the Fujitsu
+MB86934 chip, which is the more recent SPARClite with FPU.
+
+With @option{-mcpu=sparclet}, GCC generates code for the SPARClet variant of
+the SPARC architecture. This adds the integer multiply, multiply/accumulate,
+integer divide step and scan (@code{ffs}) instructions which exist in SPARClet
+but not in SPARC-V7. With @option{-mcpu=tsc701}, the compiler additionally
+optimizes it for the TEMIC SPARClet chip.
+
+With @option{-mcpu=v9}, GCC generates code for the V9 variant of the SPARC
+architecture. This adds 64-bit integer and floating-point move instructions,
+3 additional floating-point condition code registers and conditional move
+instructions. With @option{-mcpu=ultrasparc}, the compiler additionally
+optimizes it for the Sun UltraSPARC I/II chips. With
+@option{-mcpu=ultrasparc3}, the compiler additionally optimizes it for the
+Sun UltraSPARC III chip.
+
@item -mtune=@var{cpu_type}
@opindex mtune
Set the instruction scheduling parameters for machine type
@@ -6330,36 +6356,25 @@ that select a particular cpu implementation. Those are @samp{cypress},
@samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc}, and
@samp{ultrasparc3}.
+@item -mv8plus
+@itemx -mno-v8plus
+@opindex -mv8plus
+@opindex -mno-v8plus
+With @option{-mv8plus}, GCC generates code for the SPARC-V8+ ABI. The
+difference from the V8 ABI is that the global and out registers are
+considered 64-bit wide. This is enabled by default on Solaris in 32-bit
+mode for all SPARC-V9 processors.
+
+@item -mvis
+@itemx -mno-vis
+@opindex -mvis
+@opindex -mno-vis
+With @option{-mvis}, GCC generates code that takes advantage of the UltraSPARC
+Visual Instruction Set extensions. The default is @option{-mno-vis}.
@end table
-These @samp{-m} switches are supported in addition to the above
-on the SPARCLET processor.
-
-@table @gcctabopt
-@item -mlittle-endian
-@opindex mlittle-endian
-Generate code for a processor running in little-endian mode.
-
-@item -mlive-g0
-@opindex mlive-g0
-Treat register @code{%g0} as a normal register.
-GCC will continue to clobber it as necessary but will not assume
-it always reads as 0.
-
-@item -mbroken-saverestore
-@opindex mbroken-saverestore
-Generate code that does not use non-trivial forms of the @code{save} and
-@code{restore} instructions. Early versions of the SPARCLET processor do
-not correctly handle @code{save} and @code{restore} instructions used with
-arguments. They correctly handle them used without arguments. A @code{save}
-instruction used without arguments increments the current window pointer
-but does not allocate a new stack frame. It is assumed that the window
-overflow trap handler will properly handle this case as will interrupt
-handlers.
-@end table
-
-These @samp{-m} switches are supported in addition to the above
-on SPARC V9 processors in 64-bit environments.
+These @samp{-m} options are supported in addition to the above
+on SPARC-V9 processors in 64-bit environments:
@table @gcctabopt
@item -mlittle-endian
@@ -6410,7 +6425,7 @@ Programs are statically linked, PIC is not supported.
@opindex mno-stack-bias
With @option{-mstack-bias}, GCC assumes that the stack pointer, and
frame pointer if present, are offset by @minus{}2047 which must be added back
-when making stack frame references.
+when making stack frame references. This is the default in 64-bit mode.
Otherwise, assume no such offset is present.
@end table
@@ -6438,15 +6453,19 @@ This is a synonym for @option{-mapcs-frame}.
@opindex mapcs-26
Generate code for a processor running with a 26-bit program counter,
and conforming to the function calling standards for the APCS 26-bit
-option. This option replaces the @option{-m2} and @option{-m3} options
-of previous releases of the compiler.
+option.
+
+This option is deprecated. Future releases of the GCC will only support
+generating code that runs in apcs-32 mode.
@item -mapcs-32
@opindex mapcs-32
Generate code for a processor running with a 32-bit program counter,
and conforming to the function calling standards for the APCS 32-bit
-option. This option replaces the @option{-m6} option of previous releases
-of the compiler.
+option.
+
+This flag is deprecated. Future releases of GCC will make this flag
+unconditional.
@ignore
@c not currently implemented
@@ -6547,7 +6566,7 @@ synthesize the access as a series of byte accesses. The compiler can
still use word accesses to load half-word data if it knows that the
address is aligned to a word boundary.
-This option is ignored when compiling for ARM architecture 4 or later,
+This option has no effect when compiling for ARM architecture 4 or later,
since these processors have instructions to directly access half-word
objects in memory.
@@ -6562,21 +6581,11 @@ Note that you cannot use this option to access unaligned word objects,
since the processor will only fetch one 32-bit aligned object from
memory.
-The default setting for most targets is @option{-mno-alignment-traps}, since
-this produces better code when there are no half-word memory
-instructions available.
-
-@item -mshort-load-bytes
-@itemx -mno-short-load-words
-@opindex mshort-load-bytes
-@opindex mno-short-load-words
-These are deprecated aliases for @option{-malignment-traps}.
+The default setting is @option{-malignment-traps}, since this produces
+code that will also run on processors implementing ARM architecture
+version 6 or later.
-@item -mno-short-load-bytes
-@itemx -mshort-load-words
-@opindex mno-short-load-bytes
-@opindex mshort-load-words
-This are deprecated aliases for @option{-mno-alignment-traps}.
+This option is deprecated and will be removed in the next release of GCC.
@item -mcpu=@var{name}
@opindex mcpu
@@ -7178,7 +7187,7 @@ option are incompatible.
@itemx -malign-power
@opindex malign-natural
@opindex malign-power
-On AIX, Darwin, and 64-bit PowerPC Linux, the option
+On AIX, Darwin, and 64-bit PowerPC GNU/Linux, the option
@option{-malign-natural} overrides the ABI-defined alignment of larger
types, such as floating-point doubles, on their natural size-based boundary.
The option @option{-malign-power} instructs GCC to follow the ABI-specified
@@ -7310,10 +7319,10 @@ libraries.
@item -mprioritize-restricted-insns=@var{priority}
@opindex mprioritize-restricted-insns
-This option controls the priority that is assigned to
-dispatch-slot restricted instructions during the second scheduling
-pass. The argument @var{priority} takes the value @var{0/1/2} to assign
-@var{no/highest/second-highest} priority to dispatch slot restricted
+This option controls the priority that is assigned to
+dispatch-slot restricted instructions during the second scheduling
+pass. The argument @var{priority} takes the value @var{0/1/2} to assign
+@var{no/highest/second-highest} priority to dispatch slot restricted
instructions.
@item -msched-costly-dep=@var{dependence_type}
@@ -7321,12 +7330,12 @@ instructions.
This option controls which dependences are considered costly
by the target during instruction scheduling. The argument
@var{dependence_type} takes one of the following values:
-@var{no}: no dependence is costly,
-@var{all}: all dependences are costly,
+@var{no}: no dependence is costly,
+@var{all}: all dependences are costly,
@var{true_store_to_load}: a true dependence from store to load is costly,
@var{store_to_load}: any dependence from store to load is costly,
@var{number}: any dependence which latency >= @var{number} is costly.
-
+
@item -minsert-sched-nops=@var{scheme}
@opindex minsert-sched-nops
This option controls which nop insertion scheme will be used during
@@ -7338,7 +7347,7 @@ according to the scheduler's grouping.
@var{regroup_exact}: Insert nops to force costly dependent insns into
separate groups. Insert exactly as many nops as needed to force an insn
to a new group, according to the estimated processor grouping.
-@var{number}: Insert nops to force costly dependent insns into
+@var{number}: Insert nops to force costly dependent insns into
separate groups. Insert @var{number} nops to force an insn to a new group.
@item -mcall-sysv
@@ -7563,8 +7572,8 @@ These options are defined for all architectures running the Darwin operating
system. They are useful for compatibility with other Mac OS compilers.
@table @gcctabopt
-@item -all_load
-@opindex all_load
+@item -all_load
+@opindex all_load
Loads all members of static archive libraries.
See man ld(1) for more information.
@@ -7578,7 +7587,7 @@ to be fatal.
Causes the output file to be marked such that the dynamic linker will
bind all undefined references when the file is loaded or launched.
-@item -bundle
+@item -bundle
@opindex bundle
Produce a Mach-o bundle format file.
See man ld(1) for more information.
@@ -7591,63 +7600,63 @@ output file being linked. See man ld(1) for more information.
@item -allowable_client @var{client_name}
@itemx -arch_only
-@itemx -client_name
+@itemx -client_name
@itemx -compatibility_version
-@itemx -current_version
+@itemx -current_version
@itemx -dependency-file
-@itemx -dylib_file
+@itemx -dylib_file
@itemx -dylinker_install_name
@itemx -dynamic
-@itemx -dynamiclib
-@itemx -exported_symbols_list
+@itemx -dynamiclib
+@itemx -exported_symbols_list
@itemx -filelist
-@itemx -flat_namespace
+@itemx -flat_namespace
@itemx -force_cpusubtype_ALL
-@itemx -force_flat_namespace
+@itemx -force_flat_namespace
@itemx -headerpad_max_install_names
-@itemx -image_base
+@itemx -image_base
@itemx -init
@itemx -install_name
@itemx -keep_private_externs
@itemx -multi_module
-@itemx -multiply_defined
-@itemx -multiply_defined_unused
-@itemx -noall_load
+@itemx -multiply_defined
+@itemx -multiply_defined_unused
+@itemx -noall_load
@itemx -nofixprebinding
@itemx -nomultidefs
-@itemx -noprebind
+@itemx -noprebind
@itemx -noseglinkedit
-@itemx -pagezero_size
+@itemx -pagezero_size
@itemx -prebind
@itemx -prebind_all_twolevel_modules
@itemx -private_bundle
@itemx -read_only_relocs
-@itemx -sectalign
-@itemx -sectobjectsymbols
+@itemx -sectalign
+@itemx -sectobjectsymbols
@itemx -whyload
-@itemx -seg1addr
+@itemx -seg1addr
@itemx -sectcreate
@itemx -sectobjectsymbols
@itemx -sectorder
@itemx -seg_addr_table
@itemx -seg_addr_table_filename
@itemx -seglinkedit
-@itemx -segprot
+@itemx -segprot
@itemx -segs_read_only_addr
@itemx -segs_read_write_addr
-@itemx -single_module
+@itemx -single_module
@itemx -static
@itemx -sub_library
-@itemx -sub_umbrella
+@itemx -sub_umbrella
@itemx -twolevel_namespace
@itemx -umbrella
@itemx -undefined
@itemx -unexported_symbols_list
@itemx -weak_reference_mismatches
-@itemx -whatsloaded
+@itemx -whatsloaded
@opindex allowable_client
-@opindex arch_only
+@opindex arch_only
@opindex client_name
@opindex compatibility_version
@opindex current_version
@@ -7657,35 +7666,35 @@ output file being linked. See man ld(1) for more information.
@opindex dynamic
@opindex dynamiclib
@opindex exported_symbols_list
-@opindex filelist
-@opindex flat_namespace
+@opindex filelist
+@opindex flat_namespace
@opindex force_cpusubtype_ALL
@opindex force_flat_namespace
@opindex headerpad_max_install_names
@opindex image_base
-@opindex init
+@opindex init
@opindex install_name
@opindex keep_private_externs
-@opindex multi_module
+@opindex multi_module
@opindex multiply_defined
-@opindex multiply_defined_unused
-@opindex noall_load
+@opindex multiply_defined_unused
+@opindex noall_load
@opindex nofixprebinding
-@opindex nomultidefs
+@opindex nomultidefs
@opindex noprebind
-@opindex noseglinkedit
+@opindex noseglinkedit
@opindex pagezero_size
@opindex prebind
@opindex prebind_all_twolevel_modules
-@opindex private_bundle
+@opindex private_bundle
@opindex read_only_relocs
-@opindex sectalign
-@opindex sectobjectsymbols
-@opindex whyload
+@opindex sectalign
+@opindex sectobjectsymbols
+@opindex whyload
@opindex seg1addr
-@opindex sectcreate
-@opindex sectobjectsymbols
-@opindex sectorder
+@opindex sectcreate
+@opindex sectobjectsymbols
+@opindex sectorder
@opindex seg_addr_table
@opindex seg_addr_table_filename
@opindex seglinkedit
@@ -8176,7 +8185,7 @@ These synonyms are deprecated.
@item -mfpmath=@var{unit}
@opindex march
-generate floating point arithmetics for selected unit @var{unit}. the choices
+Generate floating point arithmetics for selected unit @var{unit}. The choices
for @var{unit} are:
@table @samp
@@ -8202,24 +8211,17 @@ For i387 you need to use @option{-march=@var{cpu-type}}, @option{-msse} or
@option{-msse2} switches to enable SSE extensions and make this option
effective. For x86-64 compiler, these extensions are enabled by default.
-The resulting code should be considerably faster in majority of cases and avoid
+The resulting code should be considerably faster in the majority of cases and avoid
the numerical instability problems of 387 code, but may break some existing
code that expects temporaries to be 80bit.
-This is the default choice for x86-64 compiler.
-
-@item pni
-Use all SSE extensions enabled by @option{-msse2} as well as the new
-SSE extensions in Prescott New Instructions. @option{-mpni} also
-enables 2 builtin functions, @code{__builtin_ia32_monitor} and
-@code{__builtin_ia32_mwait}, for new instructions @code{monitor} and
-@code{mwait}.
+This is the default choice for the x86-64 compiler.
@item sse,387
Attempt to utilize both instruction sets at once. This effectively double the
amount of available registers and on chips with separate execution units for
387 and SSE the execution resources too. Use this option with care, as it is
-still experimental, because gcc register allocator does not model separate
+still experimental, because the gcc register allocator does not model separate
functional units well resulting in instable performance.
@end table
@@ -8292,28 +8294,28 @@ without that switch.
@itemx -m128bit-long-double
@opindex m96bit-long-double
@opindex m128bit-long-double
-These switches control the size of @code{long double} type. The i386
-application binary interface specifies the size to be 96 bits,
+These switches control the size of @code{long double} type. The i386
+application binary interface specifies the size to be 96 bits,
so @option{-m96bit-long-double} is the default in 32 bit mode.
Modern architectures (Pentium and newer) would prefer @code{long double}
-to be aligned to an 8 or 16 byte boundary. In arrays or structures
-conforming to the ABI, this would not be possible. So specifying a
+to be aligned to an 8 or 16 byte boundary. In arrays or structures
+conforming to the ABI, this would not be possible. So specifying a
@option{-m128bit-long-double} will align @code{long double}
to a 16 byte boundary by padding the @code{long double} with an additional
-32 bit zero.
+32 bit zero.
In the x86-64 compiler, @option{-m128bit-long-double} is the default choice as
its ABI specifies that @code{long double} is to be aligned on 16 byte boundary.
-
+
Notice that neither of these options enable any extra precision over the x87
-standard of 80 bits for a @code{long double}.
+standard of 80 bits for a @code{long double}.
@strong{Warning:} if you override the default value for your target ABI, the
-structures and arrays containing @code{long double} will change their size as
-well as function calling convention for function taking @code{long double}
-will be modified. Hence they will not be binary compatible with arrays or
-structures in code compiled without that switch.
+structures and arrays containing @code{long double} variables will change
+their size as well as function calling convention for function taking
+@code{long double} will be modified. Hence they will not be binary
+compatible with arrays or structures in code compiled without that switch.
@item -msvr3-shlib
@@ -8396,8 +8398,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}.
@itemx -mno-sse
@item -msse2
@itemx -mno-sse2
-@item -mpni
-@itemx -mno-pni
+@item -msse3
+@itemx -mno-sse3
@item -m3dnow
@itemx -mno-3dnow
@opindex mmmx
@@ -8407,7 +8409,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}.
@opindex m3dnow
@opindex mno-3dnow
These switches enable or disable the use of built-in functions that allow
-direct access to the MMX, SSE and 3Dnow extensions of the instruction set.
+direct access to the MMX, SSE, SSE2, SSE3 and 3Dnow extensions of the
+instruction set.
@xref{X86 Built-in Functions}, for details of the functions enabled
and disabled by these switches.
@@ -9569,7 +9572,7 @@ the compiler. This setting is the default.
@item -mno-app-regs
@opindex mno-app-regs
This option will cause r2 and r5 to be treated as fixed registers.
-
+
@item -mv850e1
@opindex mv850e1
Specify that the target processor is the V850E1. The preprocessor
@@ -9919,7 +9922,7 @@ Generate code for a big endian target. This is the default for HP-UX@.
@item -mlittle-endian
@opindex mlittle-endian
Generate code for a little endian target. This is the default for AIX5
-and Linux.
+and GNU/Linux.
@item -mgnu-as
@itemx -mno-gnu-as
@@ -10088,8 +10091,9 @@ generates IEEE floating-point instructions. This is the default.
@opindex mno-backchain
Generate (or do not generate) code which maintains an explicit
backchain within the stack frame that points to the caller's frame.
-This is currently needed to allow debugging. The default is to
-generate the backchain.
+This may be needed to allow debugging using tools that do not understand
+DWARF-2 call frame information. The default is not to generate the
+backchain.
@item -msmall-exec
@itemx -mno-small-exec
@@ -10106,8 +10110,8 @@ which does not have this limitation.
@opindex m64
@opindex m31
When @option{-m31} is specified, generate code compliant to the
-Linux for S/390 ABI@. When @option{-m64} is specified, generate
-code compliant to the Linux for zSeries ABI@. This allows GCC in
+GNU/Linux for S/390 ABI@. When @option{-m64} is specified, generate
+code compliant to the GNU/Linux for zSeries ABI@. This allows GCC in
particular to generate 64-bit instructions. For the @samp{s390}
targets, the default is @option{-m31}, while the @samp{s390x}
targets default to @option{-m64}.
@@ -10116,14 +10120,14 @@ targets default to @option{-m64}.
@itemx -mesa
@opindex mzarch
@opindex mesa
-When @option{-mzarch} is specified, generate code using the
-instructions available on z/Architecture.
-When @option{-mesa} is specified, generate code using the
+When @option{-mzarch} is specified, generate code using the
+instructions available on z/Architecture.
+When @option{-mesa} is specified, generate code using the
instructions available on ESA/390. Note that @option{-mesa} is
not possible with @option{-m64}.
-When generating code compliant to the Linux for S/390 ABI,
+When generating code compliant to the GNU/Linux for S/390 ABI,
the default is @option{-mesa}. When generating code compliant
-to the Linux for zSeries ABI, the default is @option{-mzarch}.
+to the GNU/Linux for zSeries ABI, the default is @option{-mzarch}.
@item -mmvcle
@itemx -mno-mvcle
@@ -11094,26 +11098,18 @@ function and its call site. (On some platforms,
function, so the call site information may not be available to the
profiling functions otherwise.)
-@example
+@smallexample
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
-@end example
+@end smallexample
The first argument is the address of the start of the current function,
which may be looked up exactly in the symbol table.
-This instrumentation is also done for functions expanded inline in other
-functions. The profiling calls will indicate where, conceptually, the
-inline function is entered and exited. This means that addressable
-versions of such functions must be available. If all your uses of a
-function are expanded inline, this may mean an additional expansion of
-code size. If you use @samp{extern inline} in your C code, an
-addressable version of such functions must be provided. (This is
-normally the case anyways, but if you get lucky and the optimizer always
-expands the functions inline, you might have gotten away without
-providing static copies.)
+This currently disables function inlining. This restriction is
+expected to be removed in future releases.
A function may be given the attribute @code{no_instrument_function}, in
which case this instrumentation will not be done. This can be used, for
@@ -11579,10 +11575,10 @@ appropriate options and the option @option{-aux-info}. Then run
the existing @samp{.X} file because it is newer than the source file.
For example:
-@example
+@smallexample
gcc -Dfoo=bar file1.c -aux-info file1.X
protoize *.c
-@end example
+@end smallexample
@noindent
You need to include the special files along with the rest in the
diff --git a/gcc/doc/libgcc.texi b/gcc/doc/libgcc.texi
index af6f7be3e59..41e214e1612 100644
--- a/gcc/doc/libgcc.texi
+++ b/gcc/doc/libgcc.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2003 Free Software Foundation, Inc.
+@c Copyright (C) 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@c Contributed by Aldy Hernandez <aldy@quesejoda.com>
@@ -40,7 +40,7 @@ and @code{@w{unsigned int}} correspond to @code{SImode}; @code{long} and
* Integer library routines::
* Soft float library routines::
* Exception handling routines::
-* Miscellaneous routines::
+* Miscellaneous routines::
@end menu
@node Integer library routines
@@ -443,7 +443,7 @@ is NaN, and @var{a} is strictly greater than @var{b}.
document me!
-@example
+@smallexample
_Unwind_DeleteException
_Unwind_Find_FDE
_Unwind_ForcedUnwind
@@ -472,7 +472,7 @@ document me!
__register_frame_info_table
__register_frame_info_table_bases
__register_frame_table
-@end example
+@end smallexample
@node Miscellaneous routines
@section Miscellaneous runtime library routines
diff --git a/gcc/doc/makefile.texi b/gcc/doc/makefile.texi
index 1995e5824a3..d504bc0baa2 100644
--- a/gcc/doc/makefile.texi
+++ b/gcc/doc/makefile.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+@c Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -13,9 +13,17 @@ This is the default target. Depending on what your build/host/target
configuration is, it coordinates all the things that need to be built.
@item doc
-Produce info-formatted documentation. Also, @samp{make dvi} is
-available for DVI-formatted documentation, and @samp{make
-generated-manpages} to generate man pages.
+Produce info-formatted documentation and man pages. Essentially it
+calls @samp{make man} and @samp{make info}.
+
+@item dvi
+Produce DVI-formatted documentation.
+
+@item man
+Generate man pages.
+
+@item info
+Generate info-formatted pages.
@item mostlyclean
Delete the files made while building the compiler.
@@ -31,6 +39,16 @@ Distclean plus any file that can be generated from other files. Note
that additional tools may be required beyond what is normally needed to
build gcc.
+@item srcextra
+Generates files in the source directory that do not exist in CVS but
+should go into a release tarball. One example is @file{gcc/c-parse.c}
+which is generated from the CVS source file @file{gcc/c-parse.in}.
+
+@item srcinfo
+@itemx srcman
+Copies the info-formatted and manpage documentation into the source
+directory usually for the purpose of generating a release tarball.
+
@item install
Installs gcc.
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index f4f799dd86a..a77e8caf183 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1996, 1998, 1999, 2000, 2001,
-@c 2002, 2003 Free Software Foundation, Inc.
+@c 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -181,7 +181,7 @@ this pattern. @xref{Insn Attributes}.
Here is an actual example of an instruction pattern, for the 68000/68020.
-@example
+@smallexample
(define_insn "tstsi"
[(set (cc0)
(match_operand:SI 0 "general_operand" "rm"))]
@@ -192,12 +192,12 @@ Here is an actual example of an instruction pattern, for the 68000/68020.
return \"tstl %0\";
return \"cmpl #0,%0\";
@}")
-@end example
+@end smallexample
@noindent
This can also be written using braced strings:
-@example
+@smallexample
(define_insn "tstsi"
[(set (cc0)
(match_operand:SI 0 "general_operand" "rm"))]
@@ -207,7 +207,7 @@ This can also be written using braced strings:
return "tstl %0";
return "cmpl #0,%0";
@})
-@end example
+@end smallexample
This is an instruction that sets the condition codes based on the value of
a general operand. It has no condition, so any insn whose RTL description
@@ -1256,7 +1256,7 @@ instruction is defined:
@dots{})
@end smallexample
@end ifset
-GCC can only handle one commutative pair in an asm; if you use more,
+GCC can only handle one commutative pair in an asm; if you use more,
the compiler may fail.
@cindex @samp{#} in constraint
@@ -3429,7 +3429,7 @@ built. It is intended to handle non-trivial actions needed along
the abnormal return path.
The address of the exception handler to which the function should return
-is passed as operand to this pattern. It will normally need to copied by
+is passed as operand to this pattern. It will normally need to copied by
the pattern to some special register or memory location.
If the pattern needs to determine the location of the target call
frame in order to do so, it may use @code{EH_RETURN_STACKADJ_RTX},
@@ -3548,24 +3548,24 @@ Every machine description must have a named pattern for each of the
conditional branch names @samp{b@var{cond}}. The recognition template
must always have the form
-@example
+@smallexample
(set (pc)
(if_then_else (@var{cond} (cc0) (const_int 0))
(label_ref (match_operand 0 "" ""))
(pc)))
-@end example
+@end smallexample
@noindent
In addition, every machine description must have an anonymous pattern
for each of the possible reverse-conditional branches. Their templates
look like
-@example
+@smallexample
(set (pc)
(if_then_else (@var{cond} (cc0) (const_int 0))
(pc)
(label_ref (match_operand 0 "" ""))))
-@end example
+@end smallexample
@noindent
They are necessary because jump optimization can turn direct-conditional
@@ -3575,7 +3575,7 @@ It is often convenient to use the @code{match_operator} construct to
reduce the number of patterns that must be specified for branches. For
example,
-@example
+@smallexample
(define_insn ""
[(set (pc)
(if_then_else (match_operator 0 "comparison_operator"
@@ -3584,20 +3584,20 @@ example,
(label_ref (match_operand 1 "" ""))))]
"@var{condition}"
"@dots{}")
-@end example
+@end smallexample
In some cases machines support instructions identical except for the
machine mode of one or more operands. For example, there may be
``sign-extend halfword'' and ``sign-extend byte'' instructions whose
patterns are
-@example
+@smallexample
(set (match_operand:SI 0 @dots{})
(extend:SI (match_operand:HI 1 @dots{})))
(set (match_operand:SI 0 @dots{})
(extend:SI (match_operand:QI 1 @dots{})))
-@end example
+@end smallexample
@noindent
Constant integers do not specify a machine mode, so an instruction to
@@ -3871,7 +3871,7 @@ first operand.
@item
In combinations of @code{neg}, @code{mult}, @code{plus}, and
@code{minus}, the @code{neg} operations (if any) will be moved inside
-the operations as far as possible. For instance,
+the operations as far as possible. For instance,
@code{(neg (mult A B))} is canonicalized as @code{(mult (neg A) B)}, but
@code{(plus (mult (neg A) B) C)} is canonicalized as
@code{(minus A (mult B C))}.
@@ -3910,26 +3910,26 @@ A machine that has an instruction that performs a bitwise logical-and of one
operand with the bitwise negation of the other should specify the pattern
for that instruction as
-@example
+@smallexample
(define_insn ""
[(set (match_operand:@var{m} 0 @dots{})
(and:@var{m} (not:@var{m} (match_operand:@var{m} 1 @dots{}))
(match_operand:@var{m} 2 @dots{})))]
"@dots{}"
"@dots{}")
-@end example
+@end smallexample
@noindent
Similarly, a pattern for a ``NAND'' instruction should be written
-@example
+@smallexample
(define_insn ""
[(set (match_operand:@var{m} 0 @dots{})
(ior:@var{m} (not:@var{m} (match_operand:@var{m} 1 @dots{}))
(not:@var{m} (match_operand:@var{m} 2 @dots{}))))]
"@dots{}"
"@dots{}")
-@end example
+@end smallexample
In both cases, it is not necessary to include patterns for the many
logically equivalent RTL expressions.
@@ -3944,9 +3944,9 @@ and @code{(not:@var{m} (xor:@var{m} @var{x} @var{y}))}.
The sum of three items, one of which is a constant, will only appear in
the form
-@example
+@smallexample
(plus:@var{m} (plus:@var{m} @var{x} @var{y}) @var{constant})
-@end example
+@end smallexample
@item
On machines that do not use @code{cc0},
@@ -5482,13 +5482,13 @@ processors.
The task of exploiting more processor parallelism is solved by an
instruction scheduler. For a better solution to this problem, the
instruction scheduler has to have an adequate description of the
-processor parallelism (or @dfn{pipeline description}). Currently GCC
+processor parallelism (or @dfn{pipeline description}). Currently GCC
provides two alternative ways to describe processor parallelism,
both described below. The first method is outlined in the next section;
it was once the only method provided by GCC, and thus is used in a number
of exiting ports. The second, and preferred method, specifies functional
unit reservations for groups of instructions with the aid of @dfn{regular
-expressions}. This is called the @dfn{automaton based description}.
+expressions}. This is called the @dfn{automaton based description}.
The GCC instruction scheduler uses a @dfn{pipeline hazard recognizer} to
figure out the possibility of the instruction issue by the processor
@@ -5657,7 +5657,7 @@ The following optional construction describes names of automata
generated and used for the pipeline hazards recognition. Sometimes
the generated finite state automaton used by the pipeline hazard
recognizer is large. If we use more than one automaton and bind functional
-units to the automata, the total size of the automata is usually
+units to the automata, the total size of the automata is usually
less than the size of the single automaton. If there is no one such
construction, only one finite state automaton is generated.
@@ -5771,7 +5771,7 @@ expression according to the following syntax:
allof = allof "+" repeat
| repeat
-
+
repeat = element "*" number
| element
@@ -6078,7 +6078,7 @@ construction
The old instruction level parallelism description and the pipeline
hazards recognizer based on it have the following drawbacks in
comparison with the @acronym{DFA}-based ones:
-
+
@itemize @bullet
@item
Each functional unit is believed to be reserved at the instruction
diff --git a/gcc/doc/objc.texi b/gcc/doc/objc.texi
index a0c40f7296e..481b51c09b8 100644
--- a/gcc/doc/objc.texi
+++ b/gcc/doc/objc.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -41,7 +41,7 @@ Suppose for example you have a @code{FileStream} class that declares
@code{Stdin}, @code{Stdout} and @code{Stderr} as global variables, like
below:
-@example
+@smallexample
FileStream *Stdin = nil;
FileStream *Stdout = nil;
@@ -59,7 +59,7 @@ FileStream *Stderr = nil;
/* Other methods here */
@@end
-@end example
+@end smallexample
In this example, the initialization of @code{Stdin}, @code{Stdout} and
@code{Stderr} in @code{+initialize} occurs too late. The programmer can
@@ -73,7 +73,7 @@ just before entering @code{main}.
The correct solution of the above problem is to use the @code{+load}
method instead of @code{+initialize}:
-@example
+@smallexample
@@implementation FileStream
@@ -87,7 +87,7 @@ method instead of @code{+initialize}:
/* Other methods here */
@@end
-@end example
+@end smallexample
The @code{+load} is a method that is not overridden by categories. If a
class and a category of it both implement @code{+load}, both methods are
@@ -258,12 +258,12 @@ compiler on an i386 machine:
@item Objective-C type
@tab Compiler encoding
@item
-@example
+@smallexample
int a[10];
-@end example
+@end smallexample
@tab @code{[10i]}
@item
-@example
+@smallexample
struct @{
int i;
float f[3];
@@ -271,7 +271,7 @@ struct @{
int b:2;
char c;
@}
-@end example
+@end smallexample
@tab @code{@{?=i[3f]b128i3b131i2c@}}
@end multitable
@@ -343,7 +343,7 @@ Here is an example of how to use this feature. Suppose you want to
implement a class whose instances hold a weak pointer reference; the
following class does this:
-@example
+@smallexample
@@interface WeakPointer : Object
@{
@@ -375,7 +375,7 @@ following class does this:
@@end
-@end example
+@end smallexample
Weak pointers are supported through a new type character specifier
represented by the @samp{!} character. The
@@ -391,9 +391,9 @@ GNU Objective-C provides constant string objects that are generated
directly by the compiler. You declare a constant string object by
prefixing a C constant string with the character @samp{@@}:
-@example
+@smallexample
id myString = @@"this is a constant string object";
-@end example
+@end smallexample
The constant string objects are by default instances of the
@code{NXConstantString} class which is provided by the GNU Objective-C
@@ -406,7 +406,7 @@ a new command line options @option{-fconstant-string-class=@var{class-name}}.
The provided class should adhere to a strict structure, the same
as @code{NXConstantString}'s structure:
-@example
+@smallexample
@@interface MyConstantStringClass
@{
@@ -416,7 +416,7 @@ as @code{NXConstantString}'s structure:
@}
@@end
-@end example
+@end smallexample
@code{NXConstantString} inherits from @code{Object}; user class
libraries may choose to inherit the customized constant string class
@@ -455,9 +455,9 @@ forgotten, we are documenting it here.
The keyword @code{@@compatibility_alias} allows you to define a class name
as equivalent to another class name. For example:
-@example
+@smallexample
@@compatibility_alias WOApplication GSWApplication;
-@end example
+@end smallexample
tells the compiler that each time it encounters @code{WOApplication} as
a class name, it should replace it with @code{GSWApplication} (that is,
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index d3f50d0c233..6fcce634f81 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 1988, 1989, 1992, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+@c Copyright (C) 1988, 1989, 1992, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
@c Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -308,16 +308,16 @@ Operands of expressions are accessed using the macros @code{XEXP},
two arguments: an expression-pointer (RTX) and an operand number
(counting from zero). Thus,
-@example
+@smallexample
XEXP (@var{x}, 2)
-@end example
+@end smallexample
@noindent
accesses operand 2 of expression @var{x}, as an expression.
-@example
+@smallexample
XINT (@var{x}, 2)
-@end example
+@end smallexample
@noindent
accesses the same operand as an integer. @code{XSTR}, used in the same
@@ -1850,9 +1850,9 @@ Represents the signed product of the values represented by @var{x} and
Some machines support a multiplication that generates a product wider
than the operands. Write the pattern for this as
-@example
+@smallexample
(mult:@var{m} (sign_extend:@var{m} @var{x}) (sign_extend:@var{m} @var{y}))
-@end example
+@end smallexample
where @var{m} is wider than the modes of @var{x} and @var{y}, which need
not be the same.
@@ -1874,9 +1874,9 @@ Some machines have division instructions in which the operands and
quotient widths are not all the same; you should represent
such instructions using @code{truncate} and @code{sign_extend} as in,
-@example
+@smallexample
(truncate:@var{m1} (div:@var{m2} @var{x} (sign_extend:@var{m2} @var{y})))
-@end example
+@end smallexample
@findex udiv
@cindex unsigned division
@@ -2232,9 +2232,9 @@ operation requires two operands of the same machine mode.
Therefore, the byte-sized operand is enclosed in a conversion
operation, as in
-@example
+@smallexample
(plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
-@end example
+@end smallexample
The conversion operation is not a mere placeholder, because there
may be more than one way of converting from a given starting mode
@@ -2378,7 +2378,7 @@ rest of the register receives an undefined value. Likewise, if
the mode of the register, the rest of the register can be changed in
an undefined way.
-If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
+If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
of a @code{subreg}, then the part of the register specified by the
machine mode of the @code{subreg} is given the value @var{x} and
the rest of the register is not changed.
@@ -2462,7 +2462,7 @@ trouble to describe the values that are stored, but it is essential to
inform the compiler that the registers will be altered, lest it
attempt to keep data in them across the string instruction.
-If @var{x} is @code{(mem:BLK (const_int 0))} or
+If @var{x} is @code{(mem:BLK (const_int 0))} or
@code{(mem:BLK (scratch))}, it means that all memory
locations must be presumed clobbered. If @var{x} is a @code{parallel},
it has the same meaning as a @code{parallel} in a @code{set} expression.
@@ -2567,10 +2567,10 @@ side effect expressions---expressions of code @code{set}, @code{call},
side-effects are computed, and second all the actual side-effects are
performed. For example,
-@example
+@smallexample
(parallel [(set (reg:SI 1) (mem:SI (reg:SI 1)))
(set (mem:SI (reg:SI 1)) (reg:SI 1))])
-@end example
+@end smallexample
@noindent
says unambiguously that the values of hard register 1 and the memory
@@ -2583,13 +2583,13 @@ expect the result of one @code{set} to be available for the next one.
For example, people sometimes attempt to represent a jump-if-zero
instruction this way:
-@example
+@smallexample
(parallel [(set (cc0) (reg:SI 34))
(set (pc) (if_then_else
(eq (cc0) (const_int 0))
(label_ref @dots{})
(pc)))])
-@end example
+@end smallexample
@noindent
But this is incorrect, because it says that the jump condition depends
@@ -2716,9 +2716,9 @@ by is the length in bytes of the machine mode of the containing memory
reference of which this expression serves as the address. Here is an
example of its use:
-@example
+@smallexample
(mem:DF (pre_dec:SI (reg:SI 39)))
-@end example
+@end smallexample
@noindent
This says to decrement pseudo register 39 by the length of a @code{DFmode}
@@ -2878,16 +2878,16 @@ chain delimited by these insns, the @code{NEXT_INSN} and
@code{PREV_INSN} pointers must always correspond: if @var{insn} is not
the first insn,
-@example
+@smallexample
NEXT_INSN (PREV_INSN (@var{insn})) == @var{insn}
-@end example
+@end smallexample
@noindent
is always true and if @var{insn} is not the last insn,
-@example
+@smallexample
PREV_INSN (NEXT_INSN (@var{insn})) == @var{insn}
-@end example
+@end smallexample
@noindent
is always true.
@@ -3459,9 +3459,9 @@ RTL expression code, @code{call}.
@cindex @code{call} usage
A @code{call} expression has two operands, as follows:
-@example
+@smallexample
(call (mem:@var{fm} @var{addr}) @var{nbytes})
-@end example
+@end smallexample
@noindent
Here @var{nbytes} is an operand that represents the number of bytes of
@@ -3479,10 +3479,10 @@ For a subroutine that returns a value whose mode is not @code{BLKmode},
the value is returned in a hard register. If this register's number is
@var{r}, then the body of the call insn looks like this:
-@example
+@smallexample
(set (reg:@var{m} @var{r})
(call (mem:@var{fm} @var{addr}) @var{nbytes}))
-@end example
+@end smallexample
@noindent
This RTL expression makes it clear (to the optimizer passes) that the
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 5026de78745..fc30d13c8b0 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+@c Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -192,8 +192,8 @@ files, kept in the top level directory, are used. FIXME: when is the
the top level one) used?
@item The file @file{config.gcc} is used to handle configuration
-specific to the particular target machine. The file
-@file{config.build} is used to handle configuration specific to the
+specific to the particular target machine. The file
+@file{config.build} is used to handle configuration specific to the
particular build machine. The file @file{config.host} is used to handle
configuration specific to the particular host machine. (In general,
these should only be used for features that cannot reasonably be tested in
@@ -276,7 +276,7 @@ headers to work with GCC, some other headers may also be installed in
@file{config} to be installed on some systems.
GCC installs its own version of @code{<float.h>}, from @file{ginclude/float.h}.
-This is done to cope with command-line options that change the
+This is done to cope with command-line options that change the
representation of floating point numbers.
GCC also installs its own version of @code{<limits.h>}; this is generated
@@ -565,23 +565,21 @@ FIXME: exactly what goes in each of these targets?
Build an @command{etags} @file{TAGS} file in the language subdirectory
in the source tree.
@item info
-Build info documentation for the front end, in the source directory.
+Build info documentation for the front end, in the build directory.
This target is only called by @samp{make bootstrap} if a suitable
version of @command{makeinfo} is available, so does not need to check
-for this, and should fail if an error occurs. This hook is a
-double-colon hook.
+for this, and should fail if an error occurs.
@item dvi
Build DVI documentation for the front end, in the build directory.
This should be done using @code{$(TEXI2DVI)}, with appropriate
@option{-I} arguments pointing to directories of included files.
This hook is a double-colon hook.
-@item generated-manpages
+@item man
Build generated man pages for the front end from Texinfo manuals
-(@pxref{Man Page Generation}), in the source directory. This target
+(@pxref{Man Page Generation}), in the build directory. This target
is only called if the necessary tools are available, but should ignore
errors so as not to stop the build if errors occur; man pages are
optional and the tools involved may be installed in a broken way.
-This hook is a double-colon hook.
@item install-normal
FIXME: what is this target for?
@item install-common
@@ -595,6 +593,18 @@ that should be installed. This hook is a double-colon hook.
@item install-man
Install man pages for the front end. This target should ignore
errors.
+@item srcextra
+Copies its dependencies into the source directory. This generally should
+be used for generated files such as @file{gcc/c-parse.c} which are not
+present in CVS, but should be included in any release tarballs. This
+target will be executed during a bootstrap if
+@samp{--enable-generated-files-in-srcdir} was specified as a
+@file{configure} option.
+@item srcinfo
+@itemx srcman
+Copies its dependencies into the source directory. These targets will be
+executed during a bootstrap if @samp{--enable-generated-files-in-srcdir}
+was specified as a @file{configure} option.
@item uninstall
Uninstall files installed by installing the compiler. This is
currently documented not to be supported, so the hook need not do
@@ -758,6 +768,9 @@ following are also necessary:
An entry for the target architecture in @file{readings.html} on the
GCC web site, with any relevant links.
@item
+Details of the properties of the back end and target architecture in
+@file{backends.html} on the GCC web site.
+@item
A news item about the contribution of support for that target
architecture, in @file{index.html} on the GCC web site.
@item
@@ -788,13 +801,21 @@ here; FIXME: document the others.
@node Test Idioms
@subsection Idioms Used in Test Suite Code
-In the @file{gcc.c-torture} test suites, test cases are commonly named
-after the date on which they were added. This allows people to tell
-at a glance whether a test failure is because of a recently found bug
-that has not yet been fixed, or whether it may be a regression. In
-other test suites, more descriptive names are used. In general C test
-cases have a trailing @file{-@var{n}.c}, starting with @file{-1.c}, in
-case other test cases with similar names are added later.
+In general C testcases have a trailing @file{-@var{n}.c}, starting
+with @file{-1.c}, in case other testcases with similar names are added
+later. If the test is a test of some well-defined feature, it should
+have a name referring to that feature such as
+@file{@var{feature}-1.c}. If it does not test a well-defined feature
+but just happens to exercise a bug somewhere in the compiler, and a
+bug report has been filed for this bug in the GCC bug database,
+@file{pr@var{bug-number}-1.c} is the appropriate form of name.
+Otherwise (for miscellaneous bugs not filed in the GCC bug database),
+and previously more generally, test cases are named after the date on
+which they were added. This allows people to tell at a glance whether
+a test failure is because of a recently found bug that has not yet
+been fixed, or whether it may be a regression, but does not give any
+other information about the bug or where discussion of it may be
+found. Some other language testsuites follow similar conventions.
Test cases should use @code{abort ()} to indicate failure and
@code{exit (0)} for success; on some targets these may be redefined to
@@ -901,13 +922,13 @@ GCC contains the following C language test suites, in the
@table @file
@item gcc.dg
-This contains tests of particular features of the C compiler, using the
+This contains tests of particular features of the C compiler, using the
more modern @samp{dg} harness. Correctness tests for various compiler
features should go here if possible.
-Magic comments determine whether the file
-is preprocessed, compiled, linked or run. In these tests, error and warning
-message texts are compared against expected texts or regular expressions
+Magic comments determine whether the file
+is preprocessed, compiled, linked or run. In these tests, error and warning
+message texts are compared against expected texts or regular expressions
given in comments. These tests are run with the options @samp{-ansi -pedantic}
unless other options are given in the test. Except as noted below they
are not run with multiple optimization options.
@@ -936,7 +957,7 @@ FIXME: describe this.
This contains particular code fragments which have historically broken easily.
These tests are run with multiple optimization options, so tests for features
which only break at some optimization levels belong here. This also contains
-tests to check that certain optimizations occur. It might be worthwhile to
+tests to check that certain optimizations occur. It might be worthwhile to
separate the correctness tests cleanly from the code quality tests, but
it hasn't been done yet.
diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi
index 098c925f751..af33612dd17 100644
--- a/gcc/doc/standards.texi
+++ b/gcc/doc/standards.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+@c Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -79,7 +79,7 @@ as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
A new edition of the ISO C standard was published in 1999 as ISO/IEC
9899:1999, and is commonly known as @dfn{C99}. GCC has incomplete
support for this standard version; see
-@uref{http://gcc.gnu.org/c99status.html} for details. To select this
+@uref{http://gcc.gnu.org/gcc-3.4/c99status.html} for details. To select this
standard, use @option{-std=c99} or @option{-std=iso9899:1999}. (While in
development, drafts of this standard version were referred to as
@dfn{C9X}.)
@@ -145,10 +145,10 @@ GNU C library). @xref{Standard Libraries,,Standard Libraries}.
Most of the compiler support routines used by GCC are present in
@file{libgcc}, but there are a few exceptions. GCC requires the
freestanding environment provide @code{memcpy}, @code{memmove},
-@code{memset} and @code{memcmp}. Some older ports of GCC are
+@code{memset} and @code{memcmp}. Some older ports of GCC are
configured to use the BSD @code{bcopy}, @code{bzero} and @code{bcmp}
functions instead, but this is deprecated for new ports.
-Finally, if @code{__builtin_trap} is used, and the target does
+Finally, if @code{__builtin_trap} is used, and the target does
not implement the @code{trap} pattern, then GCC will emit a call
to @code{abort}.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 7c8471ffad7..d41a5861bef 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,
-@c 2002, 2003 Free Software Foundation, Inc.
+@c 2002, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -356,12 +356,12 @@ used.
The @file{config/rs6000/rs6000.h} target file defines:
-@example
+@smallexample
#define EXTRA_SPECS \
@{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
#define CPP_SYS_DEFAULT ""
-@end example
+@end smallexample
The @file{config/rs6000/sysv.h} target file defines:
@smallexample
@@ -561,7 +561,7 @@ operating system, code the component name as @samp{0}.
For example, here is the definition used for VAX/VMS:
-@example
+@smallexample
#define INCLUDE_DEFAULTS \
@{ \
@{ "GNU_GXX_INCLUDE:", "G++", 1, 1@}, \
@@ -570,7 +570,7 @@ For example, here is the definition used for VAX/VMS:
@{ ".", 0, 0, 0@}, \
@{ 0, 0, 0, 0@} \
@}
-@end example
+@end smallexample
@end defmac
Here is the order of prefixes tried for exec files:
@@ -1253,7 +1253,7 @@ If your aim is to make GCC use the same conventions for laying out
bit-fields as are used by another compiler, here is how to investigate
what the other compiler does. Compile and run this program:
-@example
+@smallexample
struct foo1
@{
char x;
@@ -1276,7 +1276,7 @@ main ()
sizeof (struct foo2));
exit (0);
@}
-@end example
+@end smallexample
If this prints 2 and 5, then the compiler's behavior is what you would
get from @code{PCC_BITFIELD_TYPE_MATTERS}.
@@ -1712,7 +1712,7 @@ int}.
The C++ compiler represents a pointer-to-member-function with a struct
that looks like:
-@example
+@smallexample
struct @{
union @{
void (*fn)();
@@ -1720,7 +1720,7 @@ that looks like:
@};
ptrdiff_t delta;
@};
-@end example
+@end smallexample
@noindent
The C++ compiler must use one bit to indicate whether the function that
@@ -2288,9 +2288,9 @@ in many of the tables described below.
@defmac N_REG_CLASSES
The number of distinct register classes, defined as follows:
-@example
+@smallexample
#define N_REG_CLASSES (int) LIM_REG_CLASSES
-@end example
+@end smallexample
@end defmac
@defmac REG_CLASS_NAMES
@@ -2409,9 +2409,9 @@ to use when it is necessary to copy value @var{x} into a register in class
another, smaller class. On many machines, the following definition is
safe:
-@example
+@smallexample
#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
-@end example
+@end smallexample
Sometimes returning a more restrictive class makes better code. For
example, on the 68000, when @var{x} is an integer constant that is in range
@@ -2623,11 +2623,11 @@ does not store the low-order 32 bits, as would be the case for a normal
register. Therefore, @file{alpha.h} defines @code{CANNOT_CHANGE_MODE_CLASS}
as below:
-@example
+@smallexample
#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
(GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
-@end example
+@end smallexample
@end defmac
Three other special macros describe which operands fit which constraint
@@ -3289,6 +3289,26 @@ column number to use instead.
See the PowerPC's SPE target for an example.
@end defmac
+@defmac DWARF_FRAME_REGNUM (@var{regno})
+
+Define this macro if the target's representation for dwarf registers
+used in .eh_frame or .debug_frame is different from that used in other
+debug info sections. Given a gcc hard register number, this macro
+should return the .eh_frame register number. The default is
+@code{DBX_REGISTER_NUMBER (@var{regno})}.
+
+@end defmac
+
+@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh})
+
+Define this macro to map register numbers held in the call frame info
+that gcc has collected using @code{DWARF_FRAME_REGNUM} to those that
+should be output in .debug_frame (@code{@var{for_eh}} is zero) and
+.eh_frame (@code{@var{for_eh}} is nonzero). The default is to
+return @code{@var{regno}}.
+
+@end defmac
+
@node Elimination
@subsection Eliminating Frame Pointer and Arg Pointer
@@ -3347,12 +3367,12 @@ replacing it with either the frame pointer or the argument pointer,
depending on whether or not the frame pointer has been eliminated.
In this case, you might specify:
-@example
+@smallexample
#define ELIMINABLE_REGS \
@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
@{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
@{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
-@end example
+@end smallexample
Note that the elimination of the argument pointer with the stack pointer is
specified first since that is the preferred elimination.
@@ -3413,18 +3433,18 @@ stack when an instruction attempts to push @var{npushed} bytes.
On some machines, the definition
-@example
+@smallexample
#define PUSH_ROUNDING(BYTES) (BYTES)
-@end example
+@end smallexample
@noindent
will suffice. But on other machines, instructions that appear
to push one byte actually push two bytes in an attempt to maintain
alignment. Then the definition should be
-@example
+@smallexample
#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
-@end example
+@end smallexample
@end defmac
@findex current_function_outgoing_args_size
@@ -3853,7 +3873,7 @@ known.
@code{FUNCTION_VALUE} is not used for return vales with aggregate data
types, because these are returned in another way. See
-@code{STRUCT_VALUE_REGNUM} and related macros, below.
+@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
@end defmac
@defmac FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
@@ -3871,7 +3891,7 @@ If @code{FUNCTION_OUTGOING_VALUE} is not defined,
@code{FUNCTION_OUTGOING_VALUE} is not used for return vales with
aggregate data types, because these are returned in another way. See
-@code{STRUCT_VALUE_REGNUM} and related macros, below.
+@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
@end defmac
@defmac LIBCALL_VALUE (@var{mode})
@@ -3901,9 +3921,9 @@ second of a pair (for a value of type @code{double}, say) need not be
recognized by this macro. So for most machines, this definition
suffices:
-@example
+@smallexample
#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
-@end example
+@end smallexample
If the machine has register windows, so that the caller and the called
function use different registers for the return value, this macro
@@ -4284,9 +4304,9 @@ A function like @code{TARGET_ASM_OUTPUT_MI_THUNK}, except that if
after adding @code{delta}. In particular, if @var{p} is the
adjusted pointer, the following adjustment should be made:
-@example
+@smallexample
p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
-@end example
+@end smallexample
@noindent
If this function is defined, it will always be used in place of
@@ -4907,9 +4927,9 @@ A C compound statement that attempts to replace @var{x} with a valid
memory address for an operand of mode @var{mode}. @var{win} will be a
C statement label elsewhere in the code; the macro definition may use
-@example
+@smallexample
GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
-@end example
+@end smallexample
@noindent
to avoid further processing if the address has become legitimate.
@@ -5157,6 +5177,34 @@ follows:
@end smallexample
@end defmac
+@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *)
+On targets which do not use @code{(cc0)}, and which use a hard
+register rather than a pseudo-register to hold condition codes, the
+regular CSE passes are often not able to identify cases in which the
+hard register is set to a common value. Use this hook to enable a
+small pass which optimizes such cases. This hook should return true
+to enable this pass, and it should set the integers to which its
+arguments point to the hard register numbers used for condition codes.
+When there is only one such register, as is true on most systems, the
+integer pointed to by the second argument should be set to
+@code{INVALID_REGNUM}.
+
+The default version of this hook returns false.
+@end deftypefn
+
+@deftypefn {Target Hook} enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode)
+On targets which use multiple condition code modes in class
+@code{MODE_CC}, it is sometimes the case that a comparison can be
+validly done in more than one mode. On such a system, define this
+target hook to take two mode arguments and to return a mode in which
+both comparisons may be validly done. If there is no such mode,
+return @code{VOIDmode}.
+
+The default version of this hook checks whether the modes are the
+same. If they are, it returns that mode. If they are different, it
+returns @code{VOIDmode}.
+@end deftypefn
+
@node Costs
@section Describing Relative Costs of Operations
@cindex costs of instructions
@@ -5666,23 +5714,23 @@ insns with indexes greater than given index.
@deftypefn {Target Hook} bool IS_COSTLY_DEPENDENCE (rtx @var{insn1}, rtx @var{insn2}, rtx @var{dep_link}, int @var{dep_cost}, int @var{distance})
This hook is used to define which dependences are considered costly by
-the target, so costly that it is not advisable to schedule the insns that
+the target, so costly that it is not advisable to schedule the insns that
are involved in the dependence too close to one another. The parameters
-to this hook are as follows: The second parameter @var{insn2} is dependent
-upon the first parameter @var{insn1}. The dependence between @var{insn1}
-and @var{insn2} is represented by the third parameter @var{dep_link}. The
-fourth parameter @var{cost} is the cost of the dependence, and the fifth
-parameter @var{distance} is the distance in cycles between the two insns.
+to this hook are as follows: The second parameter @var{insn2} is dependent
+upon the first parameter @var{insn1}. The dependence between @var{insn1}
+and @var{insn2} is represented by the third parameter @var{dep_link}. The
+fourth parameter @var{cost} is the cost of the dependence, and the fifth
+parameter @var{distance} is the distance in cycles between the two insns.
The hook returns @code{true} if considering the distance between the two
insns the dependence between them is considered costly by the target,
and @code{false} otherwise.
Defining this hook can be useful in multiple-issue out-of-order machines,
-where (a) it's practically hopeless to predict the actual data/resource
+where (a) it's practically hopeless to predict the actual data/resource
delays, however: (b) there's a better chance to predict the actual grouping
-that will be formed, and (c) correctly emulating the grouping can be very
+that will be formed, and (c) correctly emulating the grouping can be very
important. In such targets one may want to allow issuing dependent insns
-closer to one another - i.e, closer than the dependence distance; however,
+closer to one another - i.e, closer than the dependence distance; however,
not in cases of "costly dependences", which this hooks allows to define.
@end deftypefn
@@ -6275,9 +6323,9 @@ the address of this pool entry. The definition of this macro is
responsible for outputting the label definition at the proper place.
Here is how to do this:
-@example
+@smallexample
@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno});
-@end example
+@end smallexample
When you output a pool entry specially, you should end with a
@code{goto} to the label @var{jumpto}. This will prevent the same pool
@@ -6936,9 +6984,9 @@ support a @dfn{.init} section which is executed at program startup,
parts of @file{crtstuff.c} are compiled into that section. The
program is linked by the @command{gcc} driver like this:
-@example
+@smallexample
ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o
-@end example
+@end smallexample
The prologue of a function (@code{__init}) appears in the @code{.init}
section of @file{crti.o}; the epilogue appears in @file{crtn.o}. Likewise
@@ -7357,10 +7405,10 @@ definitions of these labels are output using
@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same
way here. For example,
-@example
+@smallexample
fprintf (@var{stream}, "\t.word L%d-L%d\n",
@var{value}, @var{rel})
-@end example
+@end smallexample
You must provide this macro on machines where the addresses in a
dispatch table are relative to the table's own address. If defined, GCC
@@ -7379,9 +7427,9 @@ a label. @var{value} is the number of an internal label whose
definition is output using @code{(*targetm.asm_out.internal_label)}.
For example,
-@example
+@smallexample
fprintf (@var{stream}, "\t.word L%d\n", @var{value})
-@end example
+@end smallexample
@end defmac
@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
@@ -8305,7 +8353,7 @@ call @code{merge_attributes} to handle machine-independent merging.
@findex TARGET_DLLIMPORT_DECL_ATTRIBUTES
If the only target-specific handling you require is @samp{dllimport} for
-Windows targets, you should define the macro
+Microsoft Windows targets, you should define the macro
@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. This links in a function
called @code{merge_dllimport_decl_attributes} which can then be defined
as the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. This is done
@@ -8394,7 +8442,7 @@ and @code{TARGET_OPTIONS}. It is given data which came from
is no need for extensive validity checking). It returns @code{NULL} if
it is safe to load a PCH file with this data, or a suitable error message
if not. The error message will be presented to the user, so it should
-be localised.
+be localized.
@end deftypefn
@node Misc
@@ -8465,8 +8513,10 @@ flags can be updated.
@defmac CASE_VECTOR_PC_RELATIVE
Define this macro to be a C expression to indicate when jump-tables
-should contain relative addresses. If jump-tables never contain
-relative addresses, then you need not define this macro.
+should contain relative addresses. You need not define this macro if
+jump-tables never contain relative addresses, or jump-tables should
+contain relative addresses only when @option{-fPIC} or @option{-fPIC}
+is in effect.
@end defmac
@defmac CASE_DROPS_THROUGH
@@ -8498,20 +8548,31 @@ smaller than a word are always performed on the entire register.
Most RISC machines have this property and most CISC machines do not.
@end defmac
-@defmac LOAD_EXTEND_OP (@var{mode})
+@defmac LOAD_EXTEND_OP (@var{mem_mode})
Define this macro to be a C expression indicating when insns that read
-memory in @var{mode}, an integral mode narrower than a word, set the
-bits outside of @var{mode} to be either the sign-extension or the
+memory in @var{mem_mode}, an integral mode narrower than a word, set the
+bits outside of @var{mem_mode} to be either the sign-extension or the
zero-extension of the data read. Return @code{SIGN_EXTEND} for values
-of @var{mode} for which the
+of @var{mem_mode} for which the
insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
@code{NIL} for other modes.
-This macro is not called with @var{mode} non-integral or with a width
+This macro is not called with @var{mem_mode} non-integral or with a width
greater than or equal to @code{BITS_PER_WORD}, so you may return any
value in this case. Do not define this macro if it would always return
@code{NIL}. On machines where this macro is defined, you will normally
define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
+
+You may return a non-@code{NIL} value even if for some hard registers
+the sign extension is not performed, if for the @code{REGNO_REG_CLASS}
+of these hard registers @code{CANNOT_CHANGE_MODE_CLASS} returns nonzero
+when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any
+integral mode larger than this but not larger than @code{word_mode}.
+
+You must return @code{NIL} if for some hard registers that allow this
+mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to
+@code{word_mode}, but that they can change to another integral mode that
+is larger then @var{mem_mode} but still smaller than @code{word_mode}.
@end defmac
@defmac SHORT_IMMEDIATES_SIGN_EXTEND
@@ -9100,7 +9161,7 @@ lists.
Define this macro to a C expression representing a variant of the
method call @var{mdecl}, if Java Native Interface (JNI) methods
must be invoked differently from other methods on your target.
-For example, on 32-bit Windows, JNI methods must be invoked using
+For example, on 32-bit Microsoft Windows, JNI methods must be invoked using
the @code{stdcall} calling convention and this macro is then
defined as this expression:
diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi
index 02fe03b96f5..ce62c9536e3 100644
--- a/gcc/doc/trouble.texi
+++ b/gcc/doc/trouble.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -374,11 +374,11 @@ because of problems in DEC's versions of the X11 header files
@option{-I/usr/include/mit} to use the MIT versions of the header files,
or fixing the header files by adding this:
-@example
+@smallexample
#ifdef __STDC__
#define NeedFunctionPrototypes 0
#endif
-@end example
+@end smallexample
@item
On various 386 Unix systems derived from System V, including SCO, ISC,
@@ -393,17 +393,17 @@ is available as a separate package, and also in the file
If you have installed GNU malloc as a separate library package, use this
option when you relink GCC:
-@example
+@smallexample
MALLOC=/usr/local/lib/libgmalloc.a
-@end example
+@end smallexample
Alternatively, if you have compiled @file{gmalloc.c} from Emacs 19, copy
the object file to @file{gmalloc.o} and use this option when you relink
GCC:
-@example
+@smallexample
MALLOC=gmalloc.o
-@end example
+@end smallexample
@end itemize
@node Incompatibilities
@@ -454,9 +454,9 @@ Negating this value yields 2147483648 again.
GCC does not substitute macro arguments when they appear inside of
string constants. For example, the following macro in GCC
-@example
+@smallexample
#define foo(a) "a"
-@end example
+@end smallexample
@noindent
will produce output @code{"a"} regardless of what the argument @var{a} is.
@@ -469,7 +469,7 @@ variables guaranteed to remain valid are those declared
@code{volatile}. This is a consequence of automatic register
allocation. Consider this function:
-@example
+@smallexample
jmp_buf j;
foo ()
@@ -484,7 +484,7 @@ foo ()
/* @r{@code{longjmp (j)} may occur in @code{fun3}.} */
return a + fun3 ();
@}
-@end example
+@end smallexample
Here @code{a} may or may not be restored to its first value when the
@code{longjmp} occurs. If @code{a} is allocated in a register, then
@@ -500,13 +500,13 @@ Programs that use preprocessing directives in the middle of macro
arguments do not work with GCC@. For example, a program like this
will not work:
-@example
+@smallexample
@group
foobar (
#define luser
hack)
@end group
-@end example
+@end smallexample
ISO C does not permit such a construct.
@@ -530,10 +530,10 @@ rest of the file even if it happens within a block.
In traditional C, you can combine @code{long}, etc., with a typedef name,
as shown here:
-@example
+@smallexample
typedef int foo;
typedef long foo bar;
-@end example
+@end smallexample
In ISO C, this is not allowed: @code{long} and other type modifiers
require an explicit @code{int}.
@@ -546,10 +546,10 @@ PCC allows typedef names to be used as function parameters.
Traditional C allows the following erroneous pair of declarations to
appear together in a given scope:
-@example
+@smallexample
typedef int foo;
typedef foo foo;
-@end example
+@end smallexample
@item
GCC treats all characters of identifiers as significant. According to
@@ -574,11 +574,11 @@ comments enclosed in conditionals that are guaranteed to fail; if these
comments contain apostrophes, GCC will probably report an error. For
example, this code would produce an error:
-@example
+@smallexample
#if 0
You can't expect this to work.
#endif
-@end example
+@end smallexample
The best solution to such a problem is to put the text into an actual
C comment delimited by @samp{/*@dots{}*/}.
@@ -615,8 +615,8 @@ The method used by GCC is as follows: a structure or union which is
1, 2, 4 or 8 bytes long is returned like a scalar. A structure or union
with any other size is stored into an address supplied by the caller
(usually in a special, fixed register, but on some machines it is passed
-on the stack). The machine-description macros @code{STRUCT_VALUE} and
-@code{STRUCT_INCOMING_VALUE} tell GCC where to pass this address.
+on the stack). The target hook @code{TARGET_STRUCT_VALUE_RTX}
+tells GCC where to pass this address.
By contrast, PCC on most target machines returns structures and unions
of any size by copying the data into an area of static storage, and then
@@ -758,14 +758,14 @@ executable and your source code, when you use optimization.
Users often think it is a bug when GCC reports an error for code
like this:
-@example
+@smallexample
int foo (struct mumble *);
struct mumble @{ @dots{} @};
int foo (struct mumble *x)
@{ @dots{} @}
-@end example
+@end smallexample
This code really is erroneous, because the scope of @code{struct
mumble} in the prototype is limited to the argument list containing it.
@@ -866,14 +866,14 @@ give rise to questions of this sort.
When a class has static data members, it is not enough to @emph{declare}
the static member; you must also @emph{define} it. For example:
-@example
+@smallexample
class Foo
@{
@dots{}
void method();
static int bar;
@};
-@end example
+@end smallexample
This declaration only establishes that the class @code{Foo} has an
@code{int} named @code{Foo::bar}, and a member function named
@@ -882,9 +882,9 @@ This declaration only establishes that the class @code{Foo} has an
standard, you must supply an initializer in one (and only one) source
file, such as:
-@example
+@smallexample
int Foo::bar = 0;
-@end example
+@end smallexample
Other C++ compilers may not correctly implement the standard behavior.
As a result, when you switch to @command{g++} from one of these compilers,
@@ -908,7 +908,7 @@ template parameters. This shorter term will also be used in the rest of
this section.} Only names that are dependent are looked up at the point
of instantiation. For example, consider
-@example
+@smallexample
void foo(double);
struct A @{
@@ -923,7 +923,7 @@ of instantiation. For example, consider
static const int N;
@};
-@end example
+@end smallexample
Here, the names @code{foo} and @code{N} appear in a context that does
not depend on the type of @code{T}. The compiler will thus require that
@@ -947,7 +947,7 @@ since version 3.4.
Two-stage name lookup sometimes leads to situations with behavior
different from non-template codes. The most common is probably this:
-@example
+@smallexample
template <typename T> struct Base @{
int i;
@};
@@ -955,7 +955,7 @@ different from non-template codes. The most common is probably this:
template <typename T> struct Derived : public Base<T> @{
int get_i() @{ return i; @}
@};
-@end example
+@end smallexample
In @code{get_i()}, @code{i} is not used in a dependent context, so the
compiler will look for a name declared at the enclosing namespace scope
@@ -974,9 +974,9 @@ type @code{Derived<T>*}, so is obviously dependent), or using
into scope by a @code{using}-declaration.
Another, similar example involves calling member functions of a base
-class:
+class:
-@example
+@smallexample
template <typename T> struct Base @{
int f();
@};
@@ -984,7 +984,7 @@ class:
template <typename T> struct Derived : Base<T> @{
int g() @{ return f(); @};
@};
-@end example
+@end smallexample
Again, the call to @code{f()} is not dependent on template arguments
(there are no arguments that depend on the type @code{T}, and it is also
@@ -993,13 +993,13 @@ Thus a global declaration of such a function must be available, since
the one in the base class is not visible until instantiation time. The
compiler will consequently produce the following error message:
-@example
+@smallexample
x.cc: In member function `int Derived<T>::g()':
x.cc:6: error: there are no arguments to `f' that depend on a template
parameter, so a declaration of `f' must be available
x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
allowing the use of an undeclared name is deprecated)
-@end example
+@end smallexample
To make the code valid either use @code{this->f()}, or
@code{Base<T>::f()}. Using the @code{-fpermissive} flag will also let
@@ -1035,7 +1035,7 @@ For example, a program may use a function @code{strfunc} that returns
@code{string} objects, and another function @code{charfunc} that
operates on pointers to @code{char}:
-@example
+@smallexample
string strfunc ();
void charfunc (const char *);
@@ -1048,7 +1048,7 @@ f ()
@dots{}
charfunc (p);
@}
-@end example
+@end smallexample
@noindent
In this situation, it may seem reasonable to save a pointer to the C
@@ -1067,10 +1067,10 @@ The safe way to write such code is to give the temporary a name, which
forces it to remain until the end of the scope of the name. For
example:
-@example
+@smallexample
string& tmp = strfunc ();
charfunc (tmp.c_str ());
-@end example
+@end smallexample
@node Copy Assignment
@subsection Implicit Copy-Assignment for Virtual Bases
@@ -1080,7 +1080,7 @@ belongs to each full object. Also, the constructors and destructors are
invoked only once, and called from the most-derived class. However, such
objects behave unspecified when being assigned. For example:
-@example
+@smallexample
struct Base@{
char *name;
Base(char *n) : name(strdup(n))@{@}
@@ -1108,7 +1108,7 @@ void func(Derived &d1, Derived &d2)
@{
d1 = d2;
@}
-@end example
+@end smallexample
The C++ standard specifies that @samp{Base::Base} is only called once
when constructing or copy-constructing a Derived object. It is
@@ -1404,12 +1404,12 @@ It is never safe to depend on the order of evaluation of side effects.
For example, a function call like this may very well behave differently
from one compiler to another:
-@example
+@smallexample
void func (int, int);
int i = 2;
func (i++, i++);
-@end example
+@end smallexample
There is no guarantee (in either the C or the C++ standard language
definitions) that the increments will be evaluated in any particular
diff --git a/gcc/doloop.c b/gcc/doloop.c
index 3ae628105c8..a82fb16a35c 100644
--- a/gcc/doloop.c
+++ b/gcc/doloop.c
@@ -1,5 +1,5 @@
/* Perform doloop optimizations
- Copyright (C) 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz)
@@ -60,7 +60,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#ifdef HAVE_doloop_end
-static rtx doloop_condition_get (rtx);
static unsigned HOST_WIDE_INT doloop_iterations_max (const struct loop_info *,
enum machine_mode, int);
static int doloop_valid_p (const struct loop *, rtx);
@@ -71,7 +70,7 @@ static int doloop_modify_runtime (const struct loop *, rtx, rtx, rtx,
/* Return the loop termination condition for PATTERN or zero
if it is not a decrement and branch jump insn. */
-static rtx
+rtx
doloop_condition_get (rtx pattern)
{
rtx cmp;
@@ -475,7 +474,7 @@ doloop_modify (const struct loop *loop, rtx iterations, rtx iterations_max,
count = GEN_INT (INTVAL (count) - 1);
else
count = expand_simple_binop (GET_MODE (counter_reg), MINUS,
- count, GEN_INT (1),
+ count, const1_rtx,
0, 0, OPTAB_LIB_WIDEN);
}
diff --git a/gcc/dominance.c b/gcc/dominance.c
index 9d691a3d07c..d608391839d 100644
--- a/gcc/dominance.c
+++ b/gcc/dominance.c
@@ -1,5 +1,5 @@
/* Calculate (post)dominators in slightly super-linear time.
- Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Matz (matz@ifh.de).
This file is part of GCC.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 77d5fd2bfb8..40812ff5374 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1790,11 +1790,19 @@ dw_cfi_oprnd2_desc (enum dwarf_call_frame_info cfi)
#if defined (DWARF2_DEBUGGING_INFO) || defined (DWARF2_UNWIND_INFO)
+/* Map register numbers held in the call frame info that gcc has
+ collected using DWARF_FRAME_REGNUM to those that should be output in
+ .debug_frame and .eh_frame. */
+#ifndef DWARF2_FRAME_REG_OUT
+#define DWARF2_FRAME_REG_OUT(REGNO, FOR_EH) (REGNO)
+#endif
+
/* Output a Call Frame Information opcode and its operand(s). */
static void
output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
{
+ unsigned long r;
if (cfi->dw_cfi_opc == DW_CFA_advance_loc)
dw2_asm_output_data (1, (cfi->dw_cfi_opc
| (cfi->dw_cfi_oprnd1.dw_cfi_offset & 0x3f)),
@@ -1802,17 +1810,17 @@ output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
cfi->dw_cfi_oprnd1.dw_cfi_offset);
else if (cfi->dw_cfi_opc == DW_CFA_offset)
{
- dw2_asm_output_data (1, (cfi->dw_cfi_opc
- | (cfi->dw_cfi_oprnd1.dw_cfi_reg_num & 0x3f)),
- "DW_CFA_offset, column 0x%lx",
- cfi->dw_cfi_oprnd1.dw_cfi_reg_num);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data (1, (cfi->dw_cfi_opc | (r & 0x3f)),
+ "DW_CFA_offset, column 0x%lx", r);
dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd2.dw_cfi_offset, NULL);
}
else if (cfi->dw_cfi_opc == DW_CFA_restore)
- dw2_asm_output_data (1, (cfi->dw_cfi_opc
- | (cfi->dw_cfi_oprnd1.dw_cfi_reg_num & 0x3f)),
- "DW_CFA_restore, column 0x%lx",
- cfi->dw_cfi_oprnd1.dw_cfi_reg_num);
+ {
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data (1, (cfi->dw_cfi_opc | (r & 0x3f)),
+ "DW_CFA_restore, column 0x%lx", r);
+ }
else
{
dw2_asm_output_data (1, cfi->dw_cfi_opc,
@@ -1857,15 +1865,15 @@ output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
case DW_CFA_offset_extended:
case DW_CFA_def_cfa:
- dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
- NULL);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data_uleb128 (r, NULL);
dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd2.dw_cfi_offset, NULL);
break;
case DW_CFA_offset_extended_sf:
case DW_CFA_def_cfa_sf:
- dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
- NULL);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data_uleb128 (r, NULL);
dw2_asm_output_data_sleb128 (cfi->dw_cfi_oprnd2.dw_cfi_offset, NULL);
break;
@@ -1873,15 +1881,15 @@ output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
case DW_CFA_undefined:
case DW_CFA_same_value:
case DW_CFA_def_cfa_register:
- dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
- NULL);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data_uleb128 (r, NULL);
break;
case DW_CFA_register:
- dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num,
- NULL);
- dw2_asm_output_data_uleb128 (cfi->dw_cfi_oprnd2.dw_cfi_reg_num,
- NULL);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd1.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data_uleb128 (r, NULL);
+ r = DWARF2_FRAME_REG_OUT (cfi->dw_cfi_oprnd2.dw_cfi_reg_num, for_eh);
+ dw2_asm_output_data_uleb128 (r, NULL);
break;
case DW_CFA_def_cfa_offset:
@@ -1911,7 +1919,7 @@ output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
}
}
-/* Output the call frame information used to used to record information
+/* Output the call frame information used to record information
that relates to calculating the frame pointer, and records the
location of saved registers. */
@@ -3703,7 +3711,7 @@ static void output_file_names (void);
static dw_die_ref base_type_die (tree);
static tree root_type (tree);
static int is_base_type (tree);
-static bool is_ada_subrange_type (tree);
+static bool is_subrange_type (tree);
static dw_die_ref subrange_type_die (tree, dw_die_ref);
static dw_die_ref modified_type_die (tree, int, int, dw_die_ref);
static int type_is_enum (tree);
@@ -7812,24 +7820,14 @@ simple_type_size_in_bits (tree type)
emitted as a subrange type. */
static inline bool
-is_ada_subrange_type (tree type)
-{
- /* We should use a subrange type in the following situations:
- - For Ada modular types: These types are stored as integer subtypes
- of an unsigned integer type;
- - For subtypes of an Ada enumeration type: These types are stored
- as integer subtypes of enumeral types.
-
- This subrange type is mostly for the benefit of debugger users.
- A nameless type would therefore not be very useful, so no need
- to generate a subrange type in these cases. */
+is_subrange_type (tree type)
+{
tree subtype = TREE_TYPE (type);
- if (is_ada ()
- && TREE_CODE (type) == INTEGER_TYPE
+ if (TREE_CODE (type) == INTEGER_TYPE
&& subtype != NULL_TREE)
{
- if (TREE_CODE (subtype) == INTEGER_TYPE && TREE_UNSIGNED (subtype))
+ if (TREE_CODE (subtype) == INTEGER_TYPE)
return true;
if (TREE_CODE (subtype) == ENUMERAL_TYPE)
return true;
@@ -7846,6 +7844,7 @@ subrange_type_die (tree type, dw_die_ref context_die)
dw_die_ref subtype_die;
dw_die_ref subrange_die;
tree name = TYPE_NAME (type);
+ const HOST_WIDE_INT size_in_bytes = int_size_in_bytes (type);
if (context_die == NULL)
context_die = comp_unit_die;
@@ -7864,6 +7863,13 @@ subrange_type_die (tree type, dw_die_ref context_die)
add_name_attribute (subrange_die, IDENTIFIER_POINTER (name));
}
+ if (int_size_in_bytes (TREE_TYPE (type)) != size_in_bytes)
+ {
+ /* The size of the subrange type and its base type do not match,
+ so we need to generate a size attribute for the subrange type. */
+ add_AT_unsigned (subrange_die, DW_AT_byte_size, size_in_bytes);
+ }
+
if (TYPE_MIN_VALUE (type) != NULL)
add_bound_info (subrange_die, DW_AT_lower_bound,
TYPE_MIN_VALUE (type));
@@ -7966,7 +7972,7 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type,
#endif
item_type = TREE_TYPE (type);
}
- else if (is_ada_subrange_type (type))
+ else if (is_subrange_type (type))
mod_type_die = subrange_type_die (type, context_die);
else if (is_base_type (type))
mod_type_die = base_type_die (type);
@@ -8820,6 +8826,9 @@ loc_descriptor_from_tree (tree loc, int addressp)
}
break;
+ case EXPR_WITH_FILE_LOCATION:
+ return loc_descriptor_from_tree (EXPR_WFL_NODE (loc), addressp);
+
default:
/* Leave front-end specific codes as simply unknown. This comes
up, for instance, with the C STMT_EXPR. */
@@ -9398,8 +9407,7 @@ rtl_for_decl_location (tree decl)
TREE_STRING_LENGTH (init) - 1) == 0
&& ((size_t) TREE_STRING_LENGTH (init)
== strlen (TREE_STRING_POINTER (init)) + 1))
- rtl = gen_rtx_CONST_STRING (VOIDmode,
- ggc_strdup (TREE_STRING_POINTER (init)));
+ rtl = gen_rtx_CONST_STRING (VOIDmode, TREE_STRING_POINTER (init));
}
/* If the initializer is something that we know will expand into an
immediate RTL constant, expand it now. Expanding anything else
@@ -10414,20 +10422,20 @@ gen_enumeration_type_die (tree type, dw_die_ref context_die)
link != NULL; link = TREE_CHAIN (link))
{
dw_die_ref enum_die = new_die (DW_TAG_enumerator, type_die, link);
+ tree value = TREE_VALUE (link);
add_name_attribute (enum_die,
IDENTIFIER_POINTER (TREE_PURPOSE (link)));
- if (host_integerp (TREE_VALUE (link),
- TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (link)))))
- {
- if (tree_int_cst_sgn (TREE_VALUE (link)) < 0)
- add_AT_int (enum_die, DW_AT_const_value,
- tree_low_cst (TREE_VALUE (link), 0));
- else
- add_AT_unsigned (enum_die, DW_AT_const_value,
- tree_low_cst (TREE_VALUE (link), 1));
- }
+ if (host_integerp (value, TREE_UNSIGNED (TREE_TYPE (value))))
+ /* DWARF2 does not provide a way of indicating whether or
+ not enumeration constants are signed or unsigned. GDB
+ always assumes the values are signed, so we output all
+ values as if they were signed. That means that
+ enumeration constants with very large unsigned values
+ will appear to have negative values in the debugger. */
+ add_AT_int (enum_die, DW_AT_const_value,
+ tree_low_cst (value, tree_int_cst_sgn (value) > 0));
}
}
else
@@ -12148,12 +12156,6 @@ dwarf2out_decl (tree decl)
return;
case FUNCTION_DECL:
- /* Ignore this FUNCTION_DECL if it refers to a builtin declaration of a
- builtin function. Explicit programmer-supplied declarations of
- these same functions should NOT be ignored however. */
- if (DECL_EXTERNAL (decl) && DECL_BUILT_IN (decl))
- return;
-
/* What we would really like to do here is to filter out all mere
file-scope declarations of file-scope functions which are never
referenced later within this translation unit (and keep all of ones
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index ddc84ee8895..c8942fe5001 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1840,6 +1840,9 @@ change_address_1 (rtx memref, enum machine_mode mode, rtx addr, int validate)
mode = GET_MODE (memref);
if (addr == 0)
addr = XEXP (memref, 0);
+ if (mode == GET_MODE (memref) && addr == XEXP (memref, 0)
+ && (!validate || memory_address_p (mode, addr)))
+ return memref;
if (validate)
{
@@ -1866,15 +1869,29 @@ change_address_1 (rtx memref, enum machine_mode mode, rtx addr, int validate)
rtx
change_address (rtx memref, enum machine_mode mode, rtx addr)
{
- rtx new = change_address_1 (memref, mode, addr, 1);
+ rtx new = change_address_1 (memref, mode, addr, 1), size;
enum machine_mode mmode = GET_MODE (new);
+ unsigned int align;
+
+ size = mmode == BLKmode ? 0 : GEN_INT (GET_MODE_SIZE (mmode));
+ align = mmode == BLKmode ? BITS_PER_UNIT : GET_MODE_ALIGNMENT (mmode);
+
+ /* If there are no changes, just return the original memory reference. */
+ if (new == memref)
+ {
+ if (MEM_ATTRS (memref) == 0
+ || (MEM_EXPR (memref) == NULL
+ && MEM_OFFSET (memref) == NULL
+ && MEM_SIZE (memref) == size
+ && MEM_ALIGN (memref) == align))
+ return new;
+
+ new = gen_rtx_MEM (mmode, XEXP (memref, 0));
+ MEM_COPY_ATTRIBUTES (new, memref);
+ }
MEM_ATTRS (new)
- = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0,
- mmode == BLKmode ? 0 : GEN_INT (GET_MODE_SIZE (mmode)),
- (mmode == BLKmode ? BITS_PER_UNIT
- : GET_MODE_ALIGNMENT (mmode)),
- mmode);
+ = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0, size, align, mmode);
return new;
}
@@ -1895,6 +1912,11 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset,
rtx size = 0;
unsigned int memalign = MEM_ALIGN (memref);
+ /* If there are no changes, just return the original memory reference. */
+ if (mode == GET_MODE (memref) && !offset
+ && (!validate || memory_address_p (mode, addr)))
+ return memref;
+
/* ??? Prefer to create garbage instead of creating shared rtl.
This may happen even if offset is nonzero -- consider
(plus (plus reg reg) const_int) -- so do this always. */
@@ -1985,6 +2007,10 @@ offset_address (rtx memref, rtx offset, unsigned HOST_WIDE_INT pow2)
update_temp_slot_address (XEXP (memref, 0), new);
new = change_address_1 (memref, VOIDmode, new, 1);
+ /* If there are no changes, just return the original memory reference. */
+ if (new == memref)
+ return new;
+
/* Update the alignment to reflect the offset. Reset the offset, which
we don't know. */
MEM_ATTRS (new)
@@ -2029,6 +2055,10 @@ widen_memory_access (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset)
rtx memoffset = MEM_OFFSET (new);
unsigned int size = GET_MODE_SIZE (mode);
+ /* If there are no changes, just return the original memory reference. */
+ if (new == memref)
+ return new;
+
/* If we don't know what offset we were at within the expression, then
we can't know if we've overstepped the bounds. */
if (! memoffset)
@@ -3174,7 +3204,7 @@ mark_label_nuses (rtx x)
const char *fmt;
code = GET_CODE (x);
- if (code == LABEL_REF)
+ if (code == LABEL_REF && LABEL_P (XEXP (x, 0)))
LABEL_NUSES (XEXP (x, 0))++;
fmt = GET_RTX_FORMAT (code);
@@ -4383,6 +4413,9 @@ emit_insn_after_setloc (rtx pattern, rtx after, int loc)
{
rtx last = emit_insn_after (pattern, after);
+ if (pattern == NULL_RTX)
+ return last;
+
after = NEXT_INSN (after);
while (1)
{
@@ -4401,6 +4434,9 @@ emit_jump_insn_after_setloc (rtx pattern, rtx after, int loc)
{
rtx last = emit_jump_insn_after (pattern, after);
+ if (pattern == NULL_RTX)
+ return last;
+
after = NEXT_INSN (after);
while (1)
{
@@ -4419,6 +4455,9 @@ emit_call_insn_after_setloc (rtx pattern, rtx after, int loc)
{
rtx last = emit_call_insn_after (pattern, after);
+ if (pattern == NULL_RTX)
+ return last;
+
after = NEXT_INSN (after);
while (1)
{
@@ -4438,6 +4477,9 @@ emit_insn_before_setloc (rtx pattern, rtx before, int loc)
rtx first = PREV_INSN (before);
rtx last = emit_insn_before (pattern, before);
+ if (pattern == NULL_RTX)
+ return last;
+
first = NEXT_INSN (first);
while (1)
{
diff --git a/gcc/et-forest.c b/gcc/et-forest.c
index dfc05a34d0e..62cdd2107d3 100644
--- a/gcc/et-forest.c
+++ b/gcc/et-forest.c
@@ -1,6 +1,6 @@
/* ET-trees data structure implementation.
Contributed by Pavel Nejedly
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
diff --git a/gcc/except.c b/gcc/except.c
index b735cc1aef3..5d85e512358 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -412,10 +412,8 @@ init_eh (void)
tmp = build_int_2 (FIRST_PSEUDO_REGISTER + 2 - 1, 0);
#endif
#else
- /* This is 2 for builtin_setjmp, plus whatever the target requires
- via STACK_SAVEAREA_MODE (SAVE_NONLOCAL). */
- tmp = build_int_2 ((GET_MODE_SIZE (STACK_SAVEAREA_MODE (SAVE_NONLOCAL))
- / GET_MODE_SIZE (Pmode)) + 2 - 1, 0);
+ /* builtin_setjmp takes a pointer to 5 words. */
+ tmp = build_int_2 (5 * BITS_PER_WORD / POINTER_SIZE - 1, 0);
#endif
tmp = build_index_type (tmp);
tmp = build_array_type (ptr_type_node, tmp);
@@ -3078,6 +3076,26 @@ expand_eh_return (void)
emit_label (around_label);
}
+
+/* Convert a ptr_mode address ADDR_TREE to a Pmode address controlled by
+ POINTERS_EXTEND_UNSIGNED and return it. */
+
+rtx
+expand_builtin_extend_pointer (tree addr_tree)
+{
+ rtx addr = expand_expr (addr_tree, NULL_RTX, ptr_mode, 0);
+ int extend;
+
+#ifdef POINTERS_EXTEND_UNSIGNED
+ extend = POINTERS_EXTEND_UNSIGNED;
+#else
+ /* The previous EH code did an unsigned extend by default, so we do this also
+ for consistency. */
+ extend = 1;
+#endif
+
+ return convert_modes (word_mode, ptr_mode, addr, extend);
+}
/* In the following functions, we represent entries in the action table
as 1-based indices. Special cases are:
diff --git a/gcc/except.h b/gcc/except.h
index 75bbd6f9c38..5093a65059a 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -117,6 +117,7 @@ extern rtx expand_builtin_frob_return_addr (tree);
extern rtx expand_builtin_dwarf_sp_column (void);
extern void expand_builtin_eh_return (tree, tree);
extern void expand_eh_return (void);
+extern rtx expand_builtin_extend_pointer (tree);
extern rtx get_exception_pointer (struct function *);
extern int duplicate_eh_regions (struct function *, struct inline_remap *);
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 8ebfb487552..3d61a35f953 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -1,7 +1,7 @@
/* Medium-level subroutines: convert bit-field store and extract
and shifts, multiplies and divides to rtl instructions.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/expr.c b/gcc/expr.c
index b5af15893f1..427bbd27543 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1,6 +1,6 @@
/* Convert tree expression to rtl instructions, for GNU compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1924,6 +1924,9 @@ emit_group_load (rtx dst, rtx orig_src, tree type ATTRIBUTE_UNUSED, int ssize)
emit_move_insn (mem, src);
tmps[i] = adjust_address (mem, mode, (int) bytepos);
}
+ else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
+ && XVECLEN (dst, 0) > 1)
+ tmps[i] = simplify_gen_subreg (mode, src, GET_MODE(dst), bytepos);
else if (CONSTANT_P (src)
|| (GET_CODE (src) == REG && GET_MODE (src) == mode))
tmps[i] = src;
@@ -4621,10 +4624,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
highest_pow2_factor (offset));
}
- /* If the constructor has been cleared, setting RTX_UNCHANGING_P
- on the MEM might lead to scheduling the clearing after the
- store. */
- if (TREE_READONLY (field) && !cleared)
+ if (TREE_READONLY (field))
{
if (GET_CODE (to_rtx) == MEM)
to_rtx = copy_rtx (to_rtx);
@@ -8020,7 +8020,7 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode,
/* First try to do it with a special MIN or MAX instruction.
If that does not win, use a conditional jump to select the proper
value. */
- this_optab = (TREE_UNSIGNED (type)
+ this_optab = (unsignedp
? (code == MIN_EXPR ? umin_optab : umax_optab)
: (code == MIN_EXPR ? smin_optab : smax_optab));
@@ -8054,18 +8054,16 @@ expand_expr_real (tree exp, rtx target, enum machine_mode tmode,
&& ! can_compare_p (GE, mode, ccp_jump))
{
if (code == MAX_EXPR)
- do_jump_by_parts_greater_rtx (mode, TREE_UNSIGNED (type),
- target, op1, NULL_RTX, op0);
+ do_jump_by_parts_greater_rtx (mode, unsignedp, target, op1,
+ NULL_RTX, op0);
else
- do_jump_by_parts_greater_rtx (mode, TREE_UNSIGNED (type),
- op1, target, NULL_RTX, op0);
+ do_jump_by_parts_greater_rtx (mode, unsignedp, op1, target,
+ NULL_RTX, op0);
}
else
{
- int unsignedp = TREE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 1)));
do_compare_rtx_and_jump (target, op1, code == MAX_EXPR ? GE : LE,
- unsignedp, mode, NULL_RTX, NULL_RTX,
- op0);
+ unsignedp, mode, NULL_RTX, NULL_RTX, op0);
}
emit_move_insn (target, op1);
emit_label (op0);
@@ -9074,7 +9072,8 @@ is_aligning_offset (tree offset, tree exp)
power of 2 and which is larger than BIGGEST_ALIGNMENT. */
if (TREE_CODE (offset) != BIT_AND_EXPR
|| !host_integerp (TREE_OPERAND (offset, 1), 1)
- || compare_tree_int (TREE_OPERAND (offset, 1), BIGGEST_ALIGNMENT) <= 0
+ || compare_tree_int (TREE_OPERAND (offset, 1),
+ BIGGEST_ALIGNMENT / BITS_PER_UNIT) <= 0
|| !exact_log2 (tree_low_cst (TREE_OPERAND (offset, 1), 1) + 1) < 0)
return 0;
diff --git a/gcc/expr.h b/gcc/expr.h
index 000011340e5..d2bbb8850d4 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -1,6 +1,6 @@
/* Definitions for code generation pass of GNU compiler.
Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index f36ad626b9b..657b9e6c43e 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,46 @@
+2004-02-24 Michael Matz <matz@suse.de>
+
+ * Make-lang.in (sta.o-warn): Delete.
+ * sta.c (ffesta_save_): Don't break aliasing rules.
+
+2004-02-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * Make-lang.in (g77spec.o): Depend on intl.h.
+ * g77spec.c: Include intl.h.
+ (lang_specific_driver): Allow translation of the copyright
+ symbol but not the rest of the copyright message. Allow
+ translation of the message about warranty.
+
+2004-02-15 Roger Sayle <roger@eyesopen.com>
+
+ PR fortran/14129
+ * lex.c (ffelex_cfelex_): Avoid calling xrealloc on a local stack
+ allocated array.
+
+2004-01-30 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (doc/g77.dvi): Use $(abs_docdir).
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in: Replace $(docdir) with doc.
+ (TEXI_G77_FILES): Define.
+ (f77.rebuilt): Delete.
+ (f77.srcextra): Add dependencies on f/BUGS and f/NEWS.
+ (f77.srcman, f77.srcinfo, f77.man, f77.info): New rules.
+ (doc/g77.info, doc/g77.dvi): Depend on TEXI_G77_FILES. Always build in
+ doc directory. Use $(MAKEINFOFLAGS).
+ (info, dvi, generated_manpages): Update to look in doc directory.
+ (f/BUGS, f/NEWS): Generate in build directory.
+ (f77.mostlyclean): Delete BUGS and NEWS from build directory.
+ (f77.maintainer-clean): Adjust to delete from source directory.
+ (f77.install-man): Revamp rule.
+
+2004-01-19 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (G77_INSTALL_NAME): Define via a immediate $(shell)
+ instead of deferred backquote.
+
2004-01-15 Kelley Cook <kcook@gcc.gnu.org>
* Make-lang.in (f77.srcextra): Dummy entry.
diff --git a/gcc/f/Make-lang.in b/gcc/f/Make-lang.in
index 8b8de1b08ce..47585b0e242 100644
--- a/gcc/f/Make-lang.in
+++ b/gcc/f/Make-lang.in
@@ -38,7 +38,7 @@
# $(srcdir) must be set to the gcc/ source directory (not gcc/f/).
#
# Actual name to use when installing a native compiler.
-G77_INSTALL_NAME = `echo g77|sed '$(program_transform_name)'`
+G77_INSTALL_NAME := $(shell echo g77|sed '$(program_transform_name)')
# Some versions of `touch' (such as the version on Solaris 2.8)
# do not correctly set the timestamp due to buggy versions of `utime'
@@ -58,12 +58,12 @@ F77 f77: f771$(exeext)
f77.install-normal \
f77.install-common f77.install-man \
f77.uninstall f77.mostlyclean f77.clean f77.distclean \
- f77.maintainer-clean f77.rebuilt \
+ f77.maintainer-clean \
f77.stage1 f77.stage2 f77.stage3 f77.stage4 \
f77.stageprofile f77.stagefeedback
g77spec.o: $(srcdir)/f/g77spec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \
- $(CONFIG_H)
+ $(CONFIG_H) intl.h
(SHLIB_LINK='$(SHLIB_LINK)' \
SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
@@ -90,8 +90,6 @@ F77_OBJS = f/bad.o f/bit.o f/bld.o f/com.o f/data.o f/equiv.o f/expr.o \
# Use loose warnings for this front end.
f-warn = $(WERROR)
-# type-punning warning
-f/sta.o-warn = -Wno-error
f771$(exeext): $(F77_OBJS) $(BACKEND) $(LIBDEPS)
rm -f f771$(exeext)
@@ -141,42 +139,40 @@ f77.all.build: g77$(exeext)
f77.all.cross: g77-cross$(exeext)
f77.start.encap: g77$(exeext)
f77.rest.encap:
-f77.srcextra:
+
+f77.srcinfo: doc/g77.info
+ -cp -p $^ $(srcdir)/doc
+f77.srcman: doc/g77.1
+ -cp -p $^ $(srcdir)/doc
+f77.srcextra: f/BUGS f/NEWS
+ -cp -p $^ $(srcdir)/f
f77.tags: force
cd $(srcdir)/f; etags -o TAGS.sub *.c *.h; \
etags --include TAGS.sub --include ../TAGS.sub
-info:: $(docobjdir)/g77.info
-dvi:: $(docobjdir)/g77.dvi
-generated-manpages:: $(docobjdir)/g77.1
+f77.info: doc/g77.info
+dvi:: doc/g77.dvi
+f77.man: doc/g77.1
check-f77 : check-g77
lang_checks += check-g77
# g77 documentation.
-$(docobjdir)/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
- $(srcdir)/f/ffe.texi $(srcdir)/f/invoke.texi \
- $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
- $(srcdir)/f/root.texi $(docdir)/include/fdl.texi \
- $(docdir)/include/gpl.texi \
- $(docdir)/include/funding.texi \
- $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- if [ x$(BUILD_INFO) = xinfo ]; then \
+TEXI_G77_FILES = f/g77.texi f/bugs.texi f/ffe.texi f/invoke.texi \
+ f/news.texi f/root.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/funding.texi \
+ $(docdir)/include/gcc-common.texi $(srcdir)/f/intdoc.texi
+
+doc/g77.info: $(TEXI_G77_FILES)
+ if test "x$(BUILD_INFO)" = xinfo; then \
rm -f $(@)*; \
- $(MAKEINFO) -I$(docdir)/include -I$(srcdir)/f -o $@ $<; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -I$(srcdir)/f \
+ -o$@ $<; \
else true; fi
-$(docobjdir)/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
- $(srcdir)/f/ffe.texi $(srcdir)/f/invoke.texi \
- $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
- $(srcdir)/f/root.texi $(docdir)/include/fdl.texi \
- $(docdir)/include/gpl.texi \
- $(docdir)/include/funding.texi \
- $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -I $(srcdir)/f -I $(docdir)/include -o $@ $<
+doc/g77.dvi: $(TEXI_G77_FILES)
+ $(TEXI2DVI) -I $(srcdir)/f -I $(abs_docdir)/include -I $(objdir)/f -o $@ $<
.INTERMEDIATE: g77.pod
g77.pod: f/invoke.texi
@@ -204,41 +200,43 @@ g77.pod: f/invoke.texi
# If the documentation files depended on executables in the build
# tree, there'd be no way to ship a source tree with the documentation
-# already generated such that `make' wouldn't attempt to rebuilt it.
+# already generated such that `make' wouldn't attempt to rebuild it.
# So, we punt and arrange for the documentation files to depend on the
# dependencies of the executables, not on the executables themselves.
# But then, we have to build the executables explicitly in their build
# rules.
-INTDOC_DEPS = $(srcdir)/f/intdoc.c $(srcdir)/f/intrin.h $(srcdir)/f/intrin.def
+INTDOC_DEPS = f/intdoc.c f/intrin.h f/intrin.def
-$(srcdir)/f/intdoc.texi: $(INTDOC_DEPS) $(srcdir)/f/intdoc.in
+$(srcdir)/f/intdoc.texi: $(INTDOC_DEPS) f/intdoc.in
$(MAKE) f/intdoc$(build_exeext)
f/intdoc$(build_exeext) > $(srcdir)/f/intdoc.texi
f/intdoc$(build_exeext): $(INTDOC_DEPS) f/intdoc.h0 bconfig.h \
$(SYSTEM_H) coretypes.h $(TM_H) $(BUILD_LIBDEPS)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) \
- $(srcdir)/f/intdoc.c $(BUILD_LIBS) -o f/intdoc$(build_exeext)
+ $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) $< \
+ $(BUILD_LIBS) -o $@
f/intdoc.h0: f/intdoc.in f/ansify$(build_exeext)
- f/ansify$(build_exeext) $(srcdir)/f/intdoc.in \
- < $(srcdir)/f/intdoc.in > f/intdoc.h0
+ f/ansify$(build_exeext) $< < $< > $@
f/ansify$(build_exeext): f/ansify.c bconfig.h $(SYSTEM_H) coretypes.h $(TM_H)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) \
- $(srcdir)/f/ansify.c -o f/ansify$(build_exeext)
-
-$(srcdir)/f/BUGS: f/bugs0.texi f/bugs.texi f/root.texi
- cd $(srcdir)/f; $(MAKEINFO) -D BUGSONLY --no-header --no-split \
- --no-validate -I../doc/include -o BUGS bugs0.texi
+ $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) $< \
+ -o $@
-$(srcdir)/f/NEWS: f/news0.texi f/news.texi f/root.texi
- cd $(srcdir)/f; $(MAKEINFO) -D NEWSONLY --no-header --no-split \
- --no-validate -I../doc/include -o NEWS news0.texi
+f/BUGS: f/bugs0.texi f/bugs.texi f/root.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -D BUGSONLY --no-header --no-split \
+ --no-validate -I$(docdir)/include -I$(srcdir)/f -o $@ bugs0.texi; \
+ else true; fi
-f77.rebuilt: $(docobjdir)/g77.info $(srcdir)/f/BUGS \
- $(srcdir)/f/NEWS
+f/NEWS: f/news0.texi f/news.texi f/root.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -D NEWSONLY --no-header --no-split \
+ --no-validate -I$(docdir)/include -I$(srcdir)/f -o $@ news0.texi; \
+ else true; fi
#
# Install hooks:
@@ -266,12 +264,12 @@ f77.install-common: installdirs
install-info:: $(DESTDIR)$(infodir)/g77.info
-f77.install-man: $(GENERATED_MANPAGES) installdirs
- -if [ -f f771$(exeext) ] ; then \
- rm -f $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- $(INSTALL_DATA) $(docobjdir)/g77.1 $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- chmod a-x $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- else true; fi
+f77.install-man: installdirs $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext)
+
+$(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext): doc/g77.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
f77.uninstall: installdirs
if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
@@ -290,7 +288,7 @@ f77.mostlyclean:
-rm -f f/*$(objext)
-rm -f f/*$(coverageexts)
-rm -f f/fini$(build_exeext) f/stamp-str f/str-*.h f/str-*.j
- -rm -f f/intdoc$(build_exeext) f/ansify$(build_exeext) f/intdoc.h0
+ -rm -f f/BUGS f/NEWS
-rm -f g77.aux g77.cps g77.ky g77.toc g77.vr g77.fn g77.kys \
g77.pg g77.tp g77.vrs g77.cp g77.fns g77.log g77.pgs g77.tps
f77.clean:
@@ -298,7 +296,8 @@ f77.clean:
f77.distclean:
-rm -f f/Makefile
f77.maintainer-clean:
- -rm -f f/g77.info* f/g77.*aux f/TAGS f/TAGS.sub f/BUGS f/NEWS f/intdoc.texi
+ -rm -f $(srcdir)/f/BUGS $(srcdir)/f/TAGS $(srcdir)/f/TAGS.SUB
+ -rm -f $(srcdir)/f/NEWS $(srcdir)/f/intdoc.texi
#
# Stage hooks:
# The main makefile has already created stage?/f.
diff --git a/gcc/f/g77spec.c b/gcc/f/g77spec.c
index b5404994c2d..3dca7bc4483 100644
--- a/gcc/f/g77spec.c
+++ b/gcc/f/g77spec.c
@@ -1,5 +1,5 @@
/* Specific flags and argument handling of the Fortran front-end.
- Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA. */
#include "coretypes.h"
#include "tm.h"
#include "gcc.h"
+#include "intl.h"
#ifndef MATH_LIBRARY
#define MATH_LIBRARY "-lm"
@@ -345,16 +346,17 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
break;
case OPTION_version:
- printf ("\
-GNU Fortran (GCC) %s\n\
-Copyright (C) 2002 Free Software Foundation, Inc.\n\
-\n\
+ printf ("GNU Fortran (GCC) %s\n", version_string);
+ printf ("Copyright %s 2004 Free Software Foundation, Inc.\n",
+ _("(C)"));
+ printf ("\n");
+ printf (_("\
GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n\
You may redistribute copies of GNU Fortran\n\
under the terms of the GNU General Public License.\n\
For more information about these matters, see the file named COPYING\n\
or type the command `info -f g77 Copying'.\n\
-", version_string);
+"));
exit (0);
break;
diff --git a/gcc/f/lex.c b/gcc/f/lex.c
index 3be91b68298..8475d2ff2c3 100644
--- a/gcc/f/lex.c
+++ b/gcc/f/lex.c
@@ -694,7 +694,13 @@ ffelex_cfelex_ (ffelexToken *xtoken, FILE *finput, int c)
register unsigned bytes_used = (p - q);
buffer_length *= 2;
- q = xrealloc (q, buffer_length);
+ if (q == &buff[0])
+ {
+ q = xmalloc (buffer_length);
+ memcpy (q, buff, bytes_used);
+ }
+ else
+ q = xrealloc (q, buffer_length);
p = &q[bytes_used];
r = &q[buffer_length];
}
@@ -754,7 +760,13 @@ ffelex_cfelex_ (ffelexToken *xtoken, FILE *finput, int c)
register unsigned bytes_used = (p - q);
buffer_length = bytes_used * 2;
- q = xrealloc (q, buffer_length);
+ if (q == &buff[0])
+ {
+ q = xmalloc (buffer_length);
+ memcpy (q, buff, bytes_used);
+ }
+ else
+ q = xrealloc (q, buffer_length);
p = &q[bytes_used];
r = &q[buffer_length];
}
diff --git a/gcc/f/sta.c b/gcc/f/sta.c
index 4b26d8cecd8..ee75fa88f60 100644
--- a/gcc/f/sta.c
+++ b/gcc/f/sta.c
@@ -335,7 +335,7 @@ ffesta_save_ (ffelexToken t)
{ /* No handler in this list, try exec list if
not tried yet. */
if (ffesta_current_possible_
- == (ffestaPossible_) &ffesta_possible_nonexecs_)
+ == (ffestaPossible_) &ffesta_possible_nonexecs_.first)
{
ffesta_current_possible_ = ffesta_possible_execs_.first;
ffesta_current_handler_ = ffesta_current_possible_->handler;
@@ -379,7 +379,7 @@ ffesta_save_ (ffelexToken t)
{
if (possible->handler == NULL)
{
- if (possible == (ffestaPossible_) &ffesta_possible_nonexecs_)
+ if (possible == (ffestaPossible_) &ffesta_possible_nonexecs_.first)
{
possible = first_exec = ffesta_possible_execs_.first;
continue;
diff --git a/gcc/final.c b/gcc/final.c
index fbbff317d5e..dd5b64ec53f 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -111,6 +111,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define HAVE_READONLY_DATA_SECTION 0
#endif
+/* Bitflags used by final_scan_insn. */
+#define SEEN_BB 1
+#define SEEN_NOTE 2
+#define SEEN_EMITTED 4
+
/* Last insn processed by final_scan_insn. */
static rtx debug_insn;
rtx current_output_insn;
@@ -201,10 +206,6 @@ rtx final_sequence;
static int dialect_number;
#endif
-/* Indexed by line number, nonzero if there is a note for that line. */
-
-static char *line_note_exists;
-
#ifdef HAVE_conditional_execution
/* Nonnull if the insn currently being emitted was a COND_EXEC pattern. */
rtx current_insn_predicate;
@@ -1500,16 +1501,15 @@ void
final (rtx first, FILE *file, int optimize, int prescan)
{
rtx insn;
- int max_line = 0;
int max_uid = 0;
+ int seen = 0;
last_ignored_compare = 0;
- /* Make a map indicating which line numbers appear in this function.
- When producing SDB debugging info, delete troublesome line number
+#ifdef SDB_DEBUGGING_INFO
+ /* When producing SDB debugging info, delete troublesome line number
notes from inlined functions in other files as well as duplicate
line number notes. */
-#ifdef SDB_DEBUGGING_INFO
if (write_symbols == SDB_DEBUG)
{
rtx last = 0;
@@ -1518,34 +1518,22 @@ final (rtx first, FILE *file, int optimize, int prescan)
{
if ((RTX_INTEGRATED_P (insn)
&& strcmp (NOTE_SOURCE_FILE (insn), main_input_filename) != 0)
- || (last != 0
- && NOTE_LINE_NUMBER (insn) == NOTE_LINE_NUMBER (last)
- && NOTE_SOURCE_FILE (insn) == NOTE_SOURCE_FILE (last)))
+ || (last != 0
+ && NOTE_LINE_NUMBER (insn) == NOTE_LINE_NUMBER (last)
+ && NOTE_SOURCE_FILE (insn) == NOTE_SOURCE_FILE (last)))
{
delete_insn (insn); /* Use delete_note. */
continue;
}
last = insn;
- if (NOTE_LINE_NUMBER (insn) > max_line)
- max_line = NOTE_LINE_NUMBER (insn);
}
}
- else
#endif
- {
- for (insn = first; insn; insn = NEXT_INSN (insn))
- if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > max_line)
- max_line = NOTE_LINE_NUMBER (insn);
- }
-
- line_note_exists = xcalloc (max_line + 1, sizeof (char));
for (insn = first; insn; insn = NEXT_INSN (insn))
{
if (INSN_UID (insn) > max_uid) /* Find largest UID. */
max_uid = INSN_UID (insn);
- if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0)
- 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. */
@@ -1581,11 +1569,8 @@ final (rtx first, FILE *file, int optimize, int prescan)
insn_current_address = INSN_ADDRESSES (INSN_UID (insn));
#endif /* HAVE_ATTR_length */
- insn = final_scan_insn (insn, file, optimize, prescan, 0);
+ insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen);
}
-
- free (line_note_exists);
- line_note_exists = NULL;
}
const char *
@@ -1644,11 +1629,18 @@ output_alternate_entry_point (FILE *file, rtx insn)
Value returned is the next insn to be scanned.
NOPEEPHOLES is the flag to disallow peephole processing (currently
- used for within delayed branch sequence output). */
+ used for within delayed branch sequence output).
+
+ SEEN is used to track the end of the prologue, for emitting
+ debug information. We force the emission of a line note after
+ both NOTE_INSN_PROLOGUE_END and NOTE_INSN_FUNCTION_BEG, or
+ at the beginning of the second basic block, whichever comes
+ first. */
rtx
final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
- int prescan, int nopeepholes ATTRIBUTE_UNUSED)
+ int prescan, int nopeepholes ATTRIBUTE_UNUSED,
+ int *seen)
{
#ifdef HAVE_cc0
rtx set;
@@ -1687,6 +1679,15 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
if (flag_debug_asm)
fprintf (asm_out_file, "\t%s basic block %d\n",
ASM_COMMENT_START, NOTE_BASIC_BLOCK (insn)->index);
+
+ if ((*seen & (SEEN_EMITTED | SEEN_BB)) == SEEN_BB)
+ {
+ *seen |= SEEN_EMITTED;
+ last_filename = NULL;
+ }
+ else
+ *seen |= SEEN_BB;
+
break;
case NOTE_INSN_EH_REGION_BEG:
@@ -1702,6 +1703,15 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
case NOTE_INSN_PROLOGUE_END:
(*targetm.asm_out.function_end_prologue) (file);
profile_after_prologue (file);
+
+ if ((*seen & (SEEN_EMITTED | SEEN_NOTE)) == SEEN_NOTE)
+ {
+ *seen |= SEEN_EMITTED;
+ last_filename = NULL;
+ }
+ else
+ *seen |= SEEN_NOTE;
+
break;
case NOTE_INSN_EPILOGUE_BEG:
@@ -1711,6 +1721,15 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
case NOTE_INSN_FUNCTION_BEG:
app_disable ();
(*debug_hooks->end_prologue) (last_linenum, last_filename);
+
+ if ((*seen & (SEEN_EMITTED | SEEN_NOTE)) == SEEN_NOTE)
+ {
+ *seen |= SEEN_EMITTED;
+ last_filename = NULL;
+ }
+ else
+ *seen |= SEEN_NOTE;
+
break;
case NOTE_INSN_BLOCK_BEG:
@@ -2084,7 +2103,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
thought unnecessary. If that happens, cancel this sequence
and cause that insn to be restored. */
- next = final_scan_insn (XVECEXP (body, 0, 0), file, 0, prescan, 1);
+ next = final_scan_insn (XVECEXP (body, 0, 0), file, 0, prescan, 1, seen);
if (next != XVECEXP (body, 0, 1))
{
final_sequence = 0;
@@ -2098,7 +2117,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
/* We loop in case any instruction in a delay slot gets
split. */
do
- insn = final_scan_insn (insn, file, 0, prescan, 1);
+ insn = final_scan_insn (insn, file, 0, prescan, 1, seen);
while (insn != next);
}
#ifdef DBR_OUTPUT_SEQEND
@@ -2302,7 +2321,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
for (note = NEXT_INSN (insn); note != next;
note = NEXT_INSN (note))
- final_scan_insn (note, file, optimize, prescan, nopeepholes);
+ final_scan_insn (note, file, optimize, prescan, nopeepholes, seen);
/* In case this is prescan, put the notes
in proper position for later rescan. */
diff --git a/gcc/fix-header.c b/gcc/fix-header.c
index ad23793a406..88390e3e537 100644
--- a/gcc/fix-header.c
+++ b/gcc/fix-header.c
@@ -1,6 +1,6 @@
/* fix-header.c - Make C header file suitable for C++.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
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
@@ -604,9 +604,8 @@ read_scan_file (char *in_fname, int argc, char **argv)
options->inhibit_errors = 1;
cpp_post_options (scan_in);
- if (!cpp_find_main_file (scan_in, in_fname))
+ if (!cpp_read_main_file (scan_in, in_fname))
exit (FATAL_EXIT_CODE);
- cpp_push_main_file (scan_in);
cpp_change_file (scan_in, LC_RENAME, "<built-in>");
cpp_init_builtins (scan_in, true);
diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x
index 160960563ab..395def931c6 100644
--- a/gcc/fixinc/fixincl.x
+++ b/gcc/fixinc/fixincl.x
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
- * It has been AutoGen-ed Thursday December 18, 2003 at 01:49:23 PM PST
+ * It has been AutoGen-ed Thursday January 29, 2004 at 08:59:22 PM PST
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT CVS-MERGE THIS FILE, EITHER Thu Dec 18 13:49:23 PST 2003
+/* DO NOT CVS-MERGE THIS FILE, EITHER Thu Jan 29 20:59:22 PST 2004
*
* You must regenerate it. Use the ./genfixes script.
*
@@ -15,7 +15,7 @@
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
- * This file contains 163 fixup descriptions.
+ * This file contains 172 fixup descriptions.
*
* See README for more information.
*
@@ -727,20 +727,20 @@ tSCC zAlpha___Extern_PrefixName[] =
/*
* File name selection pattern
*/
-tSCC zAlpha___Extern_PrefixList[] =
- "|sys/stat.h|";
+#define zAlpha___Extern_PrefixList (char*)NULL
/*
* Machine/OS name selection pattern
*/
tSCC* apzAlpha___Extern_PrefixMachs[] = {
- "alpha*-dec-osf5*",
+ "alpha*-dec-osf*",
(const char*)NULL };
/*
* content selection pattern - do fix if pattern found
*/
tSCC zAlpha___Extern_PrefixSelect0[] =
- "#[ \t]*if[ \t]*defined\\(__DECC\\)";
+ "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n\
+(#[ \t]*pragma[ \t]*extern_prefix.*)";
#define ALPHA___EXTERN_PREFIX_TEST_CT 1
static tTestDesc aAlpha___Extern_PrefixTests[] = {
@@ -751,6 +751,81 @@ static tTestDesc aAlpha___Extern_PrefixTests[] = {
*/
static const char* apzAlpha___Extern_PrefixPatch[] = {
"format",
+ "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n\
+%3",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Alpha___Extern_Prefix_Standards fix
+ */
+tSCC zAlpha___Extern_Prefix_StandardsName[] =
+ "alpha___extern_prefix_standards";
+
+/*
+ * File name selection pattern
+ */
+tSCC zAlpha___Extern_Prefix_StandardsList[] =
+ "|standards.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+tSCC* apzAlpha___Extern_Prefix_StandardsMachs[] = {
+ "alpha*-dec-osf*",
+ (const char*)NULL };
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zAlpha___Extern_Prefix_StandardsSelect0[] =
+ ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
+
+#define ALPHA___EXTERN_PREFIX_STANDARDS_TEST_CT 1
+static tTestDesc aAlpha___Extern_Prefix_StandardsTests[] = {
+ { TT_EGREP, zAlpha___Extern_Prefix_StandardsSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Alpha___Extern_Prefix_Standards
+ */
+static const char* apzAlpha___Extern_Prefix_StandardsPatch[] = {
+ "format",
+ "%0 && !defined(__PRAGMA_EXTERN_PREFIX)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Alpha___Extern_Prefix_Sys_Stat fix
+ */
+tSCC zAlpha___Extern_Prefix_Sys_StatName[] =
+ "alpha___extern_prefix_sys_stat";
+
+/*
+ * File name selection pattern
+ */
+tSCC zAlpha___Extern_Prefix_Sys_StatList[] =
+ "|sys/stat.h|sys/mount.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+tSCC* apzAlpha___Extern_Prefix_Sys_StatMachs[] = {
+ "alpha*-dec-osf5*",
+ (const char*)NULL };
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zAlpha___Extern_Prefix_Sys_StatSelect0[] =
+ "#[ \t]*if[ \t]*defined\\(__DECC\\)";
+
+#define ALPHA___EXTERN_PREFIX_SYS_STAT_TEST_CT 1
+static tTestDesc aAlpha___Extern_Prefix_Sys_StatTests[] = {
+ { TT_EGREP, zAlpha___Extern_Prefix_Sys_StatSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Alpha___Extern_Prefix_Sys_Stat
+ */
+static const char* apzAlpha___Extern_Prefix_Sys_StatPatch[] = {
+ "format",
"%0 || defined(__PRAGMA_EXTERN_PREFIX)",
(char*)NULL };
@@ -791,6 +866,41 @@ static const char* apzAlpha_AssertPatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Alpha_Bad_Lval fix
+ */
+tSCC zAlpha_Bad_LvalName[] =
+ "alpha_bad_lval";
+
+/*
+ * File name selection pattern
+ */
+#define zAlpha_Bad_LvalList (char*)NULL
+/*
+ * Machine/OS name selection pattern
+ */
+tSCC* apzAlpha_Bad_LvalMachs[] = {
+ "alpha*-dec-osf*",
+ (const char*)NULL };
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zAlpha_Bad_LvalSelect0[] =
+ "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
+
+#define ALPHA_BAD_LVAL_TEST_CT 1
+static tTestDesc aAlpha_Bad_LvalTests[] = {
+ { TT_EGREP, zAlpha_Bad_LvalSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Alpha_Bad_Lval
+ */
+static const char* apzAlpha_Bad_LvalPatch[] = { "sed",
+ "-e", "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Alpha_Getopt fix
*/
tSCC zAlpha_GetoptName[] =
@@ -882,7 +992,7 @@ tSCC* apzAlpha_PthreadMachs[] = {
* content selection pattern - do fix if pattern found
*/
tSCC zAlpha_PthreadSelect0[] =
- "(#[ \t]*if defined \\(_PTHREAD_ENV_DECC\\) || defined \\(_PTHREAD_ENV_EPCC\\))\n\
+ "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)|def _PTHREAD_ENV_DECC)(.*))\n\
(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
#define ALPHA_PTHREAD_TEST_CT 1
@@ -894,8 +1004,8 @@ static tTestDesc aAlpha_PthreadTests[] = {
*/
static const char* apzAlpha_PthreadPatch[] = {
"format",
- "%1 || defined (__PRAGMA_EXTERN_PREFIX)\n\
-%2",
+ "%2 defined (_PTHREAD_ENV_DECC)%4 || defined (__PRAGMA_EXTERN_PREFIX)\n\
+%5",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -1150,40 +1260,6 @@ static const char* apzAvoid_Wchar_T_TypePatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Bad_Lval fix
- */
-tSCC zBad_LvalName[] =
- "bad_lval";
-
-/*
- * File name selection pattern
- */
-tSCC zBad_LvalList[] =
- "|libgen.h|dirent.h|ftw.h|grp.h|ndbm.h|pthread.h|pwd.h|signal.h|standards.h|stdlib.h|string.h|stropts.h|time.h|unistd.h|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBad_LvalMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zBad_LvalSelect0[] =
- "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
-
-#define BAD_LVAL_TEST_CT 1
-static tTestDesc aBad_LvalTests[] = {
- { TT_EGREP, zBad_LvalSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Bad_Lval
- */
-static const char* apzBad_LvalPatch[] = { "sed",
- "-e", "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
* Description of Bad_Struct_Term fix
*/
tSCC zBad_Struct_TermName[] =
@@ -1676,6 +1752,48 @@ static const char* apzEcd_CursorPatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Exception_Structure fix
+ */
+tSCC zException_StructureName[] =
+ "exception_structure";
+
+/*
+ * File name selection pattern
+ */
+tSCC zException_StructureList[] =
+ "|math.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzException_StructureMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zException_StructureSelect0[] =
+ "matherr";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zException_StructureBypass0[] =
+ "matherr.*(struct exception|__MATH_EXCEPTION)";
+
+#define EXCEPTION_STRUCTURE_TEST_CT 2
+static tTestDesc aException_StructureTests[] = {
+ { TT_NEGREP, zException_StructureBypass0, (regex_t*)NULL },
+ { TT_EGREP, zException_StructureSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Exception_Structure
+ */
+static const char* apzException_StructurePatch[] = {
+ "wrap",
+ "struct exception;\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Freebsd_Gcc3_Breakage fix
*/
tSCC zFreebsd_Gcc3_BreakageName[] =
@@ -2028,6 +2146,55 @@ static const char* apzHpux10_Ctype_Declarations2Patch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Hpux10_Stdio_Declarations fix
+ */
+tSCC zHpux10_Stdio_DeclarationsName[] =
+ "hpux10_stdio_declarations";
+
+/*
+ * File name selection pattern
+ */
+tSCC zHpux10_Stdio_DeclarationsList[] =
+ "|stdio.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzHpux10_Stdio_DeclarationsMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zHpux10_Stdio_DeclarationsSelect0[] =
+ "^#[ \t]*define _iob[ \t]*__iob";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zHpux10_Stdio_DeclarationsBypass0[] =
+ "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
+
+#define HPUX10_STDIO_DECLARATIONS_TEST_CT 2
+static tTestDesc aHpux10_Stdio_DeclarationsTests[] = {
+ { TT_NEGREP, zHpux10_Stdio_DeclarationsBypass0, (regex_t*)NULL },
+ { TT_EGREP, zHpux10_Stdio_DeclarationsSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Hpux10_Stdio_Declarations
+ */
+static const char* apzHpux10_Stdio_DeclarationsPatch[] = {
+ "format",
+ "%0\n\n\
+# if defined(__STDC__) || defined(__cplusplus)\n\
+ extern int snprintf(char *, size_t, const char *, ...);\n\
+ extern int vsnprintf(char *, size_t, const char *, __va_list);\n\
+# else /* not __STDC__) || __cplusplus */\n\
+ extern int snprintf();\n\
+ extern int vsnprintf();\n\
+# endif /* __STDC__) || __cplusplus */\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Hpux11_Abs fix
*/
tSCC zHpux11_AbsName[] =
@@ -3219,7 +3386,7 @@ tSCC zMath_ExceptionSelect0[] =
* content bypass pattern - skip fix if pattern found
*/
tSCC zMath_ExceptionBypass0[] =
- "__cplusplus";
+ "We have a problem when using C\\+\\+";
#define MATH_EXCEPTION_TEST_CT 2
static tTestDesc aMath_ExceptionTests[] = {
@@ -4907,48 +5074,6 @@ void\t(*signal(...))(...);\n\
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Sunos_Matherr_Decl fix
- */
-tSCC zSunos_Matherr_DeclName[] =
- "sunos_matherr_decl";
-
-/*
- * File name selection pattern
- */
-tSCC zSunos_Matherr_DeclList[] =
- "|math.h|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSunos_Matherr_DeclMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSunos_Matherr_DeclSelect0[] =
- "matherr";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSunos_Matherr_DeclBypass0[] =
- "matherr.*(struct exception|__MATH_EXCEPTION)";
-
-#define SUNOS_MATHERR_DECL_TEST_CT 2
-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
- */
-static const char* apzSunos_Matherr_DeclPatch[] = {
- "wrap",
- "struct exception;\n",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
* Description of Sunos_Strlen fix
*/
tSCC zSunos_StrlenName[] =
@@ -5526,6 +5651,42 @@ static const char* apzUltrix_Const2Patch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Ultrix_Const3 fix
+ */
+tSCC zUltrix_Const3Name[] =
+ "ultrix_const3";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_Const3List[] =
+ "|stdio.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_Const3Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_Const3Select0[] =
+ "fdopen\\( .*, char \\*";
+
+#define ULTRIX_CONST3_TEST_CT 1
+static tTestDesc aUltrix_Const3Tests[] = {
+ { TT_EGREP, zUltrix_Const3Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Const3
+ */
+static const char* apzUltrix_Const3Patch[] = {
+ "format",
+ "%1 const %3 *__",
+ "([ \t*](fdopen)\\(.*)[ \t]+(char|void) \\*__",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Ultrix_Fix_Fixproto fix
*/
tSCC zUltrix_Fix_FixprotoName[] =
@@ -5598,6 +5759,40 @@ static const char* apzUltrix_IfdefPatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Ultrix_Locale fix
+ */
+tSCC zUltrix_LocaleName[] =
+ "ultrix_locale";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_LocaleList[] =
+ "|locale.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_LocaleMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_LocaleSelect0[] =
+ "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+#define ULTRIX_LOCALE_TEST_CT 1
+static tTestDesc aUltrix_LocaleTests[] = {
+ { TT_EGREP, zUltrix_LocaleSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Locale
+ */
+static const char* apzUltrix_LocalePatch[] = {
+ "wrap",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Ultrix_Math_Ifdef fix
*/
tSCC zUltrix_Math_IfdefName[] =
@@ -5776,6 +5971,47 @@ static const char* apzUltrix_StaticPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Ultrix_Stdlib fix
+ */
+tSCC zUltrix_StdlibName[] =
+ "ultrix_stdlib";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_StdlibList[] =
+ "|stdlib.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_StdlibMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_StdlibSelect0[] =
+ "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+#define ULTRIX_STDLIB_TEST_CT 1
+static tTestDesc aUltrix_StdlibTests[] = {
+ { TT_EGREP, zUltrix_StdlibSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Stdlib
+ */
+static const char* apzUltrix_StdlibPatch[] = { "sed",
+ "-e", "/^char.*getenv( const char .* );.*$/a\\\n\
+int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n\
+void\t\tunsetenv( const char *__name );\\\n\
+int\t\tputenv( char *__s );\n",
+ "-e", "/^char.*getenv();.*$/a\\\n\
+int\tsetenv();\\\n\
+void\tunsetenv();\\\n\
+int\tputenv();\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Ultrix_Strings fix
*/
tSCC zUltrix_StringsName[] =
@@ -5810,6 +6046,139 @@ static const char* apzUltrix_StringsPatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Ultrix_Strings2 fix
+ */
+tSCC zUltrix_Strings2Name[] =
+ "ultrix_strings2";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_Strings2List[] =
+ "|strings.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_Strings2Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_Strings2Select0[] =
+ "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+#define ULTRIX_STRINGS2_TEST_CT 1
+static tTestDesc aUltrix_Strings2Tests[] = {
+ { TT_EGREP, zUltrix_Strings2Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Strings2
+ */
+static const char* apzUltrix_Strings2Patch[] = { "sed",
+ "-e", "/^.*strncmp( const .* );.*/a\\\n\
+\\\n\
+extern int\\\n\
+\tstrcasecmp( const char *__s1, const char *__s2),\\\n\
+\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n",
+ "-e", "/^.*strncmp();.*/a\\\n\
+extern int\\\n\
+\tstrcasecmp(),\\\n\
+\tstrncasecmp();\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Ultrix_Sys_Time fix
+ */
+tSCC zUltrix_Sys_TimeName[] =
+ "ultrix_sys_time";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_Sys_TimeList[] =
+ "|sys/time.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_Sys_TimeMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_Sys_TimeSelect0[] =
+ "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+#define ULTRIX_SYS_TIME_TEST_CT 1
+static tTestDesc aUltrix_Sys_TimeTests[] = {
+ { TT_EGREP, zUltrix_Sys_TimeSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Sys_Time
+ */
+static const char* apzUltrix_Sys_TimePatch[] = { "sed",
+ "-e", "/^extern.*time_t.*time( time_t .* );.*$/a\\\n\
+\\\n\
+extern int adjtime(struct timeval *, struct timeval *);\\\n\
+extern int getitimer(int, struct itimerval *);\\\n\
+extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n\
+extern int gettimeofday(struct timeval *, struct timezone *);\\\n\
+extern int settimeofday(struct timeval *, struct timezone *);\\\n\
+extern void profil(const void *, size_t, size_t, unsigned int);\\\n\
+extern int stime(const time_t *);\\\n\
+extern int utimes(const char *, const struct timeval[2]);\\\n\
+extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n",
+ "-e", "/^extern.*double.*difftime();.*$/a\\\n\
+extern\tint adjtime();\\\n\
+extern\tint getitimer();\\\n\
+extern\tint setitimer();\\\n\
+extern\tint gettimeofday();\\\n\
+extern\tint settimeofday();\\\n\
+extern\tvoid profil();\\\n\
+extern\tint stime();\\\n\
+extern\tint utimes();\\\n\
+extern\tint select();\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Ultrix_Unistd fix
+ */
+tSCC zUltrix_UnistdName[] =
+ "ultrix_unistd";
+
+/*
+ * File name selection pattern
+ */
+tSCC zUltrix_UnistdList[] =
+ "|unistd.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzUltrix_UnistdMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zUltrix_UnistdSelect0[] =
+ "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+#define ULTRIX_UNISTD_TEST_CT 1
+static tTestDesc aUltrix_UnistdTests[] = {
+ { TT_EGREP, zUltrix_UnistdSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Ultrix_Unistd
+ */
+static const char* apzUltrix_UnistdPatch[] = { "sed",
+ "-e", "/^[ \t]*getgroups(),.*$/a\\\n\
+\tgetpagesize(),\n",
+ "-e", "/^[ \t]*fork(),.*$/a\\\n\
+\tvfork(),\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Undefine_Null fix
*/
tSCC zUndefine_NullName[] =
@@ -6453,9 +6822,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
-#define REGEX_COUNT 183
+#define REGEX_COUNT 193
#define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT 163
+#define FIX_COUNT 172
/*
* Enumerate the fixes
@@ -6476,7 +6845,10 @@ typedef enum {
AIX_VOLATILE_FIXIDX,
ALPHA___ASSERT_FIXIDX,
ALPHA___EXTERN_PREFIX_FIXIDX,
+ ALPHA___EXTERN_PREFIX_STANDARDS_FIXIDX,
+ ALPHA___EXTERN_PREFIX_SYS_STAT_FIXIDX,
ALPHA_ASSERT_FIXIDX,
+ ALPHA_BAD_LVAL_FIXIDX,
ALPHA_GETOPT_FIXIDX,
ALPHA_PARENS_FIXIDX,
ALPHA_PTHREAD_FIXIDX,
@@ -6486,7 +6858,6 @@ typedef enum {
AVOID_BOOL_DEFINE_FIXIDX,
AVOID_BOOL_TYPE_FIXIDX,
AVOID_WCHAR_T_TYPE_FIXIDX,
- BAD_LVAL_FIXIDX,
BAD_STRUCT_TERM_FIXIDX,
BADQUOTE_FIXIDX,
BROKEN_ASSERT_STDIO_FIXIDX,
@@ -6500,6 +6871,7 @@ typedef enum {
DEC_INTERN_ASM_FIXIDX,
DJGPP_WCHAR_H_FIXIDX,
ECD_CURSOR_FIXIDX,
+ EXCEPTION_STRUCTURE_FIXIDX,
FREEBSD_GCC3_BREAKAGE_FIXIDX,
GNU_TYPES_FIXIDX,
HP_INLINE_FIXIDX,
@@ -6508,6 +6880,7 @@ typedef enum {
HPUX11_CPP_POW_INLINE_FIXIDX,
HPUX10_CTYPE_DECLARATIONS1_FIXIDX,
HPUX10_CTYPE_DECLARATIONS2_FIXIDX,
+ HPUX10_STDIO_DECLARATIONS_FIXIDX,
HPUX11_ABS_FIXIDX,
HPUX11_FABSF_FIXIDX,
HPUX11_SIZE_T_FIXIDX,
@@ -6583,7 +6956,6 @@ typedef enum {
SUN_MALLOC_FIXIDX,
SUN_RUSERS_SEMI_FIXIDX,
SUN_SIGNAL_FIXIDX,
- SUNOS_MATHERR_DECL_FIXIDX,
SUNOS_STRLEN_FIXIDX,
SVR4__P_FIXIDX,
SVR4_DISABLE_OPT_FIXIDX,
@@ -6600,14 +6972,20 @@ typedef enum {
ULTRIX_ATOF_PARAM_FIXIDX,
ULTRIX_CONST_FIXIDX,
ULTRIX_CONST2_FIXIDX,
+ ULTRIX_CONST3_FIXIDX,
ULTRIX_FIX_FIXPROTO_FIXIDX,
ULTRIX_IFDEF_FIXIDX,
+ ULTRIX_LOCALE_FIXIDX,
ULTRIX_MATH_IFDEF_FIXIDX,
ULTRIX_NESTED_IOCTL_FIXIDX,
ULTRIX_NESTED_SVC_FIXIDX,
ULTRIX_STAT_FIXIDX,
ULTRIX_STATIC_FIXIDX,
+ ULTRIX_STDLIB_FIXIDX,
ULTRIX_STRINGS_FIXIDX,
+ ULTRIX_STRINGS2_FIXIDX,
+ ULTRIX_SYS_TIME_FIXIDX,
+ ULTRIX_UNISTD_FIXIDX,
UNDEFINE_NULL_FIXIDX,
UNICOSMK_RESTRICT_FIXIDX,
UW7_BYTEORDER_FIX_FIXIDX,
@@ -6702,11 +7080,26 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
ALPHA___EXTERN_PREFIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aAlpha___Extern_PrefixTests, apzAlpha___Extern_PrefixPatch, 0 },
+ { zAlpha___Extern_Prefix_StandardsName, zAlpha___Extern_Prefix_StandardsList,
+ apzAlpha___Extern_Prefix_StandardsMachs,
+ ALPHA___EXTERN_PREFIX_STANDARDS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aAlpha___Extern_Prefix_StandardsTests, apzAlpha___Extern_Prefix_StandardsPatch, 0 },
+
+ { zAlpha___Extern_Prefix_Sys_StatName, zAlpha___Extern_Prefix_Sys_StatList,
+ apzAlpha___Extern_Prefix_Sys_StatMachs,
+ ALPHA___EXTERN_PREFIX_SYS_STAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aAlpha___Extern_Prefix_Sys_StatTests, apzAlpha___Extern_Prefix_Sys_StatPatch, 0 },
+
{ zAlpha_AssertName, zAlpha_AssertList,
apzAlpha_AssertMachs,
ALPHA_ASSERT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aAlpha_AssertTests, apzAlpha_AssertPatch, 0 },
+ { zAlpha_Bad_LvalName, zAlpha_Bad_LvalList,
+ apzAlpha_Bad_LvalMachs,
+ ALPHA_BAD_LVAL_TEST_CT, FD_MACH_ONLY,
+ aAlpha_Bad_LvalTests, apzAlpha_Bad_LvalPatch, 0 },
+
{ zAlpha_GetoptName, zAlpha_GetoptList,
apzAlpha_GetoptMachs,
ALPHA_GETOPT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -6752,11 +7145,6 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
AVOID_WCHAR_T_TYPE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aAvoid_Wchar_T_TypeTests, apzAvoid_Wchar_T_TypePatch, 0 },
- { zBad_LvalName, zBad_LvalList,
- apzBad_LvalMachs,
- BAD_LVAL_TEST_CT, FD_MACH_ONLY,
- aBad_LvalTests, apzBad_LvalPatch, 0 },
-
{ zBad_Struct_TermName, zBad_Struct_TermList,
apzBad_Struct_TermMachs,
BAD_STRUCT_TERM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -6822,6 +7210,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
ECD_CURSOR_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aEcd_CursorTests, apzEcd_CursorPatch, 0 },
+ { zException_StructureName, zException_StructureList,
+ apzException_StructureMachs,
+ EXCEPTION_STRUCTURE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aException_StructureTests, apzException_StructurePatch, 0 },
+
{ zFreebsd_Gcc3_BreakageName, zFreebsd_Gcc3_BreakageList,
apzFreebsd_Gcc3_BreakageMachs,
FREEBSD_GCC3_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -6862,6 +7255,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
HPUX10_CTYPE_DECLARATIONS2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aHpux10_Ctype_Declarations2Tests, apzHpux10_Ctype_Declarations2Patch, 0 },
+ { zHpux10_Stdio_DeclarationsName, zHpux10_Stdio_DeclarationsList,
+ apzHpux10_Stdio_DeclarationsMachs,
+ HPUX10_STDIO_DECLARATIONS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aHpux10_Stdio_DeclarationsTests, apzHpux10_Stdio_DeclarationsPatch, 0 },
+
{ zHpux11_AbsName, zHpux11_AbsList,
apzHpux11_AbsMachs,
HPUX11_ABS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -7237,11 +7635,6 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
SUN_SIGNAL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSun_SignalTests, apzSun_SignalPatch, 0 },
- { zSunos_Matherr_DeclName, zSunos_Matherr_DeclList,
- apzSunos_Matherr_DeclMachs,
- SUNOS_MATHERR_DECL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSunos_Matherr_DeclTests, apzSunos_Matherr_DeclPatch, 0 },
-
{ zSunos_StrlenName, zSunos_StrlenList,
apzSunos_StrlenMachs,
SUNOS_STRLEN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -7322,6 +7715,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
ULTRIX_CONST2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aUltrix_Const2Tests, apzUltrix_Const2Patch, 0 },
+ { zUltrix_Const3Name, zUltrix_Const3List,
+ apzUltrix_Const3Machs,
+ ULTRIX_CONST3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aUltrix_Const3Tests, apzUltrix_Const3Patch, 0 },
+
{ zUltrix_Fix_FixprotoName, zUltrix_Fix_FixprotoList,
apzUltrix_Fix_FixprotoMachs,
ULTRIX_FIX_FIXPROTO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -7332,6 +7730,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
ULTRIX_IFDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aUltrix_IfdefTests, apzUltrix_IfdefPatch, 0 },
+ { zUltrix_LocaleName, zUltrix_LocaleList,
+ apzUltrix_LocaleMachs,
+ ULTRIX_LOCALE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aUltrix_LocaleTests, apzUltrix_LocalePatch, 0 },
+
{ zUltrix_Math_IfdefName, zUltrix_Math_IfdefList,
apzUltrix_Math_IfdefMachs,
ULTRIX_MATH_IFDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
@@ -7357,11 +7760,31 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
ULTRIX_STATIC_TEST_CT, FD_MACH_ONLY,
aUltrix_StaticTests, apzUltrix_StaticPatch, 0 },
+ { zUltrix_StdlibName, zUltrix_StdlibList,
+ apzUltrix_StdlibMachs,
+ ULTRIX_STDLIB_TEST_CT, FD_MACH_ONLY,
+ aUltrix_StdlibTests, apzUltrix_StdlibPatch, 0 },
+
{ zUltrix_StringsName, zUltrix_StringsList,
apzUltrix_StringsMachs,
ULTRIX_STRINGS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aUltrix_StringsTests, apzUltrix_StringsPatch, 0 },
+ { zUltrix_Strings2Name, zUltrix_Strings2List,
+ apzUltrix_Strings2Machs,
+ ULTRIX_STRINGS2_TEST_CT, FD_MACH_ONLY,
+ aUltrix_Strings2Tests, apzUltrix_Strings2Patch, 0 },
+
+ { zUltrix_Sys_TimeName, zUltrix_Sys_TimeList,
+ apzUltrix_Sys_TimeMachs,
+ ULTRIX_SYS_TIME_TEST_CT, FD_MACH_ONLY,
+ aUltrix_Sys_TimeTests, apzUltrix_Sys_TimePatch, 0 },
+
+ { zUltrix_UnistdName, zUltrix_UnistdList,
+ apzUltrix_UnistdMachs,
+ ULTRIX_UNISTD_TEST_CT, FD_MACH_ONLY,
+ aUltrix_UnistdTests, apzUltrix_UnistdPatch, 0 },
+
{ zUndefine_NullName, zUndefine_NullList,
apzUndefine_NullMachs,
UNDEFINE_NULL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def
index 95a5534d15f..78dda4b8dbb 100644
--- a/gcc/fixinc/inclhack.def
+++ b/gcc/fixinc/inclhack.def
@@ -523,11 +523,50 @@ fix = {
/*
- * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5 <sys/stat.h>.
+ * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers.
*/
fix = {
hackname = alpha___extern_prefix;
+ select = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n(#[ \t]*pragma[ \t]*extern_prefix.*)";
+
+ mach = "alpha*-dec-osf*";
+ c_fix = format;
+ c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3";
+
+ test_text = "#ifdef __DECC\n"
+ "#pragma extern_prefix \"_P\"\n"
+ "# if defined(__DECC)\n"
+ "# pragma extern_prefix \"_E\"\n"
+ "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n"
+ "# pragma extern_prefix \"\"";
+};
+
+
+/*
+ * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 <standards.h>.
+ */
+fix = {
+ hackname = alpha___extern_prefix_standards;
+ files = standards.h;
+ select = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
+
+ mach = "alpha*-dec-osf*";
+ c_fix = format;
+ c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)";
+
+ test_text = "#if (_ISO_C_SOURCE>=19990L) && !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)";
+};
+
+
+/*
+ * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5 <sys/mount.h> and
+ * <sys/stat.h>. The tests for __DECC are special in various ways, so
+ * alpha__extern_prefix cannot be used.
+ */
+fix = {
+ hackname = alpha___extern_prefix_sys_stat;
files = sys/stat.h;
+ files = sys/mount.h;
select = "#[ \t]*if[ \t]*defined\\(__DECC\\)";
mach = "alpha*-dec-osf5*";
@@ -553,6 +592,37 @@ fix = {
/*
+ * Fix #defines under Alpha OSF/1:
+ * The following files contain '#pragma extern_prefix "_FOO"' followed by
+ * a '#define something(x,y,z) _FOOsomething(x,y,z)'. The intent of these
+ * statements is to reduce namespace pollution. While these macros work
+ * properly in most cases, they don't allow you to take a pointer to the
+ * "something" being modified. To get around this limitation, change these
+ * statements to be of the form '#define something _FOOsomething'.
+ *
+ * sed ain't egrep, lesson 2463: sed can use self-referential
+ * regular expressions. In the substitute expression below,
+ * "\\1" and "\\2" refer to subexpressions found earlier in the
+ * same match. So, we continue to use sed. "extern_prefix" will
+ * be a rare match anyway...
+ */
+fix = {
+ hackname = alpha_bad_lval;
+
+ select = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
+ mach = "alpha*-dec-osf*";
+
+ sed =
+ "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
+ "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
+
+ test_text = '#pragma extern_prefix "_FOO"'"\n"
+ "#define something(x,y,z) _FOOsomething(x,y,z)\n"
+ "#define mumble _FOOmumble";
+};
+
+
+/*
* Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
*/
fix = {
@@ -585,15 +655,18 @@ fix = {
fix = {
hackname = alpha_pthread;
files = pthread.h;
- select = "(#[ \t]*if defined \\(_PTHREAD_ENV_DECC\\) || defined \\(_PTHREAD_ENV_EPCC\\))\n"
+ select = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)|def _PTHREAD_ENV_DECC)(.*))\n"
"(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
mach = "alpha*-dec-osf*";
c_fix = format;
- c_fix_arg = "%1 || defined (__PRAGMA_EXTERN_PREFIX)\n%2";
+ c_fix_arg = "%2 defined (_PTHREAD_ENV_DECC)%4 || defined (__PRAGMA_EXTERN_PREFIX)\n%5";
test_text = "# if defined (_PTHREAD_ENV_DECC) || defined (_PTHREAD_ENV_EPCC)\n"
"# define _PTHREAD_USE_PTDNAM_\n"
+ "# endif\n"
+ "# ifdef _PTHREAD_ENV_DECC\n"
+ "# define _PTHREAD_USE_PTDNAM_\n"
"# endif";
};
@@ -715,51 +788,6 @@ fix = {
/*
- * Fix #defines under Alpha OSF/1:
- * The following files contain '#pragma extern_prefix "_FOO"' followed by
- * a '#define something(x,y,z) _FOOsomething(x,y,z)'. The intent of these
- * statements is to reduce namespace pollution. While these macros work
- * properly in most cases, they don't allow you to take a pointer to the
- * "something" being modified. To get around this limitation, change these
- * statements to be of the form '#define something _FOOsomething'.
- *
- * sed ain't egrep, lesson 2463: sed can use self-referential
- * regular expressions. In the substitute expression below,
- * "\\1" and "\\2" refer to subexpressions found earlier in the
- * same match. So, we continue to use sed. "extern_prefix" will
- * be a rare match anyway...
- */
-fix = {
- hackname = bad_lval;
-
- select = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
-
- files = libgen.h;
- files = dirent.h;
- files = ftw.h;
- files = grp.h;
- files = ndbm.h;
- files = pthread.h;
- files = pwd.h;
- files = signal.h;
- files = standards.h;
- files = stdlib.h;
- files = string.h;
- files = stropts.h;
- files = time.h;
- files = unistd.h;
-
- sed =
- "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
- "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
-
- test_text = '#pragma extern_prefix "_FOO"'"\n"
- "#define something(x,y,z) _FOOsomething(x,y,z)\n"
- "#define mumble _FOOmumble";
-};
-
-
-/*
* Fix `typedef struct term;' on hppa1.1-hp-hpux9.
*/
fix = {
@@ -1003,6 +1031,26 @@ fix = {
/*
+ * math.h on SunOS 4 puts the declaration of matherr before the definition
+ * of struct exception, so the prototype (added by fixproto) causes havoc.
+ * This must appear before the math_exception fix.
+ */
+fix = {
+ hackname = exception_structure;
+ files = math.h;
+
+ /* If matherr has a prototype already, the header needs no fix. */
+ bypass = 'matherr.*(struct exception|__MATH_EXCEPTION)';
+ select = matherr;
+
+ c_fix = wrap;
+ c_fix_arg = "struct exception;\n";
+
+ test_text = "extern int matherr();";
+};
+
+
+/*
* Between 8/24/1998 and 2/17/2001, FreeBSD system headers presume
* neither the existence of GCC 3 nor its exact feature set yet break
* (by design?) when __GNUC__ is set beyond 2.
@@ -1193,6 +1241,28 @@ fix = {
/*
+ * Fix hpux 10.X missing stdio declarations
+ */
+fix = {
+ hackname = hpux10_stdio_declarations;
+ files = stdio.h;
+ select = "^#[ \t]*define _iob[ \t]*__iob";
+ bypass = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
+ c_fix = format;
+ c_fix_arg = "%0\n\n"
+ "# if defined(__STDC__) || defined(__cplusplus)\n"
+ " extern int snprintf(char *, size_t, const char *, ...);\n"
+ " extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
+ "# else /* not __STDC__) || __cplusplus */\n"
+ " extern int snprintf();\n"
+ " extern int vsnprintf();\n"
+ "# endif /* __STDC__) || __cplusplus */\n";
+
+ test_text = "# define _iob __iob\n";
+};
+
+
+/*
* Make sure hpux defines abs in header.
*/
fix = {
@@ -1803,11 +1873,10 @@ fix = {
/*
* Some math.h files define struct exception (it's in the System V
- * Interface Definition), which conflicts with
- * the class exception defined in the C++ file std/stdexcept.h. We
- * redefine it to __math_exception. This is not a great fix, but I
- * haven't been able to think of anything better.
- * Note that we have to put the #ifdef/#endif blocks at beginning
+ * Interface Definition), which conflicts with the class exception defined
+ * in the C++ file std/stdexcept.h. We redefine it to __math_exception.
+ * This is not a great fix, but I haven't been able to think of anything
+ * better. Note that we have to put the #ifdef/#endif blocks at beginning
* and end of file, because fixproto runs after us and may insert
* additional references to struct exception.
*/
@@ -1815,7 +1884,13 @@ fix = {
hackname = math_exception;
files = math.h;
select = "struct exception";
- bypass = '__cplusplus';
+ /*
+ * This should be bypassed on __cplusplus, but some supposedly C++ C++
+ * aware headers, such as Solaris 8 and 9, don't wrap their struct
+ * exception either. So currently we bypass only for glibc, based on a
+ * comment in the fixed glibc header. Ick.
+ */
+ bypass = 'We have a problem when using C\+\+';
c_fix = wrap;
c_fix_arg = "#ifdef __cplusplus\n"
@@ -2756,25 +2831,6 @@ fix = {
/*
- * math.h on SunOS 4 puts the declaration of matherr before the definition
- * of struct exception, so the prototype (added by fixproto) causes havoc.
- */
-fix = {
- hackname = sunos_matherr_decl;
- files = math.h;
-
- /* If matherr has a prototype already, the header needs no fix. */
- bypass = 'matherr.*(struct exception|__MATH_EXCEPTION)';
- select = matherr;
-
- c_fix = wrap;
- c_fix_arg = "struct exception;\n";
-
- test_text = "extern int matherr();";
-};
-
-
-/*
* Correct the return type for strlen in strings.h in SunOS 4.
*/
fix = {
@@ -3387,6 +3443,24 @@ fix = {
/*
+ * parameters not const on Ultrix V4.3.
+ */
+fix = {
+ hackname = ultrix_const3;
+ files = stdio.h;
+ select = 'fdopen\( .*, char \*';
+
+ c_fix = format;
+ c_fix_arg = "%1 const %3 *__";
+ c_fix_arg = "([ \t*](fdopen)\\(.*)"
+ "[ \t]+(char|void) \\*__";
+
+ test_text =
+ "extern FILE * fdopen( int __filedes, char *__type );\n";
+};
+
+
+/*
* Ultrix V4.[35] puts the declaration of uname before the definition
* of struct utsname, so the prototype (added by fixproto) causes havoc.
*/
@@ -3421,6 +3495,19 @@ fix = {
/*
+ * Add once-only latch to Ultrix V4.3 locale.h.
+ */
+fix = {
+ hackname = ultrix_locale;
+ files = locale.h;
+ select = "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
+ c_fix = wrap;
+ test_text =
+ "@(#)locale.h 6.1 (ULTRIX)\n";
+};
+
+
+/*
* Strip "|| CC$gfloat" from Ultrix math headers.
*/
fix = {
@@ -3500,6 +3587,31 @@ fix = {
/*
+ * Add missing declarations to Ultrix V4.3 stdlib.h.
+ */
+fix = {
+ hackname = ultrix_stdlib;
+ files = stdlib.h;
+ select = "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+ sed = "/^char.*getenv( const char .* );.*$/a\\\n"
+ "int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n"
+ "void\t\tunsetenv( const char *__name );\\\n"
+ "int\t\tputenv( char *__s );\n";
+
+ sed = "/^char.*getenv();.*$/a\\\n"
+ "int\tsetenv();\\\n"
+ "void\tunsetenv();\\\n"
+ "int\tputenv();\n";
+
+ test_text =
+ "@(#)stdlib.h 6.1 (ULTRIX)\n"
+ "char * getenv( const char *__name );\n"
+ "char *getenv();\n";
+};
+
+
+/*
* Add once-only latch to Ultrix V4.3 strings.h.
*/
fix = {
@@ -3513,6 +3625,91 @@ fix = {
/*
+ * Add missing declarations to Ultrix V4.3 strings.h.
+ */
+fix = {
+ hackname = ultrix_strings2;
+ files = strings.h;
+ select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+ sed = "/^.*strncmp( const .* );.*/a\\\n"
+ "\\\n"
+ "extern int\\\n"
+ "\tstrcasecmp( const char *__s1, const char *__s2),\\\n"
+ "\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n";
+
+ sed = "/^.*strncmp();.*/a\\\n"
+ "extern int\\\n"
+ "\tstrcasecmp(),\\\n"
+ "\tstrncasecmp();\n";
+
+ test_text =
+ "@(#)strings.h 6.1 (ULTRIX)\n"
+ "\tstrncmp( const char *__s1, const char *__s2, size_t __n );\n"
+ "\tstrncmp();\n";
+};
+
+
+/*
+ * Add missing declarations to Ultrix V4.3 sys/time.h.
+ */
+fix = {
+ hackname = ultrix_sys_time;
+ files = sys/time.h;
+ select = "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+ sed = "/^extern.*time_t.*time( time_t .* );.*$/a\\\n"
+ "\\\n"
+ "extern int adjtime(struct timeval *, struct timeval *);\\\n"
+ "extern int getitimer(int, struct itimerval *);\\\n"
+ "extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n"
+ "extern int gettimeofday(struct timeval *, struct timezone *);\\\n"
+ "extern int settimeofday(struct timeval *, struct timezone *);\\\n"
+ "extern void profil(const void *, size_t, size_t, unsigned int);\\\n"
+ "extern int stime(const time_t *);\\\n"
+ "extern int utimes(const char *, const struct timeval[2]);\\\n"
+ "extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n";
+
+ sed = "/^extern.*double.*difftime();.*$/a\\\n"
+ "extern\tint adjtime();\\\n"
+ "extern\tint getitimer();\\\n"
+ "extern\tint setitimer();\\\n"
+ "extern\tint gettimeofday();\\\n"
+ "extern\tint settimeofday();\\\n"
+ "extern\tvoid profil();\\\n"
+ "extern\tint stime();\\\n"
+ "extern\tint utimes();\\\n"
+ "extern\tint select();\n";
+
+ test_text =
+ "@(#)time.h 6.1 (ULTRIX)\n"
+ "extern time_t time( time_t *__tloc );\n"
+ "extern double difftime();\n";
+};
+
+
+/*
+ * Add missing declarations to Ultrix V4.3 unistd.h.
+ */
+fix = {
+ hackname = ultrix_unistd;
+ files = unistd.h;
+ select = "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
+
+ sed = "/^[ \t]*getgroups(),.*$/a\\\n"
+ "\tgetpagesize(),\n";
+
+ sed = "/^[ \t]*fork(),.*$/a\\\n"
+ "\tvfork(),\n";
+
+ test_text =
+ "@(#)unistd.h 6.1 (ULTRIX)\n"
+ "\tgetgroups(),\n"
+ "\tfork(),\n";
+};
+
+
+/*
* Fix multiple defines for NULL. Sometimes, we stumble into \r\n
* terminated lines, so accommodate these. Test both ways.
* Don't bother to reproduce the \r\n termination, as GCC has to
diff --git a/gcc/fixinc/tests/base/libgen.h b/gcc/fixinc/tests/base/libgen.h
deleted file mode 100644
index 85328f45a10..00000000000
--- a/gcc/fixinc/tests/base/libgen.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/libgen.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( BAD_LVAL_CHECK )
-#pragma extern_prefix "_FOO"
-#define something _FOOsomething
-#define mumble _FOOmumble
-#endif /* BAD_LVAL_CHECK */
diff --git a/gcc/fixinc/tests/base/locale.h b/gcc/fixinc/tests/base/locale.h
new file mode 100644
index 00000000000..3b079e544c9
--- /dev/null
+++ b/gcc/fixinc/tests/base/locale.h
@@ -0,0 +1,20 @@
+/* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
+ "fixinc/tests/inc/locale.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+#ifndef FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE
+#define FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE 1
+
+
+
+#if defined( ULTRIX_LOCALE_CHECK )
+@(#)locale.h 6.1 (ULTRIX)
+
+#endif /* ULTRIX_LOCALE_CHECK */
+
+#endif /* FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE */
diff --git a/gcc/fixinc/tests/base/math.h b/gcc/fixinc/tests/base/math.h
index 51fe6b57952..52fa3f39996 100644
--- a/gcc/fixinc/tests/base/math.h
+++ b/gcc/fixinc/tests/base/math.h
@@ -7,16 +7,16 @@
This had to be done to correct non-standard usages in the
original, manufacturer supplied header file. */
-#ifndef FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL
-#define FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL 1
-
-struct exception;
#ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION
#define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1
#ifdef __cplusplus
#define exception __math_exception
#endif
+#ifndef FIXINC_WRAP_MATH_H_EXCEPTION_STRUCTURE
+#define FIXINC_WRAP_MATH_H_EXCEPTION_STRUCTURE 1
+
+struct exception;
#if defined( BROKEN_CABS_CHECK )
@@ -31,6 +31,11 @@ struct exception;
#endif /* BROKEN_CABS_CHECK */
+#if defined( EXCEPTION_STRUCTURE_CHECK )
+extern int matherr();
+#endif /* EXCEPTION_STRUCTURE_CHECK */
+
+
#if defined( HPUX11_CPP_POW_INLINE_CHECK )
#endif /* HPUX11_CPP_POW_INLINE_CHECK */
@@ -100,11 +105,6 @@ int foo;
#endif /* STRICT_ANSI_NOT_CTD_CHECK */
-#if defined( SUNOS_MATHERR_DECL_CHECK )
-extern int matherr();
-#endif /* SUNOS_MATHERR_DECL_CHECK */
-
-
#if defined( SVR4__P_CHECK )
#ifndef __P
#define __P(a) a
@@ -126,10 +126,10 @@ extern double atof(const char *__nptr);
#if defined( WINDISS_MATH2_CHECK )
#endif /* __GNUC__ */
#endif /* WINDISS_MATH2_CHECK */
+
+#endif /* FIXINC_WRAP_MATH_H_EXCEPTION_STRUCTURE */
#ifdef __cplusplus
#undef exception
#endif
#endif /* FIXINC_WRAP_MATH_H_MATH_EXCEPTION */
-
-#endif /* FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL */
diff --git a/gcc/fixinc/tests/base/pthread.h b/gcc/fixinc/tests/base/pthread.h
index bd10f5a65ba..385c055ec83 100644
--- a/gcc/fixinc/tests/base/pthread.h
+++ b/gcc/fixinc/tests/base/pthread.h
@@ -19,6 +19,9 @@
# if defined (_PTHREAD_ENV_DECC) || defined (_PTHREAD_ENV_EPCC) || defined (__PRAGMA_EXTERN_PREFIX)
# define _PTHREAD_USE_PTDNAM_
# endif
+# if defined (_PTHREAD_ENV_DECC) || defined (__PRAGMA_EXTERN_PREFIX)
+# define _PTHREAD_USE_PTDNAM_
+# endif
#endif /* ALPHA_PTHREAD_CHECK */
diff --git a/gcc/fixinc/tests/base/standards.h b/gcc/fixinc/tests/base/standards.h
new file mode 100644
index 00000000000..fccf8063fa3
--- /dev/null
+++ b/gcc/fixinc/tests/base/standards.h
@@ -0,0 +1,14 @@
+/* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
+ "fixinc/tests/inc/standards.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+
+
+#if defined( ALPHA___EXTERN_PREFIX_STANDARDS_CHECK )
+#if (_ISO_C_SOURCE>=19990L) && !defined(_LIBC_POLLUTION_H_) && !defined(__DECC) && !defined(__PRAGMA_EXTERN_PREFIX)
+#endif /* ALPHA___EXTERN_PREFIX_STANDARDS_CHECK */
diff --git a/gcc/fixinc/tests/base/stdio.h b/gcc/fixinc/tests/base/stdio.h
index e4130e67e0c..ea2c001e163 100644
--- a/gcc/fixinc/tests/base/stdio.h
+++ b/gcc/fixinc/tests/base/stdio.h
@@ -26,6 +26,12 @@ int vfscanf(FILE *, const char *, __builtin_va_list) __asm__ (_BSD_STRING(__USER
#endif /* BSD_STDIO_ATTRS_CONFLICT_CHECK */
+#if defined( HPUX10_STDIO_DECLARATIONS_CHECK )
+# define _iob __iob
+
+#endif /* HPUX10_STDIO_DECLARATIONS_CHECK */
+
+
#if defined( HPUX11_SNPRINTF_CHECK )
extern int snprintf(char *, size_t, const char *, ...);
extern int snprintf(char *, _hpux_size_t, const char *, ...);
@@ -90,6 +96,12 @@ extern char *tempnam( const char *, const char *);
#endif /* ULTRIX_CONST2_CHECK */
+#if defined( ULTRIX_CONST3_CHECK )
+extern FILE * fdopen( int __filedes, const char *__type );
+
+#endif /* ULTRIX_CONST3_CHECK */
+
+
#if defined( UNICOSMK_RESTRICT_CHECK )
void f (char * __restrict__ x);
#endif /* UNICOSMK_RESTRICT_CHECK */
diff --git a/gcc/fixinc/tests/base/stdlib.h b/gcc/fixinc/tests/base/stdlib.h
index 7297a3ab282..0e1e59cb4f0 100644
--- a/gcc/fixinc/tests/base/stdlib.h
+++ b/gcc/fixinc/tests/base/stdlib.h
@@ -50,3 +50,17 @@ extern void * bsearch(void*,size_t,size_t);
int atexit( void (*__func)( void ) );
#endif /* ULTRIX_ATEXIT_PARAM_CHECK */
+
+
+#if defined( ULTRIX_STDLIB_CHECK )
+@(#)stdlib.h 6.1 (ULTRIX)
+char * getenv( const char *__name );
+int setenv( const char *__name, const char *__val, int __ovrwrt );
+void unsetenv( const char *__name );
+int putenv( char *__s );
+char *getenv();
+int setenv();
+void unsetenv();
+int putenv();
+
+#endif /* ULTRIX_STDLIB_CHECK */
diff --git a/gcc/fixinc/tests/base/strings.h b/gcc/fixinc/tests/base/strings.h
index 36ca0b4c0f1..f17d3f81197 100644
--- a/gcc/fixinc/tests/base/strings.h
+++ b/gcc/fixinc/tests/base/strings.h
@@ -22,4 +22,19 @@
#endif /* ULTRIX_STRINGS_CHECK */
+
+#if defined( ULTRIX_STRINGS2_CHECK )
+@(#)strings.h 6.1 (ULTRIX)
+ strncmp( const char *__s1, const char *__s2, size_t __n );
+
+extern int
+ strcasecmp( const char *__s1, const char *__s2),
+ strncasecmp( const char *__s1, const char *__s2, size_t __n );
+ strncmp();
+extern int
+ strcasecmp(),
+ strncasecmp();
+
+#endif /* ULTRIX_STRINGS2_CHECK */
+
#endif /* FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS */
diff --git a/gcc/fixinc/tests/base/sys/stat.h b/gcc/fixinc/tests/base/sys/stat.h
index 92577482dc5..c2b2fb6d564 100644
--- a/gcc/fixinc/tests/base/sys/stat.h
+++ b/gcc/fixinc/tests/base/sys/stat.h
@@ -9,9 +9,9 @@
-#if defined( ALPHA___EXTERN_PREFIX_CHECK )
+#if defined( ALPHA___EXTERN_PREFIX_SYS_STAT_CHECK )
# if defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX)
-#endif /* ALPHA___EXTERN_PREFIX_CHECK */
+#endif /* ALPHA___EXTERN_PREFIX_SYS_STAT_CHECK */
#if defined( RS6000_FCHMOD_CHECK )
diff --git a/gcc/fixinc/tests/base/sys/time.h b/gcc/fixinc/tests/base/sys/time.h
index 931f424e229..f009f7e11aa 100644
--- a/gcc/fixinc/tests/base/sys/time.h
+++ b/gcc/fixinc/tests/base/sys/time.h
@@ -12,3 +12,30 @@
#if defined( HPUX_SYSTIME_CHECK )
struct sigevent;
#endif /* HPUX_SYSTIME_CHECK */
+
+
+#if defined( ULTRIX_SYS_TIME_CHECK )
+@(#)time.h 6.1 (ULTRIX)
+extern time_t time( time_t *__tloc );
+
+extern int adjtime(struct timeval *, struct timeval *);
+extern int getitimer(int, struct itimerval *);
+extern int setitimer(int, struct itimerval *, struct itimerval *);
+extern int gettimeofday(struct timeval *, struct timezone *);
+extern int settimeofday(struct timeval *, struct timezone *);
+extern void profil(const void *, size_t, size_t, unsigned int);
+extern int stime(const time_t *);
+extern int utimes(const char *, const struct timeval[2]);
+extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+extern double difftime();
+extern int adjtime();
+extern int getitimer();
+extern int setitimer();
+extern int gettimeofday();
+extern int settimeofday();
+extern void profil();
+extern int stime();
+extern int utimes();
+extern int select();
+
+#endif /* ULTRIX_SYS_TIME_CHECK */
diff --git a/gcc/fixinc/tests/base/testing.h b/gcc/fixinc/tests/base/testing.h
index 5e660f86dd8..0530cdf490f 100644
--- a/gcc/fixinc/tests/base/testing.h
+++ b/gcc/fixinc/tests/base/testing.h
@@ -9,6 +9,23 @@
+#if defined( ALPHA___EXTERN_PREFIX_CHECK )
+#if (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))
+#pragma extern_prefix "_P"
+# if (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))
+# pragma extern_prefix "_E"
+# if !defined(_LIBC_POLLUTION_H_) && (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))
+# pragma extern_prefix ""
+#endif /* ALPHA___EXTERN_PREFIX_CHECK */
+
+
+#if defined( ALPHA_BAD_LVAL_CHECK )
+#pragma extern_prefix "_FOO"
+#define something _FOOsomething
+#define mumble _FOOmumble
+#endif /* ALPHA_BAD_LVAL_CHECK */
+
+
#if defined( AVOID_WCHAR_T_TYPE_CHECK )
#ifndef __cplusplus
typedef unsigned short wchar_t ;
diff --git a/gcc/fixinc/tests/base/unistd.h b/gcc/fixinc/tests/base/unistd.h
index 5bfb9b96d17..98e8c34b8ca 100644
--- a/gcc/fixinc/tests/base/unistd.h
+++ b/gcc/fixinc/tests/base/unistd.h
@@ -21,3 +21,13 @@ extern pid_t getpgid(pid_t);
extern int getpagesize();
extern int getpgid();
#endif /* SOLARIS_UNISTD_CHECK */
+
+
+#if defined( ULTRIX_UNISTD_CHECK )
+@(#)unistd.h 6.1 (ULTRIX)
+ getgroups(),
+ getpagesize(),
+ fork(),
+ vfork(),
+
+#endif /* ULTRIX_UNISTD_CHECK */
diff --git a/gcc/flags.h b/gcc/flags.h
index f172ec34a8b..e947f2a66bb 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -724,6 +724,27 @@ extern int flag_remove_unreachable_functions;
extern const char *flag_random_seed;
+/* The version of the C++ ABI in use. The following values are
+ allowed:
+
+ 0: The version of the ABI believed most conformant with the
+ C++ ABI specification. This ABI may change as bugs are
+ discovered and fixed. Therefore, 0 will not necessarily
+ indicate the same ABI in different versions of G++.
+
+ 1: The version of the ABI first used in G++ 3.2.
+
+ Additional positive integers will be assigned as new versions of
+ the ABI become the default version of the ABI. */
+
+extern int flag_abi_version;
+
+/* Returns TRUE if generated code should match ABI version N or
+ greater is in use. */
+
+#define abi_version_at_least(N) \
+ (flag_abi_version == 0 || flag_abi_version >= (N))
+
/* True if the given mode has a NaN representation and the treatment of
NaN operands is important. Certain optimizations, such as folding
x * 0 into x, are not correct for NaN operands, and are normally
diff --git a/gcc/flow.c b/gcc/flow.c
index c146310cb0a..90bc5f871df 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1,6 +1,6 @@
/* Data flow analysis for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1739,8 +1739,9 @@ propagate_one_insn (struct propagate_block_info *pbi, rtx insn)
current_function_return_rtx,
(rtx *) 0)))
{
+ enum rtx_code code = global_regs[i] ? SET : CLOBBER;
/* We do not want REG_UNUSED notes for these registers. */
- mark_set_1 (pbi, CLOBBER, regno_reg_rtx[i], cond, insn,
+ mark_set_1 (pbi, code, regno_reg_rtx[i], cond, insn,
pbi->flags & ~(PROP_DEATH_NOTES | PROP_REG_INFO));
}
}
@@ -2224,14 +2225,22 @@ insn_dead_p (struct propagate_block_info *pbi, rtx x, int call_ok,
}
/* A CLOBBER of a pseudo-register that is dead serves no purpose. That
- is not necessarily true for hard registers. */
- else if (code == CLOBBER && GET_CODE (XEXP (x, 0)) == REG
- && REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER
- && ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0))))
- return 1;
-
- /* We do not check other CLOBBER or USE here. An insn consisting of just
- a CLOBBER or just a USE should not be deleted. */
+ is not necessarily true for hard registers until after reload. */
+ else if (code == CLOBBER)
+ {
+ if (GET_CODE (XEXP (x, 0)) == REG
+ && (REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER
+ || reload_completed)
+ && ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0))))
+ return 1;
+ }
+
+ /* ??? A base USE is a historical relic. It ought not be needed anymore.
+ Instances where it is still used are either (1) temporary and the USE
+ escaped the pass, (2) cruft and the USE need not be emitted anymore,
+ or (3) hiding bugs elsewhere that are not properly representing data
+ flow. */
+
return 0;
}
@@ -2748,10 +2757,18 @@ mark_set_1 (struct propagate_block_info *pbi, enum rtx_code code, rtx reg, rtx c
in ASM_OPERANDs. If these registers get replaced,
we might wind up changing the semantics of the insn,
even if reload can make what appear to be valid
- assignments later. */
+ assignments later.
+
+ We don't build a LOG_LINK for global registers to
+ or from a function call. We don't want to let
+ combine think that it knows what is going on with
+ global registers. */
if (y && (BLOCK_NUM (y) == blocknum)
&& (regno_first >= FIRST_PSEUDO_REGISTER
- || asm_noperands (PATTERN (y)) < 0))
+ || (asm_noperands (PATTERN (y)) < 0
+ && ! ((GET_CODE (insn) == CALL_INSN
+ || GET_CODE (y) == CALL_INSN)
+ && global_regs[regno_first]))))
LOG_LINKS (y) = alloc_INSN_LIST (insn, LOG_LINKS (y));
}
}
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index b226215e9b0..e17d7088796 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -1,6 +1,6 @@
/* Fold a constant sub-tree into a single node for C-compiler
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -69,6 +69,7 @@ static tree int_const_binop (enum tree_code, tree, tree, int);
static tree const_binop (enum tree_code, tree, tree, int);
static hashval_t size_htab_hash (const void *);
static int size_htab_eq (const void *, const void *);
+static tree fold_convert_const (enum tree_code, tree, tree);
static tree fold_convert (tree, tree);
static enum tree_code invert_tree_comparison (enum tree_code);
static enum tree_code swap_tree_comparison (enum tree_code);
@@ -961,7 +962,7 @@ negate_expr (tree t)
tem = build_real (type, REAL_VALUE_NEGATE (TREE_REAL_CST (t)));
/* Two's complement FP formats, such as c4x, may overflow. */
if (! TREE_OVERFLOW (tem) || ! flag_trapping_math)
- return convert (type, tem);
+ return fold_convert (type, tem);
break;
case COMPLEX_CST:
@@ -978,16 +979,16 @@ negate_expr (tree t)
break;
case NEGATE_EXPR:
- return convert (type, TREE_OPERAND (t, 0));
+ return fold_convert (type, TREE_OPERAND (t, 0));
case MINUS_EXPR:
/* - (A - B) -> B - A */
if ((! FLOAT_TYPE_P (type) || flag_unsafe_math_optimizations)
&& reorder_operands_p (TREE_OPERAND (t, 0), TREE_OPERAND (t, 1)))
- return convert (type,
- fold (build (MINUS_EXPR, TREE_TYPE (t),
- TREE_OPERAND (t, 1),
- TREE_OPERAND (t, 0))));
+ return fold_convert (type,
+ fold (build (MINUS_EXPR, TREE_TYPE (t),
+ TREE_OPERAND (t, 1),
+ TREE_OPERAND (t, 0))));
break;
case MULT_EXPR:
@@ -1001,16 +1002,16 @@ negate_expr (tree t)
{
tem = TREE_OPERAND (t, 1);
if (negate_expr_p (tem))
- return convert (type,
- fold (build (TREE_CODE (t), TREE_TYPE (t),
- TREE_OPERAND (t, 0),
- negate_expr (tem))));
+ return fold_convert (type,
+ fold (build (TREE_CODE (t), TREE_TYPE (t),
+ TREE_OPERAND (t, 0),
+ negate_expr (tem))));
tem = TREE_OPERAND (t, 0);
if (negate_expr_p (tem))
- return convert (type,
- fold (build (TREE_CODE (t), TREE_TYPE (t),
- negate_expr (tem),
- TREE_OPERAND (t, 1))));
+ return fold_convert (type,
+ fold (build (TREE_CODE (t), TREE_TYPE (t),
+ negate_expr (tem),
+ TREE_OPERAND (t, 1))));
}
break;
@@ -1020,7 +1021,7 @@ negate_expr (tree t)
{
tem = strip_float_extensions (t);
if (tem != t && negate_expr_p (tem))
- return convert (type, negate_expr (tem));
+ return fold_convert (type, negate_expr (tem));
}
break;
@@ -1042,7 +1043,8 @@ negate_expr (tree t)
break;
}
- return convert (type, fold (build1 (NEGATE_EXPR, TREE_TYPE (t), t)));
+ tem = fold (build1 (NEGATE_EXPR, TREE_TYPE (t), t));
+ return fold_convert (type, tem);
}
/* Split a tree IN into a constant, literal and variable parts that could be
@@ -1161,16 +1163,18 @@ associate_trees (tree t1, tree t2, enum tree_code code, tree type)
if (code == PLUS_EXPR)
{
if (TREE_CODE (t1) == NEGATE_EXPR)
- return build (MINUS_EXPR, type, convert (type, t2),
- convert (type, TREE_OPERAND (t1, 0)));
+ return build (MINUS_EXPR, type, fold_convert (type, t2),
+ fold_convert (type, TREE_OPERAND (t1, 0)));
else if (TREE_CODE (t2) == NEGATE_EXPR)
- return build (MINUS_EXPR, type, convert (type, t1),
- convert (type, TREE_OPERAND (t2, 0)));
+ return build (MINUS_EXPR, type, fold_convert (type, t1),
+ fold_convert (type, TREE_OPERAND (t2, 0)));
}
- return build (code, type, convert (type, t1), convert (type, t2));
+ return build (code, type, fold_convert (type, t1),
+ fold_convert (type, t2));
}
- return fold (build (code, type, convert (type, t1), convert (type, t2)));
+ return fold (build (code, type, fold_convert (type, t1),
+ fold_convert (type, t2)));
}
/* Combine two integer constants ARG1 and ARG2 under operation CODE
@@ -1640,31 +1644,36 @@ size_diffop (tree arg0, tree arg1)
type and subtract. The hardware will do the right thing with any
overflow in the subtraction. */
if (TREE_CODE (arg0) != INTEGER_CST || TREE_CODE (arg1) != INTEGER_CST)
- return size_binop (MINUS_EXPR, convert (ctype, arg0),
- convert (ctype, arg1));
+ return size_binop (MINUS_EXPR, fold_convert (ctype, arg0),
+ fold_convert (ctype, arg1));
/* If ARG0 is larger than ARG1, subtract and return the result in CTYPE.
Otherwise, subtract the other way, convert to CTYPE (we know that can't
overflow) and negate (which can't either). Special-case a result
of zero while we're here. */
if (tree_int_cst_equal (arg0, arg1))
- return convert (ctype, integer_zero_node);
+ return fold_convert (ctype, integer_zero_node);
else if (tree_int_cst_lt (arg1, arg0))
- return convert (ctype, size_binop (MINUS_EXPR, arg0, arg1));
+ return fold_convert (ctype, size_binop (MINUS_EXPR, arg0, arg1));
else
- return size_binop (MINUS_EXPR, convert (ctype, integer_zero_node),
- convert (ctype, size_binop (MINUS_EXPR, arg1, arg0)));
+ return size_binop (MINUS_EXPR, fold_convert (ctype, integer_zero_node),
+ fold_convert (ctype, size_binop (MINUS_EXPR,
+ arg1, arg0)));
}
-/* Given T, a tree representing type conversion of ARG1, a constant,
- return a constant tree representing the result of conversion. */
+/* Attempt to fold type conversion operation CODE of expression ARG1 to
+ type TYPE. If no simplification can be done return NULL_TREE. */
static tree
-fold_convert (tree t, tree arg1)
+fold_convert_const (enum tree_code code ATTRIBUTE_UNUSED, tree type,
+ tree arg1)
{
- tree type = TREE_TYPE (t);
int overflow = 0;
+ tree t;
+
+ if (TREE_TYPE (arg1) == type)
+ return arg1;
if (POINTER_TYPE_P (type) || INTEGRAL_TYPE_P (type))
{
@@ -1673,7 +1682,7 @@ fold_convert (tree t, tree arg1)
/* If we would build a constant wider than GCC supports,
leave the conversion unfolded. */
if (TYPE_PRECISION (type) > 2 * HOST_BITS_PER_WIDE_INT)
- return t;
+ return NULL_TREE;
/* If we are trying to make a sizetype for a small integer, use
size_int to pick up cached types to reduce duplicate nodes. */
@@ -1701,6 +1710,7 @@ fold_convert (tree t, tree arg1)
|| TREE_OVERFLOW (arg1));
TREE_CONSTANT_OVERFLOW (t)
= TREE_OVERFLOW (t) | TREE_CONSTANT_OVERFLOW (arg1);
+ return t;
}
else if (TREE_CODE (arg1) == REAL_CST)
{
@@ -1766,8 +1776,8 @@ fold_convert (tree t, tree arg1)
= TREE_OVERFLOW (arg1) | force_fit_type (t, overflow);
TREE_CONSTANT_OVERFLOW (t)
= TREE_OVERFLOW (t) | TREE_CONSTANT_OVERFLOW (arg1);
+ return t;
}
- TREE_TYPE (t) = type;
}
else if (TREE_CODE (type) == REAL_TYPE)
{
@@ -1795,8 +1805,116 @@ fold_convert (tree t, tree arg1)
return t;
}
}
- TREE_CONSTANT (t) = 1;
- return t;
+ return NULL_TREE;
+}
+
+/* Convert expression ARG to type TYPE. Used by the middle-end for
+ simple conversions in preference to calling the front-end's convert. */
+
+static tree
+fold_convert (tree type, tree arg)
+{
+ tree orig = TREE_TYPE (arg);
+ tree tem;
+
+ if (type == orig)
+ return arg;
+
+ if (TREE_CODE (arg) == ERROR_MARK
+ || TREE_CODE (type) == ERROR_MARK
+ || TREE_CODE (orig) == ERROR_MARK)
+ return error_mark_node;
+
+ if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (orig))
+ return fold (build1 (NOP_EXPR, type, arg));
+
+ if (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
+ {
+ if (TREE_CODE (arg) == INTEGER_CST)
+ {
+ tem = fold_convert_const (NOP_EXPR, type, arg);
+ if (tem != NULL_TREE)
+ return tem;
+ }
+ if (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig))
+ return fold (build1 (NOP_EXPR, type, arg));
+ if (TREE_CODE (orig) == COMPLEX_TYPE)
+ {
+ tem = fold (build1 (REALPART_EXPR, TREE_TYPE (orig), arg));
+ return fold_convert (type, tem);
+ }
+ if (TREE_CODE (orig) == VECTOR_TYPE
+ && GET_MODE_SIZE (TYPE_MODE (type))
+ == GET_MODE_SIZE (TYPE_MODE (orig)))
+ return fold (build1 (NOP_EXPR, type, arg));
+ }
+ else if (TREE_CODE (type) == REAL_TYPE)
+ {
+ if (TREE_CODE (arg) == INTEGER_CST)
+ {
+ tem = fold_convert_const (FLOAT_EXPR, type, arg);
+ if (tem != NULL_TREE)
+ return tem;
+ }
+ else if (TREE_CODE (arg) == REAL_CST)
+ {
+ tem = fold_convert_const (NOP_EXPR, type, arg);
+ if (tem != NULL_TREE)
+ return tem;
+ }
+
+ if (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig))
+ return fold (build1 (FLOAT_EXPR, type, arg));
+ if (TREE_CODE (orig) == REAL_TYPE)
+ return fold (build1 (flag_float_store ? CONVERT_EXPR : NOP_EXPR,
+ type, arg));
+ if (TREE_CODE (orig) == COMPLEX_TYPE)
+ {
+ tem = fold (build1 (REALPART_EXPR, TREE_TYPE (orig), arg));
+ return fold_convert (type, tem);
+ }
+ }
+ else if (TREE_CODE (type) == COMPLEX_TYPE)
+ {
+ if (INTEGRAL_TYPE_P (orig)
+ || POINTER_TYPE_P (orig)
+ || TREE_CODE (orig) == REAL_TYPE)
+ return build (COMPLEX_EXPR, type,
+ fold_convert (TREE_TYPE (type), arg),
+ fold_convert (TREE_TYPE (type), integer_zero_node));
+ if (TREE_CODE (orig) == COMPLEX_TYPE)
+ {
+ tree rpart, ipart;
+
+ if (TREE_CODE (arg) == COMPLEX_EXPR)
+ {
+ rpart = fold_convert (TREE_TYPE (type), TREE_OPERAND (arg, 0));
+ ipart = fold_convert (TREE_TYPE (type), TREE_OPERAND (arg, 1));
+ return fold (build (COMPLEX_EXPR, type, rpart, ipart));
+ }
+
+ arg = save_expr (arg);
+ rpart = fold (build1 (REALPART_EXPR, TREE_TYPE (orig), arg));
+ ipart = fold (build1 (IMAGPART_EXPR, TREE_TYPE (orig), arg));
+ rpart = fold_convert (TREE_TYPE (type), rpart);
+ ipart = fold_convert (TREE_TYPE (type), ipart);
+ return fold (build (COMPLEX_EXPR, type, rpart, ipart));
+ }
+ }
+ else if (TREE_CODE (type) == VECTOR_TYPE)
+ {
+ if ((INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig))
+ && GET_MODE_SIZE (TYPE_MODE (type))
+ == GET_MODE_SIZE (TYPE_MODE (orig)))
+ return fold (build1 (NOP_EXPR, type, arg));
+ if (TREE_CODE (orig) == VECTOR_TYPE
+ && GET_MODE_SIZE (TYPE_MODE (type))
+ == GET_MODE_SIZE (TYPE_MODE (orig)))
+ return fold (build1 (NOP_EXPR, type, arg));
+ }
+ else if (VOID_TYPE_P (type))
+ return fold (build1 (CONVERT_EXPR, type, arg));
+ abort ();
}
/* Return an expr equal to X but certainly not valid as an lvalue. */
@@ -2232,10 +2350,10 @@ operand_equal_for_comparison_p (tree arg0, tree arg1, tree other)
/* Make sure shorter operand is extended the right way
to match the longer operand. */
- primarg1 = convert ((*lang_hooks.types.signed_or_unsigned_type)
- (unsignedp1, TREE_TYPE (primarg1)), primarg1);
+ primarg1 = fold_convert ((*lang_hooks.types.signed_or_unsigned_type)
+ (unsignedp1, TREE_TYPE (primarg1)), primarg1);
- if (operand_equal_p (arg0, convert (type, primarg1), 0))
+ if (operand_equal_p (arg0, fold_convert (type, primarg1), 0))
return 1;
}
@@ -2431,7 +2549,7 @@ eval_subst (tree arg, tree old0, tree new0, tree old1, tree new1)
tree
omit_one_operand (tree type, tree result, tree omitted)
{
- tree t = convert (type, result);
+ tree t = fold_convert (type, result);
if (TREE_SIDE_EFFECTS (omitted))
return build (COMPOUND_EXPR, type, omitted, t);
@@ -2444,7 +2562,7 @@ omit_one_operand (tree type, tree result, tree omitted)
static tree
pedantic_omit_one_operand (tree type, tree result, tree omitted)
{
- tree t = convert (type, result);
+ tree t = fold_convert (type, result);
if (TREE_SIDE_EFFECTS (omitted))
return build (COMPOUND_EXPR, type, omitted, t);
@@ -2484,7 +2602,7 @@ invert_truthvalue (tree arg)
switch (code)
{
case INTEGER_CST:
- return convert (type, build_int_2 (integer_zerop (arg), 0));
+ return fold_convert (type, build_int_2 (integer_zerop (arg), 0));
case TRUTH_AND_EXPR:
return build (TRUTH_OR_EXPR, type,
@@ -2549,7 +2667,8 @@ invert_truthvalue (tree arg)
case BIT_AND_EXPR:
if (!integer_onep (TREE_OPERAND (arg, 1)))
break;
- return build (EQ_EXPR, type, arg, convert (type, integer_zero_node));
+ return build (EQ_EXPR, type, arg,
+ fold_convert (type, integer_zero_node));
case SAVE_EXPR:
return build1 (TRUTH_NOT_EXPR, type, arg);
@@ -2723,7 +2842,7 @@ optimize_bit_field_compare (enum tree_code code, tree compare_type,
mask = build_int_2 (~0, ~0);
TREE_TYPE (mask) = unsigned_type;
force_fit_type (mask, 0);
- mask = convert (unsigned_type, mask);
+ mask = fold_convert (unsigned_type, mask);
mask = const_binop (LSHIFT_EXPR, mask, size_int (nbitsize - lbitsize), 0);
mask = const_binop (RSHIFT_EXPR, mask,
size_int (nbitsize - lbitsize - lbitpos), 0);
@@ -2753,27 +2872,27 @@ optimize_bit_field_compare (enum tree_code code, tree compare_type,
if (lunsignedp)
{
if (! integer_zerop (const_binop (RSHIFT_EXPR,
- convert (unsigned_type, rhs),
+ fold_convert (unsigned_type, rhs),
size_int (lbitsize), 0)))
{
warning ("comparison is always %d due to width of bit-field",
code == NE_EXPR);
- return convert (compare_type,
- (code == NE_EXPR
- ? integer_one_node : integer_zero_node));
+ return fold_convert (compare_type,
+ (code == NE_EXPR
+ ? integer_one_node : integer_zero_node));
}
}
else
{
- tree tem = const_binop (RSHIFT_EXPR, convert (signed_type, rhs),
+ tree tem = const_binop (RSHIFT_EXPR, fold_convert (signed_type, rhs),
size_int (lbitsize - 1), 0);
if (! integer_zerop (tem) && ! integer_all_onesp (tem))
{
warning ("comparison is always %d due to width of bit-field",
code == NE_EXPR);
- return convert (compare_type,
- (code == NE_EXPR
- ? integer_one_node : integer_zero_node));
+ return fold_convert (compare_type,
+ (code == NE_EXPR
+ ? integer_one_node : integer_zero_node));
}
}
@@ -2781,7 +2900,7 @@ optimize_bit_field_compare (enum tree_code code, tree compare_type,
if (lbitsize == 1 && ! integer_zerop (rhs))
{
code = code == EQ_EXPR ? NE_EXPR : EQ_EXPR;
- rhs = convert (type, integer_zero_node);
+ rhs = fold_convert (type, integer_zero_node);
}
/* Make a new bitfield reference, shift the constant over the
@@ -2796,7 +2915,7 @@ optimize_bit_field_compare (enum tree_code code, tree compare_type,
rhs = fold (const_binop (BIT_AND_EXPR,
const_binop (LSHIFT_EXPR,
- convert (unsigned_type, rhs),
+ fold_convert (unsigned_type, rhs),
size_int (lbitpos), 0),
mask, 0));
@@ -2890,7 +3009,7 @@ decode_field_reference (tree exp, HOST_WIDE_INT *pbitsize,
/* Merge it with the mask we found in the BIT_AND_EXPR, if any. */
if (and_mask != 0)
mask = fold (build (BIT_AND_EXPR, unsigned_type,
- convert (unsigned_type, and_mask), mask));
+ fold_convert (unsigned_type, and_mask), mask));
*pmask = mask;
*pand_mask = and_mask;
@@ -3056,7 +3175,7 @@ range_binop (enum tree_code code, tree type, tree arg0, int upper0_p,
if (arg0 != 0 && arg1 != 0)
{
tem = fold (build (code, type != 0 ? type : TREE_TYPE (arg0),
- arg0, convert (TREE_TYPE (arg0), arg1)));
+ arg0, fold_convert (TREE_TYPE (arg0), arg1)));
STRIP_NOPS (tem);
return TREE_CODE (tem) == INTEGER_CST ? tem : 0;
}
@@ -3096,7 +3215,7 @@ range_binop (enum tree_code code, tree type, tree arg0, int upper0_p,
abort ();
}
- return convert (type, result ? integer_one_node : integer_zero_node);
+ return fold_convert (type, result ? integer_one_node : integer_zero_node);
}
/* Given EXP, a logical expression, set the range it is testing into
@@ -3120,7 +3239,8 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
the outer loop when we've changed something; otherwise we "break"
the switch, which will "break" the while. */
- in_p = 0, low = high = convert (TREE_TYPE (exp), integer_zero_node);
+ in_p = 0;
+ low = high = fold_convert (TREE_TYPE (exp), integer_zero_node);
while (1)
{
@@ -3197,7 +3317,7 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
if (TREE_UNSIGNED (type) && (low == 0 || high == 0))
{
if (! merge_ranges (&n_in_p, &n_low, &n_high, in_p, low, high,
- 1, convert (type, integer_zero_node),
+ 1, fold_convert (type, integer_zero_node),
NULL_TREE))
break;
@@ -3211,7 +3331,7 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
in_p = ! in_p;
high = range_binop (MINUS_EXPR, NULL_TREE, low, 0,
integer_one_node, 0);
- low = convert (type, integer_zero_node);
+ low = fold_convert (type, integer_zero_node);
}
}
continue;
@@ -3219,9 +3339,11 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
case NEGATE_EXPR:
/* (-x) IN [a,b] -> x in [-b, -a] */
n_low = range_binop (MINUS_EXPR, type,
- convert (type, integer_zero_node), 0, high, 1);
+ fold_convert (type, integer_zero_node),
+ 0, high, 1);
n_high = range_binop (MINUS_EXPR, type,
- convert (type, integer_zero_node), 0, low, 0);
+ fold_convert (type, integer_zero_node),
+ 0, low, 0);
low = n_low, high = n_high;
exp = arg0;
continue;
@@ -3229,7 +3351,7 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
case BIT_NOT_EXPR:
/* ~ X -> -X - 1 */
exp = build (MINUS_EXPR, type, negate_expr (arg0),
- convert (type, integer_one_node));
+ fold_convert (type, integer_one_node));
continue;
case PLUS_EXPR: case MINUS_EXPR:
@@ -3285,10 +3407,10 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
n_low = low, n_high = high;
if (n_low != 0)
- n_low = convert (type, n_low);
+ n_low = fold_convert (type, n_low);
if (n_high != 0)
- n_high = convert (type, n_high);
+ n_high = fold_convert (type, n_high);
/* If we're converting from an unsigned to a signed type,
we will be doing the comparison as unsigned. The tests above
@@ -3311,8 +3433,10 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (exp)))
high_positive = fold (build (RSHIFT_EXPR, type,
- convert (type, high_positive),
- convert (type, integer_one_node)));
+ fold_convert (type,
+ high_positive),
+ fold_convert (type,
+ integer_one_node)));
/* If the low bound is specified, "and" the range with the
range for which the original unsigned value will be
@@ -3320,8 +3444,8 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
if (low != 0)
{
if (! merge_ranges (&n_in_p, &n_low, &n_high,
- 1, n_low, n_high,
- 1, convert (type, integer_zero_node),
+ 1, n_low, n_high, 1,
+ fold_convert (type, integer_zero_node),
high_positive))
break;
@@ -3332,8 +3456,8 @@ make_range (tree exp, int *pin_p, tree *plow, tree *phigh)
/* Otherwise, "or" the range with the range of the input
that will be interpreted as negative. */
if (! merge_ranges (&n_in_p, &n_low, &n_high,
- 0, n_low, n_high,
- 1, convert (type, integer_zero_node),
+ 0, n_low, n_high, 1,
+ fold_convert (type, integer_zero_node),
high_positive))
break;
@@ -3382,7 +3506,7 @@ build_range_check (tree type, tree exp, int in_p, tree low, tree high)
return invert_truthvalue (value);
if (low == 0 && high == 0)
- return convert (type, integer_one_node);
+ return fold_convert (type, integer_one_node);
if (low == 0)
return fold (build (LE_EXPR, type, exp, high));
@@ -3398,8 +3522,8 @@ build_range_check (tree type, tree exp, int in_p, tree low, tree high)
if (! TREE_UNSIGNED (etype))
{
etype = (*lang_hooks.types.unsigned_type) (etype);
- high = convert (etype, high);
- exp = convert (etype, exp);
+ high = fold_convert (etype, high);
+ exp = fold_convert (etype, exp);
}
return build_range_check (type, exp, 1, 0, high);
}
@@ -3428,10 +3552,10 @@ build_range_check (tree type, tree exp, int in_p, tree low, tree high)
if (TREE_UNSIGNED (etype))
{
etype = (*lang_hooks.types.signed_type) (etype);
- exp = convert (etype, exp);
+ exp = fold_convert (etype, exp);
}
return fold (build (GT_EXPR, type, exp,
- convert (etype, integer_zero_node)));
+ fold_convert (etype, integer_zero_node)));
}
}
@@ -3439,7 +3563,8 @@ build_range_check (tree type, tree exp, int in_p, tree low, tree high)
&& ! TREE_OVERFLOW (value))
return build_range_check (type,
fold (build (MINUS_EXPR, etype, exp, low)),
- 1, convert (etype, integer_zero_node), value);
+ 1, fold_convert (etype, integer_zero_node),
+ value);
return 0;
}
@@ -3679,17 +3804,18 @@ unextend (tree c, int p, int unsignedp, tree mask)
zero or one, and the conversion to a signed type can never overflow.
We could get an overflow if this conversion is done anywhere else. */
if (TREE_UNSIGNED (type))
- temp = convert ((*lang_hooks.types.signed_type) (type), temp);
+ temp = fold_convert ((*lang_hooks.types.signed_type) (type), temp);
temp = const_binop (LSHIFT_EXPR, temp, size_int (modesize - 1), 0);
temp = const_binop (RSHIFT_EXPR, temp, size_int (modesize - p - 1), 0);
if (mask != 0)
- temp = const_binop (BIT_AND_EXPR, temp, convert (TREE_TYPE (c), mask), 0);
+ temp = const_binop (BIT_AND_EXPR, temp,
+ fold_convert (TREE_TYPE (c), mask), 0);
/* If necessary, convert the type back to match the type of C. */
if (TREE_UNSIGNED (type))
- temp = convert (type, temp);
+ temp = fold_convert (type, temp);
- return convert (type, const_binop (BIT_XOR_EXPR, c, temp, 0));
+ return fold_convert (type, const_binop (BIT_XOR_EXPR, c, temp, 0));
}
/* Find ways of folding logical expressions of LHS and RHS:
@@ -3807,9 +3933,9 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
compcode = -1;
if (compcode == COMPCODE_TRUE)
- return convert (truth_type, integer_one_node);
+ return fold_convert (truth_type, integer_one_node);
else if (compcode == COMPCODE_FALSE)
- return convert (truth_type, integer_zero_node);
+ return fold_convert (truth_type, integer_zero_node);
else if (compcode != -1)
return build (compcode_to_comparison (compcode),
truth_type, ll_arg, lr_arg);
@@ -3949,14 +4075,14 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
xrl_bitpos = lnbitsize - xrl_bitpos - rl_bitsize;
}
- ll_mask = const_binop (LSHIFT_EXPR, convert (lntype, ll_mask),
+ ll_mask = const_binop (LSHIFT_EXPR, fold_convert (lntype, ll_mask),
size_int (xll_bitpos), 0);
- rl_mask = const_binop (LSHIFT_EXPR, convert (lntype, rl_mask),
+ rl_mask = const_binop (LSHIFT_EXPR, fold_convert (lntype, rl_mask),
size_int (xrl_bitpos), 0);
if (l_const)
{
- l_const = convert (lntype, l_const);
+ l_const = fold_convert (lntype, l_const);
l_const = unextend (l_const, ll_bitsize, ll_unsignedp, ll_and_mask);
l_const = const_binop (LSHIFT_EXPR, l_const, size_int (xll_bitpos), 0);
if (! integer_zerop (const_binop (BIT_AND_EXPR, l_const,
@@ -3966,14 +4092,14 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
{
warning ("comparison is always %d", wanted_code == NE_EXPR);
- return convert (truth_type,
- wanted_code == NE_EXPR
- ? integer_one_node : integer_zero_node);
+ return fold_convert (truth_type,
+ wanted_code == NE_EXPR
+ ? integer_one_node : integer_zero_node);
}
}
if (r_const)
{
- r_const = convert (lntype, r_const);
+ r_const = fold_convert (lntype, r_const);
r_const = unextend (r_const, rl_bitsize, rl_unsignedp, rl_and_mask);
r_const = const_binop (LSHIFT_EXPR, r_const, size_int (xrl_bitpos), 0);
if (! integer_zerop (const_binop (BIT_AND_EXPR, r_const,
@@ -3983,9 +4109,9 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
{
warning ("comparison is always %d", wanted_code == NE_EXPR);
- return convert (truth_type,
- wanted_code == NE_EXPR
- ? integer_one_node : integer_zero_node);
+ return fold_convert (truth_type,
+ wanted_code == NE_EXPR
+ ? integer_one_node : integer_zero_node);
}
}
@@ -4020,9 +4146,9 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
xrr_bitpos = rnbitsize - xrr_bitpos - rr_bitsize;
}
- lr_mask = const_binop (LSHIFT_EXPR, convert (rntype, lr_mask),
+ lr_mask = const_binop (LSHIFT_EXPR, fold_convert (rntype, lr_mask),
size_int (xlr_bitpos), 0);
- rr_mask = const_binop (LSHIFT_EXPR, convert (rntype, rr_mask),
+ rr_mask = const_binop (LSHIFT_EXPR, fold_convert (rntype, rr_mask),
size_int (xrr_bitpos), 0);
/* Make a mask that corresponds to both fields being compared.
@@ -4077,14 +4203,14 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
{
if (lnbitsize > rnbitsize)
{
- lhs = convert (rntype, lhs);
- ll_mask = convert (rntype, ll_mask);
+ lhs = fold_convert (rntype, lhs);
+ ll_mask = fold_convert (rntype, ll_mask);
type = rntype;
}
else if (lnbitsize < rnbitsize)
{
- rhs = convert (lntype, rhs);
- lr_mask = convert (lntype, lr_mask);
+ rhs = fold_convert (lntype, rhs);
+ lr_mask = fold_convert (lntype, lr_mask);
type = lntype;
}
}
@@ -4113,12 +4239,12 @@ fold_truthop (enum tree_code code, tree truth_type, tree lhs, tree rhs)
if (wanted_code == NE_EXPR)
{
warning ("`or' of unmatched not-equal tests is always 1");
- return convert (truth_type, integer_one_node);
+ return fold_convert (truth_type, integer_one_node);
}
else
{
warning ("`and' of mutually exclusive equal-tests is always 0");
- return convert (truth_type, integer_zero_node);
+ return fold_convert (truth_type, integer_zero_node);
}
}
@@ -4303,7 +4429,8 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
or (for divide and modulus) if it is a multiple of our constant. */
if (code == MULT_EXPR
|| integer_zerop (const_binop (TRUNC_MOD_EXPR, t, c, 0)))
- return const_binop (code, convert (ctype, t), convert (ctype, c), 0);
+ return const_binop (code, fold_convert (ctype, t),
+ fold_convert (ctype, c), 0);
break;
case CONVERT_EXPR: case NON_LVALUE_EXPR: case NOP_EXPR:
@@ -4333,7 +4460,7 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
/* Pass the constant down and see if we can make a simplification. If
we can, replace this expression with the inner simplification for
possible later conversion to our or some other type. */
- if ((t2 = convert (TREE_TYPE (op0), c)) != 0
+ if ((t2 = fold_convert (TREE_TYPE (op0), c)) != 0
&& TREE_CODE (t2) == INTEGER_CST
&& ! TREE_CONSTANT_OVERFLOW (t2)
&& (0 != (t1 = extract_muldiv (op0, t2, code,
@@ -4344,7 +4471,7 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
case NEGATE_EXPR: case ABS_EXPR:
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
- return fold (build1 (tcode, ctype, convert (ctype, t1)));
+ return fold (build1 (tcode, ctype, fold_convert (ctype, t1)));
break;
case MIN_EXPR: case MAX_EXPR:
@@ -4360,8 +4487,8 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
if (tree_int_cst_sgn (c) < 0)
tcode = (tcode == MIN_EXPR ? MAX_EXPR : MIN_EXPR);
- return fold (build (tcode, ctype, convert (ctype, t1),
- convert (ctype, t2)));
+ return fold (build (tcode, ctype, fold_convert (ctype, t1),
+ fold_convert (ctype, t2)));
}
break;
@@ -4380,13 +4507,14 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
so check for it explicitly here. */
&& TYPE_PRECISION (TREE_TYPE (size_one_node)) > TREE_INT_CST_LOW (op1)
&& TREE_INT_CST_HIGH (op1) == 0
- && 0 != (t1 = convert (ctype,
- const_binop (LSHIFT_EXPR, size_one_node,
- op1, 0)))
+ && 0 != (t1 = fold_convert (ctype,
+ const_binop (LSHIFT_EXPR,
+ size_one_node,
+ op1, 0)))
&& ! TREE_OVERFLOW (t1))
return extract_muldiv (build (tcode == LSHIFT_EXPR
? MULT_EXPR : FLOOR_DIV_EXPR,
- ctype, convert (ctype, op0), t1),
+ ctype, fold_convert (ctype, op0), t1),
c, code, wide_type);
break;
@@ -4403,8 +4531,8 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
are divisible by c. */
|| (multiple_of_p (ctype, op0, c)
&& multiple_of_p (ctype, op1, c))))
- return fold (build (tcode, ctype, convert (ctype, t1),
- convert (ctype, t2)));
+ return fold (build (tcode, ctype, fold_convert (ctype, t1),
+ fold_convert (ctype, t2)));
/* If this was a subtraction, negate OP1 and set it to be an addition.
This simplifies the logic below. */
@@ -4433,8 +4561,8 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
if (code == MULT_EXPR
|| integer_zerop (const_binop (TRUNC_MOD_EXPR, op1, c, 0)))
{
- op1 = const_binop (code, convert (ctype, op1),
- convert (ctype, c), 0);
+ op1 = const_binop (code, fold_convert (ctype, op1),
+ fold_convert (ctype, c), 0);
/* We allow the constant to overflow with wrapping semantics. */
if (op1 == 0
|| (TREE_OVERFLOW (op1) && ! flag_wrapv))
@@ -4454,15 +4582,16 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
/* If we were able to eliminate our operation from the first side,
apply our operation to the second side and reform the PLUS. */
if (t1 != 0 && (TREE_CODE (t1) != code || code == MULT_EXPR))
- return fold (build (tcode, ctype, convert (ctype, t1), op1));
+ return fold (build (tcode, ctype, fold_convert (ctype, t1), op1));
/* The last case is if we are a multiply. In that case, we can
apply the distributive law to commute the multiply and addition
if the multiplication of the constants doesn't overflow. */
if (code == MULT_EXPR)
- return fold (build (tcode, ctype, fold (build (code, ctype,
- convert (ctype, op0),
- convert (ctype, c))),
+ return fold (build (tcode, ctype,
+ fold (build (code, ctype,
+ fold_convert (ctype, op0),
+ fold_convert (ctype, c))),
op1));
break;
@@ -4485,22 +4614,22 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
do something only if the second operand is a constant. */
if (same_p
&& (t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
- return fold (build (tcode, ctype, convert (ctype, t1),
- convert (ctype, op1)));
+ return fold (build (tcode, ctype, fold_convert (ctype, t1),
+ fold_convert (ctype, op1)));
else if (tcode == MULT_EXPR && code == MULT_EXPR
&& (t1 = extract_muldiv (op1, c, code, wide_type)) != 0)
- return fold (build (tcode, ctype, convert (ctype, op0),
- convert (ctype, t1)));
+ return fold (build (tcode, ctype, fold_convert (ctype, op0),
+ fold_convert (ctype, t1)));
else if (TREE_CODE (op1) != INTEGER_CST)
return 0;
/* If these are the same operation types, we can associate them
assuming no overflow. */
if (tcode == code
- && 0 != (t1 = const_binop (MULT_EXPR, convert (ctype, op1),
- convert (ctype, c), 0))
+ && 0 != (t1 = const_binop (MULT_EXPR, fold_convert (ctype, op1),
+ fold_convert (ctype, c), 0))
&& ! TREE_OVERFLOW (t1))
- return fold (build (tcode, ctype, convert (ctype, op0), t1));
+ return fold (build (tcode, ctype, fold_convert (ctype, op0), t1));
/* If these operations "cancel" each other, we have the main
optimizations of this pass, which occur when either constant is a
@@ -4519,15 +4648,15 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
&& code != FLOOR_MOD_EXPR && code != ROUND_MOD_EXPR)))
{
if (integer_zerop (const_binop (TRUNC_MOD_EXPR, op1, c, 0)))
- return fold (build (tcode, ctype, convert (ctype, op0),
- convert (ctype,
- const_binop (TRUNC_DIV_EXPR,
- op1, c, 0))));
+ return fold (build (tcode, ctype, fold_convert (ctype, op0),
+ fold_convert (ctype,
+ const_binop (TRUNC_DIV_EXPR,
+ op1, c, 0))));
else if (integer_zerop (const_binop (TRUNC_MOD_EXPR, c, op1, 0)))
- return fold (build (code, ctype, convert (ctype, op0),
- convert (ctype,
- const_binop (TRUNC_DIV_EXPR,
- c, op1, 0))));
+ return fold (build (code, ctype, fold_convert (ctype, op0),
+ fold_convert (ctype,
+ const_binop (TRUNC_DIV_EXPR,
+ c, op1, 0))));
}
break;
@@ -4694,8 +4823,8 @@ fold_binary_op_with_conditional_arg (enum tree_code code, tree type,
{
tree testtype = TREE_TYPE (cond);
test = cond;
- true_value = convert (testtype, integer_one_node);
- false_value = convert (testtype, integer_zero_node);
+ true_value = fold_convert (testtype, integer_one_node);
+ false_value = fold_convert (testtype, integer_zero_node);
}
/* If ARG is complex we want to make sure we only evaluate it once. Though
@@ -4729,7 +4858,7 @@ fold_binary_op_with_conditional_arg (enum tree_code code, tree type,
{
arg = save_expr (arg);
lhs = rhs = 0;
- save = 1;
+ save = saved_expr_p (arg);
}
}
@@ -4740,12 +4869,18 @@ fold_binary_op_with_conditional_arg (enum tree_code code, tree type,
test = fold (build (COND_EXPR, type, test, lhs, rhs));
+ /* If ARG involves a SAVE_EXPR, we need to ensure it is evaluated
+ ahead of the COND_EXPR we made. Otherwise we would have it only
+ evaluated in one branch, with the other branch using the result
+ but missing the evaluation code. Beware that the save_expr call
+ above might not return a SAVE_EXPR, so testing the TREE_CODE
+ of ARG is not enough to decide here.  */
if (save)
return build (COMPOUND_EXPR, type,
- convert (void_type_node, arg),
+ fold_convert (void_type_node, arg),
strip_compound_expr (test, arg));
else
- return convert (type, test);
+ return fold_convert (type, test);
}
@@ -4817,14 +4952,14 @@ fold_mathfn_compare (enum built_in_function fcode, enum tree_code code,
/* sqrt(x) < y is always false, if y is negative. */
if (code == EQ_EXPR || code == LT_EXPR || code == LE_EXPR)
return omit_one_operand (type,
- convert (type, integer_zero_node),
+ fold_convert (type, integer_zero_node),
arg);
/* sqrt(x) > y is always true, if y is negative and we
don't care about NaNs, i.e. negative values of x. */
if (code == NE_EXPR || !HONOR_NANS (mode))
return omit_one_operand (type,
- convert (type, integer_one_node),
+ fold_convert (type, integer_one_node),
arg);
/* sqrt(x) > y is the same as x >= 0, if y is negative. */
@@ -4848,7 +4983,7 @@ fold_mathfn_compare (enum built_in_function fcode, enum tree_code code,
/* sqrt(x) > y is always false, when y is very large
and we don't care about infinities. */
return omit_one_operand (type,
- convert (type, integer_zero_node),
+ fold_convert (type, integer_zero_node),
arg);
}
@@ -4869,7 +5004,7 @@ fold_mathfn_compare (enum built_in_function fcode, enum tree_code code,
value and we don't care about NaNs or Infinities. */
if (! HONOR_NANS (mode) && ! HONOR_INFINITIES (mode))
return omit_one_operand (type,
- convert (type, integer_one_node),
+ fold_convert (type, integer_one_node),
arg);
/* sqrt(x) < y is x != +Inf when y is very large and we
@@ -4955,14 +5090,14 @@ fold_inf_compare (enum tree_code code, tree type, tree arg0, tree arg1)
if (HONOR_SNANS (mode))
return NULL_TREE;
return omit_one_operand (type,
- convert (type, integer_zero_node),
+ fold_convert (type, integer_zero_node),
arg0);
case LE_EXPR:
/* x <= +Inf is always true, if we don't case about NaNs. */
if (! HONOR_NANS (mode))
return omit_one_operand (type,
- convert (type, integer_one_node),
+ fold_convert (type, integer_one_node),
arg0);
/* x <= +Inf is the same as x == x, i.e. isfinite(x). */
@@ -5049,8 +5184,8 @@ fold_single_bit_test (enum tree_code code, tree arg0, tree arg1,
{
tree stype = (*lang_hooks.types.signed_type) (TREE_TYPE (arg00));
return fold (build (code == EQ_EXPR ? GE_EXPR : LT_EXPR, result_type,
- convert (stype, arg00),
- convert (stype, integer_zero_node)));
+ fold_convert (stype, arg00),
+ fold_convert (stype, integer_zero_node)));
}
/* At this point, we know that arg0 is not testing the sign bit. */
@@ -5086,7 +5221,7 @@ fold_single_bit_test (enum tree_code code, tree arg0, tree arg1,
signed_type = (*lang_hooks.types.type_for_mode) (operand_mode, 0);
unsigned_type = (*lang_hooks.types.type_for_mode) (operand_mode, 1);
intermediate_type = ops_unsigned ? unsigned_type : signed_type;
- inner = convert (intermediate_type, inner);
+ inner = fold_convert (intermediate_type, inner);
if (bitnum != 0)
inner = build (RSHIFT_EXPR, intermediate_type,
@@ -5101,7 +5236,7 @@ fold_single_bit_test (enum tree_code code, tree arg0, tree arg1,
inner, integer_one_node);
/* Make sure to return the proper type. */
- inner = convert (result_type, inner);
+ inner = fold_convert (result_type, inner);
return inner;
}
@@ -5277,7 +5412,8 @@ fold (tree expr)
|| code == MAX_EXPR || code == BIT_IOR_EXPR || code == BIT_XOR_EXPR
|| code == BIT_AND_EXPR)
&& tree_swap_operands_p (arg0, arg1, true))
- return fold (build (code, type, arg1, arg0));
+ return fold (build (code, type, TREE_OPERAND (t, 1),
+ TREE_OPERAND (t, 0)));
/* Now WINS is set as described above,
ARG0 is the first operand of EXPR,
@@ -5467,7 +5603,8 @@ fold (tree expr)
if (TYPE_MAIN_VARIANT (inside_type) == TYPE_MAIN_VARIANT (final_type)
&& ((inter_int && final_int) || (inter_float && final_float))
&& inter_prec >= final_prec)
- return convert (final_type, TREE_OPERAND (TREE_OPERAND (t, 0), 0));
+ return fold (build1 (code, final_type,
+ TREE_OPERAND (TREE_OPERAND (t, 0), 0)));
/* Likewise, if the intermediate and final types are either both
float or both integer, we don't need the middle conversion if
@@ -5482,14 +5619,16 @@ fold (tree expr)
&& ! (final_prec != GET_MODE_BITSIZE (TYPE_MODE (final_type))
&& TYPE_MODE (final_type) == TYPE_MODE (inter_type))
&& ! final_ptr)
- return convert (final_type, TREE_OPERAND (TREE_OPERAND (t, 0), 0));
+ return fold (build1 (code, final_type,
+ TREE_OPERAND (TREE_OPERAND (t, 0), 0)));
/* If we have a sign-extension of a zero-extended value, we can
replace that by a single zero-extension. */
if (inside_int && inter_int && final_int
&& inside_prec < inter_prec && inter_prec < final_prec
&& inside_unsignedp && !inter_unsignedp)
- return convert (final_type, TREE_OPERAND (TREE_OPERAND (t, 0), 0));
+ return fold (build1 (code, final_type,
+ TREE_OPERAND (TREE_OPERAND (t, 0), 0)));
/* Two conversions in a row are not needed unless:
- some conversion is floating-point (overstrict for now), or
@@ -5513,7 +5652,8 @@ fold (tree expr)
&& ! (final_prec != GET_MODE_BITSIZE (TYPE_MODE (final_type))
&& TYPE_MODE (final_type) == TYPE_MODE (inter_type))
&& ! final_ptr)
- return convert (final_type, TREE_OPERAND (TREE_OPERAND (t, 0), 0));
+ return fold (build1 (code, final_type,
+ TREE_OPERAND (TREE_OPERAND (t, 0), 0)));
}
if (TREE_CODE (TREE_OPERAND (t, 0)) == MODIFY_EXPR
@@ -5566,28 +5706,19 @@ fold (tree expr)
== ZERO_EXTEND))
{
tree uns = (*lang_hooks.types.unsigned_type) (TREE_TYPE (and0));
- and0 = convert (uns, and0);
- and1 = convert (uns, and1);
+ and0 = fold_convert (uns, and0);
+ and1 = fold_convert (uns, and1);
}
#endif
}
if (change)
return fold (build (BIT_AND_EXPR, TREE_TYPE (t),
- convert (TREE_TYPE (t), and0),
- convert (TREE_TYPE (t), and1)));
+ fold_convert (TREE_TYPE (t), and0),
+ fold_convert (TREE_TYPE (t), and1)));
}
- if (!wins)
- {
- if (TREE_CONSTANT (t) != TREE_CONSTANT (arg0))
- {
- if (t == orig_t)
- t = copy_node (t);
- TREE_CONSTANT (t) = TREE_CONSTANT (arg0);
- }
- return t;
- }
- return fold_convert (t, arg0);
+ tem = fold_convert_const (code, TREE_TYPE (t), arg0);
+ return tem ? tem : t;
case VIEW_CONVERT_EXPR:
if (TREE_CODE (TREE_OPERAND (t, 0)) == VIEW_CONVERT_EXPR)
@@ -5616,7 +5747,7 @@ fold (tree expr)
case NEGATE_EXPR:
if (negate_expr_p (arg0))
- return negate_expr (arg0);
+ return fold_convert (type, negate_expr (arg0));
return t;
case ABS_EXPR:
@@ -5664,8 +5795,9 @@ fold (tree expr)
{
tree targ0 = strip_float_extensions (arg0);
if (targ0 != arg0)
- return convert (type, fold (build1 (ABS_EXPR, TREE_TYPE (targ0),
- targ0)));
+ return fold_convert (type, fold (build1 (ABS_EXPR,
+ TREE_TYPE (targ0),
+ targ0)));
}
else if (tree_expr_nonnegative_p (arg0))
return arg0;
@@ -5673,7 +5805,7 @@ fold (tree expr)
case CONJ_EXPR:
if (TREE_CODE (TREE_TYPE (arg0)) != COMPLEX_TYPE)
- return convert (type, arg0);
+ return fold_convert (type, arg0);
else if (TREE_CODE (arg0) == COMPLEX_EXPR)
return build (COMPLEX_EXPR, type,
TREE_OPERAND (arg0, 0),
@@ -5715,7 +5847,7 @@ fold (tree expr)
else if (! FLOAT_TYPE_P (type))
{
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* If we are adding two BIT_AND_EXPR's, both of which are and'ing
with a constant, and the two constants have no bits in common,
@@ -5756,16 +5888,16 @@ fold (tree expr)
&& TREE_CODE (parg1) != MULT_EXPR)
return fold (build (PLUS_EXPR, type,
fold (build (PLUS_EXPR, type,
- convert (type, parg0),
- convert (type, marg))),
- convert (type, parg1)));
+ fold_convert (type, parg0),
+ fold_convert (type, marg))),
+ fold_convert (type, parg1)));
if (TREE_CODE (parg0) != MULT_EXPR
&& TREE_CODE (parg1) == MULT_EXPR)
return fold (build (PLUS_EXPR, type,
fold (build (PLUS_EXPR, type,
- convert (type, parg1),
- convert (type, marg))),
- convert (type, parg0)));
+ fold_convert (type, parg1),
+ fold_convert (type, marg))),
+ fold_convert (type, parg0)));
}
if (TREE_CODE (arg0) == MULT_EXPR && TREE_CODE (arg1) == MULT_EXPR)
@@ -5833,11 +5965,11 @@ fold (tree expr)
{
/* See if ARG1 is zero and X + ARG1 reduces to X. */
if (fold_real_zero_addition_p (TREE_TYPE (arg0), arg1, 0))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* Likewise if the operands are reversed. */
if (fold_real_zero_addition_p (TREE_TYPE (arg1), arg0, 0))
- return non_lvalue (convert (type, arg1));
+ return non_lvalue (fold_convert (type, arg1));
/* Convert x+x into x*2.0. */
if (operand_equal_p (arg0, arg1, 0)
@@ -6030,19 +6162,22 @@ fold (tree expr)
if (minus_lit0)
{
if (con0 == 0)
- return convert (type, associate_trees (var0, minus_lit0,
- MINUS_EXPR, type));
+ return fold_convert (type,
+ associate_trees (var0, minus_lit0,
+ MINUS_EXPR, type));
else
{
con0 = associate_trees (con0, minus_lit0,
MINUS_EXPR, type);
- return convert (type, associate_trees (var0, con0,
- PLUS_EXPR, type));
+ return fold_convert (type,
+ associate_trees (var0, con0,
+ PLUS_EXPR, type));
}
}
con0 = associate_trees (con0, lit0, code, type);
- return convert (type, associate_trees (var0, con0, code, type));
+ return fold_convert (type, associate_trees (var0, con0,
+ code, type));
}
}
@@ -6054,7 +6189,7 @@ fold (tree expr)
/* The return value should always have
the same type as the original expression. */
if (TREE_TYPE (t1) != TREE_TYPE (t))
- t1 = convert (TREE_TYPE (t), t1);
+ t1 = fold_convert (TREE_TYPE (t), t1);
return t1;
}
@@ -6076,9 +6211,9 @@ fold (tree expr)
if (! FLOAT_TYPE_P (type))
{
if (! wins && integer_zerop (arg0))
- return negate_expr (convert (type, arg1));
+ return negate_expr (fold_convert (type, arg1));
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* (A * C) - (B * C) -> (A-B) * C. Since we are most concerned
about the case where C is a constant, just try one of the
@@ -6131,13 +6266,13 @@ fold (tree expr)
/* See if ARG1 is zero and X - ARG1 reduces to X. */
else if (fold_real_zero_addition_p (TREE_TYPE (arg0), arg1, 1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* (ARG0 - ARG1) is the same as (-ARG1 + ARG0). So check whether
ARG0 is zero and X + ARG0 reduces to X, since that would mean
(-ARG1 + ARG0) reduces to -ARG1. */
else if (!wins && fold_real_zero_addition_p (TREE_TYPE (arg1), arg0, 0))
- return negate_expr (convert (type, arg1));
+ return negate_expr (fold_convert (type, arg1));
/* Fold &x - &x. This can happen from &x.foo - &x.
This is unsafe for certain floats even in non-IEEE formats.
@@ -6147,7 +6282,7 @@ fold (tree expr)
if ((! FLOAT_TYPE_P (type) || flag_unsafe_math_optimizations)
&& operand_equal_p (arg0, arg1, 0))
- return convert (type, integer_zero_node);
+ return fold_convert (type, integer_zero_node);
goto associate;
@@ -6167,7 +6302,7 @@ fold (tree expr)
if (integer_zerop (arg1))
return omit_one_operand (type, arg1, arg0);
if (integer_onep (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* (a * (1 << b)) is (a << b) */
if (TREE_CODE (arg1) == LSHIFT_EXPR
@@ -6181,9 +6316,9 @@ fold (tree expr)
if (TREE_CODE (arg1) == INTEGER_CST
&& 0 != (tem = extract_muldiv (TREE_OPERAND (t, 0),
- convert (type, arg1),
+ fold_convert (type, arg1),
code, NULL_TREE)))
- return convert (type, tem);
+ return fold_convert (type, tem);
}
else
@@ -6199,7 +6334,7 @@ fold (tree expr)
/* In IEEE floating point, x*1 is not equivalent to x for snans. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
&& real_onep (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* Transform x * -1.0 into -x. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
@@ -6420,7 +6555,7 @@ fold (tree expr)
if (integer_all_onesp (arg1))
return omit_one_operand (type, arg1, arg0);
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
t1 = distribute_bit_expr (code, type, arg0, arg1);
if (t1 != NULL_TREE)
return t1;
@@ -6446,7 +6581,7 @@ fold (tree expr)
case BIT_XOR_EXPR:
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
if (integer_all_onesp (arg1))
return fold (build1 (BIT_NOT_EXPR, type, arg0));
@@ -6472,7 +6607,7 @@ fold (tree expr)
case BIT_AND_EXPR:
if (integer_all_onesp (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
if (integer_zerop (arg1))
return omit_one_operand (type, arg1, arg0);
t1 = distribute_bit_expr (code, type, arg0, arg1);
@@ -6488,7 +6623,7 @@ fold (tree expr)
if (prec < BITS_PER_WORD && prec < HOST_BITS_PER_WIDE_INT
&& (~TREE_INT_CST_LOW (arg1)
& (((HOST_WIDE_INT) 1 << prec) - 1)) == 0)
- return build1 (NOP_EXPR, type, TREE_OPERAND (arg0, 0));
+ return fold_convert (type, TREE_OPERAND (arg0, 0));
}
/* Convert (and (not arg0) (not arg1)) to (not (or (arg0) (arg1))).
@@ -6529,12 +6664,12 @@ fold (tree expr)
/* In IEEE floating point, x/1 is not equivalent to x for snans. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
&& real_onep (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* In IEEE floating point, x/-1 is not equivalent to -x for snans. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
&& real_minus_onep (arg1))
- return non_lvalue (convert (type, negate_expr (arg0)));
+ return non_lvalue (fold_convert (type, negate_expr (arg0)));
/* If ARG1 is a constant, we can convert this to a multiply by the
reciprocal. This does not have the same rounding properties,
@@ -6716,7 +6851,7 @@ fold (tree expr)
case CEIL_DIV_EXPR:
case EXACT_DIV_EXPR:
if (integer_onep (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
if (integer_zerop (arg1))
return t;
@@ -6733,7 +6868,7 @@ fold (tree expr)
if (TREE_CODE (arg1) == INTEGER_CST
&& 0 != (tem = extract_muldiv (TREE_OPERAND (t, 0), arg1,
code, NULL_TREE)))
- return convert (type, tem);
+ return fold_convert (type, tem);
goto binary;
@@ -6749,7 +6884,7 @@ fold (tree expr)
if (TREE_CODE (arg1) == INTEGER_CST
&& 0 != (tem = extract_muldiv (TREE_OPERAND (t, 0), arg1,
code, NULL_TREE)))
- return convert (type, tem);
+ return fold_convert (type, tem);
goto binary;
@@ -6768,7 +6903,7 @@ fold (tree expr)
case LSHIFT_EXPR:
shift:
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
if (integer_zerop (arg0))
return omit_one_operand (type, arg0, arg1);
@@ -6781,7 +6916,7 @@ fold (tree expr)
if (code == LROTATE_EXPR && TREE_CODE (arg1) == INTEGER_CST)
{
tree tem = build_int_2 (GET_MODE_BITSIZE (TYPE_MODE (type)), 0);
- tem = convert (TREE_TYPE (arg1), tem);
+ tem = fold_convert (TREE_TYPE (arg1), tem);
tem = const_binop (MINUS_EXPR, tem, arg1, 0);
return fold (build (RROTATE_EXPR, type, arg0, tem));
}
@@ -6845,7 +6980,7 @@ fold (tree expr)
return tem;
return t;
}
- return convert (type, tem);
+ return fold_convert (type, tem);
case TRUTH_ANDIF_EXPR:
/* Note that the operands of this must be ints
@@ -6853,15 +6988,15 @@ fold (tree expr)
("true" is a fixed value perhaps depending on the language.) */
/* If first arg is constant zero, return it. */
if (integer_zerop (arg0))
- return convert (type, arg0);
+ return fold_convert (type, arg0);
case TRUTH_AND_EXPR:
/* If either arg is constant true, drop it. */
if (TREE_CODE (arg0) == INTEGER_CST && ! integer_zerop (arg0))
- return non_lvalue (convert (type, arg1));
+ return non_lvalue (fold_convert (type, arg1));
if (TREE_CODE (arg1) == INTEGER_CST && ! integer_zerop (arg1)
/* Preserve sequence points. */
&& (code != TRUTH_ANDIF_EXPR || ! TREE_SIDE_EFFECTS (arg0)))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* If second arg is constant zero, result is zero, but first arg
must be evaluated. */
if (integer_zerop (arg1))
@@ -6941,15 +7076,15 @@ fold (tree expr)
("true" is a fixed value perhaps depending on the language.) */
/* If first arg is constant true, return it. */
if (TREE_CODE (arg0) == INTEGER_CST && ! integer_zerop (arg0))
- return convert (type, arg0);
+ return fold_convert (type, arg0);
case TRUTH_OR_EXPR:
/* If either arg is constant zero, drop it. */
if (TREE_CODE (arg0) == INTEGER_CST && integer_zerop (arg0))
- return non_lvalue (convert (type, arg1));
+ return non_lvalue (fold_convert (type, arg1));
if (TREE_CODE (arg1) == INTEGER_CST && integer_zerop (arg1)
/* Preserve sequence points. */
&& (code != TRUTH_ORIF_EXPR || ! TREE_SIDE_EFFECTS (arg0)))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* If second arg is constant true, result is true, but we must
evaluate first arg. */
if (TREE_CODE (arg1) == INTEGER_CST && ! integer_zerop (arg1))
@@ -6963,14 +7098,14 @@ fold (tree expr)
case TRUTH_XOR_EXPR:
/* If either arg is constant zero, drop it. */
if (integer_zerop (arg0))
- return non_lvalue (convert (type, arg1));
+ return non_lvalue (fold_convert (type, arg1));
if (integer_zerop (arg1))
- return non_lvalue (convert (type, arg0));
+ return non_lvalue (fold_convert (type, arg0));
/* If either arg is constant true, this is a logical inversion. */
if (integer_onep (arg0))
- return non_lvalue (convert (type, invert_truthvalue (arg1)));
+ return non_lvalue (fold_convert (type, invert_truthvalue (arg1)));
if (integer_onep (arg1))
- return non_lvalue (convert (type, invert_truthvalue (arg0)));
+ return non_lvalue (fold_convert (type, invert_truthvalue (arg0)));
return t;
case EQ_EXPR:
@@ -6994,8 +7129,8 @@ fold (tree expr)
/* Fold (double)float1 CMP (double)float2 into float1 CMP float2. */
if (TYPE_PRECISION (newtype) < TYPE_PRECISION (TREE_TYPE (arg0)))
- return fold (build (code, type, convert (newtype, targ0),
- convert (newtype, targ1)));
+ return fold (build (code, type, fold_convert (newtype, targ0),
+ fold_convert (newtype, targ1)));
/* (-a) CMP (-b) -> b CMP a */
if (TREE_CODE (arg0) == NEGATE_EXPR
@@ -7027,7 +7162,7 @@ fold (tree expr)
&& ! HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg1))))
{
t = (code == NE_EXPR) ? integer_one_node : integer_zero_node;
- return omit_one_operand (type, convert (type, t), arg0);
+ return omit_one_operand (type, fold_convert (type, t), arg0);
}
/* Fold comparisons against infinity. */
@@ -7155,8 +7290,8 @@ fold (tree expr)
size_int (precision - size), 0);
newconst = fold (build (BIT_AND_EXPR,
TREE_TYPE (varop), newconst,
- convert (TREE_TYPE (varop),
- mask)));
+ fold_convert (TREE_TYPE (varop),
+ mask)));
}
t = build (code, type,
@@ -7216,8 +7351,8 @@ fold (tree expr)
size_int (precision - size), 0);
newconst = fold (build (BIT_AND_EXPR,
TREE_TYPE (varop), newconst,
- convert (TREE_TYPE (varop),
- mask)));
+ fold_convert (TREE_TYPE (varop),
+ mask)));
}
t = build (code, type,
@@ -7283,14 +7418,16 @@ fold (tree expr)
{
case GT_EXPR:
return omit_one_operand (type,
- convert (type, integer_zero_node),
+ fold_convert (type,
+ integer_zero_node),
arg0);
case GE_EXPR:
return fold (build (EQ_EXPR, type, arg0, arg1));
case LE_EXPR:
return omit_one_operand (type,
- convert (type, integer_one_node),
+ fold_convert (type,
+ integer_one_node),
arg0);
case LT_EXPR:
return fold (build (NE_EXPR, type, arg0, arg1));
@@ -7320,14 +7457,16 @@ fold (tree expr)
{
case LT_EXPR:
return omit_one_operand (type,
- convert (type, integer_zero_node),
+ fold_convert (type,
+ integer_zero_node),
arg0);
case LE_EXPR:
return fold (build (EQ_EXPR, type, arg0, arg1));
case GE_EXPR:
return omit_one_operand (type,
- convert (type, integer_one_node),
+ fold_convert (type,
+ integer_one_node),
arg0);
case GT_EXPR:
return fold (build (NE_EXPR, type, arg0, arg1));
@@ -7364,8 +7503,8 @@ fold (tree expr)
st1 = (*lang_hooks.types.signed_type) (TREE_TYPE (arg1));
return fold
(build (code == LE_EXPR ? GE_EXPR: LT_EXPR,
- type, convert (st0, arg0),
- convert (st1, integer_zero_node)));
+ type, fold_convert (st0, arg0),
+ fold_convert (st1, integer_zero_node)));
}
}
}
@@ -7411,7 +7550,8 @@ fold (tree expr)
&& (TREE_TYPE (t1) == TREE_TYPE (tem)
|| (TREE_CODE (t1) == INTEGER_CST
&& int_fits_type_p (t1, TREE_TYPE (tem)))))
- return fold (build (code, type, tem, convert (TREE_TYPE (tem), t1)));
+ return fold (build (code, type, tem,
+ fold_convert (TREE_TYPE (tem), t1)));
/* If this is comparing a constant with a MIN_EXPR or a MAX_EXPR of a
constant, we can simplify it. */
@@ -7454,8 +7594,8 @@ fold (tree expr)
TREE_TYPE (TREE_OPERAND (arg0, 0)),
TREE_OPERAND (arg0, 1),
TREE_OPERAND (TREE_OPERAND (arg0, 0), 1)),
- convert (TREE_TYPE (arg0),
- integer_one_node)),
+ fold_convert (TREE_TYPE (arg0),
+ integer_one_node)),
arg1));
else if (TREE_CODE (TREE_OPERAND (arg0, 1)) == LSHIFT_EXPR
&& integer_onep (TREE_OPERAND (TREE_OPERAND (arg0, 1), 0)))
@@ -7466,8 +7606,8 @@ fold (tree expr)
TREE_TYPE (TREE_OPERAND (arg0, 1)),
TREE_OPERAND (arg0, 0),
TREE_OPERAND (TREE_OPERAND (arg0, 1), 1)),
- convert (TREE_TYPE (arg0),
- integer_one_node)),
+ fold_convert (TREE_TYPE (arg0),
+ integer_one_node)),
arg1));
}
@@ -7485,10 +7625,12 @@ fold (tree expr)
{
tree newtype = (*lang_hooks.types.unsigned_type) (TREE_TYPE (arg0));
tree newmod = build (TREE_CODE (arg0), newtype,
- convert (newtype, TREE_OPERAND (arg0, 0)),
- convert (newtype, TREE_OPERAND (arg0, 1)));
+ fold_convert (newtype,
+ TREE_OPERAND (arg0, 0)),
+ fold_convert (newtype,
+ TREE_OPERAND (arg0, 1)));
- return build (code, type, newmod, convert (newtype, arg1));
+ return build (code, type, newmod, fold_convert (newtype, arg1));
}
/* If this is an NE comparison of zero with an AND of one, remove the
@@ -7496,7 +7638,7 @@ fold (tree expr)
if (code == NE_EXPR && integer_zerop (arg1)
&& TREE_CODE (arg0) == BIT_AND_EXPR
&& integer_onep (TREE_OPERAND (arg0, 1)))
- return convert (type, arg0);
+ return fold_convert (type, arg0);
/* If we have (A & C) == C where C is a power of 2, convert this into
(A & C) != 0. Similarly for NE_EXPR. */
@@ -7555,7 +7697,7 @@ fold (tree expr)
return build (code == LT_EXPR ? EQ_EXPR : NE_EXPR, type,
build (RSHIFT_EXPR, TREE_TYPE (arg0), arg0,
TREE_OPERAND (arg1, 1)),
- convert (TREE_TYPE (arg0), integer_zero_node));
+ fold_convert (TREE_TYPE (arg0), integer_zero_node));
else if ((code == LT_EXPR || code == GE_EXPR)
&& TREE_UNSIGNED (TREE_TYPE (arg0))
@@ -7565,10 +7707,11 @@ fold (tree expr)
&& integer_onep (TREE_OPERAND (TREE_OPERAND (arg1, 0), 0)))
return
build (code == LT_EXPR ? EQ_EXPR : NE_EXPR, type,
- convert (TREE_TYPE (arg0),
- build (RSHIFT_EXPR, TREE_TYPE (arg0), arg0,
- TREE_OPERAND (TREE_OPERAND (arg1, 0), 1))),
- convert (TREE_TYPE (arg0), integer_zero_node));
+ fold_convert (TREE_TYPE (arg0),
+ build (RSHIFT_EXPR, TREE_TYPE (arg0), arg0,
+ TREE_OPERAND (TREE_OPERAND (arg1, 0),
+ 1))),
+ fold_convert (TREE_TYPE (arg0), integer_zero_node));
/* Simplify comparison of something with itself. (For IEEE
floating-point, we can only do some of these simplifications.) */
@@ -7919,32 +8062,26 @@ fold (tree expr)
switch (comp_code)
{
case EQ_EXPR:
- return
- pedantic_non_lvalue
- (convert (type,
- negate_expr
- (convert (TREE_TYPE (TREE_OPERAND (t, 1)),
- arg1))));
+ tem = fold_convert (TREE_TYPE (TREE_OPERAND (t, 1)), arg1);
+ tem = fold_convert (type, negate_expr (tem));
+ return pedantic_non_lvalue (tem);
case NE_EXPR:
- return pedantic_non_lvalue (convert (type, arg1));
+ return pedantic_non_lvalue (fold_convert (type, arg1));
case GE_EXPR:
case GT_EXPR:
if (TREE_UNSIGNED (TREE_TYPE (arg1)))
- arg1 = convert ((*lang_hooks.types.signed_type)
- (TREE_TYPE (arg1)), arg1);
- return pedantic_non_lvalue
- (convert (type, fold (build1 (ABS_EXPR,
- TREE_TYPE (arg1), arg1))));
+ arg1 = fold_convert ((*lang_hooks.types.signed_type)
+ (TREE_TYPE (arg1)), arg1);
+ arg1 = fold (build1 (ABS_EXPR, TREE_TYPE (arg1), arg1));
+ return pedantic_non_lvalue (fold_convert (type, arg1));
case LE_EXPR:
case LT_EXPR:
if (TREE_UNSIGNED (TREE_TYPE (arg1)))
- arg1 = convert ((lang_hooks.types.signed_type)
- (TREE_TYPE (arg1)), arg1);
- return pedantic_non_lvalue
- (negate_expr (convert (type,
- fold (build1 (ABS_EXPR,
- TREE_TYPE (arg1),
- arg1)))));
+ arg1 = fold_convert ((lang_hooks.types.signed_type)
+ (TREE_TYPE (arg1)), arg1);
+ arg1 = fold (build1 (ABS_EXPR, TREE_TYPE (arg1), arg1));
+ arg1 = negate_expr (fold_convert (type, arg1));
+ return pedantic_non_lvalue (arg1);
default:
abort ();
}
@@ -7957,9 +8094,9 @@ fold (tree expr)
if (integer_zerop (TREE_OPERAND (arg0, 1)) && integer_zerop (arg2))
{
if (comp_code == NE_EXPR)
- return pedantic_non_lvalue (convert (type, arg1));
+ return pedantic_non_lvalue (fold_convert (type, arg1));
else if (comp_code == EQ_EXPR)
- return pedantic_non_lvalue (convert (type, integer_zero_node));
+ return pedantic_non_lvalue (fold_convert (type, integer_zero_node));
}
/* Try some transformations of A op B ? A : B.
@@ -8006,9 +8143,9 @@ fold (tree expr)
switch (comp_code)
{
case EQ_EXPR:
- return pedantic_non_lvalue (convert (type, arg2));
+ return pedantic_non_lvalue (fold_convert (type, arg2));
case NE_EXPR:
- return pedantic_non_lvalue (convert (type, arg1));
+ return pedantic_non_lvalue (fold_convert (type, arg1));
case LE_EXPR:
case LT_EXPR:
/* In C++ a ?: expression can be an lvalue, so put the
@@ -8016,22 +8153,22 @@ fold (tree expr)
so that we can convert this back to the
corresponding COND_EXPR. */
if (!HONOR_NANS (TYPE_MODE (TREE_TYPE (arg1))))
- return pedantic_non_lvalue
- (convert (type, fold (build (MIN_EXPR, comp_type,
- (comp_code == LE_EXPR
- ? comp_op0 : comp_op1),
- (comp_code == LE_EXPR
- ? comp_op1 : comp_op0)))));
+ return pedantic_non_lvalue (fold_convert
+ (type, fold (build (MIN_EXPR, comp_type,
+ (comp_code == LE_EXPR
+ ? comp_op0 : comp_op1),
+ (comp_code == LE_EXPR
+ ? comp_op1 : comp_op0)))));
break;
case GE_EXPR:
case GT_EXPR:
if (!HONOR_NANS (TYPE_MODE (TREE_TYPE (arg1))))
- return pedantic_non_lvalue
- (convert (type, fold (build (MAX_EXPR, comp_type,
- (comp_code == GE_EXPR
- ? comp_op0 : comp_op1),
- (comp_code == GE_EXPR
- ? comp_op1 : comp_op0)))));
+ return pedantic_non_lvalue (fold_convert
+ (type, fold (build (MAX_EXPR, comp_type,
+ (comp_code == GE_EXPR
+ ? comp_op0 : comp_op1),
+ (comp_code == GE_EXPR
+ ? comp_op1 : comp_op0)))));
break;
default:
abort ();
@@ -8051,7 +8188,7 @@ fold (tree expr)
{
case EQ_EXPR:
/* We can replace A with C1 in this case. */
- arg1 = convert (type, TREE_OPERAND (arg0, 1));
+ arg1 = fold_convert (type, TREE_OPERAND (arg0, 1));
return fold (build (code, type, TREE_OPERAND (t, 0), arg1,
TREE_OPERAND (t, 2)));
@@ -8131,8 +8268,8 @@ fold (tree expr)
if (integer_zerop (TREE_OPERAND (t, 1))
&& integer_onep (TREE_OPERAND (t, 2))
&& truth_value_p (TREE_CODE (arg0)))
- return pedantic_non_lvalue (convert (type,
- invert_truthvalue (arg0)));
+ return pedantic_non_lvalue (fold_convert (type,
+ invert_truthvalue (arg0)));
/* Look for expressions of the form A & 2 ? 2 : 0. The result of this
operation is simply A & 2. */
@@ -8144,7 +8281,8 @@ fold (tree expr)
&& TREE_CODE (TREE_OPERAND (arg0, 0)) == BIT_AND_EXPR
&& operand_equal_p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1),
arg1, 1))
- return pedantic_non_lvalue (convert (type, TREE_OPERAND (arg0, 0)));
+ return pedantic_non_lvalue (fold_convert (type,
+ TREE_OPERAND (arg0, 0)));
/* Convert A ? B : 0 into A && B if A and B are truth values. */
if (integer_zerop (TREE_OPERAND (t, 2))
@@ -8175,7 +8313,7 @@ fold (tree expr)
/* Don't let (0, 0) be null pointer constant. */
if (integer_zerop (arg1))
return build1 (NOP_EXPR, type, arg1);
- return convert (type, arg1);
+ return fold_convert (type, arg1);
case COMPLEX_EXPR:
if (wins)
@@ -8200,7 +8338,7 @@ fold (tree expr)
case IMAGPART_EXPR:
if (TREE_CODE (TREE_TYPE (arg0)) != COMPLEX_TYPE)
- return convert (type, integer_zero_node);
+ return fold_convert (type, integer_zero_node);
else if (TREE_CODE (arg0) == COMPLEX_EXPR)
return omit_one_operand (type, TREE_OPERAND (arg0, 1),
TREE_OPERAND (arg0, 0));
@@ -8562,9 +8700,10 @@ multiple_of_p (tree type, tree top, tree bottom)
if (TYPE_PRECISION (TREE_TYPE (size_one_node))
> TREE_INT_CST_LOW (op1)
&& TREE_INT_CST_HIGH (op1) == 0
- && 0 != (t1 = convert (type,
- const_binop (LSHIFT_EXPR, size_one_node,
- op1, 0)))
+ && 0 != (t1 = fold_convert (type,
+ const_binop (LSHIFT_EXPR,
+ size_one_node,
+ op1, 0)))
&& ! TREE_OVERFLOW (t1))
return multiple_of_p (type, t1, bottom);
}
diff --git a/gcc/function.c b/gcc/function.c
index 02f095a19b3..5129aaef335 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1,6 +1,6 @@
/* Expands front end tree to back end RTL for GCC.
Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -5221,14 +5221,28 @@ assign_parms (tree fndecl)
{
if (TREE_CODE (TREE_TYPE (parm)) == COMPLEX_TYPE)
{
- SET_DECL_RTL (parm,
- gen_rtx_CONCAT (DECL_MODE (parm),
- DECL_RTL (fnargs),
- DECL_RTL (TREE_CHAIN (fnargs))));
- DECL_INCOMING_RTL (parm)
- = gen_rtx_CONCAT (DECL_MODE (parm),
- DECL_INCOMING_RTL (fnargs),
- DECL_INCOMING_RTL (TREE_CHAIN (fnargs)));
+ rtx tmp, real, imag;
+ enum machine_mode inner = GET_MODE_INNER (DECL_MODE (parm));
+
+ real = DECL_RTL (fnargs);
+ imag = DECL_RTL (TREE_CHAIN (fnargs));
+ if (inner != GET_MODE (real))
+ {
+ real = gen_lowpart_SUBREG (inner, real);
+ imag = gen_lowpart_SUBREG (inner, imag);
+ }
+ tmp = gen_rtx_CONCAT (DECL_MODE (parm), real, imag);
+ SET_DECL_RTL (parm, tmp);
+
+ real = DECL_INCOMING_RTL (fnargs);
+ imag = DECL_INCOMING_RTL (TREE_CHAIN (fnargs));
+ if (inner != GET_MODE (real))
+ {
+ real = gen_lowpart_SUBREG (inner, real);
+ imag = gen_lowpart_SUBREG (inner, imag);
+ }
+ tmp = gen_rtx_CONCAT (DECL_MODE (parm), real, imag);
+ DECL_INCOMING_RTL (parm) = tmp;
fnargs = TREE_CHAIN (fnargs);
}
else
@@ -6394,9 +6408,6 @@ allocate_struct_function (tree fndecl)
init_stmt_for_function ();
init_eh_for_function ();
- init_emit ();
- init_expr ();
- init_varasm_status (cfun);
(*lang_hooks.function.init) (cfun);
if (init_machine_status)
@@ -6434,6 +6445,9 @@ prepare_function_start (tree fndecl)
cfun = DECL_SAVED_INSNS (fndecl);
else
allocate_struct_function (fndecl);
+ init_emit ();
+ init_varasm_status (cfun);
+ init_expr ();
cse_not_expected = ! optimize;
@@ -7254,7 +7268,7 @@ record_insns (rtx insns, varray_type *vecp)
}
}
-/* Set the specified locator to the insn chain. */
+/* Set the locator of the insn chain starting at INSN to LOC. */
static void
set_insn_locators (rtx insn, int loc)
{
@@ -7895,6 +7909,7 @@ epilogue_done:
#endif
#ifdef HAVE_prologue
+ /* This is probably all useless now that we use locators. */
if (prologue_end)
{
rtx insn, prev;
diff --git a/gcc/function.h b/gcc/function.h
index 088fbbb5320..1e5c56fb845 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -1,6 +1,6 @@
/* Structure for saving state for a nested function.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -457,9 +457,10 @@ struct function GTY(())
/* Nonzero if the function being compiled issues a computed jump. */
unsigned int has_computed_jump : 1;
- /* Nonzero if the current function is a thunk (a lightweight function that
- just adjusts one of its arguments and forwards to another function), so
- we should try to cut corners where we can. */
+ /* Nonzero if the current function is a thunk, i.e., a lightweight
+ function implemented by the output_mi_thunk hook) that just
+ adjusts one of its arguments and forwards to another
+ function. */
unsigned int is_thunk : 1;
/* This bit is used by the exception handling logic. It is set if all
diff --git a/gcc/gcc.c b/gcc/gcc.c
index bc6d4c4235b..fe8a1e30cd9 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -1,6 +1,6 @@
/* Compiler driver program that can handle many languages.
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -340,7 +340,7 @@ static void display_help (void);
static void add_preprocessor_option (const char *, int);
static void add_assembler_option (const char *, int);
static void add_linker_option (const char *, int);
-static void process_command (int, const char *const *);
+static void process_command (int, const char **);
static int execute (void);
static void alloc_args (void);
static void clear_args (void);
@@ -3074,7 +3074,7 @@ add_linker_option (const char *option, int len)
Store its length in `n_switches'. */
static void
-process_command (int argc, const char *const *argv)
+process_command (int argc, const char **argv)
{
int i;
const char *temp;
@@ -3312,10 +3312,10 @@ process_command (int argc, const char *const *argv)
}
/* Convert new-style -- options to old-style. */
- translate_options (&argc, &argv);
+ translate_options (&argc, (const char *const **) &argv);
/* Do language-specific adjustment/addition of flags. */
- lang_specific_driver (&argc, &argv, &added_libraries);
+ lang_specific_driver (&argc, (const char *const **) &argv, &added_libraries);
/* Scan argv twice. Here, the first time, just count how many switches
there will be in their vector, and how many input files in theirs.
@@ -3347,8 +3347,8 @@ process_command (int argc, const char *const *argv)
{
/* translate_options () has turned --version into -fversion. */
printf (_("%s (GCC) %s\n"), programname, version_string);
- fputs (_("Copyright (C) 2003 Free Software Foundation, Inc.\n"),
- stdout);
+ printf ("Copyright %s 2004 Free Software Foundation, Inc.\n",
+ _("(C)"));
fputs (_("This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"),
stdout);
@@ -5902,10 +5902,10 @@ fatal_error (int signum)
kill (getpid (), signum);
}
-extern int main (int, const char *const *);
+extern int main (int, const char **);
int
-main (int argc, const char *const *argv)
+main (int argc, const char **argv)
{
size_t i;
int value;
diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c
index 99731f79939..0349fb821b2 100644
--- a/gcc/gcov-io.c
+++ b/gcc/gcov-io.c
@@ -65,6 +65,7 @@ gcov_open (const char *name, int mode)
#endif
#if GCOV_LOCKED
struct flock s_flock;
+ int fd;
s_flock.l_type = F_WRLCK;
s_flock.l_whence = SEEK_SET;
@@ -82,6 +83,44 @@ gcov_open (const char *name, int mode)
#if !IN_LIBGCOV
gcov_var.endian = 0;
#endif
+#if GCOV_LOCKED
+ if (mode > 0)
+ fd = open (name, O_RDWR);
+ else
+ fd = open (name, O_RDWR | O_CREAT, 0666);
+ if (fd < 0)
+ return 0;
+
+ while (fcntl (fd, F_SETLKW, &s_flock) && errno == EINTR)
+ continue;
+
+ gcov_var.file = fdopen (fd, "r+b");
+ if (!gcov_var.file)
+ {
+ close (fd);
+ return 0;
+ }
+
+ if (mode > 0)
+ gcov_var.mode = 1;
+ else if (mode == 0)
+ {
+ struct stat st;
+
+ if (fstat (fd, &st) < 0)
+ {
+ fclose (gcov_var.file);
+ gcov_var.file = 0;
+ return 0;
+ }
+ if (st.st_size != 0)
+ gcov_var.mode = 1;
+ else
+ gcov_var.mode = mode * 2 + 1;
+ }
+ else
+ gcov_var.mode = mode * 2 + 1;
+#else
if (mode >= 0)
gcov_var.file = fopen (name, "r+b");
if (gcov_var.file)
@@ -94,15 +133,10 @@ gcov_open (const char *name, int mode)
}
if (!gcov_var.file)
return 0;
-
- setbuf (gcov_var.file, (char *)0);
-
-#if GCOV_LOCKED
- while (fcntl (fileno (gcov_var.file), F_SETLKW, &s_flock)
- && errno == EINTR)
- continue;
#endif
+ setbuf (gcov_var.file, (char *)0);
+
return 1;
}
diff --git a/gcc/gcov.c b/gcc/gcov.c
index f95334a4319..172f9e85651 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -1,7 +1,7 @@
/* Gcov.c: prepend line execution counts and branch probabilities to a
source file.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by James E. Wilson of Cygnus Support.
Mangled by Bob Manson of Cygnus Support.
Mangled further by Nathan Sidwell <nathan@codesourcery.com>
@@ -420,11 +420,12 @@ static void
print_version (void)
{
fnotice (stdout, "gcov (GCC) %s\n", version_string);
- fnotice (stdout, "Copyright (C) 2003 Free Software Foundation, Inc.\n");
+ fprintf (stdout, "Copyright %s 2004 Free Software Foundation, Inc.\n",
+ _("(C)"));
fnotice (stdout,
- "This is free software; see the source for copying conditions.\n"
- "There is NO warranty; not even for MERCHANTABILITY or \n"
- "FITNESS FOR A PARTICULAR PURPOSE.\n\n");
+ _("This is free software; see the source for copying conditions.\n"
+ "There is NO warranty; not even for MERCHANTABILITY or \n"
+ "FITNESS FOR A PARTICULAR PURPOSE.\n\n"));
exit (SUCCESS_EXIT_CODE);
}
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 6053dffe833..4751a286569 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -1,6 +1,6 @@
/* Global common subexpression elimination/Partial redundancy elimination
and global constant/copy propagation for GNU compiler.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -4874,6 +4874,20 @@ bypass_block (basic_block bb, rtx setcc, rtx jump)
else
dest = NULL;
+ /* Avoid unification of the edge with other edges from original
+ branch. We would end up emitting the instruction on "both"
+ edges. */
+
+ if (dest && setcc && !CC0_P (SET_DEST (PATTERN (setcc))))
+ {
+ edge e2;
+ for (e2 = e->src->succ; e2; e2 = e2->succ_next)
+ if (e2->dest == dest)
+ break;
+ if (e2)
+ dest = NULL;
+ }
+
old_dest = e->dest;
if (dest != NULL
&& dest != old_dest
@@ -5952,7 +5966,7 @@ delete_null_pointer_checks_1 (unsigned int *block_reg, sbitmap *nonnull_avin,
/* Scan each insn in the basic block looking for memory references and
register sets. */
- stop_insn = NEXT_INSN (BB_HEAD (current_block));
+ stop_insn = NEXT_INSN (BB_END (current_block));
for (insn = BB_HEAD (current_block);
insn != stop_insn;
insn = NEXT_INSN (insn))
@@ -6054,8 +6068,10 @@ delete_null_pointer_checks_1 (unsigned int *block_reg, sbitmap *nonnull_avin,
something_changed = 1;
delete_insn (last_insn);
+#ifdef HAVE_cc0
if (compare_and_branch == 2)
delete_insn (earliest);
+#endif
purge_dead_edges (bb);
/* Don't check this block again. (Note that BB_END is
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 05f7d222e8b..56c62e38678 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -1,6 +1,6 @@
/* Generate code from machine description to compute values of attributes.
Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
This file is part of GCC.
diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index 179564ad052..b68c63c60b5 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -1,5 +1,5 @@
/* Pipeline hazard description translator.
- Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Vladimir Makarov <vmakarov@redhat.com>
diff --git a/gcc/genconditions.c b/gcc/genconditions.c
index 86e3544a7bf..692dc64add3 100644
--- a/gcc/genconditions.c
+++ b/gcc/genconditions.c
@@ -1,5 +1,5 @@
/* Process machine description and calculate constant conditions.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/genextract.c b/gcc/genextract.c
index d3365736510..54be0ebeccc 100644
--- a/gcc/genextract.c
+++ b/gcc/genextract.c
@@ -387,8 +387,10 @@ from the machine description file `md'. */\n\n");
printf (" rtx **ro_loc = recog_data.operand_loc;\n");
printf (" rtx pat = PATTERN (insn);\n");
printf (" int i ATTRIBUTE_UNUSED;\n\n");
- printf (" memset (ro, 0, sizeof (*ro) * MAX_RECOG_OPERANDS);\n");
- printf (" memset (ro_loc, 0, sizeof (*ro_loc) * MAX_RECOG_OPERANDS);\n");
+#ifdef ENABLE_CHECKING
+ printf (" memset (ro, 0xab, sizeof (*ro) * MAX_RECOG_OPERANDS);\n");
+ printf (" memset (ro_loc, 0xab, sizeof (*ro_loc) * MAX_RECOG_OPERANDS);\n");
+#endif
printf (" switch (INSN_CODE (insn))\n");
printf (" {\n");
printf (" case -1:\n");
diff --git a/gcc/genflags.c b/gcc/genflags.c
index 66e6bd1df01..d3102739d88 100644
--- a/gcc/genflags.c
+++ b/gcc/genflags.c
@@ -2,7 +2,7 @@
- some flags HAVE_... saying which simple standard instructions are
available for this machine.
Copyright (C) 1987, 1991, 1995, 1998,
- 1999, 2000, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l
index 2f526599685..2d0462beba5 100644
--- a/gcc/gengtype-lex.l
+++ b/gcc/gengtype-lex.l
@@ -47,7 +47,7 @@ update_lineno (const char *l, size_t len)
ID [[:alpha:]_][[:alnum:]_]*
WS [[:space:]]+
-IWORD short|long|(un)?signed|char|int|HOST_WIDE_INT|bool|size_t|CHAR_BITFIELD
+IWORD short|long|(un)?signed|char|int|HOST_WIDE_INT|bool|size_t|BOOL_BITFIELD
ITYPE {IWORD}({WS}{IWORD})*
%x in_struct in_struct_comment in_comment in_yacc_escape
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index 6655d3cc37d..1e1b0959360 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -1,5 +1,5 @@
/* Process source files and output type information.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/genopinit.c b/gcc/genopinit.c
index 8f309f43836..5e1599ad80f 100644
--- a/gcc/genopinit.c
+++ b/gcc/genopinit.c
@@ -1,6 +1,6 @@
/* Generate code to initialize optabs from machine description.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index 467f96e0fc1..be7505b31ae 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -1,6 +1,6 @@
/* Generate code from machine description to recognize rtl as insns.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -231,7 +231,7 @@ static struct decision *new_decision
static struct decision_test *new_decision_test
(enum decision_type, struct decision_test ***);
static rtx find_operand
- (rtx, int);
+ (rtx, int, rtx);
static rtx find_matching_operand
(rtx, int);
static void validate_pattern
@@ -345,16 +345,19 @@ new_decision_test (enum decision_type type, struct decision_test ***pplace)
return test;
}
-/* Search for and return operand N. */
+/* Search for and return operand N, stop when reaching node STOP. */
static rtx
-find_operand (rtx pattern, int n)
+find_operand (rtx pattern, int n, rtx stop)
{
const char *fmt;
RTX_CODE code;
int i, j, len;
rtx r;
+ if (pattern == stop)
+ return stop;
+
code = GET_CODE (pattern);
if ((code == MATCH_SCRATCH
|| code == MATCH_INSN
@@ -371,7 +374,7 @@ find_operand (rtx pattern, int n)
switch (fmt[i])
{
case 'e': case 'u':
- if ((r = find_operand (XEXP (pattern, i), n)) != NULL_RTX)
+ if ((r = find_operand (XEXP (pattern, i), n, stop)) != NULL_RTX)
return r;
break;
@@ -382,7 +385,8 @@ find_operand (rtx pattern, int n)
case 'E':
for (j = 0; j < XVECLEN (pattern, i); j++)
- if ((r = find_operand (XVECEXP (pattern, i, j), n)) != NULL_RTX)
+ if ((r = find_operand (XVECEXP (pattern, i, j), n, stop))
+ != NULL_RTX)
return r;
break;
@@ -466,7 +470,17 @@ validate_pattern (rtx pattern, rtx insn, rtx set, int set_code)
{
case MATCH_SCRATCH:
return;
-
+ case MATCH_DUP:
+ case MATCH_OP_DUP:
+ case MATCH_PAR_DUP:
+ if (find_operand (insn, XINT (pattern, 0), pattern) == pattern)
+ {
+ message_with_line (pattern_lineno,
+ "operand %i duplicated before defined",
+ XINT (pattern, 0));
+ error_count++;
+ }
+ break;
case MATCH_INSN:
case MATCH_OPERAND:
case MATCH_OPERATOR:
@@ -638,12 +652,12 @@ validate_pattern (rtx pattern, rtx insn, rtx set, int set_code)
if (GET_CODE (dest) == MATCH_DUP
|| GET_CODE (dest) == MATCH_OP_DUP
|| GET_CODE (dest) == MATCH_PAR_DUP)
- dest = find_operand (insn, XINT (dest, 0));
+ dest = find_operand (insn, XINT (dest, 0), NULL);
if (GET_CODE (src) == MATCH_DUP
|| GET_CODE (src) == MATCH_OP_DUP
|| GET_CODE (src) == MATCH_PAR_DUP)
- src = find_operand (insn, XINT (src, 0));
+ src = find_operand (insn, XINT (src, 0), NULL);
dmode = GET_MODE (dest);
smode = GET_MODE (src);
diff --git a/gcc/gensupport.c b/gcc/gensupport.c
index 377b08d50a6..44e07eb06d5 100644
--- a/gcc/gensupport.c
+++ b/gcc/gensupport.c
@@ -1,5 +1,5 @@
/* Support routines for the various generation passes.
- Copyright (C) 2000, 2001, 2002, 2003
+ Copyright (C) 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/ggc-simple.c b/gcc/ggc-simple.c
index 2f75021f42d..4f8a4de9b43 100644
--- a/gcc/ggc-simple.c
+++ b/gcc/ggc-simple.c
@@ -124,6 +124,10 @@ extern void debug_ggc_balance (void);
#endif
static void tally_leaves (struct ggc_mem *, int, size_t *, size_t *);
+struct alloc_zone *rtl_zone = NULL;
+struct alloc_zone *tree_zone = NULL;
+struct alloc_zone *garbage_zone = NULL;
+
/* Insert V into the search tree. */
static inline void
@@ -159,6 +163,22 @@ tree_lookup (struct ggc_mem *v)
return 0;
}
+/* Typed allocation function. Does nothing special in this collector. */
+
+void *
+ggc_alloc_typed (enum gt_types_enum type ATTRIBUTE_UNUSED, size_t size)
+{
+ return ggc_alloc (size);
+}
+
+/* Zone allocation function. Does nothing special in this collector. */
+
+void *
+ggc_alloc_zone (size_t size, struct alloc_zone *zone ATTRIBUTE_UNUSED)
+{
+ return ggc_alloc (size);
+}
+
/* Alloc SIZE bytes of GC'able memory. If ZERO, clear the memory. */
void *
@@ -511,7 +531,8 @@ init_ggc_pch (void)
void
ggc_pch_count_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED,
void *x ATTRIBUTE_UNUSED,
- size_t size ATTRIBUTE_UNUSED)
+ size_t size ATTRIBUTE_UNUSED,
+ bool is_string ATTRIBUTE_UNUSED)
{
}
@@ -531,7 +552,8 @@ ggc_pch_this_base (struct ggc_pch_data *d ATTRIBUTE_UNUSED,
char *
ggc_pch_alloc_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED,
void *x ATTRIBUTE_UNUSED,
- size_t size ATTRIBUTE_UNUSED)
+ size_t size ATTRIBUTE_UNUSED,
+ bool is_string ATTRIBUTE_UNUSED)
{
return NULL;
}
@@ -546,7 +568,8 @@ void
ggc_pch_write_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED,
FILE *f ATTRIBUTE_UNUSED, void *x ATTRIBUTE_UNUSED,
void *newx ATTRIBUTE_UNUSED,
- size_t size ATTRIBUTE_UNUSED)
+ size_t size ATTRIBUTE_UNUSED,
+ bool is_string ATTRIBUTE_UNUSED)
{
}
diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c
index b9ad7334655..355414fcbbc 100644
--- a/gcc/ggc-zone.c
+++ b/gcc/ggc-zone.c
@@ -1,5 +1,6 @@
/* "Bag-of-pages" zone garbage collector for the GNU compiler.
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@redhat.com) and Daniel Berlin
(dberlin@dberlin.org)
diff --git a/gcc/graph.c b/gcc/graph.c
index 26c866d8291..e663f8e3fd6 100644
--- a/gcc/graph.c
+++ b/gcc/graph.c
@@ -1,5 +1,6 @@
/* Output routines for graphical representation.
- Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
This file is part of GCC.
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index d55c1c77732..4750d960948 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1,6 +1,6 @@
/* Instruction scheduling pass.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
diff --git a/gcc/hooks.c b/gcc/hooks.c
index 939ed844168..a8cd665a45f 100644
--- a/gcc/hooks.c
+++ b/gcc/hooks.c
@@ -1,5 +1,5 @@
/* General-purpose hooks.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
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
@@ -177,6 +177,13 @@ hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
}
bool
+hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
+ unsigned int *b ATTRIBUTE_UNUSED)
+{
+ return false;
+}
+
+bool
hook_bool_rtx_int_int_intp_false (rtx a ATTRIBUTE_UNUSED,
int b ATTRIBUTE_UNUSED,
int c ATTRIBUTE_UNUSED,
diff --git a/gcc/hooks.h b/gcc/hooks.h
index 77111155ba7..583b504bffe 100644
--- a/gcc/hooks.h
+++ b/gcc/hooks.h
@@ -1,5 +1,5 @@
/* General-purpose hooks.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
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
@@ -31,6 +31,7 @@ extern bool hook_bool_tree_hwi_hwi_tree_false (tree, HOST_WIDE_INT, HOST_WIDE_IN
extern bool hook_bool_tree_hwi_hwi_tree_true (tree, HOST_WIDE_INT, HOST_WIDE_INT,
tree);
extern bool hook_bool_rtx_false (rtx);
+extern bool hook_bool_uintp_uintp_false (unsigned int *, unsigned int *);
extern bool hook_bool_rtx_int_int_intp_false (rtx, int, int, int *);
extern bool hook_bool_constcharptr_size_t_false (const char *, size_t);
diff --git a/gcc/integrate.c b/gcc/integrate.c
index b5efc02b1a6..d45bbfce2a5 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1,6 +1,6 @@
/* Procedure integration for GCC.
Copyright (C) 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 8cb93760ea5..3e1a09f8b75 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,67 @@
+2004-02-26 Andrew Haley <aph@redhat.com>
+
+ * parse.y (check_interface_throws_clauses): Check for
+ !METHOD_INVISIBLE (iface_method).
+ * class.c (layout_class_methods): Check for CLASS_INTERFACE as
+ well as CLASS_ABSTRACT.
+
+2004-02-22 Matthias Klose <doko@debian.org>
+
+ Taken from mainline:
+
+ 2004-02-13 Geoffrey Keating <geoffk@apple.com>
+
+ * Make-lang.in: Install man pages under the same names
+ (possibly transformed) as the program they document.
+
+ 2004-02-16 Geoffrey Keating <geoffk@apple.com>
+
+ * Make-lang.in (java.install-man): Add extra dependencies.
+
+2004-02-07 Kazu Hirata <kazu@cs.umass.edu>
+
+ * typeck.c: Update copyright.
+
+2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
+
+ Make-lang.in (po-generated): Delete.
+
+2004-01-30 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).
+
+2004-01-28 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * expr.c (build_field_ref): Move variable
+ definition up.
+
+2004-01-28 Andrew Haley <aph@redhat.com>
+
+ * expr.c (build_field_ref): Widen field offset.
+
+2004-01-27 Andrew Haley <aph@redhat.com>
+
+ java/13273
+ * parse.y (check_interface_throws_clauses): Make sure class_decl
+ has been loaded.
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in: Replace $(docdir) with doc.
+ (java.info, java.srcinfo, java.man, java.srcman): New rules.
+ (java.install-man): Revamp rule.
+
+2004-01-19 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
+ GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
+ instead of deferred backquote.
+
+2004-01-16 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * typeck.c (find_method_in_interfaces): Move variable
+ definition up.
+
2004-01-16 Andrew Haley <aph@redhat.com>
PR java/13273:
@@ -46,7 +110,7 @@
using indirect dis[atch.
(java_decl_ok_for_sibcall): Use output_class, not current_class.
(java_get_callee_fndecl): Use class local atable.
- * jcf-parse.c
+ * jcf-parse.c
(always_initialize_class_p): Decl moved to java-tree.h.
(HANDLE_CLASS_INFO): Set output_class.
(read_class): Likewise.
@@ -94,13 +158,13 @@
Make otable, atable, and ctable class local rather than global.
(emit_catch_table): Make otable, atable, and ctable class local
rather than global.
-
+
2003-12-25 Andrew Pinski <pinskia@physics.uc.edu>
* parse.y (catch_clause_parameter): Fix typo.
PR java/13404
- * parse.y: (catch_clause_parameter): Return early if $3, aka
+ * parse.y: (catch_clause_parameter): Return early if $3, aka
formal_parameter, is null.
2003-12-20 Kazu Hirata <kazu@cs.umass.edu>
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index 23912e8ad9d..4e91eae0c99 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -41,9 +41,9 @@
# - define the names for selecting the language in LANGUAGES.
# Actual names to use when installing a native compiler.
-JAVA_INSTALL_NAME = `echo gcj|sed '$(program_transform_name)'`
-JAVA_TARGET_INSTALL_NAME = $(target_noncanonical)-`echo gcj|sed '$(program_transform_name)'`
-GCJH_TARGET_INSTALL_NAME = $(target_noncanonical)-`echo gcjh|sed '$(program_transform_name)'`
+JAVA_INSTALL_NAME := $(shell echo gcj|sed '$(program_transform_name)')
+JAVA_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcj|sed '$(program_transform_name)')
+GCJH_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcjh|sed '$(program_transform_name)')
GCJ = gcj
@@ -76,8 +76,6 @@ $(GCJ)-cross$(exeext): $(GCJ)$(exeext)
-rm -f $(GCJ)-cross$(exeext)
cp $(GCJ)$(exeext) $(GCJ)-cross$(exeext)
-po-generated: java/parse.c java/parse-scan.c
-
java.srcextra: java/parse.c java/parse-scan.c
-cp -p $^ $(srcdir)/java
@@ -161,12 +159,19 @@ java.tags: force
etags --include TAGS.sub --include ../TAGS.sub
-info:: $(docobjdir)/gcj.info
-dvi:: $(docobjdir)/gcj.dvi
-generated-manpages:: $(docobjdir)/gcj.1 $(docobjdir)/gcjh.1 \
- $(docobjdir)/jv-scan.1 $(docobjdir)/jcf-dump.1 \
- $(docobjdir)/gij.1 $(docobjdir)/jv-convert.1 \
- $(docobjdir)/rmic.1 $(docobjdir)/rmiregistry.1
+java.info: doc/gcj.info
+
+java.srcinfo: doc/gcj.info
+ -cp -p $^ $(srcdir)/doc
+
+dvi:: doc/gcj.dvi
+JAVA_MANFILES = doc/gcj.1 doc/gcjh.1 doc/jv-scan.1 doc/jcf-dump.1 doc/gij.1 \
+ doc/jv-convert.1 doc/rmic.1 doc/rmiregistry.1
+
+java.man: $(JAVA_MANFILES)
+
+java.srcman: $(JAVA_MANFILES)
+ -cp -p $^ $(srcdir)/doc
check-java :
@@ -355,17 +360,16 @@ java/java-tree-inline.o: tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(srcdir)/tree-inline.c -o $@
# Documentation
-$(docobjdir)/gcj.info: java/gcj.texi $(docdir)/include/fdl.texi \
- $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi stmp-docobjdir
+doc/gcj.info: java/gcj.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi
if test "x$(BUILD_INFO)" = xinfo; then \
rm -f doc/gcj.info*; \
$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir)/include -o $@ $<; \
else true; fi
-$(docobjdir)/gcj.dvi: java/gcj.texi $(docdir)/include/fdl.texi \
- $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi \
- stmp-docobjdir
- $(TEXI2DVI) -I $(docdir)/include -o $@ $<
+doc/gcj.dvi: java/gcj.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/gcc-common.texi
+ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $<
.INTERMEDIATE: gcj.pod gcjh.pod jv-scan.pod jcf-dump.pod gij.pod \
jv-convert.pod rmic.pod rmiregistry.pod
@@ -388,30 +392,20 @@ rmiregistry.pod: java/gcj.texi
-$(TEXI2POD) -D rmiregistry < $< > $@
# Install the man pages.
-java.install-man: installdirs $(GENERATED_JAVA_MANPAGES)
- -if [ -f $(GCJ)$(exeext) ]; then \
- rm -f $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
- $(INSTALL_DATA) $(docobjdir)/gcj.1 $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
- chmod a-x $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
- fi
- -rm -f $(DESTDIR)$(man1dir)/gcjh$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/gcjh.1 $(DESTDIR)$(man1dir)/gcjh$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/gcjh$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/jv-scan.1 $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/jcf-dump.1 $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/gij$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/gij.1 $(DESTDIR)$(man1dir)/gij$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/gij$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/jv-convert.1 $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/rmic$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/rmic.1 $(DESTDIR)$(man1dir)/rmic$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/rmic$(man1ext)
- -rm -f $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
- -$(INSTALL_DATA) $(docobjdir)/rmiregistry.1 $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
- -chmod a-x $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
+java.install-man: installdirs \
+ $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext) \
+ $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS:%=doc/%.1) \
+ doc/gij.1 doc/jv-convert.1 doc/rmic.1 doc/rmiregistry.1
+ for tool in $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS) \
+ gij jv-convert rmic rmiregistry ; do \
+ tool_transformed_name=`echo $$tool|sed '$(program_transform_name)'`; \
+ man_name=$(DESTDIR)$(man1dir)/$${tool_transformed_name}$(man1ext); \
+ rm -f $$man_name ; \
+ $(INSTALL_DATA) doc/$${tool}.1 $$man_name; \
+ chmod a-x $$man_name ; \
+ done
+
+$(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext): doc/gcj.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 58cf778ecba..fd4c7cb0954 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -2053,7 +2053,7 @@ void
layout_class_methods (tree this_class)
{
tree method_decl, dtable_count;
- tree super_class;
+ tree super_class, type_name;
if (TYPE_NVIRTUALS (this_class))
return;
@@ -2070,7 +2070,8 @@ layout_class_methods (tree this_class)
else
dtable_count = integer_zero_node;
- if (CLASS_ABSTRACT (TYPE_NAME (this_class)))
+ type_name = TYPE_NAME (this_class);
+ if (CLASS_ABSTRACT (type_name) || CLASS_INTERFACE (type_name))
{
/* An abstract class can have methods which are declared only in
an implemented interface. These are called "Miranda
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 6b1c0325b0d..53aa45b272a 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -1523,7 +1523,9 @@ build_field_ref (tree self_value, tree self_class, tree name)
tree field_offset =
build (ARRAY_REF, integer_type_node, TYPE_OTABLE_DECL (output_class),
otable_index);
- tree address
+ tree address;
+ field_offset = fold (convert (sizetype, field_offset));
+ address
= fold (build (PLUS_EXPR,
build_pointer_type (TREE_TYPE (field_decl)),
self_value, field_offset));
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 20e6f9add99..c0a88a1dbec 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -6485,10 +6485,20 @@ check_interface_throws_clauses (tree check_class_decl, tree class_decl)
{
for (; class_decl != NULL_TREE; class_decl = CLASSTYPE_SUPER (class_decl))
{
- tree bases = TYPE_BINFO_BASETYPES (class_decl);
- int iface_len = TREE_VEC_LENGTH (bases) - 1;
+ tree bases;
+ int iface_len;
int i;
+ if (! CLASS_LOADED_P (class_decl))
+ {
+ if (CLASS_FROM_SOURCE_P (class_decl))
+ safe_layout_class (class_decl);
+ else
+ load_class (class_decl, 1);
+ }
+
+ bases = TYPE_BINFO_BASETYPES (class_decl);
+ iface_len = TREE_VEC_LENGTH (bases) - 1;
for (i = iface_len; i > 0; --i)
{
tree interface = BINFO_TYPE (TREE_VEC_ELT (bases, i));
@@ -6514,7 +6524,8 @@ check_interface_throws_clauses (tree check_class_decl, tree class_decl)
Also, multiple inheritance with conflicting throws
clauses is fine in the absence of a concrete
implementation. */
- if (method != NULL_TREE && !METHOD_ABSTRACT (method))
+ if (method != NULL_TREE && !METHOD_ABSTRACT (method)
+ && !METHOD_INVISIBLE (iface_method))
{
tree method_wfl = DECL_FUNCTION_WFL (method);
check_throws_clauses (method, method_wfl, iface_method);
diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c
index dc8a8c56255..7537c6c4332 100644
--- a/gcc/java/typeck.c
+++ b/gcc/java/typeck.c
@@ -1,5 +1,5 @@
/* Handle types for the GNU compiler for the Java(TM) language.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -797,6 +797,7 @@ find_method_in_interfaces (tree searched_class, int flags, tree method_name,
tree child =
TREE_VEC_ELT (TYPE_BINFO_BASETYPES (searched_class), i);
tree iclass = BINFO_TYPE (child);
+ tree method;
/* If the superinterface hasn't been loaded yet, do so now. */
if (CLASS_FROM_SOURCE_P (iclass))
@@ -806,7 +807,7 @@ find_method_in_interfaces (tree searched_class, int flags, tree method_name,
/* First, we look in ICLASS. If that doesn't work we'll
recursively look through all its superinterfaces. */
- tree method = shallow_find_method (iclass, flags, method_name,
+ method = shallow_find_method (iclass, flags, method_name,
signature, signature_builder);
if (method != NULL_TREE)
return method;
diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h
index c9ba0420f1d..7caab7809be 100644
--- a/gcc/langhooks-def.h
+++ b/gcc/langhooks-def.h
@@ -1,5 +1,5 @@
/* Default macros to initialize the lang_hooks data structure.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 5bce71057cc..a965193978d 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -1,5 +1,5 @@
/* Default language-specific hooks.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index fcc078ccf33..199b79f237a 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -1,5 +1,5 @@
/* The lang_hooks data structure.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/libgcov.c b/gcc/libgcov.c
index ffc3d54752c..d5c97a2854d 100644
--- a/gcc/libgcov.c
+++ b/gcc/libgcov.c
@@ -79,6 +79,7 @@ void __gcov_merge_delta (gcov_type *counters __attribute__ ((unused)),
#if GCOV_LOCKED
#include <fcntl.h>
#include <errno.h>
+#include <sys/stat.h>
#endif
#ifdef L_gcov
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 6524f6c7959..61ff7fbc6b2 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -1,6 +1,6 @@
/* Allocate registers within a basic block, for GNU compiler.
Copyright (C) 1987, 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/loop-init.c b/gcc/loop-init.c
index 0b882d9e163..0b3949ae076 100644
--- a/gcc/loop-init.c
+++ b/gcc/loop-init.c
@@ -1,5 +1,5 @@
/* Loop optimizer initialization routines.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -28,6 +28,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "cfgloop.h"
#include "cfglayout.h"
+static void fixup_loop_exit_succesor (basic_block, basic_block);
+
/* Initialize loop optimizer. */
struct loops *
@@ -90,11 +92,52 @@ loop_optimizer_init (FILE *dumpfile)
return loops;
}
+/* The first basic block is moved after the second in the reorder chain. */
+static void
+fixup_loop_exit_succesor (basic_block exit_succ, basic_block latch)
+{
+ basic_block bb = exit_succ;
+ basic_block bb1 = latch;
+
+ if (!(bb && bb->rbi->next))
+ return;
+
+ if (!bb1)
+ return;
+
+
+ if (bb && bb->rbi->next)
+ {
+ basic_block c = ENTRY_BLOCK_PTR->next_bb;
+
+ while (c->rbi->next != bb)
+ c = c->rbi->next;
+
+ c->rbi->next = bb->rbi->next;
+ }
+
+ if(bb1->rbi->next == NULL)
+ {
+ bb1->rbi->next=bb;
+ bb->rbi->next=NULL;
+ }
+ else
+
+ {
+ basic_block tmp;
+
+ tmp = bb1->rbi->next;
+ bb1->rbi->next = bb;
+ bb->rbi->next = tmp;
+ }
+}
+
/* Finalize loop optimizer. */
void
loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
{
basic_block bb;
+ unsigned int i;
/* Finalize layout changes. */
/* Make chain. */
@@ -105,6 +148,63 @@ loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
/* Another dump. */
flow_loops_dump (loops, dumpfile, NULL, 1);
+ /* For loops ending with a branch and count instruction, move the basic
+ block found before the unrolling on the fallthru path of this branch,
+ after the unrolled code. This will allow branch simplification. */
+ for (i = 1; i < loops->num; i++)
+ {
+ struct loop *loop = loops->parray[i];
+ struct loop_desc *desc;
+ basic_block loop_real_latch, bb, bb_exit;
+ edge e;
+
+ if (loop == NULL)
+ continue;
+ if (!loop->simple)
+ continue;
+ if (!loop->has_desc)
+ continue;
+
+ if (loop->lpt_decision.decision != LPT_UNROLL_RUNTIME)
+ continue;
+
+ desc = &loop->desc;
+ if (desc == NULL)
+ continue;
+ if (loop->latch->pred == NULL)
+ continue;
+
+ loop_real_latch = loop->latch->pred->src;
+
+
+ if (desc->postincr)
+ continue;
+ if (!is_bct_cond (BB_END (loop_real_latch)))
+ continue;
+
+ for (e = loop_real_latch->succ; e ; e = e->succ_next)
+ if (e->flags & EDGE_FALLTHRU)
+ break;
+
+ if (e == NULL)
+ continue;
+
+ bb_exit = e->dest;
+
+ bb = NULL;
+
+ /* Leave the case of the bb_exit falling through to exit to
+ fixed_fallthru_exit_predecessor */
+ for (e = EXIT_BLOCK_PTR->pred; e; e = e->pred_next)
+ if (e->flags & EDGE_FALLTHRU)
+ bb = e->src;
+
+ if (bb_exit == bb)
+ continue;
+
+ fixup_loop_exit_succesor (bb_exit, loop->latch);
+ }
+
/* Clean up. */
flow_loops_free (loops);
free_dominance_info (CDI_DOMINATORS);
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c
index 6c796af577c..aae175720fe 100644
--- a/gcc/loop-unroll.c
+++ b/gcc/loop-unroll.c
@@ -1,5 +1,5 @@
/* Loop unrolling and peeling.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -30,6 +30,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "params.h"
#include "output.h"
#include "expr.h"
+/* We need to use the macro exact_log2. */
+#include "toplev.h"
/* This pass performs loop unrolling and peeling. We only perform these
optimizations on innermost loops (with single exception) because
@@ -79,6 +81,8 @@ static void peel_loop_completely (struct loops *, struct loop *);
static void unroll_loop_stupid (struct loops *, struct loop *);
static void unroll_loop_constant_iterations (struct loops *, struct loop *);
static void unroll_loop_runtime_iterations (struct loops *, struct loop *);
+static void expand_bct (edge, int);
+static bool discard_increment (struct loop *);
/* Unroll and/or peel (depending on FLAGS) LOOPS. */
void
@@ -399,6 +403,11 @@ peel_loop_completely (struct loops *loops, struct loop *loop)
unsigned n_remove_edges, i;
edge *remove_edges;
struct loop_desc *desc = &loop->desc;
+ bool discard_inc = false;
+ bool is_bct;
+
+ if ((is_bct = is_bct_cond (BB_END (loop->desc.out_edge->src))))
+ discard_inc = discard_increment (loop);
npeel = desc->niter;
@@ -421,12 +430,21 @@ peel_loop_completely (struct loops *loops, struct loop *loop)
free (wont_exit);
+ /* Expand the branch and count. */
+ if (is_bct)
+ for (i = 0; i < n_remove_edges; i++)
+ expand_bct (remove_edges[i], discard_inc);
+
/* Remove the exit edges. */
for (i = 0; i < n_remove_edges; i++)
remove_path (loops, remove_edges[i]);
free (remove_edges);
}
+ /* Expand the branch and count. */
+ if (is_bct)
+ expand_bct (desc->in_edge, discard_inc);
+
/* Now remove the unreachable part of the last iteration and cancel
the loop. */
remove_path (loops, desc->in_edge);
@@ -555,6 +573,8 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
edge *remove_edges;
unsigned max_unroll = loop->lpt_decision.times;
struct loop_desc *desc = &loop->desc;
+ bool discard_inc = false;
+ bool is_bct;
niter = desc->niter;
@@ -569,6 +589,31 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
remove_edges = xcalloc (max_unroll + exit_mod + 1, sizeof (edge));
n_remove_edges = 0;
+ /* For a loop ending with a branch and count for which the increment
+ of the count register will be discarded, adjust the initialization of
+ the count register. */
+ if ((is_bct = is_bct_cond (BB_END (desc->out_edge->src)))
+ && (discard_inc = discard_increment (loop)))
+ {
+ rtx ini_var;
+
+ rtx init_code;
+ int n_peel, new_bct_value;
+
+ /* Get expression for number of iterations. */
+ start_sequence ();
+
+ n_peel = (niter+1) % (max_unroll+1);
+ new_bct_value = (niter+1 - n_peel) / (max_unroll+1) ;
+ ini_var = GEN_INT (new_bct_value);
+
+ emit_move_insn (desc->var, ini_var);
+ init_code = get_insns ();
+ end_sequence ();
+
+ loop_split_edge_with (loop_preheader_edge (loop), init_code);
+ }
+
if (desc->postincr)
{
/* Counter is incremented after the exit test; leave exit test
@@ -632,6 +677,11 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
free (wont_exit);
+ /* Expand the branch and count. */
+ if (is_bct)
+ for (i = 0; i < n_remove_edges; i++)
+ expand_bct (remove_edges[i], discard_inc);
+
/* Remove the edges. */
for (i = 0; i < n_remove_edges; i++)
remove_path (loops, remove_edges[i]);
@@ -757,6 +807,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop)
bool extra_zero_check, last_may_exit;
unsigned max_unroll = loop->lpt_decision.times;
struct loop_desc *desc = &loop->desc;
+ bool discard_inc = false;
+ bool is_bct;
/* Remember blocks whose dominators will have to be updated. */
dom_bbs = xcalloc (n_basic_blocks, sizeof (basic_block));
@@ -811,6 +863,35 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop)
GEN_INT (max_unroll),
NULL_RTX, 0, OPTAB_LIB_WIDEN);
+ /* For a loop ending with a branch and count for which the increment
+ of the count register will be discarded, adjust the initialization of
+ the count register. */
+ if ((is_bct = is_bct_cond (BB_END (desc->out_edge->src)))
+ && (discard_inc = discard_increment (loop)))
+ {
+ rtx count, count2, count_unroll_mod;
+ int count_unroll;
+
+ /* start_sequence (); */
+
+ count = count_loop_iterations (desc, NULL, NULL);
+
+ count_unroll = loop->lpt_decision.times+1;
+
+
+
+ count_unroll_mod = GEN_INT (exact_log2 (count_unroll));
+ count = expand_simple_binop (GET_MODE (desc->var), LSHIFTRT,
+ count, count_unroll_mod,
+ 0, 0, OPTAB_LIB_WIDEN);
+
+ count2 = expand_simple_binop (GET_MODE (desc->var), PLUS,
+ count, GEN_INT (2),
+ 0, 0, OPTAB_LIB_WIDEN);
+
+ emit_move_insn (desc->var, count2);
+ }
+
init_code = get_insns ();
end_sequence ();
@@ -856,7 +937,24 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop)
j = n_peel - i - (extra_zero_check ? 0 : 1);
p = REG_BR_PROB_BASE / (i + 2);
- preheader = loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX);
+ /* If modulo is zero do not jumo to the header of the unrolled loops.
+ Jump instead to the last branch and count that precedes it. */
+ if (is_bct && discard_inc && (j == 0))
+ {
+ basic_block lastbb = loop_preheader_edge(loop)->src;
+ rtx split_after;
+
+ /* Skip dummy basic blocks generated during the unrolling. */
+ while (!is_bct_cond (BB_END (lastbb)))
+ lastbb = lastbb->pred->src;
+
+ split_after = PREV_INSN (BB_END (lastbb));
+
+ preheader = split_loop_bb (lastbb , split_after)->dest;
+ }
+ else
+ preheader = loop_split_edge_with (loop_preheader_edge (loop),
+ NULL_RTX);
label = block_label (preheader);
start_sequence ();
do_compare_rtx_and_jump (copy_rtx (niter), GEN_INT (j), EQ, 0,
@@ -925,6 +1023,11 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop)
free (wont_exit);
+ /* Expand the branch and count. */
+ if (is_bct)
+ for (i = 0; i < n_remove_edges; i++)
+ expand_bct (remove_edges[i], discard_inc);
+
/* Remove the edges. */
for (i = 0; i < n_remove_edges; i++)
remove_path (loops, remove_edges[i]);
@@ -1162,3 +1265,119 @@ unroll_loop_stupid (struct loops *loops, struct loop *loop)
fprintf (rtl_dump_file, ";; Unrolled loop %d times, %i insns\n",
nunroll, num_loop_insns (loop));
}
+
+/* Expand a bct instruction in a branch and an increment.
+ If flag_inc is set, the induction variable does not need to be
+ incremented. */
+void expand_bct (edge e, int flag_inc)
+{
+ rtx bct_insn = BB_END (e->src);
+ rtx cmp;
+ rtx inc;
+ rtx seq;
+
+ rtx tgt;
+ rtx condition;
+ rtx label;
+ rtx reg;
+ rtx jump;
+ rtx pattern = PATTERN(bct_insn);
+
+ if (!(is_bct_cond(bct_insn)))
+ return;
+
+ inc = get_var_set_from_bct (bct_insn);
+ cmp = XVECEXP (pattern, 0, 0);
+ reg = SET_DEST (inc);
+
+ start_sequence ();
+ if (!flag_inc)
+ {
+ tgt = force_operand (XEXP (inc, 1), XEXP (inc, 0));
+ if (tgt != XEXP (inc, 0))
+ emit_move_insn (XEXP (inc, 0), tgt);
+ }
+
+ condition = XEXP (SET_SRC (cmp), 0);
+ label = XEXP (SET_SRC (cmp), 1);
+
+ do_compare_rtx_and_jump (copy_rtx (reg), XEXP (condition, 1),
+ GET_CODE (condition), 0,
+ GET_MODE (reg), NULL_RTX, NULL_RTX,
+ label);
+ jump = get_last_insn ();
+ JUMP_LABEL (jump) = label;
+ seq = get_insns ();
+ end_sequence ();
+ emit_insn_after (seq, bct_insn);
+
+ delete_insn (bct_insn);
+
+ return;
+}
+
+/* Check that the increment of the count register can be discarded. */
+bool
+discard_increment (struct loop *loop)
+{
+ struct loop_desc *desc = &loop->desc;
+ rtx inc, set_src, reg;
+ rtx bct_insn;
+ unsigned int i;
+ basic_block *body;
+
+ bct_insn = BB_END (desc->out_edge->src);
+ if (!is_bct_cond (bct_insn))
+ abort();
+
+ inc = get_var_set_from_bct (bct_insn);
+
+ /* Check that inc is of the form reg = reg - 1. */
+ reg = SET_DEST (inc);
+ set_src = SET_SRC (inc);
+
+ if (GET_CODE (set_src) != PLUS)
+ return false;
+
+ if (!rtx_equal_p (XEXP (set_src, 0), reg))
+ return false;
+
+ if (!CONSTANT_P (XEXP (set_src, 1)))
+ return false;
+
+ if (INTVAL (XEXP (set_src, 1)) != -1)
+ return false;
+
+ /* We need to check that the register has no other uses beside the branch and
+ count. */
+ body = get_loop_body (loop);
+ for(i=0; i < loop->num_nodes; i++)
+ {
+ if (reg_mentioned_p (desc->var, BB_HEAD (body[i])))
+ return false;
+
+ if (body[i] != desc->out_edge->src)
+ if (reg_mentioned_p (desc->var, BB_END (body[i])))
+ return false;
+
+ if (reg_used_between_p (desc->var, BB_HEAD (body[i]), BB_END (body[i])))
+ return false;
+ }
+
+ /* Check that the branch and count ends the latch. */
+ if (desc->out_edge->src != loop->latch)
+ {
+ rtx insn;
+
+ /* Latch is a dummy block generated by loop-init. */
+ if (BRANCH_EDGE(desc->out_edge->src)->dest != loop->latch)
+ return false;
+
+ for (insn = BB_HEAD (loop->latch); insn != NEXT_INSN (BB_END (loop->latch));
+ insn = NEXT_INSN (insn))
+ if (INSN_P (insn)) return false;
+ }
+
+ return true;
+}
+
diff --git a/gcc/loop.c b/gcc/loop.c
index 0892724b4af..b4e3e418dd6 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -65,6 +65,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "insn-flags.h"
#include "optabs.h"
#include "cfgloop.h"
+#include "ggc.h"
/* Not really meaningful values, but at least something. */
#ifndef SIMULTANEOUS_PREFETCHES
@@ -534,7 +535,10 @@ loop_optimize (rtx f, FILE *dumpfile, int flags)
struct loop *loop = &loops->array[i];
if (! loop->invalid && loop->end)
- scan_loop (loop, flags);
+ {
+ scan_loop (loop, flags);
+ ggc_collect ();
+ }
}
end_alias_analysis ();
@@ -1465,12 +1469,18 @@ force_movables (struct loop_movables *movables)
m = 0;
/* Increase the priority of the moving the first insn
- since it permits the second to be moved as well. */
+ since it permits the second to be moved as well.
+ Likewise for insns already forced by the first insn. */
if (m != 0)
{
+ struct movable *m2;
+
m->forces = m1;
- m1->lifetime += m->lifetime;
- m1->savings += m->savings;
+ for (m2 = m1; m2; m2 = m2->forces)
+ {
+ m2->lifetime += m->lifetime;
+ m2->savings += m->savings;
+ }
}
}
}
@@ -8005,6 +8015,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl;
rtx reg;
+ enum machine_mode mode;
rtx jump_label;
rtx final_value;
rtx start_value;
@@ -8425,6 +8436,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
/* Save some info needed to produce the new insns. */
reg = bl->biv->dest_reg;
+ mode = GET_MODE (reg);
jump_label = condjump_label (PREV_INSN (loop_end));
new_add_val = GEN_INT (-INTVAL (bl->biv->add_val));
@@ -8436,12 +8448,12 @@ check_dbra_loop (struct loop *loop, int insn_count)
if (initial_value == const0_rtx
&& GET_CODE (comparison_value) == CONST_INT)
{
- start_value = GEN_INT (comparison_val - add_adjust);
+ start_value
+ = gen_int_mode (comparison_val - add_adjust, mode);
loop_insn_hoist (loop, gen_move_insn (reg, start_value));
}
else if (GET_CODE (initial_value) == CONST_INT)
{
- enum machine_mode mode = GET_MODE (reg);
rtx offset = GEN_INT (-INTVAL (initial_value) - add_adjust);
rtx add_insn = gen_add3_insn (reg, comparison_value, offset);
@@ -8457,7 +8469,6 @@ check_dbra_loop (struct loop *loop, int insn_count)
}
else if (! add_adjust)
{
- enum machine_mode mode = GET_MODE (reg);
rtx sub_insn = gen_sub3_insn (reg, comparison_value,
initial_value);
@@ -8515,7 +8526,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
/* Add new compare/branch insn at end of loop. */
start_sequence ();
emit_cmp_and_jump_insns (reg, const0_rtx, cmp_code, NULL_RTX,
- GET_MODE (reg), 0,
+ mode, 0,
XEXP (jump_label, 0));
tem = get_insns ();
end_sequence ();
diff --git a/gcc/loop.h b/gcc/loop.h
index 2a7f3ec816e..f2f870ce276 100644
--- a/gcc/loop.h
+++ b/gcc/loop.h
@@ -1,5 +1,5 @@
/* Loop optimization definitions for GCC
- Copyright (C) 1991, 1995, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1991, 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
@@ -428,4 +428,5 @@ extern rtx loop_insn_sink (const struct loop *, rtx);
extern rtx loop_insn_hoist (const struct loop *, rtx);
/* Forward declarations for non-static functions declared in doloop.c. */
+extern rtx doloop_condition_get (rtx);
extern int doloop_optimize (const struct loop *);
diff --git a/gcc/mips-tfile.c b/gcc/mips-tfile.c
index 314ed53fab7..9b333063e34 100644
--- a/gcc/mips-tfile.c
+++ b/gcc/mips-tfile.c
@@ -3,7 +3,7 @@
in the form of comments (the mips assembler does not support
assembly access to debug information).
Copyright (C) 1991, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Meissner (meissner@cygnus.com).
This file is part of GCC.
@@ -4774,7 +4774,7 @@ main (int argc, char **argv)
if (version)
{
printf (_("mips-tfile (GCC) %s\n"), version_string);
- fputs (_("Copyright (C) 2003 Free Software Foundation, Inc.\n"), stdout);
+ fputs ("Copyright (C) 2004 Free Software Foundation, Inc.\n", stdout);
fputs (_("This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"),
stdout);
diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in
index 70b9e4def22..5d88a44c50e 100644
--- a/gcc/objc/Make-lang.in
+++ b/gcc/objc/Make-lang.in
@@ -72,8 +72,6 @@ objc/objc-act.o : objc/objc-act.c \
objc/objc-act.h input.h function.h output.h debug.h langhooks.h \
$(LANGHOOKS_DEF_H) gt-objc-objc-act.h gtype-objc.h
-po-generated: objc/objc-parse.c
-
objc.srcextra: objc/objc-parse.c objc/objc-parse.y
-cp -p $^ $(srcdir)/objc
@@ -96,6 +94,10 @@ objc.all.build:
objc.all.cross:
objc.start.encap:
objc.rest.encap:
+objc.info:
+objc.man:
+objc.srcinfo:
+objc.srcman:
objc.tags: force
cd $(srcdir)/objc; etags -o TAGS.sub *.y *.c *.h; \
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index c552bada9de..c1352922c7e 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -5890,21 +5890,18 @@ build_objc_method_call (int super_flag, tree method_prototype,
if (flag_next_runtime)
{
-#ifdef STRUCT_VALUE
/* If we are returning a struct in memory, and the address
of that memory location is passed as a hidden first
argument, then change which messenger entry point this
expr will call. NB: Note that sender_cast remains
unchanged (it already has a struct return type). */
- if ((TREE_CODE (ret_type) == RECORD_TYPE
- || TREE_CODE (ret_type) == UNION_TYPE)
-#if defined (DEFAULT_PCC_STRUCT_RETURN) && DEFAULT_PCC_STRUCT_RETURN == 0
- && RETURN_IN_MEMORY (ret_type)
-#endif
- && STRUCT_VALUE == 0)
+ if (!targetm.calls.struct_value_rtx (0, 0)
+ && (TREE_CODE (ret_type) == RECORD_TYPE
+ || TREE_CODE (ret_type) == UNION_TYPE)
+ && targetm.calls.return_in_memory (ret_type, 0))
sender = (super_flag ? umsg_super_stret_decl :
flag_nil_receivers ? umsg_stret_decl : umsg_nonnil_stret_decl);
-#endif
+
method_params = tree_cons (NULL_TREE, lookup_object,
tree_cons (NULL_TREE, selector,
method_params));
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 44d4b83ff8a..3d85a06fc38 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -1,6 +1,6 @@
/* Expand the basic unary and binary arithmetic operations, for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -3651,6 +3651,16 @@ prepare_cmp_insn (rtx *px, rtx *py, enum rtx_code *pcomparison, rtx size,
return;
}
+ /* Don't allow operands to the compare to trap, as that can put the
+ compare and branch in different basic blocks. */
+ if (flag_non_call_exceptions)
+ {
+ if (may_trap_p (x))
+ x = force_reg (mode, x);
+ if (may_trap_p (y))
+ y = force_reg (mode, y);
+ }
+
*px = x;
*py = y;
if (can_compare_p (*pcomparison, mode, purpose))
diff --git a/gcc/optabs.h b/gcc/optabs.h
index a85ce3035cb..4f39e359b79 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -1,5 +1,5 @@
/* Definitions for code generation pass of GNU compiler.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/opts.c b/gcc/opts.c
index e87accea947..ff50ad19739 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -448,7 +448,8 @@ handle_options (unsigned int argc, const char **argv, unsigned int lang_mask)
/* Interpret "-" or a non-switch as a file name. */
if (opt[0] != '-' || opt[1] == '\0')
{
- main_input_filename = opt;
+ if (main_input_filename == NULL)
+ main_input_filename = opt;
add_input_filename (opt);
n = 1;
continue;
@@ -832,6 +833,10 @@ common_handle_option (size_t scode, const char *arg,
flag_pie = value + value;
break;
+ case OPT_fabi_version_:
+ flag_abi_version = value;
+ break;
+
case OPT_falign_functions:
align_functions = !value;
break;
@@ -1445,6 +1450,9 @@ common_handle_option (size_t scode, const char *arg,
case OPT_fwritable_strings:
flag_writable_strings = value;
+ if (flag_writable_strings)
+ inform ("-fwritable-strings is deprecated; "
+ "see documentation for details");
break;
case OPT_fzero_initialized_in_bss:
diff --git a/gcc/output.h b/gcc/output.h
index 9fbc726a665..05a3743726f 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -1,7 +1,7 @@
/* Declarations for insn-output.c. These functions are defined in recog.c,
final.c, and varasm.c.
Copyright (C) 1987, 1991, 1994, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -71,7 +71,7 @@ extern void final (rtx, FILE *, int, int);
/* The final scan for one insn, INSN. Args are same as in `final', except
that INSN is the insn being scanned. Value returned is the next insn to
be scanned. */
-extern rtx final_scan_insn (rtx, FILE *, int, int, int);
+extern rtx final_scan_insn (rtx, FILE *, int, int, int, int *);
/* Replace a SUBREG with a REG or a MEM, based on the thing it is a
subreg of. */
diff --git a/gcc/params.def b/gcc/params.def
index 3f0d15b1854..dc826634af7 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -63,7 +63,7 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
"max-inline-insns-auto",
"The maximum number of instructions when automatically inlining",
- 150)
+ 100)
/* For languages that (still) use the RTL inliner, we can specify
limits for the RTL inliner separately.
@@ -110,7 +110,7 @@ DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH,
DEFPARAM(PARAM_LARGE_FUNCTION_INSNS,
"large-function-insns",
"The size of function body to be considered large",
- 10000)
+ 3000)
DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH,
"large-function-growth",
"Maximal growth due to inlining of large function (in percent)",
@@ -133,7 +133,12 @@ DEFPARAM(PARAM_MAX_GCSE_PASSES,
1)
/* This parameter limits the number of insns in a loop that will be unrolled,
- and by how much the loop is unrolled. */
+ and by how much the loop is unrolled.
+
+ This limit should be at most half of the peeling limits: loop unroller
+ decides to not unroll loops that iterate fewer than 2*number of allowed
+ unrollings and thus we would have loops that are neither peeled or unrooled
+ otherwise. */
DEFPARAM(PARAM_MAX_UNROLLED_INSNS,
"max-unrolled-insns",
"The maximum number of instructions to consider to unroll in a loop",
@@ -153,7 +158,7 @@ DEFPARAM(PARAM_MAX_UNROLL_TIMES,
DEFPARAM(PARAM_MAX_PEELED_INSNS,
"max-peeled-insns",
"The maximum number of insns of a peeled loop",
- 120)
+ 400)
/* The maximum number of peelings of a single loop. */
DEFPARAM(PARAM_MAX_PEEL_TIMES,
"max-peel-times",
@@ -163,7 +168,7 @@ DEFPARAM(PARAM_MAX_PEEL_TIMES,
DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS,
"max-completely-peeled-insns",
"The maximum number of insns of a completely peeled loop",
- 120)
+ 400)
/* The maximum number of peelings of a single loop that is peeled completely. */
DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES,
"max-completely-peel-times",
@@ -173,7 +178,7 @@ DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES,
DEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS,
"max-once-peeled-insns",
"The maximum number of insns of a peeled loop that rolls only once",
- 200)
+ 400)
/* The maximum number of insns of an unswitched loop. */
DEFPARAM(PARAM_MAX_UNSWITCH_INSNS,
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index eb49a0d5542..1665b090239 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,62 @@
+2004-02-25 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fr.po: Update.
+
+2004-02-19 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fr.po: Update.
+
+2004-02-18 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fr.po: Update.
+
+2004-02-17 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fr.po: Update.
+
+2004-02-16 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fr.po: Update.
+
+ * de.po: Update.
+
+2004-02-12 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * ca.po: New file.
+
+2004-02-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
+2004-02-09 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
+2004-02-06 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc.pot: Regenerate.
+
+2004-02-01 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
+2004-01-25 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * EXCLUDES: Update.
+ * gcc.pot: Regenerate.
+
+2004-01-25 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
+2004-01-25 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
+2004-01-17 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * de.po: Update.
+
2003-12-31 Joseph S. Myers <jsm@polyomino.org.uk>
* de.po: Update.
diff --git a/gcc/po/EXCLUDES b/gcc/po/EXCLUDES
index 97153871fc4..e9c5db11015 100644
--- a/gcc/po/EXCLUDES
+++ b/gcc/po/EXCLUDES
@@ -1,29 +1,38 @@
# This file lists all the sources which should *not* be scanned for
# strings to translate. Only the first word on each line is used; the
-# rest is ignored. Only files with an extension of .c or .h are
+# rest is ignored. Only files with an extension of .c or .h or .def are
# examined to begin with.
# These files are part of libgcc, or target headers provided by gcc.
-config/rs6000/sol-c0.c
-config/float-c4x.h
-config/float-i128.h
-config/float-i32.h
-config/float-i386.h
-config/float-i64.h
-config/float-m68k.h
-config/float-sh.h
-config/float-sparc.h
-config/float-vax.h
+config/darwin-crt2.c
+config/fp-bit.c
+config/fp-bit.h
+config/vxlib.c
crtstuff.c
-frame.h
gbl-ctors.h
-libgcc1.c
-libgcc1-test.c
+gcov-io.h
+gcov-iov.c
+gthr-aix.h
+gthr-dce.h
+gthr-gnat.c
+gthr-gnat.h
+gthr-posix.c
+gthr-posix.h
+gthr-rtems.h
+gthr-single.h
+gthr-solaris.h
+gthr-vxworks.h
+gthr-win32.h
+gthr.h
libgcc2.c
libgcc2.h
+libgcov.c
limitx.h
limity.h
longlong.h
+unwind-c.c
+unwind-dw2-fde-darwin.c
+unwind-dw2-fde-glibc.c
unwind-dw2-fde.c
unwind-dw2-fde.h
unwind-dw2.c
@@ -34,19 +43,22 @@ unwind.h
# These programs are meant to be executed only by GCC maintainers or
# installers. Such files do not need to be translated, as these
# people typically need to be able to read English anyway.
-enquire.c
fix-header.c
gen-protos.c
genattr.c
genattrtab.c
+genautomata.c
gencheck.c
gencodes.c
+genconditions.c
genconfig.c
genconstants.c
genemit.c
genextract.c
genflags.c
gengenrtl.c
+gengtype.c
+genmodes.c
genopinit.c
genoutput.c
genpeep.c
diff --git a/gcc/po/ca.po b/gcc/po/ca.po
new file mode 100644
index 00000000000..082c1a51a2f
--- /dev/null
+++ b/gcc/po/ca.po
@@ -0,0 +1,20826 @@
+# translation of gcc-3.2-ca.po to Catalan
+# Catalan translation of gcc.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gcc package.
+# Gilles MATEU <mateu.gilles@wanadoo.fr>, 2002.
+# Gilles MATEU <mateu.gilles@wanadoo.fr>, 2003.
+# Gilles MATEU <mateu.gilles@wanadoo.fr>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gcc 3.3.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-10-24 13:20+0200\n"
+"PO-Revision-Date: 2004-01-30 00:03+0000\n"
+"Last-Translator: Mateu Gilles <mateu.gilles@wanadoo.fr>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: attribs.c:185
+#, c-format
+msgid "`%s' attribute directive ignored"
+msgstr "s'ignora la directiva d'atribut \"%s\""
+
+#: attribs.c:193
+#, c-format
+msgid "wrong number of arguments specified for `%s' attribute"
+msgstr "es va especificar el nombre equivocat d'arguments per a l'atribut \"%s\""
+
+#: attribs.c:210
+#, c-format
+msgid "`%s' attribute does not apply to types"
+msgstr "l'atribut \"%s\" no s'aplica a tipus"
+
+#: attribs.c:247
+#, c-format
+msgid "`%s' attribute only applies to function types"
+msgstr "l'atribut \"%s\" nomes s'aplica a tipus funcions"
+
+#: attribs.c:404 c-common.c:5275 c-common.c:5297 c-common.c:5319
+#: c-common.c:5350 c-common.c:5372 c-common.c:5397 c-common.c:5423
+#: c-common.c:5453 c-common.c:5491 c-common.c:5538 c-common.c:5568
+#: c-common.c:5598 c-common.c:5621 c-common.c:5878 c-common.c:5900
+#: c-common.c:5943 c-common.c:6020 c-common.c:6076 c-common.c:6103
+#: c-common.c:6186 c-common.c:6220 c-common.c:6574 config/arm/arm.c:2101
+#: config/arm/arm.c:2128 config/avr/avr.c:4774 config/h8300/h8300.c:3693
+#: config/h8300/h8300.c:3718 config/i386/i386.c:1403 config/i386/winnt.c:78
+#: config/ip2k/ip2k.c:3204
+#, c-format
+msgid "`%s' attribute ignored"
+msgstr "s'ignora l'atribut \"%s\""
+
+#: builtins.c:285
+msgid "offset outside bounds of constant string"
+msgstr "el desplaçament fora dels límits de la constant de cadena"
+
+#: builtins.c:765
+msgid "second arg to `__builtin_prefetch' must be a constant"
+msgstr "el segon argument de \"__builtin_prefetch\" deu ser una constant"
+
+#: builtins.c:772
+msgid "invalid second arg to __builtin_prefetch; using zero"
+msgstr "segon argument de __builtin_prefetch invalid; s'utilitzara zero"
+
+#: builtins.c:779
+msgid "third arg to `__builtin_prefetch' must be a constant"
+msgstr "el tercer argument de \"__builtin_prefetch\" deu ser una constant"
+
+#: builtins.c:786
+msgid "invalid third arg to __builtin_prefetch; using zero"
+msgstr "tercer argument de __builtin_prefetch invalid; s'utilitzara zero"
+
+#. ??? 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:2875
+msgid "__builtin_saveregs not supported by this target"
+msgstr "no es dona suport a _builtin_saveregs en aquest objectiu"
+
+#: builtins.c:2917
+msgid "argument of `__builtin_args_info' must be constant"
+msgstr "l'argument de \"__builtin_args_info\" deu ser constant"
+
+#: builtins.c:2923
+msgid "argument of `__builtin_args_info' out of range"
+msgstr "l'argument de \"__builtin_args_info\" està fora de rang"
+
+#: builtins.c:2929
+msgid "missing argument in `__builtin_args_info'"
+msgstr "falta un argument en \"__builtin_args_info\""
+
+#: builtins.c:2960
+msgid "`va_start' used in function with fixed args"
+msgstr "es va usar \"va_start\" en una funció amb arguments fixos"
+
+#: builtins.c:2979
+msgid "second parameter of `va_start' not last named argument"
+msgstr "el segon paràmetre de \"va_start\" no és l'últim argument nomenat"
+
+#. 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:2984
+msgid "`__builtin_next_arg' called without an argument"
+msgstr "es va cridar a \"__builtin_next_arg\" sense un argument"
+
+#: builtins.c:3070
+msgid "too many arguments to function `va_start'"
+msgstr "massa arguments per a la funció \"va_start\""
+
+#: builtins.c:3172
+msgid "first argument to `va_arg' not of type `va_list'"
+msgstr "el primer argument per a \"va_arg\" no és del tipus \"va_list\""
+
+#. Unfortunately, this is merely undefined, rather than a constraint
+#. violation, so we cannot make this an error. If this call is never
+#. executed, the program is still strictly conforming.
+#: builtins.c:3204
+#, c-format
+msgid "`%s' is promoted to `%s' when passed through `...'"
+msgstr "\"%s\" es promou a \"%s\" quan passa a través de \"...\""
+
+#: builtins.c:3209
+#, c-format
+msgid "(so you should pass `%s' not `%s' to `va_arg')"
+msgstr "(així que deu passar \"%s\" i no \"%s\" a \"va_arg\")"
+
+#: builtins.c:3340
+msgid "invalid arg to `__builtin_frame_address'"
+msgstr "argument invàlid per a \"__builtin_frame_address\""
+
+#: builtins.c:3342
+msgid "invalid arg to `__builtin_return_address'"
+msgstr "argument invàlid per a \"__builtin_return_address\""
+
+#: builtins.c:3356
+msgid "unsupported arg to `__builtin_frame_address'"
+msgstr "argument sense suport per a \"__builtin_frame_address\""
+
+#: builtins.c:3358
+msgid "unsupported arg to `__builtin_return_address'"
+msgstr "argument sense suport per a \"__builtin_return_address\""
+
+#: builtins.c:3530
+msgid "second arg to `__builtin_expect' must be a constant"
+msgstr "el segon argument de \"__builtin_expect\" deu ser una constant"
+
+#: builtins.c:4028
+msgid "__builtin_longjmp second argument must be 1"
+msgstr "el segon argument de _builtin_longjump deu ser 1"
+
+#. just do library call, if unknown builtin
+#: builtins.c:4092 c-common.c:4459
+#, c-format
+msgid "built-in function `%s' not currently supported"
+msgstr "no se suporta actualment la funció interna \"%s\""
+
+#: builtins.c:4165
+msgid "target format does not support infinity"
+msgstr "el format objectiu no té suport per a infinit"
+
+#: c-common.c:1168
+#, c-format
+msgid "`%s' is not defined outside of function scope"
+msgstr "no es defineix \"%s\" fora de l'àmbit de la funció"
+
+#: c-common.c:1189
+#, c-format
+msgid "string length `%d' is greater than the length `%d' ISO C%d compilers are required to support"
+msgstr "la longitud de la cadena \"%d\" és major que la longitud `%d\" que es requereix que els compiladors ISO C %d donin suport"
+
+#: c-common.c:1247
+msgid "concatenation of string literals with __FUNCTION__ is deprecated"
+msgstr "us depreciada de la concatenació de cadenes literals amb __FUNCTION__"
+
+#: c-common.c:1343
+msgid "overflow in constant expression"
+msgstr "desbordament en la constant implícita"
+
+#: c-common.c:1364
+msgid "integer overflow in expression"
+msgstr "desbordament enter en l'expressió"
+
+#: c-common.c:1373
+msgid "floating point overflow in expression"
+msgstr "desbordament de coma flotant en l'expressió"
+
+#: c-common.c:1379
+msgid "vector overflow in expression"
+msgstr "desbordament de vector flotant en l'expressió"
+
+#. This detects cases like converting -129 or 256 to unsigned char.
+#: c-common.c:1402
+msgid "large integer implicitly truncated to unsigned type"
+msgstr "enter gran truncat implícitament al tipus unsigned"
+
+#: c-common.c:1404
+msgid "negative integer implicitly converted to unsigned type"
+msgstr "enter negatiu truncat implícitament al tipus unsigned"
+
+#: c-common.c:1452
+msgid "overflow in implicit constant conversion"
+msgstr "desbordament en la conversió implícita de constant"
+
+#: c-common.c:1600
+#, c-format
+msgid "operation on `%s' may be undefined"
+msgstr "l'operació sobre \"%s\" pot estar indefinida"
+
+#: c-common.c:1891
+msgid "expression statement has incomplete type"
+msgstr "la declaració de l'expressió té tipus de dada incompleta"
+
+#: c-common.c:1924
+msgid "case label does not reduce to an integer constant"
+msgstr "l'etiqueta de \"casi\" no es redueix a una constant entera"
+
+#: c-common.c:2228
+msgid "invalid truth-value expression"
+msgstr "expressió de valor veritable invàlida"
+
+#: c-common.c:2279
+#, c-format
+msgid "invalid operands to binary %s"
+msgstr "operadors invàlids per al binari %s"
+
+#: c-common.c:2513
+msgid "comparison is always false due to limited range of data type"
+msgstr "la comparança sempre és falsa a causa del rang limitat del tipus de dades"
+
+#: c-common.c:2515
+msgid "comparison is always true due to limited range of data type"
+msgstr "la comparança sempre és veritable a causa del rang limitat del tipus de dades"
+
+#: c-common.c:2585
+msgid "comparison of unsigned expression >= 0 is always true"
+msgstr "la comparança d'una expressió unsigned >= 0 sempre és veritable"
+
+#: c-common.c:2594
+msgid "comparison of unsigned expression < 0 is always false"
+msgstr "la comparança d'una expressió unsigned < 0 sempre és falsa"
+
+#: c-common.c:2641
+msgid "pointer of type `void *' used in arithmetic"
+msgstr "es va usar un punter de tipus \"void *\" en l'aritmètica"
+
+#: c-common.c:2647
+msgid "pointer to a function used in arithmetic"
+msgstr "es va usar un punter a una funció en l'aritmètica"
+
+#: c-common.c:2653
+msgid "pointer to member function used in arithmetic"
+msgstr "es va usar un punter a una funció membre en l'aritmètica"
+
+#: c-common.c:2659
+msgid "pointer to a member used in arithmetic"
+msgstr "es va usar un punter a un membre en l'aritmètica"
+
+#: c-common.c:2746 f/com.c:14762
+msgid "struct type value used where scalar is required"
+msgstr "s'usa un valor de tipus struct quan es requereix un escalar"
+
+#: c-common.c:2750 f/com.c:14766
+msgid "union type value used where scalar is required"
+msgstr "s'usa un valor de tipus union quan es requereix un escalar"
+
+#: c-common.c:2754 f/com.c:14770
+msgid "array type value used where scalar is required"
+msgstr "s'usa un valor de tipus matriu quan es requereix un escalar"
+
+#: c-common.c:2874 f/com.c:14903
+msgid "suggest parentheses around assignment used as truth value"
+msgstr "se suggereixen parèntesi al voltant de l'assignació usada com valor veritable"
+
+#: c-common.c:2918 c-common.c:2950
+msgid "invalid use of `restrict'"
+msgstr "ús invàlid de \"restrict\""
+
+#: c-common.c:3064
+msgid "invalid application of `sizeof' to a function type"
+msgstr "aplicació invalida de \"sizeof\" a una expressió de tipus de funció"
+
+#: c-common.c:3074
+#, c-format
+msgid "invalid application of `%s' to a void type"
+msgstr "applicació invàlida de \"%s\" a un tipus void"
+
+#: c-common.c:3080
+#, c-format
+msgid "invalid application of `%s' to an incomplete type"
+msgstr "aplicació invàlida de \"%s\" a un tipus de dada incompleta"
+
+#: c-common.c:3121
+msgid "`__alignof' applied to a bit-field"
+msgstr "\"__alignof\" aplicat a un camp de bits"
+
+#: c-common.c:3618
+#, c-format
+msgid "cannot disable built-in function `%s'"
+msgstr "no es pot desactivar la funcio interna \"%s\""
+
+#: c-common.c:3787 c-typeck.c:1748
+#, c-format
+msgid "too few arguments to function `%s'"
+msgstr "massa pocs arguments per a la funció \"%s\""
+
+#: c-common.c:3793 c-typeck.c:1601
+#, c-format
+msgid "too many arguments to function `%s'"
+msgstr "massa arguments per a la funció \"%s\""
+
+#: c-common.c:3812
+#, c-format
+msgid "non-floating-point argument to function `%s'"
+msgstr "arguments que no són de coma flotant per a la funció \"%s\""
+
+#: c-common.c:4081
+msgid "pointers are not permitted as case values"
+msgstr "els apuntadores no són permesos com valors casi"
+
+#: c-common.c:4087
+msgid "ISO C++ forbids range expressions in switch statements"
+msgstr "ISO C++ prohibeix un rang d'expressions en les declaracions switch"
+
+#: c-common.c:4089
+msgid "ISO C forbids range expressions in switch statements"
+msgstr "ISO C prohibeix un rang d'expressions en les declaracions switch"
+
+#: c-common.c:4119
+msgid "empty range specified"
+msgstr "es va especificar un rang buit"
+
+#: c-common.c:4170
+msgid "duplicate (or overlapping) case value"
+msgstr "valor de casi duplicat (o translapat)"
+
+#: c-common.c:4172
+msgid "this is the first entry overlapping that value"
+msgstr "aquesta és la primera entrada que translapa aquest valor"
+
+#: c-common.c:4176
+msgid "duplicate case value"
+msgstr "valor de casi duplicat"
+
+#: c-common.c:4177
+msgid "previously used here"
+msgstr "es va usar prèviament aquí"
+
+#: c-common.c:4181
+msgid "multiple default labels in one switch"
+msgstr "múltiples etiquetes per omissió en un sol switch"
+
+#: c-common.c:4182
+msgid "this is the first default label"
+msgstr "aquesta és la primera etiqueta per omissió"
+
+#: c-common.c:4210
+msgid "ISO C++ forbids taking the address of a label"
+msgstr "ISO C++ prohibeix prendre l'adreça d'una etiqueta"
+
+#: c-common.c:4212
+msgid "ISO C forbids taking the address of a label"
+msgstr "SO C prohibeix prendre l'adreça d'una etiqueta"
+
+#: c-common.c:5235
+#, c-format
+msgid "declaration of `%s' shadows %s"
+msgstr "la declaració de \"%s\" enfosque \"%s\""
+
+#: c-common.c:5654
+#, c-format
+msgid "unknown machine mode `%s'"
+msgstr "es desconeix la manera de màquina \"%s\""
+
+#: c-common.c:5657
+#, c-format
+msgid "no data type for mode `%s'"
+msgstr "no hi ha tipus de dades per a la manera \"%s\""
+
+#: c-common.c:5666 c-common.c:6316
+#, c-format
+msgid "unable to emulate '%s'"
+msgstr "no es pot emular \"%s\""
+
+#: c-common.c:5702
+msgid "section attribute cannot be specified for local variables"
+msgstr "l'atribut de secció no pot ser especificat per a les variables locals"
+
+#: c-common.c:5713
+#, c-format
+msgid "section of `%s' conflicts with previous declaration"
+msgstr "la secció de \"%s\" causa conflictes amb la declaració prèvia"
+
+#: c-common.c:5722
+#, c-format
+msgid "section attribute not allowed for `%s'"
+msgstr "no es permet un atribut de secció per a \"%s\""
+
+#: c-common.c:5729
+msgid "section attributes are not supported for this target"
+msgstr "atributs de secció no suportats per aquest objectiu"
+
+#: c-common.c:5771
+msgid "requested alignment is not a constant"
+msgstr "l'alineació sol-licitada no és una constant"
+
+#: c-common.c:5776
+msgid "requested alignment is not a power of 2"
+msgstr "l'alineació sol-licitada no és una potència de 2"
+
+#: c-common.c:5781
+msgid "requested alignment is too large"
+msgstr "l'alineació sol-licitada és massa gran"
+
+#: c-common.c:5808
+#, c-format
+msgid "alignment may not be specified for `%s'"
+msgstr "l'alineació no pot ser especificada per a \"%s\""
+
+#: c-common.c:5853
+#, c-format
+msgid "`%s' defined both normally and as an alias"
+msgstr "\"%s\" definit normalment i com un alies"
+
+#: c-common.c:5863
+msgid "alias arg not a string"
+msgstr "l'argument d'alies no és una cadena"
+
+#: c-common.c:5910
+msgid "visibility arg not a string"
+msgstr "l'argument de·visibilitat no és una cadena"
+
+#: c-common.c:5919
+msgid "visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""
+msgstr "l'argument de visibilitat deu ser \"default\", \"hidden\", \"protected\" o \"internal\""
+
+#: c-common.c:5953
+msgid "tls_model arg not a string"
+msgstr "l'argument tls_model no és una cadena"
+
+#: c-common.c:5962
+msgid "tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
+msgstr "l'argument de tls_model deu ser \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
+
+#: c-common.c:5987 c-common.c:6043
+#, c-format
+msgid "`%s' attribute applies only to functions"
+msgstr "l'atribut \"%s\" s'aplica solament a funcions"
+
+#: c-common.c:5994 c-common.c:6050
+#, c-format
+msgid "can't set `%s' attribute after definition"
+msgstr "no es pot establir l'atribut \"%s\" després de la definició"
+
+#: c-common.c:6114
+msgid "cleanup arg not an identifier"
+msgstr "l'objecte·cridat·no·és·un identificador"
+
+#: c-common.c:6121
+msgid "cleanup arg not a function"
+msgstr "l'objecte cridat no és una funció"
+
+#: c-common.c:6183
+#, c-format
+msgid "`%s' attribute ignored for `%s'"
+msgstr "atribut \"%s\" ignorat per a \"%s\""
+
+#: c-common.c:6248
+#, c-format
+msgid "invalid vector type for attribute `%s'"
+msgstr "tipus de vector invalid per a l'atribut \"%s\""
+
+#: c-common.c:6272 c-common.c:6304
+msgid "no vector mode with the size and type specified could be found"
+msgstr "no es pot trobar un mode vector amb la grandària i el tipus especificat "
+
+#: c-common.c:6403
+msgid "nonnull attribute without arguments on a non-prototype"
+msgstr "un atribut nonnull sense arguments en un que no és prototip"
+
+#: c-common.c:6418
+#, c-format
+msgid "nonnull argument has invalid operand number (arg %lu)"
+msgstr "un argument nonnull té un nombre d'operadors invàlid (arg %lu)"
+
+#: c-common.c:6437
+#, c-format
+msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
+msgstr "un argument nonnull amb un nombre d'operants fora de rang (arg %lu, operand %lu)"
+
+#: c-common.c:6445
+#, c-format
+msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
+msgstr "un argument nonnull fa referència a un operant que no és punter (arg %lu, operand %lu)"
+
+#: c-common.c:6531
+#, c-format
+msgid "null argument where non-null required (arg %lu)"
+msgstr "argument null on es requereix un que no sigui null (arg %lu)"
+
+#: c-convert.c:80 c-typeck.c:988 c-typeck.c:4059 cp/typeck.c:1615
+#: cp/typeck.c:5939
+msgid "void value not ignored as it ought to be"
+msgstr "valor void no ignorat com deuria ser"
+
+#: c-convert.c:112 java/typeck.c:150
+msgid "conversion to non-scalar type requested"
+msgstr "es va sol·licitar conversió a tipus no escalar"
+
+#: c-decl.c:340
+#, c-format
+msgid "array `%s' assumed to have one element"
+msgstr "s'assumeix que la matriu \"%s\" té un element"
+
+#: c-decl.c:526
+#, c-format
+msgid "`struct %s' incomplete in scope ending here"
+msgstr "el \"struct %s\" incomplet en l'àmbit acaba aquí"
+
+#: c-decl.c:529
+#, c-format
+msgid "`union %s' incomplete in scope ending here"
+msgstr "el \"union %s\" incomplet en l'àmbit acaba aquí"
+
+#: c-decl.c:532
+#, c-format
+msgid "`enum %s' incomplete in scope ending here"
+msgstr "el \"enum %s\" incomplet en l'àmbit acaba aquí"
+
+#: c-decl.c:646 c-decl.c:771 java/decl.c:1403
+#, c-format
+msgid "label `%s' used but not defined"
+msgstr "s'usa l'etiqueta \"%s\" però no està definida"
+
+#: c-decl.c:652 c-decl.c:778 java/decl.c:1409
+#, c-format
+msgid "label `%s' defined but not used"
+msgstr "l'etiqueta \"%s\" està definida però no s'usa"
+
+#: c-decl.c:893 cp/decl.c:3335
+#, c-format
+msgid "function `%s' redeclared as inline"
+msgstr "funció \"%s\" re declarada com inline"
+
+#: c-decl.c:895 cp/decl.c:3337
+#, c-format
+msgid "previous declaration of function `%s' with attribute noinline"
+msgstr "declaració prèvia de la funció \"%s\" amb l'atribut noinline"
+
+#: c-decl.c:902 cp/decl.c:3344
+#, c-format
+msgid "function `%s' redeclared with attribute noinline"
+msgstr "funció \"%s\" re-declarada amb l'atribut noinline"
+
+#: c-decl.c:904 cp/decl.c:3346
+#, c-format
+msgid "previous declaration of function `%s' was inline"
+msgstr "la declaració prèvia de la funció \"%s\" va ser inline"
+
+#: c-decl.c:933 c-decl.c:979
+#, c-format
+msgid "shadowing built-in function `%s'"
+msgstr "enfosquin la funció interna \"%s\""
+
+#: c-decl.c:935
+#, c-format
+msgid "shadowing library function `%s'"
+msgstr "enfosquin la funció de biblioteca \"%s\""
+
+#: c-decl.c:941
+#, c-format
+msgid "library function `%s' declared as non-function"
+msgstr "la funció de biblioteca \"%s\" no és declarada com funció"
+
+#: c-decl.c:945 c-decl.c:948
+#, c-format
+msgid "built-in function `%s' declared as non-function"
+msgstr "la funció interna \"%s\" no és declarada com funció"
+
+#: c-decl.c:952 objc/objc-act.c:2384 objc/objc-act.c:6154
+#, c-format
+msgid "`%s' redeclared as different kind of symbol"
+msgstr "\"%s\" redeclarat com un tipus diferent de símbol"
+
+#: c-decl.c:953 c-decl.c:1144 c-decl.c:1158 c-decl.c:1165 c-decl.c:1310
+#: objc/objc-act.c:2386 objc/objc-act.c:6156 objc/objc-act.c:6211
+#, c-format
+msgid "previous declaration of `%s'"
+msgstr "declaració prèvia de \"%s\""
+
+#. If types don't match for a built-in, throw away the built-in.
+#: c-decl.c:1048
+#, c-format
+msgid "conflicting types for built-in function `%s'"
+msgstr "tipus en conflicte per a la funció interna \"%s\""
+
+#: c-decl.c:1091 c-decl.c:1110
+#, c-format
+msgid "conflicting types for `%s'"
+msgstr "tipus en conflicte per a \"%s\""
+
+#: c-decl.c:1133
+msgid "a parameter list with an ellipsis can't match an empty parameter name list declaration"
+msgstr "Una llista de paràmetres amb una el·lipse no pot coincidir amb una declaració de nom de llista de paràmetres buida."
+
+#: c-decl.c:1139
+msgid "an argument type that has a default promotion can't match an empty parameter name list declaration"
+msgstr "Un tipus d'argument que té una promoció per omissió no pot coincidir amb una declaració de nom de llista de paràmetres buida."
+
+#: c-decl.c:1157
+#, c-format
+msgid "thread-local declaration of `%s' follows non thread-local declaration"
+msgstr "declaració thread-local per a \"%s\" a continuació d'una no thread-local"
+
+#: c-decl.c:1164
+#, c-format
+msgid "non thread-local declaration of `%s' follows thread-local declaration"
+msgstr "declaració no thread-local per a \"%s\" a continuació d'una thread-local"
+
+#: c-decl.c:1175 c-decl.c:1198
+#, c-format
+msgid "redefinition of `%s'"
+msgstr "redefinició de \"%s\""
+
+#: c-decl.c:1178
+#, c-format
+msgid "redeclaration of `%s'"
+msgstr "re declaració de \"%s\""
+
+#: c-decl.c:1181
+#, c-format
+msgid "conflicting declarations of `%s'"
+msgstr "declaracions de \"%s\" en conflicte"
+
+#: c-decl.c:1225
+#, c-format
+msgid "prototype for `%s' follows"
+msgstr "el prototip per a \"%s\" a continuació"
+
+#: c-decl.c:1226 c-decl.c:1234 c-decl.c:1245
+msgid "non-prototype definition here"
+msgstr "la definició del no prototip aquí"
+
+#: c-decl.c:1233
+#, c-format
+msgid "prototype for `%s' follows and number of arguments doesn't match"
+msgstr "el prototip per a \"%s\" a continuació i el nombre d'arguments no coincideixen"
+
+#: c-decl.c:1243
+#, c-format
+msgid "prototype for `%s' follows and argument %d doesn't match"
+msgstr "el prototip per a \"%s\" a continuació i l'argument %d no coincideixen"
+
+#: c-decl.c:1261
+#, c-format
+msgid "`%s' declared inline after being called"
+msgstr "\"%s\" declarat inline abans de ser cridat"
+
+#: c-decl.c:1267
+#, c-format
+msgid "`%s' declared inline after its definition"
+msgstr "\"%s\" declarat inline després de la seva definició"
+
+#: c-decl.c:1274
+#, c-format
+msgid "static declaration for `%s' follows non-static"
+msgstr "la declaració static per a \"%s\" a continuació d'una no static"
+
+#: c-decl.c:1282
+#, c-format
+msgid "non-static declaration for `%s' follows static"
+msgstr "la declaració no static per a \"%s\" a continuació d'una static"
+
+#: c-decl.c:1289
+#, c-format
+msgid "const declaration for `%s' follows non-const"
+msgstr "la declaració const per a \"%s\" a continuació d'una no const"
+
+#: c-decl.c:1296
+#, c-format
+msgid "type qualifiers for `%s' conflict with previous decl"
+msgstr "qualificators de tipus per a \"%s\" generen conflicte amb la declaració prèvia"
+
+#: c-decl.c:1309
+#, c-format
+msgid "redundant redeclaration of `%s' in same scope"
+msgstr "declaració redundant de \"%s\" en el mateix àmbit"
+
+#: c-decl.c:1619 java/decl.c:1102
+#, c-format
+msgid "declaration of `%s' shadows a parameter"
+msgstr "la declaració de \"%s\" enfosquí un paràmetre"
+
+#: c-decl.c:1622 java/decl.c:1105
+#, c-format
+msgid "declaration of `%s' shadows a symbol from the parameter list"
+msgstr "la declaració de \"%s\" enfosquí un símbol de la llista de paràmetres"
+
+#: c-decl.c:1643 cp/decl.c:4479
+msgid "a parameter"
+msgstr "un paràmetre"
+
+#: c-decl.c:1645 cp/decl.c:4496
+msgid "a previous local"
+msgstr "una declaració local prèvia"
+
+#. XXX shadow warnings in outer-more namespaces
+#: c-decl.c:1649 cp/decl.c:4500
+msgid "a global declaration"
+msgstr "una declaració global"
+
+#: c-decl.c:1693
+#, c-format
+msgid "nested extern declaration of `%s'"
+msgstr "declaració extern niada de \"%s\""
+
+#: c-decl.c:1712 java/decl.c:1055
+#, c-format
+msgid "`%s' used prior to declaration"
+msgstr "s'usa \"%s\" previ a la declaració"
+
+#: c-decl.c:1726 c-decl.c:1901
+#, c-format
+msgid "`%s' was declared implicitly `extern' and later `static'"
+msgstr "\"%s\" es va declarar implícitament \"extern\" i després \"static\""
+
+#: c-decl.c:1829 cp/decl.c:4336
+msgid "type mismatch with previous external decl"
+msgstr "no coincideixen els tipus amb la declaració externa prèvia"
+
+#: c-decl.c:1830
+#, c-format
+msgid "previous external decl of `%s'"
+msgstr "declaració externa prèvia de \"%s\""
+
+#: c-decl.c:1843
+msgid "type mismatch with previous implicit declaration"
+msgstr "no coincideixen els tipus amb la declaració implícita prèvia"
+
+#: c-decl.c:1845
+#, c-format
+msgid "previous implicit declaration of `%s'"
+msgstr "declaració implícita prèvia de \"%s\""
+
+#: c-decl.c:1880
+#, c-format
+msgid "`%s' was previously implicitly declared to return `int'"
+msgstr "\"%s\" va ser declarat prèvia i implícitament per a retornar \"int\""
+
+#: c-decl.c:1905
+#, c-format
+msgid "`%s' was declared `extern' and later `static'"
+msgstr "\"%s\" va ser declarat \"extern\" i després \"static\""
+
+#: c-decl.c:1929
+#, c-format
+msgid "extern declaration of `%s' doesn't match global one"
+msgstr "la declaració externa de \"%s\" no coincideix amb la global"
+
+#: c-decl.c:1971
+#, c-format
+msgid "`%s' locally external but globally static"
+msgstr "\"%s\" és externa localment però estàtica globalment"
+
+#: c-decl.c:2095
+#, c-format
+msgid "function `%s' was previously declared within a block"
+msgstr "la funció \"%s\" va ser declarada prèviament dintre d'un bloc"
+
+#: c-decl.c:2115 c-decl.c:2117
+#, c-format
+msgid "implicit declaration of function `%s'"
+msgstr "declaració implícita de la funció \"%s\""
+
+#: c-decl.c:2196
+#, c-format
+msgid "label %s referenced outside of any function"
+msgstr "l'etiqueta %s és referenciada fora de qualsevol funció"
+
+#: c-decl.c:2253
+#, c-format
+msgid "duplicate label declaration `%s'"
+msgstr "declaració de l'etiqueta \"%s\" duplicada"
+
+#: c-decl.c:2256
+msgid "this is a previous declaration"
+msgstr "aquesta és una declaració prèvia"
+
+#: c-decl.c:2679
+msgid "unnamed struct/union that defines no instances"
+msgstr "struct/union sense nom que no defineix cap instància"
+
+#: c-decl.c:2698
+msgid "useless keyword or type name in empty declaration"
+msgstr "paraules claus inútils o noms de tipus en una declaració buida"
+
+#: c-decl.c:2705
+msgid "two types specified in one empty declaration"
+msgstr "es van especificar dos tipus en una declaració buida"
+
+#: c-decl.c:2710 c-parse.y:753 c-parse.y:755 parse.y:766 parse.y:1853
+#: objc-parse.y:799 objc-parse.y:801 objc-parse.y:3042
+msgid "empty declaration"
+msgstr "declaració buida"
+
+#: c-decl.c:2740
+msgid "ISO C90 does not support `static' or type qualifiers in parameter array declarators"
+msgstr "ISO C90 no dóna suport a \"static\" o qualificadors de tipus dins matrius de declaradors de parametres"
+
+#: c-decl.c:2742
+msgid "ISO C90 does not support `[*]' array declarators"
+msgstr "ISO C90 no dóna suport a declaradors de parametres \"[*]\""
+
+#: c-decl.c:2745
+msgid "GCC does not yet properly implement `[*]' array declarators"
+msgstr "GCC no implementa encara correctament declaradors de parametres \"[*]\""
+
+#: c-decl.c:2764
+msgid "static or type qualifiers in abstract declarator"
+msgstr "static o calificador de tipus en un declarador abstracte"
+
+#: c-decl.c:2838
+#, c-format
+msgid "`%s' is usually a function"
+msgstr "\"%s\" generalment és una funció"
+
+#: c-decl.c:2847
+#, c-format
+msgid "typedef `%s' is initialized (use __typeof__ instead)"
+msgstr "typedef \"%s\" té valor inicial (usi __typeof__ en lloc)"
+
+#: c-decl.c:2853
+#, c-format
+msgid "function `%s' is initialized like a variable"
+msgstr "la funció \"%s\" té valor inicial com una variable"
+
+#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
+#: c-decl.c:2860
+#, c-format
+msgid "parameter `%s' is initialized"
+msgstr "el paràmetre \"%s\" té valor inicial"
+
+#: c-decl.c:2880 c-typeck.c:4895
+msgid "variable-sized object may not be initialized"
+msgstr "un objecte de grandària variable no pot tenir valor inicial"
+
+#: c-decl.c:2886
+#, c-format
+msgid "variable `%s' has initializer but incomplete type"
+msgstr "la variable \"%s\" té assignació de valor inicial, però tipus de dada incompleta"
+
+#: c-decl.c:2892
+#, c-format
+msgid "elements of array `%s' have incomplete type"
+msgstr "alguns elements de la matriu \"%s\" tenen tipus de dada incompleta"
+
+#: c-decl.c:2905
+#, c-format
+msgid "declaration of `%s' has `extern' and is initialized"
+msgstr "la declaració de \"%s\" té \"extern\" i té valor inicial"
+
+#: c-decl.c:2954 c-decl.c:5828 cp/decl.c:7760 cp/decl.c:14339
+#, c-format
+msgid "inline function `%s' given attribute noinline"
+msgstr "ha donat un atribut noinline a la funció inline \"%s\""
+
+#: c-decl.c:3028
+#, c-format
+msgid "initializer fails to determine size of `%s'"
+msgstr "el iniciador no va poder determinar la grandària de \"%s\""
+
+#: c-decl.c:3033
+#, c-format
+msgid "array size missing in `%s'"
+msgstr "falta la grandària de la matriu en %s"
+
+#: c-decl.c:3049
+#, c-format
+msgid "zero or negative size array `%s'"
+msgstr "matriu \"%s\" de grandària zero o negatiu"
+
+#: c-decl.c:3077
+#, c-format
+msgid "storage size of `%s' isn't known"
+msgstr "no es coneix la grandària d'emmagatzematge de \"%s\""
+
+#: c-decl.c:3087
+#, c-format
+msgid "storage size of `%s' isn't constant"
+msgstr "la grandària d'emmagatzematge de \"%s\" no és constant"
+
+#: c-decl.c:3147
+#, c-format
+msgid "ignoring asm-specifier for non-static local variable `%s'"
+msgstr "s'ignora el especificador asm per a la variable local no estàtica \"%s\""
+
+#: c-decl.c:3247
+#, c-format
+msgid "ISO C forbids parameter `%s' shadowing typedef"
+msgstr "ISO C prohibeix l'enfosquiment del paràmetre \"%s\" de typedef"
+
+#: c-decl.c:3592 cp/decl.c:10880
+msgid "`long long long' is too long for GCC"
+msgstr "\"long long long\" és massa llarg per a GCC"
+
+#: c-decl.c:3597
+msgid "ISO C90 does not support `long long'"
+msgstr "ISO C90 no dóna suport a \"long long\""
+
+#: c-decl.c:3606 c-decl.c:3609 cp/decl.c:10885
+#, c-format
+msgid "duplicate `%s'"
+msgstr "\"%s\" duplicat"
+
+#: c-decl.c:3619 cp/decl.c:10892
+msgid "`__thread' before `extern'"
+msgstr "\"__thread\" abans \"extern\""
+
+#: c-decl.c:3621 cp/decl.c:10894
+msgid "`__thread' before `static'"
+msgstr "\"__thread\" abans \"static\""
+
+#: c-decl.c:3629 cp/decl.c:10921
+#, c-format
+msgid "two or more data types in declaration of `%s'"
+msgstr "dos o més tipus de dades en la declaració de \"%s\""
+
+#: c-decl.c:3649 cp/decl.c:10926
+#, c-format
+msgid "`%s' fails to be a typedef or built in type"
+msgstr "\"%s\" falla al ser un typedef o un tipus intern del compilador"
+
+#: c-decl.c:3688
+#, c-format
+msgid "type defaults to `int' in declaration of `%s'"
+msgstr "el tipus de dada per omissió és \"int\" en la declaració de \"%s\""
+
+#: c-decl.c:3717
+#, c-format
+msgid "both long and short specified for `%s'"
+msgstr "s'especifica long i short al mateix temps per a \"%s\""
+
+#: c-decl.c:3721 cp/decl.c:11041
+#, c-format
+msgid "long or short specified with char for `%s'"
+msgstr "s'especifica long o short amb char per a \"%s\""
+
+#: c-decl.c:3728 cp/decl.c:11045
+#, c-format
+msgid "long or short specified with floating type for `%s'"
+msgstr "s'especifica long o short amb tipus floating per a \"%s\""
+
+#: c-decl.c:3731
+msgid "the only valid combination is `long double'"
+msgstr "l'única combinació vàlida és \"long double\""
+
+#: c-decl.c:3737
+#, c-format
+msgid "both signed and unsigned specified for `%s'"
+msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\""
+
+#: c-decl.c:3739 cp/decl.c:11034
+#, c-format
+msgid "long, short, signed or unsigned invalid for `%s'"
+msgstr "long, short, signed o unsigned invàlids per a \"%s\""
+
+#: c-decl.c:3745 cp/decl.c:11054
+#, c-format
+msgid "long, short, signed or unsigned used invalidly for `%s'"
+msgstr "ús invàlid de long, short, signed o unsigned per a \"%s\""
+
+#: c-decl.c:3763 cp/decl.c:11075
+#, c-format
+msgid "complex invalid for `%s'"
+msgstr "complex invàlid per a \"%s\""
+
+#: c-decl.c:3805
+msgid "ISO C90 does not support complex types"
+msgstr "ISO C90 no té suport per a tipus complexos"
+
+#: c-decl.c:3817
+msgid "ISO C does not support plain `complex' meaning `double complex'"
+msgstr "ISO C no té suport per a \"complex\" simples que signifiquen \"double complex\""
+
+#: c-decl.c:3823 c-decl.c:3835
+msgid "ISO C does not support complex integer types"
+msgstr "ISO C no dóna suport a tipus enters complexos"
+
+#: c-decl.c:3850 c-decl.c:4316 cp/decl.c:11688
+msgid "duplicate `const'"
+msgstr "\"const\" duplicat"
+
+#: c-decl.c:3852 c-decl.c:4320 cp/decl.c:11692
+msgid "duplicate `restrict'"
+msgstr "\"restrict\" duplicat"
+
+#: c-decl.c:3854 c-decl.c:4318 cp/decl.c:11690
+msgid "duplicate `volatile'"
+msgstr "\"volatile\" duplicat"
+
+#: c-decl.c:3882 cp/decl.c:11238
+#, c-format
+msgid "multiple storage classes in declaration of `%s'"
+msgstr "múltiples classes d'emmagatzematge en la declaració de \"%s\""
+
+#: c-decl.c:3892
+msgid "function definition declared `auto'"
+msgstr "la definició de la funció ho va declarar com \"auto\""
+
+#: c-decl.c:3894
+msgid "function definition declared `register'"
+msgstr "la definició de la funció ho va declarar com \"register\""
+
+#: c-decl.c:3896
+msgid "function definition declared `typedef'"
+msgstr "la definició de la funció ho va declarar com \"typedef\""
+
+#: c-decl.c:3898
+msgid "function definition declared `__thread'"
+msgstr "la definició de la funció ho va declarar com \"__thread\""
+
+#: c-decl.c:3911
+#, c-format
+msgid "storage class specified for structure field `%s'"
+msgstr "es va especificar una classe d'emmagatzematge per al camp de l'estructura \"%s\""
+
+#: c-decl.c:3915 cp/decl.c:11285
+#, c-format
+msgid "storage class specified for parameter `%s'"
+msgstr "es va especificar una classe d'emmagatzematge per al paràmetre \"%s\""
+
+#: c-decl.c:3918 cp/decl.c:11287
+msgid "storage class specified for typename"
+msgstr "es va especificar una classe d'emmagatzematge per al nom de tipus"
+
+#: c-decl.c:3930 cp/decl.c:11302
+#, c-format
+msgid "`%s' initialized and declared `extern'"
+msgstr "\"%s\" iniciat i declarat com \"extern\""
+
+#: c-decl.c:3932 cp/decl.c:11305
+#, c-format
+msgid "`%s' has both `extern' and initializer"
+msgstr "\"%s\" té \"extern\" i assignador de valor inicial al mateix temps"
+
+#: c-decl.c:3937 cp/decl.c:11313
+#, c-format
+msgid "top-level declaration of `%s' specifies `auto'"
+msgstr "la declaració del nivell superior de \"%s\" especifica \"auto\""
+
+#: c-decl.c:3942 cp/decl.c:11309
+#, c-format
+msgid "nested function `%s' declared `extern'"
+msgstr "la funció niada \"%s\" es va declarar \"extern\""
+
+#: c-decl.c:3948 cp/decl.c:11319
+#, c-format
+msgid "function-scope `%s' implicitly auto and declared `__thread'"
+msgstr "l'àmbit de la funció \"%s\" és implícitament acte i declarada \"__thread\""
+
+#. Only the innermost declarator (making a parameter be of
+#. array type which is converted to pointer type)
+#. may have static or type qualifiers.
+#: c-decl.c:3987 c-decl.c:4188
+msgid "static or type qualifiers in non-parameter array declarator"
+msgstr "static o qualificador de tipus en un declarador de matriu que no és parametre"
+
+#: c-decl.c:4031
+#, c-format
+msgid "declaration of `%s' as array of voids"
+msgstr "declaració de \"%s\" com una matriu de voids"
+
+#: c-decl.c:4037
+#, c-format
+msgid "declaration of `%s' as array of functions"
+msgstr "declaració de \"%s\" com una matriu de funcions"
+
+#: c-decl.c:4042 c-decl.c:5332
+msgid "invalid use of structure with flexible array member"
+msgstr "ús invàlid de structura amb membres de matriu flexible"
+
+#: c-decl.c:4061
+#, c-format
+msgid "size of array `%s' has non-integer type"
+msgstr "la grandària de la matriu \"%s\" té un tipus no enter"
+
+#: c-decl.c:4066
+#, c-format
+msgid "ISO C forbids zero-size array `%s'"
+msgstr "ISO C prohibeix la matriu \"%s\" de grandària zero"
+
+#: c-decl.c:4073
+#, c-format
+msgid "size of array `%s' is negative"
+msgstr "la grandària de la matriu \"%s\" és negatiu"
+
+#: c-decl.c:4086
+#, c-format
+msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
+msgstr "ISO C90 prohibeix matriu \"%s\" que la seua grandària no pot ser avaluada"
+
+#: c-decl.c:4089
+#, c-format
+msgid "ISO C90 forbids variable-size array `%s'"
+msgstr "ISO C90 prohibeix la matriu \"%s\" de grandària variable"
+
+#: c-decl.c:4119 c-decl.c:4342 cp/decl.c:11897
+#, c-format
+msgid "size of array `%s' is too large"
+msgstr "la grandària de la matriu \"%s\" és massa gran"
+
+#: c-decl.c:4145
+msgid "ISO C90 does not support flexible array members"
+msgstr "ISO C90 no té suport per a membres de matriu flexibles"
+
+#: c-decl.c:4155
+msgid "array type has incomplete element type"
+msgstr "el tipus array té tipus d'element incomplet"
+
+#: c-decl.c:4162 c-decl.c:4392
+msgid "ISO C forbids const or volatile function types"
+msgstr "ISO C prohibeix els tipus de funció const o volatile"
+
+#: c-decl.c:4208 cp/decl.c:11445
+#, c-format
+msgid "`%s' declared as function returning a function"
+msgstr "\"%s\" que és declarat com funció retorna una funció"
+
+#: c-decl.c:4213 cp/decl.c:11450
+#, c-format
+msgid "`%s' declared as function returning an array"
+msgstr "\"%s\" que és declarat com funció retorna una matriu"
+
+#: c-decl.c:4241
+msgid "ISO C forbids qualified void function return type"
+msgstr "ISO C prohibeix el tipus qualificat de devolució d'una funció void"
+
+#: c-decl.c:4245
+msgid "type qualifiers ignored on function return type"
+msgstr "s'ignoren els calificatores de tipus en el tipus de devolució de la funció"
+
+#: c-decl.c:4274 c-decl.c:4357 c-decl.c:4481 c-decl.c:4573
+msgid "ISO C forbids qualified function types"
+msgstr "ISO C prohibeix els tipus de funció qualificats"
+
+#: c-decl.c:4314 cp/decl.c:11684
+msgid "invalid type modifier within pointer declarator"
+msgstr "modificador de tipus invàlid dintre de la declaració del punter"
+
+#: c-decl.c:4412 cp/decl.c:12182
+#, c-format
+msgid "variable or field `%s' declared void"
+msgstr "variable o camp \"%s\" declarat void"
+
+#: c-decl.c:4445
+msgid "attributes in parameter array declarator ignored"
+msgstr "atributs en el declarador de parametres de matriu ignorats"
+
+#: c-decl.c:4470
+msgid "invalid type modifier within array declarator"
+msgstr "imodificador de tipus invalid dins d'un declarador de matriu"
+
+#: c-decl.c:4515
+#, c-format
+msgid "field `%s' declared as a function"
+msgstr "el camp \"%s\" es declarat com una funció"
+
+#: c-decl.c:4521
+#, c-format
+msgid "field `%s' has incomplete type"
+msgstr "el camp \"%s\" té tipus de dada incompleta"
+
+#: c-decl.c:4553 c-decl.c:4555 c-decl.c:4557 c-decl.c:4564
+#, c-format
+msgid "invalid storage class for function `%s'"
+msgstr "classe d'emmagatzematge invàlida per a la funció \"%s\""
+
+#: c-decl.c:4579
+msgid "`noreturn' function returns non-void value"
+msgstr "la funció \"no return\" retorna un valor que no és void"
+
+#: c-decl.c:4594
+msgid "cannot inline function `main'"
+msgstr "no es pot fer inline la funció \"main\""
+
+#: c-decl.c:4649
+#, c-format
+msgid "variable `%s' declared `inline'"
+msgstr "la variable \"%s\" va ser declarada com \"inline\""
+
+#. A mere warning is sure to result in improper semantics
+#. at runtime. Don't bother to allow this to compile.
+#: c-decl.c:4677 cp/decl.c:9951
+msgid "thread-local storage not supported for this target"
+msgstr "no es dóna suport a -thread local strorage en aquest objectiu"
+
+#: c-decl.c:4732 c-decl.c:5880
+msgid "function declaration isn't a prototype"
+msgstr "la declaració de la funció no és un prototip"
+
+#: c-decl.c:4738
+msgid "parameter names (without types) in function declaration"
+msgstr "noms de paràmetres (sense tipus) en la declaració de la funció"
+
+#: c-decl.c:4770 c-decl.c:6250
+#, c-format
+msgid "parameter `%s' has incomplete type"
+msgstr "el paràmetre \"%s\" té tipus de dada incompleta"
+
+#: c-decl.c:4773
+msgid "parameter has incomplete type"
+msgstr "el paràmetre té tipus incomplet"
+
+#: c-decl.c:4794
+#, c-format
+msgid "parameter `%s' points to incomplete type"
+msgstr "el paràmetre \"%s\" apunta a un tipus incomplet"
+
+#: c-decl.c:4797
+msgid "parameter points to incomplete type"
+msgstr "el paràmetre punta a un tipus incomplet"
+
+#: c-decl.c:4862
+#, c-format
+msgid "parameter `%s' has just a forward declaration"
+msgstr "el paràmetre \"%s\" només té una declaració posterior"
+
+#: c-decl.c:4903
+msgid "`void' in parameter list must be the entire list"
+msgstr "\"void\" en la llista de paràmetres deu ser la llista completa"
+
+#: c-decl.c:4934
+#, c-format
+msgid "`struct %s' declared inside parameter list"
+msgstr "\"struct %s\" declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4937
+#, c-format
+msgid "`union %s' declared inside parameter list"
+msgstr "\"union %s\" declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4940
+#, c-format
+msgid "`enum %s' declared inside parameter list"
+msgstr "\"enum %s\" declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4947
+msgid "anonymous struct declared inside parameter list"
+msgstr "struct anònim declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4949
+msgid "anonymous union declared inside parameter list"
+msgstr "union anònim declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4951
+msgid "anonymous enum declared inside parameter list"
+msgstr "enum anònim declarat dintre d'una llista de paràmetres"
+
+#: c-decl.c:4955
+msgid "its scope is only this definition or declaration, which is probably not what you want"
+msgstr "el seu àmbit és solament aquesta definició o declaració, la qual cosa probablement no sigui el que desitja."
+
+#: c-decl.c:5032
+#, c-format
+msgid "redefinition of `union %s'"
+msgstr "redefinició de \"union %s\""
+
+#: c-decl.c:5034
+#, c-format
+msgid "redefinition of `struct %s'"
+msgstr "redefinició de \"struct %s\""
+
+#: c-decl.c:5105 cp/decl.c:7532
+msgid "declaration does not declare anything"
+msgstr "la declaració no declara res"
+
+#: c-decl.c:5169 c-decl.c:5172
+#, c-format
+msgid "%s defined inside parms"
+msgstr "es va definir %s dintre dels paràmetres"
+
+#: c-decl.c:5170 c-decl.c:5173 c-decl.c:5184
+msgid "union"
+msgstr "unió"
+
+#: c-decl.c:5170 c-decl.c:5173
+msgid "structure"
+msgstr "estructura"
+
+#: c-decl.c:5183
+#, c-format
+msgid "%s has no %s"
+msgstr "%s no té %s"
+
+#: c-decl.c:5184
+msgid "struct"
+msgstr "struct"
+
+#: c-decl.c:5185
+msgid "named members"
+msgstr "membres nomenats"
+
+#: c-decl.c:5185
+msgid "members"
+msgstr "membres"
+
+#: c-decl.c:5224
+#, c-format
+msgid "nested redefinition of `%s'"
+msgstr "redefinició niada de \"%s\""
+
+#: c-decl.c:5237
+#, c-format
+msgid "bit-field `%s' width not an integer constant"
+msgstr "l'amplària del camp de bits \"%s\" no és una constant entera"
+
+#: c-decl.c:5248
+#, c-format
+msgid "bit-field `%s' has invalid type"
+msgstr "el camp de bits \"%s\" té un tipus invàlid"
+
+#: c-decl.c:5260
+#, c-format
+msgid "bit-field `%s' type invalid in ISO C"
+msgstr "el tipus de camp de bit \"%s\" és invàlid en ISO C"
+
+#: c-decl.c:5271
+#, c-format
+msgid "negative width in bit-field `%s'"
+msgstr "amplària negativa en el camp de bit \"%s\""
+
+#: c-decl.c:5273
+#, c-format
+msgid "width of `%s' exceeds its type"
+msgstr "l'amplària de \"%s\" excedeix el seu tipus"
+
+#: c-decl.c:5275
+#, c-format
+msgid "zero width for bit-field `%s'"
+msgstr "amplària zero per al camp de bits \"%s\""
+
+#: c-decl.c:5289
+#, c-format
+msgid "`%s' is narrower than values of its type"
+msgstr "\"%s\" és més estret que els valors del seu tipus"
+
+#: c-decl.c:5323
+msgid "flexible array member in union"
+msgstr "membre de matriu flexible en el union"
+
+#: c-decl.c:5325
+msgid "flexible array member not at end of struct"
+msgstr "el membre de matriu flexible no està al final del struct"
+
+#: c-decl.c:5327
+msgid "flexible array member in otherwise empty struct"
+msgstr "el membre de matriu flexible seria d'altra manera un struct buit"
+
+#: c-decl.c:5357
+#, c-format
+msgid "duplicate member `%s'"
+msgstr "membre duplicat \"%s\""
+
+#: c-decl.c:5448
+msgid "union cannot be made transparent"
+msgstr "union no es pot fer transparent"
+
+#. This enum is a named one that has been declared already.
+#: c-decl.c:5558
+#, c-format
+msgid "redeclaration of `enum %s'"
+msgstr "redeclaració de \"enum %s\""
+
+#: c-decl.c:5592
+msgid "enum defined inside parms"
+msgstr "enum definit dintre dels paràmetres"
+
+#: c-decl.c:5625
+msgid "enumeration values exceed range of largest integer"
+msgstr "els valors d'enumeració excedeixen el rang de l'enter més gran"
+
+#: c-decl.c:5734
+#, c-format
+msgid "enumerator value for `%s' not integer constant"
+msgstr "el valor de enumerator per a \"%s\" no és una constant entera"
+
+#: c-decl.c:5747
+msgid "overflow in enumeration values"
+msgstr "desbordament en valors d'enumeració"
+
+#: c-decl.c:5752
+msgid "ISO C restricts enumerator values to range of `int'"
+msgstr "ISO C restringeix els valors d'enumeració al rang de \"int\""
+
+#: c-decl.c:5834
+msgid "return type is an incomplete type"
+msgstr "el tipus de devolució és un tipus de dada incompleta"
+
+#: c-decl.c:5842
+msgid "return type defaults to `int'"
+msgstr "el tipus de devolució per omissió és \"int\""
+
+#: c-decl.c:5889
+#, c-format
+msgid "no previous prototype for `%s'"
+msgstr "no hi ha un prototip previ per a \"%s\""
+
+#: c-decl.c:5896
+#, c-format
+msgid "`%s' was used with no prototype before its definition"
+msgstr "es va usar \"%s\" sense prototip abans de la seva definició"
+
+#: c-decl.c:5902
+#, c-format
+msgid "no previous declaration for `%s'"
+msgstr "no hi ha declaració prèvia per a \"%s\""
+
+#: c-decl.c:5909
+#, c-format
+msgid "`%s' was used with no declaration before its definition"
+msgstr "es va usar \"%s\" sense prototip abans de la seva definició"
+
+#: c-decl.c:5933 c-decl.c:6486
+#, c-format
+msgid "return type of `%s' is not `int'"
+msgstr "el tipus de devolució de \"%s\" no és \"int\""
+
+#: c-decl.c:5949
+#, c-format
+msgid "first argument of `%s' should be `int'"
+msgstr "el primer argument de \"%s\" deu ser \"int\""
+
+#: c-decl.c:5958
+#, c-format
+msgid "second argument of `%s' should be `char **'"
+msgstr "el segon argument de \"%s\" deu ser \"char **\""
+
+#: c-decl.c:5967
+#, c-format
+msgid "third argument of `%s' should probably be `char **'"
+msgstr "el tercer argument de \"%s\" deuria ser \"char **\""
+
+#: c-decl.c:5976
+#, c-format
+msgid "`%s' takes only zero or two arguments"
+msgstr "\"%s\" només pren zero o dos arguments"
+
+#: c-decl.c:5979
+#, c-format
+msgid "`%s' is normally a non-static function"
+msgstr "\"%s\" generalment és una funció no estàtica"
+
+#: c-decl.c:6077
+msgid "parm types given both in parmlist and separately"
+msgstr "es van donar els tipus dels paràmetres en la llista de paràmetres i per separat"
+
+#: c-decl.c:6098
+msgid "parameter name omitted"
+msgstr "es va ometre el nom del paràmetre"
+
+#: c-decl.c:6102 c-decl.c:6204
+#, c-format
+msgid "parameter `%s' declared void"
+msgstr "el paràmetre \"%s\" es va declarar void"
+
+#: c-decl.c:6178
+msgid "parameter name missing from parameter list"
+msgstr "falta el nom del paràmetre de la llista de paràmetres"
+
+#: c-decl.c:6197
+#, c-format
+msgid "multiple parameters named `%s'"
+msgstr "múltiples paràmetres nomenats \"%s\""
+
+#: c-decl.c:6219 c-decl.c:6221
+#, c-format
+msgid "type of `%s' defaults to `int'"
+msgstr "el tipus de \"%s\" és \"int\" per omissió"
+
+#: c-decl.c:6257
+#, c-format
+msgid "declaration for parameter `%s' but no such parameter"
+msgstr "existeix la declaració per al paràmetre \"%s\" però no hi ha tal paràmetre"
+
+#: c-decl.c:6305
+msgid "number of arguments doesn't match prototype"
+msgstr "el nombre d'arguments no coincideixen amb el prototip"
+
+#: c-decl.c:6335
+#, c-format
+msgid "promoted argument `%s' doesn't match prototype"
+msgstr "l'argument promogut \"%s\" no coincideix amb el prototip"
+
+#: c-decl.c:6345
+#, c-format
+msgid "argument `%s' doesn't match prototype"
+msgstr "l'argument \"%s\" no coincideix amb el prototip"
+
+#: c-decl.c:6518 cp/decl.c:15049
+msgid "no return statement in function returning non-void"
+msgstr "no hi ha una declaració de devolució en una funció que retorna non-void"
+
+#: c-decl.c:6525
+msgid "this function may return with or without a value"
+msgstr "aquesta funció pot retornar amb o sense un valor"
+
+#: c-decl.c:6729
+#, c-format
+msgid "size of return value of `%s' is %u bytes"
+msgstr "la grandària del valor de devolució de \"%s\" és de %u octets"
+
+#: c-decl.c:6733
+#, c-format
+msgid "size of return value of `%s' is larger than %d bytes"
+msgstr "la grandària del valor de devolució de \"%s\" és més gran que %d octets"
+
+#. If we get here, declarations have been used in a for loop without
+#. the C99 for loop scope. This doesn't make much sense, so don't
+#. allow it.
+#: c-decl.c:6791
+msgid "`for' loop initial declaration used outside C99 mode"
+msgstr "es va usar la declaració inicial del cicle \"for\" fora de la manera C99"
+
+#: c-decl.c:6815
+#, c-format
+msgid "`struct %s' declared in `for' loop initial declaration"
+msgstr "\"struct %s\" declarat en la declaració inicial del cicle \"for\""
+
+#: c-decl.c:6818
+#, c-format
+msgid "`union %s' declared in `for' loop initial declaration"
+msgstr "\"union %s\" declarat en la declaració inicial del cicle \"for\""
+
+#: c-decl.c:6821
+#, c-format
+msgid "`enum %s' declared in `for' loop initial declaration"
+msgstr "\"enum %s\" declarat en la declaració inicial del cicle \"for\""
+
+#: c-decl.c:6829
+#, c-format
+msgid "declaration of non-variable `%s' in `for' loop initial declaration"
+msgstr "declaració de \"%s\" que no és variable en la declaració inicial del cicle \"for\""
+
+#: c-decl.c:6831
+#, c-format
+msgid "declaration of static variable `%s' in `for' loop initial declaration"
+msgstr "declaració de la variable static \"%s\" en la declaració inicial del cicle \"for\""
+
+#: c-decl.c:6833
+#, c-format
+msgid "declaration of `extern' variable `%s' in `for' loop initial declaration"
+msgstr "declaració de la variable \"extern\" \"%s\" en la declaració inicial del cicle `for\""
+
+#: c-format.c:109 c-format.c:191
+msgid "format string arg not a string type"
+msgstr "l'argument de la cadena de format no és del tipus cadena de text"
+
+#: c-format.c:124
+msgid "args to be formatted is not '...'"
+msgstr "els arguments que rebran format no són \"...\""
+
+#: c-format.c:133
+msgid "strftime formats cannot format arguments"
+msgstr "els formats de strftime no poden donar format als arguments"
+
+#: c-format.c:168 c-format.c:270
+msgid "format string has invalid operand number"
+msgstr "la cadena de format té un nombre d'operadors invàlid"
+
+#: c-format.c:202
+msgid "function does not return string type"
+msgstr "la funció no retorna un tipus string"
+
+#: c-format.c:233
+msgid "unrecognized format specifier"
+msgstr "no es reconeix el especificador de format"
+
+#: c-format.c:246
+#, c-format
+msgid "`%s' is an unrecognized format function type"
+msgstr "\"%s\" és un format de tipus de funció no reconegut"
+
+#: c-format.c:280
+msgid "format string arg follows the args to be formatted"
+msgstr "l'argument de la cadena de format segueix als arguments que rebran format"
+
+#: c-format.c:601
+msgid "` ' flag"
+msgstr "opció \" \""
+
+#: c-format.c:601
+msgid "the ` ' printf flag"
+msgstr "l'opció de printf \" \""
+
+#: c-format.c:602 c-format.c:673
+msgid "`+' flag"
+msgstr "opció \"+\""
+
+#: c-format.c:602
+msgid "the `+' printf flag"
+msgstr "l'opció \"+\" de printf"
+
+#: c-format.c:603 c-format.c:649
+msgid "`#' flag"
+msgstr "opció \"#\""
+
+#: c-format.c:603
+msgid "the `#' printf flag"
+msgstr "l'opció \"#\" de printf"
+
+#: c-format.c:604 c-format.c:647
+msgid "`0' flag"
+msgstr "opció \"0\""
+
+#: c-format.c:604
+msgid "the `0' printf flag"
+msgstr "l'opció \"0\" de printf"
+
+#: c-format.c:605 c-format.c:646 c-format.c:676
+msgid "`-' flag"
+msgstr "opció \"-\""
+
+#: c-format.c:605
+msgid "the `-' printf flag"
+msgstr "l'opció \"-\" de printf"
+
+#: c-format.c:606 c-format.c:630
+msgid "`'' flag"
+msgstr "opció \"'\""
+
+#: c-format.c:606
+msgid "the `'' printf flag"
+msgstr "l'opció \"'\" de printf"
+
+#: c-format.c:607 c-format.c:631
+msgid "`I' flag"
+msgstr "opció \"I\""
+
+#: c-format.c:607
+msgid "the `I' printf flag"
+msgstr "l'opció \"I\" de printf"
+
+#: c-format.c:608 c-format.c:628 c-format.c:650 c-format.c:677 c-format.c:1702
+msgid "field width"
+msgstr "amplària de camp"
+
+#: c-format.c:608
+msgid "field width in printf format"
+msgstr "amplària de camp en format printf"
+
+#: c-format.c:609
+msgid "precision"
+msgstr "precisió"
+
+#: c-format.c:609
+msgid "precision in printf format"
+msgstr "precisió en format printf"
+
+#: c-format.c:610 c-format.c:629 c-format.c:680
+msgid "length modifier"
+msgstr "modificador de longitud"
+
+#: c-format.c:610
+msgid "length modifier in printf format"
+msgstr "modificador de longitud en format printf"
+
+#: c-format.c:626
+msgid "assignment suppression"
+msgstr "supressió de l'assignació"
+
+#: c-format.c:626
+msgid "the assignment suppression scanf feature"
+msgstr "la supressió de l'assignació és una característica de scanf"
+
+#: c-format.c:627
+msgid "`a' flag"
+msgstr "opció \"a\""
+
+#: c-format.c:627
+msgid "the `a' scanf flag"
+msgstr "l'opció \"a\" de scanf"
+
+#: c-format.c:628
+msgid "field width in scanf format"
+msgstr "amplària de camp en format scanf"
+
+#: c-format.c:629
+msgid "length modifier in scanf format"
+msgstr "modificador de longitud en format scanf"
+
+#: c-format.c:630
+msgid "the `'' scanf flag"
+msgstr "l'opció \"'\" de scanf"
+
+#: c-format.c:631
+msgid "the `I' scanf flag"
+msgstr "l'opció \"I\" de scanf"
+
+#: c-format.c:645
+msgid "`_' flag"
+msgstr "l'opció \"_\""
+
+#: c-format.c:645
+msgid "the `_' strftime flag"
+msgstr "l'opció \"_\" de strftime"
+
+#: c-format.c:646
+msgid "the `-' strftime flag"
+msgstr "l'opció \"-\" de strftime"
+
+#: c-format.c:647
+msgid "the `0' strftime flag"
+msgstr "l'opció \"0\" de strftime"
+
+#: c-format.c:648 c-format.c:672
+msgid "`^' flag"
+msgstr "opció \"^\""
+
+#: c-format.c:648
+msgid "the `^' strftime flag"
+msgstr "l'opció \"^\" de strftime"
+
+#: c-format.c:649
+msgid "the `#' strftime flag"
+msgstr "l'opció \"#\" de strftime"
+
+#: c-format.c:650
+msgid "field width in strftime format"
+msgstr "amplària de camp en format strftime"
+
+#: c-format.c:651
+msgid "`E' modifier"
+msgstr "modificador \"E\""
+
+#: c-format.c:651
+msgid "the `E' strftime modifier"
+msgstr "el modificador \"E\" de strftime"
+
+#: c-format.c:652
+msgid "`O' modifier"
+msgstr "modificador \"O\""
+
+#: c-format.c:652
+msgid "the `O' strftime modifier"
+msgstr "el modificador \"O\" de strftime"
+
+#: c-format.c:653
+msgid "the `O' modifier"
+msgstr "el modificador \"O\""
+
+#: c-format.c:671
+msgid "fill character"
+msgstr "caràcter de farciment"
+
+#: c-format.c:671
+msgid "fill character in strfmon format"
+msgstr "caràcter de farciment en format strfmon"
+
+#: c-format.c:672
+msgid "the `^' strfmon flag"
+msgstr "l'opció \"^\" de strfmon"
+
+#: c-format.c:673
+msgid "the `+' strfmon flag"
+msgstr "l'opció \"+\" de strfmon"
+
+#: c-format.c:674
+msgid "`(' flag"
+msgstr "opció \"(\""
+
+#: c-format.c:674
+msgid "the `(' strfmon flag"
+msgstr "l'opció \"(\" de strfmon"
+
+#: c-format.c:675
+msgid "`!' flag"
+msgstr "opció \"!\""
+
+#: c-format.c:675
+msgid "the `!' strfmon flag"
+msgstr "l'opció \"!\" de strfmon"
+
+#: c-format.c:676
+msgid "the `-' strfmon flag"
+msgstr "l'opció \"-\" de strfmon"
+
+#: c-format.c:677
+msgid "field width in strfmon format"
+msgstr "amplària de camp en format strfmon"
+
+#: c-format.c:678
+msgid "left precision"
+msgstr "precisió esquerra"
+
+#: c-format.c:678
+msgid "left precision in strfmon format"
+msgstr "precisió esquerra en format strfmon"
+
+#: c-format.c:679
+msgid "right precision"
+msgstr "precisió de dreta"
+
+#: c-format.c:679
+msgid "right precision in strfmon format"
+msgstr "precisió de dreta en format strfmon"
+
+#: c-format.c:680
+msgid "length modifier in strfmon format"
+msgstr "modificador de longitud en format strfmon"
+
+#: c-format.c:983
+#, c-format
+msgid "function might be possible candidate for `%s' format attribute"
+msgstr "la funció pot ser un candidat possible per a l'atribut de format \"%s\""
+
+#: c-format.c:1107 c-format.c:1128 c-format.c:2112
+msgid "missing $ operand number in format"
+msgstr "falta l'operant numèric $ en el format"
+
+#: c-format.c:1138
+#, c-format
+msgid "%s does not support %%n$ operand number formats"
+msgstr "%s no té suport per a l'operant de format de nombre %%n$"
+
+#: c-format.c:1145
+msgid "operand number out of range in format"
+msgstr "operant numèric fora de rang en el format"
+
+#: c-format.c:1168
+#, c-format
+msgid "format argument %d used more than once in %s format"
+msgstr "s'usa més d'una vegada l'argument de format %d en el format %s"
+
+#: c-format.c:1218
+#, c-format
+msgid "format argument %d unused before used argument %d in $-style format"
+msgstr "no s'usa l'argument de format %d abans d'usar l'argument %d en el format $-style"
+
+#: c-format.c:1322
+msgid "format not a string literal, format string not checked"
+msgstr "el format no és una cadena literal, no es va revisar la cadena de format"
+
+#: c-format.c:1336
+msgid "format not a string literal and no format arguments"
+msgstr "el format no és una cadena literal i no té arguments de format"
+
+#: c-format.c:1338
+msgid "format not a string literal, argument types not checked"
+msgstr "el format no és una cadena literal, no es van revisar els tipus d'argument"
+
+#: c-format.c:1351
+msgid "too many arguments for format"
+msgstr "massa arguments per al format"
+
+#: c-format.c:1354
+msgid "unused arguments in $-style format"
+msgstr "no es van usar arguments en el format d'estil-$"
+
+#: c-format.c:1357
+#, c-format
+msgid "zero-length %s format string"
+msgstr "cadena de format %s de longitud zero"
+
+#: c-format.c:1361
+msgid "format is a wide character string"
+msgstr "el format és una cadena de caràcter ampla"
+
+#: c-format.c:1364
+msgid "unterminated format string"
+msgstr "constant de format sense acabar"
+
+#: c-format.c:1581
+msgid "embedded `\\0' in format"
+msgstr "\"\\0\" incrustat en el format"
+
+#: c-format.c:1596
+#, c-format
+msgid "spurious trailing `%%' in format"
+msgstr "\"%%\" final espuri en el format"
+
+#: c-format.c:1635 c-format.c:1872
+#, c-format
+msgid "repeated %s in format"
+msgstr "es va repetir %s en el format"
+
+#: c-format.c:1648
+msgid "missing fill character at end of strfmon format"
+msgstr "falta el caràcter de farciment al final del format strfmon"
+
+#: c-format.c:1687 c-format.c:1786 c-format.c:2066 c-format.c:2119
+msgid "too few arguments for format"
+msgstr "molt pocs arguments per al format"
+
+#: c-format.c:1728
+#, c-format
+msgid "zero width in %s format"
+msgstr "amplària zero en el format %s"
+
+#: c-format.c:1747
+#, c-format
+msgid "empty left precision in %s format"
+msgstr "precisió esquerra buida en el format %s"
+
+#: c-format.c:1801
+msgid "field precision"
+msgstr "precisió del camp"
+
+#: c-format.c:1816
+#, c-format
+msgid "empty precision in %s format"
+msgstr "precisió buida en el format %s"
+
+#: c-format.c:1856
+#, c-format
+msgid "%s does not support the `%s' %s length modifier"
+msgstr "%s no té suport per al modificador de longitud %s \"%s\""
+
+#: c-format.c:1906
+msgid "conversion lacks type at end of format"
+msgstr "la conversió manca de tipus al final del format"
+
+#: c-format.c:1917
+#, c-format
+msgid "unknown conversion type character `%c' in format"
+msgstr "es desconeix el caràcter de tipus de conversió \"%c\" en el format"
+
+#: c-format.c:1920
+#, c-format
+msgid "unknown conversion type character 0x%x in format"
+msgstr "es desconeix el caràcter de tipus de conversió 0x%x en el format"
+
+#: c-format.c:1927
+#, c-format
+msgid "%s does not support the `%%%c' %s format"
+msgstr "%s no té suport per al format \"%%%c\" %s"
+
+#: c-format.c:1943
+#, c-format
+msgid "%s used with `%%%c' %s format"
+msgstr "es va usar %s amb el format \"%%%c\" %s"
+
+#: c-format.c:1952
+#, c-format
+msgid "%s does not support %s"
+msgstr "%s no té suport per a %s"
+
+#: c-format.c:1961
+#, c-format
+msgid "%s does not support %s with the `%%%c' %s format"
+msgstr "%s no té suport per a %s amb el format \"%%%c\" %s"
+
+#: c-format.c:1994
+#, c-format
+msgid "%s ignored with %s and `%%%c' %s format"
+msgstr "s'ignora %s amb %s i el format \"%%%c\" %s"
+
+#: c-format.c:1998
+#, c-format
+msgid "%s ignored with %s in %s format"
+msgstr "s'ignora %s amb %s en el format %s"
+
+#: c-format.c:2004
+#, c-format
+msgid "use of %s and %s together with `%%%c' %s format"
+msgstr "ús de %s i %s juntament amb el format \"%%%c\" %s"
+
+#: c-format.c:2008
+#, c-format
+msgid "use of %s and %s together in %s format"
+msgstr "ús de %s i %s junts en el format %s"
+
+#: c-format.c:2027
+#, c-format
+msgid "`%%%c' yields only last 2 digits of year in some locales"
+msgstr "\"%%%c\" només produeix els dos últims dígits de l'any en alguns llocs"
+
+#: c-format.c:2030
+#, c-format
+msgid "`%%%c' yields only last 2 digits of year"
+msgstr "\"%%%c\" només produeix els dos últims dígits de l'any"
+
+#. The end of the format string was reached.
+#: c-format.c:2046
+#, c-format
+msgid "no closing `]' for `%%[' format"
+msgstr "no hi ha un \"]\" que tancament per al format \"%%[\""
+
+#: c-format.c:2059
+#, c-format
+msgid "use of `%s' length modifier with `%c' type character"
+msgstr "ús del modificador de longitud \"%s\" amb el caràcter de tipus \"%c\""
+
+#: c-format.c:2080
+#, c-format
+msgid "%s does not support the `%%%s%c' %s format"
+msgstr "%s no té suport per al format \"%%%s%c\" %s"
+
+#: c-format.c:2095
+msgid "operand number specified with suppressed assignment"
+msgstr "nombre d'operadors especificat amb assignació suprimida"
+
+#: c-format.c:2097
+msgid "operand number specified for format taking no argument"
+msgstr "el nombre de operades especificats per al format no pren arguments"
+
+#: c-format.c:2211
+#, c-format
+msgid "writing through null pointer (arg %d)"
+msgstr "escrivint a través d'un punter nul (argument %d)"
+
+#: c-format.c:2220
+#, c-format
+msgid "reading through null pointer (arg %d)"
+msgstr "llegint a través d'un punter nul (argument %d)"
+
+#: c-format.c:2240
+#, c-format
+msgid "writing into constant object (arg %d)"
+msgstr "escrivint en un objecte constant (argument %d)"
+
+#: c-format.c:2250
+#, c-format
+msgid "extra type qualifiers in format argument (arg %d)"
+msgstr "qualificadores de tipus extra en l'argument de format (argument %d)"
+
+#: c-format.c:2257
+#, c-format
+msgid "format argument is not a pointer (arg %d)"
+msgstr "l'argument de format no és un punter (argument %d)"
+
+#: c-format.c:2259
+#, c-format
+msgid "format argument is not a pointer to a pointer (arg %d)"
+msgstr "l'argument de format no és un punter a un punter (argument %d)"
+
+#: c-format.c:2330
+msgid "pointer"
+msgstr "punter"
+
+#: c-format.c:2332
+msgid "different type"
+msgstr "diferents tipus"
+
+#: c-format.c:2353
+#, c-format
+msgid "%s is not type %s (arg %d)"
+msgstr "%s no és del tipus %s (argument %d)"
+
+#: c-format.c:2356
+#, c-format
+msgid "%s format, %s arg (arg %d)"
+msgstr "format %s, argument %s (argument %d)"
+
+#: c-lex.c:153
+msgid "YYDEBUG not defined"
+msgstr "no es va definir YYDEBUG"
+
+#: c-lex.c:293
+msgid "badly nested C headers from preprocessor"
+msgstr "encapçalats C mal niats del preprocessador"
+
+#: c-lex.c:336
+#, c-format
+msgid "ignoring #pragma %s %s"
+msgstr "ignorant el #pragma %s %s"
+
+#: c-lex.c:386
+#, c-format
+msgid "universal-character-name '\\U%08x' not valid in identifier"
+msgstr "universal-character-name \"\\U%08x\" no és vàlid en l'identificador"
+
+#: c-lex.c:632
+#, c-format
+msgid "universal-character-name '\\u%04x' not valid in identifier"
+msgstr "universal-character-name \"\\u%04x\" no és vàlid en l'identificador"
+
+#: c-lex.c:695
+#, c-format
+msgid "stray '%c' in program"
+msgstr "\"%c\" paràsit en el programa"
+
+#: c-lex.c:697
+#, c-format
+msgid "stray '\\%o' in program"
+msgstr "\"\\%o\" paràsit en el programa"
+
+#: c-lex.c:854
+msgid "this decimal constant is unsigned only in ISO C90"
+msgstr "aquesta constant decimal només és unsigned en ISO C90"
+
+#: c-lex.c:857
+msgid "this decimal constant would be unsigned in ISO C90"
+msgstr "aquesta constant decimal serà unsigned en ISO C90 "
+
+#: c-lex.c:873
+#, c-format
+msgid "integer constant is too large for \"%s\" type"
+msgstr "la constant entera és massa gran pel tipus \"%s\""
+
+#: c-lex.c:941
+#, c-format
+msgid "floating constant exceeds range of \"%s\""
+msgstr "la constant de coma flotant excedeix el rang de \"%s\""
+
+#: c-lex.c:977 cpplex.c:330 cpplex.c:668 cpplex.c:1942
+msgid "ignoring invalid multibyte character"
+msgstr "ignorant els caràcters multibyte invàlids"
+
+#: c-opts.c:355
+#, c-format
+msgid "missing argument to \"-%s\""
+msgstr "Falten arguments per a \"-%s\""
+
+#: c-opts.c:359
+#, c-format
+msgid "no class name specified with \"-%s\""
+msgstr "no classes especificades amb \"-%s\""
+
+#: c-opts.c:366
+#, c-format
+msgid "missing filename after \"-%s\""
+msgstr "nom de fitxer faltant deprés de \"-%s\""
+
+#: c-opts.c:371
+#, c-format
+msgid "missing target after \"-%s\""
+msgstr "falta l'objectiu després de \"-%s\""
+
+#: c-opts.c:505
+#, c-format
+msgid "options array incorrectly sorted: %s is before %s"
+msgstr "opcions de matriu ordenades incorrectament: %s està abans de %s"
+
+#: c-opts.c:550
+#, c-format
+msgid "too many filenames given. Type %s --help for usage"
+msgstr "massa noms de fitxers. Teclegi %s --help per a informació d'ùs"
+
+#: c-opts.c:937
+msgid "-Wno-strict-prototypes is not supported in C++"
+msgstr "no és dona suport a -Wno-strict-prototypes en C++"
+
+#: c-opts.c:1017
+#, c-format
+msgid "switch \"%s\" is no longer supported"
+msgstr "el switch \"%s\" ja no té suport"
+
+#: c-opts.c:1033
+#, c-format
+msgid "switch \"%s\" is deprecated, please see documentation for details"
+msgstr "el switch \"%s\" és obsolet, per favor vegi la documentació per a més detalls"
+
+#: c-opts.c:1153
+msgid "-fhandle-exceptions has been renamed to -fexceptions (and is now on by default)"
+msgstr "es va re-nomenar -fhandle-exceptions a -fexceptions (i ara està activat per defecte)"
+
+#: c-opts.c:1273
+msgid "output filename specified twice"
+msgstr "nom de fitxer de sortida especificat dues vegades"
+
+#: c-opts.c:1387
+msgid "-Wformat-y2k ignored without -Wformat"
+msgstr "s'ignora -Wformat-y2k sense -Wformat"
+
+#: c-opts.c:1389
+msgid "-Wformat-extra-args ignored without -Wformat"
+msgstr "s'ignora -Wformat-extra-args sense -Wformat"
+
+#: c-opts.c:1391
+msgid "-Wformat-zero-length ignored without -Wformat"
+msgstr "s'ignora -Wformat-zero-length sense -Wformat"
+
+#: c-opts.c:1393
+msgid "-Wformat-nonliteral ignored without -Wformat"
+msgstr "s'ignora -Wformat-nonliteral sense -Wformat"
+
+#: c-opts.c:1395
+msgid "-Wformat-security ignored without -Wformat"
+msgstr "s'ignora -Wformat-security sense -Wformat"
+
+#: c-opts.c:1397
+msgid "-Wmissing-format-attribute ignored without -Wformat"
+msgstr "s'ignora -Wformat-attribute sense -Wformat"
+
+#: c-opts.c:1419
+#, c-format
+msgid "opening output file %s"
+msgstr "obrint el fitxer de sortida %s"
+
+#: c-opts.c:1474
+#, c-format
+msgid "opening dependency file %s"
+msgstr "obrint el fitxer de dependències %s"
+
+#: c-opts.c:1484
+#, c-format
+msgid "closing dependency file %s"
+msgstr "tancant el fitxer de dependències %s"
+
+#: c-opts.c:1487
+#, c-format
+msgid "when writing output to %s"
+msgstr "a l'escriure a %s"
+
+#: c-opts.c:1567
+msgid "to generate dependencies you must specify either -M or -MM"
+msgstr "per a generar dependències deu especificar -M o -MM"
+
+#: c-opts.c:1715
+#, c-format
+msgid "\"-%c%s%s\" is valid for %s but not for %s"
+msgstr "\"-%c%s%s\" és vàlida per a %s però no per a %s"
+
+#. To keep the lines from getting too long for some compilers, limit
+#. to about 500 characters (6 lines) per chunk.
+#: c-opts.c:1726
+msgid ""
+"Switches:\n"
+" -include <file> Include the contents of <file> before other files\n"
+" -imacros <file> Accept definition of macros in <file>\n"
+" -iprefix <path> Specify <path> as a prefix for next two options\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"
+msgstr ""
+"Interruptors:\n"
+" -include <fitxer> Inclou el contingut de <fitxer> abans altres fitxers\n"
+" -imacros <fitxer> Accepta la definició de macros en <fitxer>\n"
+" -iprefix <camí> Especifica <camí> com a prefix per a les dues opcions\n"
+" següentes\n"
+" -iwithprefix <dir> Afegeix <dir> al final del camí d'inclusió del sistema\n"
+" -iwithprefixbefore <dir> Afegeix <dir> al final del camí d'inclusió principal\n"
+" -isystem <dir> Afegeix <dir> a l'inicí del camí d'inclusió del sistema\n"
+
+#: c-opts.c:1735
+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 docs\n"
+" -nostdinc Do not search system include directories\n"
+" (dirs specified with -isystem will still be used)\n"
+" -nostdinc++ Do not search system include directories for C++\n"
+" -o <file> Put output into <file>\n"
+msgstr ""
+" -idirafter <dir> Afegeix <dir> al final del camí d'inclusió del sistema\n"
+" -I <dir> Afegeix <dir> al final del camí d'inclusió principal\n"
+" -I- afinar el control del camí d'inclusió; consulta la doc\n"
+" -nostdinc No cerca els directoris d'inclusió\n"
+" (dirs especificats amb -isystem seran encara utilitzats)\n"
+" -nostdinc++ No cerca els directoris d'inclusió per a C++\n"
+" -o <fitxer> Posa la sortida en <fitxer>\n"
+
+#: c-opts.c:1744
+msgid ""
+" -trigraphs Support ISO C trigraphs\n"
+" -std=<std name> Specify the conformance standard; one of:\n"
+" gnu89, gnu99, c89, c99, iso9899:1990,\n"
+" iso9899:199409, iso9899:1999, c++98\n"
+" -w Inhibit warning messages\n"
+" -W[no-]trigraphs Warn if trigraphs are encountered\n"
+" -W[no-]comment{s} Warn if one comment starts inside another\n"
+msgstr ""
+" -trigraphs Permetre trigrafes ISO/ C\n"
+" -std=<nom std> Especificar el estándard de concordança; una de:\n"
+" gnu89, gnu99, c89, c99, iso/9899:1990,\n"
+" iso9899:199409, iso9899:1999, c++98\n"
+" -w Inhibir els missatges d'avís\n"
+" -W[no-]trigraphs Avisar si es troben trigrafes\n"
+" -W[no-]comment{s} Avisar si un comentari inicia dintre d'altre\n"
+
+#: c-opts.c:1753
+msgid ""
+" -W[no-]traditional Warn about features not present in traditional C\n"
+" -W[no-]undef Warn if an undefined macro is used by #if\n"
+" -W[no-]import Warn about the use of the #import directive\n"
+msgstr ""
+" -W[no-]traditional Avisar a propòsit de funccionalitats que no\n"
+" són presentes en tradicional C\n"
+" -W[no-]undef Avisar si #if utilitza una macro no definida\n"
+" -W[no-]import Avisar a propòsit de l'ùs de directives #import\n"
+
+#: c-opts.c:1758
+msgid ""
+" -W[no-]error Treat all warnings as errors\n"
+" -W[no-]system-headers Do not suppress warnings from system headers\n"
+" -W[no-]all Enable most preprocessor warnings\n"
+msgstr ""
+" -W[no-]error Tractar tots els avís com a errors\n"
+" -W[no-]system-headers No supprimir les avís de les capçaleres sistema\n"
+" -W[no-]all Autoritzar tots els avís del preprocessador\n"
+
+#: c-opts.c:1763
+msgid ""
+" -M Generate make dependencies\n"
+" -MM As -M, but ignore system header files\n"
+" -MD Generate make dependencies and compile\n"
+" -MMD As -MD, but ignore system header files\n"
+" -MF <file> Write dependency output to the given file\n"
+" -MG Treat missing header file as generated files\n"
+msgstr ""
+" -M Generar les dependencies de make\n"
+" -MM Com -M, però ignorales capçaleres sistema\n"
+" -MD Generar les dependencies de make i compilar\n"
+" -MMD Com -MD, però ignorales capçaleres sistema\n"
+" -MF <fitxer> Escriu les dependencies de sortida a el fitxer donat\n"
+" -MG Tractar les fitxers de capçalera com a fitxers generats\n"
+
+#: c-opts.c:1771
+msgid ""
+" -MP\t\t\t Generate phony targets for all headers\n"
+" -MQ <target> Add a MAKE-quoted target\n"
+" -MT <target> Add an unquoted target\n"
+msgstr ""
+" -MP\t\t\t Generar objectius facticis per a totes les capçaleres\n"
+" -MQ <objectiu> Afegir un objectiu MAKE-quoted\n"
+" -MT <objectiu> Afegir un objectiu sense parèntesis\n"
+
+#: c-opts.c:1776
+msgid ""
+" -D<macro> Define a <macro> with string '1' as its value\n"
+" -D<macro>=<val> Define a <macro> with <val> as its value\n"
+" -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"
+msgstr ""
+" -D<macro> Definir una <macro> amb la cadena '1' com valor\n"
+" -D<macro>=<val> Definir una <macro> amb <val> com valor\n"
+" -A<pregunta>=<resposta> Associar <resposta> a <pregunta>\n"
+" -A-<pregunta>=<resposta> Dissociar <resposta> de <pregunta>\n"
+" -U<macro> Només definir <macro> \n"
+" -v Mostrar el numero de versió\n"
+
+#: c-opts.c:1784
+msgid ""
+" -H Print the name of header files as they are used\n"
+" -C Do not discard comments\n"
+" -dM Display a list of macro definitions active at end\n"
+" -dD Preserve macro definitions in output\n"
+" -dN As -dD except that only the names are preserved\n"
+" -dI Include #include directives in the output\n"
+msgstr ""
+" -H Mostrar les noms de fitxers de capçalera quan estan utilitzats\n"
+" -C Posar les comentaris de costat\n"
+" -dM Mostrar al final una llista de les definicions de macro actives\n"
+" -dD Preservar les definicions de macro a la sortida\n"
+" -dN Com -dD excepte nomès les noms són preservats\n"
+" -dI Incloure les directives #include a la sortida\n"
+
+#: c-opts.c:1792
+msgid ""
+" -f[no-]preprocessed Treat the input file as already preprocessed\n"
+" -ftabstop=<number> Distance between tab stops for column reporting\n"
+" -P Do not generate #line directives\n"
+" -remap Remap file names when including files\n"
+" --help Display this information\n"
+msgstr ""
+" -f[no-]preprocessed Tractar el fitxer d'entrada com a ja preprocessat\n"
+" -ftabstop=<nombre> Seleccionar l'amplitud de tabulació per a les rapports\n"
+" -P No generar directives #line\n"
+" -remap Remapar les noms de fitxer quan s'inclouen fitxers\n"
+" -help Mostra aquesta informació\n"
+
+#. Like YYERROR but do call yyerror.
+#: c-parse.y:55 parse.y:48 objc-parse.y:55
+msgid "syntax error"
+msgstr "error sintàctic"
+
+#: /usr/share/bison/bison.simple:179
+msgid "syntax error: cannot back up"
+msgstr "error sintàctic: no es pot regressar"
+
+#: c-parse.y:325 objc-parse.y:346
+msgid "ISO C forbids an empty source file"
+msgstr "ISO C prohibeix un fitxer font buit"
+
+#: c-parse.y:366 c-typeck.c:6916 objc-parse.y:388
+msgid "argument of `asm' is not a constant string"
+msgstr "l'argument de \"asm\" no és una cadena constant"
+
+#: c-parse.y:374 objc-parse.y:396
+msgid "ISO C forbids data definition with no type or storage class"
+msgstr "ISO C prohibeix la definició de dades sense tipus o classe d'emmagatzematge"
+
+#: c-parse.y:376 objc-parse.y:398
+msgid "data definition has no type or storage class"
+msgstr "la definició de dades no té tipus o classe d'emmagatzematge"
+
+#: c-parse.y:389 objc-parse.y:411
+msgid "ISO C does not allow extra `;' outside of a function"
+msgstr "ISO C no permet \";\" extra fora d'una funció"
+
+#: c-parse.y:449 cppexp.c:1312
+msgid "traditional C rejects the unary plus operator"
+msgstr "C tradicional rebutja l'operador unari mes"
+
+#: c-parse.y:496 objc-parse.y:518
+msgid "`sizeof' applied to a bit-field"
+msgstr "\"sizeof\" aplicat a un camp de bits"
+
+#: c-parse.y:583 objc-parse.y:605
+msgid "ISO C forbids omitting the middle term of a ?: expression"
+msgstr "ISO C prohibeix l'omissió del terme mig d'una expressió ?:"
+
+#: c-parse.y:632 objc-parse.y:654
+msgid "ISO C89 forbids compound literals"
+msgstr "ISO C89 prohibeix les literals compostoses"
+
+#: c-parse.y:646 objc-parse.y:668
+msgid "ISO C forbids braced-groups within expressions"
+msgstr "ISO C prohibeix grups de claus dintre d'expressions"
+
+#: c-parse.y:677 objc-parse.y:699
+msgid "first argument to __builtin_choose_expr not a constant"
+msgstr "el primer argument per a __builtin_choose_expr no és una constant"
+
+#: c-parse.y:721 objc-parse.y:767
+msgid "traditional C rejects ISO C style function definitions"
+msgstr "C tradicional rebutja la definició de funcions d'estil ISO·C"
+
+#: c-parse.y:985 c-parse.y:991 c-parse.y:997 c-parse.y:1003 c-parse.y:1024
+#: c-parse.y:1030 c-parse.y:1036 c-parse.y:1042 c-parse.y:1075 c-parse.y:1081
+#: c-parse.y:1087 c-parse.y:1093 c-parse.y:1138 c-parse.y:1144 c-parse.y:1150
+#: c-parse.y:1156 parse.y:1933 parse.y:1940 parse.y:1975 objc-parse.y:1031
+#: objc-parse.y:1037 objc-parse.y:1043 objc-parse.y:1049 objc-parse.y:1070
+#: objc-parse.y:1076 objc-parse.y:1082 objc-parse.y:1088 objc-parse.y:1121
+#: objc-parse.y:1127 objc-parse.y:1133 objc-parse.y:1139 objc-parse.y:1184
+#: objc-parse.y:1190 objc-parse.y:1196 objc-parse.y:1202
+#, c-format
+msgid "`%s' is not at beginning of declaration"
+msgstr "\"%s\" no està en l'inici de la declaració"
+
+#: c-parse.y:1441 objc-parse.y:1496
+msgid "ISO C forbids empty initializer braces"
+msgstr "ISO C prohibeix les claus de iniciador buides"
+
+#: c-parse.y:1455 objc-parse.y:1510
+msgid "ISO C89 forbids specifying subobject to initialize"
+msgstr "ISO C89 prohibeix l'especificació de subobjectes a iniciar"
+
+#: c-parse.y:1458 objc-parse.y:1513
+msgid "obsolete use of designated initializer without `='"
+msgstr "ús obsolet del iniciador designat sense \"=\""
+
+#: c-parse.y:1462 objc-parse.y:1517
+msgid "obsolete use of designated initializer with `:'"
+msgstr "ús obsolet del iniciador designat amb \":\""
+
+#: c-parse.y:1489 objc-parse.y:1544
+msgid "ISO C forbids specifying range of elements to initialize"
+msgstr "ISO C prohibeix l'especificació de rangs d'elements a iniciar"
+
+#: c-parse.y:1497 c-parse.y:1528 objc-parse.y:1552 objc-parse.y:1583
+msgid "ISO C forbids nested functions"
+msgstr "ISO C prohibeix les funcions niades"
+
+#: c-parse.y:1703 objc-parse.y:1760
+msgid "ISO C forbids forward references to `enum' types"
+msgstr "ISO C prohibeix les declaracions posteriors per a tipus \"enum\""
+
+#: c-parse.y:1715 parse.y:2411 objc-parse.y:1772
+msgid "comma at end of enumerator list"
+msgstr "coma al final de la llista de numeradors"
+
+#: c-parse.y:1723 objc-parse.y:1780
+msgid "no semicolon at end of struct or union"
+msgstr "no hi ha punt i coma al final del struct o union"
+
+#: c-parse.y:1732 objc-parse.y:1789 objc-parse.y:2864
+msgid "extra semicolon in struct or union specified"
+msgstr "es va especificar un punt i coma extra en un struct o union"
+
+#: c-parse.y:1745 objc-parse.y:1816
+msgid "ISO C doesn't support unnamed structs/unions"
+msgstr "ISO C no té suport per a structs/unions sense nom"
+
+#: c-parse.y:1754 objc-parse.y:1825
+msgid "ISO C forbids member declarations with no members"
+msgstr "ISO C prohibeix declaracions de membres sense membres"
+
+#: c-parse.y:1913 objc-parse.y:1984
+msgid "deprecated use of label at end of compound statement"
+msgstr "ús depreciada de l'etiqueta al final de la declaració compostosa"
+
+#: c-parse.y:1930 objc-parse.y:2001
+msgid "ISO C89 forbids mixed declarations and code"
+msgstr "ISO C89 prohibeix les declaracions barrejades i codi"
+
+#: c-parse.y:2005 objc-parse.y:2080
+msgid "ISO C forbids label declarations"
+msgstr "ISO C prohibeix les declaracions etiquetades"
+
+#: c-parse.y:2055 parse.y:1638 objc-parse.y:2130
+msgid "braced-group within expression allowed only inside a function"
+msgstr "un grup de claus dintre d'una expressió només es permet dintre d'una funció"
+
+#: c-parse.y:2182 objc-parse.y:2257
+msgid "empty body in an else-statement"
+msgstr "cos buit en una declaració else"
+
+#: c-parse.y:2303 objc-parse.y:2378
+msgid "ISO C forbids `goto *expr;'"
+msgstr "ISO C prohibeix \"goto *expr;\""
+
+#: c-parse.y:2403 objc-parse.y:2478
+msgid "ISO C forbids forward parameter declarations"
+msgstr "ISO C prohibeix declaracions avançades de paràmetres"
+
+#. 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:2429 objc-parse.y:2504
+msgid "ISO C requires a named argument before `...'"
+msgstr "ISO C requereix un argument amb nom abans de \"...\""
+
+#: c-parse.y:2526 objc-parse.y:2601
+msgid "`...' in old-style identifier list"
+msgstr "\"...\" en una llista d'identificadors d'estil antic"
+
+#: /usr/share/bison/bison.simple:795
+msgid "parse error; also virtual memory exhausted"
+msgstr "error d'analitza; també es va excedir la memòria virtual"
+
+#: /usr/share/bison/bison.simple:799 cp/spew.c:364
+msgid "parse error"
+msgstr "error d'analitza"
+
+#: /usr/share/bison/bison.simple:924
+msgid "parser stack overflow"
+msgstr "desbordament de la pila del analitzador"
+
+#: c-parse.y:2838 cp/spew.c:1525 objc-parse.y:3537
+#, c-format
+msgid "%s at end of input"
+msgstr "%s al final de l'entrada"
+
+#: c-parse.y:2844 cp/spew.c:1533 objc-parse.y:3543
+#, c-format
+msgid "%s before %s'%c'"
+msgstr "%s abans de %s\"%c\""
+
+#: c-parse.y:2846 cp/spew.c:1535 objc-parse.y:3545
+#, c-format
+msgid "%s before %s'\\x%x'"
+msgstr "%s abans de %s\"\\x%x\""
+
+#: c-parse.y:2850 cp/spew.c:1542 objc-parse.y:3549
+#, c-format
+msgid "%s before string constant"
+msgstr "%s abans d'una constant de cadena"
+
+#: c-parse.y:2852 cp/spew.c:1544 objc-parse.y:3551
+#, c-format
+msgid "%s before numeric constant"
+msgstr "%s abans d'una constant numèrica"
+
+#: c-parse.y:2854 objc-parse.y:3553
+#, c-format
+msgid "%s before \"%s\""
+msgstr "%s abans de \"%s\""
+
+#: c-parse.y:2856 objc-parse.y:3555
+#, c-format
+msgid "%s before '%s' token"
+msgstr "%s abans l'element \"%s\""
+
+#: c-parse.y:2921
+msgid "traditional C rejects string concatenation"
+msgstr "C tradicional rebutja la concatenació de cadenes"
+
+#: c-parse.y:3047 objc-parse.y:3779
+#, c-format
+msgid "syntax error at '%s' token"
+msgstr "error sintàctic en l'element \"%s\""
+
+#: c-pragma.c:107
+msgid "#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
+msgstr "es va trobar un #pragma pack (pop) sense un #pragma pack (push, <n>) coincident"
+
+#: c-pragma.c:125
+#, c-format
+msgid "#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, <n>)"
+msgstr "es va trobar un #pragma pack (pop, %s) sense un #pragma pack (push, %s, <n>) coincident"
+
+#: c-pragma.c:145
+msgid "#pragma pack(push[, id], <n>) is not supported on this target"
+msgstr "no es dóna suport a #pragma pack(push[, id], <n>) en aquest objectiu"
+
+#: c-pragma.c:147
+msgid "#pragma pack(pop[, id], <n>) is not supported on this target"
+msgstr "no es dóna suport a #pragma pack(pop[, id], <n>) en aquest objectiu"
+
+#: c-pragma.c:167
+msgid "missing '(' after '#pragma pack' - ignored"
+msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat"
+
+#: c-pragma.c:180 c-pragma.c:230
+msgid "malformed '#pragma pack' - ignored"
+msgstr "\"#pragma pack\" malformat - ignorat"
+
+#: c-pragma.c:185
+msgid "malformed '#pragma pack(push[, id], <n>)' - ignored"
+msgstr "\"#pragma pack(push[, id], <n>)\" malformat - ignorat"
+
+#: c-pragma.c:187
+msgid "malformed '#pragma pack(pop[, id])' - ignored"
+msgstr "\"#pragma pack(pop[, id])\" malformat - ignorat"
+
+#: c-pragma.c:196
+#, c-format
+msgid "unknown action '%s' for '#pragma pack' - ignored"
+msgstr "acció \"%s\" desconeguda per a \"#pragma pack\" - ignorat"
+
+#: c-pragma.c:233
+msgid "junk at end of '#pragma pack'"
+msgstr "escombraries al final de \"#pragma pack\""
+
+#: c-pragma.c:247
+#, c-format
+msgid "alignment must be a small power of two, not %d"
+msgstr "l'alineació deu ser una potència petita de dos, no %d"
+
+#: c-pragma.c:280
+#, c-format
+msgid "applying #pragma weak `%s' after first use results in unspecified behavior"
+msgstr "l'aplicació del #pragma weak \"%s\" després del primer ús resulta en conducta no especificada"
+
+#: c-pragma.c:328 c-pragma.c:333
+msgid "malformed #pragma weak, ignored"
+msgstr "#pragma weak malformat, ignorat"
+
+#: c-pragma.c:337
+msgid "junk at end of #pragma weak"
+msgstr "escombraries al final de \"#pragma weak\""
+
+#: c-pragma.c:372 c-pragma.c:377
+msgid "malformed #pragma redefine_extname, ignored"
+msgstr "#pragma redefine_extname malformat, ignorat"
+
+#: c-pragma.c:382
+msgid "junk at end of #pragma redefine_extname"
+msgstr "escombraries al final de #pragma redefine_extname"
+
+#: c-pragma.c:389 c-pragma.c:470
+msgid "#pragma redefine_extname conflicts with declaration"
+msgstr "#pragma redefine_extname té conflictes amb la declaració"
+
+#: c-pragma.c:420
+msgid "malformed #pragma extern_prefix, ignored"
+msgstr "#pragma extern_prefix malformat, ignorat"
+
+#: c-pragma.c:425
+msgid "junk at end of #pragma extern_prefix"
+msgstr "escombraries al final de #pragma extern_prefix"
+
+#: c-pragma.c:457
+msgid "asm declaration conflicts with previous rename"
+msgstr "la declaració asm causa conflictes amb el rename previ"
+
+#: c-semantics.c:565
+msgid "break statement not within loop or switch"
+msgstr "la declaració break no està dintre d'un cicle o switch"
+
+#: c-semantics.c:583
+msgid "continue statement not within a loop"
+msgstr "la declaració continue no està dintre dintre d'un cicle"
+
+#: c-semantics.c:678
+msgid "destructor needed for `%#D'"
+msgstr "es necessita un destructor per a \"%#D\""
+
+#: c-semantics.c:679
+msgid "where case label appears here"
+msgstr "on l'etiqueta casi apareix aquí"
+
+#: c-semantics.c:682
+msgid "(enclose actions of previous case statements requiring destructors in their own scope.)"
+msgstr "(les accions adjuntes de declaracions casi prèvies requereixen destructors en el seu propi àmbit.)"
+
+#: c-semantics.c:725 c-typeck.c:6942 cp/semantics.c:897
+#, c-format
+msgid "%s qualifier ignored on asm"
+msgstr "qualificador %s ignorat en asm"
+
+#: c-typeck.c:123
+#, c-format
+msgid "`%s' has an incomplete type"
+msgstr "\"%s\" té un tipus incompleta"
+
+#: c-typeck.c:145 cp/call.c:2865
+msgid "invalid use of void expression"
+msgstr "ús invàlid de l'expressió void"
+
+#: c-typeck.c:153
+msgid "invalid use of flexible array member"
+msgstr "ús invàlid de membres de matriu flexible"
+
+#: c-typeck.c:159
+msgid "invalid use of array with unspecified bounds"
+msgstr "ús invàlid de matrius amb límits sense especificar"
+
+#: c-typeck.c:167
+#, c-format
+msgid "invalid use of undefined type `%s %s'"
+msgstr "ús invàlid del tipus indefinit \"%s %s\""
+
+#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
+#: c-typeck.c:171
+#, c-format
+msgid "invalid use of incomplete typedef `%s'"
+msgstr "ús invàlid del typedef incomplet \"%s\""
+
+#: c-typeck.c:424 c-typeck.c:438
+msgid "function types not truly compatible in ISO C"
+msgstr "els tipus de funció no són totalment compatibles en ISO C"
+
+#: c-typeck.c:603
+msgid "types are not quite compatible"
+msgstr "els tipus no són totalment compatibles"
+
+#: c-typeck.c:757 c-typeck.c:2687
+msgid "arithmetic on pointer to an incomplete type"
+msgstr "aritmètica en apuntador a un tipus incomplet"
+
+#: c-typeck.c:1136
+#, c-format
+msgid "%s has no member named `%s'"
+msgstr "%s no té un membre cridat \"%s\""
+
+#: c-typeck.c:1172
+#, c-format
+msgid "request for member `%s' in something not a structure or union"
+msgstr "petició del membre \"%s\" en alguna cosa que no és estructura o unió"
+
+#: c-typeck.c:1204
+msgid "dereferencing pointer to incomplete type"
+msgstr "punter dereferènciat a tipus de dada incompleta"
+
+#: c-typeck.c:1208
+msgid "dereferencing `void *' pointer"
+msgstr "dereferènciant el punter \"void *\""
+
+#: c-typeck.c:1225 cp/typeck.c:2369
+#, c-format
+msgid "invalid type argument of `%s'"
+msgstr "argument de tipus invàlid de \"%s\""
+
+#: c-typeck.c:1244 cp/typeck.c:2395
+msgid "subscript missing in array reference"
+msgstr "falta subindici en la referència de la matriu"
+
+#: c-typeck.c:1265 cp/typeck.c:2437
+msgid "array subscript has type `char'"
+msgstr "el subindici de matriu té un tipus \"char\""
+
+#: c-typeck.c:1273 c-typeck.c:1362 cp/typeck.c:2444 cp/typeck.c:2523
+msgid "array subscript is not an integer"
+msgstr "el subindici de la matriu no és un enter"
+
+#: c-typeck.c:1306
+msgid "ISO C forbids subscripting `register' array"
+msgstr "ISO C prohibeix el subindici d'una matriu \"register\""
+
+#: c-typeck.c:1308
+msgid "ISO C90 forbids subscripting non-lvalue array"
+msgstr "ISO C90 prohibeix el subindici d'una matriu non-lvalue"
+
+#: c-typeck.c:1341
+msgid "subscript has type `char'"
+msgstr "el subindici és de tipus \"char\""
+
+#: c-typeck.c:1357 cp/typeck.c:2518
+msgid "subscripted value is neither array nor pointer"
+msgstr "el valor indicat pel subindici no és ni matriu ni punter"
+
+#: c-typeck.c:1411
+#, c-format
+msgid "`%s' undeclared here (not in a function)"
+msgstr "\"%s\" no ha estat declarat aquí (no en una funció)"
+
+#: c-typeck.c:1418
+#, c-format
+msgid "`%s' undeclared (first use in this function)"
+msgstr "\"%s\" no ha estat declarat aquí (primer us en aquesta funció)"
+
+#: c-typeck.c:1423
+msgid "(Each undeclared identifier is reported only once"
+msgstr "(Cada identificador no declarat solament es reporta una vegada"
+
+#: c-typeck.c:1424
+msgid "for each function it appears in.)"
+msgstr "per a cada funció en la qual apareix.)"
+
+#: c-typeck.c:1441
+#, c-format
+msgid "local declaration of `%s' hides instance variable"
+msgstr "la declaració local de \"%s\" oculta la variable d'instància"
+
+#: c-typeck.c:1518
+msgid "called object is not a function"
+msgstr "l'objecte cridat no és una funció"
+
+#: c-typeck.c:1604 cp/typeck.c:2829
+msgid "too many arguments to function"
+msgstr "massa arguments per a la funció"
+
+#: c-typeck.c:1625
+#, c-format
+msgid "type of formal parameter %d is incomplete"
+msgstr "el tipus de dada del paràmetre formal %d està incomplet"
+
+#: c-typeck.c:1638
+#, c-format
+msgid "%s as integer rather than floating due to prototype"
+msgstr "%s com enter en lloc de coma flotant a causa del prototip"
+
+#: c-typeck.c:1641
+#, c-format
+msgid "%s as integer rather than complex due to prototype"
+msgstr "%s com enter en lloc de complex a causa del prototip"
+
+#: c-typeck.c:1644
+#, c-format
+msgid "%s as complex rather than floating due to prototype"
+msgstr "%s com complex en lloc de coma flotant a causa del prototip"
+
+#: c-typeck.c:1647
+#, c-format
+msgid "%s as floating rather than integer due to prototype"
+msgstr "%s com coma flotant en lloc d'enter a causa del prototip"
+
+#: c-typeck.c:1650
+#, c-format
+msgid "%s as complex rather than integer due to prototype"
+msgstr "%s com complex en lloc d'enter a causa del prototip"
+
+#: c-typeck.c:1653
+#, c-format
+msgid "%s as floating rather than complex due to prototype"
+msgstr "%s com coma flotant en lloc de complex a causa del prototip"
+
+#: c-typeck.c:1663
+#, c-format
+msgid "%s as `float' rather than `double' due to prototype"
+msgstr "%s com \"float\" en lloc de \"double\" a causa del prototip"
+
+#: c-typeck.c:1681
+#, c-format
+msgid "%s with different width due to prototype"
+msgstr "%s amb amplària diferent a causa del prototip"
+
+#: c-typeck.c:1715
+#, c-format
+msgid "%s as unsigned due to prototype"
+msgstr "%s com unsigned a causa del prototip"
+
+#: c-typeck.c:1717
+#, c-format
+msgid "%s as signed due to prototype"
+msgstr "%s com signed a causa del prototip"
+
+#: c-typeck.c:1751 cp/typeck.c:2933
+msgid "too few arguments to function"
+msgstr "molt pocs arguments per a la funció"
+
+#: c-typeck.c:1793
+msgid "suggest parentheses around + or - inside shift"
+msgstr "se suggereixen parèntesi al voltant de + o - dintre d'un desplaçament"
+
+#: c-typeck.c:1800
+msgid "suggest parentheses around && within ||"
+msgstr "se suggereixen parèntesi al voltant de && dintre de ||"
+
+#: c-typeck.c:1809
+msgid "suggest parentheses around arithmetic in operand of |"
+msgstr "se suggereixen parèntesi al voltant de l'aritmètica per a operada de |"
+
+#: c-typeck.c:1812
+msgid "suggest parentheses around comparison in operand of |"
+msgstr "se suggereixen parèntesi al voltant de les comparances per a operada de |"
+
+#: c-typeck.c:1821
+msgid "suggest parentheses around arithmetic in operand of ^"
+msgstr "se suggereixen parèntesi al voltant de l'aritmètica per a operada de ^"
+
+#: c-typeck.c:1824
+msgid "suggest parentheses around comparison in operand of ^"
+msgstr "se suggereixen parèntesi al voltant de les comparances per a operada de ^"
+
+#: c-typeck.c:1831
+msgid "suggest parentheses around + or - in operand of &"
+msgstr "se suggereixen parèntesi al voltant de + o - per a operada de &"
+
+#: c-typeck.c:1834
+msgid "suggest parentheses around comparison in operand of &"
+msgstr "se suggereixen parèntesi al voltant de les comparances per a operada de &"
+
+#: c-typeck.c:1841
+msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
+msgstr "les comparances com X<=Y<=Z no tenen el seu significat matemàtic"
+
+#: c-typeck.c:2001 c-typeck.c:2036
+msgid "division by zero"
+msgstr "divisió per zero"
+
+#: c-typeck.c:2081 cp/typeck.c:3194
+msgid "right shift count is negative"
+msgstr "el compte de desplaçament a la dreta es negatiu"
+
+#: c-typeck.c:2088 cp/typeck.c:3200
+msgid "right shift count >= width of type"
+msgstr "compte de desplaçament a la dreta >= amplària del tipus"
+
+#: c-typeck.c:2109 cp/typeck.c:3219
+msgid "left shift count is negative"
+msgstr "el compte de desplaçament a l'esquerra és negativa"
+
+#: c-typeck.c:2112 cp/typeck.c:3221
+msgid "left shift count >= width of type"
+msgstr "compte de desplaçament a l'esquerra >= amplària del tipus"
+
+#: c-typeck.c:2133
+msgid "shift count is negative"
+msgstr "compte de desplaçament a la dreta negatiu"
+
+#: c-typeck.c:2135
+msgid "shift count >= width of type"
+msgstr "ompte de desplaçament a la dreta >= amplària del tipus"
+
+#: c-typeck.c:2152 cp/typeck.c:3256
+msgid "comparing floating point with == or != is unsafe"
+msgstr "no és segura la comparança de coma flotant amb == o !="
+
+#: c-typeck.c:2178 c-typeck.c:2184
+msgid "ISO C forbids comparison of `void *' with function pointer"
+msgstr "ISO C prohibeix la comparança de \"void *\" amb un punter de funció"
+
+#: c-typeck.c:2187 c-typeck.c:2227 c-typeck.c:2255
+msgid "comparison of distinct pointer types lacks a cast"
+msgstr "la comparança de diferents tipus de punter manca d'una conversió"
+
+#: c-typeck.c:2201 c-typeck.c:2206 c-typeck.c:2275 c-typeck.c:2280
+msgid "comparison between pointer and integer"
+msgstr "comparança entre punter i enter"
+
+#: c-typeck.c:2222 c-typeck.c:2250
+msgid "ISO C forbids ordered comparisons of pointers to functions"
+msgstr "ISO C prohibeix la comparança entre punters a funcions"
+
+#: c-typeck.c:2247
+msgid "comparison of complete and incomplete pointers"
+msgstr "comparança de punters complets i incomplets"
+
+#: c-typeck.c:2263 c-typeck.c:2270
+msgid "ordered comparison of pointer with integer zero"
+msgstr "comparança ordenada de punter amb l'enter zero"
+
+#: c-typeck.c:2294 cp/typeck.c:3389
+msgid "unordered comparison on non-floating point argument"
+msgstr "comparança sense ordre en argument de coma no flotant"
+
+#: c-typeck.c:2505
+msgid "comparison between signed and unsigned"
+msgstr "comparança entre signed i unsigned"
+
+#: c-typeck.c:2551 cp/typeck.c:3633
+msgid "comparison of promoted ~unsigned with constant"
+msgstr "comparança d'un ~unsigned promogut amb una constant"
+
+#: c-typeck.c:2559 cp/typeck.c:3641
+msgid "comparison of promoted ~unsigned with unsigned"
+msgstr "comparança d'un ~unsigned promogut amb unsigned"
+
+#: c-typeck.c:2639
+msgid "pointer of type `void *' used in subtraction"
+msgstr "es va usar un punter de tipus \"void *\" en la substracció"
+
+#: c-typeck.c:2641
+msgid "pointer to a function used in subtraction"
+msgstr "es va usar un punter a una funció en la substracció"
+
+#: c-typeck.c:2738
+msgid "wrong type argument to unary plus"
+msgstr "argument de tipus erroni per a l'increment unari"
+
+#: c-typeck.c:2751
+msgid "wrong type argument to unary minus"
+msgstr "argument de tipus erroni per al decrement unari"
+
+#: c-typeck.c:2768
+msgid "ISO C does not support `~' for complex conjugation"
+msgstr "ISO C no té suport de \"~\" per a conjugacions complexes"
+
+#: c-typeck.c:2774
+msgid "wrong type argument to bit-complement"
+msgstr "argument de tipus erroni per a complement de bits"
+
+#: c-typeck.c:2783
+msgid "wrong type argument to abs"
+msgstr "argument de tipus erroni per a abs"
+
+#: c-typeck.c:2795
+msgid "wrong type argument to conjugation"
+msgstr "argument de tipus erroni per a la conjugació"
+
+#: c-typeck.c:2809
+msgid "wrong type argument to unary exclamation mark"
+msgstr "argument de tipus erroni per al signe d'exclamació unari"
+
+#: c-typeck.c:2852
+msgid "ISO C does not support `++' and `--' on complex types"
+msgstr "ISO C no té suport per a \"++\" i \"--\" en tipus complexos"
+
+#: c-typeck.c:2867 c-typeck.c:2899
+msgid "wrong type argument to increment"
+msgstr "argument de tipus erroni per a l'increment"
+
+#: c-typeck.c:2869 c-typeck.c:2901
+msgid "wrong type argument to decrement"
+msgstr "argument de tipus erroni pel decrement"
+
+#: c-typeck.c:2890
+msgid "increment of pointer to unknown structure"
+msgstr "increment de punter a estructura desconeguda"
+
+#: c-typeck.c:2892
+msgid "decrement of pointer to unknown structure"
+msgstr "decrement de punter a estructura desconeguda"
+
+#: c-typeck.c:3029
+msgid "ISO C forbids the address of a cast expression"
+msgstr "ISO C prohibeix l'adreça d'una expressió cast"
+
+#: c-typeck.c:3039
+msgid "invalid lvalue in unary `&'"
+msgstr "l-value invàlid en \"&\" unari"
+
+#: c-typeck.c:3071
+#, c-format
+msgid "attempt to take address of bit-field structure member `%s'"
+msgstr "es va intentar prendre l'adreça del membre de l'estructura de camps de bits \"%s\""
+
+#: c-typeck.c:3180 c-typeck.c:4651 c-typeck.c:4667 c-typeck.c:4683
+#: final.c:3146 final.c:3148 gcc.c:4381 rtl-error.c:122 toplev.c:1694
+#: config/cris/cris.c:545 cp/spew.c:1538 cp/typeck.c:4367 java/expr.c:364
+#: java/verify.c:1467 java/verify.c:1468 java/verify.c:1483
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: c-typeck.c:3241
+msgid "ISO C forbids use of conditional expressions as lvalues"
+msgstr "ISO C prohibeix l'ús d'expressions condicionals com l-values"
+
+#: c-typeck.c:3244
+msgid "ISO C forbids use of compound expressions as lvalues"
+msgstr "ISO C prohibeix l'ús d'expressions compostoses com l-valors"
+
+#: c-typeck.c:3247
+msgid "ISO C forbids use of cast expressions as lvalues"
+msgstr "ISO C prohibeix l'ús d'expressions de conversió com l-valors"
+
+#: c-typeck.c:3264
+#, c-format
+msgid "%s of read-only member `%s'"
+msgstr "%s del membre de només lectura \"%s\""
+
+#: c-typeck.c:3268
+#, c-format
+msgid "%s of read-only variable `%s'"
+msgstr "%s de la variable de només lectura \"%s\""
+
+#: c-typeck.c:3271
+#, c-format
+msgid "%s of read-only location"
+msgstr "%s de la ubicació de només lectura"
+
+#: c-typeck.c:3290
+#, c-format
+msgid "cannot take address of bit-field `%s'"
+msgstr "no es pot adquirir l'adreça del camp de bits \"%s\""
+
+#: c-typeck.c:3318
+#, c-format
+msgid "global register variable `%s' used in nested function"
+msgstr "es va usar la variable de registre global \"%s\" en funcions niades"
+
+#: c-typeck.c:3322
+#, c-format
+msgid "register variable `%s' used in nested function"
+msgstr "es va usar la va variable \"%s\" en funcions niades"
+
+#: c-typeck.c:3329
+#, c-format
+msgid "address of global register variable `%s' requested"
+msgstr "es va sol·licitar l'adreça de la variable de registre global \"%s\""
+
+#: c-typeck.c:3341
+msgid "cannot put object with volatile field into register"
+msgstr "no es pot posar objecte amb camp volatile en register"
+
+#: c-typeck.c:3345
+#, c-format
+msgid "address of register variable `%s' requested"
+msgstr "es va sol·licitar l'adreça de la variable register \"%s\""
+
+#: c-typeck.c:3453
+msgid "signed and unsigned type in conditional expression"
+msgstr "tipus signed i unsigned en l'expressió condicional"
+
+#: c-typeck.c:3460
+msgid "ISO C forbids conditional expr with only one void side"
+msgstr "ISO C prohibeix una expressió condicional amb només un costat void"
+
+#: c-typeck.c:3476 c-typeck.c:3483
+msgid "ISO C forbids conditional expr between `void *' and function pointer"
+msgstr "ISO C prohibeix expressions condicionals entre \"void *\" i punters de funcions"
+
+#: c-typeck.c:3489
+msgid "pointer type mismatch in conditional expression"
+msgstr "els tipus de dades punters no coincideixen en l'expressió condicional"
+
+#: c-typeck.c:3496 c-typeck.c:3506
+msgid "pointer/integer type mismatch in conditional expression"
+msgstr "els tipus de dades punters/enters no coincideixen en l'expressió condicional"
+
+#: c-typeck.c:3520
+msgid "type mismatch in conditional expression"
+msgstr "els tipus de dades no coincideixen en l'expressió condicional"
+
+#: c-typeck.c:3591 cp/typeck.c:4623
+msgid "left-hand operand of comma expression has no effect"
+msgstr "l'operador del costat esquerre de l'expressió coma no té efecte"
+
+#: c-typeck.c:3635
+msgid "cast specifies array type"
+msgstr "la conversió especifica el tipus matriu"
+
+#: c-typeck.c:3641
+msgid "cast specifies function type"
+msgstr "la conversió especifica el tipus funció"
+
+#: c-typeck.c:3651
+msgid "ISO C forbids casting nonscalar to the same type"
+msgstr "ISO C prohibeix la conversió d'un no escalar al mateix tipus"
+
+#: c-typeck.c:3670
+msgid "ISO C forbids casts to union type"
+msgstr "ISO C prohibeix la conversió al tipus union"
+
+#: c-typeck.c:3685
+msgid "cast to union type from type not present in union"
+msgstr "conversió a tipus union des d'un tipus no presenti en union"
+
+#: c-typeck.c:3736
+msgid "cast adds new qualifiers to function type"
+msgstr "la conversió afegeix nou qualificadors del tipus de la funció"
+
+#. There are qualifiers present in IN_OTYPE that are not
+#. present in IN_TYPE.
+#: c-typeck.c:3741
+msgid "cast discards qualifiers from pointer target type"
+msgstr "la conversió descarta els qualificadors del tipus de la destinació del punter"
+
+#: c-typeck.c:3756
+msgid "cast increases required alignment of target type"
+msgstr "la conversió incrementa l'alineació requerida del tipus de la destinació"
+
+#: c-typeck.c:3762 cp/typeck.c:5144
+msgid "cast from pointer to integer of different size"
+msgstr "conversió de punter a enter de grandària diferent"
+
+#: c-typeck.c:3767
+msgid "cast does not match function type"
+msgstr "la conversió no coincideix amb el tipus de la funció"
+
+#: c-typeck.c:3774 cp/typeck.c:5151
+msgid "cast to pointer from integer of different size"
+msgstr "conversió a punter des d'un enter de grandària diferent"
+
+#: c-typeck.c:3786
+msgid "type-punning to incomplete type might break strict-aliasing rules"
+msgstr "el càstig de tipus a tipus incomplet pot trencar les regles d'alies estricte"
+
+#: c-typeck.c:3790
+msgid "dereferencing type-punned pointer will break strict-aliasing rules"
+msgstr "el retorn de punters de tipus castigat trencarà les regles d'alies estricte"
+
+#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
+#. Reject anything strange now.
+#: c-typeck.c:3949
+msgid "invalid lvalue in assignment"
+msgstr "l-value invàlid en l'assignació"
+
+#. Convert new value to destination type.
+#: c-typeck.c:3958 c-typeck.c:3983 c-typeck.c:4000 cp/typeck.c:5266
+#: cp/typeck.c:5416
+msgid "assignment"
+msgstr "assignació"
+
+#: c-typeck.c:4070
+msgid "cannot pass rvalue to reference parameter"
+msgstr "no es pot passar un valor-r a un paràmetre de referència"
+
+#: c-typeck.c:4174 c-typeck.c:4241
+#, c-format
+msgid "%s makes qualified function pointer from unqualified"
+msgstr "%s fa un punter de funció qualificat des d'un no qualificat"
+
+#: c-typeck.c:4178 c-typeck.c:4221
+#, c-format
+msgid "%s discards qualifiers from pointer target type"
+msgstr "%s descarta els calificadors del tipus de la destinació del punter"
+
+#: c-typeck.c:4184
+msgid "ISO C prohibits argument conversion to union type"
+msgstr "ISO C prohibeix la conversió d'arguments a tipus union"
+
+#: c-typeck.c:4213
+#, c-format
+msgid "ISO C forbids %s between function pointer and `void *'"
+msgstr "ISO C prohibeix %s entre punters a funció i \"void *\""
+
+#: c-typeck.c:4230
+#, c-format
+msgid "pointer targets in %s differ in signedness"
+msgstr "el punter que apunta a %s difereix en signe"
+
+#: c-typeck.c:4246
+#, c-format
+msgid "%s from incompatible pointer type"
+msgstr "%s de tipus de punter incompatible"
+
+#: c-typeck.c:4252 c-typeck.c:4804 cp/typeck.c:1653
+msgid "invalid use of non-lvalue array"
+msgstr "ús invàlid de matriu no lvaluada"
+
+#: c-typeck.c:4267
+#, c-format
+msgid "%s makes pointer from integer without a cast"
+msgstr "%s crea un punter des d'un enter sense una conversió"
+
+#: c-typeck.c:4275
+#, c-format
+msgid "%s makes integer from pointer without a cast"
+msgstr "%s crea un enter des d'un punter sense una conversió"
+
+#: c-typeck.c:4289 c-typeck.c:4292
+#, c-format
+msgid "incompatible type for argument %d of `%s'"
+msgstr "tipus incompatible per a l'argument %d de \"%s\""
+
+#: c-typeck.c:4296
+#, c-format
+msgid "incompatible type for argument %d of indirect function call"
+msgstr "tipus incompatible per a l'argument %d de la cridada indirecta a funció"
+
+#: c-typeck.c:4300
+#, c-format
+msgid "incompatible types in %s"
+msgstr "tipus incompatibles en %s"
+
+#. Function name is known; supply it.
+#: c-typeck.c:4358
+#, c-format
+msgid "passing arg of `%s'"
+msgstr "passant l'argument de \"%s\""
+
+#. Function name unknown (call through ptr).
+#: c-typeck.c:4368
+msgid "passing arg of pointer to function"
+msgstr "passant l'argument del punter a la funció"
+
+#. Function name is known; supply it.
+#: c-typeck.c:4376
+#, c-format
+msgid "passing arg %d of `%s'"
+msgstr "passant l'argument %d de \"%s\""
+
+#. Function name unknown (call through ptr); just give arg number.
+#: c-typeck.c:4386
+#, c-format
+msgid "passing arg %d of pointer to function"
+msgstr "passant l'argument %d del punter a la funció"
+
+#: c-typeck.c:4452
+msgid "initializer for static variable is not constant"
+msgstr "el valor inicial assignat per a la variable estàtica no es constant"
+
+#: c-typeck.c:4458
+msgid "initializer for static variable uses complicated arithmetic"
+msgstr "el valor inicial assignat per a la variable estàtica usa aritmètica complicada"
+
+#: c-typeck.c:4466
+msgid "aggregate initializer is not constant"
+msgstr "el inicialitzador agregat no és una constant"
+
+#: c-typeck.c:4468
+msgid "aggregate initializer uses complicated arithmetic"
+msgstr "el inicialitzador agregat usa aritmètica complicada"
+
+#: c-typeck.c:4475
+msgid "traditional C rejects automatic aggregate initialization"
+msgstr "C tradicional rebutja la iniciació automàtica d'agregats"
+
+#: c-typeck.c:4654 c-typeck.c:4670 c-typeck.c:4686
+#, c-format
+msgid "(near initialization for `%s')"
+msgstr "(prop de l'assignació de valors inicials per a \"%s\")"
+
+#: c-typeck.c:4737 cp/typeck2.c:488
+msgid "char-array initialized from wide string"
+msgstr "matriu de caràcters amb valors inicials assignats d'una cadena ampla"
+
+#: c-typeck.c:4744 cp/typeck2.c:495
+msgid "int-array initialized from non-wide string"
+msgstr "matriu d'enters amb valors inicials assignats d'una cadena no ampla"
+
+#: c-typeck.c:4762 cp/typeck2.c:511
+msgid "initializer-string for array of chars is too long"
+msgstr "la cadena de valors inicials per a la matriu de caràcters és massa llarga"
+
+#: c-typeck.c:4822
+msgid "array initialized from non-constant array expression"
+msgstr "matriu amb valors inicials assignats d'una expressió matricial que no és constant"
+
+#: c-typeck.c:4839 c-typeck.c:4841 c-typeck.c:4857 c-typeck.c:4878
+#: c-typeck.c:6281
+msgid "initializer element is not constant"
+msgstr "l'element de valor inicial no és constant"
+
+#: c-typeck.c:4873
+msgid "initialization"
+msgstr "assignació de valors inicials"
+
+#: c-typeck.c:4884 c-typeck.c:6286
+msgid "initializer element is not computable at load time"
+msgstr "l'element de valor inicial no és calculable al moment de la càrrega"
+
+#: c-typeck.c:4899 cp/typeck2.c:588
+msgid "invalid initializer"
+msgstr "valor inicial invàlid"
+
+#: c-typeck.c:5393
+msgid "extra brace group at end of initializer"
+msgstr "grup extra de claus al final dels valors inicials"
+
+#: c-typeck.c:5413
+msgid "missing braces around initializer"
+msgstr "falten claus al voltant dels valors inicials"
+
+#: c-typeck.c:5473
+msgid "braces around scalar initializer"
+msgstr "claus al voltant del valor inicial escalar"
+
+#: c-typeck.c:5521
+msgid "initialization of flexible array member in a nested context"
+msgstr "iniciació d'un membre de matriu flexible en un context niat"
+
+#: c-typeck.c:5523
+msgid "initialization of a flexible array member"
+msgstr "iniciació d'un membre de matriu flexible"
+
+#: c-typeck.c:5554
+msgid "missing initializer"
+msgstr "falta valor inicial"
+
+#: c-typeck.c:5580
+msgid "empty scalar initializer"
+msgstr "valor inicial escalar buidor"
+
+#: c-typeck.c:5585
+msgid "extra elements in scalar initializer"
+msgstr "elements extres en valor inicial escalar"
+
+#: c-typeck.c:5671
+msgid "initialization designators may not nest"
+msgstr "no es poden niar els designadors d'iniciació"
+
+#: c-typeck.c:5692 c-typeck.c:5763
+msgid "array index in non-array initializer"
+msgstr "índex de matriu en valor inicial que no és de matriu"
+
+#: c-typeck.c:5697 c-typeck.c:5817
+msgid "field name not in record or union initializer"
+msgstr "el nom del camp no està en el inicialitzador de record o union"
+
+#: c-typeck.c:5759 c-typeck.c:5761
+msgid "nonconstant array index in initializer"
+msgstr "índex de matriu no constant en valor inicial"
+
+#: c-typeck.c:5765 c-typeck.c:5768
+msgid "array index in initializer exceeds array bounds"
+msgstr "l'índex de matriu en el valor inicial excedeix els límits de la matriu"
+
+#: c-typeck.c:5779
+msgid "empty index range in initializer"
+msgstr "rang d'índexs buit en valor inicial"
+
+#: c-typeck.c:5788
+msgid "array index range in initializer exceeds array bounds"
+msgstr "el rang d'índexs de la matriu en el valor inicial excedeix els límits de la matriu"
+
+#: c-typeck.c:5829
+#, c-format
+msgid "unknown field `%s' specified in initializer"
+msgstr "camp \"%s\" desconegut especificat en el valor inicial"
+
+#: c-typeck.c:5866 c-typeck.c:5887 c-typeck.c:6348
+msgid "initialized field with side-effects overwritten"
+msgstr "camp iniciat amb efectes laterals sobreescrits"
+
+#: c-typeck.c:6558
+msgid "excess elements in char array initializer"
+msgstr "excés d'elements en valors inicials de matriu de caràcters"
+
+#: c-typeck.c:6565 c-typeck.c:6611
+msgid "excess elements in struct initializer"
+msgstr "excés d'elements en valors inicials de struct"
+
+#: c-typeck.c:6626
+msgid "non-static initialization of a flexible array member"
+msgstr "iniciació no estàtica d'un membre de matriu flexible"
+
+#: c-typeck.c:6693
+msgid "excess elements in union initializer"
+msgstr "excés d'elements en valors inicials de union"
+
+#: c-typeck.c:6714
+msgid "traditional C rejects initialization of unions"
+msgstr "C tradicional rebutja els valors inicials de unions"
+
+#: c-typeck.c:6777
+msgid "excess elements in array initializer"
+msgstr "excés d'elements en valors inicials de matriu"
+
+#: c-typeck.c:6806
+msgid "excess elements in vector initializer"
+msgstr "excés d'elements en valor inicial vectorial"
+
+#: c-typeck.c:6828
+msgid "excess elements in scalar initializer"
+msgstr "excés d'elements en valor inicial escalar"
+
+#: c-typeck.c:6935
+msgid "asm template is not a string constant"
+msgstr "la plantilla asm no és una cadena constant"
+
+#: c-typeck.c:6967
+msgid "invalid lvalue in asm statement"
+msgstr "lvalue invàlid en declaració asm"
+
+#: c-typeck.c:7042
+msgid "modification by `asm'"
+msgstr "modificació per \"asm\""
+
+#: c-typeck.c:7061 cp/typeck.c:6237
+msgid "function declared `noreturn' has a `return' statement"
+msgstr "la funció declarada \"noreturn\" té una declaració \"return\""
+
+#: c-typeck.c:7068
+msgid "`return' with no value, in function returning non-void"
+msgstr "\"return\" sense valors, en una funció que retorna non-void"
+
+#: c-typeck.c:7074
+msgid "`return' with a value, in function returning void"
+msgstr "\"return\" amb valor, en una funció que retorna void"
+
+#: c-typeck.c:7078
+msgid "return"
+msgstr "return"
+
+#: c-typeck.c:7130
+msgid "function returns address of local variable"
+msgstr "la funció retorna l'adreça d'una variable local"
+
+#: c-typeck.c:7186 cp/semantics.c:555
+msgid "switch quantity not an integer"
+msgstr "la quantitat de switch no és un enter"
+
+#: c-typeck.c:7196
+msgid "`long' switch expression not converted to `int' in ISO C"
+msgstr "no es converteix l'expressió de switch \"long\" a \"int\" en ISO C"
+
+#: c-typeck.c:7231 cp/decl.c:5523
+msgid "case label not within a switch statement"
+msgstr "l'etiqueta casi no es troba dintre d'una declaració switch"
+
+#: c-typeck.c:7233 cp/decl.c:5528
+msgid "`default' label not within a switch statement"
+msgstr "l'etiqueta \"default\" no està dintre d'una declaració switch"
+
+#: calls.c:1934 tree-inline.c:1177
+#, c-format
+msgid "inlining failed in call to `%s'"
+msgstr "el \"inlining\" va fallar en la cridada a \"%s\""
+
+#: calls.c:1935 calls.c:2271 tree-inline.c:1178
+msgid "called from here"
+msgstr "cridat des d'aquí"
+
+#: calls.c:2270
+#, c-format
+msgid "can't inline call to `%s'"
+msgstr "no es poden fer la cridada inline a \"%s\""
+
+#: calls.c:2300
+msgid "function call has aggregate value"
+msgstr "la cridada a la funció té valor agregat"
+
+#: cfgloop.c:1107
+#, c-format
+msgid "Size of loop %d should be %d, not %d."
+msgstr "La grandària del cicle %d deu ser %d, no %d."
+
+#: cfgloop.c:1126
+#, c-format
+msgid "Bb %d do not belong to loop %d."
+msgstr "Bb %d no pertany al cicle %d."
+
+#: cfgloop.c:1144
+#, c-format
+msgid "Loop %d's header does not have exactly 2 entries."
+msgstr "L'encapçalat del cicle %d no té exactament 2 entrades."
+
+#: cfgloop.c:1152
+#, c-format
+msgid "Loop %d's latch does not have exactly 1 successor."
+msgstr "El forrellat del cicle %d no té exactament 1 successor."
+
+#: cfgloop.c:1157
+#, c-format
+msgid "Loop %d's latch does not have header as successor."
+msgstr "El forrellat del cicle %d no té un encapçalat com successor."
+
+#: cfgloop.c:1162
+#, c-format
+msgid "Loop %d's latch does not belong directly to it."
+msgstr "El forrellat del cicle %d no pertany directament a ell."
+
+#: cfgloop.c:1168
+#, c-format
+msgid "Loop %d's header does not belong directly to it."
+msgstr "L'encapçalat del cicle %d no pertany directament a ell."
+
+#: cfgrtl.c:1774
+#, c-format
+msgid "bb %d on wrong place"
+msgstr "bb %d en un lloc equivocat"
+
+#: cfgrtl.c:1780
+#, c-format
+msgid "prev_bb of %d should be %d, not %d"
+msgstr "el prev_bb de %d deu ser %d, no %d"
+
+#: cfgrtl.c:1800
+#, c-format
+msgid "end insn %d for block %d not found in the insn stream"
+msgstr "el insn final %d per al bloc %d no es troba en el fluix insn"
+
+#: cfgrtl.c:1814
+#, c-format
+msgid "insn %d is in multiple basic blocks (%d and %d)"
+msgstr "insn %d està en múltiples blocs bàsics (%d i %d)"
+
+#: cfgrtl.c:1826
+#, c-format
+msgid "head insn %d for block %d not found in the insn stream"
+msgstr "el cap insn %d per al bloc %d no es troba en el fluix insn"
+
+#: cfgrtl.c:1848
+#, c-format
+msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i"
+msgstr "verify_flow_info: REG_BR_PROB no coincideix amb la configuració %i %i"
+
+#: cfgrtl.c:1855
+#, c-format
+msgid "verify_flow_info: Wrong count of block %i %i"
+msgstr "verify_flow_info: Compte erroni del bloc %i %i"
+
+#: cfgrtl.c:1861
+#, c-format
+msgid "verify_flow_info: Wrong frequency of block %i %i"
+msgstr "verify_flow_info: Freqüència errònia del bloc %i %i"
+
+#: cfgrtl.c:1869
+#, c-format
+msgid "verify_flow_info: Duplicate edge %i->%i"
+msgstr "verify_flow_info: Vora duplicada %i->%i"
+
+#: cfgrtl.c:1875
+#, c-format
+msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
+msgstr "verify_flow_info: Probabilitat errònia de la vora %i->%i %i"
+
+#: cfgrtl.c:1881
+#, c-format
+msgid "verify_flow_info: Wrong count of edge %i->%i %i"
+msgstr "verify_flow_info: Compte erroni de la vora %i->%i %i"
+
+#: cfgrtl.c:1911
+#, c-format
+msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
+msgstr "verify_flow_info: Blocs incorrectes per al respatller %i->%i"
+
+#: cfgrtl.c:1926
+#, c-format
+msgid "verify_flow_info: Incorrect fallthru %i->%i"
+msgstr "verify_flow_info: Respatller incorrecte %i->%i"
+
+#: cfgrtl.c:1928
+msgid "wrong insn in the fallthru edge"
+msgstr "insn erroni en la vora del respatller"
+
+#: cfgrtl.c:1935
+#, c-format
+msgid "verify_flow_info: Basic block %d succ edge is corrupted"
+msgstr "verify_flow_info: El bloc bàsic %d succ edge està corrupte"
+
+#: cfgrtl.c:1951
+#, c-format
+msgid "Missing REG_EH_REGION note in the end of bb %i"
+msgstr "Manca la nota REG_EH_REGION al final de bb %i"
+
+#: cfgrtl.c:1959
+#, c-format
+msgid "Too many outgoing branch edges from bb %i"
+msgstr "Massa vores de ramificació de sortida de bb %i"
+
+#: cfgrtl.c:1964
+#, c-format
+msgid "Fallthru edge after unconditional jump %i"
+msgstr "Vora de caiguda després del salt incondicional %i"
+
+#: cfgrtl.c:1969
+#, c-format
+msgid "Wrong amount of branch edges after unconditional jump %i"
+msgstr "Quantitat errònia de vores de ramificació després del salt incondicional %i"
+
+#: cfgrtl.c:1975
+#, c-format
+msgid "Wrong amount of branch edges after conditional jump %i"
+msgstr "Quantitat errònia de vores de ramificació després del salt condicional %i"
+
+#: cfgrtl.c:1980
+#, c-format
+msgid "Call edges for non-call insn in bb %i"
+msgstr "Bords de cridada per a una insn que no és cridada en bb %i"
+
+#: cfgrtl.c:1989
+#, c-format
+msgid "Abnormal edges for no purpose in bb %i"
+msgstr "Vores anormals sense cap propòsit en bb %i"
+
+#: cfgrtl.c:2004
+#, c-format
+msgid "missing barrier after block %i"
+msgstr "falta una barrera després del bloc %i"
+
+#: cfgrtl.c:2014
+#, c-format
+msgid "basic block %d pred edge is corrupted"
+msgstr "el bloc bàsic %d pred edge està corrupte"
+
+#: cfgrtl.c:2031
+#, c-format
+msgid "insn %d inside basic block %d but block_for_insn is NULL"
+msgstr "insn %d està dintre del bloc bàsic %d però block_for_insn és NULL"
+
+#: cfgrtl.c:2035
+#, c-format
+msgid "insn %d inside basic block %d but block_for_insn is %i"
+msgstr "insn %d està dintre del bloc bàsic %d però block_for_insn és %i"
+
+#: cfgrtl.c:2049 cfgrtl.c:2059
+#, c-format
+msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
+msgstr "NOTE_INSN_BASIC_BLOCK mancada per al bloc %d"
+
+#: cfgrtl.c:2072
+#, c-format
+msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
+msgstr "NOTE_INSN_BASIC_BLOCK %d en el mitjà del bloc bàsic %d"
+
+#: cfgrtl.c:2084
+#, c-format
+msgid "in basic block %d:"
+msgstr "en el bloc bàsic %d:"
+
+#: cfgrtl.c:2085
+msgid "flow control insn inside a basic block"
+msgstr "control de fluix insn dintre el bloc bàsic"
+
+#: cfgrtl.c:2104
+#, c-format
+msgid "basic block %i edge lists are corrupted"
+msgstr "les llistes de vora del bloc bàsic %i estan corruptes"
+
+#: cfgrtl.c:2119
+msgid "basic blocks not numbered consecutively"
+msgstr "els blocs bàsics no estan numerats consecutivament"
+
+#: cfgrtl.c:2144
+msgid "insn outside basic block"
+msgstr "insn fora del bloc bàsic"
+
+#: cfgrtl.c:2152
+msgid "return not followed by barrier"
+msgstr "return no és seguit per una barrera"
+
+#: cfgrtl.c:2157
+#, c-format
+msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
+msgstr "el nombre de notes bb en la cadena insn (%d) != n_basic_blocks (%d)"
+
+#: cfgrtl.c:2161
+msgid "verify_flow_info failed"
+msgstr "verify_flow_info fallat"
+
+#: collect2.c:425
+msgid "internal error"
+msgstr "error intern"
+
+#: collect2.c:934
+msgid "no arguments"
+msgstr "sense arguments"
+
+#: collect2.c:1263 collect2.c:1411 collect2.c:1444
+#, c-format
+msgid "fopen %s"
+msgstr "fopen %s"
+
+#: collect2.c:1266 collect2.c:1416 collect2.c:1447
+#, c-format
+msgid "fclose %s"
+msgstr "fclose %s"
+
+#: collect2.c:1275
+#, c-format
+msgid "collect2 version %s"
+msgstr "collect2 versió %s"
+
+#: collect2.c:1365
+#, c-format
+msgid "%d constructor(s) found\n"
+msgstr "es troba(en) %d constructor(s)\n"
+
+#: collect2.c:1366
+#, c-format
+msgid "%d destructor(s) found\n"
+msgstr "es troba(en) %d destructor(s)\n"
+
+#: collect2.c:1367
+#, c-format
+msgid "%d frame table(s) found\n"
+msgstr "es troba(en) %d marcs de matriu(es)\n"
+
+#: collect2.c:1508
+#, c-format
+msgid "%s terminated with signal %d [%s]%s"
+msgstr "%s acabat amb el senyal %d [%s]%s"
+
+#: collect2.c:1527
+#, c-format
+msgid "%s returned %d exit status"
+msgstr "%s va retornar l'estat de sortida %d"
+
+#: collect2.c:1555
+#, c-format
+msgid "[cannot find %s]"
+msgstr "[no es pot trobar %s]"
+
+#: collect2.c:1570
+#, c-format
+msgid "cannot find `%s'"
+msgstr "no es pot trobar \"%s\""
+
+#: collect2.c:1581 collect2.c:1584
+#, c-format
+msgid "redirecting stdout: %s"
+msgstr "redirigint sortida estàndard: %s"
+
+#: collect2.c:1627
+#, c-format
+msgid "[Leaving %s]\n"
+msgstr "[Deixant %s]\n"
+
+#: collect2.c:1870
+#, c-format
+msgid ""
+"\n"
+"write_c_file - output name is %s, prefix is %s\n"
+msgstr ""
+"\n"
+"write_c_file - el nom de sortida és %s, el prefix és %s\n"
+
+#: collect2.c:2082
+msgid "cannot find `nm'"
+msgstr "no es pot trobar \"nm\""
+
+#: collect2.c:2092 collect2.c:2533
+msgid "pipe"
+msgstr "pipe"
+
+#: collect2.c:2096 collect2.c:2537
+msgid "fdopen"
+msgstr "fdopen"
+
+#: collect2.c:2122 collect2.c:2563
+#, c-format
+msgid "dup2 %d 1"
+msgstr "dup2 %d 1"
+
+#: collect2.c:2125 collect2.c:2128 collect2.c:2141 collect2.c:2566
+#: collect2.c:2569 collect2.c:2582
+#, c-format
+msgid "close %d"
+msgstr "close %d"
+
+#: collect2.c:2131 collect2.c:2572
+#, c-format
+msgid "execv %s"
+msgstr "execv %s"
+
+#: collect2.c:2185
+#, c-format
+msgid "init function found in object %s"
+msgstr "es va trobar la funció init en l'objecte %s"
+
+#: collect2.c:2193
+#, c-format
+msgid "fini function found in object %s"
+msgstr "es va trobar la funció fini en l'objecte %s"
+
+#: collect2.c:2216 collect2.c:2621
+msgid "fclose"
+msgstr "fclose"
+
+#: collect2.c:2261
+#, c-format
+msgid "unable to open file '%s'"
+msgstr "no es pot obrir el fitxer \"%s\""
+
+#: collect2.c:2263
+#, c-format
+msgid "unable to stat file '%s'"
+msgstr "no es pot avaluar el fitxer \"%s\""
+
+#: collect2.c:2269
+#, c-format
+msgid "unable to mmap file '%s'"
+msgstr "no es pot fer mmap al fitxer \"%s\""
+
+#: collect2.c:2422
+msgid "not found\n"
+msgstr "no trobat\n"
+
+#: collect2.c:2424 collect2.c:2600
+#, c-format
+msgid "dynamic dependency %s not found"
+msgstr "no es troba la dependència dinàmica %s"
+
+#: collect2.c:2444
+#, c-format
+msgid "bad magic number in file '%s'"
+msgstr "nombre màgic erroni en el fitxer \"%s\""
+
+#: collect2.c:2466
+msgid "dynamic dependencies.\n"
+msgstr "dependències dinàmiques.\n"
+
+#: collect2.c:2524
+msgid "cannot find `ldd'"
+msgstr "no es troba \"ldd\""
+
+#: collect2.c:2585
+msgid ""
+"\n"
+"ldd output with constructors/destructors.\n"
+msgstr ""
+"\n"
+"sortida de ldd amb constructors/destructors.\n"
+
+#: collect2.c:2612
+#, c-format
+msgid "unable to open dynamic dependency '%s'"
+msgstr "no es pot obrir la dependència dinàmica \"%s\""
+
+#: collect2.c:2726
+#, c-format
+msgid "%s: not a COFF file"
+msgstr "%s: no és un fitxer COFF"
+
+#: collect2.c:2845
+#, c-format
+msgid "%s: cannot open as COFF file"
+msgstr "%s: no es pot obrir com un fitxer COFF"
+
+#: collect2.c:2901
+#, c-format
+msgid "library lib%s not found"
+msgstr "no es troba la biblioteca lib%s"
+
+#: collect2.c:3028
+#, c-format
+msgid "open %s"
+msgstr "obrir %s"
+
+#: collect2.c:3051
+msgid "incompatibilities between object file & expected values"
+msgstr "incompatibilitats entre el fitxer objecte i els valors esperats"
+
+#: collect2.c:3124
+#, c-format
+msgid ""
+"\n"
+"Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+msgstr ""
+"\n"
+"Processant la matriu de símbols #%d, desplacament = 0x%.8lx, tipus = %s\n"
+
+#: collect2.c:3133
+msgid "string section missing"
+msgstr "falta la secció de cadenes"
+
+#: collect2.c:3136
+msgid "section pointer missing"
+msgstr "falta la secció de punters"
+
+#: collect2.c:3184
+msgid "no symbol table found"
+msgstr "no es troba la matriu de símbols"
+
+#: collect2.c:3197
+msgid "no cmd_strings found"
+msgstr "no es troben cmd_strings"
+
+#: collect2.c:3209
+msgid ""
+"\n"
+"Updating header and load commands.\n"
+"\n"
+msgstr ""
+"\n"
+"Actualitzant les ordres d'encapçalat i càrrega.\n"
+"\n"
+
+#: collect2.c:3216
+#, c-format
+msgid "load command map, %d cmds, new size %ld.\n"
+msgstr "carregar mapa d'ordres, %d ordres, nova grandària %ld.\n"
+
+#: collect2.c:3247
+msgid ""
+"writing load commands.\n"
+"\n"
+msgstr ""
+"escrivint les ordres de càrrega.\n"
+"\n"
+
+#: collect2.c:3267
+#, c-format
+msgid "close %s"
+msgstr "tancar %s"
+
+#: collect2.c:3341
+msgid "could not convert 0x%l.8x into a region"
+msgstr "no es pot convertir 0x%l.8x en una regió"
+
+#: collect2.c:3345
+#, c-format
+msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
+msgstr "funció %s, regió %d, desfasament = %ld (0x%.8lx)\n"
+
+#: collect2.c:3472
+msgid "bad magic number"
+msgstr "nombre màgic erroni"
+
+#: collect2.c:3473
+msgid "bad header version"
+msgstr "versió d'encapçalat errònia"
+
+#: collect2.c:3474
+msgid "bad raw header version"
+msgstr "versió d'encapçalat textual errònia"
+
+#: collect2.c:3475
+msgid "raw header buffer too small"
+msgstr "emmagatzematge temporal d'encapçalat textual massa petit"
+
+#: collect2.c:3476
+msgid "old raw header file"
+msgstr "fitxer d'encapçalat textual antic"
+
+#: collect2.c:3477
+msgid "unsupported version"
+msgstr "versió sense suport"
+
+#: collect2.c:3479
+#, c-format
+msgid "unknown {de,en}code_mach_o_hdr return value %d"
+msgstr "valor de devolució {de,en}code_mach_o_hdr %d desconegut"
+
+#: collect2.c:3499
+#, c-format
+msgid "fstat %s"
+msgstr "fstat %s"
+
+#: collect2.c:3536 collect2.c:3584
+#, c-format
+msgid "lseek %s 0"
+msgstr "lseek %s 0"
+
+#: collect2.c:3540
+#, c-format
+msgid "read %s"
+msgstr "read %s"
+
+#: collect2.c:3543
+#, c-format
+msgid "read %ld bytes, expected %ld, from %s"
+msgstr "%ld octets llegits, s'esperaven %ld, de %s"
+
+#: collect2.c:3564
+#, c-format
+msgid "msync %s"
+msgstr "msync %s"
+
+#: collect2.c:3571
+#, c-format
+msgid "munmap %s"
+msgstr "munmap %s"
+
+#: collect2.c:3588
+#, c-format
+msgid "write %s"
+msgstr "write %s"
+
+#: collect2.c:3591
+#, c-format
+msgid "wrote %ld bytes, expected %ld, to %s"
+msgstr "%ld octets escrits, s'esperaven %ld, a %s"
+
+#: combine.c:13222
+#, c-format
+msgid ""
+";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
+"\n"
+msgstr ""
+";; Estadístiques del combinador: %d intents, %d substitucions (%d van requerir espai nou),\n"
+";; %d èxits.\n"
+"\n"
+
+#: combine.c:13232
+#, c-format
+msgid ""
+"\n"
+";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
+msgstr ""
+"\n"
+";; Totals del combinador: %d intents, %d substitucions (%d van requerir espai nou),\n"
+";; %d èxits.\n"
+
+#: convert.c:69
+msgid "cannot convert to a pointer type"
+msgstr "no es pot convertir a un tipus punter"
+
+#: convert.c:102
+msgid "pointer value used where a floating point value was expected"
+msgstr "es va usar un valor de punter on s'esperava un valor de coma flotant"
+
+#: convert.c:106
+msgid "aggregate value used where a float was expected"
+msgstr "es va usar un valor agregat on s'esperava un float"
+
+#: convert.c:132
+msgid "conversion to incomplete type"
+msgstr "conversió a tipus de dada incompleta"
+
+#: convert.c:414 convert.c:494
+msgid "can't convert between vector values of different size"
+msgstr "no es pot convertir entre valors vectorials de grandàries diferents"
+
+#: convert.c:420
+msgid "aggregate value used where an integer was expected"
+msgstr "es va usar un valor agregat on s'esperava un enter"
+
+#: convert.c:472 f/com.c:1100
+msgid "pointer value used where a complex was expected"
+msgstr "es va usar un valor de punter on s'esperava un complex"
+
+#: convert.c:476 f/com.c:1102
+msgid "aggregate value used where a complex was expected"
+msgstr "es va usar un valor agregat on s'esperava un complex"
+
+#: convert.c:500
+msgid "can't convert value to a vector"
+msgstr "no es pot convertir el valor a un vector"
+
+#: cpperror.c:113
+msgid "warning: "
+msgstr "avís: "
+
+#: cpperror.c:115
+msgid "internal error: "
+msgstr "error intern: "
+
+#: cpperror.c:189
+msgid "stdout"
+msgstr "stdout"
+
+#: cpperror.c:191 gcc.c:6428
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: cppexp.c:199
+msgid "too many decimal points in number"
+msgstr "massa punts decimals en el nombre"
+
+#: cppexp.c:219
+#, c-format
+msgid "invalid digit \"%c\" in octal constant"
+msgstr "dígit \"%c\" invàlid en la constant octal"
+
+#: cppexp.c:225
+msgid "use of C99 hexadecimal floating constant"
+msgstr "ús d'una constant de coma flotant hexadecimal C99"
+
+#: cppexp.c:234
+msgid "exponent has no digits"
+msgstr "exponent no té dígits"
+
+#: cppexp.c:241
+msgid "hexadecimal floating constants require an exponent"
+msgstr "la constant de coma flotant hexadecimal requereixe un exponent"
+
+#: cppexp.c:247
+#, c-format
+msgid "invalid suffix \"%.*s\" on floating constant"
+msgstr "sufix \"%.*s\" invàlid en la constant de coma flotant"
+
+#: cppexp.c:257 cppexp.c:282
+#, c-format
+msgid "traditional C rejects the \"%.*s\" suffix"
+msgstr "C tradicional rebutja el sufix \"%.*s\""
+
+#: cppexp.c:268
+#, c-format
+msgid "invalid suffix \"%.*s\" on integer constant"
+msgstr "sufix \"%.*s\" invàlid en constant entera"
+
+#: cppexp.c:289
+msgid "use of C99 long long integer constant"
+msgstr "ús d'una constant entera long long C99"
+
+#: cppexp.c:295
+msgid "imaginary constants are a GCC extension"
+msgstr "les constants imaginàries són una extensió GCC"
+
+#: cppexp.c:383
+msgid "integer constant is too large for its type"
+msgstr "la constant entera és massa gran per al seu tipus"
+
+#: cppexp.c:395
+msgid "integer constant is so large that it is unsigned"
+msgstr "la constant entera és tan gran que és unsigned"
+
+#: cppexp.c:482
+msgid "missing ')' after \"defined\""
+msgstr "falta \")\" després de \"defined\""
+
+#: cppexp.c:489
+msgid "operator \"defined\" requires an identifier"
+msgstr "l'operador \"defined\" requereix un identificador"
+
+#: cppexp.c:497
+#, c-format
+msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
+msgstr "(\"%s\" és un element alternatiu per a \"%s\" en C++)"
+
+#: cppexp.c:507
+msgid "this use of \"defined\" may not be portable"
+msgstr "aquest ùs de \"defined\" podria ser no portable"
+
+#: cppexp.c:545
+msgid "floating constant in preprocessor expression"
+msgstr "constant de coma flotant en l'expressió del preprocessador"
+
+#: cppexp.c:551
+msgid "imaginary number in preprocessor expression"
+msgstr "nombre imaginari en l'expressió del preprocessador"
+
+#: cppexp.c:596
+#, c-format
+msgid "ISO C++ does not permit \"%s\" in #if"
+msgstr "ISO C++ no permet \"%s\" en #if"
+
+#: cppexp.c:604
+#, c-format
+msgid "\"%s\" is not defined"
+msgstr "\"%s\" no és definit"
+
+#: cppexp.c:737 cppexp.c:772
+#, c-format
+msgid "missing binary operator before token \"%s\""
+msgstr "operador binari faltant abans de l'element \"%s\""
+
+#: cppexp.c:756
+#, c-format
+msgid "invalid character '%c' in #if"
+msgstr "caracter invàlid \"%c\" en #if"
+
+#: cppexp.c:758
+#, c-format
+msgid "invalid character '\\%03o' in #if"
+msgstr "caracter invàlid \"\\%03o\" en #if"
+
+#: cppexp.c:763
+#, c-format
+msgid "token \"%s\" is not valid in preprocessor expressions"
+msgstr "l'element \"%s\" no és vàlid en les expressions del preprocesador"
+
+#: cppexp.c:782
+msgid "void expression between '(' and ')'"
+msgstr "expressión void entre \"(\" i \")\""
+
+#: cppexp.c:785
+msgid "#if with no expression"
+msgstr "#if sense expressió"
+
+#: cppexp.c:787
+#, c-format
+msgid "operator '%s' has no right operand"
+msgstr "l'operador \"%s\" no té operant de dreta"
+
+#: cppexp.c:813
+msgid " ':' without preceding '?'"
+msgstr " \":\" sense \"?\" precedent"
+
+#: cppexp.c:840
+msgid "unbalanced stack in #if"
+msgstr "pila desequilibrada en #if"
+
+#: cppexp.c:862
+#, c-format
+msgid "impossible operator '%u'"
+msgstr "operador \"%u\" impossible"
+
+#: cppexp.c:954
+msgid "missing ')' in expression"
+msgstr "\")\" faltant en l'expressió"
+
+#: cppexp.c:975
+msgid "'?' without following ':'"
+msgstr " \"?\" sense \":\" següent"
+
+#: cppexp.c:985
+msgid "integer overflow in preprocessor expression"
+msgstr "desbordament d'enter en l'expressió del preprocessador"
+
+#: cppexp.c:990
+msgid "missing '(' in expression"
+msgstr "\"(\" faltant en l'expressió"
+
+#: cppexp.c:1026
+#, c-format
+msgid "the left operand of \"%s\" changes sign when promoted"
+msgstr "l'operant esquerre de \"%s\" canvia el signe quan és promogut"
+
+#: cppexp.c:1031
+#, c-format
+msgid "the right operand of \"%s\" changes sign when promoted"
+msgstr "l'operant dret de \"%s\" canvia el signe quan és promogut"
+
+#: cppexp.c:1414
+msgid "comma operator in operand of #if"
+msgstr "operador coma en operant de #if"
+
+#: cppexp.c:1551
+msgid "division by zero in #if"
+msgstr "divisió per zero en #if"
+
+#: cppfiles.c:411
+#, c-format
+msgid "%s is too large"
+msgstr "%s és massa gran"
+
+#: cppfiles.c:447
+#, c-format
+msgid "%s is shorter than expected"
+msgstr "%s és més curt de l'esperat"
+
+#: cppfiles.c:461
+#, c-format
+msgid "%s is a block device"
+msgstr "%s és un dispositiu de blocs"
+
+#: cppfiles.c:594
+#, c-format
+msgid "no include path in which to find %s"
+msgstr "no hi ha ruta d'inclusió en la qual es trobi %s"
+
+#: cppfiles.c:668
+msgid "Multiple include guards may be useful for:\n"
+msgstr "Guàrdies múltiples de include poden ser útils per a:\n"
+
+#: cppfiles.c:1014
+msgid "absolute file name in remap_filename"
+msgstr "nom de fitxer absolut en remap_filename"
+
+#: cppinit.c:224
+#, c-format
+msgid "ignoring nonexistent directory \"%s\"\n"
+msgstr "ignorant el directori inexistent \"%s\"\n"
+
+#: cppinit.c:231
+#, c-format
+msgid "%s: Not a directory"
+msgstr "%s: No és un directori"
+
+#: cppinit.c:287
+#, c-format
+msgid "ignoring duplicate directory \"%s\"\n"
+msgstr "ignorant el directori duplicat \"%s\"\n"
+
+#: cppinit.c:325
+msgid " as it is a non-system directory that duplicates a system directory\n"
+msgstr " perquè és un directori que no és del sistema que duplica un directori del sistema\n"
+
+#: cppinit.c:891
+msgid "cppchar_t must be an unsigned type"
+msgstr "cppchar_t deu ser d'un tipus unsigned"
+
+#: cppinit.c:895
+#, c-format
+msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
+msgstr "l'aritmètica del preprocesador té una precisió màxima de %lu bits; l'objectiu requereix %lu bits"
+
+#: cppinit.c:901
+msgid "CPP arithmetic must be at least as precise as a target int"
+msgstr "l'aritmètica de CPP deu ser almenys tan precisa com un int de l'objectiu"
+
+#: cppinit.c:904
+msgid "target char is less than 8 bits wide"
+msgstr "el char de l'objectiu té menys de 8 bits d'ample"
+
+#: cppinit.c:908
+msgid "target wchar_t is narrower than target char"
+msgstr "el wchar_t de l'objectiu és més estret que el char de l'objectiu"
+
+#: cppinit.c:912
+msgid "target int is narrower than target char"
+msgstr "el int de l'objectiu és més estret que el char de l'objectiu"
+
+#: cppinit.c:916
+msgid "CPP half-integer narrower than CPP character"
+msgstr "el mitj-enter de CPP és més estret que el caràcter de CPP"
+
+#: cppinit.c:920
+#, c-format
+msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
+msgstr "CPP no pot manejar constants de caràcter amples més enllà de %lu bits en aquestobjectiu, però l'objectiu requereix %lu bits"
+
+#: cppinit.c:972
+msgid "#include \"...\" search starts here:\n"
+msgstr "la recerca de #include \"...\" s'inicia aquí:\n"
+
+#: cppinit.c:976
+msgid "#include <...> search starts here:\n"
+msgstr "la recerca de #include <...> s'inicia aquí:\n"
+
+#: cppinit.c:979
+msgid "End of search list.\n"
+msgstr "Fi de la llista de recerca.\n"
+
+#: cppinit.c:1057
+msgid "<built-in>"
+msgstr "<built-in>"
+
+#: cppinit.c:1059
+msgid "<command line>"
+msgstr "<command line>"
+
+#. 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:1164
+#, c-format
+msgid "assertion missing after %s"
+msgstr "asserció faltant deprés de %s"
+
+#: cppinit.c:1165
+#, c-format
+msgid "directory name missing after %s"
+msgstr "nom de directori faltant deprés de %s"
+
+#: cppinit.c:1166
+#, c-format
+msgid "file name missing after %s"
+msgstr "nom de fitxer faltant deprés de %s"
+
+#: cppinit.c:1167
+#, c-format
+msgid "macro name missing after %s"
+msgstr "nom de macro faltant deprés de %s"
+
+#: cppinit.c:1168
+#, c-format
+msgid "path name missing after %s"
+msgstr "nom de camí faltant deprés de %s"
+
+#: cppinit.c:1353
+msgid "-I- specified twice"
+msgstr "-I- especificat dues vegades"
+
+#: cpplex.c:149
+#, c-format
+msgid "trigraph ??%c converted to %c"
+msgstr "trigraph ??%c convertit a %c"
+
+#: cpplex.c:157
+#, c-format
+msgid "trigraph ??%c ignored"
+msgstr "s'ignora el trigraph ??%c"
+
+#: cpplex.c:214
+msgid "backslash and newline separated by space"
+msgstr "barra invertida i fi de línia separats per espai"
+
+#: cpplex.c:221 cpptrad.c:158
+msgid "backslash-newline at end of file"
+msgstr "barra invertida al final del fitxer"
+
+#: cpplex.c:287 cpptrad.c:199
+msgid "\"/*\" within comment"
+msgstr "\"/*\" dintre un comentari"
+
+#: cpplex.c:395
+msgid "null character(s) ignored"
+msgstr "caràter(es) nul(s) ignorats"
+
+#: cpplex.c:402
+#, c-format
+msgid "%s in preprocessing directive"
+msgstr "%s en directiva de preprocessament"
+
+#: cpplex.c:475
+#, c-format
+msgid "attempt to use poisoned \"%s\""
+msgstr "intent d'usar \"%s\" enverinat"
+
+#: cpplex.c:483
+msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
+msgstr "__VA_ARGS__ solament pot aparèixer en l'expansió d'una macro variadic C99"
+
+#: cpplex.c:555
+msgid "'$' character(s) in identifier or number"
+msgstr "caràcter/(es) \"$\" en l'identificador o nombre"
+
+#: cpplex.c:698
+#, c-format
+msgid "missing terminating %c character"
+msgstr "falta caràcter acabant %c"
+
+#: cpplex.c:711
+msgid "null character(s) preserved in literal"
+msgstr "caràcter(es) nul(s) preservats en la literal"
+
+#: cpplex.c:915 cpptrad.c:487
+msgid "no newline at end of file"
+msgstr "no hi ha caràcter de fi de línia"
+
+#: cpplex.c:1092 cpptrad.c:213
+msgid "unterminated comment"
+msgstr "comentari sense acabar"
+
+#: cpplex.c:1103
+msgid "C++ style comments are not allowed in ISO C90"
+msgstr "els comentaris d'estil C++ no són permesos en ISO C90"
+
+#: cpplex.c:1105
+msgid "(this will be reported only once per input file)"
+msgstr "(això es reportarà solament una vegada per cada fitxer d'entrada)"
+
+#: cpplex.c:1110
+msgid "multi-line comment"
+msgstr "comentari en múltiples línies"
+
+#: cpplex.c:1425
+#, c-format
+msgid "unknown string token %s\n"
+msgstr "Element de cadena %s desconegut\n"
+
+#: cpplex.c:1438
+#, c-format
+msgid "unspellable token %s"
+msgstr "Element %s impronunciable"
+
+#: cpplex.c:1695
+#, c-format
+msgid "the meaning of '\\%c' is different in traditional C"
+msgstr "el significat de \"\\%c\" és diferent en C tradicional"
+
+#: cpplex.c:1701
+msgid "incomplete universal-character-name"
+msgstr "universal-character-name incomplet"
+
+#: cpplex.c:1715
+#, c-format
+msgid "non-hex digit '%c' in universal-character-name"
+msgstr "dígit no hexadecimal \"%c\" en universal-character-name"
+
+#: cpplex.c:1723
+msgid "universal-character-name on EBCDIC target"
+msgstr "universal-character-name en l'objectiu EBCDIC"
+
+#: cpplex.c:1737
+msgid "universal-character-name out of range"
+msgstr "universal-character-name fora de rang"
+
+#: cpplex.c:1791
+msgid "the meaning of '\\a' is different in traditional C"
+msgstr "el significat de \"\\a\" és diferent en C tradicional"
+
+#: cpplex.c:1798
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
+msgstr "seqüència d'escapi que no és estàndard ISO, \"\\%c\""
+
+#: cpplex.c:1809
+msgid "the meaning of '\\x' is different in traditional C"
+msgstr "el significat de \"\\x\" és diferent en C tradicional"
+
+#: cpplex.c:1828 f/lex.c:585
+msgid "\\x used with no following hex digits"
+msgstr "es va usar \\x sense dígits hexadecimales a continuació"
+
+#: cpplex.c:1833
+msgid "hex escape sequence out of range"
+msgstr "seqüència d'escapi hexadecimal fora de rang"
+
+#: cpplex.c:1858
+msgid "octal escape sequence out of range"
+msgstr "seqüència d'escapi octal fora de rang"
+
+#: cpplex.c:1874
+#, c-format
+msgid "unknown escape sequence '\\%c'"
+msgstr "seqüència d'escapi \"\\%c\" desconeguda"
+
+#: cpplex.c:1877
+#, c-format
+msgid "unknown escape sequence: '\\%03o'"
+msgstr "seqüència d'escapi desconeguda: '\\%03o'"
+
+#: cpplex.c:1882
+msgid "escape sequence out of range for its type"
+msgstr "seqüència d'escapi fora de rang per a el seu tipus"
+
+#: cpplex.c:1973
+msgid "empty character constant"
+msgstr "constant de caràter buida"
+
+#: cpplex.c:1983
+msgid "character constant too long for its type"
+msgstr "constant de caràcter massa gran pel seu tipus"
+
+#: cpplex.c:1986
+msgid "multi-character character constant"
+msgstr "constant de caràcter amb múltiples caràcters"
+
+#: cpplib.c:225
+#, c-format
+msgid "extra tokens at end of #%s directive"
+msgstr "elements extra al final de la directiva #%s"
+
+#: cpplib.c:315
+#, c-format
+msgid "#%s is a GCC extension"
+msgstr "#%s és una extenció del GCC"
+
+#: cpplib.c:327
+msgid "suggest not using #elif in traditional C"
+msgstr "es suggereix no usar #elif en C tradicional"
+
+#: cpplib.c:330
+#, c-format
+msgid "traditional C ignores #%s with the # indented"
+msgstr "C tradicional ignora #%s amb el # indentat"
+
+#: cpplib.c:334
+#, c-format
+msgid "suggest hiding #%s from traditional C with an indented #"
+msgstr "es suggereix ocultar #%s del C tradicional amb el # indentat"
+
+#: cpplib.c:358
+msgid "embedding a directive within macro arguments is not portable"
+msgstr ""
+
+#: cpplib.c:378
+msgid "style of line directive is a GCC extension"
+msgstr "l'estil de la directiva de línia és una extenció del GCC"
+
+#: cpplib.c:428
+#, c-format
+msgid "invalid preprocessing directive #%s"
+msgstr "directiva de preprocessament #%s invàlida"
+
+#: cpplib.c:500
+msgid "\"defined\" cannot be used as a macro name"
+msgstr "\"defined\" no es pot usar com un nom de macro"
+
+#: cpplib.c:506
+#, c-format
+msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
+msgstr "no es pot usar \"%s\" com un nom de macro perquè és un operador en C++"
+
+#: cpplib.c:509
+#, c-format
+msgid "no macro name given in #%s directive"
+msgstr "no es va donar un nom de macro en la directiva #%s"
+
+#: cpplib.c:512
+msgid "macro names must be identifiers"
+msgstr "els noms de macro deuen ser identificadors"
+
+#: cpplib.c:552
+#, c-format
+msgid "undefining \"%s\""
+msgstr "esborrant la definició de \"%s\""
+
+#: cpplib.c:598
+msgid "missing terminating > character"
+msgstr "falta el caràcter de terminació >"
+
+#: cpplib.c:637
+#, c-format
+msgid "#%s expects \"FILENAME\" or <FILENAME>"
+msgstr "#%s espera \"NOM_DE_FITXER\" o <NOM_DE_FITXER>"
+
+#: cpplib.c:648
+#, c-format
+msgid "empty file name in #%s"
+msgstr "nom de fitxer buit en #%s"
+
+#: cpplib.c:667
+msgid "#include_next in primary source file"
+msgstr "#include_next en el fitxer font primari"
+
+#: cpplib.c:674
+msgid "#import is obsolete, use an #ifndef wrapper in the header file"
+msgstr "#import és obsolet, usi un embolcall #ifndef en el fitxer d'encapçalat"
+
+#: cpplib.c:682
+msgid "#include nested too deeply"
+msgstr "#include niat amb massa profunditat"
+
+#: cpplib.c:739
+#, c-format
+msgid "invalid flag \"%s\" in line directive"
+msgstr "indicador \"%s\" invàlid en la línia de la directiva"
+
+#: cpplib.c:814
+#, c-format
+msgid "\"%s\" after #line is not a positive integer"
+msgstr "\"%s\" desprès de #line no és un enter positiu"
+
+#: cpplib.c:820
+msgid "line number out of range"
+msgstr "nombre de línia fora de rang"
+
+#: cpplib.c:831 cpplib.c:902
+#, c-format
+msgid "\"%s\" is not a valid filename"
+msgstr "\"%s\" no és un nom de fitxer vàlid"
+
+#: cpplib.c:866
+#, c-format
+msgid "\"%s\" after # is not a positive integer"
+msgstr "\"%s\" desprès de # no és un enter positiu"
+
+#: cpplib.c:973
+msgid "invalid #ident directive"
+msgstr "directiva #ident invàlida"
+
+#: cpplib.c:1061
+#, c-format
+msgid "registering \"%s\" as both a pragma and a pragma namespace"
+msgstr "desant \"%s\" com a pragma i espai de noms de pragma"
+
+#: cpplib.c:1064
+#, c-format
+msgid "#pragma %s %s is already registered"
+msgstr "ja s'ha desat #pragma %s %s"
+
+#: cpplib.c:1067
+#, c-format
+msgid "#pragma %s is already registered"
+msgstr "ja s'ha desat #pragma %s"
+
+#: cpplib.c:1143
+msgid "#pragma once is obsolete"
+msgstr "#pragma una vegada és obsolet"
+
+#: cpplib.c:1146
+msgid "#pragma once in main file"
+msgstr "#pragma una vegada en el fitxer principal"
+
+#: cpplib.c:1170
+msgid "invalid #pragma GCC poison directive"
+msgstr "directiva #pragma de GCC enverinada invàlida"
+
+#: cpplib.c:1179
+#, c-format
+msgid "poisoning existing macro \"%s\""
+msgstr "enverinant la macro existent \"%s\""
+
+#: cpplib.c:1201
+msgid "#pragma system_header ignored outside include file"
+msgstr "#pragma system_header ignorat fora del fitxer d'inclusió"
+
+#: cpplib.c:1226
+#, c-format
+msgid "cannot find source %s"
+msgstr "no es pot trobar la font %s"
+
+#: cpplib.c:1230
+#, c-format
+msgid "current file is older than %s"
+msgstr "el fitxer actual és més vell que %s"
+
+#: cpplib.c:1346
+msgid "_Pragma takes a parenthesized string literal"
+msgstr "_Pragma duu una cadena literal entre parèntesis"
+
+#: cpplib.c:1429
+msgid "#else without #if"
+msgstr "#else sense #if"
+
+#: cpplib.c:1434
+msgid "#else after #else"
+msgstr "#else després de #else"
+
+#: cpplib.c:1436 cpplib.c:1470
+msgid "the conditional began here"
+msgstr "el condicional va començar aquí"
+
+#: cpplib.c:1463
+msgid "#elif without #if"
+msgstr "#elif sense #if"
+
+#: cpplib.c:1468
+msgid "#elif after #else"
+msgstr "#elif després de #else"
+
+#: cpplib.c:1499
+msgid "#endif without #if"
+msgstr "#endif sense #if"
+
+#: cpplib.c:1582
+msgid "missing '(' after predicate"
+msgstr "falta \"(\" abans del predicat"
+
+#: cpplib.c:1597
+msgid "missing ')' to complete answer"
+msgstr "falta \")\" per a completar la resposta"
+
+#: cpplib.c:1617
+msgid "predicate's answer is empty"
+msgstr "el predicat de la resposta està buidor"
+
+#: cpplib.c:1647
+msgid "assertion without predicate"
+msgstr "afirmació sense predicat"
+
+#: cpplib.c:1649
+msgid "predicate must be an identifier"
+msgstr "el predicat deu ser un identificador"
+
+#: cpplib.c:1738
+#, c-format
+msgid "\"%s\" re-asserted"
+msgstr "\"%s\" reafirmat"
+
+#: cpplib.c:1968
+#, c-format
+msgid "unterminated #%s"
+msgstr "#%s sense acabar"
+
+#: cppmacro.c:94
+#, c-format
+msgid "macro \"%s\" is not used"
+msgstr ""
+
+#: cppmacro.c:139 cppmacro.c:294
+#, c-format
+msgid "invalid built-in macro \"%s\""
+msgstr "macro interna \"%s\" invàlida"
+
+#: cppmacro.c:234
+msgid "could not determine date and time"
+msgstr "no es pot determinar la data i l'hora"
+
+#: cppmacro.c:407
+msgid "invalid string literal, ignoring final '\\'"
+msgstr "cadena literal invàlida, s'ignora el \"\\\" finals"
+
+#: cppmacro.c:504
+#, c-format
+msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
+msgstr "pegar \"%s\" i \"%s\" no dóna un element vàlid de preprocessament"
+
+#: cppmacro.c:546
+msgid "ISO C99 requires rest arguments to be used"
+msgstr "ISO C99 requereix que la resta dels arguments sigui usat"
+
+#: cppmacro.c:551
+#, c-format
+msgid "macro \"%s\" requires %u arguments, but only %u given"
+msgstr "la macro \"%s\" requereix %u arguments, però sol es proporcionen %u"
+
+#: cppmacro.c:556
+#, c-format
+msgid "macro \"%s\" passed %u arguments, but takes just %u"
+msgstr "la macro \"%s\" va rebre %u arguments, però solament va prendre %u"
+
+#: cppmacro.c:669 cpptrad.c:774
+#, c-format
+msgid "unterminated argument list invoking macro \"%s\""
+msgstr "llista d'arguments sense acabar a l'invocar la macro \"%s\""
+
+#: cppmacro.c:776
+#, c-format
+msgid "function-like macro \"%s\" must be used with arguments in traditional C"
+msgstr "la funció de macro \"%s\" es deu usar amb arguments en C tradicional"
+
+#: cppmacro.c:1314
+#, c-format
+msgid "duplicate macro parameter \"%s\""
+msgstr "paràmetre de macro \"%s\" duplicat"
+
+#: cppmacro.c:1351
+#, c-format
+msgid "\"%s\" may not appear in macro parameter list"
+msgstr "\"%s\" podria faltar en la llista de paràmetre de macro"
+
+#: cppmacro.c:1359
+msgid "macro parameters must be comma-separated"
+msgstr "els paràmetres de macro deuen ser separats per comes"
+
+#: cppmacro.c:1376
+msgid "parameter name missing"
+msgstr "falta el nom del paràmetre"
+
+#: cppmacro.c:1391
+msgid "anonymous variadic macros were introduced in C99"
+msgstr "els macros variadic anònims es van introduir en C99"
+
+#: cppmacro.c:1395
+msgid "ISO C does not permit named variadic macros"
+msgstr "ISO C no permet macros variadic nomenats"
+
+#: cppmacro.c:1404
+msgid "missing ')' in macro parameter list"
+msgstr "falta parèntesi dret en la llista de paràmetres de macro"
+
+#: cppmacro.c:1472
+msgid "ISO C requires whitespace after the macro name"
+msgstr "ISO C requereix espais en blanc després del nom de macro"
+
+#: cppmacro.c:1500
+msgid "'#' is not followed by a macro parameter"
+msgstr "\"#\" no és seguit per un paràmetre de macro"
+
+#: cppmacro.c:1519
+msgid "'##' cannot appear at either end of a macro expansion"
+msgstr "\"##\" no pot apareixer en o al final d'una expansió de macro"
+
+#: cppmacro.c:1601
+#, c-format
+msgid "\"%s\" redefined"
+msgstr "\"%s\" re-definit"
+
+#: cppmacro.c:1606
+msgid "this is the location of the previous definition"
+msgstr "aquesta és la ubicació de la definició prèvia"
+
+#: cppmacro.c:1657
+#, c-format
+msgid "macro argument \"%s\" would be stringified in traditional C"
+msgstr "l'argument de macro \"%s\" deuria ser convertit a cadena en C traditional"
+
+#: cppmacro.c:1682
+#, c-format
+msgid "invalid hash type %d in cpp_macro_definition"
+msgstr "tipus de hash %d invàlid en cpp_macro_definition"
+
+#: cppspec.c:109
+#, c-format
+msgid "\"%s\" is not a valid option to the preprocessor"
+msgstr "\"%s\" no es una opció vàlida per el preprocessador"
+
+#: cppspec.c:133
+msgid "too many input files"
+msgstr "massa fitxers d'entrada"
+
+#: cpptrad.c:841
+#, c-format
+msgid "detected recursion whilst expanding macro \"%s\""
+msgstr ""
+
+#: cse.c:7195
+#, c-format
+msgid ";; Processing block from %d to %d, %d sets.\n"
+msgstr ";; Processant el bloc de %d a %d, %d establerts.\n"
+
+#: diagnostic.c:714
+msgid "((anonymous))"
+msgstr "((anònim))"
+
+#: diagnostic.c:928
+#, c-format
+msgid "%s: warnings being treated as errors\n"
+msgstr "%s: els avisos són tractats com errors\n"
+
+#: diagnostic.c:963
+#, c-format
+msgid "%s: %s: "
+msgstr "%s: %s: "
+
+#: diagnostic.c:1054
+#, c-format
+msgid "%s "
+msgstr "%s "
+
+#: diagnostic.c:1056
+#, c-format
+msgid " %s"
+msgstr " %s"
+
+#: diagnostic.c:1078
+msgid "At top level:"
+msgstr "En el nivell principal:"
+
+#: diagnostic.c:1083
+#, c-format
+msgid "In member function `%s':"
+msgstr "en la funció membre \"%s\":"
+
+#: diagnostic.c:1087
+#, c-format
+msgid "In function `%s':"
+msgstr "En la funció \"%s\":"
+
+#: diagnostic.c:1175
+msgid "compilation terminated.\n"
+msgstr "compilació acabada.\n"
+
+#: diagnostic.c:1193
+#, c-format
+msgid "%s:%d: confused by earlier errors, bailing out\n"
+msgstr "%s:%d: confusió per errors precedentes, abandó\n"
+
+#: diagnostic.c:1208 diagnostic.c:1316
+#, c-format
+msgid ""
+"Please submit a full bug report,\n"
+"with preprocessed source if appropriate.\n"
+"See %s for instructions.\n"
+msgstr ""
+"Si us plau, envieu un informe d'error complet,\n"
+"amd la font preprocessada si és oportú.\n"
+"Consulta %s per a les instruccions.\n"
+
+#: diagnostic.c:1314
+msgid "Internal compiler error: Error reporting routines re-entered.\n"
+msgstr "Error intern del compilador: Error al reportar rutines reentrades.\n"
+
+#: diagnostic.c:1376
+#, c-format
+msgid "in %s, at %s:%d"
+msgstr "en %s, en %s:%d"
+
+#: diagnostic.c:1397
+#, c-format
+msgid "In file included from %s:%d"
+msgstr "En el fitxer inclòs de %s:%d"
+
+#: diagnostic.c:1400
+#, c-format
+msgid ""
+",\n"
+" from %s:%d"
+msgstr ""
+",\n"
+" de %s:%d"
+
+#: diagnostic.c:1401
+msgid ":\n"
+msgstr ":\n"
+
+#: diagnostic.c:1445 diagnostic.c:1462
+#, c-format
+msgid "`%s' is deprecated (declared at %s:%d)"
+msgstr "\"%s\" és depreciat (declarat a %s:%d)"
+
+#: diagnostic.c:1465
+#, c-format
+msgid "`%s' is deprecated"
+msgstr "\"%s\" és depreciat"
+
+#: diagnostic.c:1468
+#, c-format
+msgid "type is deprecated (declared at %s:%d)"
+msgstr "type és depreciat (declarat a %s:%d)"
+
+#: diagnostic.c:1471
+msgid "type is deprecated"
+msgstr "type és depreciat"
+
+#: dominance.c:728
+#, c-format
+msgid "dominator of %d should be %d, not %d"
+msgstr ""
+
+#: dwarf2out.c:3135
+#, c-format
+msgid "DW_LOC_OP %s not implemented\n"
+msgstr "DW_LOC_OP %s no està implementat\n"
+
+#: dwarfout.c:2066
+#, c-format
+msgid "internal regno botch: `%s' has regno = %d\n"
+msgstr "regno intern mal fet: \"%s\" té regno = %d\n"
+
+#: dwarfout.c:6181
+msgid "support for the DWARF1 debugging format is deprecated"
+msgstr ""
+
+#: dwarfout.c:6278
+msgid "can't get current directory"
+msgstr "no es pot obtenir el directori actual"
+
+#: emit-rtl.c:1155
+msgid "can't access real part of complex value in hard register"
+msgstr "No es pot accedir a la part real d'un valor complex en un registre fix"
+
+#: emit-rtl.c:1177
+msgid "can't access imaginary part of complex value in hard register"
+msgstr "No es pot accedir a la part imaginària d'un valor complex en un registre fix"
+
+#: emit-rtl.c:3402
+msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
+msgstr "ICE:s'usa emit_insn on es necessita emit_jump_insn:\n"
+
+#: errors.c:136
+#, c-format
+msgid "abort in %s, at %s:%d"
+msgstr "abandó en %s, en %s:%d"
+
+#: except.c:369
+msgid "exception handling disabled, use -fexceptions to enable"
+msgstr "maneig d'excepcions desactivat, usi -fexceptions per a activar"
+
+#: except.c:2994
+msgid "argument of `__builtin_eh_return_regno' must be constant"
+msgstr "l'argument de \"__builtin_eh_return_regno\" deu ser constant"
+
+#: except.c:3137
+msgid "__builtin_eh_return not supported on this target"
+msgstr "no es dóna suport a _builtin_eh_return en aquest objectiu"
+
+#: explow.c:1408
+msgid "stack limits not supported on this target"
+msgstr "no es dóna suport a límits de la pila en aquest objectiu"
+
+#: expr.c:3355
+msgid "function using short complex types cannot be inline"
+msgstr "les funcions que usen tipus short complex no poden ser inline"
+
+#: expr.c:6272 expr.c:6281 expr.c:6290 expr.c:6295 expr.c:6604 expr.c:6620
+msgid "unsupported wide integer operation"
+msgstr "operació d'enters amples sense suport"
+
+#: expr.c:6669
+#, c-format
+msgid "prior parameter's size depends on `%s'"
+msgstr "la grandària del paràmetre previ depèn de \"%s\""
+
+#: expr.c:7005
+msgid "returned value in block_exit_expr"
+msgstr "es va regressar un valor en block_exit_expr"
+
+#. We can't make a bitwise copy of this object, so fail.
+#: expr.c:9202
+msgid "cannot take the address of an unaligned member"
+msgstr "no es pot prendre l'adreça d'un membre desalineat"
+
+#: final.c:1342
+msgid "negative insn length"
+msgstr "longitud insn negativa"
+
+#: final.c:2793
+msgid "could not split insn"
+msgstr "no es pot separar insn"
+
+#: final.c:3141
+msgid "invalid `asm': "
+msgstr "\"asm\" invàlid: "
+
+#: final.c:3328
+msgid "nested assembly dialect alternatives"
+msgstr "reunió de dialectes alternatius imbricats"
+
+#: final.c:3345 final.c:3357
+msgid "unterminated assembly dialect alternative"
+msgstr "reunió de dialectes alternatius no terminada"
+
+#: final.c:3401
+#, c-format
+msgid "operand number missing after %%-letter"
+msgstr "falta nombre operant després de %%-letter"
+
+#: final.c:3404 final.c:3443
+msgid "operand number out of range"
+msgstr "nombre operant fora de rang"
+
+#: final.c:3462
+#, c-format
+msgid "invalid %%-code"
+msgstr "%%-codi invàlid"
+
+#: final.c:3493
+#, c-format
+msgid "`%%l' operand isn't a label"
+msgstr "l'operant \"%%l\" no és una etiqueta"
+
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#: final.c:3600 vmsdbgout.c:466 config/i386/i386.c:6314
+#: config/pdp11/pdp11.c:1573
+msgid "floating constant misused"
+msgstr "constant de coma flotant mal usada"
+
+#: final.c:3656 vmsdbgout.c:523 config/i386/i386.c:6392
+#: config/pdp11/pdp11.c:1620
+msgid "invalid expression as operand"
+msgstr "expressió invàlida com operant"
+
+#: flow.c:352
+msgid "function might be possible candidate for attribute `noreturn'"
+msgstr "la funció pot ser un candidat possible per a l'atribut \"noreturn\""
+
+#: flow.c:357
+msgid "`noreturn' function does return"
+msgstr "la funció \"noreturn\" retorna"
+
+#: flow.c:378
+msgid "control reaches end of non-void function"
+msgstr "el control arriba a el final d'una funció que no és void"
+
+#: flow.c:1642
+msgid "Attempt to delete prologue/epilogue insn:"
+msgstr "Intent d'esborrar insn pròleg/epíleg:"
+
+#: fold-const.c:2546 fold-const.c:2559
+#, c-format
+msgid "comparison is always %d due to width of bit-field"
+msgstr "la comparança sempre és %d a causa de l'amplària del camp de bit"
+
+#: fold-const.c:3753 fold-const.c:3770
+#, c-format
+msgid "comparison is always %d"
+msgstr "la comparança sempre és %d"
+
+#: fold-const.c:3901
+msgid "`or' of unmatched not-equal tests is always 1"
+msgstr "un \"or\" de proves no equivalents sense coincidència sempre és 1"
+
+#: fold-const.c:3906
+msgid "`and' of mutually exclusive equal-tests is always 0"
+msgstr "un \"and\" de proves equivalents mútuament exclusives sempre és 0"
+
+#: function.c:884 varasm.c:1503
+#, c-format
+msgid "size of variable `%s' is too large"
+msgstr "la grandària de la variable \"%s\" és massa gran"
+
+#: function.c:3772
+msgid "impossible constraint in `asm'"
+msgstr "restricció impossible en \"asm\""
+
+#: function.c:5527
+#, c-format
+msgid "`%s' might be used uninitialized in this function"
+msgstr "\"%s\" es deuria usar sense iniciar en aquesta funció"
+
+#: function.c:5534
+#, c-format
+msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
+msgstr "la variable \"%s\" podria ser sobreescrita per \"longjmp\" o \"vfork\""
+
+#: function.c:5553
+#, c-format
+msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
+msgstr "l'argument \"%s\" podria ser sobreescrit per \"longjmp\" o \"vfork\""
+
+#: function.c:6420
+msgid "function returns an aggregate"
+msgstr "la funció retorna un agregat"
+
+#: function.c:6925
+#, c-format
+msgid "unused parameter `%s'"
+msgstr "paràmetre \"%s\" sense ús"
+
+#: gcc.c:1107
+#, c-format
+msgid "ambiguous abbreviation %s"
+msgstr "abreujament ambigu %s"
+
+#: gcc.c:1134
+#, c-format
+msgid "incomplete `%s' option"
+msgstr "Opció \"%s\" incompleta"
+
+#: gcc.c:1145
+#, c-format
+msgid "missing argument to `%s' option"
+msgstr "Falten arguments per a l'opció \"%s\""
+
+#: gcc.c:1158
+#, c-format
+msgid "extraneous argument to `%s' option"
+msgstr "argument estrany per a l'opció \"%s\""
+
+#: gcc.c:1486
+msgid "Using built-in specs.\n"
+msgstr "Usant especificacions internes.\n"
+
+#: gcc.c:1667
+#, c-format
+msgid ""
+"Setting spec %s to '%s'\n"
+"\n"
+msgstr ""
+"Canviant l'especificació de %s a \"%s\"\n"
+"\n"
+
+#: gcc.c:1774
+#, c-format
+msgid "Reading specs from %s\n"
+msgstr "Llegint especificacions de %s\n"
+
+#: gcc.c:1872 gcc.c:1891
+#, c-format
+msgid "specs %%include syntax malformed after %ld characters"
+msgstr "specs sintaxi mal formada de %%include després de %ld caràcters"
+
+#: gcc.c:1899
+#, c-format
+msgid "could not find specs file %s\n"
+msgstr "No es pot trobar el fitxer d'especificacions %s\n"
+
+#: gcc.c:1916 gcc.c:1924 gcc.c:1933 gcc.c:1942
+#, c-format
+msgid "specs %%rename syntax malformed after %ld characters"
+msgstr "specs sintaxi mal formada de %%rename després de %ld caràcters"
+
+#: gcc.c:1951
+#, c-format
+msgid "specs %s spec was not found to be renamed"
+msgstr "specs l'especificació %s no es va trobar per a ser re-nomenada"
+
+#: gcc.c:1958
+#, c-format
+msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
+msgstr ""
+
+#: gcc.c:1963
+#, c-format
+msgid "rename spec %s to %s\n"
+msgstr "re-nomenada especificació %s a %s\n"
+
+#: gcc.c:1965
+#, c-format
+msgid ""
+"spec is '%s'\n"
+"\n"
+msgstr ""
+"la especificació és \"%s\"\n"
+"\n"
+
+#: gcc.c:1978
+#, c-format
+msgid "specs unknown %% command after %ld characters"
+msgstr "specs comanda %% desconegut després de %ld caràcters"
+
+#: gcc.c:1989 gcc.c:2002
+#, c-format
+msgid "specs file malformed after %ld characters"
+msgstr "specs fitxer mal format després de %ld caràcters"
+
+#: gcc.c:2056
+msgid "spec file has no spec for linking"
+msgstr "el fitxer d'especificacions no té especificacions per a enllaçar"
+
+#: gcc.c:2554
+msgid "-pipe not supported"
+msgstr "-pipe no té suport"
+
+#: gcc.c:2609
+msgid ""
+"\n"
+"Go ahead? (y or n) "
+msgstr ""
+"\n"
+"Continuar? (s o n) "
+
+#: gcc.c:2735
+#, c-format
+msgid ""
+"Internal error: %s (program %s)\n"
+"Please submit a full bug report.\n"
+"See %s for instructions."
+msgstr ""
+"Error intern: %s (programa %s)\n"
+"Per favor envieu un informe complet d'error.\n"
+"Consulta %s per a més instruccions."
+
+#: gcc.c:2753
+#, c-format
+msgid "# %s %.2f %.2f\n"
+msgstr "# %s %.2f %.2f\n"
+
+#: gcc.c:2883
+#, c-format
+msgid "Usage: %s [options] file...\n"
+msgstr "Utilització: %s [opcions] fitxer...\n"
+
+#: gcc.c:2884
+msgid "Options:\n"
+msgstr "Opcions:\n"
+
+#: gcc.c:2886
+msgid " -pass-exit-codes Exit with highest error code from a phase\n"
+msgstr " -pass-exit-codes Sortir amb el codi d'error més alt d'una fase\n"
+
+#: gcc.c:2887
+msgid " --help Display this information\n"
+msgstr " --help Mostra aquesta informació\n"
+
+#: gcc.c:2888
+msgid " --target-help Display target specific command line options\n"
+msgstr ""
+" --target-help Mostra opcions de línia de comando específiques de\n"
+" l'objectiu\n"
+
+#: gcc.c:2890
+msgid " (Use '-v --help' to display command line options of sub-processes)\n"
+msgstr " (Usi \"-v --help\" per a mostrar les opcions de línia de comando dels subprocès)\n"
+
+#: gcc.c:2891
+msgid " -dumpspecs Display all of the built in spec strings\n"
+msgstr " -dumpspecs Mostra totes les cadenes internes d'especificació\n"
+
+#: gcc.c:2892
+msgid " -dumpversion Display the version of the compiler\n"
+msgstr " -dumpversion Mostra la versió del compilador\n"
+
+#: gcc.c:2893
+msgid " -dumpmachine Display the compiler's target processor\n"
+msgstr " -dumpmachine Mostra el processador objectiu del compilador\n"
+
+#: gcc.c:2894
+msgid " -print-search-dirs Display the directories in the compiler's search path\n"
+msgstr ""
+" -print-search-dirs Mostra les directoris en la ruta de recerca del\n"
+" compilador\n"
+
+#: gcc.c:2895
+msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n"
+msgstr ""
+" -print-libgcc-file-name Mostra el nom de la biblioteca que acompanya el\n"
+" compilador\n"
+
+#: gcc.c:2896
+msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
+msgstr " -print-file-name=<lib> Mostra la ruta completa a la biblioteca <lib>\n"
+
+#: gcc.c:2897
+msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n"
+msgstr ""
+" -print-prog-name=<prog> Mostra la ruta completa del programa component del\n"
+" compilador <prog>\n"
+
+#: gcc.c:2898
+msgid " -print-multi-directory Display the root directory for versions of libgcc\n"
+msgstr " -print-multi-directory Mostra el directori arrel per a versoins de libgcc\n"
+
+#: gcc.c:2899
+msgid ""
+" -print-multi-lib Display the mapping between command line options and\n"
+" multiple library search directories\n"
+msgstr ""
+" -print-multi-lib Mostra el mapatge entre les opcions de línia de\n"
+" comanda i els múltiples directoris de la recerca\n"
+" de biblioteques\n"
+
+#: gcc.c:2902
+msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
+msgstr " -print-multi-os-directory Mostra la ruta relativa per a les biblioteques del SO\n"
+
+#: gcc.c:2903
+msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n"
+msgstr " -Wa,<options> Passa <opcions> separades per coma al assemblador\n"
+
+#: gcc.c:2904
+msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n"
+msgstr " -Wp,<opcions> Passa <opcions> separades per coma al preprocesador\n"
+
+#: gcc.c:2905
+msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n"
+msgstr " -Wl,<opcions> Passa <opcions> separades per coma al enllaçador\n"
+
+#: gcc.c:2906
+msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
+msgstr " -Xlinker <arg> Passa el <arg> al enllaçador\n"
+
+#: gcc.c:2907
+msgid " -save-temps Do not delete intermediate files\n"
+msgstr " -save-temps No esborra els fitxers intermedis\n"
+
+#: gcc.c:2908
+msgid " -pipe Use pipes rather than intermediate files\n"
+msgstr " -pipe Usa canonades en lloc de fitxers intermedis\n"
+
+#: gcc.c:2909
+msgid " -time Time the execution of each subprocess\n"
+msgstr " -time Obté el temps d'execució de cada subprocès\n"
+
+#: gcc.c:2910
+msgid " -specs=<file> Override built-in specs with the contents of <file>\n"
+msgstr ""
+" -specs=<file> Sobreposa les especificacions internes amb el\n"
+" contingut de <fitxer>\n"
+
+#: gcc.c:2911
+msgid " -std=<standard> Assume that the input sources are for <standard>\n"
+msgstr ""
+" -std=<estàndard> Assumeix que les fitxers d'entrada són per a el\n"
+" <estàndard>\n"
+
+#: gcc.c:2912
+msgid " -B <directory> Add <directory> to the compiler's search paths\n"
+msgstr ""
+" -B <directori> Agrega el <directori> a les rutes de recerca del\n"
+" compilador\n"
+
+#: gcc.c:2913
+msgid " -b <machine> Run gcc for target <machine>, if installed\n"
+msgstr ""
+" -b <màquina> Executa gcc per a l'objectiu <màquina>,\n"
+" si va ser instal·lat\n"
+
+#: gcc.c:2914
+msgid " -V <version> Run gcc version number <version>, if installed\n"
+msgstr ""
+" -V <versió> Executa el gcc amb nombre de versió <versió>,\n"
+" si va ser instal·lat\n"
+
+#: gcc.c:2915
+msgid " -v Display the programs invoked by the compiler\n"
+msgstr " -v Mostra els programes invocats pel compilador\n"
+
+#: gcc.c:2916
+msgid " -### Like -v but options quoted and commands not executed\n"
+msgstr ""
+" -### Com -v però les opcions i comandes entr \"\" no estan\n"
+" executades\n"
+
+#: gcc.c:2917
+msgid " -E Preprocess only; do not compile, assemble or link\n"
+msgstr " -E Solament preprocessa; no compila, assembla o enllaça\n"
+
+#: gcc.c:2918
+msgid " -S Compile only; do not assemble or link\n"
+msgstr " -S Solament compila; no assembla o enllaça\n"
+
+#: gcc.c:2919
+msgid " -c Compile and assemble, but do not link\n"
+msgstr " -c Compila i assembla, però no enllaça\n"
+
+#: gcc.c:2920
+msgid " -o <file> Place the output into <file>\n"
+msgstr " -o <fitxer> Col·loca la sortida en el <fitxer>\n"
+
+#: gcc.c:2921
+msgid ""
+" -x <language> Specify the language of the following input files\n"
+" Permissible languages include: c c++ assembler none\n"
+" 'none' means revert to the default behavior of\n"
+" guessing the language based on the file's extension\n"
+msgstr ""
+" -x <llenguatge> Especifica el llenguatge dels següents fitxers d''\n"
+" entrada. Els llenguatges permesos inclouen: c c++\n"
+" assembler none. \"none\" significa revertir a la\n"
+" conducta habitual de endevinar el llenguatge basat\n"
+" en l'extensió del fitxer\n"
+
+#: gcc.c:2928
+#, c-format
+msgid ""
+"\n"
+"Options starting with -g, -f, -m, -O, -W, or --param are automatically\n"
+" passed on to the various sub-processes invoked by %s. In order to pass\n"
+" other options on to these processes the -W<letter> options must be used.\n"
+msgstr ""
+"\n"
+"Les opcions que comencen amb -g, -f, -m, -O, -W, o --param es passen\n"
+" automàticament als varis subprocesos invocats per %s. Per passar altres\n"
+" opcions a aquests processos es deuen usar les opcions -W<lletra>\n"
+
+#: gcc.c:3063
+#, c-format
+msgid "`-%c' option must have argument"
+msgstr "l'opció \"-%c\" deu tenir arguments"
+
+#: gcc.c:3085
+#, c-format
+msgid "couldn't run `%s': %s"
+msgstr ""
+
+#. translate_options () has turned --version into -fversion.
+#: gcc.c:3262
+#, c-format
+msgid "%s (GCC) %s\n"
+msgstr "%s (GCC) %s\n"
+
+#: gcc.c:3263
+msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: gcc.c:3265 gcov.c:364
+msgid ""
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+"\n"
+msgstr ""
+"Això és programari lliure; vegi el codi font per a les condicions de còpia.\n"
+"Aquest és programari lliure; vegeu el codi font per les condicions\n"
+"de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
+"ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n"
+
+#: gcc.c:3366
+msgid "argument to `-Xlinker' is missing"
+msgstr "falta l'argument per a \"-Xlinker\""
+
+#: gcc.c:3374
+msgid "argument to `-l' is missing"
+msgstr "falta l'argument per a \"-I\""
+
+#: gcc.c:3391
+msgid "argument to `-specs' is missing"
+msgstr "falta l'argument per a \"-specs\""
+
+#: gcc.c:3406
+msgid "argument to `-specs=' is missing"
+msgstr "falta l'argument per a \"-specs=\""
+
+#: gcc.c:3436
+#, c-format
+msgid "`-%c' must come at the start of the command line"
+msgstr ""
+
+#: gcc.c:3445
+msgid "argument to `-B' is missing"
+msgstr "falta l'argument per a \"-B\""
+
+#: gcc.c:3618
+msgid "cannot specify -o with -c or -S and multiple compilations"
+msgstr "no es pot especificar -o amb -c o -S i múltiples compilacions"
+
+#: gcc.c:3791
+msgid "warning: -pipe ignored because -save-temps specified"
+msgstr "Avís: s'ignora -pipe perquè es va especificar -save-temps"
+
+#: gcc.c:3795
+msgid "warning: -pipe ignored because -time specified"
+msgstr "Avís: s'ignora -pipe perquè es va especificar -time"
+
+#: gcc.c:3807
+msgid "argument to `-x' is missing"
+msgstr "falta l'argument per a \"-x\""
+
+#: gcc.c:3835
+#, c-format
+msgid "argument to `-%s' is missing"
+msgstr "falta l'argument per a \"-%s\""
+
+#: gcc.c:3896
+#, c-format
+msgid "warning: `-x %s' after last input file has no effect"
+msgstr "avís: \"-x %s\" després de l'últim fitxer d'entrada no té efecte"
+
+#: gcc.c:4241
+msgid "invalid specification! Bug in cc"
+msgstr "Especificació invàlida! Bug en cc."
+
+#: gcc.c:4395
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. 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:4955
+#, c-format
+msgid "spec failure: '%%*' has not been initialized by pattern match"
+msgstr "Falla en spec: \"%%*\" no ha estat iniciat per coincidència de patró"
+
+#: gcc.c:4964
+#, c-format
+msgid "warning: use of obsolete %%[ operator in specs"
+msgstr "Avís: ús de l'operador obsolet %%[ en specs"
+
+#: gcc.c:4982
+#, c-format
+msgid "Processing spec %c%s%c, which is '%s'\n"
+msgstr "Processant l'especificació %c%s%c, el qual és \"%s\"\n"
+
+#: gcc.c:5107
+#, c-format
+msgid "spec failure: unrecognized spec option '%c'"
+msgstr "Falla en spec: Opció d'especificació \"%c\" no reconeguda"
+
+#: gcc.c:5188
+#, c-format
+msgid "unknown spec function `%s'"
+msgstr "funció d'especificació \"%s\" desconeguda"
+
+#: gcc.c:5207
+#, c-format
+msgid "error in args to spec function `%s'"
+msgstr "error en els arguments per a la funció d'especificació \"%s\""
+
+#: gcc.c:5256
+msgid "malformed spec function name"
+msgstr "nom de la funció d'especificació malformat"
+
+#. )
+#: gcc.c:5259
+msgid "no arguments for spec function"
+msgstr "molt pocs arguments per a la funció spec"
+
+#: gcc.c:5278
+msgid "malformed spec function arguments"
+msgstr ""
+
+#: gcc.c:5386
+msgid "mismatched braces in specs"
+msgstr "claus sense coincidència en especificacions"
+
+#: gcc.c:6081
+#, c-format
+msgid "unrecognized option `-%s'"
+msgstr "opció \"-%s\" no reconeguda"
+
+#: gcc.c:6087
+#, c-format
+msgid "install: %s%s\n"
+msgstr "instal·lar: %s%s\n"
+
+#: gcc.c:6088
+#, c-format
+msgid "programs: %s\n"
+msgstr "programes: %s\n"
+
+#: gcc.c:6089
+#, c-format
+msgid "libraries: %s\n"
+msgstr "biblioteques: %s\n"
+
+#: gcc.c:6146
+msgid ""
+"\n"
+"For bug reporting instructions, please see:\n"
+msgstr ""
+"\n"
+"Per a instruccions de report de bug, si us plau per favor vegi:\n"
+
+#: gcc.c:6162
+#, c-format
+msgid "Configured with: %s\n"
+msgstr "Configurat amb: %s\n"
+
+#: gcc.c:6176
+#, c-format
+msgid "Thread model: %s\n"
+msgstr "Model de fils: %s\n"
+
+#: gcc.c:6187
+#, c-format
+msgid "gcc version %s\n"
+msgstr "gcc versió %s\n"
+
+#: gcc.c:6189
+#, c-format
+msgid "gcc driver version %s executing gcc version %s\n"
+msgstr "controlador gcc versió %s executant gcc versió %s\n"
+
+#: gcc.c:6197
+msgid "no input files"
+msgstr "no hi ha fitxers d'entrada"
+
+#: gcc.c:6235
+#, c-format
+msgid "%s: %s compiler not installed on this system"
+msgstr "%s: el compilador %s no està instal·lat en aquest sistema"
+
+#: gcc.c:6310
+#, c-format
+msgid "%s: linker input file unused because linking not done"
+msgstr "%s: fitxer d'entrada de l'enllaçador sense ùs perquè no es va fer enllaç"
+
+#: gcc.c:6353
+#, c-format
+msgid "language %s not recognized"
+msgstr "no es reconeix el llenguatge %s"
+
+#: gcc.c:6456
+msgid "internal gcc abort"
+msgstr "avortament intern de gcc"
+
+#: gcov.c:325
+msgid "Internal gcov abort.\n"
+msgstr "avortament intern de gcov.\n"
+
+#: gcov.c:338
+msgid ""
+"Usage: gcov [OPTION]... SOURCEFILE\n"
+"\n"
+msgstr ""
+"Us: gcov [OPCIO]... FITXERFONT\n"
+"\n"
+
+#: gcov.c:339
+msgid ""
+"Print code coverage information.\n"
+"\n"
+msgstr ""
+"Produire les informacions de la covertura del codi.\n"
+"\n"
+
+#: gcov.c:340
+msgid " -h, --help Print this help, then exit\n"
+msgstr " -h, --help Mostra aquesta informació, i surt\n"
+
+#: gcov.c:341
+msgid " -v, --version Print version number, then exit\n"
+msgstr " -v, --version Mostra el numero de versió, i surt\n"
+
+#: gcov.c:342
+msgid " -b, --branch-probabilities Include branch probabilities in output\n"
+msgstr " -b, --branch-probabilities Incloure les probabilitats de brancament en la sortida\n"
+
+#: gcov.c:343
+msgid ""
+" -c, --branch-counts Given counts of branches taken\n"
+" rather than percentages\n"
+msgstr ""
+" -c, --branch-counts Dóna el compte de branques pres\n"
+" enlloc de percentatges\n"
+
+#: gcov.c:345
+msgid " -n, --no-output Do not create an output file\n"
+msgstr " -n, --no-output No crea un fitxer de sortida\n"
+
+#: gcov.c:346
+msgid ""
+" -l, --long-file-names Use long output file names for included\n"
+" source files\n"
+msgstr ""
+" -l, --long-file-names Usar nom de fitxers de sortida llargs per a\n"
+" les fitxers font inclòs\n"
+
+#: gcov.c:348
+msgid " -f, --function-summaries Output summaries for each function\n"
+msgstr " -f, --function-summaries Fer un resum per a cada funció\n"
+
+#: gcov.c:349
+msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
+msgstr " -o, --object-directory DIR|FIT Cerca les fitxers objectes en DIR o el FITxer\n"
+
+#: gcov.c:350
+msgid " -p, --preserve-paths Preserve all pathname components\n"
+msgstr ""
+
+#: gcov.c:351
+#, c-format
+msgid ""
+"\n"
+"For bug reporting instructions, please see:\n"
+"%s.\n"
+msgstr ""
+"\n"
+"Per a instrucions d'informe de bug, si us plau consulta:\n"
+"%s.\n"
+
+#: gcov.c:361
+#, c-format
+msgid "gcov (GCC) %s\n"
+msgstr "gcov (GCC) %s\n"
+
+#: gcov.c:362
+msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2001 Free Software Foundation, Inc.\n"
+
+#: gcov.c:500
+#, c-format
+msgid "Could not open basic block file %s.\n"
+msgstr "No es pot obrir fitxer de bloc bàsic %s.\n"
+
+#: gcov.c:507
+#, c-format
+msgid "Could not open program flow graph file %s.\n"
+msgstr "No es pot obrir el fitxer del graf de fluix del programa %s.\n"
+
+#: gcov.c:524
+#, c-format
+msgid "Could not open data file %s.\n"
+msgstr "No es pot obrir fitxer de dades %s.\n"
+
+#: gcov.c:525
+msgid "Assuming that all execution counts are zero.\n"
+msgstr "Assumint que tots els comptes d'execició estan a zero.\n"
+
+#: gcov.c:534
+#, c-format
+msgid "No executable code associated with file %s.\n"
+msgstr "No hi ha codi executable associat al fitxer %s.\n"
+
+#: gcov.c:1186
+#, c-format
+msgid "%s of %d lines executed in %s %s\n"
+msgstr "es van executar %s de %d línies en %s %s\n"
+
+#: gcov.c:1191
+#, c-format
+msgid "No executable lines in %s %s\n"
+msgstr "No hi ha línies de codi font executable en %s %s\n"
+
+#: gcov.c:1198
+#, c-format
+msgid "%s of %d branches executed in %s %s\n"
+msgstr "%s de %d ramificacions executades en %s %s\n"
+
+#: gcov.c:1203
+#, c-format
+msgid "%s of %d branches taken at least once in %s %s\n"
+msgstr "%s de %d ramificacions visitades almenys una vegada en %s %s\n"
+
+#: gcov.c:1209
+#, c-format
+msgid "No branches in %s %s\n"
+msgstr "No hi ha ramificacions en %s %s\n"
+
+#: gcov.c:1211
+#, c-format
+msgid "%s of %d calls executed in %s %s\n"
+msgstr "%s de %d cridades executades en %s %s\n"
+
+#: gcov.c:1216
+#, c-format
+msgid "No calls in %s %s\n"
+msgstr "No hi ha cridades en %s %s\n"
+
+#: gcov.c:1351
+#, c-format
+msgid "didn't use all bb entries of graph, function %s\n"
+msgstr "no es van usar totes les entrades bb del graf, funció %s\n"
+
+#: gcov.c:1353
+#, c-format
+msgid "block_num = %ld, num_blocks = %d\n"
+msgstr "block_num = %ld, num_blocks = %d\n"
+
+#: gcov.c:1367
+#, c-format
+msgid "ERROR: unexpected line number %ld\n"
+msgstr ""
+
+#: gcov.c:1383
+#, c-format
+msgid "ERROR: too many basic blocks in function %s\n"
+msgstr "ERROR: massa blocs bàsics en la funció %s\n"
+
+#: gcov.c:1398
+#, c-format
+msgid "ERROR: out of range line number in function %s\n"
+msgstr "ERROR: nombre de línies fora de rang en la funció %s\n"
+
+#: gcov.c:1470
+#, c-format
+msgid "Could not open source file %s.\n"
+msgstr "No es pot obrir el fitxer de codi font %s.\n"
+
+#: gcov.c:1480
+#, c-format
+msgid "Warning: source file %s is newer than %s\n"
+msgstr "Avís: el fitxer actual %s és més nou que %s\n"
+
+#: gcov.c:1510
+#, c-format
+msgid "Unexpected EOF while reading source file %s.\n"
+msgstr "EOF inesperat mentre es llegia el fitxer de codi font %s.\n"
+
+#: gcov.c:1532
+#, c-format
+msgid "call %2d never executed\n"
+msgstr "la cridada %2d mai s'executa\n"
+
+#: gcov.c:1535
+#, c-format
+msgid "call %2d returns %s\n"
+msgstr "la cridada %2d retorna %s\n"
+
+#: gcov.c:1543
+#, c-format
+msgid "branch %2d never executed\n"
+msgstr "la ramificació %2d mai s'executa\n"
+
+#: gcov.c:1546
+#, c-format
+msgid "branch %2d taken %s\n"
+msgstr "ramificació %2d presa %s\n"
+
+#: gcov.c:1610
+#, c-format
+msgid "Creating %s.\n"
+msgstr "Creant %s.\n"
+
+#: gcov.c:1613
+#, c-format
+msgid "Error writing output file %s.\n"
+msgstr "Error a l'escriure al fitxer de sortida %s.\n"
+
+#: gcov.c:1618
+#, c-format
+msgid "Could not open output file %s.\n"
+msgstr "No es pot obrir el fitxer de sortida %s.\n"
+
+#: gcse.c:763
+#, c-format
+msgid "GCSE disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block"
+msgstr "GCSE desactivat: %d > 1000 blocs bàsics i %d >= 20 blocs bord/bàsics"
+
+#: gcse.c:775
+#, c-format
+msgid "GCSE disabled: %d basic blocks and %d registers"
+msgstr "GCSE desactivat: %d blocs bàsics i %d registres"
+
+#: genautomata.c:1490
+#, c-format
+msgid "Name `%s' contains quotes"
+msgstr ""
+
+#: genautomata.c:1621
+#, c-format
+msgid "invalid string `%s' in define_cpu_unit"
+msgstr "cadena \"%s\" invàlida en define_cpu_unit"
+
+#: genautomata.c:1650
+#, c-format
+msgid "invalid string `%s' in define_query_cpu_unit"
+msgstr "cadena \"%s\" invàlida en define_query_cpu_unit"
+
+#: genautomata.c:1682 genautomata.c:1685
+#, c-format
+msgid "invalid string `%s' in define_bypass"
+msgstr "cadena \"%s\" invàlida en define_bypass"
+
+#: genautomata.c:1720
+#, c-format
+msgid "invalid first string `%s' in exclusion_set"
+msgstr "primera cadena \"%s\" invàlida en exclusion_set"
+
+#: genautomata.c:1724
+#, c-format
+msgid "invalid second string `%s' in exclusion_set"
+msgstr "segona cadena \"%s\" invàlida en exclusion_set"
+
+#: genautomata.c:1760
+#, c-format
+msgid "invalid first string `%s' in presence_set"
+msgstr "primera cadena \"%s\" invàlida en presence_set"
+
+#: genautomata.c:1764
+#, c-format
+msgid "invalid second string `%s' in presence_set"
+msgstr ""
+
+#: genautomata.c:1800
+#, c-format
+msgid "invalid first string `%s' in absence_set"
+msgstr "primera cadena \"%s\" invàlida en absence_set"
+
+#: genautomata.c:1804
+#, c-format
+msgid "invalid second string `%s' in absence_set"
+msgstr ""
+
+#: genautomata.c:1837
+#, c-format
+msgid "invalid string `%s' in define_automaton"
+msgstr ""
+
+#: genautomata.c:1868
+#, c-format
+msgid "invalid option `%s' in automata_option"
+msgstr "opció·\"%s\" invàlida en automata_option"
+
+#: genautomata.c:1890
+#, c-format
+msgid "garbage after ) in reservation `%s'"
+msgstr ""
+
+#: genautomata.c:1921 genautomata.c:1954 genautomata.c:1981
+#, c-format
+msgid "invalid `%s' in reservation `%s'"
+msgstr "\"%s\" invàlid en la reservació \"%s\""
+
+#: genautomata.c:1932
+#, c-format
+msgid "repetition `%s' <= 1 in reservation `%s'"
+msgstr ""
+
+#: genautomata.c:2425
+#, c-format
+msgid "unit `%s' in exclusion is not declared"
+msgstr ""
+
+#: genautomata.c:2427
+#, c-format
+msgid "`%s' in exclusion is not unit"
+msgstr ""
+
+#: genautomata.c:2465
+#, c-format
+msgid "unit `%s' excludes itself"
+msgstr "la unitat \"%s\" s'exclou a ella mateixa"
+
+#: genautomata.c:2473
+#, c-format
+msgid "units `%s' and `%s' in exclusion set belong to different automata"
+msgstr ""
+
+#: genautomata.c:2603 genautomata.c:2609
+#, c-format
+msgid "unit `%s' excludes and requires presence of `%s'"
+msgstr ""
+
+#: genautomata.c:2623 genautomata.c:2629
+#, c-format
+msgid "unit `%s' requires absence and presence of `%s'"
+msgstr ""
+
+#: genautomata.c:2692 genautomata.c:2695
+#, c-format
+msgid "repeated declaration of automaton `%s'"
+msgstr "declaració repetida de l'autòmat \"%s\""
+
+#: genautomata.c:2711
+#, c-format
+msgid "define_insn_reservation `%s' has negative latency time"
+msgstr ""
+
+#: genautomata.c:2717
+#, c-format
+msgid "`%s' is already used as insn reservation name"
+msgstr "\"%s\" ja es va utilitzar com un nom de reservació de insn"
+
+#: genautomata.c:2723
+#, c-format
+msgid "define_bypass `%s - %s' has negative latency time"
+msgstr ""
+
+#: genautomata.c:2737
+#, c-format
+msgid "automaton `%s' is not declared"
+msgstr "l'autòmat \"%s\" no es va declarar"
+
+#: genautomata.c:2747
+#, c-format
+msgid "define_unit `%s' without automaton when one defined"
+msgstr ""
+
+#: genautomata.c:2753
+#, c-format
+msgid "`%s' is declared as cpu unit"
+msgstr "\"%s\" es declarat com una unitat de cpu"
+
+#: genautomata.c:2762
+#, c-format
+msgid "`%s' is declared as cpu reservation"
+msgstr "\"%s\" està declarat com una reservació de cpu"
+
+#: genautomata.c:2772
+#, c-format
+msgid "repeated declaration of unit `%s'"
+msgstr "declaració repetida de la unitat \"%s\""
+
+#: genautomata.c:2775
+#, c-format
+msgid "repeated declaration of reservation `%s'"
+msgstr "declaració repetida de la reservació \"%s\""
+
+#: genautomata.c:2790 genautomata.c:2793
+#, c-format
+msgid "there is no insn reservation `%s'"
+msgstr "no hi ha reservació de insn \"%s\""
+
+#: genautomata.c:2810 genautomata.c:2815
+#, c-format
+msgid "the same bypass `%s - %s' is already defined"
+msgstr "el mateix bypass \"%s - %s\" ja està definit"
+
+#: genautomata.c:2820
+#, c-format
+msgid "bypass `%s - %s' is already defined"
+msgstr "el bypass \"%s - %s\" ja està definit"
+
+#: genautomata.c:2925 genautomata.c:2927
+#, c-format
+msgid "automaton `%s' is not used"
+msgstr "l'autòmat \"%s\" no s'utilitza"
+
+#: genautomata.c:2950
+#, c-format
+msgid "undeclared unit or reservation `%s'"
+msgstr ""
+
+#: genautomata.c:3028 genautomata.c:3030
+#, c-format
+msgid "unit `%s' is not used"
+msgstr "la unitat \"%s\" no s'utilitza"
+
+#: genautomata.c:3035 genautomata.c:3037
+#, c-format
+msgid "reservation `%s' is not used"
+msgstr "la reservació \"%s\" no s'utilitza"
+
+#: genautomata.c:3134
+#, c-format
+msgid "cycle in definition of reservation `%s'"
+msgstr "cicle en la definició de la reservació \"%s\""
+
+#: genautomata.c:5333
+#, c-format
+msgid "Units `%s' and `%s' should be in the same automaton"
+msgstr ""
+
+#: genautomata.c:9441
+msgid "-split has no argument."
+msgstr "-split no té arguments"
+
+#: genautomata.c:9442
+msgid "option `-split' has not been implemented yet\n"
+msgstr "l'opció \"-split\" encara no s'ha implementat\n"
+
+#: genautomata.c:9486 genautomata.c:9491
+#, c-format
+msgid "Automaton `%s': Insn `%s' will never be issued"
+msgstr ""
+
+#: genautomata.c:9498 genautomata.c:9501
+#, c-format
+msgid "Insn `%s' will never be issued"
+msgstr ""
+
+#: genautomata.c:9649
+msgid "Errors in DFA description"
+msgstr "Errors en la descripció DFA"
+
+#: genautomata.c:9732
+#, c-format
+msgid "Error in writing DFA description file %s"
+msgstr "Error a l'escriure el fitxer de descripció DFA %s"
+
+#: genconditions.c:196
+msgid "No input file name."
+msgstr "No hi ha fitxers d'entrada"
+
+#: ggc-page.c:1265
+msgid "open /dev/zero"
+msgstr ""
+
+#: graph.c:420 profile.c:1204 profile.c:1211 toplev.c:1836 toplev.c:5168
+#: f/com.c:14210 java/jcf-parse.c:917 java/jcf-parse.c:1063 java/lex.c:1776
+#: objc/objc-act.c:449
+#, c-format
+msgid "can't open %s"
+msgstr "no és pot obrir %s"
+
+#: haifa-sched.c:196
+#, c-format
+msgid "fix_sched_param: unknown param: %s"
+msgstr "fix_sched_param: paràmetre desconegut: %s"
+
+#: integrate.c:174
+msgid "function cannot be inline"
+msgstr "la funció no pot ser inline"
+
+#: integrate.c:178
+msgid "varargs function cannot be inline"
+msgstr "la funció varargs no pot ser inline"
+
+#: integrate.c:181
+msgid "function using alloca cannot be inline"
+msgstr "la funció que usa alloca no pot ser inline"
+
+#: integrate.c:184
+msgid "function using setjmp cannot be inline"
+msgstr "la funció que usa setjmp no pot ser inline"
+
+#: integrate.c:187
+msgid "function uses __builtin_eh_return"
+msgstr "la funció usa __builtin_eh_return"
+
+#: integrate.c:190
+msgid "function with nested functions cannot be inline"
+msgstr "una funció amb funcions niades no pot ser inline"
+
+#: integrate.c:194
+msgid "function with label addresses used in initializers cannot inline"
+msgstr "una funció amb adreces d'etiquetes usada en iniciadors no pot ser inline"
+
+#: integrate.c:201 integrate.c:245
+msgid "function too large to be inline"
+msgstr "la funció és massa gran per a ser inline"
+
+#: integrate.c:211
+msgid "no prototype, and parameter address used; cannot be inline"
+msgstr "no hi ha prototip, i s'usen adreces de paràmetre; no pot ser inline"
+
+#: integrate.c:218 integrate.c:263
+msgid "inline functions not supported for this return value type"
+msgstr "no es dóna suport a funcions inline per a aquest tipus de valor de retorn"
+
+#: integrate.c:223
+msgid "function with varying-size return value cannot be inline"
+msgstr "una funció amb valor de retorn de grandària variable no pot ser inline"
+
+#: integrate.c:230
+msgid "function with varying-size parameter cannot be inline"
+msgstr "una funció amb paràmetre de grandària variable no pot ser inline"
+
+#: integrate.c:233
+msgid "function with transparent unit parameter cannot be inline"
+msgstr "una funció amb paràmetre d'unitat transparent no pot ser inline"
+
+#: integrate.c:252
+msgid "function with computed jump cannot inline"
+msgstr "una funció amb salt calculat no pot ser inline"
+
+#: integrate.c:256
+msgid "function with nonlocal goto cannot be inline"
+msgstr "una funció amb goto no local no pot ser inline"
+
+#: integrate.c:270
+msgid "function with target specific attribute(s) cannot be inlined"
+msgstr "una funció amb atribut(s) específic(s) de l'objectiu no pot ser inline"
+
+#: line-map.c:198
+#, c-format
+msgid "In file included from %s:%u"
+msgstr "En el fitxer inclòs dès de %s:%u"
+
+#. Translators note: this message is used in conjunction
+#. 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>
+#.
+#. with all the "from"s lined up.
+#. The trailing comma is at the beginning of this message,
+#. and the trailing colon is not translated.
+#: line-map.c:216
+#, c-format
+msgid ""
+",\n"
+" from %s:%u"
+msgstr ""
+",\n"
+" dès de %s:%u"
+
+#. If we didn't find this parameter, issue an error message.
+#: params.c:80
+#, c-format
+msgid "invalid parameter `%s'"
+msgstr "el paràmetre \"%s\" és invàlid"
+
+#: profile.c:397
+#, c-format
+msgid "Profile does not match flowgraph of function %s (out of date?)"
+msgstr ""
+
+#: profile.c:400
+msgid ".da file corrupted"
+msgstr "fitxer .da corrupte"
+
+#: profile.c:634
+#, c-format
+msgid "corrupted profile info: prob for %d-%d thought to be %d"
+msgstr "informació de profil corrupta: prob per a %d-%d pensa ser %d"
+
+#: profile.c:1226
+#, c-format
+msgid "file %s not found, execution counts assumed to be zero"
+msgstr "no es troba el fitxer %s, s'assumeix que el compte d'execució és zero."
+
+#: protoize.c:542
+#, c-format
+msgid "%s: internal abort\n"
+msgstr "%s: abandó intern\n"
+
+#: protoize.c:633
+#, c-format
+msgid "%s: error writing file `%s': %s\n"
+msgstr "%s: error a l'escriure al fitxer \"%s\": %s\n"
+
+#: protoize.c:678
+#, c-format
+msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
+msgstr "%s: ùs \"%s [ -VqfnkN ] [ -i <icadena> ] [ nom_fitxer ... ]\"\n"
+
+#: protoize.c:681
+#, c-format
+msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
+msgstr "%s: ùs \"%s [ -VqfnkNlgC ] [ -B <nom_directori> ] [ nom_fitxer ... ]\"\n"
+
+#: protoize.c:788
+#, c-format
+msgid "%s: warning: no read access for file `%s'\n"
+msgstr "%s: avís: no hi ha accés de lectura per al fitxer \"%s\"\n"
+
+#: protoize.c:796
+#, c-format
+msgid "%s: warning: no write access for file `%s'\n"
+msgstr "%s: avís: no hi ha accés d'escriptura per al fitxer \"%s\"\n"
+
+#: protoize.c:804
+#, c-format
+msgid "%s: warning: no write access for dir containing `%s'\n"
+msgstr "%s: avís: no hi ha accés d'escriptura per al directori que conté a \"%s\"\n"
+
+#. Catch cases like /.. where we try to backup to a
+#. point above the absolute root of the logical file
+#. system.
+#: protoize.c:1222
+#, c-format
+msgid "%s: invalid file name: %s\n"
+msgstr "%s: nom de fitxer invàlid: %s\n"
+
+#: protoize.c:1374
+#, c-format
+msgid "%s: %s: can't get status: %s\n"
+msgstr "%s: %s: no es pot obtenir l'estat: %s\n"
+
+#: protoize.c:1395
+#, c-format
+msgid ""
+"\n"
+"%s: fatal error: aux info file corrupted at line %d\n"
+msgstr ""
+"\n"
+"%s: error fatal: fitxer d'informació auxiliar corrupte en la línia %d\n"
+
+#: protoize.c:1731
+#, c-format
+msgid "%s:%d: declaration of function `%s' takes different forms\n"
+msgstr "%s:%d: la declaració de la funció `%s' pren formes diferents\n"
+
+#: protoize.c:1989
+#, c-format
+msgid "%s: compiling `%s'\n"
+msgstr "%s: compilant `%s'\n"
+
+#: protoize.c:2012
+#, c-format
+msgid "%s: wait: %s\n"
+msgstr "%s: esperar: %s\n"
+
+#: protoize.c:2017
+#, c-format
+msgid "%s: subprocess got fatal signal %d\n"
+msgstr "%s: el subproces va rebre el senyal fatal %d\n"
+
+#: protoize.c:2025
+#, c-format
+msgid "%s: %s exited with status %d\n"
+msgstr "%s: %s va acabar amb estat %d\n"
+
+#: protoize.c:2077
+#, c-format
+msgid "%s: warning: missing SYSCALLS file `%s'\n"
+msgstr "%s: avís: falta el fitxer SYSCALLS \"%s\"\n"
+
+#: protoize.c:2086 protoize.c:2115
+#, c-format
+msgid "%s: can't read aux info file `%s': %s\n"
+msgstr "%s: no es pot llegir el fitxer d'informació auxiliar \"%s\": %s\n"
+
+#: protoize.c:2131 protoize.c:2159
+#, c-format
+msgid "%s: can't get status of aux info file `%s': %s\n"
+msgstr "%s: no es pot obtenir l'estat del fitxer d'informació auxiliar \"%s\": %s\n"
+
+#: protoize.c:2187
+#, c-format
+msgid "%s: can't open aux info file `%s' for reading: %s\n"
+msgstr "%s: no es pot obrir el fitxer d'informació auxiliar \"%s\" per a lectura: %s\n"
+
+#: protoize.c:2205
+#, c-format
+msgid "%s: error reading aux info file `%s': %s\n"
+msgstr "%s: error al llegir el fitxer d'informació auxiliar \"%s\": %s\n"
+
+#: protoize.c:2218
+#, c-format
+msgid "%s: error closing aux info file `%s': %s\n"
+msgstr "%s: error al tancar el fitxer d'informació auxiliar \"%s\": %s\n"
+
+#: protoize.c:2234
+#, c-format
+msgid "%s: can't delete aux info file `%s': %s\n"
+msgstr "%s: no es pot esborrar el fitxer d'informació auxiliar \"%s\": %s\n"
+
+#: protoize.c:2316 protoize.c:4318
+#, c-format
+msgid "%s: can't delete file `%s': %s\n"
+msgstr "%s: no es pot esborrar el fitxer \"%s\": %s\n"
+
+#: protoize.c:2395
+#, c-format
+msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
+msgstr "%s: avís: no es pot renomenar el fitxer \"%s\" a \"%s\": %s\n"
+
+#: protoize.c:2520
+#, c-format
+msgid "%s: conflicting extern definitions of '%s'\n"
+msgstr "%s: definicions externes de \"%s\" en conflicte\n"
+
+#: protoize.c:2524
+#, c-format
+msgid "%s: declarations of '%s' will not be converted\n"
+msgstr "%s: les declaracions de \"%s\" no es convertiran\n"
+
+#: protoize.c:2526
+#, c-format
+msgid "%s: conflict list for '%s' follows:\n"
+msgstr "%s: llistes de conflictes per a \"%s\" a continuació:\n"
+
+#: protoize.c:2559
+#, c-format
+msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
+msgstr "%s: avís: usant llistes formals de %s(%d) per a la funció \"%s\"\n"
+
+#: protoize.c:2599
+#, c-format
+msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
+msgstr "%s: %d: s'usa \"%s\" però falta en SYSCALLS\n"
+
+#: protoize.c:2605
+#, c-format
+msgid "%s: %d: warning: no extern definition for `%s'\n"
+msgstr "%s: %d: avís: no hi ha definició extern per a \"%s\"\n"
+
+#: protoize.c:2636
+#, c-format
+msgid "%s: warning: no static definition for `%s' in file `%s'\n"
+msgstr "%s: avís: no hi ha definició static per a \"%s\" en el fitxer \"%s\"\n"
+
+#: protoize.c:2642
+#, c-format
+msgid "%s: multiple static defs of `%s' in file `%s'\n"
+msgstr "%s: definicions static múltiples de \"%s\" en el fitxer \"%s\"\n"
+
+#: protoize.c:2815 protoize.c:2818
+#, c-format
+msgid "%s: %d: warning: source too confusing\n"
+msgstr "%s: %d: avís: codi font massa confús\n"
+
+#: protoize.c:3024
+#, c-format
+msgid "%s: %d: warning: varargs function declaration not converted\n"
+msgstr "%s: %d: avís: no es va convertir la declaració de la funció varargs\n"
+
+#: protoize.c:3039
+#, c-format
+msgid "%s: declaration of function `%s' not converted\n"
+msgstr "%s: no es va convertir la declaració de la funció \"%s\"\n"
+
+#: protoize.c:3162
+#, c-format
+msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
+msgstr "%s: avís: massa llistes de paràmetres en la declaració de \"%s\"\n"
+
+#: protoize.c:3183
+#, c-format
+msgid ""
+"\n"
+"%s: warning: too few parameter lists in declaration of `%s'\n"
+msgstr ""
+"\n"
+"%s: avís: molt poques llistes de paràmetres en la declaració de \"%s\"\n"
+
+#: protoize.c:3281
+#, c-format
+msgid "%s: %d: warning: found `%s' but expected `%s'\n"
+msgstr "%s: %d: avís: es va trobar \"%s\" però s'esperava \"%s\"\n"
+
+#: protoize.c:3459
+#, c-format
+msgid "%s: local declaration for function `%s' not inserted\n"
+msgstr "%s: no es va inserir la declaració local per a la funció \"%s\"\n"
+
+#: protoize.c:3486
+#, c-format
+msgid ""
+"\n"
+"%s: %d: warning: can't add declaration of `%s' into macro call\n"
+msgstr ""
+"\n"
+"%s: %d: avís: no es pot afegir la declaració per a\"%s\" en la cridada de macro\n"
+
+#: protoize.c:3560
+#, c-format
+msgid "%s: global declarations for file `%s' not inserted\n"
+msgstr "%s: no es van inserir les declaracions globals per al fitxer \"%s\"\n"
+
+#: protoize.c:3651 protoize.c:3681
+#, c-format
+msgid "%s: definition of function `%s' not converted\n"
+msgstr "%s: no es va convertir la definició de la funció \"%s\"\n"
+
+#: protoize.c:3670
+#, c-format
+msgid "%s: %d: warning: definition of %s not converted\n"
+msgstr "%s: %d: avís: no es va convertir la definició de %s\n"
+
+#: protoize.c:4000
+#, c-format
+msgid "%s: found definition of `%s' at %s(%d)\n"
+msgstr "%s: es va trobar la definició de \"%s\" en %s(%d)\n"
+
+#. If we make it here, then we did not know about this
+#. function definition.
+#: protoize.c:4016
+#, c-format
+msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
+msgstr "%s: %d: avís: \"%s\" va ser exclòs pel preprocessament\n"
+
+#: protoize.c:4019
+#, c-format
+msgid "%s: function definition not converted\n"
+msgstr "%s: no es va convertir la definició de la funció\n"
+
+#: protoize.c:4078
+#, c-format
+msgid "%s: `%s' not converted\n"
+msgstr "%s: no es va convertir \"%s\"\n"
+
+#: protoize.c:4086
+#, c-format
+msgid "%s: would convert file `%s'\n"
+msgstr "%s: es podria convertir el fitxer \"%s\"\n"
+
+#: protoize.c:4089
+#, c-format
+msgid "%s: converting file `%s'\n"
+msgstr "%s: convertint el fitxer \"%s\"\n"
+
+#: protoize.c:4099
+#, c-format
+msgid "%s: can't get status for file `%s': %s\n"
+msgstr "%s: no es pot obtenir l'estat del fitxer \"%s\": %s\n"
+
+#: protoize.c:4141
+#, c-format
+msgid "%s: can't open file `%s' for reading: %s\n"
+msgstr "%s: no es pot obrir el fitxer \"%s\" per a lectura: %s\n"
+
+#: protoize.c:4156
+#, c-format
+msgid ""
+"\n"
+"%s: error reading input file `%s': %s\n"
+msgstr ""
+"\n"
+"%s: error al llegint el fitxer d'entrada \"%s\": %s\n"
+
+#: protoize.c:4190
+#, c-format
+msgid "%s: can't create/open clean file `%s': %s\n"
+msgstr "%s: no es pot crear/obrir el fitxer net \"%s\": %s\n"
+
+#: protoize.c:4295
+#, c-format
+msgid "%s: warning: file `%s' already saved in `%s'\n"
+msgstr "%s: avís: el fitxer \"%s\" ja havia estat guardat en \"%s\"\n"
+
+#: protoize.c:4303
+#, c-format
+msgid "%s: can't link file `%s' to `%s': %s\n"
+msgstr "%s: no es pot enllaçar el fitxer \"%s\" a \"%s\": %s\n"
+
+#: protoize.c:4333
+#, c-format
+msgid "%s: can't create/open output file `%s': %s\n"
+msgstr "%s: no es pot crear/obrir el fitxer de sortida \"%s\": %s\n"
+
+#: protoize.c:4366
+#, c-format
+msgid "%s: can't change mode of file `%s': %s\n"
+msgstr "%s: no es pot canviar la manera del fitxer \"%s\": %s\n"
+
+#: protoize.c:4541
+#, c-format
+msgid "%s: cannot get working directory: %s\n"
+msgstr "%s: no es pot obtenir el directori de treball: %s\n"
+
+#: protoize.c:4639
+#, c-format
+msgid "%s: input file names must have .c suffixes: %s\n"
+msgstr "%s: els noms de fitxer d'entrada deuen tenir sufixos .c: %s\n"
+
+#: ra.c:750
+msgid "Didn't find a coloring.\n"
+msgstr ""
+
+#: reg-stack.c:673
+#, c-format
+msgid "output constraint %d must specify a single register"
+msgstr "la restricció de sortida %d deu especificar un sol registre"
+
+#: reg-stack.c:683
+#, c-format
+msgid "output constraint %d cannot be specified together with \"%s\" clobber"
+msgstr "la restricció de sortida %d no es pot especificar amb el clobber \"%s\""
+
+#: reg-stack.c:706
+msgid "output regs must be grouped at top of stack"
+msgstr "els registres de sortida deuen ser agrupats en la part superior de la pila"
+
+#: reg-stack.c:743
+msgid "implicitly popped regs must be grouped at top of stack"
+msgstr "els registres extrets implícitament deuen ser agrupats en la part superior de la pila"
+
+#: reg-stack.c:762
+#, c-format
+msgid "output operand %d must use `&' constraint"
+msgstr "l'operant de sortida %d deu usar la restricció \"&\""
+
+#: regclass.c:756
+#, c-format
+msgid "can't use '%s' as a %s register"
+msgstr "no es pot usar \"%s\" com un registre %s"
+
+#: regclass.c:771 config/ia64/ia64.c:4304 config/ia64/ia64.c:4311
+#, c-format
+msgid "unknown register name: %s"
+msgstr "nom de registre desconegut: %s"
+
+#: regclass.c:782
+msgid "global register variable follows a function definition"
+msgstr "la variable de registre global segueix a una definició de funció"
+
+#: regclass.c:786
+msgid "register used for two global register variables"
+msgstr "nom de registre usat per dues variables de registre globals"
+
+#: regclass.c:791
+msgid "call-clobbered register used for global register variable"
+msgstr "registre de cridada alterada usat per a una variable de registre global"
+
+#: regrename.c:1899
+#, c-format
+msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
+msgstr "validate_value_data: [%u] next_regno erroni per a la cadena buida (%u)"
+
+#: regrename.c:1911
+#, c-format
+msgid "validate_value_data: Loop in regno chain (%u)"
+msgstr "validate_value_data: Cicle en la cadena regno (%u)"
+
+#: regrename.c:1914
+#, c-format
+msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
+msgstr "validate_value_data: [%u] oldest_regno erroni (%u)"
+
+#: regrename.c:1926
+#, c-format
+msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
+msgstr "validate_value_data: [%u] Registre no buit en la cadena (%s %u %i)"
+
+#: reload.c:1229
+msgid "cannot reload integer constant operand in `asm'"
+msgstr "no es pot recarregar operants constants enters en \"asm\""
+
+#: reload.c:1251
+msgid "impossible register constraint in `asm'"
+msgstr "restricció de registres impossible en \"asm\""
+
+#: reload.c:3461
+msgid "`&' constraint used with no register class"
+msgstr "es va usar la restricció \"&\" sense classe de registre"
+
+#: reload.c:3629
+msgid "unable to generate reloads for:"
+msgstr " no es poden generar recarregues per a:"
+
+#: reload.c:3630 reload.c:3844
+msgid "inconsistent operand constraints in an `asm'"
+msgstr "restriccions de operants inconsistents en un \"asm\""
+
+#: reload1.c:1250
+msgid "frame size too large for reliable stack checking"
+msgstr "la grandària del marc és massa gran per a una revisió fiable de la pila"
+
+#: reload1.c:1253
+msgid "try reducing the number of local variables"
+msgstr "intenti reduir el nombre de variables locals"
+
+#: reload1.c:1909
+#, c-format
+msgid "can't find a register in class `%s' while reloading `asm'"
+msgstr "no es pot trobar un registre en la classe \"%s\" mentre es recarrega \"asm\"."
+
+#: reload1.c:1913
+#, c-format
+msgid "unable to find a register to spill in class `%s'"
+msgstr "no es pot trobar un registre per a buidar la classe \"%s\"."
+
+#: reload1.c:1915
+msgid "this is the insn:"
+msgstr "això és el insn:"
+
+#: reload1.c:3938
+msgid "`asm' operand requires impossible reload"
+msgstr "l'operant \"asm\" requereix una recarrega impossible"
+
+#. It's the compiler's fault.
+#: reload1.c:5052
+msgid "could not find a spill register"
+msgstr "no es pot trobar un registre de buidat "
+
+#: reload1.c:5057
+msgid "`asm' operand constraint incompatible with operand size"
+msgstr "la restricció de l'operant \"asm\" és incompatible amb la grandària de l'operant"
+
+#. It's the compiler's fault.
+#: reload1.c:6679
+msgid "VOIDmode on an output"
+msgstr "VOIDmode en una sortida"
+
+#: reload1.c:6680
+msgid "output operand is constant in `asm'"
+msgstr "l'operant de sortida és constant en \"asm\""
+
+#: rtl-error.c:140
+msgid "unrecognizable insn:"
+msgstr "insn no recognoscible:"
+
+#: rtl-error.c:142
+msgid "insn does not satisfy its constraints:"
+msgstr "insn no satisfà les seves restriccions:"
+
+#: rtl.c:535
+#, c-format
+msgid "RTL check: access of elt %d of `%s' with last elt %d in %s, at %s:%d"
+msgstr "revisió RTL: accés de elt %d de \"%s\" amb l'últim elt %d en %s, en %s:%d"
+
+#: rtl.c:550
+#, c-format
+msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
+msgstr "revisió RTL: s'esperava el tipus elt %d \"%c\", es té \"%c\" (rtx %s) en %s, en %s:%d"
+
+#: rtl.c:566
+#, c-format
+msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d"
+msgstr "revisió RTL: s'esperava el tipus elt %d \"%c\" o \"%c\", es té \"%c\" (rtx %s) en %s, en %s:%d"
+
+#: rtl.c:579
+#, c-format
+msgid "RTL check: expected code `%s', have `%s' in %s, at %s:%d"
+msgstr "Revisió RTL: s'esperava el codi \"%s\", es té \"%s\" en %s, en %s:%d"
+
+#: rtl.c:593
+#, c-format
+msgid "RTL check: expected code `%s' or `%s', have `%s' in %s, at %s:%d"
+msgstr "Revisió RTL: s'esperava el codi \"%s\" o \"%s\", es té \"%s\" en %s, en %s:%d"
+
+#: rtl.c:608
+#, c-format
+msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
+msgstr "Revisió RTL: accés de elt %d de vector amb l'últim elt %d en %s, en %s:%d"
+
+#: rtl.c:623
+#, c-format
+msgid "RTL flag check: %s used with unexpected rtx code `%s' in %s, at %s:%d"
+msgstr "Revisió RTL: es va usar %s amb el codi rtx inesperat \"%s\" en %s, en %s:%d"
+
+#: stmt.c:766
+#, c-format
+msgid "jump to `%s' invalidly jumps into binding contour"
+msgstr "el salt a \"%s\" salta de forma invàlida a un contorn d'unió"
+
+#: stmt.c:1002 stmt.c:3766
+#, c-format
+msgid "label `%s' used before containing binding contour"
+msgstr "es va usar abans l'etiqueta \"%s\" que contenia un contorn d'unió"
+
+#: stmt.c:1190
+msgid "output operand constraint lacks `='"
+msgstr "la restricció d'operant de sortida manca de \"=\""
+
+#: stmt.c:1205
+#, c-format
+msgid "output constraint `%c' for operand %d is not at the beginning"
+msgstr "la restricció de sortida \"%c\" per a l'operant %d no està al principi"
+
+#: stmt.c:1227
+msgid "operand constraint contains incorrectly positioned '+' or '='"
+msgstr "la restricció d'operant conté \"+\" o \"=\" mal posicionat"
+
+#: stmt.c:1233 stmt.c:1337
+#, c-format
+msgid "`%%' constraint used with last operand"
+msgstr "restricció \"%%\" utilitzada amd l'últim operant"
+
+#: stmt.c:1252
+msgid "matching constraint not valid in output operand"
+msgstr "la restricció coincident no és vàlida en l'operant de sortida"
+
+#: stmt.c:1328
+#, c-format
+msgid "input operand constraint contains `%c'"
+msgstr "la restricció d'operant d'entrada conté \"%c\""
+
+#: stmt.c:1368
+msgid "matching constraint references invalid operand number"
+msgstr "la restricció de coincidència fa referència a un nombre d'operant no vàlid"
+
+#: stmt.c:1400
+#, c-format
+msgid "invalid punctuation `%c' in constraint"
+msgstr "puntuació invàlida \"%c\" en la restricció"
+
+#: stmt.c:1450
+#, c-format
+msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
+msgstr "els qualificadors asm per a la variable \"%s\" generen conflicte amb la lista d'agrupació asm"
+
+#: stmt.c:1540
+#, c-format
+msgid "unknown register name `%s' in `asm'"
+msgstr "nom de registre desconegut \"%s\" en \"asm\""
+
+#: stmt.c:1588
+#, c-format
+msgid "more than %d operands in `asm'"
+msgstr "més de %d operants en \"asm\""
+
+#: stmt.c:1650
+#, c-format
+msgid "output number %d not directly addressable"
+msgstr "el nombre de sortida %d no és directament dirrectionable"
+
+#: stmt.c:1728
+#, c-format
+msgid "asm operand %d probably doesn't match constraints"
+msgstr "l'operant asm %d probablement no coincideix amb les restriccions"
+
+#: stmt.c:1738
+#, c-format
+msgid "use of memory input without lvalue in asm operand %d is deprecated"
+msgstr ""
+
+#: stmt.c:1889
+msgid "asm clobber conflict with output operand"
+msgstr "l'agrupació asm causa conflictes amb l'operant de sortida"
+
+#: stmt.c:1894
+msgid "asm clobber conflict with input operand"
+msgstr "l'agrupació asm causa conflictes amb l'operant d'entrada"
+
+#: stmt.c:1929
+msgid "too many alternatives in `asm'"
+msgstr "massa alternatives en \"asm\""
+
+#: stmt.c:1941
+msgid "operand constraints for `asm' differ in number of alternatives"
+msgstr "les restriccions d'operants per a \"asm\" difereixen en el nombre d'alternatives"
+
+#: stmt.c:1994
+#, c-format
+msgid "duplicate asm operand name '%s'"
+msgstr "nom d'operant asm \"%s\" duplicat"
+
+#: stmt.c:2081
+msgid "missing close brace for named operand"
+msgstr "falta la clau final per a l'operant nomenat"
+
+#: stmt.c:2109
+#, c-format
+msgid "undefined named operand '%s'"
+msgstr "operant nomenat no definit \"%s\""
+
+#: stmt.c:3703
+#, c-format
+msgid "unused variable `%s'"
+msgstr "variable \"%s\" sense ús"
+
+#: stmt.c:5189
+#, c-format
+msgid "enumeration value `%s' not handled in switch"
+msgstr "el valor d'enumeració \"%s\" no es maneja en un switch"
+
+#: stmt.c:5214 stmt.c:5234
+#, c-format
+msgid "case value `%ld' not in enumerated type"
+msgstr "el valor de casi \"%ld\" no és un tipus enumerat"
+
+#: stmt.c:5217 stmt.c:5237
+#, c-format
+msgid "case value `%ld' not in enumerated type `%s'"
+msgstr "el valor de casi \"%ld\" no és un tipus enumerat \"%s\""
+
+#: stmt.c:5310
+msgid "switch missing default case"
+msgstr "mancada el casi per defecte per a un switch"
+
+#: stor-layout.c:178
+msgid "type size can't be explicitly evaluated"
+msgstr "la grandària del tipus no pot ser avaluat explícitament"
+
+#: stor-layout.c:180
+msgid "variable-size type declared outside of any function"
+msgstr "tipus de grandària variable declarat fora de qualsevol funció"
+
+#: stor-layout.c:487
+#, c-format
+msgid "size of `%s' is %d bytes"
+msgstr "la grandària de \"%s\" és de %d octets"
+
+#: stor-layout.c:489
+#, c-format
+msgid "size of `%s' is larger than %d bytes"
+msgstr "la grandària de \"%s\" és major que %d octets"
+
+#: stor-layout.c:909 stor-layout.c:1325
+#, c-format
+msgid "packed attribute causes inefficient alignment for `%s'"
+msgstr "l'atribut packed causa una alineació ineficient per a \"%s\""
+
+#: stor-layout.c:911 stor-layout.c:1327
+#, c-format
+msgid "packed attribute is unnecessary for `%s'"
+msgstr "no és necessari l'atribut packed per a \"%s\""
+
+#: stor-layout.c:926
+#, c-format
+msgid "padding struct to align `%s'"
+msgstr "estructura de farcit per a alinear \"%s\""
+
+#: stor-layout.c:1289
+msgid "padding struct size to alignment boundary"
+msgstr "grandària de l'estructura de farcit per als límits d'alineació"
+
+#: stor-layout.c:1332
+msgid "packed attribute causes inefficient alignment"
+msgstr "l'atribut packed causa una alineació ineficient"
+
+#: stor-layout.c:1334
+msgid "packed attribute is unnecessary"
+msgstr "no és necessari l'atribut packed"
+
+#: timevar.c:322
+#, c-format
+msgid "cannot timevar_pop '%s' when top of timevars stack is '%s'"
+msgstr ""
+
+#: timevar.c:453
+msgid ""
+"\n"
+"Execution times (seconds)\n"
+msgstr ""
+"\n"
+"Temps d'execució (segons)\n"
+
+#. Print total time.
+#: timevar.c:503
+msgid " TOTAL :"
+msgstr " TOTAL :"
+
+#: timevar.c:539
+#, c-format
+msgid "time in %s: %ld.%06ld (%ld%%)\n"
+msgstr "temps en %s: %ld.%06ld (%ld%%)\n"
+
+#: tlink.c:399
+#, c-format
+msgid "collect: reading %s\n"
+msgstr "collect: llegint %s\n"
+
+#: tlink.c:502
+#, c-format
+msgid "collect: recompiling %s\n"
+msgstr "collect: recompilant %s\n"
+
+#: tlink.c:674
+#, c-format
+msgid "collect: tweaking %s in %s\n"
+msgstr "collect: alterant %s en %s\n"
+
+#: tlink.c:721
+msgid "collect: relinking\n"
+msgstr "collect: reenllaçant\n"
+
+#: tlink.c:730
+#, c-format
+msgid "ld returned %d exit status"
+msgstr "ld va retornar l'estat de sortida %d"
+
+#: toplev.c:920
+msgid "Generate debugging info in default format"
+msgstr "Generar informació de depuració en el format per omissió"
+
+#: toplev.c:921
+msgid "Generate debugging info in default extended format"
+msgstr "Generar informació de depuració en el format estès per omissió"
+
+#: toplev.c:923
+msgid "Generate STABS format debug info"
+msgstr "Generar informació de depuració en el format STABS"
+
+#: toplev.c:924
+msgid "Generate extended STABS format debug info"
+msgstr "Generar informació de depuració en el format STABS estès"
+
+#: toplev.c:927
+msgid "Generate DWARF-1 format debug info"
+msgstr "Generar informació de depuració en el format DWARF-1"
+
+#: toplev.c:929
+msgid "Generate extended DWARF-1 format debug info"
+msgstr "Generar informació de depuració en el format DWARF-1 estès"
+
+#: toplev.c:932
+msgid "Generate DWARF-2 debug info"
+msgstr "Generar informació de depuració en el format DWARF-2"
+
+#: toplev.c:935
+msgid "Generate XCOFF format debug info"
+msgstr "Generar informació de depuració en el format XCOFF"
+
+#: toplev.c:936
+msgid "Generate extended XCOFF format debug info"
+msgstr "Generar informació de depuració en el format XCOFF estès"
+
+#: toplev.c:939
+msgid "Generate COFF format debug info"
+msgstr "Generar informació de depuració en el format COFF"
+
+#: toplev.c:942
+msgid "Generate VMS format debug info"
+msgstr "Generar informació de depuració en el format VMS"
+
+#: toplev.c:981
+msgid "Perform DWARF2 duplicate elimination"
+msgstr "Realitzar l'eliminació de DWARF2 duplicats"
+
+#: toplev.c:983
+msgid "Do not store floats in registers"
+msgstr "No guardar floats en els registres"
+
+#: toplev.c:985
+msgid "Consider all mem refs through pointers as volatile"
+msgstr "Considerar totes les referències a memòria a través de punters com volatile"
+
+#: toplev.c:987
+msgid "Consider all mem refs to global data to be volatile"
+msgstr "Considerar totes les referències a dades globals com volatile"
+
+#: toplev.c:989
+msgid "Consider all mem refs to static data to be volatile"
+msgstr "Considerar totes les referències a dades static com volatile"
+
+#: toplev.c:991
+msgid "Defer popping functions args from stack until later"
+msgstr "Diferir l'extracció d'arguments de funcions de la pila fins més tard"
+
+#: toplev.c:993
+msgid "When possible do not generate stack frames"
+msgstr "Quan sigui possible no generar marcs de pila"
+
+#: toplev.c:995
+msgid "Optimize sibling and tail recursive calls"
+msgstr "Optimitzar les cridades recursives germanades i d'extrem"
+
+#: toplev.c:997
+msgid "Perform superblock formation via tail duplication"
+msgstr ""
+
+#: toplev.c:999
+msgid "When running CSE, follow jumps to their targets"
+msgstr "Quan s'estigui executant CSE, seguir als salts als seus objectius"
+
+#: toplev.c:1001
+msgid "When running CSE, follow conditional jumps"
+msgstr "Quan s'estigui executant CSE, seguir als salts condicionals"
+
+#: toplev.c:1003
+msgid "Perform a number of minor, expensive optimizations"
+msgstr "Realitzar un nombre menor d'optimitzacions costoses"
+
+#: toplev.c:1005
+msgid "Perform jump threading optimizations"
+msgstr "Realitzar optimitzacions de filat de salts"
+
+#: toplev.c:1007
+msgid "Perform strength reduction optimizations"
+msgstr "Realitzar optimitzacions de reducció de força"
+
+#: toplev.c:1009
+msgid "Perform loop unrolling when iteration count is known"
+msgstr "Realitzar el desenrollament del cicle quan es coneix el compte d'iteració"
+
+#: toplev.c:1011
+msgid "Perform loop unrolling for all loops"
+msgstr "Realitzar el desenrollament del cicle per a tots els cicles"
+
+#: toplev.c:1013
+msgid "Generate prefetch instructions, if available, for arrays in loops"
+msgstr "Generar instruccions de precarregament, si estan disponibles, per a matrius en cicles"
+
+#: toplev.c:1015
+msgid "Force all loop invariant computations out of loops"
+msgstr "Forçar que totes les computacions invariantes del cicle siguin fora del cicle"
+
+#: toplev.c:1017
+msgid "Strength reduce all loop general induction variables"
+msgstr "Enfortir la reducció de totes les variables generals d'inducció de cicle"
+
+#: toplev.c:1019
+msgid "Store strings in writable data section"
+msgstr "Guardar les cadenes en la secció de dades modificables"
+
+#: toplev.c:1021
+msgid "Enable machine specific peephole optimizations"
+msgstr "Activar les optimitzacions de forats específiques de la màquina"
+
+#: toplev.c:1023
+msgid "Copy memory operands into registers before using"
+msgstr "Copiar els operants de memòria en registres abans d'usar-los"
+
+#: toplev.c:1025
+msgid "Copy memory address constants into regs before using"
+msgstr "Copiar les constants d'adreces de memòria en registres abans d'usar-los"
+
+#: toplev.c:1027
+msgid "Allow function addresses to be held in registers"
+msgstr "Permetre que les adreces de les funcions es conserven en registres"
+
+#: toplev.c:1029
+msgid "Integrate simple functions into their callers"
+msgstr "Integrar les funcions simples en els seus invocators"
+
+#: toplev.c:1031
+msgid "Generate code for funcs even if they are fully inlined"
+msgstr "Generar codi per a les funcions encara si estan completament inline"
+
+#: toplev.c:1033
+msgid "Pay attention to the 'inline' keyword"
+msgstr "Parar esment a la paraula clau \"inline\""
+
+#: toplev.c:1035
+msgid "Emit static const variables even if they are not used"
+msgstr "Emetre variables static const encara si no s'usen"
+
+#: toplev.c:1037
+msgid "Check for syntax errors, then stop"
+msgstr "Buscar errors de sintaxi, i aleshores detenir-se"
+
+#: toplev.c:1039
+msgid "Mark data as shared rather than private"
+msgstr "Marcar dades com compartits en lloc de privats"
+
+#: toplev.c:1041
+msgid "Enable saving registers around function calls"
+msgstr "Permetre guardar registres al voltant de cridades de funció"
+
+#: toplev.c:1043
+msgid "Return 'short' aggregates in memory, not registers"
+msgstr "Retornar els agregats \"short\" en memòria, no en registres"
+
+#: toplev.c:1045
+msgid "Return 'short' aggregates in registers"
+msgstr "Retornar els agregats \"short\" en registres"
+
+#: toplev.c:1047
+msgid "Attempt to fill delay slots of branch instructions"
+msgstr "Intentar emplenar les ranures de retard de les instruccions de ramificació"
+
+#: toplev.c:1049
+msgid "Perform the global common subexpression elimination"
+msgstr "Realitzar l'eliminació de subexpressions comuns globals"
+
+#: toplev.c:1051
+msgid "Perform enhanced load motion during global subexpression elimination"
+msgstr "Realitzar el moviment de càrrega millorada durant l'eliminació de subexpressions globals"
+
+#: toplev.c:1053
+msgid "Perform store motion after global subexpression elimination"
+msgstr "Realitzar el moviment de guardat després de l'eliminació de subexpressions globals"
+
+#: toplev.c:1055
+msgid "Perform the loop optimizations"
+msgstr "Realitzar les optimitzacions de cicle"
+
+#: toplev.c:1057
+msgid "Perform cross-jumping optimization"
+msgstr "Realitzar optimitzacions de salts creuats"
+
+#: toplev.c:1059
+msgid "Perform conversion of conditional jumps to branchless equivalents"
+msgstr ""
+
+#: toplev.c:1061
+msgid "Perform conversion of conditional jumps to conditional execution"
+msgstr "Realitzar la conversió de salts condicionals a execució condicional"
+
+#: toplev.c:1063
+msgid "Run CSE pass after loop optimizations"
+msgstr "Executar un pas CSE abans de les optimitzacions de cicles"
+
+#: toplev.c:1065
+msgid "Run the loop optimizer twice"
+msgstr "Executar el optimizador de cicles dues vegades"
+
+#: toplev.c:1067
+msgid "Delete useless null pointer checks"
+msgstr "Esborrar les revisions de punters nuls sense ús"
+
+#: toplev.c:1069
+msgid "Reschedule instructions before register allocation"
+msgstr "Recalendaritzar les instruccions abans de l'allotjament de registres"
+
+#: toplev.c:1071
+msgid "Reschedule instructions after register allocation"
+msgstr "Recalendaritzar les instruccions després de l'allotjament de registres"
+
+#: toplev.c:1073
+msgid "Enable scheduling across basic blocks"
+msgstr "Activar la calendarització entre blocs bàsics"
+
+#: toplev.c:1075
+msgid "Allow speculative motion of non-loads"
+msgstr "Permetre el moviment especulatiu de cap càrrega"
+
+#: toplev.c:1077
+msgid "Allow speculative motion of some loads"
+msgstr "Permetre el moviment especulatiu d'unes càrregues"
+
+#: toplev.c:1079
+msgid "Allow speculative motion of more loads"
+msgstr "Permetre el moviment especulatiu de més càrregues"
+
+#: toplev.c:1081
+msgid "Replace add,compare,branch with branch on count reg"
+msgstr "Reemplaçar add,compare,branch per branch en el compte de registres"
+
+#: toplev.c:1083
+msgid "Generate position independent code, if possible"
+msgstr "Generar codi independent de posició, si és possible"
+
+#: toplev.c:1086
+msgid "Enable exception handling"
+msgstr "Activar el maneig d'excepcions"
+
+#: toplev.c:1088
+msgid "Just generate unwind tables for exception handling"
+msgstr "Només generar matrius de desembolico per a maneig d'excepcions"
+
+#: toplev.c:1090
+msgid "Generate unwind tables exact at each instruction boundary"
+msgstr "Generar matrius de desembolico exactament en cada límit d'instrucció"
+
+#: toplev.c:1092
+msgid "Support synchronous non-call exceptions"
+msgstr "Suport per a excepcions síncrones no de cridades"
+
+#: toplev.c:1094
+msgid "Insert arc based program profiling code"
+msgstr "Inserir codi d'anàlisi de perfil basat en el programa arc"
+
+#: toplev.c:1096
+msgid "Create data files needed by gcov"
+msgstr "Crear fitxers de dades necessàries per a gcov"
+
+#: toplev.c:1098
+msgid "Use profiling information for branch probabilities"
+msgstr "Usar la informació d'anàlisi de perfil per a les probabilitats de ramificació"
+
+#: toplev.c:1100
+msgid "Enable basic program profiling code"
+msgstr "Activar el codi bàsic d'anàlisi de perfil del programa"
+
+#: toplev.c:1102
+msgid "Reorder basic blocks to improve code placement"
+msgstr "Reordenar els blocs bàsics per a millorar la ubicació del codi"
+
+#: toplev.c:1104
+msgid "Reorder functions to improve code placement"
+msgstr "Reordenar les funcions per a millorar la ubicació del codi"
+
+#: toplev.c:1106
+msgid "Do the register renaming optimization pass"
+msgstr "Fer el pas d'optimització de renomenació de registres"
+
+#: toplev.c:1108
+msgid "Do the register copy-propagation optimization pass"
+msgstr "Fer el pas d'optimització de còpia-propagació de registres"
+
+#: toplev.c:1110
+msgid "Do not put uninitialized globals in the common section"
+msgstr "No posar globals sense iniciar en la secció comuna"
+
+#: toplev.c:1112
+msgid "Do not generate .size directives"
+msgstr "No generar directives .size"
+
+#: toplev.c:1114
+msgid "place each function into its own section"
+msgstr "col·locar cada funció en la seva pròpia secció"
+
+#: toplev.c:1116
+msgid "place data items into their own section"
+msgstr "col·locar els elements de dades en la seva pròpia secció"
+
+#: toplev.c:1118
+msgid "Add extra commentary to assembler output"
+msgstr "Agregar comentaris extra a la sortida del ensemblador"
+
+#: toplev.c:1120
+msgid "Output GNU ld formatted global initializers"
+msgstr "Obtenir iniciators globals amb format per a ld de GNU"
+
+#: toplev.c:1122
+msgid "Enables a register move optimization"
+msgstr "Permet una optimització de moviment de registres"
+
+#: toplev.c:1124
+msgid "Do the full regmove optimization pass"
+msgstr "Fa el pas complet d'optimització de moviment de registres"
+
+#: toplev.c:1126
+msgid "Pack structure members together without holes"
+msgstr "Empaqueta junts als membres de l'estructura sense forats"
+
+#: toplev.c:1128
+msgid "Insert stack checking code into the program"
+msgstr "Insereix codi de revisió de la pila en el programa"
+
+#: toplev.c:1130
+msgid "Specify that arguments may alias each other & globals"
+msgstr "Especifica que els arguments poden ser alies de cada altre i dels globals"
+
+#: toplev.c:1132
+msgid "Assume arguments may alias globals but not each other"
+msgstr "Assumir que els arguments poden ser alies de globals però no de cada altre"
+
+#: toplev.c:1134
+msgid "Assume arguments do not alias each other or globals"
+msgstr "Assumir que els arguments no poden ser alies de globals o de cada altre"
+
+#: toplev.c:1136
+msgid "Assume strict aliasing rules apply"
+msgstr "Assumir que s'apliquen les regles estrictes d'alies"
+
+#: toplev.c:1138
+msgid "Align the start of loops"
+msgstr "Alinear l'inici dels cicles"
+
+#: toplev.c:1140
+msgid "Align labels which are only reached by jumping"
+msgstr "Alinear les etiquetes que solament s'arriben a saltant"
+
+#: toplev.c:1142
+msgid "Align all labels"
+msgstr "Alinear totes les etiquetes"
+
+#: toplev.c:1144
+msgid "Align the start of functions"
+msgstr "Alinear l'inici de les funcions"
+
+#: toplev.c:1146
+msgid "Attempt to merge identical constants across compilation units"
+msgstr "Intentar barrejar constants idèntiques a través de les unitats de compilació"
+
+#: toplev.c:1148
+msgid "Attempt to merge identical constants and constant variables"
+msgstr "Intentar barrejar constants idèntiques i variables constants"
+
+#: toplev.c:1150
+msgid "Suppress output of instruction numbers and line number notes in debugging dumps"
+msgstr "Suprimir la sortida de notes de nombres d'instrucció i nombres de línia en els bolcats de depuració"
+
+#: toplev.c:1152
+msgid "Instrument function entry/exit with profiling calls"
+msgstr "Instrumentar funcions entrada/sortida amb cridades d'anàlisi de perfil"
+
+#: toplev.c:1154
+msgid "Put zero initialized data in the bss section"
+msgstr "Posar dades inicialitzades a zero en la secció bss"
+
+#: toplev.c:1156
+msgid "Enable SSA optimizations"
+msgstr "Activar les optimitzacions SSA"
+
+#: toplev.c:1158
+msgid "Enable SSA conditional constant propagation"
+msgstr "Activar la propagació de les constants condicionals SSA"
+
+#: toplev.c:1160
+msgid "Enable aggressive SSA dead code elimination"
+msgstr "Activar l'eliminació agressiva de codi mort SSA"
+
+#: toplev.c:1162
+msgid "External symbols have a leading underscore"
+msgstr "Els símbols externs tenen un subratllat inicial"
+
+#: toplev.c:1164
+msgid "Process #ident directives"
+msgstr "Processar directives #ident"
+
+#: toplev.c:1166
+msgid "Enables an rtl peephole pass run before sched2"
+msgstr "Activa una execució de passada de forats rtl abans de sched2"
+
+#: toplev.c:1168
+msgid "Assume no NaNs or +-Infs are generated"
+msgstr ""
+
+#: toplev.c:1170
+msgid "Enables guessing of branch probabilities"
+msgstr "Activar la predicció de probabilitats de ramificació"
+
+#: toplev.c:1172
+msgid "Set errno after built-in math functions"
+msgstr "Establir errno després de les funcions matemàtiques internes"
+
+#: toplev.c:1174
+msgid "Floating-point operations can trap"
+msgstr "Les operacions de coma flotant poden capturar"
+
+#: toplev.c:1176
+msgid "Allow math optimizations that may violate IEEE or ANSI standards"
+msgstr "Permetre optimitzacions matemàtiques que poden violar els estàndards IEEE o ANSI"
+
+#: toplev.c:1178
+msgid "Disable optimizations observable by IEEE signaling NaNs"
+msgstr ""
+
+#: toplev.c:1180
+msgid "Generate code to check bounds before indexing arrays"
+msgstr "Generar codi per a revisar els límits abans de matrius"
+
+#: toplev.c:1182
+msgid "Convert floating point constant to single precision constant"
+msgstr "Convertir constants de coma flotant a constants de precisió simple"
+
+#: toplev.c:1184
+msgid "Report time taken by each compiler pass at end of run"
+msgstr "Reportar el temps pres per cada pas del compilador al final de l'execució"
+
+#: toplev.c:1186
+msgid "Report on permanent memory allocation at end of run"
+msgstr "Reportar l'allotjament en memòria permanent al final de l'execució"
+
+#: toplev.c:1188
+msgid "Trap for signed overflow in addition / subtraction / multiplication"
+msgstr "Atrapar desbordaments signed en addició / substracció / multiplicació"
+
+#: toplev.c:1190
+msgid "Use graph coloring register allocation."
+msgstr "Utilitzar coloració de grafes per a l'allotjament de registres."
+
+#: toplev.c:1207
+msgid "Compile just for ISO C90"
+msgstr "Compilar només per a ISO C90"
+
+#: toplev.c:1209
+msgid "Determine language standard"
+msgstr "Determinar el estàndard de llenguatge"
+
+#: toplev.c:1213
+msgid "Make bit-fields by unsigned by default"
+msgstr "Fer per omissió unsigned els camps de bit"
+
+#: toplev.c:1217
+msgid "Make 'char' be signed by default"
+msgstr "Fer que \"char\" sigui signed per omissió"
+
+#: toplev.c:1219
+msgid "Make 'char' be unsigned by default"
+msgstr "Fer que \"char\" sigui unsigned per omissió"
+
+#: toplev.c:1225
+msgid "Do not recognize the 'asm' keyword"
+msgstr "No reconèixer la paraula clau \"asm\""
+
+#: toplev.c:1228
+msgid "Do not recognize any built in functions"
+msgstr "No reconèixer cap funció interna"
+
+#: toplev.c:1230
+msgid "Assume normal C execution environment"
+msgstr "Assumir l'ambient normal d'execució C"
+
+#: toplev.c:1233
+msgid "Assume that standard libraries & main might not exist"
+msgstr "Assumir que podrien no existir les biblioteques estàndard i main"
+
+#: toplev.c:1236
+msgid "Allow different types as args of ? operator"
+msgstr "Permetre tipus diferents com arguments de l'operador ?"
+
+#: toplev.c:1239
+msgid "Allow the use of $ inside identifiers"
+msgstr "Permetre l'ús de $ dintre dels identificadors"
+
+#: toplev.c:1244
+msgid "Use the same size for double as for float"
+msgstr "Usar la mateixa grandària per a double que per a float"
+
+#: toplev.c:1247
+msgid "Use the smallest fitting integer to hold enums"
+msgstr "Usar l'enter adequat més petit per a contenir enumerats"
+
+#: toplev.c:1250
+msgid "Override the underlying type for wchar_t to `unsigned short'"
+msgstr "Fer de costat el tipus sota wchar_t per \"unsigned short\""
+
+#: toplev.c:1254
+msgid "Enable most warning messages"
+msgstr "Activar gairebé tots els missatges d'avís"
+
+#: toplev.c:1256
+msgid "Warn about casting functions to incompatible types"
+msgstr "Avisar per funcions de conversió a tipus incompatibles"
+
+#: toplev.c:1259
+msgid "Warn about functions which might be candidates for format attributes"
+msgstr "Avisar per funcions que podrien ser candidates per a atributs de format"
+
+#: toplev.c:1262
+msgid "Warn about casts which discard qualifiers"
+msgstr "Avisar sobre conversions que descarten calificators"
+
+#: toplev.c:1265
+msgid "Warn about subscripts whose type is 'char'"
+msgstr "Avisar sobre subindicis el tipus del qual és \"char\""
+
+#: toplev.c:1268 toplev.c:1271
+msgid "Warn if nested comments are detected"
+msgstr "Avisar si es detecten comentaris niats"
+
+#: toplev.c:1274
+msgid "Warn about possibly confusing type conversions"
+msgstr "Avisar sobre la possibilitat de conversió de tipus confuses"
+
+#: toplev.c:1278
+msgid "Do not warn about compile-time integer division by zero"
+msgstr "No avisar sobre la divisió entera per zero en temps de compilació"
+
+#: toplev.c:1280
+msgid "Warn about testing equality of floating point numbers"
+msgstr "Avisar sobre l'equitat de proves de nombres de coma flotant"
+
+#: toplev.c:1283
+msgid "Warn about printf/scanf/strftime/strfmon format anomalies"
+msgstr "Avisar sobre anomalies de format de printf/scanf/strftime/strfmon"
+
+#: toplev.c:1287
+msgid "Don't warn about too many arguments to format functions"
+msgstr "No avisar sobre massa arguments per a les funcions de format"
+
+#: toplev.c:1289
+msgid "Warn about non-string-literal format strings"
+msgstr "Avisar sobre cadenes de format que no són cadenes literals"
+
+#: toplev.c:1292
+msgid "Warn about possible security problems with format functions"
+msgstr "Avisar sobre possibles problemes de seguretat amb funcions de format"
+
+#: toplev.c:1296
+msgid "Don't warn about strftime formats yielding 2 digit years"
+msgstr "No avisar sobre formats de strftime que produeixen dos dígits per a l'any"
+
+#: toplev.c:1298
+msgid "Warn about implicit function declarations"
+msgstr "Avisar sobre la declaració implícita de funcions"
+
+#: toplev.c:1302
+msgid "Warn when a declaration does not specify a type"
+msgstr "Avisar quan una declaració no especifiqui un tipus"
+
+#: toplev.c:1307
+msgid "Warn about the use of the #import directive"
+msgstr "Avisar sobre l'ús de la directiva #import"
+
+#: toplev.c:1311
+msgid "Do not warn about using 'long long' when -pedantic"
+msgstr "No avisar sobre l'ús de \"long long\" quan s'usi -pedantic"
+
+#: toplev.c:1313
+msgid "Warn about suspicious declarations of main"
+msgstr "Avisar sobre declaracions sospitoses de main"
+
+#: toplev.c:1316
+msgid "Warn about possibly missing braces around initializers"
+msgstr "Avisar sobre possibles claus faltantes al voltant d'assignadorsº"
+
+#: toplev.c:1319
+msgid "Warn about global funcs without previous declarations"
+msgstr "Avisar sobre funcions globals sense declaracions prèvies"
+
+#: toplev.c:1322
+msgid "Warn about global funcs without prototypes"
+msgstr "Avisar sobre funcions globals sense prototips"
+
+#: toplev.c:1325
+msgid "Warn about use of multicharacter literals"
+msgstr "Avisar sobre l'ús de literals multicaràcters"
+
+#: toplev.c:1328
+msgid "Warn about externs not at file scope level"
+msgstr "Avisar sobre externs que no estan en el nivell de l'abast del fitxer"
+
+#: toplev.c:1331
+msgid "Warn about possible missing parentheses"
+msgstr "Avisar sobre possibles parèntesis faltantes"
+
+#: toplev.c:1334
+msgid "Warn about function pointer arithmetic"
+msgstr "Avisar sobre l'aritmètica de punters de funcions"
+
+#: toplev.c:1337
+msgid "Warn about multiple declarations of the same object"
+msgstr "Avisar sobre declaracions múltiples del mateix objecte"
+
+#: toplev.c:1340
+msgid "Warn whenever a function's return-type defaults to int"
+msgstr "Avisar quan el tipus de devolució per defecte d'una funció canvia a int"
+
+#: toplev.c:1343
+msgid "Warn about possible violations of sequence point rules"
+msgstr "Avisar sobre possibles violacions a les regles de seqüència de punt"
+
+#: toplev.c:1346
+msgid "Warn about signed/unsigned comparisons"
+msgstr "Avisar sobre comparances signed/unsigned"
+
+#: toplev.c:1349
+msgid "Warn about non-prototyped function decls"
+msgstr "Avisar sobre declaracions de funció sense prototip"
+
+#: toplev.c:1352
+msgid "Warn about constructs whose meanings change in ISO C"
+msgstr "Avisar sobre construccions el significat de les quals canvia en ISO C"
+
+#: toplev.c:1355
+msgid "Warn when trigraphs are encountered"
+msgstr "Avisar si es troben trigrafes"
+
+#: toplev.c:1360
+msgid "Warn about unrecognized pragmas"
+msgstr "Avisar sobre pragmas no reconeguts"
+
+#: toplev.c:1363
+msgid "Mark strings as 'const char *'"
+msgstr "Marcar les cadenes com \"const char *\""
+
+#: toplev.c:1508
+msgid "Warn when a function is unused"
+msgstr "Avisar quan no s'usi una funció"
+
+#: toplev.c:1510
+msgid "Warn when a label is unused"
+msgstr "Avisar quan no s'usi una etiqueta"
+
+#: toplev.c:1512
+msgid "Warn when a function parameter is unused"
+msgstr "Avisar quan no s'usi un paràmetre d'una funció"
+
+#: toplev.c:1514
+msgid "Warn when a variable is unused"
+msgstr "Avisar quan no s'usi una variable"
+
+#: toplev.c:1516
+msgid "Warn when an expression value is unused"
+msgstr "Avisar quan no s'usi un valor d'una expressió"
+
+#: toplev.c:1518
+msgid "Do not suppress warnings from system headers"
+msgstr "No suprimir els avisos dels encapçalats del sistema"
+
+#: toplev.c:1520
+msgid "Treat all warnings as errors"
+msgstr "Tractar tots els avisos com errors"
+
+#: toplev.c:1522
+msgid "Warn when one local variable shadows another"
+msgstr "Avisar quan una variable local enfosque una altra"
+
+#: toplev.c:1524
+msgid "Warn about enumerated switches, with no default, missing a case"
+msgstr "Avisar sobre interruptors enumerats, sense valor per defecte, que manquin d'un casi"
+
+#: toplev.c:1526
+msgid "Warn about enumerated switches missing a default case"
+msgstr "Avisar sobre interruptors enumerats que manquin d'un casi per defecte"
+
+#: toplev.c:1528
+msgid "Warn about all enumerated switches missing a specific case"
+msgstr "Avisar sobre tots els interruptors enumerats que manquin d'un casi específic"
+
+#: toplev.c:1530
+msgid "Warn about returning structures, unions or arrays"
+msgstr "Avisar sobre la devolució d'estructures, unions o matrius"
+
+#: toplev.c:1532
+msgid "Warn about pointer casts which increase alignment"
+msgstr "Avisar sobre conversió de punters que incrementi l'alineació"
+
+#: toplev.c:1534
+msgid "Warn about code that will never be executed"
+msgstr "Avisar sobre codi que mai s'executarà"
+
+#: toplev.c:1536
+msgid "Warn about uninitialized automatic variables"
+msgstr "Avisar sobre variables automàtiques sense iniciar"
+
+#: toplev.c:1538
+msgid "Warn when an inlined function cannot be inlined"
+msgstr "Avisar quan una funció inline no pot ser inline"
+
+#: toplev.c:1540
+msgid "Warn when the packed attribute has no effect on struct layout"
+msgstr "Avisar quan l'atribut packed no té efecte en la disposició d'un struct"
+
+#: toplev.c:1542
+msgid "Warn when padding is required to align struct members"
+msgstr "Avisar quan es requereix farcit per a alinear als membres d'un struct"
+
+#: toplev.c:1544
+msgid "Warn when an optimization pass is disabled"
+msgstr "Avisar quan es va desactivar un pas d'optimització"
+
+#: toplev.c:1546
+msgid "Warn about uses of __attribute__((deprecated)) declarations"
+msgstr "Avisar sobre el ùs de declaracions __attribute__((deprecated))"
+
+#: toplev.c:1548
+msgid "Warn about functions which might be candidates for attribute noreturn"
+msgstr "Avisar sobre funcions que podrien ser candidates per a l'atribut noreturn"
+
+#: toplev.c:1550
+msgid "Warn about code which might break the strict aliasing rules"
+msgstr "Avisar sobre codi que pugui trencar les regles estrictes d'aliessis"
+
+#: toplev.c:1627 toplev.c:4548 config/rs6000/rs6000.c:680
+#, c-format
+msgid "invalid option `%s'"
+msgstr "opció \"%s\" invàlida"
+
+#: toplev.c:2031
+#, c-format
+msgid "`%s' used but never defined"
+msgstr "\"%s\" utilitzat però mai definit"
+
+#: toplev.c:2034
+#, c-format
+msgid "`%s' declared `static' but never defined"
+msgstr "\"%s\" declarat \"static\" però mai definit"
+
+#: toplev.c:2057
+#, c-format
+msgid "`%s' defined but not used"
+msgstr "\"%s\" definit però no utilitzat"
+
+#: toplev.c:2280
+#, c-format
+msgid "invalid register name `%s' for register variable"
+msgstr "el nom de registre \"%s\" no és vàlid per a variable de registre"
+
+#: toplev.c:3697
+msgid " -ffixed-<register> Mark <register> as being unavailable to the compiler\n"
+msgstr " -ffixed-<registre> Marca el <registre> com no disponible per al compilador\n"
+
+#: toplev.c:3698
+msgid " -fcall-used-<register> Mark <register> as being corrupted by function calls\n"
+msgstr " -fcall-used-<registre> Marca el <registre> com corrupte per a cridades de funció\n"
+
+#: toplev.c:3699
+msgid " -fcall-saved-<register> Mark <register> as being preserved across functions\n"
+msgstr " -fcall-saved-<registre> Marca el <registre> com preservat entre funcions\n"
+
+#: toplev.c:3700
+msgid " -finline-limit=<number> Limits the size of inlined functions to <number>\n"
+msgstr " -finline-limit=<nombre> Limita la grandària de funcions inline a <nombre>\n"
+
+#: toplev.c:3701
+msgid " -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line. 0 suppresses line-wrapping\n"
+msgstr " -fmessage-length=<nombre> Limita la longitud dels missatges de diagnòstic a <nombre> caràcters per línia. 0 suprimeix el cort de línia\n"
+
+#: toplev.c:3702
+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 " -fdiagnostics-show-location=[once | every-line] Indica que tan seguit es deu emetre la informació d'ubicació del codi, com prefix, a l'inici dels diagnòstics quan està activat el cort de línia\n"
+
+#: toplev.c:3703
+msgid " -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indicates the default thread-local storage code generation model\n"
+msgstr ""
+
+#: toplev.c:3704
+msgid " -fstack-limit-register=<register> Trap if the stack goes past <register>\n"
+msgstr ""
+
+#: toplev.c:3705
+msgid " -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>\n"
+msgstr ""
+
+#: toplev.c:3706
+msgid " -frandom-seed=<string> Make compile reproducible using <string>\n"
+msgstr ""
+
+#: toplev.c:3718
+msgid " -O[number] Set optimization level to [number]\n"
+msgstr " -O[nombre] Establir el nivell d'optimització a [nombre]\n"
+
+#: toplev.c:3719
+msgid " -Os Optimize for space rather than speed\n"
+msgstr " -Os Optimitzar per a espai en lloc de velocitat\n"
+
+#: toplev.c:3731
+msgid " -pedantic Issue warnings needed by strict compliance to ISO C\n"
+msgstr " -pedantic Activar els avisos necessaris per a complir estrictament amb ISO C\n"
+
+#: toplev.c:3732
+msgid " -pedantic-errors Like -pedantic except that errors are produced\n"
+msgstr " -pedantic-errors Com -pedantic excepte que es produeixen errors\n"
+
+#: toplev.c:3733
+msgid " -w Suppress warnings\n"
+msgstr " -w Suprimir avisos\n"
+
+#: toplev.c:3734
+msgid " -W Enable extra warnings\n"
+msgstr " -W Activar avisos extra\n"
+
+#: toplev.c:3745
+msgid " -Wunused Enable unused warnings\n"
+msgstr " -Wunused Activar avisos sense usar\n"
+
+#: toplev.c:3746
+msgid " -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"
+msgstr " -Wlarger-than-<nombre> Avisar si un objecte és més gran que <nombre> octets\n"
+
+#: toplev.c:3747
+msgid " -p Enable function profiling\n"
+msgstr " -p Activar l'anàlisi de perfil de funcions\n"
+
+#: toplev.c:3748
+msgid " -o <file> Place output into <file> \n"
+msgstr " -o <fitxer> Situar la sortida en el <fitxer> \n"
+
+#: toplev.c:3749
+msgid ""
+" -G <number> Put global and static data smaller than <number>\n"
+" bytes into a special section (on some targets)\n"
+msgstr ""
+" -G <nombre> Col·locar les dades globals i estàtics més petits que <nombre>\n"
+" octets en una secció especial (en alguns objectius)\n"
+
+#: toplev.c:3760
+msgid " -aux-info <file> Emit declaration info into <file>\n"
+msgstr " -aux-info <fitxer> Emetre la informació de declaracions en el <fitxer>\n"
+
+#: toplev.c:3761
+msgid " -quiet Do not display functions compiled or elapsed time\n"
+msgstr " -quiet No mostrar les funcions compilades o el temps transcorregut\n"
+
+#: toplev.c:3762
+msgid " -version Display the compiler's version\n"
+msgstr " -version Mostra la versió del compilador\n"
+
+#: toplev.c:3763
+msgid " -d[letters] Enable dumps from specific passes of the compiler\n"
+msgstr " -d[lletres] Activa els bolcats des de passos específics del compilador\n"
+
+#: toplev.c:3764
+msgid " -dumpbase <file> Base name to be used for dumps from specific passes\n"
+msgstr " -dumpbase <fitxer> Nom base a usar per als bolcats des de passos específics\n"
+
+#: toplev.c:3766
+msgid " -fsched-verbose=<number> Set the verbosity level of the scheduler\n"
+msgstr " -fsched-verbose=<nombre> Estableix el nivell de detall del calendaritzador\n"
+
+#: toplev.c:3768
+msgid " --help Display this information\n"
+msgstr " --help Mostra aquesta informació\n"
+
+#: toplev.c:3783
+msgid ""
+"\n"
+"Language specific options:\n"
+msgstr ""
+"\n"
+"Opcions específiques del llenguatge:\n"
+
+#: toplev.c:3795
+#, c-format
+msgid " %-23.23s [undocumented]\n"
+msgstr " %-23.23s [sense documentar]\n"
+
+#: toplev.c:3803 toplev.c:3817
+#, c-format
+msgid ""
+"\n"
+"There are undocumented %s specific options as well.\n"
+msgstr ""
+"\n"
+"A més hi ha opcions específiques de %s sense documentar.\n"
+
+#: toplev.c:3807
+#, c-format
+msgid ""
+"\n"
+" Options for %s:\n"
+msgstr ""
+"\n"
+" Opcions per a %s:\n"
+
+#: toplev.c:3844
+msgid ""
+"\n"
+"Target specific options:\n"
+msgstr ""
+"\n"
+"Opcions específiques de l'objectiu:\n"
+
+#: toplev.c:3858 toplev.c:3877
+#, c-format
+msgid " -m%-23.23s [undocumented]\n"
+msgstr " -m%-23.23s [sense documentar]\n"
+
+#: toplev.c:3886
+msgid ""
+"\n"
+"There are undocumented target specific options as well.\n"
+msgstr ""
+"\n"
+"A més hi ha opcions específiques de l'objectiu sense documentar.\n"
+
+#: toplev.c:3888
+msgid " They exist, but they are not documented.\n"
+msgstr " Existeixen, però no estan documentades.\n"
+
+#: toplev.c:3941
+#, c-format
+msgid "unrecognized gcc debugging option: %c"
+msgstr "opció de depuració de gcc no reconeguda: %c"
+
+#: toplev.c:4007
+#, c-format
+msgid "`%s': unknown tls-model option"
+msgstr "\"%s\": opció tls-model desconeguda"
+
+#: toplev.c:4034
+#, c-format
+msgid "unrecognized register name `%s'"
+msgstr "no es reconeix el nom de registre \"%s\""
+
+#: toplev.c:4059 toplev.c:5012
+#, c-format
+msgid "unrecognized option `%s'"
+msgstr "Opció \"%s\" no reconeguda"
+
+#: toplev.c:4107
+msgid "-Wid-clash-LEN is no longer supported"
+msgstr "-Wid-clash-LEN ja no té suport"
+
+#: toplev.c:4184
+#, c-format
+msgid "use -gdwarf -g%d for DWARF v1, level %d"
+msgstr "usi -gdwarf -g%d per a DWARF v1, nivell %d"
+
+#: toplev.c:4187
+msgid "use -gdwarf-2 for DWARF v2"
+msgstr "usi -ddwarf-2 per a DWARF v2"
+
+#: toplev.c:4192
+#, c-format
+msgid "ignoring option `%s' due to invalid debug level specification"
+msgstr "ignorant l'opció \"%s\" a causa de l'especificació d'un nivell de depuració invàlid"
+
+#: toplev.c:4215 toplev.c:5010
+#, c-format
+msgid "`%s': unknown or unsupported -g option"
+msgstr "\"%s\": opció -g desconeguda o sense suport"
+
+#: toplev.c:4222
+#, c-format
+msgid "`%s' ignored, conflicts with `-g%s'"
+msgstr "\"%s\" ignorat, té conflicte amb \"-g%s\""
+
+#: toplev.c:4304
+msgid "-param option missing argument"
+msgstr "falta l'argument per a l'opció -param"
+
+#: toplev.c:4313
+#, c-format
+msgid "invalid --param option: %s"
+msgstr "opció de --param invàlida: %s"
+
+#: toplev.c:4325
+#, c-format
+msgid "invalid parameter value `%s'"
+msgstr "valor de paràmetre \"%s\" invàlid"
+
+#: toplev.c:4565
+#, c-format
+msgid ""
+"%s%s%s version %s (%s)\n"
+"%s\tcompiled by GNU C version %s.\n"
+"%s%s%s version %s (%s) compiled by CC.\n"
+msgstr ""
+"%s%s%s versió %s (%s)\n"
+"%s\tcompilat amb GNU C versió %s.\n"
+"%s%s%s versió %s (%s) compilada per a CC.\n"
+
+#: toplev.c:4572
+#, c-format
+msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
+msgstr ""
+
+#: toplev.c:4630
+msgid "options passed: "
+msgstr "opcions passades: "
+
+#: toplev.c:4659
+msgid "options enabled: "
+msgstr "options activades: "
+
+#: toplev.c:4718 java/jcf-write.c:3453
+#, c-format
+msgid "can't open %s for writing"
+msgstr "no es pot obrir obrir %s per a escriptura"
+
+#: toplev.c:5002
+#, c-format
+msgid "ignoring command line option '%s'"
+msgstr "ignorant l'opció de línia de comanda \"%s\""
+
+#: toplev.c:5005
+#, c-format
+msgid "(it is valid for %s but not the selected language)"
+msgstr "(és vàlida per a %s però no per al llenguatge seleccionat)"
+
+#: toplev.c:5039
+msgid "-Wuninitialized is not supported without -O"
+msgstr "-Wuninitialized no té suport sense -O"
+
+#: toplev.c:5094
+msgid "instruction scheduling not supported on this target machine"
+msgstr "no es dóna suport a la planificació d'instruccions en aquest objectiu"
+
+#: toplev.c:5098
+msgid "this target machine does not have delayed branches"
+msgstr "aquesta màquina objectiu no té ramificacions alentides"
+
+#: toplev.c:5112
+#, c-format
+msgid "-f%sleading-underscore not supported on this target machine"
+msgstr "no es dóna suport a -f%sleading-underscore en aquest objectiu"
+
+#: toplev.c:5175
+msgid "-ffunction-sections not supported for this target"
+msgstr "no es dóna suport a -ffunction-sections en aquest objectiu"
+
+#: toplev.c:5180
+msgid "-fdata-sections not supported for this target"
+msgstr "no es dóna suport a -fdata-sections en aquest objectiu"
+
+#: toplev.c:5187
+msgid "-ffunction-sections disabled; it makes profiling impossible"
+msgstr "-ffunction-sections desactivat; fa impossible l'anàlisi de perfil"
+
+#: toplev.c:5194
+msgid "-fprefetch-loop-arrays not supported for this target"
+msgstr "no es dóna suport a -fprefetch-loop-arrays en aquest objectiu"
+
+#: toplev.c:5200
+msgid "-fprefetch-loop-arrays not supported for this target (try -march switches)"
+msgstr "no es dóna suport a -fprefetch-loop-arrays en aquest objectiu (prova switches -march)"
+
+#: toplev.c:5209
+msgid "-fprefetch-loop-arrays is not supported with -Os"
+msgstr "no es dóna suport a -fprefetch-loop-arrays amb -Os"
+
+#: toplev.c:5215
+msgid "-ffunction-sections may affect debugging on some targets"
+msgstr "-ffunction-sections podria afectar la depuració en alguns objectius"
+
+#: toplev.c:5327
+#, c-format
+msgid "error writing to %s"
+msgstr "error a l'escriure a %s"
+
+#: toplev.c:5329 java/jcf-parse.c:936 java/jcf-write.c:3460
+#, c-format
+msgid "error closing %s"
+msgstr "error al tancar %s"
+
+#: tree-dump.c:702
+#, c-format
+msgid "could not open dump file `%s'"
+msgstr "no es pot obrir el fitxer de dump \"%s\""
+
+#: tree-dump.c:778
+#, c-format
+msgid "ignoring unknown option `%.*s' in `-f%s'"
+msgstr "ignorant l'opció desconeguda \"%.*s\" dintre \"-f%s\""
+
+#: tree.c:3645
+msgid "arrays of functions are not meaningful"
+msgstr "les matrius de funcions no tenen significat"
+
+#: tree.c:3702
+msgid "function return type cannot be function"
+msgstr "el tipus de devolució d'una funció no pot ser una funció"
+
+#: tree.c:4557
+msgid "invalid initializer for bit string"
+msgstr "assignador invàlid per a cadena de bits"
+
+#: tree.c:4616
+#, c-format
+msgid "tree check: expected %s, have %s in %s, at %s:%d"
+msgstr "revisió d'arbre: s'esperava %s, es té %s en %s, en %s:%d"
+
+#: tree.c:4633
+#, c-format
+msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
+msgstr "revisió d'arbre: s'esperava classa \"%c\", es té \"%c\" (%s) en %s, en %s:%d"
+
+#: tree.c:4650
+#, c-format
+msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
+msgstr "revisió d'arbre: accés de *elt %d de tree_vec amb %d elts en %s, en %s:%d"
+
+#: varasm.c:455 config/i386/winnt.c:611
+#, c-format
+msgid "%s causes a section type conflict"
+msgstr "%s causa un conflicte de tipus de secció"
+
+#: varasm.c:841
+#, c-format
+msgid "register name not specified for `%s'"
+msgstr "no s'especifica nom de registre per a \"%s\""
+
+#: varasm.c:843
+#, c-format
+msgid "invalid register name for `%s'"
+msgstr "nom de registre invàlid per a \"%s\""
+
+#: varasm.c:846
+#, c-format
+msgid "data type of `%s' isn't suitable for a register"
+msgstr "el tipus de dades de \"%s\" no és adequat per a un registre"
+
+#: varasm.c:849
+#, c-format
+msgid "register specified for `%s' isn't suitable for data type"
+msgstr "el registre especificat per \"%s\" no és adequat per al tipus de dades"
+
+#: varasm.c:858
+msgid "global register variable has initial value"
+msgstr "la variable de registre global té valor inicial"
+
+#: varasm.c:861
+msgid "volatile register variables don't work as you might wish"
+msgstr "les variables de registre volatile no funcionen com vostè volgués"
+
+#: varasm.c:894
+#, c-format
+msgid "register name given for non-register variable `%s'"
+msgstr "nom de registre donat per a una variable \"%s\" que no és registre"
+
+#: varasm.c:1542
+#, c-format
+msgid "alignment of `%s' is greater than maximum object file alignment. Using %d"
+msgstr "l'alineació de \"%s\" és massa granda que l'alineació màxima del fitxer objecte. S'usa %d."
+
+#: varasm.c:1584
+msgid "thread-local COMMON data not implemented"
+msgstr ""
+
+#: varasm.c:1610
+#, c-format
+msgid "requested alignment for %s is greater than implemented alignment of %d"
+msgstr "l'alineació sol·licitada per a %s és massa granda que l'alineació implementada de %d"
+
+#: varasm.c:4048
+msgid "initializer for integer value is too complicated"
+msgstr "el assignador per a un valor enter és massa complicat"
+
+#: varasm.c:4053
+msgid "initializer for floating value is not a floating constant"
+msgstr "el assignador per a un valor de coma flotant no és una constant de coma flotant"
+
+#: varasm.c:4120
+msgid "unknown set constructor type"
+msgstr "conjunt de tipus constructor desconegut"
+
+#: varasm.c:4334
+#, c-format
+msgid "invalid initial value for member `%s'"
+msgstr "valor inicial invàlid per al membre \"%s\""
+
+#: varasm.c:4525 varasm.c:4568
+#, c-format
+msgid "weak declaration of `%s' must precede definition"
+msgstr "la declaració feble de \"%s\" deu precedir a la definició"
+
+#: varasm.c:4532
+#, c-format
+msgid "weak declaration of `%s' after first use results in unspecified behavior"
+msgstr "la declaració feble de \"%s\" després del primer ús resulta en una conducta no especificada"
+
+#: varasm.c:4566
+#, c-format
+msgid "weak declaration of `%s' must be public"
+msgstr "la declaració feble de \"%s\" deu ser public"
+
+#: varasm.c:4575
+#, c-format
+msgid "weak declaration of `%s' not supported"
+msgstr "no és dona suport a la declaració feble de \"%s\""
+
+#: varasm.c:4602 varasm.c:4677
+msgid "only weak aliases are supported in this configuration"
+msgstr "només els aliessis febles tenen suport en aquesta configuració"
+
+#: varasm.c:4685
+msgid "alias definitions not supported in this configuration; ignored"
+msgstr "les definicions d'alies no tenen suport en aquesta configuració; ignorades"
+
+#: varasm.c:4716
+msgid "visibility attribute not supported in this configuration; ignored"
+msgstr "els atributs de visibilitat no tenen suport en aquesta configuració; ignorats"
+
+#: varray.c:134
+#, c-format
+msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
+msgstr "matriu virtual %s[%lu]: l'element %lu està fora del límit en %s, en %s:%d"
+
+#. Print an error message for unrecognized stab codes.
+#: xcoffout.c:175
+#, c-format
+msgid "no sclass for %s stab (0x%x)\n"
+msgstr "no hi ha sclass per al stab %s (0x%x)\n"
+
+#: pretty-print.h:97
+#, c-format
+msgid "#`%s' not supported by %s#"
+msgstr "#\"%s\" no té suport per a %s#"
+
+#: params.def:53
+msgid "The maximum number of instructions in a single function eligible for inlining"
+msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining"
+
+#: params.def:65
+msgid "The maximum number of instructions when automatically inlining"
+msgstr "El nombre màxim d'instruccions quan es fa inlining automàticament"
+
+#: params.def:84
+msgid "The maximum number of instructions by repeated inlining before gcc starts to throttle inlining"
+msgstr "El nombre màxim d'instruccions per inlining repetit abans que gcc comenci a descartar inlining"
+
+#: params.def:97
+msgid "The slope of the linear function throttling inlining after the recursive inlining limit has been reached is given by the negative reciprocal value of this parameter"
+msgstr ""
+
+#: params.def:110
+msgid "The number of instructions in a single functions still eligible to inlining after a lot recursive inlining"
+msgstr "El nombre d'instruccions en una sola funció per a ser encara elegible per a inlining després de molt inlining recursiu"
+
+#: params.def:120
+msgid "The maximum number of instructions for the RTL inliner"
+msgstr "El nombre màxim d'instruccions per al inliner de RTL"
+
+#: params.def:131
+msgid "The maximum number of instructions to consider to fill a delay slot"
+msgstr "El nombre màxim d'instruccions per a considerar l'omplert d'una ranura de retard"
+
+#: params.def:142
+msgid "The maximum number of instructions to consider to find accurate live register information"
+msgstr "El nombre màxim d'instruccions per a considerar la recerca d'informació de registres en viu exacta"
+
+#: params.def:152
+msgid "The maximum length of scheduling's pending operations list"
+msgstr "La longitud màxima de la llista d'operacions pendents del planificador de tasques"
+
+#: params.def:159
+msgid "The maximum amount of memory to be allocated by GCSE"
+msgstr "La quantitat màxima de memòria a ser assignada per GCSE"
+
+#: params.def:164
+msgid "The maximum number of passes to make when doing GCSE"
+msgstr "El nombre màxim de passos a realitzar quan es fa GCSE"
+
+#: params.def:171
+msgid "The maximum number of instructions to consider to unroll in a loop"
+msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle"
+
+#: params.def:176
+msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
+msgstr ""
+
+#: params.def:181
+msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot"
+msgstr ""
+
+#: params.def:186
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
+msgstr ""
+
+#: params.def:191
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
+msgstr ""
+
+#: params.def:196
+msgid "Maximal code growth caused by tail duplication (in percents)"
+msgstr ""
+
+#: params.def:200
+msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percents)"
+msgstr ""
+
+#: params.def:205
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is available"
+msgstr ""
+
+#: params.def:210
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is not available"
+msgstr ""
+
+#: params.def:217
+msgid "The maximum number of incoming edges to consider for crossjumping"
+msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat"
+
+#: params.def:230
+msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap."
+msgstr ""
+
+#: params.def:236
+msgid "Minimum heap size before we start collecting garbage, in kilobytes."
+msgstr ""
+
+#: config/darwin-c.c:75
+msgid "too many #pragma options align=reset"
+msgstr "massa opcions #pragma align=reset"
+
+#: config/darwin-c.c:97 config/darwin-c.c:100 config/darwin-c.c:102
+#: config/darwin-c.c:104
+msgid "malformed '#pragma options', ignoring"
+msgstr "\"#pragma opcions\" malformat, ignorant"
+
+#: config/darwin-c.c:107
+msgid "junk at end of '#pragma options'"
+msgstr "escombraries al final de \"#pragma opcions\""
+
+#: config/darwin-c.c:117
+msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
+msgstr "\"#pragma opcions align={mac68k|power|reset}\" malformat, ignorant"
+
+#: config/darwin-c.c:130
+msgid "missing '(' after '#pragma unused', ignoring"
+msgstr "\"(\" faltant després de '#pragma unused', ignorant"
+
+#: config/darwin-c.c:148
+msgid "missing ')' after '#pragma unused', ignoring"
+msgstr "\")\" faltant després de '#pragma unused', ignorant"
+
+#: config/darwin-c.c:151
+msgid "junk at end of '#pragma unused'"
+msgstr "escombraries al final de \"#pragma unused\""
+
+#: config/lynx-ng.h:97 config/lynx.h:121 config/rs6000/lynx.h:100
+msgid "-msystem-v and -p are incompatible"
+msgstr "-msystem-v i -p són incompatibles"
+
+#: config/lynx-ng.h:99 config/lynx.h:123 config/rs6000/lynx.h:102
+msgid "-msystem-v and -mthreads are incompatible"
+msgstr "-msystem-v i -mthreads són incompatibles"
+
+#: config/alpha/alpha.c:342
+#, c-format
+msgid "-f%s ignored for Unicos/Mk (not supported)"
+msgstr "s'ignora -f%s per a Unicos/Mk (no és dona suport)"
+
+#: config/alpha/alpha.c:366
+msgid "-mieee not supported on Unicos/Mk"
+msgstr "no és dona suport a -mieee en Unicos/Mk"
+
+#: config/alpha/alpha.c:377
+msgid "-mieee-with-inexact not supported on Unicos/Mk"
+msgstr "no és dona suport a -mieee-with-inexact en Unicos/Mk"
+
+#: config/alpha/alpha.c:394
+#, c-format
+msgid "bad value `%s' for -mtrap-precision switch"
+msgstr "valor erroni \"%s\" per a l'interruptor -mtrap-precision"
+
+#: config/alpha/alpha.c:408
+#, c-format
+msgid "bad value `%s' for -mfp-rounding-mode switch"
+msgstr "valor erroni \"%s\" per a l'interruptor -mfp-rounding-mode"
+
+#: config/alpha/alpha.c:423
+#, c-format
+msgid "bad value `%s' for -mfp-trap-mode switch"
+msgstr "valor erroni \"%s\" per a l'interruptor -mfp-trap-mode"
+
+#: config/alpha/alpha.c:435
+#, c-format
+msgid "bad value `%s' for -mtls-size switch"
+msgstr "valor erroni \"%s\" per a l'interruptor -mtls-size"
+
+#: config/alpha/alpha.c:454 config/alpha/alpha.c:466
+#, c-format
+msgid "bad value `%s' for -mcpu switch"
+msgstr "valor erroni \"%s\" per a l'interruptor -mcpu"
+
+#: config/alpha/alpha.c:473
+msgid "trap mode not supported on Unicos/Mk"
+msgstr "no és dona suport al mode trap en Unicos/Mk"
+
+#: config/alpha/alpha.c:480
+msgid "fp software completion requires -mtrap-precision=i"
+msgstr "el completat per programari de fp requereix una opció -mtrap-precision=i"
+
+#: config/alpha/alpha.c:496
+msgid "rounding mode not supported for VAX floats"
+msgstr "la manera d'arrodoniment no té suport per a floats de VAX"
+
+#: config/alpha/alpha.c:501
+msgid "trap mode not supported for VAX floats"
+msgstr "la manera de captura no té suport per a valors de coma flotant VAX"
+
+#: config/alpha/alpha.c:530
+#, c-format
+msgid "L%d cache latency unknown for %s"
+msgstr "latència de cau L%d desconeguda per a %s"
+
+#: config/alpha/alpha.c:545
+#, c-format
+msgid "bad value `%s' for -mmemory-latency"
+msgstr "valor erroni \"%s\" per a -mmemory-latency"
+
+#: config/alpha/alpha.c:5604 config/m88k/m88k.c:2889 config/romp/romp.c:754
+#: config/romp/romp.c:761
+#, c-format
+msgid "invalid %%H value"
+msgstr "valor %%H invàlid"
+
+#: config/alpha/alpha.c:5625
+#, c-format
+msgid "invalid %%J value"
+msgstr "valor %%J invàlid"
+
+#: config/alpha/alpha.c:5641 config/ia64/ia64.c:3970 config/m88k/m88k.c:3034
+#, c-format
+msgid "invalid %%r value"
+msgstr "valor %%r invàlid"
+
+#: config/alpha/alpha.c:5651 config/rs6000/rs6000.c:7737
+#, c-format
+msgid "invalid %%R value"
+msgstr "valor %%R invàlid"
+
+#: config/alpha/alpha.c:5657 config/rs6000/rs6000.c:7663
+#, c-format
+msgid "invalid %%N value"
+msgstr "valor %%N invàlid"
+
+#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:7691
+#, c-format
+msgid "invalid %%P value"
+msgstr "valor %%P invàlid"
+
+#: config/alpha/alpha.c:5673 config/m88k/m88k.c:2895 config/romp/romp.c:740
+#: config/romp/romp.c:747
+#, c-format
+msgid "invalid %%h value"
+msgstr "valor %%h invalíd"
+
+#: config/alpha/alpha.c:5681 config/romp/romp.c:698
+#, c-format
+msgid "invalid %%L value"
+msgstr "valor %%L invàlid"
+
+#: config/alpha/alpha.c:5720 config/rs6000/rs6000.c:7645
+#, c-format
+msgid "invalid %%m value"
+msgstr "valor %%m invàlid"
+
+#: config/alpha/alpha.c:5728 config/rs6000/rs6000.c:7653
+#, c-format
+msgid "invalid %%M value"
+msgstr "valor %%M invàlid"
+
+#: config/alpha/alpha.c:5772
+#, c-format
+msgid "invalid %%U value"
+msgstr "valor %%U invalíd"
+
+#: config/alpha/alpha.c:5784 config/alpha/alpha.c:5798 config/romp/romp.c:706
+#: config/rs6000/rs6000.c:7745
+#, c-format
+msgid "invalid %%s value"
+msgstr "valor %%s invalíd"
+
+#: config/alpha/alpha.c:5821 config/m88k/m88k.c:2997
+#, c-format
+msgid "invalid %%C value"
+msgstr "valor %%C invàlid"
+
+#: config/alpha/alpha.c:5858 config/m88k/m88k.c:3018
+#: config/rs6000/rs6000.c:7502
+#, c-format
+msgid "invalid %%E value"
+msgstr "valor %%E invalíd"
+
+#: config/alpha/alpha.c:5883 config/alpha/alpha.c:5933
+msgid "unknown relocation unspec"
+msgstr "reubicació unspec desconeguda"
+
+#: config/alpha/alpha.c:5892 config/romp/romp.c:981
+#: config/rs6000/rs6000.c:8052
+#, c-format
+msgid "invalid %%xn code"
+msgstr "codi %%xn invalíd"
+
+#: config/alpha/alpha.c:6618 config/alpha/alpha.c:6621 config/s390/s390.c:6069
+#: config/s390/s390.c:6072
+msgid "bad builtin fcode"
+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 }
+#. 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/alpha/alpha.h:279 config/i386/i386.h:294 config/i386/i386.h:296
+#: config/i386/i386.h:298 config/ns32k/ns32k.h:140 config/rs6000/rs6000.h:292
+#: config/s390/s390.h:68 config/sparc/sparc.h:522 config/sparc/sparc.h:527
+msgid "Use hardware fp"
+msgstr "Usar fp de maquinari"
+
+#: config/alpha/alpha.h:280 config/i386/i386.h:295 config/i386/i386.h:297
+#: config/rs6000/rs6000.h:294 config/sparc/sparc.h:524
+#: config/sparc/sparc.h:529
+msgid "Do not use hardware fp"
+msgstr "No usar fp de maquinari"
+
+#: config/alpha/alpha.h:281
+msgid "Use fp registers"
+msgstr "Usar registres fp"
+
+#: config/alpha/alpha.h:283
+msgid "Do not use fp registers"
+msgstr "No usar registres fp"
+
+#: config/alpha/alpha.h:284
+msgid "Do not assume GAS"
+msgstr "No assumir GAS"
+
+#: config/alpha/alpha.h:285
+msgid "Assume GAS"
+msgstr "Assumir GAS"
+
+#: config/alpha/alpha.h:287
+msgid "Request IEEE-conformant math library routines (OSF/1)"
+msgstr "Requerir rutines de biblioteca matemàtica que compleixin amb IEEE (OSF/1)"
+
+#: config/alpha/alpha.h:289
+msgid "Emit IEEE-conformant code, without inexact exceptions"
+msgstr "Emetre codi que compleixi amb IEEE, sense excepcionsinexactes"
+
+#: config/alpha/alpha.h:291
+msgid "Emit IEEE-conformant code, with inexact exceptions"
+msgstr "Emetre codi que compleixi amb IEEE, amb excepcions inexactes"
+
+#: config/alpha/alpha.h:293
+msgid "Do not emit complex integer constants to read-only memory"
+msgstr "No emetre constants enteres complexes a memòria de només lectura"
+
+#: config/alpha/alpha.h:294
+msgid "Use VAX fp"
+msgstr "Usar fp VAX"
+
+#: config/alpha/alpha.h:295
+msgid "Do not use VAX fp"
+msgstr "No usar fp VAX"
+
+#: config/alpha/alpha.h:296
+msgid "Emit code for the byte/word ISA extension"
+msgstr "Emetre codi per a l'extensió ISA octet/word"
+
+#: config/alpha/alpha.h:299
+msgid "Emit code for the motion video ISA extension"
+msgstr "Emetre codi per a l'extensió ISA de vídeo en moviment"
+
+#: config/alpha/alpha.h:302
+msgid "Emit code for the fp move and sqrt ISA extension"
+msgstr "Emetre codi per a l'extensió ISA de move i sqrt de fp"
+
+#: config/alpha/alpha.h:304
+msgid "Emit code for the counting ISA extension"
+msgstr "Emetre codi per a l'extensió ISA de compte"
+
+#: config/alpha/alpha.h:307
+msgid "Emit code using explicit relocation directives"
+msgstr "Emetre codi utilitzant directives explícites de reassignació"
+
+#: config/alpha/alpha.h:310
+msgid "Emit 16-bit relocations to the small data areas"
+msgstr "Emetre reassignació de 16 bits per a las àreas de dades petites"
+
+#: config/alpha/alpha.h:312
+msgid "Emit 32-bit relocations to the small data areas"
+msgstr "Emetre reassignació de 32 bits per a las àreas de dades petites"
+
+#: config/alpha/alpha.h:314
+msgid "Emit rdval instead of rduniq for thread pointer"
+msgstr ""
+
+#. For -mcpu=
+#. For -mtune=
+#. For -mfp-rounding-mode=[n|m|c|d]
+#. For -mfp-trap-mode=[n|u|su|sui]
+#. For -mtrap-precision=[p|f|i]
+#. For -mmemory-latency=
+#. For -mtls-size=
+#: config/alpha/alpha.h:343
+msgid "Use features of and schedule given CPU"
+msgstr "Usar les característiques d'el i el planificador del CPU donat"
+
+#: config/alpha/alpha.h:345
+msgid "Schedule given CPU"
+msgstr "planificat per al CPU donat"
+
+#: config/alpha/alpha.h:347
+msgid "Control the generated fp rounding mode"
+msgstr "Controlar la manera d'arrodoniment generat de fp"
+
+#: config/alpha/alpha.h:349
+msgid "Control the IEEE trap mode"
+msgstr "Controlar la manera de captura IEEE"
+
+#: config/alpha/alpha.h:351
+msgid "Control the precision given to fp exceptions"
+msgstr "Controlar la precisió donada a les excepcions de fp"
+
+#: config/alpha/alpha.h:353
+msgid "Tune expected memory latency"
+msgstr "Ajustar la latència esperada de memòria"
+
+#: config/alpha/alpha.h:355 config/ia64/ia64.h:225
+msgid "Specify bit size of immediate TLS offsets"
+msgstr ""
+
+#: config/arc/arc.c:135
+#, c-format
+msgid "bad value (%s) for -mcpu switch"
+msgstr "valor erroni (%s) per a l'interruptor -mcpu"
+
+#: config/arc/arc.c:362
+#, c-format
+msgid "argument of `%s' attribute is not a string constant"
+msgstr "l'argument de l'atribut \"%s\" no és una cadena constant"
+
+#: config/arc/arc.c:369
+#, c-format
+msgid "argument of `%s' attribute is not \"ilink1\" or \"ilink2\""
+msgstr "l'argument de l'atribut \"%s\" no és \"ilink1\" o \"ilink2\""
+
+#: config/arc/arc.c:1708 config/m32r/m32r.c:2286
+#, c-format
+msgid "invalid operand to %%R code"
+msgstr "operant invàlid per al codi %%R"
+
+#: config/arc/arc.c:1740 config/m32r/m32r.c:2309
+#, c-format
+msgid "invalid operand to %%H/%%L code"
+msgstr "operant invàlid per al codi %%H/%%L"
+
+#: config/arc/arc.c:1763 config/m32r/m32r.c:2385
+#, c-format
+msgid "invalid operand to %%U code"
+msgstr "operant invàlid per al codi %%U"
+
+#: config/arc/arc.c:1774
+#, c-format
+msgid "invalid operand to %%V code"
+msgstr "operant invàlid per al codi %%V"
+
+#. Unknown flag.
+#: config/arc/arc.c:1781 config/m32r/m32r.c:2424 config/sparc/sparc.c:6533
+msgid "invalid operand output code"
+msgstr "operant invàlid per al codi de sortida"
+
+#: config/arm/arm.c:458
+#, c-format
+msgid "switch -mcpu=%s conflicts with -march= switch"
+msgstr "l'interruptor -mcpu=%s genera conflictes amb el switch -march="
+
+#: config/arm/arm.c:468 config/rs6000/rs6000.c:558 config/sparc/sparc.c:393
+#, c-format
+msgid "bad value (%s) for %s switch"
+msgstr "valor erroni (%s) per a l'interruptor %s"
+
+#: config/arm/arm.c:604
+msgid "target CPU does not support APCS-32"
+msgstr "el CPU objectiu no té suport per a APCS-32"
+
+#: config/arm/arm.c:609
+msgid "target CPU does not support APCS-26"
+msgstr "el CPU objectiu no té suport per a APCS-26"
+
+#: config/arm/arm.c:615
+msgid "target CPU does not support interworking"
+msgstr "el CPU objectiu no té suport per a treball intern"
+
+#: config/arm/arm.c:621
+msgid "target CPU does not support THUMB instructions"
+msgstr "el CPU objectiu no té suport les instruccions THUMB"
+
+#: config/arm/arm.c:635
+msgid "enabling backtrace support is only meaningful when compiling for the Thumb"
+msgstr "habilitar el suport de rastrejo cap a endarrere només té significat quan es compila per al Thumb"
+
+#: config/arm/arm.c:638
+msgid "enabling callee interworking support is only meaningful when compiling for the Thumb"
+msgstr "habilitar el suport de treball intern de cridades només té significat quan es compila per al Thumb"
+
+#: config/arm/arm.c:641
+msgid "enabling caller interworking support is only meaningful when compiling for the Thumb"
+msgstr "habilitar el suport de treball intern de cridat només té significat quan es compila per al Thumb"
+
+#: config/arm/arm.c:647
+msgid "interworking forces APCS-32 to be used"
+msgstr "el treball intern força l'ús de APCS-32"
+
+#: config/arm/arm.c:653
+msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
+msgstr "-mapcs-stack-check és incompatible amb -mno-apcs-frame"
+
+#: config/arm/arm.c:661
+msgid "-fpic and -mapcs-reent are incompatible"
+msgstr "-fpic i -mapcs-reent són incompatibles"
+
+#: config/arm/arm.c:664
+msgid "APCS reentrant code not supported. Ignored"
+msgstr "no se suporta el codi APCS que es torna a introduir.Ignorat"
+
+#: config/arm/arm.c:672
+msgid "-g with -mno-apcs-frame may not give sensible debugging"
+msgstr "-g amb -mno-apcs-frame no permet una depuració sensible"
+
+#: config/arm/arm.c:680
+msgid "passing floating point arguments in fp regs not yet supported"
+msgstr "encara no se suporta passar arguments de nombre de coma flotant en registres fp"
+
+#: config/arm/arm.c:709
+#, c-format
+msgid "invalid floating point emulation option: -mfpe-%s"
+msgstr "opció d'emulació de coma flotant invàlida: -mfpe-%s"
+
+#: config/arm/arm.c:733
+msgid "structure size boundary can only be set to 8 or 32"
+msgstr "El límit de la grandària de l'estructura només pot establir-se a 8 o 32"
+
+#: config/arm/arm.c:741
+msgid "-mpic-register= is useless without -fpic"
+msgstr "-mpic-register= és inútil sense -fpic"
+
+#: config/arm/arm.c:748
+#, c-format
+msgid "unable to use '%s' for PIC register"
+msgstr "no es pot usar \"%s\" per a registre PIC"
+
+#: config/arm/arm.c:2064 config/arm/arm.c:2087 config/avr/avr.c:4794
+#: config/c4x/c4x.c:4644 config/h8300/h8300.c:3667 config/i386/i386.c:1396
+#: config/i386/i386.c:1425 config/ip2k/ip2k.c:3224
+#: config/m68hc11/m68hc11.c:1267 config/mcore/mcore.c:3510
+#: config/ns32k/ns32k.c:1047 config/rs6000/rs6000.c:12538 config/sh/sh.c:5681
+#: config/sh/sh.c:5706 config/sh/sh.c:5745 config/stormy16/stormy16.c:2026
+#: config/v850/v850.c:2180
+#, c-format
+msgid "`%s' attribute only applies to functions"
+msgstr "l'atribut \"%s\" nomès s'aplica a funcions"
+
+#: config/arm/arm.c:9459
+msgid "unable to compute real location of stacked parameter"
+msgstr "no es pot calcular la ubicació real del paràmetre apilat"
+
+#: config/arm/arm.c:10138
+msgid "no low registers available for popping high registers"
+msgstr "no hi ha registres inferiors disponibles per a emmagatzemar registres superiors"
+
+#: config/arm/arm.c:10389
+msgid "interrupt Service Routines cannot be coded in Thumb mode"
+msgstr "no es poden codificar les Rutines de Serveis d'Interrupció en la manera Thumb"
+
+#: config/arm/pe.c:168 config/mcore/mcore.c:3358
+#, c-format
+msgid "initialized variable `%s' is marked dllimport"
+msgstr "la variable iniciada \"%s\" està marcada com dllimport"
+
+#: config/arm/pe.c:177
+#, c-format
+msgid "static variable `%s' is marked dllimport"
+msgstr "la variable estàtica \"%s\" està marcada com dllimport"
+
+#: config/arm/arm.h:416
+msgid "Generate APCS conformant stack frames"
+msgstr "Generar marcs de pila que compleixin amb APCS"
+
+#: config/arm/arm.h:419
+msgid "Store function names in object code"
+msgstr "Emmagatzemar noms de funció en el codi objecte"
+
+#: config/arm/arm.h:423
+msgid "Use the 32-bit version of the APCS"
+msgstr "Usar la versió 32-bit del APCS"
+
+#: config/arm/arm.h:425
+msgid "Use the 26-bit version of the APCS"
+msgstr "Usar la versió 26-bit del APCS"
+
+#: config/arm/arm.h:429
+msgid "Pass FP arguments in FP registers"
+msgstr "Passar els arguments FP en els registres FP"
+
+#: config/arm/arm.h:432
+msgid "Generate re-entrant, PIC code"
+msgstr "Generar codi PIC que es torna a introduir"
+
+#: config/arm/arm.h:435
+msgid "The MMU will trap on unaligned accesses"
+msgstr "La MMU atraparà els accessos no alineats"
+
+#: config/arm/arm.h:442
+msgid "Use library calls to perform FP operations"
+msgstr "Usar cridades a biblioteques per a realitzar les operacions de FP"
+
+#: config/arm/arm.h:444 config/i960/i960.h:281
+msgid "Use hardware floating point instructions"
+msgstr "Usar instruccions de maquinari per a coma flotant"
+
+#: config/arm/arm.h:446
+msgid "Assume target CPU is configured as big endian"
+msgstr "Assumir que el CPU destinació està configurat com big endian"
+
+#: config/arm/arm.h:448
+msgid "Assume target CPU is configured as little endian"
+msgstr "Assumir que el CPU destinació està configurat com little endian"
+
+#: config/arm/arm.h:450
+msgid "Assume big endian bytes, little endian words"
+msgstr "Assumir octets big endian ,mots little endian"
+
+#: config/arm/arm.h:452
+msgid "Support calls between Thumb and ARM instruction sets"
+msgstr "Suport a cridades entre els conjunts d'instruccions Thumb i ARM"
+
+#: config/arm/arm.h:455
+msgid "Generate a call to abort if a noreturn function returns"
+msgstr "Generar una cridada a avortar si una funció noreturnretorna"
+
+#: config/arm/arm.h:458
+msgid "Do not move instructions into a function's prologue"
+msgstr "No moure les instruccions al pròleg d'una funció"
+
+#: config/arm/arm.h:461
+msgid "Do not load the PIC register in function prologues"
+msgstr "No carregar el registre PIC en els pròlegs de funció"
+
+#: config/arm/arm.h:464
+msgid "Generate call insns as indirect calls, if necessary"
+msgstr "Generar les cridades insns com cridades indirectes, si és necessari"
+
+#: config/arm/arm.h:467
+msgid "Compile for the Thumb not the ARM"
+msgstr "Compilar per al Thumb on per al ARM"
+
+#: config/arm/arm.h:471
+msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
+msgstr "Thumb: Generar marcs de pila (no-fulles) encara si no és necessari"
+
+#: config/arm/arm.h:474
+msgid "Thumb: Generate (leaf) stack frames even if not needed"
+msgstr "Thumb: Generar marcs de pila (fulles) encara si no és necessari"
+
+#: config/arm/arm.h:477
+msgid "Thumb: Assume non-static functions may be called from ARM code"
+msgstr "Thumb: Assumir que les funcions no static poden ser cridades des de codi ARM"
+
+#: config/arm/arm.h:481
+msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
+msgstr "Thumb: Assumir que els punters de funció poden anar a codi no informat sobre Thumb"
+
+#: config/arm/arm.h:491
+msgid "Specify the name of the target CPU"
+msgstr "Especificar el nom del CPU destinació"
+
+#: config/arm/arm.h:493
+msgid "Specify the name of the target architecture"
+msgstr "Especificar el nom de l'arquitectura destinació"
+
+#: config/arm/arm.h:497
+msgid "Specify the version of the floating point emulator"
+msgstr "Especifica la versió de l'emulador de nombre de coma flotant"
+
+#: config/arm/arm.h:499
+msgid "Specify the minimum bit alignment of structures"
+msgstr "Especificar l'alineació mínima de bit de les estructures"
+
+#: config/arm/arm.h:501
+msgid "Specify the register to be used for PIC addressing"
+msgstr "Especificar el registre a usar per al adreçament PIC"
+
+#: config/arm/pe.h:65
+msgid "Ignore dllimport attribute for functions"
+msgstr "Ignorar l'atribut dllimport per a les funcions"
+
+#: config/avr/avr.c:528
+#, c-format
+msgid "large frame pointer change (%d) with -mtiny-stack"
+msgstr "canvi de punter gran de marc (%d) amb -mtiny-stack"
+
+#: config/avr/avr.c:1135
+msgid "bad address, not (reg+disp):"
+msgstr "direcció errònia, no (reg+disp)"
+
+#: config/avr/avr.c:1143
+msgid "internal compiler error. Bad address:"
+msgstr "error intern del compilador. Direcció errònia:"
+
+#: config/avr/avr.c:1156
+msgid "internal compiler error. Unknown mode:"
+msgstr "error intern del compilador. Mode desconegut:"
+
+#: config/avr/avr.c:1864 config/avr/avr.c:2576
+msgid "invalid insn:"
+msgstr "insn invàlid:"
+
+#: config/avr/avr.c:1901 config/avr/avr.c:1987 config/avr/avr.c:2036
+#: config/avr/avr.c:2045 config/avr/avr.c:2143 config/avr/avr.c:2315
+#: config/avr/avr.c:2613 config/avr/avr.c:2724
+msgid "incorrect insn:"
+msgstr "insn incorrecte:"
+
+#: config/avr/avr.c:2064 config/avr/avr.c:2228 config/avr/avr.c:2386
+#: config/avr/avr.c:2768
+msgid "unknown move insn:"
+msgstr "desplaçament insn desconegut:"
+
+#: config/avr/avr.c:3003
+msgid "bad shift insn:"
+msgstr "desplaçament insn erròni:"
+
+#: config/avr/avr.c:3119 config/avr/avr.c:3549 config/avr/avr.c:3929
+msgid "internal compiler error. Incorrect shift:"
+msgstr "error intern del compilador. Direcció errònia:"
+
+#: config/avr/avr.c:4767 config/ip2k/ip2k.c:3197
+msgid "only initialized variables can be placed into program memory area"
+msgstr "Només les variables iniciades es poden ubicar en l'àrea de memòria del programa."
+
+#: config/avr/avr.c:4866
+msgid "only uninitialized variables can be placed in the .noinit section"
+msgstr "Només les variables sense inicialitzar es poden col·locar en la secció noinit"
+
+#: config/avr/avr.c:4881
+#, c-format
+msgid "MCU `%s' supported for assembler only"
+msgstr "MCU \"%s\" només té suport per a ensemblador"
+
+#: config/avr/avr.h:78
+msgid "Assume int to be 8 bit integer"
+msgstr "Assumir que int sigui enter de 8 bit"
+
+#: config/avr/avr.h:80
+msgid "Change the stack pointer without disabling interrupts"
+msgstr "Canviar el punter de la pila sense desactivar les interrupcions"
+
+#: config/avr/avr.h:82
+msgid "Use subroutines for function prologue/epilogue"
+msgstr "Usar subrutines per al pròleg/epíleg de funció"
+
+#: config/avr/avr.h:84
+msgid "Change only the low 8 bits of the stack pointer"
+msgstr "Canviar només els 8 bits baixos del punter de pila"
+
+#: config/avr/avr.h:86
+msgid "Do not generate tablejump insns"
+msgstr "No generar insns de salt de matriu"
+
+#: config/avr/avr.h:88
+msgid "Use rjmp/rcall (limited range) on >8K devices"
+msgstr ""
+
+#: config/avr/avr.h:91
+msgid "Output instruction sizes to the asm file"
+msgstr "Grandàries d'instrucció de sortida al fitxer asm"
+
+#: config/avr/avr.h:108
+msgid "Specify the initial stack address"
+msgstr "Especificar l'adreça inicial de la pila"
+
+#: config/avr/avr.h:109
+msgid "Specify the MCU name"
+msgstr "Especificar el nom MCU"
+
+#. `GIV_SORT_CRITERION(GIV1, GIV2)'
+#. In some cases, the strength reduction optimization pass can
+#. produce better code if this is defined. This macro controls the
+#. order that induction variables are combined. This macro is
+#. particularly useful if the target has limited addressing modes.
+#. For instance, the SH target has only positive offsets in
+#. addresses. Thus sorting to put the smallest address first allows
+#. the most combinations to be found.
+#: config/avr/avr.h:2450
+msgid "trampolines not supported"
+msgstr "els trampolins no tenen suport"
+
+#: config/c4x/c4x-c.c:69
+#, c-format
+msgid "missing '(' after '#pragma %s' - ignored"
+msgstr "\"(\" faltant desprès de \"#pragma %s\" - ignorat"
+
+#: config/c4x/c4x-c.c:72
+#, c-format
+msgid "missing function name in '#pragma %s' - ignored"
+msgstr "nom de funcció faltant en \"#pragma %s\" - ignorat"
+
+#: config/c4x/c4x-c.c:77
+#, c-format
+msgid "malformed '#pragma %s' - ignored"
+msgstr "\"#pragma %s\" malformat - ignorat"
+
+#: config/c4x/c4x-c.c:79
+#, c-format
+msgid "missing section name in '#pragma %s' - ignored"
+msgstr "nom de secció faltant en \"#pragma %s\" - ignorat"
+
+#: config/c4x/c4x-c.c:84
+#, c-format
+msgid "missing ')' for '#pragma %s' - ignored"
+msgstr "\")\" faltant per a \"#pragma %s\" - ignorat"
+
+#: config/c4x/c4x-c.c:87
+#, c-format
+msgid "junk at end of '#pragma %s'"
+msgstr "escombraries al final de \"#pragma %s\""
+
+#: config/c4x/c4x.c:280
+#, c-format
+msgid "unknown CPU version %d, using 40.\n"
+msgstr "versió desconeguda de CPU %d, usant 40.\n"
+
+#: config/c4x/c4x.c:853
+#, c-format
+msgid "ISR %s requires %d words of local vars, max is 32767"
+msgstr "El ISR %s requereix de %d words de variables locals,el màxim és 32767."
+
+#: config/c4x/c4x.c:1602
+msgid "using CONST_DOUBLE for address"
+msgstr "ùs de CONST_DOUBLE per a l'adreça"
+
+#: config/c4x/c4x.c:1742
+msgid "c4x_address_cost: Invalid addressing mode"
+msgstr "c4x_address_cost: Moda d'adreçament invàlid"
+
+#: config/c4x/c4x.c:1884
+#, c-format
+msgid "c4x_print_operand: %%L inconsistency"
+msgstr "c4x_print_operand: inconsistència %%L"
+
+#: config/c4x/c4x.c:1890
+#, c-format
+msgid "c4x_print_operand: %%N inconsistency"
+msgstr "c4x_print_operand: inconsistència %%N"
+
+#: config/c4x/c4x.c:1931
+#, c-format
+msgid "c4x_print_operand: %%O inconsistency"
+msgstr "c4x_print_operand: inconsistència %%O"
+
+#: config/c4x/c4x.c:2026
+msgid "c4x_print_operand: Bad operand case"
+msgstr "c4x_print_operand: Operant casi erroni"
+
+#: config/c4x/c4x.c:2069
+msgid "c4x_print_operand_address: Bad post_modify"
+msgstr "c4x_print_operand_address: post_modify erroni"
+
+#: config/c4x/c4x.c:2091
+msgid "c4x_print_operand_address: Bad pre_modify"
+msgstr "c4x_print_operand_address: pre_modify erroni"
+
+#: config/c4x/c4x.c:2139 config/c4x/c4x.c:2151 config/c4x/c4x.c:2166
+msgid "c4x_print_operand_address: Bad operand case"
+msgstr "c4x_print_operand_address: Operant casi erroni"
+
+#: config/c4x/c4x.c:2422
+msgid "c4x_rptb_insert: Cannot find start label"
+msgstr "c4x_rptb_insert: No es pot trobar l'etiqueta d'inici"
+
+#: config/c4x/c4x.c:3409 config/c4x/c4x.c:3429
+msgid "mode not QImode"
+msgstr "el moda no és QImode"
+
+#: config/c4x/c4x.c:3514
+msgid "invalid indirect memory address"
+msgstr "adreça indirecta de memòria invàlida"
+
+#: config/c4x/c4x.c:3603
+msgid "invalid indirect (S) memory address"
+msgstr "adreça indirecta de memòria (S) invàlida"
+
+#: config/c4x/c4x.c:3944
+msgid "c4x_valid_operands: Internal error"
+msgstr "c4x_valid_operands: error intern"
+
+#: config/c4x/c4x.c:4424
+msgid "c4x_operand_subword: invalid mode"
+msgstr "c4x_operand_subword: moda invàlid"
+
+#: config/c4x/c4x.c:4427
+msgid "c4x_operand_subword: invalid operand"
+msgstr "c4x_operand_subword: operant invàlid"
+
+#. We could handle these with some difficulty.
+#. e.g., *p-- => *(p-=2); *(p+1).
+#: config/c4x/c4x.c:4453
+msgid "c4x_operand_subword: invalid autoincrement"
+msgstr "c4x_operand_subword: autoincrement invàlid"
+
+#: config/c4x/c4x.c:4459
+msgid "c4x_operand_subword: invalid address"
+msgstr "c4x_operand_subword: adreça invàlid"
+
+#: config/c4x/c4x.c:4470
+msgid "c4x_operand_subword: address not offsettable"
+msgstr "c4x_operand_subword: adreça no desplaçabla"
+
+#: config/c4x/c4x.c:4670
+msgid "c4x_rptb_rpts_p: Repeat block top label moved\n"
+msgstr "c4x_rptb_rpts_p: etiqueta superiora de bloc de repetició desplaçada\n"
+
+#. Name of the c4x assembler.
+#. Name of the c4x linker.
+#. Define assembler options.
+#. Define linker options.
+#. Specify the end file to link with.
+#. Target compilation option flags.
+#. Small memory model.
+#. Use 24-bit MPYI for C3x.
+#. Fast fixing of floats.
+#. Allow use of RPTS.
+#. Emit C3x code.
+#. Be compatible with TI assembler.
+#. Be paranoid about DP reg. in ISRs.
+#. Pass arguments on stack.
+#. Enable features under development.
+#. Enable repeat block.
+#. Use BK as general register.
+#. Use decrement and branch for C3x.
+#. Enable debugging of GCC.
+#. Force constants into registers.
+#. Allow unsigned loop counters.
+#. Force op0 and op1 to be same.
+#. Save all 40 bits for floats.
+#. Allow parallel insns.
+#. Allow MPY||ADD, MPY||SUB insns.
+#. Assume mem refs possibly aliased.
+#. Emit C30 code.
+#. Emit C31 code.
+#. Emit C32 code.
+#. Emit C33 code.
+#. Emit C40 code.
+#. Emit C44 code.
+#. Run-time compilation parameters selecting different hardware subsets.
+#.
+#. Macro to define tables used to set the flags.
+#. This is a list in braces of triplets in braces,
+#. each pair being { "NAME", VALUE, "DESCRIPTION" }
+#. 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/c4x/c4x.h:168
+msgid "Small memory model"
+msgstr "Model de memòria small"
+
+#: config/c4x/c4x.h:170
+msgid "Big memory model"
+msgstr "Model de memòria big"
+
+#: config/c4x/c4x.h:172
+msgid "Use MPYI instruction for C3x"
+msgstr "Usar instrucció MPYI per a C3x"
+
+#: config/c4x/c4x.h:174
+msgid "Do not use MPYI instruction for C3x"
+msgstr "No usar instrucció MPYI per a C3x"
+
+#: config/c4x/c4x.h:176
+msgid "Use fast but approximate float to integer conversion"
+msgstr "Usar conversió de coma flotant a enter ràpida però aproximada"
+
+#: config/c4x/c4x.h:178
+msgid "Use slow but accurate float to integer conversion"
+msgstr "Usar conversió de coma flotant a enter lenta però exacta"
+
+#: config/c4x/c4x.h:180
+msgid "Enable use of RTPS instruction"
+msgstr "Activar l'ús de la instrucció RTPS"
+
+#: config/c4x/c4x.h:182
+msgid "Disable use of RTPS instruction"
+msgstr "Desactivar l'ús de la instrucció RTPS"
+
+#: config/c4x/c4x.h:184
+msgid "Enable use of RTPB instruction"
+msgstr "Activar l'ús de la instrucció RTPB"
+
+#: config/c4x/c4x.h:186
+msgid "Disable use of RTPB instruction"
+msgstr "Desactivar l'ús de la instrucció RTPB"
+
+#: config/c4x/c4x.h:188
+msgid "Generate code for C30 CPU"
+msgstr "Generar codi per al CPU C30"
+
+#: config/c4x/c4x.h:190
+msgid "Generate code for C31 CPU"
+msgstr "Generar codi per al CPU C31"
+
+#: config/c4x/c4x.h:192
+msgid "Generate code for C32 CPU"
+msgstr "Generar codi per al CPU C32"
+
+#: config/c4x/c4x.h:194
+msgid "Generate code for C33 CPU"
+msgstr "Generar codi per al CPU C33"
+
+#: config/c4x/c4x.h:196
+msgid "Generate code for C40 CPU"
+msgstr "Generar codi per al CPU C40"
+
+#: config/c4x/c4x.h:198
+msgid "Generate code for C44 CPU"
+msgstr "Generar codi per al CPU C44"
+
+#: config/c4x/c4x.h:200
+msgid "Emit code compatible with TI tools"
+msgstr "Emetre codi compatible amb les eines TI"
+
+#: config/c4x/c4x.h:202
+msgid "Emit code to use GAS extensions"
+msgstr "Emetre codi per a usar les extensions de GAS"
+
+#: config/c4x/c4x.h:204 config/c4x/c4x.h:208
+msgid "Save DP across ISR in small memory model"
+msgstr "Guardar DP entre ISR en el model de memòria small"
+
+#: config/c4x/c4x.h:206 config/c4x/c4x.h:210
+msgid "Don't save DP across ISR in small memory model"
+msgstr "No guardar DP entre ISR en el model de memòria small"
+
+#: config/c4x/c4x.h:212
+msgid "Pass arguments on the stack"
+msgstr "Passar els arguments en la pila"
+
+#: config/c4x/c4x.h:214
+msgid "Pass arguments in registers"
+msgstr "Passar els arguments en els registres"
+
+#: config/c4x/c4x.h:216
+msgid "Enable new features under development"
+msgstr "Activar noves característiques en desenvolupament"
+
+#: config/c4x/c4x.h:218
+msgid "Disable new features under development"
+msgstr "Desactivar noves característiques en desenvolupament"
+
+#: config/c4x/c4x.h:220
+msgid "Use the BK register as a general purpose register"
+msgstr "Usar el registre BK com un registre de propòsit general"
+
+#: config/c4x/c4x.h:222
+msgid "Do not allocate BK register"
+msgstr "No assignar el registre BK"
+
+#: config/c4x/c4x.h:224
+msgid "Enable use of DB instruction"
+msgstr "Activar l'ús de la instrucció DB"
+
+#: config/c4x/c4x.h:226
+msgid "Disable use of DB instruction"
+msgstr "Desactivar l'ús de la instrucció DB"
+
+#: config/c4x/c4x.h:228
+msgid "Enable debugging"
+msgstr "Activar la depuració"
+
+#: config/c4x/c4x.h:230
+msgid "Disable debugging"
+msgstr "Desactivar la depuració"
+
+#: config/c4x/c4x.h:232
+msgid "Force constants into registers to improve hoisting"
+msgstr "Forçar les constants dintre de registres per a millorar l'aixecament"
+
+#: config/c4x/c4x.h:234
+msgid "Don't force constants into registers"
+msgstr "No forçar les constants en els registres"
+
+#: config/c4x/c4x.h:236
+msgid "Force RTL generation to emit valid 3 operand insns"
+msgstr "Forçar que la generació de RTL emeti 3 operandes insns vàlids"
+
+#: config/c4x/c4x.h:238
+msgid "Allow RTL generation to emit invalid 3 operand insns"
+msgstr "Permetre que la generació de RTL emeti 3 operandes insns invàlids"
+
+#: config/c4x/c4x.h:240
+msgid "Allow unsigned iteration counts for RPTB/DB"
+msgstr "Permetre comptes de iteracions unsigned per a RPTB/DB"
+
+#: config/c4x/c4x.h:242
+msgid "Disallow unsigned iteration counts for RPTB/DB"
+msgstr "No permetre comptes de iteracions unsigned per a RPTB/DB"
+
+#: config/c4x/c4x.h:244
+msgid "Preserve all 40 bits of FP reg across call"
+msgstr "Preservar els 40 bits del registre FP entre cridades"
+
+#: config/c4x/c4x.h:246
+msgid "Only preserve 32 bits of FP reg across call"
+msgstr "Només preservar 32 bits del registre FP entre cridades"
+
+#: config/c4x/c4x.h:248
+msgid "Enable parallel instructions"
+msgstr "Activar les funcions paral·leles"
+
+#: config/c4x/c4x.h:250
+msgid "Disable parallel instructions"
+msgstr "Desactivar les funcions paral·leles"
+
+#: config/c4x/c4x.h:252
+msgid "Enable MPY||ADD and MPY||SUB instructions"
+msgstr "Activar les instruccions MPY||ADD i MPY||SUB"
+
+#: config/c4x/c4x.h:254
+msgid "Disable MPY||ADD and MPY||SUB instructions"
+msgstr "Desactivar les instruccions MPY||ADD i MPY||SUB"
+
+#: config/c4x/c4x.h:256
+msgid "Assume that pointers may be aliased"
+msgstr "Assumir que es poden fer alies dels punters"
+
+#: config/c4x/c4x.h:258
+msgid "Assume that pointers not aliased"
+msgstr "Assumir que els punters no tenen alies"
+
+#: config/c4x/c4x.h:331
+msgid "Specify maximum number of iterations for RPTS"
+msgstr "Especificar el nombre màxim de iteracions per a RPTS"
+
+#: config/c4x/c4x.h:333
+msgid "Select CPU to generate code for"
+msgstr "Seleccionar el CPU per al qual es genera codi"
+
+#: config/cris/cris.c:599
+msgid "unexpected index-type in cris_print_index"
+msgstr "index-type inesperat en cris_print_index"
+
+#: config/cris/cris.c:615
+msgid "unexpected base-type in cris_print_base"
+msgstr "base-type inesperat en cris_print_base"
+
+#: config/cris/cris.c:908
+#, c-format
+msgid "stackframe too big: %d bytes"
+msgstr "marc de pila massa grand: %d bytes"
+
+#: config/cris/cris.c:1223
+msgid "allocated but unused delay list in epilogue"
+msgstr "llista d'alenteixo assignada però sense ús en l'epíleg"
+
+#: config/cris/cris.c:1233
+msgid "unexpected function type needing stack adjustment for __builtin_eh_return"
+msgstr "el tipus de funció inesperat necessita un ajustament de pila per a _builtin_eh_return"
+
+#: config/cris/cris.c:1312
+msgid "invalid operand for 'b' modifier"
+msgstr "operant invàlid per al modificador \"b\""
+
+#: config/cris/cris.c:1324
+msgid "invalid operand for 'v' modifier"
+msgstr "operant invàlid per al modificador \"v\""
+
+#: config/cris/cris.c:1334
+msgid "invalid operand for 'P' modifier"
+msgstr "operant invàlid per al modificador \"P\""
+
+#: config/cris/cris.c:1341
+msgid "invalid operand for 'p' modifier"
+msgstr "operant invàlid per al modificador \"p\""
+
+#: config/cris/cris.c:1380
+msgid "invalid operand for 'z' modifier"
+msgstr "operant invàlid per al modificador \"z\""
+
+#: config/cris/cris.c:1411 config/cris/cris.c:1441
+msgid "invalid operand for 'H' modifier"
+msgstr "operant invàlid per al modificador \"H\""
+
+#: config/cris/cris.c:1417
+msgid "bad register"
+msgstr "registre erroni"
+
+#: config/cris/cris.c:1455
+msgid "invalid operand for 'e' modifier"
+msgstr "operant invàlid per al modificador \"e\""
+
+#: config/cris/cris.c:1472
+msgid "invalid operand for 'm' modifier"
+msgstr "operant invàlid per al modificador \"m\""
+
+#: config/cris/cris.c:1497
+msgid "invalid operand for 'A' modifier"
+msgstr "operant invàlid per al modificador \"A\""
+
+#: config/cris/cris.c:1505
+msgid "invalid operand for 'D' modifier"
+msgstr "operant invàlid per al modificador \"D\""
+
+#: config/cris/cris.c:1519
+msgid "invalid operand for 'T' modifier"
+msgstr "operant invàlid per al modificador \"T\""
+
+#: config/cris/cris.c:1528
+msgid "invalid operand modifier letter"
+msgstr "lletra de modificador d'operant invàlid"
+
+#: config/cris/cris.c:1536
+#, c-format
+msgid "internal error: bad register: %d"
+msgstr "error intern: registre erroni: %d"
+
+#: config/cris/cris.c:1584
+msgid "unexpected multiplicative operand"
+msgstr "operant multiplicatiu inesperat"
+
+#: config/cris/cris.c:1604
+msgid "unexpected operand"
+msgstr "operant inesperat"
+
+#: config/cris/cris.c:1639 config/cris/cris.c:1649
+msgid "unrecognized address"
+msgstr "adreça no reconeguda"
+
+#: config/cris/cris.c:2005
+msgid "internal error: sideeffect-insn affecting main effect"
+msgstr "error intern: sideeffect-insn afectant el efecte principal"
+
+#. If we get here, the caller got its initial tests wrong.
+#: config/cris/cris.c:2292
+msgid "internal error: cris_side_effect_mode_ok with bad operands"
+msgstr "error intern: cris_side_effect_mode_ok amb operants erronis"
+
+#: config/cris/cris.c:2374 config/cris/cris.c:2432
+msgid "unrecognized supposed constant"
+msgstr "suposada constant no reconeguda"
+
+#: config/cris/cris.c:2473
+msgid "unrecognized supposed constant in cris_global_pic_symbol"
+msgstr "suposada constant no reconeguda en cris_global_pic_symbol"
+
+#: config/cris/cris.c:2492
+#, c-format
+msgid "-max-stackframe=%d is not usable, not between 0 and %d"
+msgstr "no es pot usar -max-stackframe=%d, no està entre 0 i %d"
+
+#: config/cris/cris.c:2520
+#, c-format
+msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
+msgstr "especificació de versió CRIS desconeguda en -march= o -mcpu= : %s"
+
+#: config/cris/cris.c:2556
+#, c-format
+msgid "unknown CRIS cpu version specification in -mtune= : %s"
+msgstr "especificació de versió de cpu de CRIS desconeguda en -mtune= : %s"
+
+#: config/cris/cris.c:2574
+msgid "-fPIC and -fpic are not supported in this configuration"
+msgstr "no és dona suport a -fPIC i -fpic en aquesta configuració"
+
+#: config/cris/cris.c:2590
+msgid "that particular -g option is invalid with -maout and -melinux"
+msgstr "aquesta opció particular -g és invàlid amb -maout i -melinux"
+
+#: config/cris/cris.c:2824 config/cris/cris.c:2869
+msgid "unexpected side-effects in address"
+msgstr "effecte de vora inesperat en l'adreça"
+
+#. Labels are never marked as global symbols.
+#: config/cris/cris.c:2966 config/cris/cris.c:2997
+msgid "unexpected PIC symbol"
+msgstr "símbol PIC inesperat"
+
+#: config/cris/cris.c:2970
+msgid "PIC register isn't set up"
+msgstr "el registre PIC no està preparat"
+
+#: config/cris/cris.c:2983 config/cris/cris.c:3066
+msgid "unexpected address expression"
+msgstr "expressió d'adreça inesperada"
+
+#: config/cris/cris.c:3001
+msgid "emitting PIC operand, but PIC register isn't set up"
+msgstr "emetant un operant PIC, però el registre PIC no està preparat"
+
+#: config/cris/cris.c:3010
+msgid "unexpected NOTE as addr_const:"
+msgstr "NOTE com a addr_const inesperat:"
+
+#: config/cris/aout.h:108
+msgid "Compile for the MMU-less Etrax 100-based elinux system"
+msgstr "Compilar per al sistema elinux Etrax basat en 100 sense MMU"
+
+#: config/cris/aout.h:115
+msgid "For elinux, request a specified stack-size for this program"
+msgstr "Per a elinux, sol·licitar una grandària de pila especificada per a aquest programa"
+
+#. No "no-etrax" as it does not really imply any model. On the other hand, "etrax" implies the common (and large) subset matching all models.
+#: config/cris/cris.h:340
+msgid "Compile for ETRAX 4 (CRIS v3)"
+msgstr "Compilar per a ETRAX 4 (CRIS v3)"
+
+#: config/cris/cris.h:345
+msgid "Compile for ETRAX 100 (CRIS v8)"
+msgstr "Compilar per a ETRAX 100 (CRIS v8)"
+
+#: config/cris/cris.h:349
+msgid "Emit verbose debug information in assembly code"
+msgstr "Emetre informació de depuració detallada en el codi assemblador"
+
+#: config/cris/cris.h:352
+msgid "Do not use condition codes from normal instructions"
+msgstr "No usar codis de condició per a les instruccions normals"
+
+#: config/cris/cris.h:356
+msgid "Do not emit addressing modes with side-effect assignment"
+msgstr "No emetre maneres d'adreçament amb assignacions col·laterals"
+
+#: config/cris/cris.h:359
+msgid "Do not tune stack alignment"
+msgstr "No ajustar l'alineació de la pila"
+
+#: config/cris/cris.h:362
+msgid "Do not tune writable data alignment"
+msgstr "No ajustar l'alineació de les dades modificables"
+
+#: config/cris/cris.h:365
+msgid "Do not tune code and read-only data alignment"
+msgstr "No ajustar l'alineació del codi i de dades només de lectura"
+
+#: config/cris/cris.h:374
+msgid "Align code and data to 32 bits"
+msgstr "Alinear codi i dades a 32 bits"
+
+#: config/cris/cris.h:387
+msgid "Don't align items in code or data"
+msgstr "No alinear elements en el codi o les dades"
+
+#: config/cris/cris.h:390
+msgid "Do not emit function prologue or epilogue"
+msgstr "No emetre pròleg o epíleg de funcions"
+
+#. We have to handle this m-option here since we can't wash it off in both CC1_SPEC and CC1PLUS_SPEC.
+#: config/cris/cris.h:394
+msgid "Use the most feature-enabling options allowed by other options"
+msgstr "Usar la major quantitat de característiques permeses per altres opcions"
+
+#. We must call it "override-" since calling it "no-" will cause gcc.c to forget it, if there's a "later" -mbest-lib-options. Kludgy, but needed for some multilibbed files.
+#: config/cris/cris.h:400
+msgid "Override -mbest-lib-options"
+msgstr "Anular -mbest-lib-options"
+
+#: config/cris/cris.h:432
+msgid "Generate code for the specified chip or CPU version"
+msgstr "Generar codi per al xip especificat o la versió de CPU"
+
+#: config/cris/cris.h:434
+msgid "Tune alignment for the specified chip or CPU version"
+msgstr "Ajustar alineació per al xip especificat o la versió de CPU"
+
+#: config/cris/cris.h:436
+msgid "Warn when a stackframe is larger than the specified size"
+msgstr "Avisar quan un marc de pila sigui més gran que la grandària especificada"
+
+#. Node: Profiling
+#: config/cris/cris.h:1022
+msgid "no FUNCTION_PROFILER for CRIS"
+msgstr "no FUNCTION_PROFILER per a CRIS"
+
+#: config/cris/linux.h:71
+msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
+msgstr "Juntament amb -fpic i -fPIC, no utilitzar referències GOTPLT"
+
+#: config/d30v/d30v.c:207
+#, c-format
+msgid "bad modes_tieable_p for register %s, mode1 %s, mode2 %s"
+msgstr "modes_tieable_p erroni per al registre %s, manera1 %s, manera2 %s"
+
+#: config/d30v/d30v.c:2666
+msgid "bad insn to d30v_print_operand_address:"
+msgstr "insn erronia per a d30v_print_operand_address:"
+
+#: config/d30v/d30v.c:2683 config/d30v/d30v.c:2744 config/d30v/d30v.c:2765
+#: config/d30v/d30v.c:2783
+msgid "bad insn to d30v_print_operand_memory_reference:"
+msgstr "insn erroni per a d30v_print_operand_memory_reference:"
+
+#: config/d30v/d30v.c:2851
+msgid "bad insn to d30v_print_operand, 'f' modifier:"
+msgstr "insn erroni per a d30v_print_operand, modificador \"f\":"
+
+#: config/d30v/d30v.c:2860
+msgid "bad insn to d30v_print_operand, 'A' modifier:"
+msgstr "insn erroni per a d30v_print_operand, modificador \"A\":"
+
+#: config/d30v/d30v.c:2867
+msgid "bad insn to d30v_print_operand, 'M' modifier:"
+msgstr "insn erroni per a d30v_print_operand, modificador \"M\":"
+
+#: config/d30v/d30v.c:2921
+msgid "bad insn to print_operand, 'F' or 'T' modifier:"
+msgstr "insn erroni per a print_operand, modificador \"F\" o \"T\":"
+
+#: config/d30v/d30v.c:2932
+msgid "bad insn to print_operand, 'B' modifier:"
+msgstr "insn erroni per a print_operand, modificador \"B\":"
+
+#: config/d30v/d30v.c:2939
+msgid "bad insn to print_operand, 'E' modifier:"
+msgstr "insn erroni per a print_operand, modificador \"E\":"
+
+#: config/d30v/d30v.c:2957
+msgid "bad insn to print_operand, 'R' modifier:"
+msgstr "insn erroni per a print_operand, modificador \"R\":"
+
+#: config/d30v/d30v.c:2966 config/d30v/d30v.c:2974
+msgid "bad insn to print_operand, 's' modifier:"
+msgstr "insn erroni per a print_operand, modificador \"s\":"
+
+#: config/d30v/d30v.c:3003
+msgid "bad insn in d30v_print_operand, 0 case"
+msgstr "insn erroni per a d30v_print_operand, casi 0"
+
+#: config/d30v/d30v.c:3301
+msgid "d30v_emit_comparison"
+msgstr "d30v_emit_comparison"
+
+#: config/d30v/d30v.c:3345
+msgid "bad call to d30v_move_2words"
+msgstr "cirdada ad30v_move_2words errònia"
+
+#: config/d30v/d30v.h:114
+msgid "Enable use of conditional move instructions"
+msgstr "Activar l'ús de les instruccions condicionals move"
+
+#: config/d30v/d30v.h:117
+msgid "Disable use of conditional move instructions"
+msgstr "Desactivar l'ús de les instruccions condicionals move"
+
+#: config/d30v/d30v.h:120
+msgid "Debug argument support in compiler"
+msgstr "Suport per a depuració d'arguments en el compilador"
+
+#: config/d30v/d30v.h:123
+msgid "Debug stack support in compiler"
+msgstr "Suport per a depuració de pila en el compilador"
+
+#: config/d30v/d30v.h:126
+msgid "Debug memory address support in compiler"
+msgstr "Suport per a depuració d'adreces de memòria en el compilador"
+
+#: config/d30v/d30v.h:129
+msgid "Make adjacent short instructions parallel if possible"
+msgstr "Fer paral·leles les instruccions adjacents talles siés possible."
+
+#: config/d30v/d30v.h:132
+msgid "Do not make adjacent short instructions parallel"
+msgstr "No fer paral·leles les instruccions adjacents."
+
+#: config/d30v/d30v.h:135 config/d30v/d30v.h:138
+msgid "Link programs/data to be in external memory by default"
+msgstr "Enllaçar programes/dades per a estar en la memòria externa per omissió"
+
+#: config/d30v/d30v.h:141
+msgid "Link programs/data to be in onchip memory by default"
+msgstr "Enllaçar programes/dades per a estar en la memòria del xip per omissió"
+
+#: config/d30v/d30v.h:149
+msgid "Change the branch costs within the compiler"
+msgstr "Canviar els costos de ramificació dintre del compilador"
+
+#: config/d30v/d30v.h:152
+msgid "Change the threshold for conversion to conditional execution"
+msgstr "Canviar el llindar per a la conversió a execució condicional"
+
+#: config/dsp16xx/dsp16xx.c:1446 config/dsp16xx/dsp16xx.c:1469
+msgid "stack size > 32k"
+msgstr "Grandària de la pila > 32k"
+
+#: config/dsp16xx/dsp16xx.c:1678
+msgid "invalid addressing mode"
+msgstr "manera d'adreçar invàlida"
+
+#: config/dsp16xx/dsp16xx.c:1821
+msgid "bad register extension code"
+msgstr "codi d'extensió de registre erroni"
+
+#: config/dsp16xx/dsp16xx.c:1921
+msgid "invalid offset in ybase addressing"
+msgstr "desplaçament invàlid en el adreçament de ybase"
+
+#: config/dsp16xx/dsp16xx.c:1924
+msgid "invalid register in ybase addressing"
+msgstr "registre invàlid en el adreçament de ybase"
+
+#: config/dsp16xx/dsp16xx.c:2099
+msgid "invalid shift operator in emit_1600_core_shift"
+msgstr "operador de desplaçament invàlid en emit_1600_core_shift"
+
+#: config/dsp16xx/dsp16xx.c:2428
+msgid "invalid mode for gen_tst_reg"
+msgstr "mode invàlid per a gen_tst_reg"
+
+#: config/dsp16xx/dsp16xx.c:2500
+msgid "invalid mode for integer comparison in gen_compare_reg"
+msgstr "mode invàlid per a la comparança entera en gen_compari_reg"
+
+#. 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/dsp16xx/dsp16xx.h:230
+msgid "Pass parameters in registers (default)"
+msgstr "Passar els paràmetres en els registres (per omissió)"
+
+#: config/dsp16xx/dsp16xx.h:232
+msgid "Don't pass parameters in registers"
+msgstr "No passar els paràmetres en els registres"
+
+#: config/dsp16xx/dsp16xx.h:234
+msgid "Generate code for near calls"
+msgstr "Generar codi per a cridades near"
+
+#: config/dsp16xx/dsp16xx.h:236
+msgid "Don't generate code for near calls"
+msgstr "No generar codi per a cridades near"
+
+#: config/dsp16xx/dsp16xx.h:238
+msgid "Generate code for near jumps"
+msgstr "Generar codi per a salts near"
+
+#: config/dsp16xx/dsp16xx.h:240
+msgid "Don't generate code for near jumps"
+msgstr "No generar codi per a salts near"
+
+#: config/dsp16xx/dsp16xx.h:242
+msgid "Generate code for a bit-manipulation unit"
+msgstr "Generar codi per a una unitat de manipulació de bits"
+
+#: config/dsp16xx/dsp16xx.h:244
+msgid "Don't generate code for a bit-manipulation unit"
+msgstr "No generar codi per a una unitat de manipulació de bits"
+
+#: config/dsp16xx/dsp16xx.h:246
+msgid "Generate code for memory map1"
+msgstr "Generar codi per a memory map1"
+
+#: config/dsp16xx/dsp16xx.h:248
+msgid "Generate code for memory map2"
+msgstr "Generar codi per a memory map2"
+
+#: config/dsp16xx/dsp16xx.h:250
+msgid "Generate code for memory map3"
+msgstr "Generar codi per a memory map3"
+
+#: config/dsp16xx/dsp16xx.h:252
+msgid "Generate code for memory map4"
+msgstr "Generar codi per a memory map4"
+
+#: config/dsp16xx/dsp16xx.h:254
+msgid "Ouput extra code for initialized data"
+msgstr "Generar codi extra per a dades inicialitzades"
+
+#: config/dsp16xx/dsp16xx.h:256
+msgid "Don't let reg. allocator use ybase registers"
+msgstr "No permetre que el assignador de registres usi registres ybase"
+
+#: config/dsp16xx/dsp16xx.h:258
+msgid "Output extra debug info in Luxworks environment"
+msgstr "Generar informació extra de depuració en l'ambit Luxworks"
+
+#: config/dsp16xx/dsp16xx.h:260
+msgid "Save temp. files in Luxworks environment"
+msgstr "Guardar els fitxers temporals en l'ambit Luxworks"
+
+#: config/dsp16xx/dsp16xx.h:272
+msgid "Specify alternate name for text section"
+msgstr "Especificar un nom alternatiu per a la secció de text"
+
+#: config/dsp16xx/dsp16xx.h:274
+msgid "Specify alternate name for data section"
+msgstr "Especificar un nom alternatiu per a la secció de dades"
+
+#: config/dsp16xx/dsp16xx.h:276
+msgid "Specify alternate name for bss section"
+msgstr "Especificar un nom alternatiu per a la secció bss"
+
+#: config/dsp16xx/dsp16xx.h:278
+msgid "Specify alternate name for constant section"
+msgstr "Especificar un nom alternatiu per a la secció constant"
+
+#: config/dsp16xx/dsp16xx.h:280
+msgid "Specify alternate name for dsp16xx chip"
+msgstr "Especificar un nom alternatiu per a el xip dsp16xx"
+
+#. Output assembler code to FILE to increment profiler label # LABELNO
+#. for profiling a function entry.
+#: config/dsp16xx/dsp16xx.h:1218 config/dsp16xx/dsp16xx.h:1772
+#: config/dsp16xx/dsp16xx.h:1777
+msgid "profiling not implemented yet"
+msgstr "no s'ha implementat encara profiling"
+
+#. Emit RTL insns to initialize the variable parts of a trampoline.
+#. FNADDR is an RTX for the address of the function's pure code.
+#. CXT is an RTX for the static chain value for the function.
+#: config/dsp16xx/dsp16xx.h:1228 config/dsp16xx/dsp16xx.h:1240
+msgid "trampolines not yet implemented"
+msgstr "no s'han implementat encara trampolin"
+
+#: config/fr30/fr30.c:453
+msgid "fr30_print_operand_address: unhandled address"
+msgstr "fr30_print_operand_address: adreça sense manejar"
+
+#: config/fr30/fr30.c:480
+#, c-format
+msgid "fr30_print_operand: unrecognized %%p code"
+msgstr "fr30_print_operand_address: no es reconeix el codi %%p"
+
+#: config/fr30/fr30.c:500
+#, c-format
+msgid "fr30_print_operand: unrecognized %%b code"
+msgstr "fr30_print_operand_address: no es reconeix el codi %%b"
+
+#: config/fr30/fr30.c:521
+#, c-format
+msgid "fr30_print_operand: unrecognized %%B code"
+msgstr "fr30_print_operand_address: no es reconeix el codi %%B"
+
+#: config/fr30/fr30.c:529
+#, c-format
+msgid "fr30_print_operand: invalid operand to %%A code"
+msgstr "fr30_print_operand: operant invàlid per al codi %%A"
+
+#: config/fr30/fr30.c:546
+#, c-format
+msgid "fr30_print_operand: invalid %%x code"
+msgstr "fr30_print_operand: codi %%x invàlid"
+
+#: config/fr30/fr30.c:553
+#, c-format
+msgid "fr30_print_operand: invalid %%F code"
+msgstr "fr30_print_operand: codi %%F invàlid"
+
+#: config/fr30/fr30.c:570
+msgid "fr30_print_operand: unknown code"
+msgstr "fr30_print_operand: codi desconegut"
+
+#: config/fr30/fr30.c:599 config/fr30/fr30.c:608 config/fr30/fr30.c:619
+#: config/fr30/fr30.c:632
+msgid "fr30_print_operand: unhandled MEM"
+msgstr "fr30_print_operand: MEM sense manejar"
+
+#: config/fr30/fr30.h:63
+msgid "Assume small address space"
+msgstr "Assumint espai d'adreces petit"
+
+#: config/frv/frv.c:410 config/frv/frv.c:428
+#, c-format
+msgid "Unknown cpu: -mcpu=%s"
+msgstr ""
+
+#: config/frv/frv.c:451
+msgid "-fpic and -gdwarf are incompatible (-fpic and -g/-gdwarf-2 are fine)"
+msgstr ""
+
+#: config/frv/frv.c:2520
+msgid "Bad insn to frv_print_operand_address:"
+msgstr "insn erroni per a frv_print_operand_address:"
+
+#: config/frv/frv.c:2533
+msgid "Bad register to frv_print_operand_memory_reference_reg:"
+msgstr "insn erroni per a frv_print_operand_memory_reference_reg:"
+
+#: config/frv/frv.c:2574 config/frv/frv.c:2584 config/frv/frv.c:2593
+#: config/frv/frv.c:2621 config/frv/frv.c:2633 config/frv/frv.c:2637
+msgid "Bad insn to frv_print_operand_memory_reference:"
+msgstr "insn erroni per a frv_print_operand_memory_reference:"
+
+#: config/frv/frv.c:2779
+msgid "Bad insn in frv_print_operand, bad const_double"
+msgstr "insn erroni per a frv_print_operand,·bad·const_double"
+
+#: config/frv/frv.c:2824
+msgid "Bad insn to frv_print_operand, 'C' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"C\":"
+
+#: config/frv/frv.c:2847
+msgid "Bad insn to frv_print_operand, 'c' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"c\":"
+
+#: config/frv/frv.c:2872
+msgid "Bad insn to frv_print_operand, 'e' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"e\":"
+
+#: config/frv/frv.c:2880
+msgid "Bad insn to frv_print_operand, 'F' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"F\":"
+
+#: config/frv/frv.c:2896
+msgid "Bad insn to frv_print_operand, 'f' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"f\":"
+
+#: config/frv/frv.c:2949
+msgid "Bad insn to frv_print_operand, 'L' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"L\":"
+
+#: config/frv/frv.c:2962
+msgid "Bad insn to frv_print_operand, 'M/N' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"M/N\":"
+
+#: config/frv/frv.c:2983
+msgid "Bad insn to frv_print_operand, 'O' modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"O\":"
+
+#: config/frv/frv.c:3001
+msgid "Bad insn to frv_print_operand, P modifier:"
+msgstr "insn erroni per a frv_print_operand, modificador \"P\":"
+
+#: config/frv/frv.c:3021
+msgid "Bad insn in frv_print_operand, z case"
+msgstr "insn erroni per a frv_print_operand, casi z"
+
+#: config/frv/frv.c:3049
+msgid "Bad insn in frv_print_operand, 0 case"
+msgstr "insn erroni per a frv_print_operand, casi 0"
+
+#: config/frv/frv.c:3054
+msgid "frv_print_operand: unknown code"
+msgstr "frv_print_operand: codi desconegut"
+
+#: config/frv/frv.c:5737
+msgid "Bad output_move_single operand"
+msgstr "Operant output_move_single erroni"
+
+#: config/frv/frv.c:5866
+msgid "Bad output_move_double operand"
+msgstr ""
+
+#: config/frv/frv.c:6010
+msgid "Bad output_condmove_single operand"
+msgstr "Operant output_condmove_single erroni"
+
+#: config/frv/frv.c:8315
+msgid "frv_registers_update"
+msgstr ""
+
+#: config/frv/frv.c:8475
+msgid "frv_registers_used_p"
+msgstr ""
+
+#: config/frv/frv.c:8604
+msgid "frv_registers_set_p"
+msgstr ""
+
+#: config/frv/frv.c:9171
+msgid "accumulator is not a constant integer"
+msgstr "el acumulador no és una constant sentera"
+
+#: config/frv/frv.c:9176
+msgid "accumulator number is out of bounds"
+msgstr ""
+
+#: config/frv/frv.c:9187
+#, c-format
+msgid "inappropriate accumulator for `%s'"
+msgstr "acumulador inadequat per a \"%s\""
+
+#: config/frv/frv.c:9253
+#, c-format
+msgid "`%s' expects a constant argument"
+msgstr "l'atribut \"%s\" espera una constant com argument"
+
+#: config/frv/frv.c:9258
+#, c-format
+msgid "constant argument out of range for `%s'"
+msgstr "l'argument constant està fora de rang per a \"%s\""
+
+#: config/frv/frv.c:9638
+msgid "media functions are not available unless -mmedia is used"
+msgstr ""
+
+#: config/frv/frv.c:9650
+msgid "this media function is only available on the fr500"
+msgstr ""
+
+#: config/frv/frv.c:9678
+msgid "this media function is only available on the fr400"
+msgstr ""
+
+#. This macro is a C statement to print on `stderr' a string describing the
+#. particular machine description choice. Every machine description should
+#. define `TARGET_VERSION'. For example:
+#.
+#. #ifdef MOTOROLA
+#. #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)");
+#. #else
+#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
+#. #endif
+#: config/frv/frv.h:512
+msgid " (frv)"
+msgstr ""
+
+#: config/h8300/h8300.c:314
+msgid "-ms2600 is used without -ms"
+msgstr "es va usar -ms2600 sense -ms"
+
+#: config/h8300/h8300.c:320
+msgid "-mn is used without -mh or -ms"
+msgstr "es va usar -mn sense -mh o -ms"
+
+#. 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/h8300/h8300.h:150
+msgid "Generate H8S code"
+msgstr "Generar codi H8S"
+
+#: config/h8300/h8300.h:151
+msgid "Do not generate H8S code"
+msgstr "No generar codi H8S"
+
+#: config/h8300/h8300.h:152
+msgid "Generate H8S/2600 code"
+msgstr "Generar codi H8S/2600"
+
+#: config/h8300/h8300.h:153
+msgid "Do not generate H8S/2600 code"
+msgstr "No generar codi H8S/2600"
+
+#: config/h8300/h8300.h:154
+msgid "Make integers 32 bits wide"
+msgstr "Fer enters de 32 bits d'amplària"
+
+#: config/h8300/h8300.h:157
+msgid "Use registers for argument passing"
+msgstr "Usar registres per a pas de paràmetres"
+
+#: config/h8300/h8300.h:159
+msgid "Do not use registers for argument passing"
+msgstr "No usar registres per a pas de paràmetres"
+
+#: config/h8300/h8300.h:161
+msgid "Consider access to byte sized memory slow"
+msgstr "Considerar lent l'accés a la memòria de grandària octet"
+
+#: config/h8300/h8300.h:162
+msgid "Enable linker relaxing"
+msgstr "Activar la relaxació del enllaçador"
+
+#: config/h8300/h8300.h:164
+msgid "Generate H8/300H code"
+msgstr "Generar codi H8/300H"
+
+#: config/h8300/h8300.h:165
+msgid "Enable the normal mode"
+msgstr ""
+
+#: config/h8300/h8300.h:166
+msgid "Do not generate H8/300H code"
+msgstr "No generar codi H8/300H"
+
+#: config/h8300/h8300.h:167
+msgid "Use H8/300 alignment rules"
+msgstr "Usar regles d'alineació H8/300"
+
+#: config/i370/i370-c.c:53
+msgid "junk at end of #pragma map"
+msgstr "escombraries al final de #pragma map"
+
+#: config/i370/i370-c.c:59
+msgid "malformed #pragma map, ignored"
+msgstr "#pragma map malformat, ignorat"
+
+#: config/i370/i370.c:915
+msgid "real name is too long - alias ignored"
+msgstr "el nom real és massa llargària - s'ignora l'alies"
+
+#: config/i370/i370.c:920
+msgid "alias name is too long - alias ignored"
+msgstr "el nom d'alies és massa llargària - s'ignora l'alies"
+
+#: config/i370/i370.c:1191
+msgid "internal error--no jump follows compare:"
+msgstr "error intern--no hi ha salts a continuació de la comparança:"
+
+#. 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/i370/i370.h:75
+msgid "Generate char instructions"
+msgstr "Generar instruccions char"
+
+#: config/i370/i370.h:76
+msgid "Do not generate char instructions"
+msgstr "No generar instruccions char"
+
+#: config/i386/i386.c:1050
+#, c-format
+msgid "code model %s not supported in PIC mode"
+msgstr "el model de codi %s no té suport en el mode PIC"
+
+#: config/i386/i386.c:1060 config/sparc/sparc.c:356
+#, c-format
+msgid "bad value (%s) for -mcmodel= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mcmodel="
+
+#: config/i386/i386.c:1075
+#, c-format
+msgid "bad value (%s) for -masm= switch"
+msgstr "valor erroni (%s) per a l'interruptor -masm="
+
+#: config/i386/i386.c:1078
+#, c-format
+msgid "code model `%s' not supported in the %s bit mode"
+msgstr "el model de codi %s no té suport en el mode %s bit"
+
+#: config/i386/i386.c:1081
+msgid "code model `large' not supported yet"
+msgstr "el model de codi \"large\" not té suport"
+
+#: config/i386/i386.c:1083
+#, c-format
+msgid "%i-bit mode not compiled in"
+msgstr "no està compilat el mode %i-bit"
+
+#: config/i386/i386.c:1113
+#, c-format
+msgid "bad value (%s) for -march= switch"
+msgstr "valor erroni (%s) per a l'interruptor -march="
+
+#: config/i386/i386.c:1124
+#, c-format
+msgid "bad value (%s) for -mcpu= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mcpu="
+
+#: config/i386/i386.c:1141
+#, c-format
+msgid "-mregparm=%d is not between 0 and %d"
+msgstr "-mregparm=%d no està entre 0 i %d"
+
+#: config/i386/i386.c:1154
+msgid "-malign-loops is obsolete, use -falign-loops"
+msgstr "-malign-loops és obsolet, usi -falign-loops"
+
+#: config/i386/i386.c:1159 config/i386/i386.c:1172 config/i386/i386.c:1185
+#, c-format
+msgid "-malign-loops=%d is not between 0 and %d"
+msgstr "-malign-loops=%d no està entre 0 i %d"
+
+#: config/i386/i386.c:1167
+msgid "-malign-jumps is obsolete, use -falign-jumps"
+msgstr "-malign-jumps és obsolet, usi -falign-jumps"
+
+#: config/i386/i386.c:1180
+msgid "-malign-functions is obsolete, use -falign-functions"
+msgstr "-malign-functions és obsolet, usi -falign-functions"
+
+#: config/i386/i386.c:1218
+#, c-format
+msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
+msgstr "-mpreferred-stack-boundary=%d no està entre %d i 12"
+
+#: config/i386/i386.c:1230
+#, c-format
+msgid "-mbranch-cost=%d is not between 0 and 5"
+msgstr "-mbranch-cost=%d no està entre 0 i 5"
+
+#: config/i386/i386.c:1242
+#, c-format
+msgid "bad value (%s) for -mtls-dialect= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mtls-dialect="
+
+#: config/i386/i386.c:1263
+msgid "-malign-double makes no sense in the 64bit mode"
+msgstr "-malign-double no té sentit en el mode 64 bit"
+
+#: config/i386/i386.c:1265
+msgid "-mrtd calling convention not supported in the 64bit mode"
+msgstr "la convenció de cridades -mrtd no té suport en el mode 64 bit"
+
+#: config/i386/i386.c:1281 config/i386/i386.c:1292
+msgid "SSE instruction set disabled, using 387 arithmetics"
+msgstr "el conjunt d'instruccions SSE està desactivat, usant l'aritmètica 387"
+
+#: config/i386/i386.c:1297
+msgid "387 instruction set disabled, using SSE arithmetics"
+msgstr "el conjunt d'instruccions 387 està desactivat, usant l'aritmètica SSE"
+
+#: config/i386/i386.c:1304
+#, c-format
+msgid "bad value (%s) for -mfpmath= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mfpmath="
+
+#: config/i386/i386.c:1436
+#, c-format
+msgid "`%s' attribute requires an integer constant argument"
+msgstr "l'atribut \"%s\" requereix una constant entera com argument"
+
+#: config/i386/i386.c:1442
+#, c-format
+msgid "argument to `%s' attribute larger than %d"
+msgstr "l'argument per a l'atribut \"%s\" és més gran que %d"
+
+#: config/i386/i386.c:2504
+msgid "SSE vector return without SSE enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:6386
+msgid "invalid UNSPEC as operand"
+msgstr "UNSPEC invàlid com operant"
+
+#: config/i386/i386.c:6648
+msgid "extended registers have no high halves"
+msgstr "els registres estesos no tenen meitats superiors"
+
+#: config/i386/i386.c:6663
+msgid "unsupported operand size for extended register"
+msgstr "grandària d'operant sense suport per al registre estès"
+
+#: config/i386/i386.c:6978
+msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
+msgstr "l'operant no és una constant ni un codi de condició, codi d'operant \"c\" invàlid"
+
+#: config/i386/i386.c:7024
+#, c-format
+msgid "invalid operand code `%c'"
+msgstr "codi d'operant \"%c\" invàlid"
+
+#: config/i386/i386.c:7071
+msgid "invalid constraints for operand"
+msgstr "restriccions invàlides per a l'operant"
+
+#: config/i386/i386.c:11271
+msgid "unknown insn mode"
+msgstr "mode insn desconegut"
+
+#. @@@ better error message
+#: config/i386/i386.c:13391 config/i386/i386.c:13427
+msgid "selector must be an immediate"
+msgstr "el se-lector deu ser un immediat"
+
+#. @@@ better error message
+#: config/i386/i386.c:13588 config/i386/i386.c:13622
+msgid "mask must be an immediate"
+msgstr "la màscara deu ser un immediat"
+
+#: config/i386/i386.c:13654
+msgid "shift must be an immediate"
+msgstr "el desplaçament deu ser un immediat"
+
+#: config/i386/winnt.c:96
+#, c-format
+msgid "function `%s' definition is marked dllimport."
+msgstr "la definició de la funció \"%s\" està marcada com dllimport"
+
+#: config/i386/winnt.c:104
+#, c-format
+msgid "variable `%s' definition is marked dllimport."
+msgstr "la variable \"%s\" està marcada com dllimport"
+
+#: config/i386/winnt.c:123
+#, c-format
+msgid "external linkage required for symbol '%s' because of '%s' attribute."
+msgstr ""
+
+#: config/i386/winnt.c:143
+#, c-format
+msgid "`%s' attribute only applies to variables"
+msgstr "l'atribut \"%s\" solament aplica a variables"
+
+#: config/i386/winnt.c:242
+#, c-format
+msgid "function '%s' is defined after prior declaration as dllimport: attribute ignored."
+msgstr ""
+
+#: config/i386/winnt.c:252
+#, c-format
+msgid "inline function '%s' is declared as dllimport: attribute ignored."
+msgstr "la funció inline \"%s\" està declarada com dllimport: s'ignora l'atribut."
+
+#: config/i386/winnt.c:263
+#, c-format
+msgid "definition of static data member '%s' of dllimport'd class."
+msgstr ""
+
+#: config/i386/winnt.c:322
+#, c-format
+msgid "inconsistent dll linkage for '%s': dllexport assumed."
+msgstr ""
+
+#: config/i386/winnt.c:364
+#, c-format
+msgid "`%s' declared as both exported to and imported from a DLL"
+msgstr "\"%s\" és declarat com exportat a i importat d'una DLLal mateix temps"
+
+#: config/i386/winnt.c:373
+#, c-format
+msgid "failure in redeclaration of '%s': dllimport'd symbol lacks external linkage."
+msgstr ""
+
+#: config/i386/winnt.c:479
+#, c-format
+msgid "'%s' %s after being referenced with dllimport linkage."
+msgstr ""
+
+#: config/i386/cygwin.h:45
+msgid "Use the Cygwin interface"
+msgstr "Usar la interfície Cygwin"
+
+#: config/i386/cygwin.h:46
+msgid "Use the Mingw32 interface"
+msgstr "Usar la interfície Mingw32"
+
+#: config/i386/cygwin.h:47
+msgid "Create GUI application"
+msgstr "Crear una aplicació amb interfície gràfica d'usuari (GUI)"
+
+#: config/i386/cygwin.h:48
+msgid "Don't set Windows defines"
+msgstr "No establir les definicions de Windows"
+
+#: config/i386/cygwin.h:49
+msgid "Set Windows defines"
+msgstr "Establir les definicions de Windows"
+
+#: config/i386/cygwin.h:50
+msgid "Create console application"
+msgstr "Crear una aplicació de consola"
+
+#: config/i386/cygwin.h:51 config/i386/win32.h:59
+msgid "Generate code for a DLL"
+msgstr "Generar codi per a una DLL"
+
+#: config/i386/cygwin.h:53 config/i386/win32.h:61
+msgid "Ignore dllimport for functions"
+msgstr "Ignorar dllimport per a funcions"
+
+#: config/i386/cygwin.h:55
+msgid "Use Mingw-specific thread support"
+msgstr "Usar suport de fils específic de Mingw"
+
+#: config/i386/cygwin.h:245
+#, c-format
+msgid "-f%s ignored for target (all code is position independent)"
+msgstr "s'ignora -f%s per a l'objectiu (tot el codi és independent de posició)"
+
+#: config/i386/djgpp.h:206
+msgid "-mbnu210 is ignored (option is obsolete)"
+msgstr "s'ignora -mbnu210 (l'opció és obsoleta)."
+
+#. Deprecated.
+#. Deprecated.
+#. Deprecated.
+#. Deprecated.
+#. Deprecated.
+#. Deprecated.
+#: config/i386/i386.h:306
+msgid "Alternate calling convention"
+msgstr "Convenció de cridada alternativa"
+
+#: config/i386/i386.h:308 config/m68k/m68k.h:180 config/ns32k/ns32k.h:144
+msgid "Use normal calling convention"
+msgstr "Usar convenció de cridada normal"
+
+#: config/i386/i386.h:310
+msgid "Align some doubles on dword boundary"
+msgstr "Alinear alguns dobles en límits de dword"
+
+#: config/i386/i386.h:312
+msgid "Align doubles on word boundary"
+msgstr "Alinear dobles en límits de word"
+
+#: config/i386/i386.h:314
+msgid "Uninitialized locals in .bss"
+msgstr "Locals sense valors inicials en .bss"
+
+#: config/i386/i386.h:316
+msgid "Uninitialized locals in .data"
+msgstr "Locals sense valors inicials en .data"
+
+#: config/i386/i386.h:318 config/m68k/linux-aout.h:45 config/m68k/linux.h:50
+#: config/ns32k/ns32k.h:167
+msgid "Use IEEE math for fp comparisons"
+msgstr "Usar matemàtica IEEE per a comparances fp"
+
+#: config/i386/i386.h:320 config/ns32k/ns32k.h:169
+msgid "Do not use IEEE math for fp comparisons"
+msgstr "No usar matemàtica IEEE per a comparances fp"
+
+#: config/i386/i386.h:322
+msgid "Return values of functions in FPU registers"
+msgstr "Retornar valors de funcions en registres FPU"
+
+#: config/i386/i386.h:324
+msgid "Do not return values of functions in FPU registers"
+msgstr "No retornar valors de funcions en registres FPU"
+
+#: config/i386/i386.h:326
+msgid "Do not generate sin, cos, sqrt for FPU"
+msgstr "No generar sin, cos, sqrt per a FPU"
+
+#: config/i386/i386.h:328
+msgid "Generate sin, cos, sqrt for FPU"
+msgstr "Generar sin, cos, sqrt per a FPU"
+
+#: config/i386/i386.h:330
+msgid "Omit the frame pointer in leaf functions"
+msgstr "Ometre el marc de referència per a les funcions fulles"
+
+#: config/i386/i386.h:333
+msgid "Enable stack probing"
+msgstr "Habilitar la prova de la pila"
+
+#. undocumented
+#. undocumented
+#: config/i386/i386.h:338
+msgid "Align destination of the string operations"
+msgstr "Alinear destinació de les operacions de cadenes"
+
+#: config/i386/i386.h:340
+msgid "Do not align destination of the string operations"
+msgstr "No alinear destinació de les operacions de cadenes"
+
+#: config/i386/i386.h:342
+msgid "Inline all known string operations"
+msgstr "Convertir a inline totes les operacions de cadenes conegudes"
+
+#: config/i386/i386.h:344
+msgid "Do not inline all known string operations"
+msgstr "No convertir a inline totes les operacions de cadenes conegudes"
+
+#: config/i386/i386.h:346 config/i386/i386.h:350
+msgid "Use push instructions to save outgoing arguments"
+msgstr "Usar instruccions push per a guardar els arguments de sortida"
+
+#: config/i386/i386.h:348 config/i386/i386.h:352
+msgid "Do not use push instructions to save outgoing arguments"
+msgstr "No usar instruccions push per a guardar els arguments de sortida"
+
+#: config/i386/i386.h:354
+msgid "Support MMX built-in functions"
+msgstr "Donar suport per a funcions internes MMX"
+
+#: config/i386/i386.h:356
+msgid "Do not support MMX built-in functions"
+msgstr "No donar suport per a funcions internes MMX"
+
+#: config/i386/i386.h:358
+msgid "Support 3DNow! built-in functions"
+msgstr "Donar suport per a funcions internes 3DNow!"
+
+#: config/i386/i386.h:360
+msgid "Do not support 3DNow! built-in functions"
+msgstr "No donar suport per a funcions internes 3DNow!"
+
+#: config/i386/i386.h:362
+msgid "Support MMX and SSE built-in functions and code generation"
+msgstr "Donar suport per a funcions internes MMX i SSE"
+
+#: config/i386/i386.h:364
+msgid "Do not support MMX and SSE built-in functions and code generation"
+msgstr "No donar suport per a funcions internes MMX i SSE"
+
+#: config/i386/i386.h:366
+msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
+msgstr "Donar suport per a funcions internes MMX, SSE i SSE2"
+
+#: config/i386/i386.h:368
+msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation"
+msgstr "No donar suport per a funcions internes MMX, SSE i SSE2"
+
+#: config/i386/i386.h:370
+msgid "sizeof(long double) is 16"
+msgstr "sizeof(long double) és 16."
+
+#: config/i386/i386.h:372
+msgid "sizeof(long double) is 12"
+msgstr "sizeof(long double) és 12."
+
+#: config/i386/i386.h:374
+msgid "Generate 64bit x86-64 code"
+msgstr "Generar codi 64 bit per a x86-64"
+
+#: config/i386/i386.h:376
+msgid "Generate 32bit i386 code"
+msgstr "Generar codi 32 bit per a i386"
+
+#: config/i386/i386.h:378
+msgid "Use red-zone in the x86-64 code"
+msgstr "Usar red-zone en el codi x86-64"
+
+#: config/i386/i386.h:380
+msgid "Do not use red-zone in the x86-64 code"
+msgstr "No usar red-zone en el codi x86-64"
+
+#. This macro is similar to `TARGET_SWITCHES' but defines names of
+#. command options that have values. Its definition is an
+#. initializer with a subgrouping for each command option.
+#.
+#. Each subgrouping contains a string constant, that defines the
+#. fixed part of the option name, and the address of a variable. The
+#. variable, type `char *', is set to the variable part of the given
+#. option if the fixed part matches. The actual option name is made
+#. by appending `-m' to the specified name.
+#: config/i386/i386.h:409 config/rs6000/rs6000.h:393 config/sparc/sparc.h:635
+msgid "Schedule code for given CPU"
+msgstr "Codi de planificador per al CPU donat"
+
+#: config/i386/i386.h:411
+msgid "Generate floating point mathematics using given instruction set"
+msgstr "Generar matemàtiques de coma flotant usant el conjunt d'instruccions donat"
+
+#: config/i386/i386.h:413
+msgid "Generate code for given CPU"
+msgstr "Generar codi per al CPU donat"
+
+#: config/i386/i386.h:415
+msgid "Number of registers used to pass integer arguments"
+msgstr "Nombre de registres usats per a passar arguments enters"
+
+#. TARGET_DEFAULT is defined in sun*.h and isi.h, etc.
+#. This macro is similar to `TARGET_SWITCHES' but defines names of
+#. command options that have values. Its definition is an
+#. initializer with a subgrouping for each command option.
+#.
+#. Each subgrouping contains a string constant, that defines the
+#. fixed part of the option name, and the address of a variable. The
+#. variable, type `char *', is set to the variable part of the given
+#. option if the fixed part matches. The actual option name is made
+#. by appending `-m' to the specified name.
+#: config/i386/i386.h:417 config/m68k/m68k.h:263
+msgid "Loop code aligned to this power of 2"
+msgstr "El codi de cicle és alineat a aquesta potència de 2"
+
+#: config/i386/i386.h:419 config/m68k/m68k.h:265
+msgid "Jump targets are aligned to this power of 2"
+msgstr "Els objectius de salt són alineats a aquesta potència de 2"
+
+#: config/i386/i386.h:421 config/m68k/m68k.h:267
+msgid "Function starts are aligned to this power of 2"
+msgstr "Els inicis de les funcions són alineats a aquesta potència de 2"
+
+#: config/i386/i386.h:424
+msgid "Attempt to keep stack aligned to this power of 2"
+msgstr "Es tracta de mantenir la pila alineada a aquesta potència de 2"
+
+#: config/i386/i386.h:426
+msgid "Branches are this expensive (1-5, arbitrary units)"
+msgstr "Les ramificacions són així de cares (1-5, unitats arbitràries)"
+
+#: config/i386/i386.h:428
+msgid "Use given x86-64 code model"
+msgstr "Usar el mpdel de codi x86-64 donat"
+
+#. Undocumented.
+#. Undocumented.
+#: config/i386/i386.h:434
+msgid "Use given assembler dialect"
+msgstr "Usar el dialecte del ensemblador donat"
+
+#: config/i386/i386.h:436
+msgid "Use given thread-local storage dialect"
+msgstr "Usar el dialecte d'emmagatzematge thread-local donat"
+
+#: config/i386/sco5.h:297
+msgid "Generate ELF output"
+msgstr "Generar sortida ELF"
+
+#: config/i386/win32.h:53
+msgid "Use Mingw32 interface"
+msgstr "Usar la interfície Mingw32"
+
+#: config/i386/win32.h:55
+msgid "Use Cygwin interface"
+msgstr "Usar la interfície Cygwin"
+
+#: config/i386/win32.h:57
+msgid "Use bare Windows interface"
+msgstr "Usar la interfície nua Windows"
+
+#. 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:71
+msgid "environment variable DJGPP not defined"
+msgstr "no es va definir la variable d'ambient DJGPP"
+
+#: config/i386/xm-djgpp.h:73
+#, c-format
+msgid "environment variable DJGPP points to missing file '%s'"
+msgstr "la variable d'ambient DJGPP apunta al fitxer faltant\"%s\""
+
+#: config/i386/xm-djgpp.h:76
+#, c-format
+msgid "environment variable DJGPP points to corrupt file '%s'"
+msgstr "la variable d'ambient DJGPP apunta al fitxer corrupte \"%s\""
+
+#: config/i960/i960-c.c:66
+msgid "sorry, not implemented: #pragma align NAME=SIZE"
+msgstr "disculpi, no s'ha implementar: #pragma align NAME=SIZE"
+
+#: config/i960/i960-c.c:71
+msgid "malformed #pragma align - ignored"
+msgstr "#pragma align mal format - ignorat"
+
+#: config/i960/i960-c.c:109
+msgid "sorry, not implemented: #pragma noalign NAME"
+msgstr "disculpi, no s'ha implementat: #pragma noalign NAME"
+
+#: config/i960/i960.c:121 config/i960/i960.c:131
+msgid "conflicting architectures defined - using C series"
+msgstr "es van definir arquitectures en conflicte - usant les sèries C"
+
+#: config/i960/i960.c:126
+msgid "conflicting architectures defined - using K series"
+msgstr "es van definir arquitectures en conflicte - usant les sèries K"
+
+#: config/i960/i960.c:141
+msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
+msgstr "iC2.0 i iC3.0 són incompatibles - usant iC3.0"
+
+#: config/i960/i960.c:1448 config/m68k/m68k.c:559 config/rs6000/rs6000.c:9976
+msgid "stack limit expression is not supported"
+msgstr "no es dóna suport a l'expressió del límit de la pila"
+
+#. 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.
+#. ??? 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:240
+msgid "Generate SA code"
+msgstr "Generar codi SA"
+
+#: config/i960/i960.h:243
+msgid "Generate SB code"
+msgstr "Generar codi SB"
+
+#. {"sc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate SC code")},
+#: config/i960/i960.h:248
+msgid "Generate KA code"
+msgstr "Generar codi KA"
+
+#: config/i960/i960.h:251
+msgid "Generate KB code"
+msgstr "Generar codi KB"
+
+#. {"kc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate KC code")},
+#: config/i960/i960.h:256
+msgid "Generate JA code"
+msgstr "Generar codi JA"
+
+#: config/i960/i960.h:258
+msgid "Generate JD code"
+msgstr "Generar codi JD"
+
+#: config/i960/i960.h:261
+msgid "Generate JF code"
+msgstr "Generar codi JF"
+
+#: config/i960/i960.h:263
+msgid "generate RP code"
+msgstr "generar codi RP"
+
+#: config/i960/i960.h:266
+msgid "Generate MC code"
+msgstr "Generar codi MC"
+
+#: config/i960/i960.h:269
+msgid "Generate CA code"
+msgstr "Generar codi CA"
+
+#. {"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:279
+msgid "Generate CF code"
+msgstr "Generar codi CF"
+
+#: config/i960/i960.h:283 config/mips/mips.h:568 config/pa/pa.h:266
+msgid "Use software floating point"
+msgstr "Usar coma flotant de programari"
+
+#: config/i960/i960.h:285
+msgid "Use alternate leaf function entries"
+msgstr "Usar entrades de funció fulles alternades"
+
+#: config/i960/i960.h:287
+msgid "Do not use alternate leaf function entries"
+msgstr "No usar entrades de funció fulles alternades"
+
+#: config/i960/i960.h:289
+msgid "Perform tail call optimization"
+msgstr "Realitzar optimització de la cridada de l'extrem"
+
+#: config/i960/i960.h:291
+msgid "Do not perform tail call optimization"
+msgstr "No realitzar optimització de la cridada de l'extrem"
+
+#: config/i960/i960.h:293
+msgid "Use complex addressing modes"
+msgstr "Usar maneres de adreçament complexos"
+
+#: config/i960/i960.h:295
+msgid "Do not use complex addressing modes"
+msgstr "No usar maneres de adreçament complexos"
+
+#: config/i960/i960.h:297
+msgid "Align code to 8 byte boundary"
+msgstr "Alinear el codi a límits de 8 octet"
+
+#: config/i960/i960.h:299
+msgid "Do not align code to 8 byte boundary"
+msgstr "No alinear el codi a límits de 8 octet"
+
+#. {"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:305 config/i960/i960.h:307
+msgid "Enable compatibility with iC960 v2.0"
+msgstr "Activar la compatibilitat amb iC960 v2.0"
+
+#: config/i960/i960.h:309
+msgid "Enable compatibility with iC960 v3.0"
+msgstr "Activar la compatibilitat amb iC960 v3.0"
+
+#: config/i960/i960.h:311 config/i960/i960.h:313
+msgid "Enable compatibility with ic960 assembler"
+msgstr "Activar la compatibilitat amb el assemblador ic960"
+
+#: config/i960/i960.h:315
+msgid "Do not permit unaligned accesses"
+msgstr "No permetre accessos sense alinear"
+
+#: config/i960/i960.h:317
+msgid "Permit unaligned accesses"
+msgstr "Permetre accessos sense alinear"
+
+#: config/i960/i960.h:319
+msgid "Layout types like Intel's v1.3 gcc"
+msgstr "Presentar tipus com en el gcc v1.3 de Intel"
+
+#: config/i960/i960.h:321
+msgid "Do not layout types like Intel's v1.3 gcc"
+msgstr "No presentar tipus com en el gcc v1.3 de Intel"
+
+#: config/i960/i960.h:323 config/sparc/freebsd.h:80 config/sparc/linux.h:86
+#: config/sparc/linux64.h:88 config/sparc/netbsd-elf.h:238
+msgid "Use 64 bit long doubles"
+msgstr "Usar long doubles de 64 bit"
+
+#: config/i960/i960.h:325
+msgid "Enable linker relaxation"
+msgstr "Activar la relaxació del enllaçador"
+
+#: config/i960/i960.h:327
+msgid "Do not enable linker relaxation"
+msgstr "Desactivar la relaxació del enllaçador"
+
+#: config/ia64/ia64-c.c:51
+msgid "malformed #pragma builtin"
+msgstr "secció #pragma builtin malformada"
+
+#: config/ia64/ia64.c:4015
+msgid "ia64_print_operand: unknown code"
+msgstr "ia64_print_operand: codi desconegut"
+
+#: config/ia64/ia64.c:4292
+msgid "value of -mfixed-range must have form REG1-REG2"
+msgstr "el valor de -mfixed-range deu ser de la forma REG1-REG2"
+
+#: config/ia64/ia64.c:4319
+#, c-format
+msgid "%s-%s is an empty range"
+msgstr "%s-%s és un rang buit"
+
+#: config/ia64/ia64.c:4350
+msgid "cannot optimize floating point division for both latency and throughput"
+msgstr "no es pot optimitzar la divisió de coma flotant per a latència i sortida al mateix temps"
+
+#: config/ia64/ia64.c:4356
+msgid "cannot optimize integer division for both latency and throughput"
+msgstr "no es pot optimitzar la divisió entera per a latència i sortida al mateix temps"
+
+#: config/ia64/ia64.c:4368
+#, c-format
+msgid "bad value (%s) for -mtls-size= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mtls-size="
+
+#. This macro defines names of command options to set and clear bits in
+#. `target_flags'. Its definition is an initializer with a subgrouping for
+#. each command option.
+#: config/ia64/ia64.h:154
+msgid "Generate big endian code"
+msgstr "Generar codi big endian"
+
+#: config/ia64/ia64.h:156 config/mcore/mcore.h:159
+msgid "Generate little endian code"
+msgstr "Generar codi little endian"
+
+#: config/ia64/ia64.h:158
+msgid "Generate code for GNU as"
+msgstr "Generar codi com de GNU"
+
+#: config/ia64/ia64.h:160
+msgid "Generate code for Intel as"
+msgstr "Generar codi com de Intel"
+
+#: config/ia64/ia64.h:162
+msgid "Generate code for GNU ld"
+msgstr "Generar codi per a ld de GNU"
+
+#: config/ia64/ia64.h:164
+msgid "Generate code for Intel ld"
+msgstr "Generar codi per a ld de Intel"
+
+#: config/ia64/ia64.h:166
+msgid "Generate code without GP reg"
+msgstr "Generar codi sense registre GP"
+
+#: config/ia64/ia64.h:168
+msgid "Emit stop bits before and after volatile extended asms"
+msgstr "Emetre bits de desocupada abans i després de asms estesos amb volatile"
+
+#: config/ia64/ia64.h:170
+msgid "Don't emit stop bits before and after volatile extended asms"
+msgstr "No emetre bits de desocupada abans i després de asmsestesos amb volatile"
+
+#: config/ia64/ia64.h:172
+msgid "Emit code for Itanium (TM) processor B step"
+msgstr "Emetre codi per a Itanium (TM) processador de pas B"
+
+#: config/ia64/ia64.h:174
+msgid "Use in/loc/out register names"
+msgstr "Usar noms de registre in/loc/out"
+
+#: config/ia64/ia64.h:176
+msgid "Disable use of sdata/scommon/sbss"
+msgstr "Desactivar l'ús de sdata/scommon/sbss"
+
+#: config/ia64/ia64.h:178
+msgid "Enable use of sdata/scommon/sbss"
+msgstr "Activar l'ús de sdata/scommon/sbss"
+
+#: config/ia64/ia64.h:180
+msgid "gp is constant (but save/restore gp on indirect calls)"
+msgstr "gp és constant (però hi ha save/restore de gp en cridades indirectes)"
+
+#: config/ia64/ia64.h:182
+msgid "Generate self-relocatable code"
+msgstr "Generar codi self-relocatable"
+
+#: config/ia64/ia64.h:184
+msgid "Generate inline floating point division, optimize for latency"
+msgstr "Generar divisió de coma flotant inline, optimitzada per a latència"
+
+#: config/ia64/ia64.h:186
+msgid "Generate inline floating point division, optimize for throughput"
+msgstr "Generar divisió de coma flotant inline, optimitzada per a sortida"
+
+#: config/ia64/ia64.h:188
+msgid "Generate inline integer division, optimize for latency"
+msgstr "Generar divisió entera inline, optimitzada per a latència"
+
+#: config/ia64/ia64.h:190
+msgid "Generate inline integer division, optimize for throughput"
+msgstr "Generar divisió entera inline, optimitzada per a sortida"
+
+#: config/ia64/ia64.h:192
+msgid "Enable Dwarf 2 line debug info via GNU as"
+msgstr "Activar la informació de la línia de depuració Dwarf2 a través com de GNU"
+
+#: config/ia64/ia64.h:194
+msgid "Disable Dwarf 2 line debug info via GNU as"
+msgstr "Desactivar la informació de la línia de depuració Dwarf 2 a través com de GNU"
+
+#: config/ia64/ia64.h:223
+msgid "Specify range of registers to make fixed"
+msgstr "Especifica el rang de registres a convertir en fixos"
+
+#: config/ip2k/ip2k.c:1090
+msgid "bad operand"
+msgstr "operant invàlid"
+
+#: config/m32r/m32r.c:139
+#, c-format
+msgid "bad value (%s) for -mmodel switch"
+msgstr "valor erroni (%s) per a l'interruptor -mmodel"
+
+#: config/m32r/m32r.c:148
+#, c-format
+msgid "bad value (%s) for -msdata switch"
+msgstr "valor erroni (%s) per a l'interruptor -msdata"
+
+#: config/m32r/m32r.c:319
+#, c-format
+msgid "invalid argument of `%s' attribute"
+msgstr "invàlid argument per a l'atribut \"%s\""
+
+#: config/m32r/m32r.c:422
+msgid "const objects cannot go in .sdata/.sbss"
+msgstr "els objectes cons no poden anar a .sdata/.sbss"
+
+#: config/m32r/m32r.c:2256
+#, c-format
+msgid "invalid operand to %%s code"
+msgstr "invàlid operand per al codi %%s"
+
+#: config/m32r/m32r.c:2263
+#, c-format
+msgid "invalid operand to %%p code"
+msgstr "invàlid operand per al codi %%p"
+
+#: config/m32r/m32r.c:2318
+msgid "bad insn for 'A'"
+msgstr "insn erroni per a \"A\""
+
+#: config/m32r/m32r.c:2370
+#, c-format
+msgid "invalid operand to %%T/%%B code"
+msgstr "invàlid operand per al codi %%T/%%B"
+
+#: config/m32r/m32r.c:2393
+#, c-format
+msgid "invalid operand to %%N code"
+msgstr "invàlid operand per al codi %%N"
+
+#: config/m32r/m32r.c:2438
+msgid "pre-increment address is not a register"
+msgstr "l'adreça de pre-increment no és un registre"
+
+#: config/m32r/m32r.c:2445
+msgid "pre-decrement address is not a register"
+msgstr "l'adreça de pre-decrement no és un registre"
+
+#: config/m32r/m32r.c:2452
+msgid "post-increment address is not a register"
+msgstr "l'adreça de post-increment no és un registre"
+
+#: config/m32r/m32r.c:2530 config/m32r/m32r.c:2546
+#: config/rs6000/rs6000.c:12802
+msgid "bad address"
+msgstr "adreça erroni"
+
+#: config/m32r/m32r.c:2551
+msgid "lo_sum not of register"
+msgstr "lo_sum no és un registre"
+
+#. { "relax", TARGET_RELAX_MASK, "" }, { "no-relax", -TARGET_RELAX_MASK, "" },
+#: config/m32r/m32r.h:241
+msgid "Display compile time statistics"
+msgstr "Mostrar estadístiques de tepms de compilació"
+
+#: config/m32r/m32r.h:243
+msgid "Align all loops to 32 byte boundary"
+msgstr "Alinear tots els cicles al límit de 32 octet"
+
+#: config/m32r/m32r.h:246
+msgid "Only issue one instruction per cycle"
+msgstr "Només executar una instrucció per cicle"
+
+#: config/m32r/m32r.h:249
+msgid "Prefer branches over conditional execution"
+msgstr "Preferir les branques sobre l'execució condicional"
+
+#: config/m32r/m32r.h:265
+msgid "Code size: small, medium or large"
+msgstr "Grandària del codi: small, medium o large"
+
+#: config/m32r/m32r.h:267
+msgid "Small data area: none, sdata, use"
+msgstr " Àrea de dades small: none, sdata, use"
+
+#: config/m68hc11/m68hc11.c:242
+#, c-format
+msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
+msgstr "s'ignora -f%s per a 68HC11/68HC12 (sense suport)"
+
+#: config/m68hc11/m68hc11.c:1305
+msgid "`trap' and `far' attributes are not compatible, ignoring `far'"
+msgstr ""
+
+#: config/m68hc11/m68hc11.c:1311
+msgid "`trap' attribute is already used"
+msgstr "l'atribut \"trap\" ja està en ús"
+
+#. !!!! SCz wrong here.
+#: config/m68hc11/m68hc11.c:3327 config/m68hc11/m68hc11.c:3733
+msgid "move insn not handled"
+msgstr "no es maneja move insn"
+
+#: config/m68hc11/m68hc11.c:3579 config/m68hc11/m68hc11.c:3663
+#: config/m68hc11/m68hc11.c:3946
+msgid "invalid register in the move instruction"
+msgstr "registre invàlid en la instrucció move"
+
+#: config/m68hc11/m68hc11.c:3613
+msgid "invalid operand in the instruction"
+msgstr "operant invàlid en la instrucció"
+
+#: config/m68hc11/m68hc11.c:3920
+msgid "invalid register in the instruction"
+msgstr "registre invàlid en la instrucció"
+
+#: config/m68hc11/m68hc11.c:3953
+msgid "operand 1 must be a hard register"
+msgstr "l'operant 1 deu ser un registre fix"
+
+#: config/m68hc11/m68hc11.c:3970
+msgid "invalid rotate insn"
+msgstr "rotació de insn invàlida"
+
+#: config/m68hc11/m68hc11.c:4391
+msgid "registers IX, IY and Z used in the same INSN"
+msgstr "es van usar els registres IX, IY i Z en el mateix INSN"
+
+#: config/m68hc11/m68hc11.c:4728 config/m68hc11/m68hc11.c:5031
+msgid "cannot do z-register replacement"
+msgstr "no es pot reemplaçar el registre-z"
+
+#: config/m68hc11/m68hc11.c:5094
+msgid "invalid Z register replacement for insn"
+msgstr "reemplaçament de registre Z invàlid per al insn"
+
+#. 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/m68hc11/m68hc11.h:172
+msgid "Compile with 16-bit integer mode"
+msgstr "Compilar amb el mode enter de 16-bit"
+
+#: config/m68hc11/m68hc11.h:174
+msgid "Compile with 32-bit integer mode"
+msgstr "Compilar amb el mode enter de 32-bit"
+
+#: config/m68hc11/m68hc11.h:176
+msgid "Auto pre/post decrement increment allowed"
+msgstr "Es permet el pre/post decrement increment automatic"
+
+#: config/m68hc11/m68hc11.h:178
+msgid "Auto pre/post decrement increment not allowed"
+msgstr "No es permet el pre/post decrement increment automatic"
+
+#: config/m68hc11/m68hc11.h:180
+msgid "Min/max instructions allowed"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:182
+msgid "Min/max instructions not allowed"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:184
+msgid "Use call and rtc for function calls and returns"
+msgstr "Usar call i rtc per a cridades i devolucions de funció"
+
+#: config/m68hc11/m68hc11.h:186
+msgid "Use jsr and rts for function calls and returns"
+msgstr "Usar jsr i rts per a cridades i devolucions de funció"
+
+#: config/m68hc11/m68hc11.h:188
+msgid "Do not use direct addressing mode for soft registers"
+msgstr "No usar el mode d'adreçament direct per a registres soft"
+
+#: config/m68hc11/m68hc11.h:190
+msgid "Use direct addressing mode for soft registers"
+msgstr "Usar el mode d'adreçament direct per a registres soft"
+
+#: config/m68hc11/m68hc11.h:192 config/m68hc11/m68hc11.h:198
+msgid "Compile for a 68HC11"
+msgstr "Compilar per a un 68HC11"
+
+#: config/m68hc11/m68hc11.h:194 config/m68hc11/m68hc11.h:200
+msgid "Compile for a 68HC12"
+msgstr "Compilar per a un 68HC12"
+
+#: config/m68hc11/m68hc11.h:196 config/m68hc11/m68hc11.h:202
+msgid "Compile for a 68HCS12"
+msgstr "Compilar per a un 68HCS12"
+
+#. This macro is similar to `TARGET_SWITCHES' but defines names of
+#. command options that have values. Its definition is an
+#. initializer with a subgrouping for each command option.
+#.
+#. Each subgrouping contains a string constant, that defines the
+#. fixed part of the option name, and the address of a variable. The
+#. variable, type `char *', is set to the variable part of the given
+#. option if the fixed part matches. The actual option name is made
+#. by appending `-m' to the specified name.
+#: config/m68hc11/m68hc11.h:216
+msgid "Specify the register allocation order"
+msgstr "Especificar l'ordre d'assignació de registres"
+
+#: config/m68hc11/m68hc11.h:218
+msgid "Indicate the number of soft registers available"
+msgstr "Indicar el nombre de registres suaus disponibles"
+
+#: config/m68k/m68k.c:158
+#, c-format
+msgid "-malign-loops=%d is not between 1 and %d"
+msgstr "-malign-loops=%d no és entre 1 i %d"
+
+#: config/m68k/m68k.c:169
+#, c-format
+msgid "-malign-jumps=%d is not between 1 and %d"
+msgstr "-malign-jumps=%d no és entre 1 i %d"
+
+#: config/m68k/m68k.c:180
+#, c-format
+msgid "-malign-functions=%d is not between 1 and %d"
+msgstr "-malign-functions=%d no és entre 1 i %d"
+
+#: config/m68k/m68k.c:189
+msgid "-fPIC is not currently supported on the 68000 or 68010\n"
+msgstr " -fPIC actualment no té suport en el 68000 o 68010\n"
+
+#. 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/m68k/m68k.h:162 config/m68k/m68k.h:164
+msgid "Generate code for a 68020"
+msgstr "Generar codi per a un 68020"
+
+#: config/m68k/m68k.h:169 config/m68k/m68k.h:172
+msgid "Generate code for a 68000"
+msgstr "Generar codi per a un 68000"
+
+#: config/m68k/m68k.h:174
+msgid "Use the bit-field instructions"
+msgstr "Usar instruccions de camps de bit"
+
+#: config/m68k/m68k.h:176
+msgid "Do not use the bit-field instructions"
+msgstr "No usar instruccions de camps de bit"
+
+#: config/m68k/m68k.h:178
+msgid "Use different calling convention using 'rtd'"
+msgstr "Usar la convenció de cridada diferent usant 'rtd'"
+
+#: config/m68k/m68k.h:182
+msgid "Consider type `int' to be 16 bits wide"
+msgstr "Considerar que el tipus \"int\" és de 16 bits d'amplària"
+
+#: config/m68k/m68k.h:184
+msgid "Consider type `int' to be 32 bits wide"
+msgstr "Considerar que el tipus \"int\" és de 32 bits d'amplària"
+
+#: config/m68k/m68k.h:186
+msgid "Generate code for a Sun FPA"
+msgstr "Generar codi per a un Sun FPA"
+
+#: config/m68k/m68k.h:189
+msgid "Do not generate code for a Sun FPA"
+msgstr "No generar codi per a un Sun FPA"
+
+#: config/m68k/m68k.h:191 config/m68k/m68k.h:193
+msgid "Generate code for a Sun Sky board"
+msgstr "Generar codi per a un Sun Sky board"
+
+#: config/m68k/m68k.h:195
+msgid "Do not use Sky linkage convention"
+msgstr "No usar la convenció d'enllaç Sky"
+
+#: config/m68k/m68k.h:197
+msgid "Generate code for a 68881"
+msgstr "Generar codi per a un 68881"
+
+#: config/m68k/m68k.h:200
+msgid "Generate code with library calls for floating point"
+msgstr "Generar codi amb cridades a biblioteques per a coma flotant"
+
+#: config/m68k/m68k.h:202
+msgid "Generate code for a 68040, without any new instructions"
+msgstr "Generar codi per a un 68040, sense cap instrucció nova"
+
+#: config/m68k/m68k.h:205
+msgid "Generate code for a 68060, without any new instructions"
+msgstr "Generar codi per a un 68060, sense cap instrucció nova"
+
+#: config/m68k/m68k.h:209
+msgid "Generate code for a 68030"
+msgstr "Generar codi per a un 68030"
+
+#: config/m68k/m68k.h:212
+msgid "Generate code for a 68040"
+msgstr "Generar codi per a un 68040"
+
+#: config/m68k/m68k.h:216
+msgid "Generate code for a 68060"
+msgstr "Generar codi per a un 68060"
+
+#: config/m68k/m68k.h:221
+msgid "Generate code for a 520X"
+msgstr "Generar codi per a un 520X"
+
+#: config/m68k/m68k.h:224
+msgid "Generate code for a 68851"
+msgstr "Generar codi per a un 68851"
+
+#: config/m68k/m68k.h:226
+msgid "Do no generate code for a 68851"
+msgstr "No generar codi per a un 68851"
+
+#: config/m68k/m68k.h:229
+msgid "Generate code for a 68302"
+msgstr "Generar codi per a un 68302"
+
+#: config/m68k/m68k.h:232
+msgid "Generate code for a 68332"
+msgstr "Generar codi per a un 68332"
+
+#: config/m68k/m68k.h:236
+msgid "Generate code for a cpu32"
+msgstr "Generar codi per a un cpu32"
+
+#: config/m68k/m68k.h:239
+msgid "Align variables on a 32-bit boundary"
+msgstr "Alinear les variables en un límit de 32-bit"
+
+#: config/m68k/m68k.h:241
+msgid "Align variables on a 16-bit boundary"
+msgstr "Alinear les variables en un límit de 16-bit"
+
+#: config/m68k/m68k.h:243
+msgid "Generate pc-relative code"
+msgstr "Generar codi relatiu al pc"
+
+#: config/m68k/m68k.h:245
+msgid "Do not use unaligned memory references"
+msgstr "No permetre referències a memòria sense alinear"
+
+#: config/m68k/m68k.h:247
+msgid "Use unaligned memory references"
+msgstr "Usar referències a memòria sense alinear"
+
+#: config/m88k/m88k.c:903
+#, c-format
+msgid "internal gcc monitor: short-branch(%x)"
+msgstr "monitor intern de gcc: short-branch(%x)"
+
+#: config/m88k/m88k.c:2302
+msgid "internal gcc error: Can't express symbolic location"
+msgstr "error intern de gcc: No es pot expressar la ubicació simbòlica"
+
+#: config/m88k/m88k.c:2517
+#, c-format
+msgid "argument #%d is a structure"
+msgstr "l'argument #%d és una estructura"
+
+#: config/m88k/m88k.c:2816
+#, c-format
+msgid "%%R not followed by %%B/C/D/E"
+msgstr "%%R no és seguit per %%B/C/D/E"
+
+#: config/m88k/m88k.c:2884
+#, c-format
+msgid "invalid %%x/X value"
+msgstr "valor invàlid per a %%x/X"
+
+#: config/m88k/m88k.c:2901
+#, c-format
+msgid "invalid %%Q value"
+msgstr "valor %%Q invàlid"
+
+#: config/m88k/m88k.c:2907 config/rs6000/rs6000.c:7718
+#, c-format
+msgid "invalid %%q value"
+msgstr "valor invàlid per a %%q"
+
+#: config/m88k/m88k.c:2913
+#, c-format
+msgid "invalid %%o value"
+msgstr "valor invàlid per a %%o"
+
+#: config/m88k/m88k.c:2920 config/rs6000/rs6000.c:7681
+#, c-format
+msgid "invalid %%p value"
+msgstr "valor invàlid per a %%p"
+
+#: config/m88k/m88k.c:2933 config/m88k/m88k.c:2938
+#, c-format
+msgid "invalid %%s/S value"
+msgstr "valor invàlid per a %%s/S"
+
+#: config/m88k/m88k.c:2949
+#, c-format
+msgid "invalid %%P operand"
+msgstr "operand invàlid per a %%P"
+
+#: config/m88k/m88k.c:2980 config/romp/romp.c:690
+#, c-format
+msgid "invalid %%B value"
+msgstr "valor invàlid per a %%B"
+
+#: config/m88k/m88k.c:3010
+#, c-format
+msgid "invalid %%D value"
+msgstr "valor invàlid per a %%D"
+
+#: config/m88k/m88k.c:3023
+#, c-format
+msgid "`%%d' operand isn't a register"
+msgstr "l'operand \"%%d\" no és un registre"
+
+#: config/m88k/m88k.c:3041
+msgid "operand is r0"
+msgstr "l'operand és r0"
+
+#: config/m88k/m88k.c:3055
+msgid "operand is const_double"
+msgstr "l'operand és const_double"
+
+#: config/m88k/m88k.c:3074
+msgid "invalid code"
+msgstr "codi invàlid"
+
+#. Do any checking or such that is needed after processing the -m switches.
+#: config/m88k/m88k.h:277
+msgid "-mtrap-large-shift and -mhandle-large-shift are incompatible"
+msgstr "-mtrap-large-shift i -mhandle-large-shift no són compatibles"
+
+#: config/m88k/m88k.h:299
+#, c-format
+msgid "invalid option `-mshort-data-%s'"
+msgstr "opció invàlida \"-mshort-data-%s\""
+
+#: config/m88k/m88k.h:304
+#, c-format
+msgid "-mshort-data-%s is too large "
+msgstr "-mshort-data-%s és massa gran"
+
+#: config/m88k/m88k.h:306
+#, c-format
+msgid "-mshort-data-%s and PIC are incompatible"
+msgstr "-mshort-data-%s i PIC són incompatibles"
+
+#: config/mcore/mcore.c:3078
+#, c-format
+msgid "invalid option `-mstack-increment=%s'"
+msgstr "opció invàlida \"-mstack-increment=%s\""
+
+#: config/mcore/mcore.h:126
+msgid "Inline constants if it can be done in 2 insns or less"
+msgstr "Constants inline si poden ser fetes en 2 insns o menys"
+
+#: config/mcore/mcore.h:128
+msgid "Inline constants if it only takes 1 instruction"
+msgstr "Constants inline si només prenen 1 instrucció"
+
+#: config/mcore/mcore.h:130
+msgid "Set maximum alignment to 4"
+msgstr "Establir l'alineació màxima a 4"
+
+#: config/mcore/mcore.h:132
+msgid "Set maximum alignment to 8"
+msgstr "Establir l'alineació màxima a 8"
+
+#: config/mcore/mcore.h:136
+msgid "Do not use the divide instruction"
+msgstr "No usar la instrucció divideix"
+
+#: config/mcore/mcore.h:140
+msgid "Do not arbitrary sized immediates in bit operations"
+msgstr "No intervenir en immediats de grandàries arbitràries en operacions de bit"
+
+#: config/mcore/mcore.h:142
+msgid "Always treat bit-field as int-sized"
+msgstr "Tractar sempre als camps de bit com de grandària int"
+
+#: config/mcore/mcore.h:146
+msgid "Force functions to be aligned to a 4 byte boundary"
+msgstr "Forçar que les funcions s'alineïn a un límit de 4 octet"
+
+#: config/mcore/mcore.h:148
+msgid "Force functions to be aligned to a 2 byte boundary"
+msgstr "Forçar que les funcions s'alineïn a un límit de 2 octet"
+
+#: config/mcore/mcore.h:150
+msgid "Emit call graph information"
+msgstr "Emetre informació de graf de cridades"
+
+#: config/mcore/mcore.h:154
+msgid "Prefer word accesses over byte accesses"
+msgstr "Preferir accessos word sobre accés octet"
+
+#: config/mcore/mcore.h:165
+msgid "Generate code for the M*Core M340"
+msgstr "Generar codi per a M*Core M340"
+
+#: config/mcore/mcore.h:178
+msgid "Maximum amount for a single stack increment operation"
+msgstr "Quantitat màxima per a una sola operació d'increment de pila"
+
+#: config/mips/mips.c:5128
+#, c-format
+msgid "bad value (%s) for -mabi= switch"
+msgstr "valor erroni (%s) per a l'interruptor -mabi="
+
+#: config/mips/mips.c:5158
+#, c-format
+msgid "-mips%d conflicts with the other architecture options, which specify a MIPS%d processor"
+msgstr ""
+
+#: config/mips/mips.c:5165
+#, c-format
+msgid "bad value (%s) for -mips switch"
+msgstr "valor erroni (%s) per a l'interruptor -mips"
+
+#: config/mips/mips.c:5180
+#, c-format
+msgid "-march=%s is not compatible with the selected ABI"
+msgstr ""
+
+#: config/mips/mips.c:5192
+msgid "-mgp64 used with a 32-bit processor"
+msgstr ""
+
+#: config/mips/mips.c:5194
+msgid "-mgp32 used with a 64-bit ABI"
+msgstr "s'utilitza -mgp32 amb una ABI de 64-bit"
+
+#: config/mips/mips.c:5196
+msgid "-mgp64 used with a 32-bit ABI"
+msgstr "s'utilitza -mgp64 amb una ABI de 32-bit"
+
+#: config/mips/mips.c:5214 config/mips/mips.c:5216 config/mips/mips.c:5218
+#, c-format
+msgid "unsupported combination: %s"
+msgstr "combinació sense suport: %s"
+
+#: config/mips/mips.c:5288
+msgid "generation of Branch Likely instructions enabled, but not supported by architecture"
+msgstr ""
+
+#: config/mips/mips.c:5299
+msgid "-G is incompatible with PIC code which is the default"
+msgstr "-G és incompatible amb el codi PIC el qual és per omissió"
+
+#: config/mips/mips.c:5315
+msgid "-membedded-pic and -mabicalls are incompatible"
+msgstr "-membedded-pic i -mabicalls són incompatibles"
+
+#: config/mips/mips.c:5318
+msgid "-G and -membedded-pic are incompatible"
+msgstr "-G i -membedded-pic són incompatibles"
+
+#: config/mips/mips.c:5369
+#, c-format
+msgid "invalid option `entry%s'"
+msgstr "opció invàlid \"entry%s\""
+
+#: config/mips/mips.c:5372
+msgid "-mentry is only meaningful with -mips-16"
+msgstr "-mentry només té significat amb -mips-16"
+
+#: config/mips/mips.c:5781
+#, c-format
+msgid "internal error: %%) found without a %%( in assembler pattern"
+msgstr "error intern: es va trobar %%) sense un %%( en el patró del ensemblador"
+
+#: config/mips/mips.c:5795
+#, c-format
+msgid "internal error: %%] found without a %%[ in assembler pattern"
+msgstr "error intern: es va trobar %%] sense un %%[ en el patró del ensemblador"
+
+#: config/mips/mips.c:5808
+#, c-format
+msgid "internal error: %%> found without a %%< in assembler pattern"
+msgstr "error intern: es va trobar %%> sense un %%< en el patró del ensemblador"
+
+#: config/mips/mips.c:5821
+#, c-format
+msgid "internal error: %%} found without a %%{ in assembler pattern"
+msgstr "error intern: es va trobar %%} sense un %%{ en el patró del ensemblador"
+
+#: config/mips/mips.c:5835
+#, c-format
+msgid "PRINT_OPERAND: unknown punctuation '%c'"
+msgstr "PRINT_OPERAND: puntuació desconeguda \"%c\""
+
+#: config/mips/mips.c:5844 config/xtensa/xtensa.c:1939
+msgid "PRINT_OPERAND null pointer"
+msgstr "PRINT_OPERAND punter nul"
+
+#: config/mips/mips.c:5975
+#, c-format
+msgid "invalid use of %%d, %%x, or %%X"
+msgstr "ùs invàlid de %%d, %%x, o %%X"
+
+#: config/mips/mips.c:6013 config/xtensa/xtensa.c:2033
+msgid "PRINT_OPERAND_ADDRESS, null pointer"
+msgstr "PRINT_OPERAND_ADDRESS, punter nul"
+
+#: config/mips/mips.c:6242
+msgid "MIPS ECOFF format does not allow changing filenames within functions with #line"
+msgstr "el format ECOFF de MIPS no permet el canvi de noms de fitxer dintre de funcions amb #line"
+
+#: config/mips/mips.c:6552
+msgid "can't rewind temp file"
+msgstr "no es pot rebobinar el fitxer temporal"
+
+#: config/mips/mips.c:6556
+msgid "can't write to output file"
+msgstr "no es pot escriure al fitxer de sortida"
+
+#: config/mips/mips.c:6559
+msgid "can't read from temp file"
+msgstr "no es pot llegir dès del fitxer temporal"
+
+#: config/mips/mips.c:6562
+msgid "can't close temp file"
+msgstr "no es pot tancar el fitxer temporal"
+
+#: config/mips/mips.c:7003
+#, c-format
+msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
+msgstr "gp_offset (%ld) o end_offset (%ld) és menor a zero"
+
+#: config/mips/mips.c:7112
+#, c-format
+msgid "fp_offset (%ld) or end_offset (%ld) is less than zero"
+msgstr "fp_offset (%ld) o end_offset (%ld) és menor a zero"
+
+#: config/mips/mips.c:9335
+#, c-format
+msgid "can not handle inconsistent calls to `%s'"
+msgstr "no es poden manejar cridades inconsistentes a \"%s\""
+
+#: config/mips/mips.c:10467
+msgid "the cpu name must be lower case"
+msgstr "el nom de cpu deu estar en minúscules"
+
+#: config/mips/mips.c:10489
+#, c-format
+msgid "bad value (%s) for %s"
+msgstr "valor erroni (%s) per a %s"
+
+#. Target CPU builtins.
+#. We do this here because __mips is defined below and so we can't use builtin_define_std.
+#. Treat _R3000 and _R4000 like register-size defines, which is how they've historically been used.
+#. Macros dependent on the C dialect.
+#. Bizzare, but needed at least for Irix.
+#. 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/mips/mips.h:528 config/mn10300/mn10300.h:64
+msgid "No default crt0.o"
+msgstr "No està el crt0.o per omissió"
+
+#: config/mips/mips.h:530
+msgid "Use 64-bit int type"
+msgstr "Usar tipus int de 64 bits"
+
+#: config/mips/mips.h:532
+msgid "Use 64-bit long type"
+msgstr "Usar tipus long de 64 bits"
+
+#: config/mips/mips.h:534
+msgid "Use 32-bit long type"
+msgstr "Usar tipus long de 32 bits"
+
+#: config/mips/mips.h:536
+msgid "Optimize lui/addiu address loads"
+msgstr "Optimitzar les càrregues de les adreces lui/addiu"
+
+#: config/mips/mips.h:538
+msgid "Don't optimize lui/addiu address loads"
+msgstr "No optimitzar les càrregues de les adreces lui/addiu"
+
+#: config/mips/mips.h:540
+msgid "Use MIPS as"
+msgstr "Usar l'as de MIPS"
+
+#: config/mips/mips.h:542
+msgid "Use GNU as"
+msgstr "Usar l'as de GNU"
+
+#: config/mips/mips.h:544
+msgid "Use symbolic register names"
+msgstr "Usar noms simbòlics de registre"
+
+#: config/mips/mips.h:546
+msgid "Don't use symbolic register names"
+msgstr "No usar noms simbòlics de registre"
+
+#: config/mips/mips.h:548 config/mips/mips.h:550
+msgid "Use GP relative sdata/sbss sections"
+msgstr "Usar seccions sdata/sbss relatives a GP"
+
+#: config/mips/mips.h:552 config/mips/mips.h:554
+msgid "Don't use GP relative sdata/sbss sections"
+msgstr "No usar seccions sdata/sbss relatives a GP"
+
+#: config/mips/mips.h:556
+msgid "Output compiler statistics"
+msgstr "Mostrar la sortida d'estadístiques del compilador"
+
+#: config/mips/mips.h:558
+msgid "Don't output compiler statistics"
+msgstr "No mostrar la sortida d'estadístiques del compilador"
+
+#: config/mips/mips.h:560
+msgid "Don't optimize block moves"
+msgstr "No optimitzar els moviments de blocs"
+
+#: config/mips/mips.h:562
+msgid "Optimize block moves"
+msgstr "Optimitzar els moviments de blocs"
+
+#: config/mips/mips.h:564
+msgid "Use mips-tfile asm postpass"
+msgstr "Usar mips-tfile asm postpass"
+
+#: config/mips/mips.h:566
+msgid "Don't use mips-tfile asm postpass"
+msgstr "No usar mips-tfile asm postpass"
+
+#. Macro to define tables used to set the flags.
+#. This is a list in braces of triplets in braces,
+#. each triplet being { "NAME", VALUE, DOC }
+#. 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:570 config/pdp11/pdp11.h:56
+msgid "Use hardware floating point"
+msgstr "Usar coma flotant de maquinari"
+
+#: config/mips/mips.h:572
+msgid "Use 64-bit FP registers"
+msgstr "Usar registres FP de 64 bits"
+
+#: config/mips/mips.h:574
+msgid "Use 32-bit FP registers"
+msgstr "Usar registres FP de 32 bits"
+
+#: config/mips/mips.h:576
+msgid "Use 64-bit general registers"
+msgstr "Usar registres generals de 64 bits"
+
+#: config/mips/mips.h:578
+msgid "Use 32-bit general registers"
+msgstr "Usar registres generals de 32 bits"
+
+#: config/mips/mips.h:580
+msgid "Use Irix PIC"
+msgstr "Usar PIC de Irix"
+
+#: config/mips/mips.h:582
+msgid "Don't use Irix PIC"
+msgstr "No usar PIC de Irix"
+
+#: config/mips/mips.h:584
+msgid "Use indirect calls"
+msgstr "Usar cridades indirectes"
+
+#: config/mips/mips.h:586
+msgid "Don't use indirect calls"
+msgstr "No usar cridades indirectes"
+
+#: config/mips/mips.h:588
+msgid "Use embedded PIC"
+msgstr "Usar el PIC incrustat"
+
+#: config/mips/mips.h:590
+msgid "Don't use embedded PIC"
+msgstr "No usar el PIC incrustat"
+
+#: config/mips/mips.h:592
+msgid "Use ROM instead of RAM"
+msgstr "Usar ROM enlloc de RAM"
+
+#: config/mips/mips.h:594
+msgid "Don't use ROM instead of RAM"
+msgstr "No usar ROM enlloc de RAM"
+
+#: config/mips/mips.h:596
+msgid "Put uninitialized constants in ROM (needs -membedded-data)"
+msgstr "Posar les constants sense inicialitzar en ROM (necessita -membedded-data)"
+
+#: config/mips/mips.h:598
+msgid "Don't put uninitialized constants in ROM"
+msgstr "No posar les constants sense inicialitzar en ROM"
+
+#. Macro to define tables used to set the flags.
+#: config/mips/mips.h:600 config/xtensa/xtensa.h:110
+msgid "Use big-endian byte order"
+msgstr "Usar ordre de bit big-endian"
+
+#: config/mips/mips.h:602 config/xtensa/xtensa.h:112
+msgid "Use little-endian byte order"
+msgstr "Usar ordre de bit little-endian"
+
+#: config/mips/mips.h:604
+msgid "Use single (32-bit) FP only"
+msgstr "Usar únicament una sola FP (32-bit)"
+
+#: config/mips/mips.h:606
+msgid "Don't use single (32-bit) FP only"
+msgstr "No usar únicament una sola FP (32-bit)"
+
+#: config/mips/mips.h:608
+msgid "Use multiply accumulate"
+msgstr "Usar el acumulador de multiplicació"
+
+#: config/mips/mips.h:610
+msgid "Don't use multiply accumulate"
+msgstr "No usar el acumulador de multiplicació"
+
+#: config/mips/mips.h:612 config/rs6000/rs6000.h:314
+msgid "Don't generate fused multiply/add instructions"
+msgstr "No generar instruccions multiply/add de curt circuit"
+
+#: config/mips/mips.h:614 config/rs6000/rs6000.h:312
+msgid "Generate fused multiply/add instructions"
+msgstr "Generar instruccions multiply/add de curt circuit"
+
+#: config/mips/mips.h:616
+msgid "Work around early 4300 hardware bug"
+msgstr "Evitar el bug del primer maquinari 4300"
+
+#: config/mips/mips.h:618
+msgid "Don't work around early 4300 hardware bug"
+msgstr "No evitar el bug del primer maquinari 4300"
+
+#: config/mips/mips.h:620
+msgid "Trap on integer divide by zero"
+msgstr "Atrapar la divisió entera per zero"
+
+#: config/mips/mips.h:622
+msgid "Don't trap on integer divide by zero"
+msgstr "No atrapar la divisió entera per zero"
+
+#: config/mips/mips.h:624
+msgid "Trap on integer divide overflow"
+msgstr "Atrapar desbordaments en la divisió entera"
+
+#: config/mips/mips.h:626
+msgid "Don't trap on integer divide overflow"
+msgstr "No atrapar desbordaments en la divisió entera"
+
+#: config/mips/mips.h:628
+msgid "Use Branch Likely instructions, overriding default for arch"
+msgstr ""
+
+#: config/mips/mips.h:630
+msgid "Don't use Branch Likely instructions, overriding default for arch"
+msgstr ""
+
+#: config/mips/mips.h:744 config/pa/pa.h:310
+msgid "Specify CPU for scheduling purposes"
+msgstr "Especificar el CPU per a propòsits de calendarització"
+
+#: config/mips/mips.h:746
+msgid "Specify CPU for code generation purposes"
+msgstr "Especificar el CPU per a propòsits de generació de codi"
+
+#: config/mips/mips.h:748
+msgid "Specify an ABI"
+msgstr "Especificar un ABI"
+
+#: config/mips/mips.h:750
+msgid "Specify a Standard MIPS ISA"
+msgstr "Especificar el ISA de MIPS standard"
+
+#: config/mips/mips.h:752
+msgid "Use mips16 entry/exit psuedo ops"
+msgstr "Usar pseudo ops mips16 de entrada/sortida"
+
+#: config/mips/mips.h:754
+msgid "Don't use MIPS16 instructions"
+msgstr "No usar instruccions MIPS16"
+
+#: config/mips/mips.h:756
+msgid "Don't call any cache flush functions"
+msgstr "No cridar cap funció de neteja de memòria cau"
+
+#: config/mips/mips.h:758
+msgid "Specify cache flush function"
+msgstr "Especificar una funció de neteja de memòria cau"
+
+#. Output assembler code to FILE to increment profiler label # LABELNO
+#. for profiling a function entry.
+#: config/mips/mips.h:2900
+msgid "mips16 function profiling"
+msgstr "anàlisi de perfil de les funcions mips16"
+
+#: config/mmix/mmix.c:189
+#, c-format
+msgid "-f%s not supported: ignored"
+msgstr "-f%s no té suport: ignorat"
+
+#: config/mmix/mmix.c:644
+#, c-format
+msgid "too large function value type, needs %d registers, have only %d registers for this"
+msgstr "el valor del tipus de la funció és massa gran, necessita %d registres, només es tenen %d registres per a això"
+
+#: config/mmix/mmix.c:826
+msgid "function_profiler support for MMIX"
+msgstr "suport per a function_profiler per a MMIX"
+
+#: config/mmix/mmix.c:848
+msgid "MMIX Internal: Last named vararg would not fit in a register"
+msgstr "MMIX intern: L'últim vararg nomenat no conté en un registre"
+
+#: config/mmix/mmix.c:1639 config/mmix/mmix.c:1769
+msgid "MMIX Internal: Expected a CONST_INT, not this"
+msgstr "MMIX intern: Esperant un CONS_INT, no això"
+
+#: config/mmix/mmix.c:1647 config/mmix/mmix.c:1671 config/mmix/mmix.c:1787
+#, c-format
+msgid "MMIX Internal: Bad register: %d"
+msgstr "MMIX intern: registre erroni: %d"
+
+#: config/mmix/mmix.c:1718
+msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
+msgstr "MMIX intern: valor erroni per a \"m\", no és un CONST_INT"
+
+#: config/mmix/mmix.c:1737
+msgid "MMIX Internal: Expected a register, not this"
+msgstr "MMIX intern: Esperant un registre, no això"
+
+#: config/mmix/mmix.c:1747
+msgid "MMIX Internal: Expected a constant, not this"
+msgstr "MMIX intern: Esperant una constant, no això"
+
+#. Presumably there's a missing case above if we get here.
+#: config/mmix/mmix.c:1779
+#, c-format
+msgid "MMIX Internal: Missing `%c' case in mmix_print_operand"
+msgstr "MMIX intern: \"%c\" faltant en mmix_print_operand"
+
+#. We need the original here.
+#: config/mmix/mmix.c:1831
+msgid "MMIX Internal: Cannot decode this operand"
+msgstr "MMIX intern: aquesta operant no es pot dexifrar"
+
+#: config/mmix/mmix.c:1891
+msgid "MMIX Internal: This is not a recognized address"
+msgstr "MMIX intern: adreça no reconeguda"
+
+#: config/mmix/mmix.c:2082
+#, c-format
+msgid "stack frame not a multiple of 8 bytes: %d"
+msgstr "el marc de pila no és un múltiple de 8 octets: %d"
+
+#: config/mmix/mmix.c:2321
+#, c-format
+msgid "stack frame not a multiple of octabyte: %d"
+msgstr "el marc de pila no és un múltiple de octabyte: %d"
+
+#: config/mmix/mmix.c:2818 config/mmix/mmix.c:2887
+#, c-format
+msgid "MMIX Internal: %s is not a shiftable int"
+msgstr "MMIX intern: %s no és un enter desplaçable"
+
+#: config/mmix/mmix.c:3006
+msgid "MMIX Internal: Trying to output invalidly reversed condition:"
+msgstr "MMIX intern: Intentant de mostrar una condició invertida de forma invàlida:"
+
+#: config/mmix/mmix.c:3013
+msgid "MMIX Internal: What's the CC of this?"
+msgstr "MMIX Internal: Quin és el CC per això"
+
+#: config/mmix/mmix.c:3017
+msgid "MMIX Internal: What is the CC of this?"
+msgstr "MMIX Internal: Quin és el CC per això"
+
+#: config/mmix/mmix.c:3088
+msgid "MMIX Internal: This is not a constant:"
+msgstr "MMIX Internal: Això no és una constant:"
+
+#. For these target macros, there is no generic documentation here. You
+#. should read `Using and Porting GCC' for that. Only comments specific
+#. to the MMIX target are here.
+#.
+#. There are however references to the specific texinfo node (comments
+#. with "Node:"), so there should be little or nothing amiss. Probably
+#. the opposite, since we don't have to care about old littering and
+#. soon outdated generic comments.
+#. Node: Driver
+#. User symbols are in the same name-space as built-in symbols, but we
+#. don't need the built-in symbols, so remove those and instead apply
+#. stricter operand checking. Don't warn when expanding insns.
+#. Pass on -mset-program-start=N and -mset-data-start=M to the linker.
+#. Provide default program start 0x100 unless -mno-set-program-start.
+#. Don't do this if linking relocatably, with -r. For a final link,
+#. produce mmo, unless ELF is requested or when linking relocatably.
+#. Put unused option values here.
+#: config/mmix/mmix.h:132
+msgid "Set start-address of the program"
+msgstr "Definir l'adreça d'inici del programa"
+
+#: config/mmix/mmix.h:134
+msgid "Set start-address of data"
+msgstr "Definir l'adreça d'inici de les dades"
+
+#. FIXME: Provide a way to *load* the epsilon register.
+#: config/mmix/mmix.h:198
+msgid "For intrinsics library: pass all parameters in registers"
+msgstr "Per a biblioteques intrínsecs: passar els parametres en registres"
+
+#: config/mmix/mmix.h:201
+msgid "Use register stack for parameters and return value"
+msgstr "Usar registres de pila per a parametres i valors de retorn"
+
+#: config/mmix/mmix.h:203
+msgid "Use call-clobbered registers for parameters and return value"
+msgstr "Usar registres maltractats per a parametres i valors de retorn"
+
+#: config/mmix/mmix.h:205
+msgid "Use epsilon-respecting floating point compare instructions"
+msgstr "Usar instuccions de comparança en coma flotant que respectent epsilon"
+
+#: config/mmix/mmix.h:208
+msgid "Use zero-extending memory loads, not sign-extending ones"
+msgstr "Usar càrregues de memòria d'extensió zero, no les d'extensió amb signe"
+
+#: config/mmix/mmix.h:211
+msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)"
+msgstr "Generar resultats de divisió amb residu que tingui el mateix signe que el divisor (no el del dividend)"
+
+#: config/mmix/mmix.h:215
+msgid "Prepend global symbols with \":\" (for use with PREFIX)"
+msgstr "Precedir als símbols globals amb \":\" (per a usar-se amb PREFIX)"
+
+#: config/mmix/mmix.h:217
+msgid "Do not provide a default start-address 0x100 of the program"
+msgstr "No proveir una adreça d'inici per omissió 0x100 del programa"
+
+#: config/mmix/mmix.h:219
+msgid "Link to emit program in ELF format (rather than mmo)"
+msgstr "Enllaçar per a emetre el programa en format ELF (en lloc de mmo)"
+
+#: config/mmix/mmix.h:221
+msgid "Use P-mnemonics for branches statically predicted as taken"
+msgstr "Usar Mnemónicos-P per a ramificacions predites estàticament com preses"
+
+#: config/mmix/mmix.h:223
+msgid "Don't use P-mnemonics for branches"
+msgstr "No usar Mnemónicos-P per a ramificacions"
+
+#: config/mmix/mmix.h:225
+msgid "Use addresses that allocate global registers"
+msgstr "Usar adreces que reservin registres globals"
+
+#: config/mmix/mmix.h:227
+msgid "Do not use addresses that allocate global registers"
+msgstr "No usar adreces que reservin registres globals"
+
+#: config/mmix/mmix.h:229
+msgid "Generate a single exit point for each function"
+msgstr "Generar només un punt de sortida per a cada funció"
+
+#: config/mmix/mmix.h:231
+msgid "Do not generate a single exit point for each function"
+msgstr "No generar només un punt de sortida per a cada funció"
+
+#: config/mn10300/mn10300.h:59
+msgid "Work around hardware multiply bug"
+msgstr "Evitar el error de multiplicació de maquinari"
+
+#: config/mn10300/mn10300.h:60
+msgid "Do not work around hardware multiply bug"
+msgstr "No evitar el error de multiplicació de maquinari"
+
+#: config/mn10300/mn10300.h:61
+msgid "Target the AM33 processor"
+msgstr "Apuntar al processador AM33"
+
+#: config/mn10300/mn10300.h:65
+msgid "Enable linker relaxations"
+msgstr "Activar la relaxació del enllaçador"
+
+#: config/ns32k/ns32k.h:142 config/s390/s390.h:69
+msgid "Don't use hardware fp"
+msgstr "No usar el fp de maquinari"
+
+#: config/ns32k/ns32k.h:143
+msgid "Alternative calling convention"
+msgstr "Convenció de cridada alternativa"
+
+#: config/ns32k/ns32k.h:145
+msgid "Pass some arguments in registers"
+msgstr "Passar alguns arguments en registres"
+
+#: config/ns32k/ns32k.h:146
+msgid "Pass all arguments on stack"
+msgstr "Passar tots els arguments en la pila"
+
+#: config/ns32k/ns32k.h:147
+msgid "Optimize for 32532 cpu"
+msgstr "Optimitzar per al cpu 32532"
+
+#: config/ns32k/ns32k.h:148
+msgid "Optimize for 32332 cpu"
+msgstr "Optimitzar per al cpu 32332"
+
+#: config/ns32k/ns32k.h:150
+msgid "Optimize for 32032"
+msgstr "Optimitzar per a 32032"
+
+#: config/ns32k/ns32k.h:152
+msgid "Register sb is zero. Use for absolute addressing"
+msgstr "El registre sb és zero. S'usa per a adreçament absolut"
+
+#: config/ns32k/ns32k.h:153
+msgid "Do not use register sb"
+msgstr "No usar el registre sb"
+
+#: config/ns32k/ns32k.h:155
+msgid "Use bit-field instructions"
+msgstr "Usar instruccions de camps de bit"
+
+#: config/ns32k/ns32k.h:157
+msgid "Do not use bit-field instructions"
+msgstr "No usar instruccions de camps de bit"
+
+#: config/ns32k/ns32k.h:158
+msgid "Generate code for high memory"
+msgstr "Generar codi per a memòria alta"
+
+#: config/ns32k/ns32k.h:159
+msgid "Generate code for low memory"
+msgstr "Generar codi per a memòria baixa"
+
+#: config/ns32k/ns32k.h:160
+msgid "32381 fpu"
+msgstr "fpu 32381"
+
+#: config/ns32k/ns32k.h:162
+msgid "Use multiply-accumulate fp instructions"
+msgstr "Usar instruccions de fp per a multiplicar-acumular"
+
+#: config/ns32k/ns32k.h:164
+msgid "Do not use multiply-accumulate fp instructions"
+msgstr "No usar instruccions de fp per a multiplicar-acumular"
+
+#: config/ns32k/ns32k.h:165
+msgid "\"Small register classes\" kludge"
+msgstr "kludge de \"Classes de registre petites\""
+
+#: config/ns32k/ns32k.h:166
+msgid "No \"Small register classes\" kludge"
+msgstr "No kludge de \"Classes de registre petites\""
+
+#: config/pa/pa.c:261
+#, c-format
+msgid ""
+"unknown -mschedule= option (%s).\n"
+"Valid options are 700, 7100, 7100LC, 7200, 7300, and 8000\n"
+msgstr ""
+"opció -mschedule= desconeguda (%s).\n"
+"Les opcions vàlides són 700, 7100, 7100LC, 7200, 7300, i 8000\n"
+
+#: config/pa/pa.c:286
+#, c-format
+msgid ""
+"unknown -march= option (%s).\n"
+"Valid options are 1.0, 1.1, and 2.0\n"
+msgstr ""
+"opció -march= desconeguda (%s).\n"
+"Les opcions vàlides són 1.0, 1.1, i 2.0\n"
+
+#: config/pa/pa.c:299
+msgid "PIC code generation is not supported in the portable runtime model\n"
+msgstr "La generació de codi PIC no té suport en el model portable de temps d'execució\n"
+
+#: config/pa/pa.c:304
+msgid "PIC code generation is not compatible with fast indirect calls\n"
+msgstr "La generació de codi PIC no és compatible amb les cridades ràpides indirectes\n"
+
+#: config/pa/pa.c:309
+msgid "-g is only supported when using GAS on this processor,"
+msgstr "-g només té suport quan s'usa GAS en aquest processador,"
+
+#: config/pa/pa.c:310
+msgid "-g option disabled"
+msgstr "opció -g desactivada"
+
+#: config/pa/pa-hiux.h:75 config/pa/pa-hpux.h:87 config/pa/pa-hpux7.h:81
+#: config/pa/pa64-hpux.h:25
+msgid "Generate cpp defines for server IO"
+msgstr "Generar definicions cpp per a IO de servidor"
+
+#: config/pa/pa-hiux.h:76 config/pa/pa-hpux.h:88 config/pa/pa-hpux7.h:82
+#: config/pa/pa64-hpux.h:27
+msgid "Generate cpp defines for workstation IO"
+msgstr "Generar definicions cpp per a IO d'estació de treball"
+
+#. Macro to define tables used to set the flags. This is a
+#. list in braces of target switches with each switch being
+#. { "NAME", VALUE, "HELP_STRING" }. VALUE is the bits to set,
+#. or minus the bits to clear. An empty string NAME is used to
+#. identify the default VALUE. Do not mark empty strings for
+#. translation.
+#: config/pa/pa.h:232 config/pa/pa.h:238
+msgid "Generate PA1.1 code"
+msgstr "Generar codi PA1.1"
+
+#: config/pa/pa.h:234 config/pa/pa.h:236
+msgid "Generate PA1.0 code"
+msgstr "Generar codi PA1.0"
+
+#: config/pa/pa.h:240
+msgid "Generate PA2.0 code (requires binutils 2.10 or later)"
+msgstr ""
+
+#: config/pa/pa.h:242
+msgid "Disable FP regs"
+msgstr "Desactivar els registres FP"
+
+#: config/pa/pa.h:244
+msgid "Do not disable FP regs"
+msgstr "No desactivar registres FP"
+
+#: config/pa/pa.h:246
+msgid "Disable space regs"
+msgstr ""
+
+#: config/pa/pa.h:248
+msgid "Do not disable space regs"
+msgstr "No desactivar registres d'espai"
+
+#: config/pa/pa.h:250
+msgid "Put jumps in call delay slots"
+msgstr ""
+
+#: config/pa/pa.h:252
+msgid "Do not put jumps in call delay slots"
+msgstr ""
+
+#: config/pa/pa.h:254
+msgid "Disable indexed addressing"
+msgstr "Desactivar adreçament d'index"
+
+#: config/pa/pa.h:256
+msgid "Do not disable indexed addressing"
+msgstr "No desactivar adreçament indexat"
+
+#: config/pa/pa.h:258
+msgid "Use portable calling conventions"
+msgstr "Usar convencions de cridada portable"
+
+#: config/pa/pa.h:260
+msgid "Do not use portable calling conventions"
+msgstr "No usar convencions de cridada portable"
+
+#: config/pa/pa.h:262
+msgid "Assume code will be assembled by GAS"
+msgstr ""
+
+#: config/pa/pa.h:264
+msgid "Do not assume code will be assembled by GAS"
+msgstr ""
+
+#: config/pa/pa.h:268
+msgid "Do not use software floating point"
+msgstr "No usa coma flotant de programari"
+
+#: config/pa/pa.h:270
+msgid "Emit long load/store sequences"
+msgstr ""
+
+#: config/pa/pa.h:272
+msgid "Do not emit long load/store sequences"
+msgstr "No emetre seqüències load/store llarges"
+
+#: config/pa/pa.h:274
+msgid "Generate fast indirect calls"
+msgstr "Generar cridades indirectes ràpides"
+
+#: config/pa/pa.h:276
+msgid "Do not generate fast indirect calls"
+msgstr "No generar cridades indirectes ràpides"
+
+#: config/pa/pa.h:278
+msgid "Generate code for huge switch statements"
+msgstr "Generar codi per a declaracions switch grandes"
+
+#: config/pa/pa.h:280
+msgid "Do not generate code for huge switch statements"
+msgstr "No generar codi per a declaracions switch grandes"
+
+#: config/pa/pa.h:282
+msgid "Always generate long calls"
+msgstr "Generar sempre cridades llarges"
+
+#: config/pa/pa.h:284
+msgid "Generate long calls only when needed"
+msgstr ""
+
+#: config/pa/pa.h:286
+msgid "Enable linker optimizations"
+msgstr "Activar les optimitzacions del enllaçador"
+
+#: config/pa/pa.h:312
+msgid "Specify architecture for code generation. Values are 1.0, 1.1, and 2.0. 2.0 requires gas snapshot 19990413 or later."
+msgstr ""
+
+#: config/pa/pa64-hpux.h:29
+msgid "Assume code will be linked by GNU ld"
+msgstr ""
+
+#: config/pa/pa64-hpux.h:31
+msgid "Assume code will be linked by HP ld"
+msgstr ""
+
+#: config/pdp11/pdp11.h:57
+msgid "Do not use hardware floating point"
+msgstr "No usa coma flotant de maquinari"
+
+#. return float result in ac0
+#: config/pdp11/pdp11.h:59
+msgid "Return floating point results in ac0"
+msgstr "Devolució de resultats de coma flotant en ac0"
+
+#: config/pdp11/pdp11.h:60
+msgid "Return floating point results in memory"
+msgstr "Devolució de resultats de coma flotant en memoria"
+
+#. is 11/40
+#: config/pdp11/pdp11.h:62
+msgid "Generate code for an 11/40"
+msgstr "Generar codi per a un 11/40"
+
+#. is 11/45
+#: config/pdp11/pdp11.h:65
+msgid "Generate code for an 11/45"
+msgstr "5Generar codi per a un 11/45"
+
+#. is 11/10
+#: config/pdp11/pdp11.h:68
+msgid "Generate code for an 11/10"
+msgstr "Generar codi per a un 11/10"
+
+#. use movstrhi for bcopy
+#. use 32 bit for int
+#: config/pdp11/pdp11.h:73 config/pdp11/pdp11.h:74
+msgid "Use 32 bit int"
+msgstr "Usar int de 32 bits"
+
+#: config/pdp11/pdp11.h:75 config/pdp11/pdp11.h:76
+msgid "Use 16 bit int"
+msgstr "Usar int de 16 bits"
+
+#. use 32 bit for float
+#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
+msgid "Use 32 bit float"
+msgstr "Usar float de 32 bits"
+
+#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
+msgid "Use 64 bit float"
+msgstr "Usar float de 64 bits"
+
+#. allow abshi pattern? - can trigger "optimizations" which make code SLOW!
+#. is branching expensive - on a PDP, it's actually really cheap
+#. this is just to play around and check what code gcc generates
+#. split instruction and data memory?
+#: config/pdp11/pdp11.h:90
+msgid "Target has split I&D"
+msgstr "L'objectiu té un I&D dividit"
+
+#: config/pdp11/pdp11.h:91
+msgid "Target does not have split I&D"
+msgstr "L'objectiu no té un I&D dividit"
+
+#. UNIX assembler syntax?
+#: config/pdp11/pdp11.h:93
+msgid "Use UNIX assembler syntax"
+msgstr "Usar sintaxi de l'ensemblador UNIX"
+
+#: config/pdp11/pdp11.h:94
+msgid "Use DEC assembler syntax"
+msgstr "Usar sintaxi de l'ensemblador DEC"
+
+#: config/romp/romp.c:717 config/rs6000/rs6000.c:7755
+#, c-format
+msgid "invalid %%S value"
+msgstr "valor %%S invàlid"
+
+#: config/romp/romp.c:726 config/romp/romp.c:733
+#, c-format
+msgid "invalid %%b value"
+msgstr "valor %%b invàlid"
+
+#: config/romp/romp.c:773 config/romp/romp.c:784
+#, c-format
+msgid "invalid %%z value"
+msgstr "valor %%z invàlid"
+
+#: config/romp/romp.c:792 config/romp/romp.c:800
+#, c-format
+msgid "invalid %%Z value"
+msgstr "valor %%Z invàlid"
+
+#: config/romp/romp.c:807 config/romp/romp.c:816 config/romp/romp.c:823
+#: config/rs6000/rs6000.c:7584
+#, c-format
+msgid "invalid %%k value"
+msgstr "valor %%k invàlid"
+
+#: config/romp/romp.c:908 config/romp/romp.c:951
+#, c-format
+msgid "invalid %%j value"
+msgstr "valor %%j invàlid"
+
+#. Perform any needed actions needed for a function that is receiving a
+#. variable number of arguments.
+#.
+#. CUM is as above.
+#.
+#. MODE and TYPE are the mode and type of the current parameter.
+#.
+#. PRETEND_SIZE is a variable that should be set to the amount of stack
+#. that must be pushed by the prolog to pretend that our caller pushed
+#. it.
+#.
+#. Normally, this macro will push all remaining incoming registers on the
+#. stack and set PRETEND_SIZE to the length of the registers pushed.
+#: config/romp/romp.h:648
+msgid "can't have varargs with -mfp-arg-in-fp-regs"
+msgstr "no es pot tenir varargs amb -mfp-arg-in-fp-regs"
+
+#. Handle the machine specific pragma longcall. Its syntax is
+#.
+#. # pragma longcall ( TOGGLE )
+#.
+#. where TOGGLE is either 0 or 1.
+#.
+#. rs6000_default_long_calls is set to the value of TOGGLE, changing
+#. whether or not new function declarations receive a longcall
+#. attribute by default.
+#: config/rs6000/rs6000-c.c:44
+msgid "ignoring malformed #pragma longcall"
+msgstr "ignorant el #pragma longcall malformats"
+
+#: config/rs6000/rs6000-c.c:58
+msgid "missing open paren"
+msgstr "\"(\" faltant"
+
+#: config/rs6000/rs6000-c.c:60
+msgid "missing number"
+msgstr "falta valor"
+
+#: config/rs6000/rs6000-c.c:62
+msgid "missing close paren"
+msgstr "\")\" faltant"
+
+#: config/rs6000/rs6000-c.c:65
+msgid "number must be 0 or 1"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:68
+msgid "junk at end of #pragma longcall"
+msgstr "escombraries al final de #pragma longcall"
+
+#: config/rs6000/rs6000.c:592
+msgid "-mmultiple is not supported on little endian systems"
+msgstr "-mmultiple no té suport en sistemes little endian"
+
+#: config/rs6000/rs6000.c:599
+msgid "-mstring is not supported on little endian systems"
+msgstr "-mstringe no té suport en sistemes little endian"
+
+#: config/rs6000/rs6000.c:623
+#, c-format
+msgid "unknown -mdebug-%s switch"
+msgstr "interruptor -mdebug-%s desconegut"
+
+#: config/rs6000/rs6000.c:635
+#, c-format
+msgid "unknown -mtraceback arg `%s'; expecting `full', `partial' or `none'"
+msgstr ""
+
+#: config/rs6000/rs6000.c:646
+#, c-format
+msgid "Unknown switch -mlong-double-%s"
+msgstr "interruptor -mlong-double-%s desconegut"
+
+#: config/rs6000/rs6000.c:738
+#, c-format
+msgid "unknown -misel= option specified: '%s'"
+msgstr "opció -misel= especificada desconeguda: \"%s\""
+
+#: config/rs6000/rs6000.c:753
+#, c-format
+msgid "unknown -mvrsave= option specified: '%s'"
+msgstr "opció -mvrsave= especificada desconeguda: \"%s\""
+
+#: config/rs6000/rs6000.c:772
+#, c-format
+msgid "unknown ABI specified: '%s'"
+msgstr "ABI especificada desconeguda: \"%s\""
+
+#: config/rs6000/rs6000.c:4206
+msgid "argument 1 must be a 5-bit signed literal"
+msgstr "l'argument 1 deu ser una literal amb signe de 5-bit"
+
+#: config/rs6000/rs6000.c:4313 config/rs6000/rs6000.c:4903
+msgid "argument 2 must be a 5-bit unsigned literal"
+msgstr "l'argument 2 deu ser una literal sense signe de 5-bit"
+
+#: config/rs6000/rs6000.c:4356
+msgid "argument 1 of __builtin_altivec_predicate must be a constant"
+msgstr "l'argument 1 de _builtin_altivec_predicate deu ser una constant"
+
+#: config/rs6000/rs6000.c:4410
+msgid "argument 1 of __builtin_altivec_predicate is out of range"
+msgstr "l'argument 1 de _builtin_altivec_predicate es fora de rang"
+
+#: config/rs6000/rs6000.c:4489
+msgid "argument 3 must be a 4-bit unsigned literal"
+msgstr "l'argument 3 deu ser una literal sense signe de 4-bit"
+
+#: config/rs6000/rs6000.c:4666
+#, c-format
+msgid "argument to `%s' must be a 2-bit unsigned literal"
+msgstr "l'argument per a \"%s\" deu ser una literal sense signe de 2-bit"
+
+#: config/rs6000/rs6000.c:4782
+msgid "argument to dss must be a 2-bit unsigned literal"
+msgstr "l'argument per a dss deu ser una literal sense signe de 2-bit"
+
+#: config/rs6000/rs6000.c:5013
+msgid "argument 1 of __builtin_spe_predicate must be a constant"
+msgstr "l'argument 1 de __builtin__spe_predicate deu ser una constant"
+
+#: config/rs6000/rs6000.c:5086
+msgid "argument 1 of __builtin_spe_predicate is out of range"
+msgstr "l'argument 1 de __builtin_spe_predicate està fora de rang"
+
+#: config/rs6000/rs6000.c:7511
+#, c-format
+msgid "invalid %%f value"
+msgstr "valor %%f invàlid"
+
+#: config/rs6000/rs6000.c:7520
+#, c-format
+msgid "invalid %%F value"
+msgstr "valor %%F invàlid"
+
+#: config/rs6000/rs6000.c:7529
+#, c-format
+msgid "invalid %%G value"
+msgstr "valor %%G invàlid"
+
+#: config/rs6000/rs6000.c:7564
+#, c-format
+msgid "invalid %%j code"
+msgstr "valor %%j invàlid"
+
+#: config/rs6000/rs6000.c:7574
+#, c-format
+msgid "invalid %%J code"
+msgstr "valor %%J invàlid"
+
+#: config/rs6000/rs6000.c:7604
+#, c-format
+msgid "invalid %%K value"
+msgstr "valor %%K invàlid"
+
+#: config/rs6000/rs6000.c:7671
+#, c-format
+msgid "invalid %%O value"
+msgstr "valor %%O invàlid"
+
+#: config/rs6000/rs6000.c:7793
+#, c-format
+msgid "invalid %%T value"
+msgstr "valor %%T invàlid"
+
+#: config/rs6000/rs6000.c:7803
+#, c-format
+msgid "invalid %%u value"
+msgstr "valor %%u invàlid"
+
+#: config/rs6000/rs6000.c:7812
+#, c-format
+msgid "invalid %%v value"
+msgstr "valor %%v invàlid"
+
+#: config/rs6000/rs6000.c:12242
+msgid "no profiling of 64-bit code for this ABI"
+msgstr ""
+
+#: config/rs6000/aix.h:160 config/rs6000/beos.h:32
+msgid "Always pass floating-point arguments in memory"
+msgstr "Passar sempre els arguments de coma flotant en memòria"
+
+#: config/rs6000/aix.h:162 config/rs6000/beos.h:34
+msgid "Don't always pass floating-point arguments in memory"
+msgstr "No passar sempre els arguments de coma flotant en memòria"
+
+#: config/rs6000/aix41.h:28 config/rs6000/aix43.h:32 config/rs6000/aix51.h:32
+#: config/rs6000/aix52.h:32
+msgid "Support message passing with the Parallel Environment"
+msgstr "Suport per al pas de missatges amb l'Ambient Paral·lel"
+
+#: config/rs6000/aix43.h:28 config/rs6000/aix51.h:28 config/rs6000/aix52.h:28
+msgid "Compile for 64-bit pointers"
+msgstr "Compilar per a punters de 64-bit"
+
+#: config/rs6000/aix43.h:30 config/rs6000/aix51.h:30 config/rs6000/aix52.h:30
+msgid "Compile for 32-bit pointers"
+msgstr "Compilar per a punters de 32-bit"
+
+#: config/rs6000/aix43.h:49 config/rs6000/aix51.h:49 config/rs6000/aix52.h:49
+msgid "-maix64 and POWER architecture are incompatible"
+msgstr "-maix64 i l'arquitectura POWER són incompatibles"
+
+#: config/rs6000/aix43.h:54 config/rs6000/aix51.h:54 config/rs6000/aix52.h:54
+msgid "-maix64 requires PowerPC64 architecture remain enabled"
+msgstr "-maix64 requereix que l'arquitectura PowerPC64 romangui activada"
+
+#: config/rs6000/aix43.h:58 config/rs6000/aix51.h:58 config/rs6000/aix52.h:58
+msgid "-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
+msgstr "es requereix -maix64: càlcul de 64 bits amb adreçament de 32 bits no té suport encara"
+
+#. Run-time compilation parameters selecting different hardware subsets.
+#.
+#. 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/rs6000/rs6000.h:240
+msgid "Use POWER instruction set"
+msgstr "Usar el conjunt d'instruccions POWER"
+
+#: config/rs6000/rs6000.h:243
+msgid "Use POWER2 instruction set"
+msgstr "Usar el conjunt d'instruccions POWER2"
+
+#: config/rs6000/rs6000.h:245
+msgid "Do not use POWER2 instruction set"
+msgstr "No usar el conjunt d'instruccions POWER2"
+
+#: config/rs6000/rs6000.h:248
+msgid "Do not use POWER instruction set"
+msgstr "No usar el conjunt d'instruccions POWER"
+
+#: config/rs6000/rs6000.h:250
+msgid "Use PowerPC instruction set"
+msgstr "Usar el conjunt d'instruccions PowerPC"
+
+#: config/rs6000/rs6000.h:253
+msgid "Do not use PowerPC instruction set"
+msgstr "No usar el conjunt d'instruccions PowerPC"
+
+#: config/rs6000/rs6000.h:255
+msgid "Use PowerPC General Purpose group optional instructions"
+msgstr "Usar el grup opcional d'instruccions PowerPC de Propòsit General"
+
+#: config/rs6000/rs6000.h:257
+msgid "Don't use PowerPC General Purpose group optional instructions"
+msgstr "No usar el grup opcional d'instruccions PowerPC de Propòsit General"
+
+#: config/rs6000/rs6000.h:259
+msgid "Use PowerPC Graphics group optional instructions"
+msgstr "Usar el grup opcional d'instruccions PowerPC de Gràfiques"
+
+#: config/rs6000/rs6000.h:261
+msgid "Don't use PowerPC Graphics group optional instructions"
+msgstr "No usar el grup opcional d'instruccions PowerPC de Gràfiques"
+
+#: config/rs6000/rs6000.h:263
+msgid "Use PowerPC-64 instruction set"
+msgstr "Usar el conjunt d'instruccions PowerPC-64"
+
+#: config/rs6000/rs6000.h:265
+msgid "Don't use PowerPC-64 instruction set"
+msgstr "No usar el conjunt d'instruccions PowerPC-64"
+
+#: config/rs6000/rs6000.h:267
+msgid "Use AltiVec instructions"
+msgstr "Usar instruccions AltiVec"
+
+#: config/rs6000/rs6000.h:269
+msgid "Don't use AltiVec instructions"
+msgstr "No usar instruccions AltiVec"
+
+#: config/rs6000/rs6000.h:271
+msgid "Use new mnemonics for PowerPC architecture"
+msgstr "Usar els mnemònics nous per a l'arquitectura PowerPC"
+
+#: config/rs6000/rs6000.h:273
+msgid "Use old mnemonics for PowerPC architecture"
+msgstr "Usar els mnemònics vells per a l'arquitectura PowerPC"
+
+#: config/rs6000/rs6000.h:276
+msgid "Put everything in the regular TOC"
+msgstr "Col·locar tot en el TOC normal"
+
+#: config/rs6000/rs6000.h:278
+msgid "Place floating point constants in TOC"
+msgstr "Col·locar les constants de coma flotant en TOC"
+
+#: config/rs6000/rs6000.h:280
+msgid "Don't place floating point constants in TOC"
+msgstr "No col·locar les constants de coma flotant en TOC"
+
+#: config/rs6000/rs6000.h:282
+msgid "Place symbol+offset constants in TOC"
+msgstr "Col·locar les constants símbol+desplaçament en TOC"
+
+#: config/rs6000/rs6000.h:284
+msgid "Don't place symbol+offset constants in TOC"
+msgstr "No col·locar les constants símbol+desplaçament en TOC"
+
+#: config/rs6000/rs6000.h:290
+msgid "Place variable addresses in the regular TOC"
+msgstr "Col·locar les adreces variables en el TOC normal"
+
+#: config/rs6000/rs6000.h:296
+msgid "Generate load/store multiple instructions"
+msgstr "Generar múltiples instruccions load/store"
+
+#: config/rs6000/rs6000.h:298
+msgid "Do not generate load/store multiple instructions"
+msgstr "No generar múltiples instruccions load/store"
+
+#: config/rs6000/rs6000.h:302
+msgid "Generate string instructions for block moves"
+msgstr "Generar instruccions de cadena per a moviment de blocs"
+
+#: config/rs6000/rs6000.h:304
+msgid "Do not generate string instructions for block moves"
+msgstr "No generar instruccions de cadena per a moviment de blocs"
+
+#: config/rs6000/rs6000.h:308
+msgid "Generate load/store with update instructions"
+msgstr "Generar load/store amb instruccions d'actualització"
+
+#: config/rs6000/rs6000.h:310
+msgid "Do not generate load/store with update instructions"
+msgstr "No generar load/store amb instruccions d'actualització"
+
+#: config/rs6000/rs6000.h:318
+msgid "Don't schedule the start and end of the procedure"
+msgstr "No calendaritzar l'inici i el final del procediment"
+
+#: config/rs6000/rs6000.h:324
+msgid "Return all structures in memory (AIX default)"
+msgstr "Regressar totes les estructures en memòria (per omissió en AIX)"
+
+#: config/rs6000/rs6000.h:326
+msgid "Return small structures in registers (SVR4 default)"
+msgstr "Regressar les petites estructures en registres (per omissió en SVR4)"
+
+#: config/rs6000/rs6000.h:391 config/sparc/sparc.h:633
+msgid "Use features of and schedule code for given CPU"
+msgstr "Usar característiques i calendaritzar el codi per al CPU donat"
+
+#: config/rs6000/rs6000.h:394
+msgid "Enable debug output"
+msgstr "Activar la sortida de depuració"
+
+#: config/rs6000/rs6000.h:396
+msgid "Select full, part, or no traceback table"
+msgstr ""
+
+#: config/rs6000/rs6000.h:397
+msgid "Specify ABI to use"
+msgstr "Especificar el ABI a utilitzar"
+
+#: config/rs6000/rs6000.h:399
+msgid "Specify size of long double (64 or 128 bits)"
+msgstr "Especificar la grandària de long double (64 o 128 bits)"
+
+#: config/rs6000/rs6000.h:401
+msgid "Specify yes/no if isel instructions should be generated"
+msgstr ""
+
+#: config/rs6000/rs6000.h:403
+msgid "Specify yes/no if VRSAVE instructions should be generated for AltiVec"
+msgstr ""
+
+#: config/rs6000/rs6000.h:405
+msgid "Avoid all range limits on call instructions"
+msgstr "Evitar tots els límits de rang en les instruccions de cridades"
+
+#. Definitions for __builtin_return_address and __builtin_frame_address.
+#. __builtin_return_address (0) should give link register (65), enable
+#. this.
+#. This should be uncommented, so that the link register is used, but
+#. currently this would result in unmatched insns and spilling fixed
+#. registers so we'll leave it for another day. When these problems are
+#. taken care of one additional fetch will be necessary in RETURN_ADDR_RTX.
+#. (mrs)
+#. #define RETURN_ADDR_IN_PREVIOUS_FRAME
+#. 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:1884
+msgid "RETURN_ADDRESS_OFFSET not supported"
+msgstr "No es dona suport a RETURN_ADDRESS_OFFSET"
+
+#: config/rs6000/sysv4.h:87
+msgid "Select ABI calling convention"
+msgstr "Seleccionar la convenció de cridada ABI"
+
+#: config/rs6000/sysv4.h:88
+msgid "Select method for sdata handling"
+msgstr "Seleccionar el mètode per al maneig de sdata"
+
+#: config/rs6000/sysv4.h:103
+msgid "Align to the base type of the bit-field"
+msgstr "Alinear al tipus base del camp de bit"
+
+#: config/rs6000/sysv4.h:105
+msgid "Don't align to the base type of the bit-field"
+msgstr "No alinear al tipus base del camp de bit"
+
+#: config/rs6000/sysv4.h:107
+msgid "Don't assume that unaligned accesses are handled by the system"
+msgstr "No assumir que els accessos sense alinear són manejats pel sistema"
+
+#: config/rs6000/sysv4.h:109
+msgid "Assume that unaligned accesses are handled by the system"
+msgstr "Assumir que els accessos sense alinear són manejats pel sistema"
+
+#: config/rs6000/sysv4.h:111 config/rs6000/sysv4.h:115
+msgid "Produce code relocatable at runtime"
+msgstr "Produir codi re-ubicable en el moment d'execució"
+
+#: config/rs6000/sysv4.h:113 config/rs6000/sysv4.h:117
+msgid "Don't produce code relocatable at runtime"
+msgstr "No produir codi re-ubicable en el moment d'execució"
+
+#: config/rs6000/sysv4.h:119 config/rs6000/sysv4.h:121
+msgid "Produce little endian code"
+msgstr "Produir codi little endian"
+
+#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:125
+msgid "Produce big endian code"
+msgstr "Produir codi big endian"
+
+#: config/rs6000/sysv4.h:126 config/rs6000/sysv4.h:127
+#: config/rs6000/sysv4.h:128 config/rs6000/sysv4.h:129
+#: config/rs6000/sysv4.h:130 config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:141 config/rs6000/sysv4.h:142
+#: config/rs6000/sysv4.h:153 config/rs6000/sysv4.h:155
+#: config/rs6000/sysv4.h:157
+msgid "no description yet"
+msgstr "sense descripció encara"
+
+#: config/rs6000/sysv4.h:132
+msgid "Use EABI"
+msgstr "Usar EABI"
+
+#: config/rs6000/sysv4.h:133
+msgid "Don't use EABI"
+msgstr "No usar EABI"
+
+#: config/rs6000/sysv4.h:136
+msgid "Do not allow bit-fields to cross word boundaries"
+msgstr "No permetre que els camps de bits creuin els límits de word"
+
+#: config/rs6000/sysv4.h:138
+msgid "Use alternate register names"
+msgstr "Usar noms de registre alternats"
+
+#: config/rs6000/sysv4.h:140
+msgid "Don't use alternate register names"
+msgstr "No usar noms de registre alternats"
+
+#: config/rs6000/sysv4.h:144
+msgid "Link with libsim.a, libc.a and sim-crt0.o"
+msgstr "Enllaçar amb libsim.a, libc.a i sim-crt0.o"
+
+#: config/rs6000/sysv4.h:146
+msgid "Link with libads.a, libc.a and crt0.o"
+msgstr "Enllaçar amb libads.a, libc.a i crt0.o"
+
+#: config/rs6000/sysv4.h:148
+msgid "Link with libyk.a, libc.a and crt0.o"
+msgstr "Enllaçar amb libyk.a, libc.a i crt0.o"
+
+#: config/rs6000/sysv4.h:150
+msgid "Link with libmvme.a, libc.a and crt0.o"
+msgstr "Enllaçar amb libmvme.a, libc.a i crt0.o"
+
+#: config/rs6000/sysv4.h:152
+msgid "Set the PPC_EMB bit in the ELF flags header"
+msgstr "Activar el bit PPC_EMB en els interruptors de l'encapçalat ELF"
+
+#: config/rs6000/sysv4.h:154
+msgid "Use the WindISS simulator"
+msgstr ""
+
+#. Sometimes certain combinations of command options do not make sense
+#. on a particular target machine. You can define a macro
+#. `OVERRIDE_OPTIONS' to take account of this. This macro, if
+#. defined, is executed once just after all the command options have
+#. been parsed.
+#.
+#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
+#. get control.
+#: config/rs6000/sysv4.h:214
+#, c-format
+msgid "bad value for -mcall-%s"
+msgstr "valor erroni per a -mcall-%s"
+
+#: config/rs6000/sysv4.h:230
+#, c-format
+msgid "bad value for -msdata=%s"
+msgstr "valor erroni per a -msdata=%s"
+
+#: config/rs6000/sysv4.h:247
+#, c-format
+msgid "-mrelocatable and -msdata=%s are incompatible"
+msgstr "-mrelocatable and i -msdata=%s són incompatibles"
+
+#: config/rs6000/sysv4.h:255
+#, c-format
+msgid "-f%s and -msdata=%s are incompatible"
+msgstr "-f%s i -msdata=%s són incompatibles"
+
+#: config/rs6000/sysv4.h:264
+#, c-format
+msgid "-msdata=%s and -mcall-%s are incompatible"
+msgstr "-msdata=%s i -mcall-%s són incompatibles"
+
+#: config/rs6000/sysv4.h:273
+msgid "-mrelocatable and -mno-minimal-toc are incompatible"
+msgstr "-mrelocatable i -mno-minimal-toc són incompatibles"
+
+#: config/rs6000/sysv4.h:279
+#, c-format
+msgid "-mrelocatable and -mcall-%s are incompatible"
+msgstr "-mrelocatable i -mcall-%s són incompatibles"
+
+#: config/rs6000/sysv4.h:286
+#, c-format
+msgid "-fPIC and -mcall-%s are incompatible"
+msgstr "-fPIC i -mcall-%s són incompatibles"
+
+#: config/rs6000/sysv4.h:293
+msgid "-mcall-aixdesc must be big endian"
+msgstr "-mcall-aixdesc deu ser big endian"
+
+#: config/s390/s390.c:3063
+msgid "invalid UNSPEC as operand (1)"
+msgstr "UNSPEC invàlid com operant (1)"
+
+#: config/s390/s390.c:3123
+msgid "invalid UNSPEC as operand (2)"
+msgstr "UNSPEC invàlid com operant (2)"
+
+#: config/s390/s390.c:3129
+msgid "UNKNOWN in s390_output_symbolic_const !?"
+msgstr "UNKNOWN en s390_output_symbolic_const !?"
+
+#: config/s390/s390.c:3147
+msgid "Cannot decompose address."
+msgstr "No es pot descompondre l'adreça."
+
+#: config/s390/s390.c:3308
+msgid "UNKNOWN in print_operand !?"
+msgstr "UNKNOWN en print_operand !?"
+
+#: config/s390/s390.c:4961
+msgid "Total size of local variables exceeds architecture limit."
+msgstr "La grandària total de les variables locals excedeix el límit de l'arquitectura."
+
+#: config/s390/s390.h:70
+msgid "Set backchain"
+msgstr "Establir la cadena cap a endarrere"
+
+#: config/s390/s390.h:71
+msgid "Don't set backchain (faster, but debug harder"
+msgstr "No establir la cadena cap a endarrere (més ràpid, però més difícil de depurar"
+
+#: config/s390/s390.h:72
+msgid "Use bras for executable < 64k"
+msgstr "Usar bras per a executable < 64k"
+
+#: config/s390/s390.h:73
+msgid "Don't use bras"
+msgstr "No usar bras"
+
+#: config/s390/s390.h:74
+msgid "Additional debug prints"
+msgstr "Impressions addicionals de depuració"
+
+#: config/s390/s390.h:75
+msgid "Don't print additional debug prints"
+msgstr "No imprimir impressions addicionals de depuració"
+
+#: config/s390/s390.h:76
+msgid "64 bit mode"
+msgstr "moda 64 bits"
+
+#: config/s390/s390.h:77
+msgid "31 bit mode"
+msgstr "moda 31 bits"
+
+#: config/s390/s390.h:78
+msgid "mvcle use"
+msgstr "ùs de mvcle"
+
+#: config/s390/s390.h:79
+msgid "mvc&ex"
+msgstr "mvc&ex"
+
+#: config/sh/sh.c:5137
+msgid "__builtin_saveregs not supported by this subtarget"
+msgstr "no es dóna suport a _builtin_saveregs en aquest subobjectiu"
+
+#: config/sh/sh.c:5687
+msgid "attribute interrupt_handler is not compatible with -m5-compact"
+msgstr ""
+
+#. The sp_switch attribute only has meaning for interrupt functions.
+#: config/sh/sh.c:5713 config/sh/sh.c:5752
+#, c-format
+msgid "`%s' attribute only applies to interrupt functions"
+msgstr "l'atribut \"%s\" aplica solament a funcions d'interrupció"
+
+#. The argument must be a constant string.
+#: config/sh/sh.c:5720
+#, c-format
+msgid "`%s' attribute argument not a string constant"
+msgstr "l'argument de l'atribut \"%s\" no és una cadena constant"
+
+#. The argument must be a constant integer.
+#: config/sh/sh.c:5759
+#, c-format
+msgid "`%s' attribute argument not an integer constant"
+msgstr "l'argument de l'atribut \"%s\" no és una cadena entera"
+
+#. There are no delay slots on SHmedia.
+#. Relaxation isn't yet supported for SHmedia
+#: config/sh/sh.h:437
+msgid "Profiling is not supported on this target."
+msgstr "No es dóna suport a anàlisi de perfil en aquest objectiu."
+
+#: config/sparc/sparc.c:329
+#, c-format
+msgid "%s is not supported by this configuration"
+msgstr "%s no té suport en aquesta configuració"
+
+#: config/sparc/sparc.c:336
+msgid "-mlong-double-64 not allowed with -m64"
+msgstr "no es permet -mlong-double-64 amb -m64"
+
+#: config/sparc/sparc.c:361
+msgid "-mcmodel= is not supported on 32 bit systems"
+msgstr "-mcmodel= no té suport en sistemes de 32 bit"
+
+#: config/sparc/sparc.c:6341 config/sparc/sparc.c:6347
+#, c-format
+msgid "invalid %%Y operand"
+msgstr "operant %%Y invàlid"
+
+#: config/sparc/sparc.c:6417
+#, c-format
+msgid "invalid %%A operand"
+msgstr "operant %%A invàlid"
+
+#: config/sparc/sparc.c:6427
+#, c-format
+msgid "invalid %%B operand"
+msgstr "operant %%B invàlid"
+
+#: config/sparc/sparc.c:6466
+#, c-format
+msgid "invalid %%c operand"
+msgstr "operant %%c invàlid"
+
+#: config/sparc/sparc.c:6467
+#, c-format
+msgid "invalid %%C operand"
+msgstr "operant %%C invàlid"
+
+#: config/sparc/sparc.c:6488
+#, c-format
+msgid "invalid %%d operand"
+msgstr "operant %%d invàlid"
+
+#: config/sparc/sparc.c:6489
+#, c-format
+msgid "invalid %%D operand"
+msgstr "operant %%D invàlid"
+
+#: config/sparc/sparc.c:6505
+#, c-format
+msgid "invalid %%f operand"
+msgstr "operant %%f invàlid"
+
+#: config/sparc/sparc.c:6519
+#, c-format
+msgid "invalid %%s operand"
+msgstr "operant %%s invàlid"
+
+#: config/sparc/sparc.c:6573
+msgid "long long constant not a valid immediate operand"
+msgstr "la constant long long no és un operant immediat vàlid"
+
+#: config/sparc/sparc.c:6576
+msgid "floating point constant not a valid immediate operand"
+msgstr "la constant de coma flotant no és un operant immediat vàlid"
+
+#: config/sparc/freebsd.h:81 config/sparc/linux.h:87 config/sparc/linux64.h:89
+#: config/sparc/netbsd-elf.h:239
+msgid "Use 128 bit long doubles"
+msgstr "Usar long doubles de 128 bits"
+
+#: config/sparc/sp64-elf.h:84 config/sparc/splet.h:29
+msgid "Generate code for big endian"
+msgstr "Generar codi per a big endian"
+
+#: config/sparc/sp64-elf.h:85 config/sparc/splet.h:30
+msgid "Generate code for little endian"
+msgstr "Generar codi per a little endian"
+
+#: config/sparc/sp86x-aout.h:51 config/sparc/sp86x-elf.h:65
+msgid "Use little-endian byte order for data"
+msgstr "Usar l'ordre d'octet little-endian per a les dades"
+
+#: config/sparc/sparc.h:532
+msgid "Assume possible double misalignment"
+msgstr "Assumir desalineació de double possible"
+
+#: config/sparc/sparc.h:534
+msgid "Assume all doubles are aligned"
+msgstr "Assumir que tots els doubles estan alineats"
+
+#: config/sparc/sparc.h:536
+msgid "Pass -assert pure-text to linker"
+msgstr "Passar el text pur de -assert al enllaçador"
+
+#: config/sparc/sparc.h:538
+msgid "Do not pass -assert pure-text to linker"
+msgstr "No passar el text pur de -assert al enllaçador"
+
+#: config/sparc/sparc.h:540
+msgid "Use flat register window model"
+msgstr "Usar el model pla de finestra de registre"
+
+#: config/sparc/sparc.h:542
+msgid "Do not use flat register window model"
+msgstr "No usar el model pla de finestra de registre"
+
+#: config/sparc/sparc.h:544
+msgid "Use ABI reserved registers"
+msgstr "Usar els registres ABI reservats"
+
+#: config/sparc/sparc.h:546
+msgid "Do not use ABI reserved registers"
+msgstr "No usar els registres ABI reservats"
+
+#: config/sparc/sparc.h:548
+msgid "Use hardware quad fp instructions"
+msgstr "Usar instruccions de fp quad de maquinari"
+
+#: config/sparc/sparc.h:550
+msgid "Do not use hardware quad fp instructions"
+msgstr "No usar instruccions de fp quad de maquinari"
+
+#: config/sparc/sparc.h:552
+msgid "Compile for v8plus ABI"
+msgstr "Compilar per a el ABI de v8plus"
+
+#: config/sparc/sparc.h:554
+msgid "Do not compile for v8plus ABI"
+msgstr "No compilar per a el ABI de v8plus"
+
+#: config/sparc/sparc.h:556
+msgid "Utilize Visual Instruction Set"
+msgstr "Utilitzar el Conjunt d'Instruccions Visuals"
+
+#: config/sparc/sparc.h:558
+msgid "Do not utilize Visual Instruction Set"
+msgstr "No utilitzar el Conjunt d'Instruccions Visuals"
+
+#. ??? These are deprecated, coerced to -mcpu=. Delete in 2.9.
+#: config/sparc/sparc.h:561
+msgid "Optimize for Cypress processors"
+msgstr "Optimitzar per als processadors Cypress"
+
+#: config/sparc/sparc.h:563
+msgid "Optimize for SPARCLite processors"
+msgstr "Optimitzar per als processadors SPARCLite"
+
+#: config/sparc/sparc.h:565
+msgid "Optimize for F930 processors"
+msgstr "Optimitzar per als processadors F930"
+
+#: config/sparc/sparc.h:567
+msgid "Optimize for F934 processors"
+msgstr "Optimitzar per als processadors F934"
+
+#: config/sparc/sparc.h:569
+msgid "Use V8 SPARC ISA"
+msgstr "Usar el ISA V8 de SPARC"
+
+#: config/sparc/sparc.h:571
+msgid "Optimize for SuperSPARC processors"
+msgstr "Optimitzar per als processadors SuperSPARC"
+
+#. End of deprecated options.
+#: config/sparc/sparc.h:574
+msgid "Pointers are 64-bit"
+msgstr "El punters són de 64 bits"
+
+#: config/sparc/sparc.h:576
+msgid "Pointers are 32-bit"
+msgstr "El punters són de 32 bits"
+
+#: config/sparc/sparc.h:578
+msgid "Use 32-bit ABI"
+msgstr "Usar el ABI 32 bits"
+
+#: config/sparc/sparc.h:580
+msgid "Use 64-bit ABI"
+msgstr "Usar el ABI 64 bits"
+
+#: config/sparc/sparc.h:582
+msgid "Use stack bias"
+msgstr "Usar tendència de la pila"
+
+#: config/sparc/sparc.h:584
+msgid "Do not use stack bias"
+msgstr "No usar tendència de la pila"
+
+#: config/sparc/sparc.h:586
+msgid "Use structs on stronger alignment for double-word copies"
+msgstr "Usar structs en alineació més forta per a còpies double-word"
+
+#: config/sparc/sparc.h:588
+msgid "Do not use structs on stronger alignment for double-word copies"
+msgstr "No usar structs en alineació més forta per a còpies double-word"
+
+#: config/sparc/sparc.h:590
+msgid "Optimize tail call instructions in assembler and linker"
+msgstr "Optimitzar les instruccions de la cridada de l'extrem en el ensemblador i el enllaçador"
+
+#: config/sparc/sparc.h:592
+msgid "Do not optimize tail call instructions in assembler or linker"
+msgstr "No optimitzar les instruccions de la cridada de l'extrem en el ensemblador i el enllaçador"
+
+#: config/sparc/sparc.h:637
+msgid "Use given SPARC code model"
+msgstr "Usar el model de codi del SPARC donat"
+
+#: config/stormy16/stormy16.c:1192
+msgid "cannot use va_start in interrupt function"
+msgstr "no es pot usar va_start en una funció d'interrupció"
+
+#: config/stormy16/stormy16.c:1552
+msgid "`B' operand is not constant"
+msgstr "l'operant \"B\" no és una constant"
+
+#: config/stormy16/stormy16.c:1558
+msgid "`B' operand has multiple bits set"
+msgstr "l'operant \"B\" té establerts múltiples bits"
+
+#: config/stormy16/stormy16.c:1585
+msgid "`o' operand is not constant"
+msgstr "l'operant \"o\" no és una constant"
+
+#: config/stormy16/stormy16.c:1600
+msgid "xstormy16_print_operand: unknown code"
+msgstr "xstormy16_print_operand: codi desconegut"
+
+#: config/stormy16/stormy16.c:1650
+#, c-format
+msgid "switch statement of size %lu entries too large"
+msgstr "la declaració switch de grandària de %lu entrades és massa gran"
+
+#: config/v850/v850-c.c:67
+msgid "#pragma GHS endXXXX found without previous startXXX"
+msgstr "es va trobar un #pragma GHS endXXXX sense un startXXX previ"
+
+#: config/v850/v850-c.c:69
+msgid "#pragma GHS endXXX does not match previous startXXX"
+msgstr "el #pragma GHS endXXXX no coincideix amb el startXXX previ"
+
+#: config/v850/v850-c.c:94
+msgid "cannot set interrupt attribute: no current function"
+msgstr "no es pot establir l'atribut d'interrupció: no hi ha funció actual"
+
+#: config/v850/v850-c.c:102
+msgid "cannot set interrupt attribute: no such identifier"
+msgstr "no es pot establir l'atribut d'interrupció: no hi ha tal identificador"
+
+#: config/v850/v850-c.c:148
+msgid "junk at end of #pragma ghs section"
+msgstr "escombraries al final de la secció #pragma ghs"
+
+#: config/v850/v850-c.c:165
+#, c-format
+msgid "unrecognized section name \"%s\""
+msgstr "no es reconeix el nom de secció \"%s\""
+
+#: config/v850/v850-c.c:180
+msgid "malformed #pragma ghs section"
+msgstr "secció #pragma ghs malformada"
+
+#: config/v850/v850-c.c:200
+msgid "junk at end of #pragma ghs interrupt"
+msgstr "escombraries al final del #pragma ghs interrupt"
+
+#: config/v850/v850-c.c:212
+msgid "junk at end of #pragma ghs starttda"
+msgstr "escombraries al final del #pragma ghs starttda"
+
+#: config/v850/v850-c.c:224
+msgid "junk at end of #pragma ghs startsda"
+msgstr "escombraries al final del #pragma ghs startsda"
+
+#: config/v850/v850-c.c:236
+msgid "junk at end of #pragma ghs startzda"
+msgstr "escombraries al final del #pragma ghs startzda"
+
+#: config/v850/v850-c.c:248
+msgid "junk at end of #pragma ghs endtda"
+msgstr "escombraries al final del #pragma ghs endtda"
+
+#: config/v850/v850-c.c:260
+msgid "junk at end of #pragma ghs endsda"
+msgstr "escombraries al final del #pragma ghs endsda"
+
+#: config/v850/v850-c.c:272
+msgid "junk at end of #pragma ghs endzda"
+msgstr "escombraries al final del #pragma ghs endzda"
+
+#: config/v850/v850.c:129
+#, c-format
+msgid "%s=%s is not numeric"
+msgstr "%s=%s no és numèric"
+
+#: config/v850/v850.c:136
+#, c-format
+msgid "%s=%s is too large"
+msgstr "%s=%s é massa gran"
+
+#: config/v850/v850.c:302
+msgid "const_double_split got a bad insn:"
+msgstr "const_double_split va rebre un insn erroni:"
+
+#: config/v850/v850.c:837
+msgid "output_move_single:"
+msgstr "output_move_single:"
+
+#: config/v850/v850.c:2217
+msgid "a data area attribute cannot be specified for local variables"
+msgstr "no es pot especificar un atribut d'àrea de dades per a variables locals"
+
+#: config/v850/v850.c:2228
+#, c-format
+msgid "data area of '%s' conflicts with previous declaration"
+msgstr "l'àrea de dades de \"%s\" en conflicte amb una declaració prèvia"
+
+#: config/v850/v850.c:2447
+#, c-format
+msgid "bogus JR construction: %d\n"
+msgstr "construcció JR ambigua: %d\n"
+
+#: config/v850/v850.c:2468 config/v850/v850.c:2670
+#, c-format
+msgid "bad amount of stack space removal: %d"
+msgstr "quantitat errònia d'eliminació d'espai de pila: %d"
+
+#: config/v850/v850.c:2646
+#, c-format
+msgid "bogus JARL construction: %d\n"
+msgstr "construcció JARL ambigua: %d\n"
+
+#: config/v850/v850.c:3026
+#, c-format
+msgid "Bogus DISPOSE construction: %d\n"
+msgstr "construcció DISPOSE ambigua: %d\n"
+
+#: config/v850/v850.c:3048
+#, c-format
+msgid "Too much stack space to dispose of: %d"
+msgstr ""
+
+#: config/v850/v850.c:3224
+#, c-format
+msgid "Bogus PREPEARE construction: %d\n"
+msgstr "construcció PREPEARE ambigua: %d\n"
+
+#: config/v850/v850.c:3246
+#, c-format
+msgid "Too much stack space to prepare: %d"
+msgstr "Massa espai de pila per a preparar: %d"
+
+#. 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/v850/v850.h:158
+msgid "Support Green Hills ABI"
+msgstr "Dona suport al ABI Green Hills"
+
+#: config/v850/v850.h:161
+msgid "Prohibit PC relative function calls"
+msgstr "Prohibir la cridada a funcions relatives al PC"
+
+#: config/v850/v850.h:164
+msgid "Reuse r30 on a per function basis"
+msgstr "Reusar r30 basat per funció"
+
+#: config/v850/v850.h:167
+msgid "Use stubs for function prologues"
+msgstr "Usar caps per als pròlegs de funció"
+
+#: config/v850/v850.h:170
+msgid "Same as: -mep -mprolog-function"
+msgstr "Igual que: -mep -mprolog-function"
+
+#: config/v850/v850.h:171
+msgid "Enable backend debugging"
+msgstr "Habilitar la depuració per la fi"
+
+#: config/v850/v850.h:173
+msgid "Compile for the v850 processor"
+msgstr "Compilar per al processador v850"
+
+#: config/v850/v850.h:175
+msgid "Compile for v850e processor"
+msgstr "Compilar per al processador v850e"
+
+#. Make sure that the other bits are cleared.
+#: config/v850/v850.h:177
+msgid "Enable the use of the short load instructions"
+msgstr "Activar l'ús de les instruccions short load"
+
+#: config/v850/v850.h:180
+msgid "Do not use the callt instruction"
+msgstr "No usar la instrucció callt"
+
+#: config/v850/v850.h:187
+msgid "Do not use registers r2 and r5"
+msgstr "No usar els registres r2 i r5"
+
+#: config/v850/v850.h:189
+msgid "Enforce strict alignment"
+msgstr "Reforçar l'alineació estricta"
+
+#: config/v850/v850.h:192
+msgid "Use 4 byte entries in switch tables"
+msgstr "Usar entrades de 4 octet en les matrius de switch"
+
+#: config/v850/v850.h:218
+msgid "Set the max size of data eligible for the TDA area"
+msgstr "Establir la grandària màxima de dades elegibles per a l'àrea TDA"
+
+#: config/v850/v850.h:221
+msgid "Set the max size of data eligible for the SDA area"
+msgstr "Establir la grandària màxima de dades elegibles per a l'àrea SDA"
+
+#: config/v850/v850.h:224
+msgid "Set the max size of data eligible for the ZDA area"
+msgstr "Establir la grandària màxima de dades elegibles per a l'àrea ZDA"
+
+#: config/xtensa/xtensa.c:1062 config/xtensa/xtensa.c:1096
+#: config/xtensa/xtensa.c:1105
+msgid "bad test"
+msgstr "prova errònia"
+
+#: config/xtensa/xtensa.c:1824
+msgid "boolean registers required for the floating-point option"
+msgstr "es requereixen registres booleans per a l'opció de coma flotant"
+
+#: config/xtensa/xtensa.c:1991
+msgid "invalid mask"
+msgstr "màscara invàlida"
+
+#: config/xtensa/xtensa.c:2038
+msgid "invalid address"
+msgstr "adreça invàlida"
+
+#: config/xtensa/xtensa.c:2063
+msgid "no register in address"
+msgstr "no hi ha registre en l'adreça"
+
+#: config/xtensa/xtensa.c:2071
+msgid "address offset not a constant"
+msgstr "el desplaçament d'adreça no és una constant"
+
+#: config/xtensa/xtensa.c:2794
+msgid "only uninitialized variables can be placed in a .bss section"
+msgstr "només les variables sense inicialitzar es poden col·locar en una secció .bss"
+
+#: config/xtensa/xtensa.h:114
+msgid "Use the Xtensa code density option"
+msgstr "Usar l'opció de densitat del codi Xtensa"
+
+#: config/xtensa/xtensa.h:116
+msgid "Do not use the Xtensa code density option"
+msgstr "No usar l'opció de densitat del codi Xtensa"
+
+#: config/xtensa/xtensa.h:118
+msgid "Use the Xtensa MAC16 option"
+msgstr "Usar l'opció MAC16 de Xtensa"
+
+#: config/xtensa/xtensa.h:120
+msgid "Do not use the Xtensa MAC16 option"
+msgstr "No usar l'opció MAC16 de Xtensa"
+
+#: config/xtensa/xtensa.h:122
+msgid "Use the Xtensa MUL16 option"
+msgstr "Usar l'opció MUL16 de Xtensa"
+
+#: config/xtensa/xtensa.h:124
+msgid "Do not use the Xtensa MUL16 option"
+msgstr "No usar l'opció MUL16 de Xtensa"
+
+#: config/xtensa/xtensa.h:126
+msgid "Use the Xtensa MUL32 option"
+msgstr "Usar l'opció MUL32 de Xtensa"
+
+#: config/xtensa/xtensa.h:128
+msgid "Do not use the Xtensa MUL32 option"
+msgstr "No usar l'opció MUL32 de Xtensa"
+
+#. undocumented
+#. undocumented
+#: config/xtensa/xtensa.h:134
+msgid "Use the Xtensa NSA option"
+msgstr "Usar l'opció NSA de Xtensa"
+
+#: config/xtensa/xtensa.h:136
+msgid "Do not use the Xtensa NSA option"
+msgstr "No usar l'opció NSA de Xtensa"
+
+#: config/xtensa/xtensa.h:138
+msgid "Use the Xtensa MIN/MAX option"
+msgstr "Usar l'opció MIN/MAX de Xtensa"
+
+#: config/xtensa/xtensa.h:140
+msgid "Do not use the Xtensa MIN/MAX option"
+msgstr "No usar l'opció MIN/MAX de Xtensa"
+
+#: config/xtensa/xtensa.h:142
+msgid "Use the Xtensa SEXT option"
+msgstr "Usar l'opció SEXT de Xtensa"
+
+#: config/xtensa/xtensa.h:144
+msgid "Do not use the Xtensa SEXT option"
+msgstr "No usar l'opció SEXT de Xtensa"
+
+#: config/xtensa/xtensa.h:146
+msgid "Use the Xtensa boolean register option"
+msgstr "Usar l'opció de registre booleà de Xtensa"
+
+#: config/xtensa/xtensa.h:148
+msgid "Do not use the Xtensa boolean register option"
+msgstr "No usar l'opció de registre booleà de Xtensa"
+
+#: config/xtensa/xtensa.h:150
+msgid "Use the Xtensa floating-point unit"
+msgstr "Usar la unitat de coma flotant de Xtensa"
+
+#: config/xtensa/xtensa.h:152
+msgid "Do not use the Xtensa floating-point unit"
+msgstr "No usar la unitat de coma flotant de Xtensa"
+
+#. undocumented
+#. undocumented
+#. undocumented
+#. undocumented
+#. undocumented
+#. undocumented
+#. undocumented
+#. undocumented
+#: config/xtensa/xtensa.h:170
+msgid "Disable fused multiply/add and multiply/subtract FP instructions"
+msgstr "Desactivar les instruccions FP multiply/add i multiply/substract de curt circuit"
+
+#: config/xtensa/xtensa.h:172
+msgid "Enable fused multiply/add and multiply/subtract FP instructions"
+msgstr "Activar les instruccions FP multiply/add i multiply/substract de curt circuit"
+
+#: config/xtensa/xtensa.h:174
+msgid "Serialize volatile memory references with MEMW instructions"
+msgstr "Serialitzar les referències a memòria volàtil amb instruccions MEMW"
+
+#: config/xtensa/xtensa.h:176
+msgid "Do not serialize volatile memory references with MEMW instructions"
+msgstr "No serialitzar les referències a memòria volàtil amb instruccions MEMW"
+
+#: config/xtensa/xtensa.h:178
+msgid "Intersperse literal pools with code in the text section"
+msgstr "Entremesclar els conjunts de literals amb codi en la secció de text"
+
+#: config/xtensa/xtensa.h:180
+msgid "Put literal pools in a separate literal section"
+msgstr "Posar els conjunts de literals en una secció literal separada"
+
+#: config/xtensa/xtensa.h:182
+msgid "Automatically align branch targets to reduce branch penalties"
+msgstr "Alinear automàticament els objectius de les ramificacions per a reduir les faltes de ramificació"
+
+#: config/xtensa/xtensa.h:184
+msgid "Do not automatically align branch targets"
+msgstr "No alinear automàticament els objectius de les ramificacions"
+
+#: config/xtensa/xtensa.h:186
+msgid "Use indirect CALLXn instructions for large programs"
+msgstr "Usar instruccions CALLXn indirectes per a programes grans"
+
+#: config/xtensa/xtensa.h:188
+msgid "Use direct CALLn instructions for fast calls"
+msgstr "Usar instruccions CALLn directes per a cridades ràpides"
+
+#: ada/misc.c:233
+msgid "`-gnat' misspelled as `-gant'"
+msgstr "\"-gnat\" mal lletrejat com \"-gant\""
+
+#: cp/call.c:261 cp/init.c:1594
+msgid "qualified type `%T' does not match destructor name `~%T'"
+msgstr "el tipus qualificat \"%T\" no coincideix amb el nom del destructor \"~%T\""
+
+#: cp/call.c:270
+msgid "type of `%E' does not match destructor type `%T' (type was `%T')"
+msgstr "el tipus de \"%E\" no coincideix amb el tipus del destructor \"%T\" (el tipus era \"%T\")"
+
+#: cp/call.c:279
+msgid "`%D' is a namespace"
+msgstr "\"%D\" és un nom d'espai"
+
+#: cp/call.c:287
+msgid "base object `%E' of scoped method call is of non-aggregate type `%T'"
+msgstr "l'objecte base \"%E\" de la cridada de mètode de l'ambient és del tipus no agregat \"%T\""
+
+#: cp/call.c:369
+msgid "unable to call pointer to member function here"
+msgstr "no es pot cridar un punter a una funció membre aquí"
+
+#: cp/call.c:518
+msgid "destructors take no parameters"
+msgstr "els destructors no prenen paràmetres"
+
+#: cp/call.c:522
+msgid "destructor name `~%T' does not match type `%T' of expression"
+msgstr "el nom del destructor \"%T\" no coincideix amb el tipus \"%T\" de l'expressió"
+
+#: cp/call.c:543 cp/call.c:5000
+msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+msgstr "sol·licitud pel membre \"%D\" en \"%E\" el qual és del tipus no agregat \"%T\""
+
+#: cp/call.c:567
+msgid "request for member `%D' is ambiguous"
+msgstr "a petició per al membre \"%D\" és ambigua"
+
+#: cp/call.c:2537
+msgid "%s %D(%T, %T, %T) <built-in>"
+msgstr "%s %D(%T, %T, %T) <intern>"
+
+#: cp/call.c:2542
+msgid "%s %D(%T, %T) <built-in>"
+msgstr "%s %D(%T, %T) <intern>"
+
+#: cp/call.c:2546
+msgid "%s %D(%T) <built-in>"
+msgstr "%s %D(%T) <intern>"
+
+#: cp/call.c:2550
+msgid "%s %T <conversion>"
+msgstr "%s %T <conversió>"
+
+#: cp/call.c:2552
+msgid "%s %+#D%s"
+msgstr "%s %+#D%s"
+
+#: cp/call.c:2726
+msgid "conversion from `%T' to `%T' is ambiguous"
+msgstr "la conversió de \"%T\" a \"%T\" és ambigua"
+
+#: cp/call.c:2803
+msgid "`%T' is not a class type"
+msgstr "\"%T\" no és un tipus de classe"
+
+#: cp/call.c:2811
+msgid "incomplete type '%T' cannot be used to name a scope"
+msgstr "el tipus incomplet \"%T\" no es pot utilitzar per a nomenar un àmbit"
+
+#: cp/call.c:2831 cp/typeck.c:2188 cp/typeck.c:2217
+msgid "'%D' has no member named '%E'"
+msgstr "\"%D\" no té un membre cridat \"%E\""
+
+#: cp/call.c:2933
+msgid "no matching function for call to `%D(%A)'"
+msgstr "no hi ha una funció coincident per a la cridada a \"%D(%A)\""
+
+#: cp/call.c:2944 cp/call.c:5087
+msgid "call of overloaded `%D(%A)' is ambiguous"
+msgstr "la cridada del \"%D(%A)\" sobrecarregat és ambigua"
+
+#. It's no good looking for an overloaded operator() on a
+#. pointer-to-member-function.
+#: cp/call.c:2971
+#, c-format
+msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*"
+msgstr "la funció punter-a-membre %E no es pot cridar dintre d'un objecte; consideri utilitzar .* o ->*"
+
+#: cp/call.c:3036
+msgid "no match for call to `(%T) (%A)'"
+msgstr "no hi ha coincidència per a la cridada a \"(%T) (%A)\""
+
+#: cp/call.c:3046
+msgid "call of `(%T) (%A)' is ambiguous"
+msgstr "la cridada de \"(%T) (%A)\" és ambigua"
+
+#: cp/call.c:3081
+#, c-format
+msgid "%s for ternary 'operator?:' in '%E ? %E : %E'"
+msgstr ""
+
+#: cp/call.c:3087
+#, c-format
+msgid "%s for 'operator%s' in '%E%s'"
+msgstr "%s per a \"operator%s\" en \"%E%s\""
+
+#: cp/call.c:3091
+#, c-format
+msgid "%s for 'operator[]' in '%E[%E]'"
+msgstr ""
+
+#: cp/call.c:3096
+#, c-format
+msgid "%s for 'operator%s' in '%E %s %E'"
+msgstr ""
+
+#: cp/call.c:3099
+#, c-format
+msgid "%s for 'operator%s' in '%s%E'"
+msgstr "%s per a \"operador%s\" en \"%s%E\""
+
+#: cp/call.c:3191
+msgid "ISO C++ forbids omitting the middle term of a ?: expression"
+msgstr "ISO C++ prohibeix l'omissió del terme mig d'una expressió ?:"
+
+#: cp/call.c:3250
+#, c-format
+msgid "`%E' has type `void' and is not a throw-expression"
+msgstr "\"%E\" té tipus \"void\" i no és una expressió throw"
+
+#: cp/call.c:3283 cp/call.c:3475
+msgid "operands to ?: have different types"
+msgstr "els operants de ?: tenen tipus diferents"
+
+#: cp/call.c:3428
+msgid "enumeral mismatch in conditional expression: `%T' vs `%T'"
+msgstr "no coincideix el enumeral en l'expressió condicional: \"%T\" vs \"%T\""
+
+#: cp/call.c:3435
+msgid "enumeral and non-enumeral type in conditional expression"
+msgstr "tipus enumeral i no enumeral en l'expressió condicional"
+
+#: cp/call.c:3516
+msgid "`%D' must be declared before use"
+msgstr "es deu declarar \"%D\" abans del seu ús"
+
+#: cp/call.c:3706
+msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead"
+msgstr "no es va declarar \"%D(int)\" per al \"%s\" postfix, intentant en el seu lloc l'operador prefix"
+
+#: cp/call.c:3753
+msgid "using synthesized `%#D' for copy assignment"
+msgstr "usant \"%#D\" sintetitzat per a assignació de còpia"
+
+#: cp/call.c:3755
+msgid " where cfront would use `%#D'"
+msgstr " on cfront podria usar \"%#D\""
+
+#: cp/call.c:3782
+msgid "comparison between `%#T' and `%#T'"
+msgstr "comparança entre \"%#T\" i \"%#T\""
+
+#: cp/call.c:4021
+msgid "no suitable `operator delete' for `%T'"
+msgstr "no hi ha un operador \"operator delete\" adequat per a \"%T\""
+
+#: cp/call.c:4040
+msgid "`%+#D' is private"
+msgstr "\"%+#D\" és privat"
+
+#: cp/call.c:4042
+msgid "`%+#D' is protected"
+msgstr "\"%+#D\" està protegit"
+
+#: cp/call.c:4044
+msgid "`%+#D' is inaccessible"
+msgstr "\"%+#D\" és inaccessible"
+
+#: cp/call.c:4045
+msgid "within this context"
+msgstr "des d'aquest context"
+
+#: cp/call.c:4088
+msgid "invalid conversion from `%T' to `%T'"
+msgstr "conversió invàlida de \"%T\" a \"%T\""
+
+#: cp/call.c:4090 cp/call.c:4229 cp/call.c:4231
+msgid " initializing argument %P of `%D'"
+msgstr " inicialitzant l'argument %P de \"%D\""
+
+#: cp/call.c:4152 cp/call.c:4156
+msgid " initializing argument %P of `%D' from result of `%D'"
+msgstr " inicialitzant l'argument %P de \"%D\" a partir del resultat de \"%D\""
+
+#: cp/call.c:4162 cp/call.c:4165
+msgid " initializing temporary from result of `%D'"
+msgstr " inicialitzant el temporal a partir del resultat de \"%D\""
+
+#. Undefined behavior [expr.call] 5.2.2/7. We used to just warn
+#. here and do a bitwise copy, but now cp_expr_size will abort if we
+#. try to do that.
+#: cp/call.c:4316
+msgid "cannot pass objects of non-POD type `%#T' through `...'; call will abort at runtime"
+msgstr "no es pot passar objectes de tipus \"%#T\" que no és POD a través de \"...\"; la cridada avortarà en temps d'execució"
+
+#. Undefined behavior [expr.call] 5.2.2/7.
+#: cp/call.c:4343
+msgid "cannot receive objects of non-POD type `%#T' through `...'"
+msgstr "no es pot rebre objectes de tipus \"%#T\" que no és POD a través de \"...\""
+
+#: cp/call.c:4523
+msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
+msgstr "passar \"%T\" com l'argument \"this\" de \"%#D\" descarta als qualificadors"
+
+#: cp/call.c:4542
+msgid "`%T' is not an accessible base of `%T'"
+msgstr "\"%T\" no és una base inaccessible de \"%T\""
+
+#: cp/call.c:4786
+msgid "could not find class$ field in java interface type `%T'"
+msgstr "no es va poder trobar un camp class$ en el tipus d'interfície java \"%T\""
+
+#: cp/call.c:4974
+msgid "call to non-function `%D'"
+msgstr "cridada a \"%D\" que no és funció"
+
+#: cp/call.c:5076
+msgid "no matching function for call to `%T::%D(%A)%#V'"
+msgstr "no es troba una funció coincident per a la cridada a \"%T::%D(%A)%#V\""
+
+#: cp/call.c:5106
+msgid "cannot call member function `%D' without object"
+msgstr "no es pot cridar a la funció membre \"%D\" sense un objecte"
+
+#: cp/call.c:5704
+msgid "passing `%T' chooses `%T' over `%T'"
+msgstr "passar \"%T\" escull \"%T\" sobre \"%T\""
+
+#: cp/call.c:5706 cp/decl2.c:4154
+msgid " in call to `%D'"
+msgstr " en la cridada a \"%D\""
+
+#: cp/call.c:5755
+msgid "choosing `%D' over `%D'"
+msgstr "escollint \"%D\" sobre \"%D\""
+
+#: cp/call.c:5756
+msgid " for conversion from `%T' to `%T'"
+msgstr " per a la conversió de \"%T\" a \"%T\""
+
+#: cp/call.c:5758
+msgid " because conversion sequence for the argument is better"
+msgstr " perquè la seqüència de conversió per a l'argument és millor"
+
+#: cp/call.c:5879
+msgid "ISO C++ says that `%D' and `%D' are ambiguous even though the worst conversion for the former is better than the worst conversion for the latter"
+msgstr ""
+
+#: cp/call.c:5996
+msgid "could not convert `%E' to `%T'"
+msgstr "no es pot convertir \"%E\" a \"%T\""
+
+#: cp/call.c:6105
+msgid "invalid initialization of non-const reference of type '%T' from a temporary of type '%T'"
+msgstr "const_cast invàlid d'un rvalue de tipus \"%T\" al tipus \"%T\""
+
+#: cp/call.c:6109
+msgid "invalid initialization of reference of type '%T' from expression of type '%T'"
+msgstr "initialització invàlida de reference de tipus \"%T\" a partir d'una expressió de tipus \"%T\""
+
+#: cp/class.c:287
+msgid "cannot convert from base `%T' to derived type `%T' via virtual base `%T'"
+msgstr "no es pot convertir de la base \"%T\" al tipus derivat \"%T\" a través de la base virtual \"%T\""
+
+#: cp/class.c:992
+msgid "`%#D' and `%#D' cannot be overloaded"
+msgstr "no es poden sobrecarregar \"%#D\" i \"%#D\""
+
+#: cp/class.c:1076
+msgid "duplicate enum value `%D'"
+msgstr "valor enum duplicat \"%D\""
+
+#: cp/class.c:1079
+msgid "duplicate field `%D' (as enum and non-enum)"
+msgstr "camp duplicat \"%D\" (com enum i non-enum)"
+
+#: cp/class.c:1086
+msgid "duplicate nested type `%D'"
+msgstr "tipus niat duplicat \"%D\""
+
+#: cp/class.c:1097
+msgid "duplicate field `%D' (as type and non-type)"
+msgstr "camp duplicat \"%D\" (com tipus i no tipus)"
+
+#: cp/class.c:1101
+msgid "duplicate member `%D'"
+msgstr "membre duplicat \"%D\""
+
+#: cp/class.c:1144
+msgid "conflicting access specifications for method `%D', ignored"
+msgstr "especificacions d'accés en conflicte per al mètode \"%D\", ignorat"
+
+#: cp/class.c:1146
+#, c-format
+msgid "conflicting access specifications for field `%s', ignored"
+msgstr "especificacions d'accés en conflicte per al camp \"%s\", ignorat"
+
+#: cp/class.c:1194
+msgid "`%D' names constructor"
+msgstr "\"%D\" nomena al constructor"
+
+#: cp/class.c:1199
+msgid "`%D' invalid in `%T'"
+msgstr "\"%D\" invàlid en \"%#T\""
+
+#: cp/class.c:1207
+msgid "no members matching `%D' in `%#T'"
+msgstr "no hi ha membres que coincideixin amb \"%D\" en \"%#T\""
+
+#: cp/class.c:1239 cp/class.c:1247
+msgid "`%D' invalid in `%#T'"
+msgstr "\"%D\" invàlid en \"%#T\""
+
+#: cp/class.c:1240
+msgid " because of local method `%#D' with same name"
+msgstr " a causa del mètode local \"%D\" amb el mateix nom"
+
+#: cp/class.c:1248
+msgid " because of local member `%#D' with same name"
+msgstr " a causa del membre local \"%D\" amb el mateix nom"
+
+#: cp/class.c:1320
+msgid "base class `%#T' has a non-virtual destructor"
+msgstr "la classe base \"%#T\" té un destructor no virtual"
+
+#: cp/class.c:1340
+msgid "base `%T' with only non-default constructor in class without a constructor"
+msgstr "base \"%#T\" amb només un constructor que no és per omissió en una classe sense un constructor"
+
+#: cp/class.c:1912
+msgid "all member functions in class `%T' are private"
+msgstr "tots les funcions membres en la classe \"%#T\" són privades"
+
+#: cp/class.c:1926
+msgid "`%#T' only defines a private destructor and has no friends"
+msgstr "\"%#T\" solament defineix un destructor privat i no té friends"
+
+#: cp/class.c:1969
+msgid "`%#T' only defines private constructors and has no friends"
+msgstr "\"%#T\" solament defineix constructors privats i no té friends"
+
+#: cp/class.c:2090 cp/class.c:5276
+msgid "redefinition of `%#T'"
+msgstr "redefinició de \"%#T\""
+
+#: cp/class.c:2091
+msgid "previous definition of `%#T'"
+msgstr "definició prèvia de \"%#T\""
+
+#: cp/class.c:2365
+msgid "no unique final overrider for `%D' in `%T'"
+msgstr "no hi ha un eixafador únic final per a \"%D\" en \"%#T\""
+
+#. Here we know it is a hider, and no overrider exists.
+#: cp/class.c:2712
+msgid "`%D' was hidden"
+msgstr "\"%D\" estava amagat"
+
+#: cp/class.c:2713
+msgid " by `%D'"
+msgstr " per \"%D\""
+
+#: cp/class.c:2755
+msgid "ISO C++ forbids member `%D' with same name as enclosing class"
+msgstr "ISO C++ prohibeix que el membre \"%D\" tingui el mateix nom que la classe que ho conté"
+
+#: cp/class.c:2760 cp/decl2.c:1331
+msgid "`%#D' invalid; an anonymous union can only have non-static data members"
+msgstr "\"%D\" invàlid; un union anònim només pot tenir membres amb dades no estàtiques"
+
+#: cp/class.c:2766 cp/decl2.c:1337
+msgid "private member `%#D' in anonymous union"
+msgstr "membre privat \"%D\" en union anònima"
+
+#: cp/class.c:2769 cp/decl2.c:1339
+msgid "protected member `%#D' in anonymous union"
+msgstr "membre protegit \"%D\" en union anònima"
+
+#: cp/class.c:2894
+msgid "vtable layout for class `%T' may not be ABI-compliant and may change in a future version of GCC due to implicit virtual destructor"
+msgstr ""
+
+#: cp/class.c:2958
+msgid "bit-field `%#D' with non-integral type"
+msgstr "camp de bits \"%D\" amb tipus no enter"
+
+#: cp/class.c:2978
+msgid "bit-field `%D' width not an integer constant"
+msgstr "l'amplària del camp de bits \"%D\" no és una constant entera"
+
+#: cp/class.c:2984
+msgid "negative width in bit-field `%D'"
+msgstr "amplària negativa en el camp de bit \"%D\""
+
+#: cp/class.c:2989
+msgid "zero width for bit-field `%D'"
+msgstr "amplària zero per al camp de bits \"%D\""
+
+#: cp/class.c:2995
+msgid "width of `%D' exceeds its type"
+msgstr "l'amplària de \"%D\" excedeix el seu tipus"
+
+#: cp/class.c:3004
+msgid "`%D' is too small to hold all values of `%#T'"
+msgstr "\"%D\" és massa petit per a guardar tots els valors de \"%#T\""
+
+#: cp/class.c:3088
+msgid "member `%#D' with constructor not allowed in union"
+msgstr "no es permet el membre \"%D\" amb constructor en la union"
+
+#: cp/class.c:3091
+msgid "member `%#D' with destructor not allowed in union"
+msgstr "no es permet el membre \"%D\" amb destructor en la union"
+
+#: cp/class.c:3094
+msgid "member `%#D' with copy assignment operator not allowed in union"
+msgstr "no es permet el membre \"%D\" amb operador d'assignació de còpia en la union"
+
+#: cp/class.c:3121
+msgid "multiple fields in union `%T' initialized"
+msgstr "múltiples camps inicialitzats en la unió \"%#T\""
+
+#: cp/class.c:3234
+msgid "field `%D' in local class cannot be static"
+msgstr "el camp \"%D\" en la classe local no pot ser static"
+
+#: cp/class.c:3240
+msgid "field `%D' invalidly declared function type"
+msgstr "el camp \"%D\" és declarat invàlidament com un tipus de funció"
+
+#: cp/class.c:3247
+msgid "field `%D' invalidly declared method type"
+msgstr "el camp \"%D\" és declarat invàlidament com un tipus de mètode"
+
+#: cp/class.c:3253
+msgid "field `%D' invalidly declared offset type"
+msgstr "el camp \"%D\" és declarat invàlidament com un tipus de desplaçament"
+
+#. Unions cannot have static members.
+#: cp/class.c:3271
+msgid "field `%D' declared static in union"
+msgstr "el camp \"%D\" és declarat com static en la unió"
+
+#: cp/class.c:3298
+msgid "non-static reference `%#D' in class without a constructor"
+msgstr "referència \"%D\" que no és static en una classe sense un constructor"
+
+#: cp/class.c:3333
+msgid "non-static const member `%#D' in class without a constructor"
+msgstr "membre const \"%D\" que no és static en una classe sense un constructor"
+
+#: cp/class.c:3349
+msgid "field `%#D' with same name as class"
+msgstr "camp \"%D\" amb el mateix nom que la classe"
+
+#: cp/class.c:3367
+msgid "`%#T' has pointer data members"
+msgstr "\"%#T\" té membres punters a dades"
+
+#: cp/class.c:3371
+msgid " but does not override `%T(const %T&)'"
+msgstr " però no s'imposa a \"%T(const %T&)\""
+
+#: cp/class.c:3373
+msgid " or `operator=(const %T&)'"
+msgstr " o a \"operator=(cont %T&)\""
+
+#: cp/class.c:3376
+msgid " but does not override `operator=(const %T&)'"
+msgstr " però no s'imposa a \"operator=(const %T&)\""
+
+#: cp/class.c:3826
+msgid "offset of empty base `%T' may not be ABI-compliant and maychange in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:3935
+msgid "class `%T' will be considered nearly empty in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:4025
+msgid "initializer specified for non-virtual method `%D'"
+msgstr "es va especificar un inicialitzador per al mètode no virtual \"%D\""
+
+#: cp/class.c:4761
+msgid "offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:4861
+msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
+msgstr "base directa \"%T\" inaccessible en \"%T\" a causa de ambigüitat"
+
+#: cp/class.c:4874
+msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
+msgstr "base virtual \"%T\" inaccessible en \"%T\" a causa de ambigüitat"
+
+#: cp/class.c:5030
+msgid "size assigned to `%T' may not be ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#. Versions of G++ before G++ 3.4 did not reset the
+#. DECL_MODE.
+#: cp/class.c:5053
+msgid "the offset of `%D' may not be ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5079
+msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5088
+msgid "`%D' contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5147
+msgid "layout of classes derived from empty class `%T' may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5432
+msgid "`%#T' has virtual functions but non-virtual destructor"
+msgstr "\"%#T\" té funcions virtuals però destructors no virtuals"
+
+#: cp/class.c:5516
+msgid "trying to finish struct, but kicked out due to previous parse errors"
+msgstr "es va tractar d'acabar struct, però va ser tret a causa de errors previs de decodificació"
+
+#: cp/class.c:5982
+#, c-format
+msgid "language string `\"%s\"' not recognized"
+msgstr "cadena de llenguatge \"\"%s\"\" no reconeguda"
+
+#: cp/class.c:6078
+msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
+msgstr "no es pot resoldre la funció sobrecarregada \"%D\" basant-se en la conversió al tipus \"%T\""
+
+#: cp/class.c:6203
+msgid "no matches converting function `%D' to type `%#T'"
+msgstr "no hi ha coincidències al convertir la funció \"%D\" al tipus \"%#T\""
+
+#: cp/class.c:6226
+msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
+msgstr "la conversió de la funció sobrecarregada \"%D\" al tipus \"%#T\" és ambigua"
+
+#: cp/class.c:6252
+msgid "assuming pointer to member `%D'"
+msgstr "assumint el punter a membre \"%D\""
+
+#: cp/class.c:6255
+#, c-format
+msgid "(a pointer to member can only be formed with `&%E')"
+msgstr "(un punter a membre solament es pot formar amb \"&%E\")"
+
+#: cp/class.c:6306 cp/class.c:6477 cp/class.c:6484
+msgid "not enough type information"
+msgstr "no hi ha suficient informació de tipus"
+
+#: cp/class.c:6315
+msgid "argument of type `%T' does not match `%T'"
+msgstr "l'argument de tipus \"%T\" no coincideix amb \"%T\""
+
+#: cp/class.c:6461
+msgid "invalid operation on uninstantiated type"
+msgstr "operació invàlida en tipus no instanciat"
+
+#. [basic.scope.class]
+#.
+#. A name N used in a class S shall refer to the same declaration
+#. in its context and when re-evaluated in the completed scope of
+#. S.
+#: cp/class.c:6745 cp/decl.c:1254 cp/decl.c:3379 cp/pt.c:2004
+msgid "declaration of `%#D'"
+msgstr "la declaració de \"%#D\""
+
+#: cp/class.c:6746
+msgid "changes meaning of `%D' from `%+#D'"
+msgstr "canvia el significat de \"%D\" a partir de \"%+#D\""
+
+#: cp/cvt.c:88
+msgid "can't convert from incomplete type `%T' to `%T'"
+msgstr "no es pot convertir des del tipus de dada incompleta \"%T\" a \"%T\""
+
+#: cp/cvt.c:97
+msgid "conversion of `%E' from `%T' to `%T' is ambiguous"
+msgstr "la conversió de \"%E\" des de \"%T\" a \"%T\" és ambigua"
+
+#: cp/cvt.c:126
+msgid "converting from `%T' to `%T'"
+msgstr "convertint de \"%T\" a \"%T\""
+
+#: cp/cvt.c:203 cp/cvt.c:207
+msgid "pointer to member cast from `%T' to `%T' is via virtual base"
+msgstr "el punter a la conversió de membre de \"%T\" a \"%T\" és a través d'una base virtual"
+
+#: cp/cvt.c:225 cp/cvt.c:236 cp/cvt.c:283
+msgid "cannot convert `%E' from type `%T' to type `%T'"
+msgstr "no es pot convertir \"%E\" des del tipus \"%T\" al tipus \"%T\""
+
+#: cp/cvt.c:262
+msgid "invalid conversion from '%T' to '%T'"
+msgstr "conversió invàlida de \"%T\" a \"%T\""
+
+#: cp/cvt.c:504
+msgid "conversion from `%T' to `%T' discards qualifiers"
+msgstr "la conversió de \"%T\" a \"%T\" descarta els qualificadors"
+
+#: cp/cvt.c:522
+msgid "casting `%T' to `%T' does not dereference pointer"
+msgstr "la conversió de \"%T\" a \"%T\" no dereferencia els punters"
+
+#: cp/cvt.c:551
+msgid "cannot convert type `%T' to type `%T'"
+msgstr "no es pot convertir del tipus \"%T\" al tipus \"%T\""
+
+#: cp/cvt.c:683
+msgid "conversion from `%#T' to `%#T'"
+msgstr "conversió de \"%#T\" a \"%#T\""
+
+#: cp/cvt.c:695
+msgid "`%#T' used where a `%T' was expected"
+msgstr "es va usar un \"%#T\" on s'esperava un \"%T\""
+
+#: cp/cvt.c:712
+msgid "the address of `%D', will always be `true'"
+msgstr "l'adreça de \"%D\", sempre serà \"true\""
+
+#: cp/cvt.c:732
+msgid "`%#T' used where a floating point value was expected"
+msgstr "es va usar un \"%#T\" on s'esperava un valor de coma flotant"
+
+#: cp/cvt.c:779
+msgid "conversion from `%T' to non-scalar type `%T' requested"
+msgstr "es va sol·licitar la conversió des de \"%T\" al tipus no escalar \"%T\""
+
+#: cp/cvt.c:865
+msgid "object of incomplete type `%T' will not be accessed in %s"
+msgstr "l'objecte de tipus incomplet \"%T\" no es accesará en %s"
+
+#: cp/cvt.c:868
+msgid "object of type `%T' will not be accessed in %s"
+msgstr "l'objecte de tipus \"%T\" no es accesará en %s"
+
+#: cp/cvt.c:884
+msgid "object `%E' of incomplete type `%T' will not be accessed in %s"
+msgstr "l'objecte \"%E\" de tipus incomplet \"%T\" no es accesará en %s"
+
+#. [over.over] enumerates the places where we can take the address
+#. of an overloaded function, and this is not one of them.
+#: cp/cvt.c:904
+#, c-format
+msgid "%s cannot resolve address of overloaded function"
+msgstr "%s no es pot resoldre l'adreça de la funció sobrecarregada"
+
+#. Only warn when there is no &.
+#: cp/cvt.c:909
+#, c-format
+msgid "%s is a reference, not call, to function `%E'"
+msgstr "%s és una referència, no una cridada, a la funció \"%E\""
+
+#: cp/cvt.c:1039
+msgid "converting NULL to non-pointer type"
+msgstr "convertint NULL a un tipus que no és apuntador"
+
+#: cp/cvt.c:1115
+msgid "ambiguous default type conversion from `%T'"
+msgstr "conversió de tipus per omissió ambigua des de \"%T\""
+
+#: cp/cvt.c:1117
+msgid " candidate conversions include `%D' and `%D'"
+msgstr " les conversions candidates inclouen \"%D\" i \"%D\""
+
+#: cp/decl.c:736
+#, c-format
+msgid "push %s level %p line %d\n"
+msgstr ""
+
+#: cp/decl.c:770
+#, c-format
+msgid "pop %s level %p line %d\n"
+msgstr ""
+
+#: cp/decl.c:776 cp/decl.c:814
+msgid "XXX is_class_level != (current_binding_level == class_binding_level)\n"
+msgstr ""
+
+#: cp/decl.c:808
+#, c-format
+msgid "suspend %s level %p line %d\n"
+msgstr ""
+
+#: cp/decl.c:837
+#, c-format
+msgid "resume %s level %p line %d\n"
+msgstr ""
+
+#: cp/decl.c:1255 cp/decl.c:3490
+msgid "conflicts with previous declaration `%#D'"
+msgstr "causa conflictes amb la declaració prèvia \"%#D\""
+
+#: cp/decl.c:1467
+msgid "label `%D' used but not defined"
+msgstr "s'usa l'etiqueta \"%D\" però no està definida"
+
+#: cp/decl.c:1472
+msgid "label `%D' defined but not used"
+msgstr "s'usa l'etiqueta \"%D\" però no està definida"
+
+#: cp/decl.c:2489
+msgid "namespace alias `%D' not allowed here, assuming `%D'"
+msgstr "no es permet aquí l'alies de l'espai de noms \"%D\", assumint que és \"%D\""
+
+#: cp/decl.c:2825
+msgid "XXX entering pop_everything ()\n"
+msgstr ""
+
+#: cp/decl.c:2834
+msgid "XXX leaving pop_everything ()\n"
+msgstr ""
+
+#: cp/decl.c:3285 cp/decl.c:3700
+msgid "previous declaration of `%D'"
+msgstr "declaració prèvia de \"%D\""
+
+#: cp/decl.c:3366 cp/decl.c:3404
+msgid "shadowing %s function `%#D'"
+msgstr "enfosquint la funció de biblioteca \"%#D\""
+
+#: cp/decl.c:3375
+msgid "library function `%#D' redeclared as non-function `%#D'"
+msgstr "la funció de biblioteca \"%#D\" és redeclarada com \"%#D\" que no és funció"
+
+#: cp/decl.c:3380
+msgid "conflicts with built-in declaration `%#D'"
+msgstr "causa conflicte amb la declaració interna \"%#D\""
+
+#: cp/decl.c:3399 cp/decl.c:3504 cp/decl.c:3520
+msgid "new declaration `%#D'"
+msgstr "declaració nova \"%#D\""
+
+#: cp/decl.c:3400
+msgid "ambiguates built-in declaration `%#D'"
+msgstr "fa ambigua la declaració interna \"%#D\""
+
+#: cp/decl.c:3464
+msgid "`%#D' redeclared as different kind of symbol"
+msgstr "\"%#D\" redeclarat com un tipus diferent de símbol"
+
+#: cp/decl.c:3467
+msgid "previous declaration of `%#D'"
+msgstr "declaració prèvia de \"%#D\""
+
+#: cp/decl.c:3489
+msgid "declaration of template `%#D'"
+msgstr "declaració del patró \"%#D\""
+
+#: cp/decl.c:3505 cp/decl.c:3521
+msgid "ambiguates old declaration `%#D'"
+msgstr "fa ambigua la declaració antiga \"%#D\""
+
+#: cp/decl.c:3513
+msgid "declaration of C function `%#D' conflicts with"
+msgstr "la declaració de la funció C \"%#D\" té conflictes amb"
+
+#: cp/decl.c:3515
+msgid "previous declaration `%#D' here"
+msgstr "declaració prèvia de \"%#D\" aquí"
+
+#: cp/decl.c:3533
+msgid "conflicting types for `%#D'"
+msgstr "tipus en conflicte per a \"%#D\""
+
+#: cp/decl.c:3534
+msgid "previous declaration as `%#D'"
+msgstr "declaració prèvia com \"%#D\""
+
+#: cp/decl.c:3577
+msgid "`%#D' previously defined here"
+msgstr "es va definir \"%#D\" prèviament aquí"
+
+#: cp/decl.c:3578
+msgid "`%#D' previously declared here"
+msgstr "es va declarar \"%#D\" prèviament aquí"
+
+#. Prototype decl follows defn w/o prototype.
+#: cp/decl.c:3587
+msgid "prototype for `%#D'"
+msgstr "el prototip per a \"%#D\""
+
+#: cp/decl.c:3588
+msgid "follows non-prototype definition here"
+msgstr "a continuació la definició del no prototip aquí"
+
+#: cp/decl.c:3600
+msgid "previous declaration of `%#D' with %L linkage"
+msgstr "declaració prèvia de \"%#D\" amb l'enllaç %L"
+
+#: cp/decl.c:3602
+msgid "conflicts with new declaration with %L linkage"
+msgstr "té conflictes amb la declaració nova amb l'enllaç %L"
+
+#: cp/decl.c:3625 cp/decl.c:3632
+msgid "default argument given for parameter %d of `%#D'"
+msgstr "argument per omissió donat per al paràmetre %d de \"%#D\""
+
+#: cp/decl.c:3627 cp/decl.c:3634
+msgid "after previous specification in `%#D'"
+msgstr "després de l'especificació prèvia en \"%#D\""
+
+#: cp/decl.c:3643
+msgid "`%#D' was used before it was declared inline"
+msgstr "es va usar \"%#D\" abans que fora declarat inline"
+
+#: cp/decl.c:3645
+msgid "previous non-inline declaration here"
+msgstr "declaració prèvia no inline aquí"
+
+#: cp/decl.c:3699
+msgid "redundant redeclaration of `%D' in same scope"
+msgstr "declaració redundant de \"%D\" en el mateix àmbit"
+
+#: cp/decl.c:3780
+#, c-format
+msgid "declaration of `%F' throws different exceptions"
+msgstr "la declaració de \"%F\" llança excepcions diferents"
+
+#: cp/decl.c:3782
+#, c-format
+msgid "than previous declaration `%F'"
+msgstr "que la declaració prèvia \"%F\""
+
+#. From [temp.expl.spec]:
+#.
+#. If a template, a member template or the member of a class
+#. template is explicitly specialized then that
+#. specialization shall be declared before the first use of
+#. that specialization that would cause an implicit
+#. instantiation to take place, in every translation unit in
+#. which such a use occurs.
+#: cp/decl.c:3922
+msgid "explicit specialization of %D after first use"
+msgstr "especialització explícita de %D després del primer ús"
+
+#: cp/decl.c:4187
+msgid "`%#D' used prior to declaration"
+msgstr "s'usa \"%#D\" previ a la declaració"
+
+#: cp/decl.c:4218
+msgid "redeclaration of `wchar_t' as `%T'"
+msgstr "redeclaración de \"wchar_t\" com \"%T\""
+
+#. A redeclaration of main, but not a duplicate of the
+#. previous one.
+#.
+#. [basic.start.main]
+#.
+#. This function shall not be overloaded.
+#: cp/decl.c:4246
+msgid "invalid redeclaration of `%D'"
+msgstr "redeclaración invàlida de \"%D\""
+
+#: cp/decl.c:4247
+msgid "as `%D'"
+msgstr "com \"%D\""
+
+#: cp/decl.c:4337
+msgid "previous external decl of `%#D'"
+msgstr "declaració externa prèvia de \"%#D\""
+
+#: cp/decl.c:4378
+msgid "`%D' was previously implicitly declared to return `int'"
+msgstr "\"%D\" va ser declarat prèvia i implícitament per a retornar \"int\""
+
+#: cp/decl.c:4438
+msgid "extern declaration of `%#D' doesn't match"
+msgstr "la declaració externa de \"%#D\" no coincideix"
+
+#: cp/decl.c:4439
+msgid "global declaration `%#D'"
+msgstr "amb la declaració global \"%#D\""
+
+#: cp/decl.c:4472
+msgid "declaration of `%#D' shadows a parameter"
+msgstr "la declaració de \"%#D\" enfosqueix un paràmetre"
+
+#: cp/decl.c:4492
+#, c-format
+msgid "declaration of `%s' shadows a member of `this'"
+msgstr "la declaració de \"%s\" obscurece a un membre de \"this\""
+
+#: cp/decl.c:4889
+msgid "`%#D' hides constructor for `%#T'"
+msgstr "\"%#D\" amaga el destructor per a \"%#T\""
+
+#: cp/decl.c:4904
+msgid "`%#D' conflicts with previous using declaration `%#D'"
+msgstr "\"%#D\" causa conflicte amb la declaració prèvia en ús \"%#D\""
+
+#: cp/decl.c:4916
+msgid "previous non-function declaration `%#D'"
+msgstr "la declaració prèvia \"%#D\" que no és funció"
+
+#: cp/decl.c:4917
+msgid "conflicts with function declaration `%#D'"
+msgstr "causa conflicte amb la declaració de la funció \"%#D\""
+
+#: cp/decl.c:5007
+msgid "implicit declaration of function `%#D'"
+msgstr "declaració implícita de la funció \"%#D\""
+
+#: cp/decl.c:5167
+#, c-format
+msgid "label `%s' referenced outside of any function"
+msgstr "l'etiqueta \"%s\" es va referenciar fora de qualsevol funció"
+
+#: cp/decl.c:5270 cp/decl.c:5294 cp/decl.c:5387
+msgid "jump to label `%D'"
+msgstr "salt a l'etiqueta \"%D\""
+
+#: cp/decl.c:5272 cp/decl.c:5296
+msgid "jump to case label"
+msgstr "salt a l'etiqueta case"
+
+#: cp/decl.c:5280
+msgid " crosses initialization of `%#D'"
+msgstr " creua la inicialització de \"%#D\""
+
+#: cp/decl.c:5283 cp/decl.c:5403
+msgid " enters scope of non-POD `%#D'"
+msgstr " entra en l'àmbit de \"%#D\" que no és POD"
+
+#: cp/decl.c:5303 cp/decl.c:5407
+msgid " enters try block"
+msgstr " entra intent de bloc"
+
+#. Can't skip init of __exception_info.
+#: cp/decl.c:5305 cp/decl.c:5399 cp/decl.c:5409
+msgid " enters catch block"
+msgstr " entra captura de bloc"
+
+#: cp/decl.c:5388
+msgid " from here"
+msgstr " des d'aquí"
+
+#: cp/decl.c:5401
+msgid " skips initialization of `%#D'"
+msgstr " salta la inicialización de \"%#D\""
+
+#: cp/decl.c:5437
+msgid "label named wchar_t"
+msgstr "etiqueta nomenada wchar_t"
+
+#: cp/decl.c:5440
+msgid "duplicate label `%D'"
+msgstr "etiqueta duplicada \"%D\""
+
+#: cp/decl.c:5525
+#, c-format
+msgid "case label `%E' not within a switch statement"
+msgstr "l'etiqueta casi \"%E\" no es troba dintre d'una declaració switch"
+
+#. Definition isn't the kind we were looking for.
+#: cp/decl.c:5704 cp/decl.c:5723
+msgid "`%#D' redeclared as %C"
+msgstr "\"%#D\" redeclarat com %C"
+
+#. This happens for A::B where B is a template, and there are no
+#. template arguments.
+#: cp/decl.c:5811 cp/typeck.c:2069 cp/typeck.c:2229
+msgid "invalid use of `%D'"
+msgstr "ús invàlid de \"%D\""
+
+#: cp/decl.c:5852
+msgid "`%D::%D' is not a template"
+msgstr "\"%D::%D\" no és un patró"
+
+#: cp/decl.c:5869
+msgid "`%D' undeclared in namespace `%D'"
+msgstr "\"%D\" no declarat en l'espai de noms \"%D\""
+
+#: cp/decl.c:6002
+msgid "`%D' used without template parameters"
+msgstr "s'usa \"%D\" sense paràmetres de patró"
+
+#: cp/decl.c:6013 cp/decl.c:6029 cp/decl.c:6139
+msgid "no class template named `%#T' in `%#T'"
+msgstr "no hi ha una patró de classe cridada \"%#T\" en \"%#T\""
+
+#: cp/decl.c:6055 cp/decl.c:6065 cp/decl.c:6100
+msgid "no type named `%#T' in `%#T'"
+msgstr "no hi ha un tipus cridat \"%#T\" en \"%#T\""
+
+#: cp/decl.c:6329
+msgid "lookup of `%D' finds `%#D'"
+msgstr "la recerca de \"%D\" troba a \"%#D\""
+
+#: cp/decl.c:6331
+msgid " instead of `%D' from dependent base class"
+msgstr " en lloc de \"%D\" de la classe base depenent"
+
+#: cp/decl.c:6333
+msgid " (use `typename %T::%D' if that's what you meant)"
+msgstr " (usi \"typename %T::%D\" si això és el que volia)"
+
+#: cp/decl.c:6364
+msgid "name lookup of `%D' changed"
+msgstr "la recerca de nom de \"%D\" va cambiar"
+
+#: cp/decl.c:6366
+msgid " matches this `%D' under ISO standard rules"
+msgstr ""
+
+#: cp/decl.c:6368
+msgid " matches this `%D' under old rules"
+msgstr ""
+
+#: cp/decl.c:6382 cp/decl.c:6389
+msgid "name lookup of `%D' changed for new ISO `for' scoping"
+msgstr ""
+
+#: cp/decl.c:6384
+msgid " cannot use obsolete binding at `%D' because it has a destructor"
+msgstr ""
+
+#: cp/decl.c:6391
+msgid " using obsolete binding at `%D'"
+msgstr ""
+
+#: cp/decl.c:6609
+msgid "lookup of `%D' in the scope of `%#T' (`%#D') does not match lookup in the current scope (`%#D')"
+msgstr "la recerca de \"%D\" en l'àmbit de \"%#T\" (\"%#D\") no coincideix amb la recerca en l'àmbit actual (\"%#D\")"
+
+#: cp/decl.c:7432
+msgid "an anonymous union cannot have function members"
+msgstr "un union anònim no pot tenir funcions membre"
+
+#: cp/decl.c:7449
+msgid "member %#D' with constructor not allowed in anonymous aggregate"
+msgstr "no es permet el membre \"%#D\" amb constructor en un agregat anònim"
+
+#: cp/decl.c:7452
+msgid "member %#D' with destructor not allowed in anonymous aggregate"
+msgstr "no es permet el membre \"%#D\" amb destructor en un agregat anònim"
+
+#: cp/decl.c:7455
+msgid "member %#D' with copy assignment operator not allowed in anonymous aggregate"
+msgstr "no es permet el membre \"%#D\" amb operador d'assignació de còpia en un agregat anònim"
+
+#: cp/decl.c:7493
+msgid "redeclaration of C++ built-in type `%T'"
+msgstr "redeclaración del tipus intern de C++ \"%T\""
+
+#: cp/decl.c:7529
+msgid "multiple types in one declaration"
+msgstr "tipus múltiples en una declaració"
+
+#: cp/decl.c:7556
+msgid "missing type-name in typedef-declaration"
+msgstr "falta el nom del tipus en la declaració typedef"
+
+#: cp/decl.c:7563
+msgid "ISO C++ prohibits anonymous structs"
+msgstr "ISO C++ prohibeix structs anònims"
+
+#: cp/decl.c:7570
+msgid "`%D' can only be specified for functions"
+msgstr "\"%D\" només pot ser especificat per a funcions"
+
+#: cp/decl.c:7572
+msgid "`%D' can only be specified inside a class"
+msgstr "\"%D\" només pot ser especificat dintre d'una classe"
+
+#: cp/decl.c:7574
+msgid "`%D' can only be specified for constructors"
+msgstr "\"%D\" només pot ser especificat per a constructors"
+
+#: cp/decl.c:7577
+msgid "`%D' can only be specified for objects and functions"
+msgstr "\"%D\" només pot ser especificat per a objectes i funcions"
+
+#: cp/decl.c:7719 cp/decl2.c:936
+msgid "typedef `%D' is initialized (use __typeof__ instead)"
+msgstr "typedef \"%D\" està inicialitzat (utilitzi __typeof__ en el seu lloc)"
+
+#: cp/decl.c:7724
+msgid "function `%#D' is initialized like a variable"
+msgstr "la funció \"%#D\" està inicialitzada com una variable"
+
+#: cp/decl.c:7736
+msgid "declaration of `%#D' has `extern' and is initialized"
+msgstr "la declaració de \"%#D\" té \"extern\" i està inicialitzada"
+
+#: cp/decl.c:7770
+msgid "`%#D' is not a static member of `%#T'"
+msgstr "\"%#D\" no és un membre static de \"%#T\""
+
+#: cp/decl.c:7775
+msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
+msgstr "ISO C++ no permet que \"%T::%D\" es defineixi com \"%T::%D\""
+
+#: cp/decl.c:7786
+msgid "duplicate initialization of %D"
+msgstr "inicialització duplicada de %D"
+
+#: cp/decl.c:7815
+msgid "declaration of `%#D' outside of class is not definition"
+msgstr "la declaració de \"%#D\" fora de la classe no és una definició"
+
+#: cp/decl.c:7865
+msgid "variable `%#D' has initializer but incomplete type"
+msgstr "la variable \"%#D\" té inicializador però de tipus de dada incompleta"
+
+#: cp/decl.c:7873 cp/decl.c:8432
+msgid "elements of array `%#D' have incomplete type"
+msgstr "alguns elements de la matriu \"%#D\" tenen tipus de dada incompleta"
+
+#: cp/decl.c:7889
+msgid "aggregate `%#D' has incomplete type and cannot be defined"
+msgstr "l'agregat \"%#D\" té un tipus incomplet i no es pot definir"
+
+#: cp/decl.c:7931
+msgid "`%D' declared as reference but not initialized"
+msgstr "\"%D\" declarat com referència però no està inicialitzat"
+
+#: cp/decl.c:7940
+msgid "ISO C++ forbids use of initializer list to initialize reference `%D'"
+msgstr "ISO C++ prohibeix l'ús d'una llista de inicialitzadors per a inicialitzar la referència \"%D\""
+
+#: cp/decl.c:7970
+msgid "cannot initialize `%T' from `%T'"
+msgstr "no es pot inicialitzar \"%T\" des de \"%T\""
+
+#: cp/decl.c:8004
+msgid "initializer fails to determine size of `%D'"
+msgstr "el inicializador no pot determinar la grandària de \"%D\""
+
+#: cp/decl.c:8009
+msgid "array size missing in `%D'"
+msgstr "falta la grandària de la matriu en \"%D\""
+
+#: cp/decl.c:8021
+msgid "zero-size array `%D'"
+msgstr "matriu \"%D\" de grandària zero"
+
+#. An automatic variable with an incomplete type: that is an error.
+#. Don't talk about array types here, since we took care of that
+#. message in grokdeclarator.
+#: cp/decl.c:8059
+msgid "storage size of `%D' isn't known"
+msgstr "no es coneix la grandària d'emmagatzematge de \"%D\""
+
+#: cp/decl.c:8081
+msgid "storage size of `%D' isn't constant"
+msgstr "la grandària d'emmagatzematge de \"%D\" no és constant"
+
+#: cp/decl.c:8137
+msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
+msgstr "perdó: la semàntica de les dades static de la funció inline \"%#D\" és errònia (acabarà amb múltiples còpies)"
+
+#: cp/decl.c:8138
+msgid " you can work around this by removing the initializer"
+msgstr " pot evitar això eliminant el inicializador"
+
+#: cp/decl.c:8164
+msgid "uninitialized const `%D'"
+msgstr "const \"%D\" sense inicialitzar"
+
+#: cp/decl.c:8249
+msgid "brace-enclosed initializer used to initialize `%T'"
+msgstr "es va utilitzar un inicialitzador entre parèntesis per a inicialitzar \"%T\""
+
+#: cp/decl.c:8313
+msgid "initializer for `%T' must be brace-enclosed"
+msgstr "el inicialitzador per a \"%T\" deu estar tancat entre parèntesis"
+
+#: cp/decl.c:8328
+msgid "ISO C++ does not allow designated initializers"
+msgstr "ISO C++ no permet inicialitzadors designats"
+
+#: cp/decl.c:8332
+msgid "`%T' has no non-static data member named `%D'"
+msgstr "\"%T\" té una dada membre que no és non-static cridada \"%D\""
+
+#: cp/decl.c:8389
+msgid "too many initializers for `%T'"
+msgstr "massa inicialitzadors per a \"%T\""
+
+#: cp/decl.c:8426
+msgid "variable-sized object `%D' may not be initialized"
+msgstr "l'objecte de grandària variable \"%D\" no pot ser inicialitzat"
+
+#: cp/decl.c:8437
+msgid "`%D' has incomplete type"
+msgstr "\"%D\" té un tipus de dada incompleta"
+
+#: cp/decl.c:8486
+msgid "`%D' must be initialized by constructor, not by `{...}'"
+msgstr "\"%D\" deu ser inicialitzat per un constructor, no per \"{...}\""
+
+#: cp/decl.c:8527
+msgid "structure `%D' with uninitialized const members"
+msgstr "estructura \"%D\" amb membres const sense inicialitzar"
+
+#: cp/decl.c:8529
+msgid "structure `%D' with uninitialized reference members"
+msgstr "estructura \"%D\" amb membres de referència sense inicialitzar"
+
+#: cp/decl.c:8770
+msgid "assignment (not initialization) in declaration"
+msgstr "assignació (no inicialització) en la declaració"
+
+#: cp/decl.c:8785
+msgid "cannot initialize `%D' to namespace `%D'"
+msgstr "no es poden inicialitzar \"%D\" per a l'espai de noms \"%D\""
+
+#: cp/decl.c:8836
+msgid "shadowing previous type declaration of `%#D'"
+msgstr "enfosquint la declaració de tipus prèvia de \"%#D\""
+
+#: cp/decl.c:8883
+msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
+msgstr "\"%D\" no pot ser thread-local perquè és de tipus \"%T\" que no és POD"
+
+#: cp/decl.c:8898
+msgid "`%D' is thread-local and so cannot be dynamically initialized"
+msgstr "\"%D\" és thread-local i per tant no es pot inicialitzar dinàmicament"
+
+#: cp/decl.c:9298 cp/init.c:562
+msgid "multiple initializations given for `%D'"
+msgstr "es van donar inicialitzacions múltiples per a \"%D\""
+
+#: cp/decl.c:9390
+msgid "invalid catch parameter"
+msgstr "paràmetre de captura invàlid"
+
+#: cp/decl.c:9508
+msgid "destructor for alien class `%T' cannot be a member"
+msgstr "el destructor per a la classe estrangera \"%T\" no pot ser un membre"
+
+#: cp/decl.c:9511
+msgid "constructor for alien class `%T' cannot be a member"
+msgstr "el constructor per a la classe estrangera \"%T\" no pot ser un membre"
+
+#: cp/decl.c:9530
+msgid "`%D' declared as a `virtual' %s"
+msgstr "\"%D\" va ser declarat com un %s \"virtual\""
+
+#: cp/decl.c:9532
+msgid "`%D' declared as an `inline' %s"
+msgstr "\"%D\" va ser declarat com un %s \"inline\""
+
+#: cp/decl.c:9534
+msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
+msgstr "especificadors de funció \"const\" i \"volatile\" en \"%D\" invàlids en la declaració %s"
+
+#: cp/decl.c:9537
+msgid "`%D' declared as a friend"
+msgstr "\"%D\" declarat com un friend"
+
+#: cp/decl.c:9543
+msgid "`%D' declared with an exception specification"
+msgstr "\"%D\" declarat amb una excepció d'especificació"
+
+#: cp/decl.c:9618
+msgid "cannot declare `::main' to be a template"
+msgstr "no es pot declarar \"::main\" com template"
+
+#: cp/decl.c:9620
+msgid "cannot declare `::main' to be inline"
+msgstr "no es pot declarar \"::main\" com inline"
+
+#: cp/decl.c:9622
+msgid "cannot declare `::main' to be static"
+msgstr "no es pot declarar \"::main\" com static"
+
+#: cp/decl.c:9625
+msgid "`main' must return `int'"
+msgstr "\"main\" deu retornar \"int\""
+
+#: cp/decl.c:9653
+msgid "non-local function `%#D' uses anonymous type"
+msgstr "la funció \"%#D\" que no és local usa un tipus anònim"
+
+#: cp/decl.c:9656
+msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
+msgstr "\"%#D\" no es refereix al tipus sense qualificar, així que no s'usa per a l'enllaçat"
+
+#: cp/decl.c:9662
+msgid "non-local function `%#D' uses local type `%T'"
+msgstr "la funció \"%#D\" que no és local utilitza el tipus local \"%T\""
+
+#: cp/decl.c:9691
+msgid "%smember function `%D' cannot have `%T' method qualifier"
+msgstr "%sfunció membre \"%D\" no pot tenir el qualificador de mètode \"%T\""
+
+#: cp/decl.c:9715
+msgid "defining explicit specialization `%D' in friend declaration"
+msgstr "definint l'especialització explícita \"%D\" en la declaració friend"
+
+#. Something like `template <class T> friend void f<T>()'.
+#: cp/decl.c:9725
+msgid "invalid use of template-id `%D' in declaration of primary template"
+msgstr "ús invàlid de l'aneu de patró \"%D\" en la declaració del patró primàri"
+
+#: cp/decl.c:9753
+msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
+msgstr "no es permeten els argument per omissió en la declaració de l'especialització friend del patró \"%D\""
+
+#: cp/decl.c:9760
+msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
+msgstr "no es permet \"inline\" en la declaració de l'especialització friend del patró \"%D\""
+
+#: cp/decl.c:9822
+msgid "definition of implicitly-declared `%D'"
+msgstr "la definició de \"%D\" declarat implícitament"
+
+#: cp/decl.c:9834 cp/decl2.c:785
+msgid "no `%#D' member function declared in class `%T'"
+msgstr "no hi ha una funció membre \"%#D\" declarada en la classe \"%T\""
+
+#: cp/decl.c:9967
+msgid "non-local variable `%#D' uses local type `%T'"
+msgstr ""
+
+#: cp/decl.c:10064
+msgid "invalid in-class initialization of static data member of non-integral type `%T'"
+msgstr ""
+
+#: cp/decl.c:10073
+msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
+msgstr "ISO C++ prohibeix la inicialización en la classe del membre static \"%D\" que no és constant"
+
+#: cp/decl.c:10076
+msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
+msgstr "ISO C++ prohibeix la inicialització del membre constant \"%D\" del tipus \"%T\" que no és enter"
+
+#: cp/decl.c:10126
+msgid "size of array `%D' has non-integer type"
+msgstr "la grandària de la matriu \"%D\" té un tipus no enter"
+
+#: cp/decl.c:10128
+msgid "size of array has non-integer type"
+msgstr "la grandària de la matriu té un tipus no enter"
+
+#: cp/decl.c:10148
+msgid "size of array `%D' is negative"
+msgstr "la grandària de la matriu \"%D\" és negatiu"
+
+#: cp/decl.c:10150
+msgid "size of array is negative"
+msgstr "la grandària de la matriu és negatiu"
+
+#: cp/decl.c:10159
+msgid "ISO C++ forbids zero-size array `%D'"
+msgstr "ISO C++ prohibeix la matriu \"%D\" de grandària zero"
+
+#: cp/decl.c:10161
+msgid "ISO C++ forbids zero-size array"
+msgstr "ISO C++ prohibeix la matriu de grandària zero"
+
+#: cp/decl.c:10168
+msgid "size of array `%D' is not an integral constant-expression"
+msgstr "la grandària de la matriu \"%D\" no és una expressió constant integral"
+
+#: cp/decl.c:10171
+msgid "size of array is not an integral constant-expression"
+msgstr "la grandària de la matriu no és una expressió constant integral"
+
+#: cp/decl.c:10189
+msgid "ISO C++ forbids variable-size array `%D'"
+msgstr "ISO C++ prohibeix la matriu \"%D\" de grandària variable"
+
+#: cp/decl.c:10192
+msgid "ISO C++ forbids variable-size array"
+msgstr "ISO C++ prohibeix la matriu de grandària variable"
+
+#: cp/decl.c:10203
+msgid "overflow in array dimension"
+msgstr "desbordament en la dimensió de la matriu"
+
+#: cp/decl.c:10262
+msgid "declaration of `%D' as %s"
+msgstr "declaración de \"%D\" com %s"
+
+#: cp/decl.c:10264
+#, c-format
+msgid "creating %s"
+msgstr "creant %s"
+
+#: cp/decl.c:10276
+msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
+msgstr "la declaració de \"%D\" com una matriu multidimensional deu tenir límits per a totes les dimensions excepte la primera"
+
+#: cp/decl.c:10279
+msgid "multidimensional array must have bounds for all dimensions except the first"
+msgstr "una matriu multidimensional deu tenir límits per a totes les dimensions excepte per a la primera"
+
+#: cp/decl.c:10308
+msgid "return type specification for constructor invalid"
+msgstr "l'especificació del tipus de retorn per al constructor és invàlid"
+
+#: cp/decl.c:10315
+msgid "return type specification for destructor invalid"
+msgstr "l'especificació del tipus de retorn per al destructor és invàlid"
+
+#: cp/decl.c:10321
+msgid "operator `%T' declared to return `%T'"
+msgstr "l'operador \"%T\" es va declarar per a retornar \"%T\""
+
+#: cp/decl.c:10323
+msgid "return type specified for `operator %T'"
+msgstr "es va especificar un tipus de retorn per a \"operator %T\""
+
+#: cp/decl.c:10491
+msgid "destructors must be member functions"
+msgstr "els destructors deuen ser funcions membre"
+
+#: cp/decl.c:10510
+msgid "destructor `%T' must match class name `%T'"
+msgstr "el destructor \"%T\" deu coincidir amb el nom de la classe \"%T\""
+
+#: cp/decl.c:10539
+msgid "variable declaration is not allowed here"
+msgstr ""
+
+#: cp/decl.c:10566
+msgid "invalid declarator"
+msgstr "declarador invàlid"
+
+#: cp/decl.c:10617
+msgid "declarator-id missing; using reserved word `%D'"
+msgstr "falta l'identificador del declarador; utilitzant la paraula reservada \"%D\""
+
+#: cp/decl.c:10674
+msgid "type `%T' is not derived from type `%T'"
+msgstr "el tipus \"%T\" no és derivat del tipus \"%T\""
+
+#. Parse error puts this typespec where
+#. a declarator should go.
+#: cp/decl.c:10726
+msgid "`%T' specified as declarator-id"
+msgstr "\"%T\" especificat com identificador de declarador"
+
+#: cp/decl.c:10728
+msgid " perhaps you want `%T' for a constructor"
+msgstr " potser vol \"%T\" per a un constructor"
+
+#. Sometimes, we see a template-name used as part of a
+#. decl-specifier like in
+#. std::allocator alloc;
+#. Handle that gracefully.
+#: cp/decl.c:10750
+#, c-format
+msgid "invalid use of template-name '%E' in a declarator"
+msgstr "ús invàlid del nom de patró \"%E\" en un declarador"
+
+#: cp/decl.c:10770
+msgid "declaration of `%D' as non-function"
+msgstr "la declaració de \"%D\" com una no funció"
+
+#: cp/decl.c:10847
+msgid "`bool' is now a keyword"
+msgstr "`bool' ara és una paraula clau"
+
+#: cp/decl.c:10849
+msgid "extraneous `%T' ignored"
+msgstr "\"%T\" extra ignorat"
+
+#: cp/decl.c:10865 cp/decl.c:10910
+msgid "multiple declarations `%T' and `%T'"
+msgstr "declaracions múltiples \"%T\" i \"%T\""
+
+#: cp/decl.c:10878
+msgid "ISO C++ does not support `long long'"
+msgstr "ISO C++ no dóna suport a \"long long\""
+
+#: cp/decl.c:10983 cp/decl.c:10986
+#, c-format
+msgid "ISO C++ forbids declaration of `%s' with no type"
+msgstr "ISO C++ prohibeix la declaració de \"%s\" sense tipus"
+
+#. The implicit typename extension is deprecated and will be
+#. removed. Warn about its use now.
+#: cp/decl.c:10996
+msgid "`%T' is implicitly a typename"
+msgstr "\"%T\" implícitament és un nom de tipus"
+
+#: cp/decl.c:11032
+#, c-format
+msgid "short, signed or unsigned invalid for `%s'"
+msgstr "short, signed o unsigned invàlid per a \"%s\""
+
+#: cp/decl.c:11037
+#, c-format
+msgid "long and short specified together for `%s'"
+msgstr "long i short especificats junts per a \"%s\""
+
+#: cp/decl.c:11048
+#, c-format
+msgid "signed and unsigned given together for `%s'"
+msgstr "es van donar junts signed i unsigned per a \"%s\""
+
+#: cp/decl.c:11157
+msgid "qualifiers are not allowed on declaration of `operator %T'"
+msgstr "no es permeten qualificadors en la declaració de \"operator %T\""
+
+#: cp/decl.c:11179
+msgid "member `%D' cannot be declared both virtual and static"
+msgstr ""
+
+#: cp/decl.c:11188
+msgid "`%T::%D' is not a valid declarator"
+msgstr "\"%T::%D\" no és una declaració vàlida"
+
+#: cp/decl.c:11200
+msgid "storage class specifiers invalid in parameter declarations"
+msgstr "especificadors de classe d'emmagatzematge invàlids en les declaracions de paràmetres"
+
+#: cp/decl.c:11204
+msgid "typedef declaration invalid in parameter declaration"
+msgstr "declaració typedef invàlida en la declaració de paràmetres"
+
+#: cp/decl.c:11217
+msgid "virtual outside class declaration"
+msgstr "declaració de virtual fora de class"
+
+#: cp/decl.c:11278
+#, c-format
+msgid "storage class specified for %s `%s'"
+msgstr "classe d'emmagatzematge especificada per %s \"%s\""
+
+#: cp/decl.c:11325
+msgid "storage class specifiers invalid in friend function declarations"
+msgstr "especificadors de classe d'emmagatzematge invàlids en les declaracions de funcions friend"
+
+#: cp/decl.c:11495
+msgid "destructor cannot be static member function"
+msgstr "el destructor no pot ser una funció membre de tipus static"
+
+#: cp/decl.c:11498
+#, c-format
+msgid "destructors may not be `%s'"
+msgstr "els destructors no poden ser \"%s\""
+
+#: cp/decl.c:11519
+msgid "constructor cannot be static member function"
+msgstr "el constructor no pot ser una funció membre de tipus static"
+
+#: cp/decl.c:11522
+msgid "constructors cannot be declared virtual"
+msgstr "els constructors no poden ser declarats virtual"
+
+#: cp/decl.c:11527
+#, c-format
+msgid "constructors may not be `%s'"
+msgstr "els constructors no poden ser \"%s\""
+
+#: cp/decl.c:11537
+msgid "return value type specifier for constructor ignored"
+msgstr "el especificador de tipus del valor retornat per al constructor és ignorat"
+
+#: cp/decl.c:11556
+#, c-format
+msgid "can't initialize friend function `%s'"
+msgstr "no es pot inicialitzar la funció friend \"%s\""
+
+#. Cannot be both friend and virtual.
+#: cp/decl.c:11560
+msgid "virtual functions cannot be friends"
+msgstr "les funcions virtual no poden ser friend"
+
+#: cp/decl.c:11565
+msgid "friend declaration not in class definition"
+msgstr "la declaració friend no està en una definició de classe"
+
+#: cp/decl.c:11567
+#, c-format
+msgid "can't define friend function `%s' in a local class definition"
+msgstr "no es pot definir la funció friend \"%s\" en una definició de classe local"
+
+#: cp/decl.c:11591
+msgid "destructors may not have parameters"
+msgstr "els destructors no poden tenir paràmetres"
+
+#: cp/decl.c:11622 cp/decl.c:11629
+msgid "cannot declare reference to `%#T'"
+msgstr "no es poden declarar referències a \"%#T\""
+
+#: cp/decl.c:11623
+msgid "cannot declare pointer to `%#T'"
+msgstr "no es pot declarar un punter a \"%#T\""
+
+#: cp/decl.c:11628
+msgid "cannot declare pointer to `%#T' member"
+msgstr "no es pot declarar un punter al membre \"%#T\""
+
+#: cp/decl.c:11804
+msgid "extra qualification `%T::' on member `%s' ignored"
+msgstr "s'ignora la qualificació extra `%T::' en el membre \"%s\""
+
+#: cp/decl.c:11814
+msgid "cannot declare member function `%T::%s' within `%T'"
+msgstr "no es pot declarar la funció membre \"%T::%s\" dintre de \"%T\""
+
+#: cp/decl.c:11829
+msgid "cannot declare member `%T::%s' within `%T'"
+msgstr "no es pot declarar el membre \"%T::%s\" dintre de \"%T\""
+
+#: cp/decl.c:11908
+msgid "data member may not have variably modified type `%T'"
+msgstr ""
+
+#: cp/decl.c:11910
+msgid "parameter may not have variably modified type `%T'"
+msgstr ""
+
+#. [dcl.fct.spec] The explicit specifier shall only be used in
+#. declarations of constructors within a class definition.
+#: cp/decl.c:11918
+msgid "only declarations of constructors can be `explicit'"
+msgstr "solament les declaracions de constructors poden ser \"explicit\""
+
+#: cp/decl.c:11926
+#, c-format
+msgid "non-member `%s' cannot be declared `mutable'"
+msgstr "el no-membre \"%s\" no pot ser declarat \"mutable\""
+
+#: cp/decl.c:11931
+#, c-format
+msgid "non-object member `%s' cannot be declared `mutable'"
+msgstr "el membre non-objecte \"%s\" no pot ser declarat \"mutable\""
+
+#: cp/decl.c:11937
+#, c-format
+msgid "function `%s' cannot be declared `mutable'"
+msgstr "la funció \"%s\" no pot ser declarada \"mutable\""
+
+#: cp/decl.c:11942
+#, c-format
+msgid "static `%s' cannot be declared `mutable'"
+msgstr "static \"%s\" no pot ser declarat \"mutable\""
+
+#: cp/decl.c:11947
+#, c-format
+msgid "const `%s' cannot be declared `mutable'"
+msgstr "const \"%s\" no pot ser declarat \"mutable\""
+
+#: cp/decl.c:11960
+msgid "template-id `%D' used as a declarator"
+msgstr "l'identificador de patró \"%D\" s'usa com un declarador"
+
+#: cp/decl.c:11981
+msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
+msgstr "ISO C++ prohibeix el tipus niat \"%D\" amb el mateix nom que la classe que ho conté"
+
+#: cp/decl.c:12030
+msgid "typedef name may not be class-qualified"
+msgstr "el nom de la definició de tipus pot no ser qualificada per a la classe"
+
+#: cp/decl.c:12038
+msgid "invalid type qualifier for non-member function type"
+msgstr "qualificador de tipus invàlid per al tipus de funció no membre"
+
+#: cp/decl.c:12101
+msgid "type qualifiers specified for friend class declaration"
+msgstr "es van especificar qualificadors de tipus en una declaració de classe friend"
+
+#: cp/decl.c:12106
+msgid "`inline' specified for friend class declaration"
+msgstr "es va especificar \"inline\" per a la declaració de classe friend"
+
+#: cp/decl.c:12114
+msgid "template parameters cannot be friends"
+msgstr "els paràmetres del patró no poden ser friends"
+
+#: cp/decl.c:12116
+msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
+msgstr "la declaració friend requereix una clau de classe, ex. \"friend class %T::%D\""
+
+#: cp/decl.c:12120
+msgid "friend declaration requires class-key, i.e. `friend %#T'"
+msgstr "la declaració friend requereix una clau de classe, ex. \"friend %#T\""
+
+#: cp/decl.c:12134
+msgid "trying to make class `%T' a friend of global scope"
+msgstr "tractant fer que la classe \"%T\" sigui un friend d'àmbit global"
+
+#: cp/decl.c:12145
+msgid "invalid qualifiers on non-member function type"
+msgstr "qualificadors invàlids en el tipus de funció no membre"
+
+#: cp/decl.c:12164
+msgid "abstract declarator `%T' used as declaration"
+msgstr "el declarador abstracte \"%T\" es va utilitzar com una declaració"
+
+#: cp/decl.c:12176
+msgid "unnamed variable or field declared void"
+msgstr "variable sense nom o camp declarat void"
+
+#: cp/decl.c:12185
+msgid "variable or field declared void"
+msgstr "variable o camp declarat void"
+
+#: cp/decl.c:12195
+msgid "cannot use `::' in parameter declaration"
+msgstr "no es pot usar \"::\" en la declaració de paràmetres"
+
+#. Something like struct S { int N::j; };
+#: cp/decl.c:12234
+msgid "invalid use of `::'"
+msgstr "ús invàlid de \"::\""
+
+#: cp/decl.c:12246
+msgid "function `%D' cannot be declared friend"
+msgstr "la funció \"%D\" no pot ser declarada friend"
+
+#: cp/decl.c:12258
+msgid "can't make `%D' into a method -- not in a class"
+msgstr "no es pot fer \"%D\" en un mètode -- no està en una classe"
+
+#: cp/decl.c:12267
+msgid "function `%D' declared virtual inside a union"
+msgstr "la funció \"%s\" es va declarar virtual dintre d'un union"
+
+#: cp/decl.c:12279
+msgid "`%D' cannot be declared virtual, since it is always static"
+msgstr "\"%D\" no es pot declarar virtual, ja que sempre és static"
+
+#: cp/decl.c:12355
+msgid "field `%D' has incomplete type"
+msgstr "el camp \"%D\" té tipus de dada incompleta"
+
+#: cp/decl.c:12357
+msgid "name `%T' has incomplete type"
+msgstr "el nom \"%T\" té tipus de dada incompleta"
+
+#: cp/decl.c:12366
+msgid " in instantiation of template `%T'"
+msgstr " en la instanciació det patró \"%T\""
+
+#: cp/decl.c:12376
+#, c-format
+msgid "`%s' is neither function nor member function; cannot be declared friend"
+msgstr "\"%s\" no és ni funció ni funció membre; no pot ser declarat friend"
+
+#: cp/decl.c:12387
+msgid "member functions are implicitly friends of their class"
+msgstr "les funcions membres són implícitament friends de la seva classe"
+
+#. An attempt is being made to initialize a non-static
+#. member. But, from [class.mem]:
+#.
+#. 4 A member-declarator can contain a
+#. constant-initializer only if it declares a static
+#. member (_class.static_) of integral or enumeration
+#. type, see _class.static.data_.
+#.
+#. This used to be relatively common practice, but
+#. the rest of the compiler does not correctly
+#. handle the initialization unless the member is
+#. static so we make it static below.
+#: cp/decl.c:12434
+msgid "ISO C++ forbids initialization of member `%D'"
+msgstr "ISO C++ prohibeix la inicialización del membre \"%D\""
+
+#: cp/decl.c:12436
+msgid "making `%D' static"
+msgstr "fent a \"%D\" static"
+
+#: cp/decl.c:12460
+msgid "ISO C++ forbids static data member `%D' with same name as enclosing class"
+msgstr "ISO C++ prohibeix que el membre de dades static \"%D\" tingui el mateix nom que la classe que ho conté"
+
+#: cp/decl.c:12501
+#, c-format
+msgid "storage class `auto' invalid for function `%s'"
+msgstr "la classe d'emmagatzematge \"auto\" és invàlida per a la funció \"%s\""
+
+#: cp/decl.c:12503
+#, c-format
+msgid "storage class `register' invalid for function `%s'"
+msgstr "la classe d'emmagatzematge \"register\" és invàlida per a la funció \"%s\""
+
+#: cp/decl.c:12505
+#, c-format
+msgid "storage class `__thread' invalid for function `%s'"
+msgstr "la classe d'emmagatzematge \"__thread\" és invàlida per a la funció \"%s\""
+
+#: cp/decl.c:12516
+#, c-format
+msgid "storage class `static' invalid for function `%s' declared out of global scope"
+msgstr "la classe d'emmagatzematge \"static\" és invàlida per a la funció \"%s\" declarada fora de l'àmbit global"
+
+#: cp/decl.c:12518
+#, c-format
+msgid "storage class `inline' invalid for function `%s' declared out of global scope"
+msgstr "la classe d'emmagatzematge \"inline\" és invàlida per a la funció \"%s\" declarada fora de l'àmbit global"
+
+#: cp/decl.c:12525
+#, c-format
+msgid "virtual non-class function `%s'"
+msgstr "la funció virtual \"%s\" no és classe"
+
+#: cp/decl.c:12554
+msgid "cannot declare member function `%D' to have static linkage"
+msgstr "no es pot declarar que la funció membre \"%D\" tingui enllaçat estàtic"
+
+#. FIXME need arm citation
+#: cp/decl.c:12560
+msgid "cannot declare static function inside another function"
+msgstr "no es pot declarar una funció static dintre d'altra funció"
+
+#: cp/decl.c:12588
+msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
+msgstr "\"static\" pot no ser utilitzat quan es defineix (oposat a la declaració) una dada membre static"
+
+#: cp/decl.c:12594
+msgid "static member `%D' declared `register'"
+msgstr "es va declarar el membre static \"%D\" com \"register\""
+
+#: cp/decl.c:12599
+msgid "cannot explicitly declare member `%#D' to have extern linkage"
+msgstr "no es pot declarar explícitament que el membre \"%#D\" tingui un enllaçat extern"
+
+#: cp/decl.c:12774
+msgid "default argument for `%#D' has type `%T'"
+msgstr "l'argument per omissió de \"%#D\" té tipus \"%T\""
+
+#: cp/decl.c:12777
+msgid "default argument for parameter of type `%T' has type `%T'"
+msgstr "l'argument per omissió per al paràmetre del tipus \"%T\" té el tipus \"%T\""
+
+#: cp/decl.c:12794
+msgid "default argument `%E' uses local variable `%D'"
+msgstr "l'argument per omissió \"%E\" usa la variable local \"%D\""
+
+#: cp/decl.c:12839
+#, c-format
+msgid "invalid string constant `%E'"
+msgstr "constant de cadena invàlida \"%E\""
+
+#: cp/decl.c:12841
+msgid "invalid integer constant in parameter list, did you forget to give parameter name?"
+msgstr "constant entera invàlida en la llista de paràmetres, va oblidar proporcionar nom(s) de paràmetre(s)?"
+
+#: cp/decl.c:12879
+msgid "parameter `%D' invalidly declared method type"
+msgstr "el paràmetre \"%D\" es va declarar invàlidament com tipus de mètode"
+
+#: cp/decl.c:12885
+msgid "parameter `%D' invalidly declared offset type"
+msgstr "el paràmetre \"%D\" es va declarar invàlidament com tipus de desplaçament"
+
+#: cp/decl.c:12909
+msgid "parameter `%D' includes %s to array of unknown bound `%T'"
+msgstr "el paràmetre \"%D\" inclou %s per a la matriu \"%T\" de límit desconegut"
+
+#. [class.copy]
+#.
+#. A declaration of a constructor for a class X is ill-formed if
+#. its first parameter is of type (optionally cv-qualified) X
+#. and either there are no other parameters or else all other
+#. parameters have default arguments.
+#.
+#. We *don't* complain about member template instantiations that
+#. have this form, though; they can occur as we try to decide
+#. what constructor to use during overload resolution. Since
+#. overload resolution will never prefer such a constructor to
+#. the non-template copy constructor (which is either explicitly
+#. or implicitly defined), there's no need to worry about their
+#. existence. Theoretically, they should never even be
+#. instantiated, but that's hard to forestall.
+#: cp/decl.c:13071
+msgid "invalid constructor; you probably meant `%T (const %T&)'"
+msgstr "constructor invàlid; tal vegada va voler dir \"%T (const %T&)\""
+
+#: cp/decl.c:13222
+msgid "`%D' must be a nonstatic member function"
+msgstr "\"%D\" deu ser una funció membre que no sigui static"
+
+#: cp/decl.c:13228
+msgid "`%D' must be either a non-static member function or a non-member function"
+msgstr "\"%D\" deu ser una funció membre no estàtic o una funció no membre"
+
+#: cp/decl.c:13245
+msgid "`%D' must have an argument of class or enumerated type"
+msgstr "\"%D\" deu tenir un argument de tipus classe o enumerat"
+
+#: cp/decl.c:13277
+#, c-format
+msgid "conversion to %s%s will never use a type conversion operator"
+msgstr "la conversió a %s%s mai usarà un operador de conversió de tipus"
+
+#. 13.4.0.3
+#: cp/decl.c:13284
+msgid "ISO C++ prohibits overloading operator ?:"
+msgstr "ISO C++ prohibeix la sobrecàrrega de l'operador ?:"
+
+#: cp/decl.c:13334
+msgid "postfix `%D' must take `int' as its argument"
+msgstr "el postfix \"%D\" deu prendre \"int\" com el seu argument"
+
+#: cp/decl.c:13338
+msgid "postfix `%D' must take `int' as its second argument"
+msgstr "el postfix \"%D\" deu prendre \"int\" com el seu segon argument"
+
+#: cp/decl.c:13345
+msgid "`%D' must take either zero or one argument"
+msgstr "\"%D\" deu prendre zero o un arguments"
+
+#: cp/decl.c:13347
+msgid "`%D' must take either one or two arguments"
+msgstr "\"%D\" deu prendre un o dos arguments"
+
+#: cp/decl.c:13368
+msgid "prefix `%D' should return `%T'"
+msgstr "el prefix \"%D\" deu regressar \"%T\""
+
+#: cp/decl.c:13374
+msgid "postfix `%D' should return `%T'"
+msgstr "el postfix \"%D\" deu regressar \"%T\""
+
+#: cp/decl.c:13383
+msgid "`%D' must take `void'"
+msgstr "\"%D\" deu prendre \"void\""
+
+#: cp/decl.c:13385 cp/decl.c:13393
+msgid "`%D' must take exactly one argument"
+msgstr "\"%D\" deu prendre un argument exactament"
+
+#: cp/decl.c:13395
+msgid "`%D' must take exactly two arguments"
+msgstr "\"%D\" deu prendre dos arguments exactament"
+
+#: cp/decl.c:13403
+msgid "user-defined `%D' always evaluates both arguments"
+msgstr "el \"%D\" definit per l'usuari sempre avalua ambdós arguments"
+
+#: cp/decl.c:13417
+msgid "`%D' should return by value"
+msgstr "\"%D\" deu regressar per valor"
+
+#: cp/decl.c:13429 cp/decl.c:13432
+msgid "`%D' cannot have default arguments"
+msgstr "\"%D\" no pot tenir arguments per omissió"
+
+#: cp/decl.c:13475
+msgid "using typedef-name `%D' after `%s'"
+msgstr "usant el nom de definició de tipus \"%D\" després de \"%s\""
+
+#: cp/decl.c:13481
+msgid "using template type parameter `%T' after `%s'"
+msgstr "usant el paràmetre de tipus patró \"%T\" després de \"%s\""
+
+#: cp/decl.c:13542
+msgid "`%s %T' declares a new type at namespace scope"
+msgstr "\"%s %T\" declara un tipus nou en l'àmbit del nom d'espai"
+
+#: cp/decl.c:13545
+msgid " names from dependent base classes are not visible to unqualified name lookup - to refer to the inherited type, say `%s %T::%T'"
+msgstr " els noms de les classes bases depenents no són visibles per a la recerca de noms sense qualificar - per a referir-se al tipus heretat, utilitzi \"%s %T::%T\""
+
+#: cp/decl.c:13663
+msgid "use of enum `%#D' without previous declaration"
+msgstr "ús del enum \"%#D\" sense declaració prèvia"
+
+#: cp/decl.c:13749
+msgid "derived union `%T' invalid"
+msgstr "union derivada \"%T\" invàlida"
+
+#: cp/decl.c:13795
+msgid "base type `%T' fails to be a struct or class type"
+msgstr "el tipus base \"%T\" falla a ser un tipus struct o classe"
+
+#: cp/decl.c:13805
+msgid "base class `%T' has incomplete type"
+msgstr "la classe base \"%T\" té tipus de dada incompleta"
+
+#: cp/decl.c:13813
+msgid "recursive type `%T' undefined"
+msgstr "tipus recursivo \"%T\" sense definir"
+
+#: cp/decl.c:13815
+msgid "duplicate base type `%T' invalid"
+msgstr "tipus base duplicat \"%T\" invàlid"
+
+#: cp/decl.c:13926
+msgid "multiple definition of `%#T'"
+msgstr "definició múltiple de \"%#T\""
+
+#: cp/decl.c:13927
+msgid "previous definition here"
+msgstr "definició prèvia aquí"
+
+#: cp/decl.c:14030
+msgid "no integral type can represent all of the enumerator values for `%T'"
+msgstr ""
+
+#: cp/decl.c:14106
+msgid "enumerator value for `%D' not integer constant"
+msgstr "el valor de enumerador per a \"%D\" no és una constant entera"
+
+#: cp/decl.c:14126
+msgid "overflow in enumeration values at `%D'"
+msgstr "desbordament en valors d'enumeració en \"%D\""
+
+#: cp/decl.c:14195
+msgid "return type `%#T' is incomplete"
+msgstr "el tipus de retorn \"%#T\" és un tipus de dada incompleta"
+
+#: cp/decl.c:14309
+msgid "semicolon missing after declaration of `%#T'"
+msgstr "manca punt i coma després de la declaració de \"%#T\""
+
+#: cp/decl.c:14330
+msgid "return type for `main' changed to `int'"
+msgstr "el tipus de retorn per a \"main\" va canviar a \"int\""
+
+#: cp/decl.c:14361
+msgid "`%D' implicitly declared before its definition"
+msgstr "\"%D\" declarat implícitament abans de la seva definició"
+
+#: cp/decl.c:14383 cp/typeck.c:6314
+msgid "`operator=' should return a reference to `*this'"
+msgstr "\"operator=\" deu retornar una referència a \"*this\""
+
+#: cp/decl.c:14643
+msgid "parameter `%D' declared void"
+msgstr "el paràmetre \"%D\" es va declarar void"
+
+#: cp/decl.c:15130
+msgid "`%D' is already defined in class `%T'"
+msgstr "\"%D\" ja es va definir en la classe \"%T\""
+
+#: cp/decl.c:15348
+msgid "static member function `%#D' declared with type qualifiers"
+msgstr "la funció membre static \"%#D\" és declarada amb qualificadors de tipus"
+
+#: cp/decl2.c:153
+#, c-format
+msgid "duplicate type qualifiers in %s declaration"
+msgstr "qualificadors de tipus duplicats en la declaració %s"
+
+#: cp/decl2.c:192
+msgid "template `%#D' instantiated in file without #pragma interface"
+msgstr "es va instanciar el patró \"%#D\" en el fitxer sense #pragma interface"
+
+#: cp/decl2.c:198
+msgid "template `%#D' defined in file without #pragma interface"
+msgstr "es va definir el patró \"%#D\" en el fitxer sense #pragma interface"
+
+#: cp/decl2.c:365
+msgid "name missing for member function"
+msgstr "falta el nom per a la funció membre"
+
+#. Something has gone very wrong. Assume we are mistakenly reducing
+#. an expression instead of a declaration.
+#: cp/decl2.c:428
+msgid "parser may be lost: is there a '{' missing somewhere?"
+msgstr "el decodificador tal vegada es va perdre: falta algun \"{\" en algun lloc?"
+
+#: cp/decl2.c:459 cp/decl2.c:473
+msgid "ambiguous conversion for array subscript"
+msgstr "conversió ambigua per a índex de matriu"
+
+#: cp/decl2.c:467
+msgid "invalid types `%T[%T]' for array subscript"
+msgstr "tipus invàlids \"%T[%T]\" per a índex de matriu"
+
+#: cp/decl2.c:515
+msgid "type `%#T' argument given to `delete', expected pointer"
+msgstr "es va donar un argument de tipus \"%#T\" a \"delete\", s'esperava un punter"
+
+#: cp/decl2.c:523
+msgid "anachronistic use of array size in vector delete"
+msgstr "ús anacrònic de la grandària de la matriu desconeguda en vector delete"
+
+#: cp/decl2.c:533
+msgid "cannot delete a function. Only pointer-to-objects are valid arguments to `delete'"
+msgstr "no es pot esborrar una funció. Solament els punters a objectes són arguments vàlids per a \"delete\""
+
+#: cp/decl2.c:540
+msgid "deleting `%T' is undefined"
+msgstr "esborrar \"%T\" està indefinit"
+
+#: cp/decl2.c:548
+msgid "deleting array `%#D'"
+msgstr "esborrant la matriu \"%#D\""
+
+#. 14.5.2.2 [temp.mem]
+#.
+#. A local class shall not have member templates.
+#: cp/decl2.c:582
+msgid "invalid declaration of member template `%#D' in local class"
+msgstr "declaració invàlida del patró membre \"%#D\" en la classe local"
+
+#: cp/decl2.c:591
+msgid "invalid use of `virtual' in template declaration of `%#D'"
+msgstr "ús invàlid de \"virtual\" en la declaració de patró de \"%#D\""
+
+#: cp/decl2.c:601 cp/pt.c:2745
+msgid "template declaration of `%#D'"
+msgstr "declaració en patró de \"%#D\""
+
+#: cp/decl2.c:651
+msgid "Java method '%D' has non-Java return type `%T'"
+msgstr "el mètode Java \"%D\" té un tipus de retorn \"%T\" que no és de Java"
+
+#: cp/decl2.c:660
+msgid "Java method '%D' has non-Java parameter type `%T'"
+msgstr "el mètode Java \"%D\" té un tipus de paràmetre \"%T\" que no és de Java"
+
+#: cp/decl2.c:746
+msgid "prototype for `%#D' does not match any in class `%T'"
+msgstr "el prototip per a \"%#D\" no coincideix amb cap altre en la classe \"%T\""
+
+#: cp/decl2.c:828
+msgid "local class `%#T' shall not have static data member `%#D'"
+msgstr "la classe local \"%#T\" no deu tenir el membre static \"%#D\""
+
+#: cp/decl2.c:836
+msgid "initializer invalid for static member with constructor"
+msgstr "inicializador invàlid per al membre static amb constructor"
+
+#: cp/decl2.c:839
+msgid "(an out of class initialization is required)"
+msgstr "(es requereix una inicialització fora de la classe)"
+
+#: cp/decl2.c:898
+msgid "invalid data member initialization"
+msgstr "inicialització de la dada membre invàlida"
+
+#: cp/decl2.c:901
+msgid "(use `=' to initialize static data members)"
+msgstr "(usi \"=\" per a inicialitzar membres de dades static)"
+
+#: cp/decl2.c:947
+msgid "member `%D' conflicts with virtual function table field name"
+msgstr "el membre \"%D\" té conflictes amb el nom de camp de la matriu de funcions virtuals"
+
+#: cp/decl2.c:967
+msgid "`%D' is already defined in `%T'"
+msgstr "\"%D\" ja està definit en \"%T\""
+
+#: cp/decl2.c:1014
+msgid "field initializer is not constant"
+msgstr "el inicializador del camp no és constant"
+
+#: cp/decl2.c:1038
+msgid "`asm' specifiers are not permitted on non-static data members"
+msgstr "no es permeten els especificadores \"asm\" en membres de dades no estàtiques"
+
+#: cp/decl2.c:1090
+msgid "cannot declare `%D' to be a bit-field type"
+msgstr "no es pot declarar \"%D\" que sigui un tipus de camp de bits"
+
+#: cp/decl2.c:1100
+msgid "cannot declare bit-field `%D' with function type"
+msgstr "no es pot declarar el camp de bits \"%D\" amb un tipus de funció"
+
+#: cp/decl2.c:1107
+msgid "`%D' is already defined in the class %T"
+msgstr "\"%D\" ja està definit en la classe %T"
+
+#: cp/decl2.c:1114
+msgid "static member `%D' cannot be a bit-field"
+msgstr "el membre static \"%D\" no pot ser un camp de bits"
+
+#: cp/decl2.c:1201
+msgid "initializer specified for non-member function `%D'"
+msgstr "es va especificar un inicialitzador per a la funció no-membre \"%D\""
+
+#: cp/decl2.c:1205
+msgid "invalid initializer for virtual method `%D'"
+msgstr "inicialitzador invàlid per al mètode virtual \"%D\""
+
+#: cp/decl2.c:1319
+msgid "anonymous struct not inside named type"
+msgstr "struct anònim no es troba dintre d'un tipus nomenat"
+
+#: cp/decl2.c:1415
+msgid "namespace-scope anonymous aggregates must be static"
+msgstr "els agregats anònims d'abast de nom d'espai deuen ser static"
+
+#: cp/decl2.c:1428
+msgid "anonymous aggregate with no members"
+msgstr "agregat anònim sense membres"
+
+#: cp/decl2.c:1497
+msgid "`operator new' must return type `%T'"
+msgstr "\"operator new\" deu retornar el tipus \"%T\""
+
+#: cp/decl2.c:1505
+msgid "`operator new' takes type `size_t' (`%T') as first parameter"
+msgstr "\"operator new\" pren el tipus \"size_t\" (\"%T\") com primer argument"
+
+#: cp/decl2.c:1532
+msgid "`operator delete' must return type `%T'"
+msgstr "\"operator delete\" deu retornar el tipus \"%T\""
+
+#: cp/decl2.c:1540
+msgid "`operator delete' takes type `%T' as first parameter"
+msgstr "\"operator delete\" pren el tipus \"%T\" com primer argument"
+
+#. Overflow occurred. That means there are at least 4 billion
+#. initialization functions.
+#: cp/decl2.c:2282
+msgid "too many initialization functions required"
+msgstr "es requereixen massa funcions d'inicialització"
+
+#: cp/decl2.c:3006
+msgid "inline function `%D' used but never defined"
+msgstr "s'usa la funció inline \"%D\" però mai es va definir"
+
+#: cp/decl2.c:3135
+msgid "use of old-style cast"
+msgstr "ús de la conversió d'estil antic"
+
+#: cp/decl2.c:3860
+msgid "use of `%D' is ambiguous"
+msgstr "l'ús de \"%D\" és ambigu"
+
+#: cp/decl2.c:3861
+msgid " first declared as `%#D' here"
+msgstr " declarat inicialment com \"%#D\" aquí"
+
+#: cp/decl2.c:3864
+msgid " also declared as `%#D' here"
+msgstr " també declarat com \"%#D\" aquí"
+
+#: cp/decl2.c:3879
+msgid "`%D' denotes an ambiguous type"
+msgstr "\"%D\" denota un tipus ambigu"
+
+#: cp/decl2.c:3880
+msgid " first type here"
+msgstr " primer tipus aquí"
+
+#: cp/decl2.c:3881
+msgid " other type here"
+msgstr " altre tipus aquí"
+
+#: cp/decl2.c:3982
+msgid "declaration of `%D' not in a namespace surrounding `%D'"
+msgstr "la declaració de \"%D\" no està en un espai de noms al voltant de \"%D\""
+
+#: cp/decl2.c:4016
+msgid "`%D' should have been declared inside `%D'"
+msgstr "\"%D\" deuria ser declarat dintre de \"%D\""
+
+#: cp/decl2.c:4152
+msgid "`%D' is not a function,"
+msgstr "\"%D\" no és una funció,"
+
+#: cp/decl2.c:4153
+msgid " conflict with `%D'"
+msgstr " té conflicte amb \"%D\""
+
+#. The parser did not find it, so it's not there.
+#: cp/decl2.c:4473
+msgid "unknown namespace `%D'"
+msgstr "espai de noms \"%D\" desconegut"
+
+#: cp/decl2.c:4507 cp/decl2.c:4794
+msgid "`%T' is not a namespace"
+msgstr "\"%T\" no és un nom d'espai"
+
+#: cp/decl2.c:4509
+msgid "`%D' is not a namespace"
+msgstr "\"%D\" no és un nom d'espai"
+
+#: cp/decl2.c:4518
+msgid "a using-declaration cannot specify a template-id. Try `using %D'"
+msgstr "una declaració d'ús no pot especificar un identificador de patró. Intenti \"using %D\""
+
+#: cp/decl2.c:4532
+msgid "namespace `%D' not allowed in using-declaration"
+msgstr "no es permet l'espai de noms \"%D\" en la declaració d'ús"
+
+#: cp/decl2.c:4561
+msgid "`%D' not declared"
+msgstr "no es va declarar \"%D\""
+
+#. If the OLD_FN was really declared, the
+#. declarations don't match.
+#: cp/decl2.c:4573 cp/decl2.c:4615 cp/decl2.c:4640
+msgid "`%D' is already declared in this scope"
+msgstr "\"%D\" ja es va declarar en aquest àmbit"
+
+#: cp/decl2.c:4646
+msgid "using declaration `%D' introduced ambiguous type `%T'"
+msgstr "l'ús de la declaració \"%D\" va introduir el tipus ambigu \"%T\""
+
+#: cp/decl2.c:4740
+msgid "using-declaration for non-member at class scope"
+msgstr "declaració d'ús per a un no membre en l'àmbit de la classe"
+
+#: cp/decl2.c:4746
+msgid "using-declaration for destructor"
+msgstr "declaració d'ús per al destructor"
+
+#: cp/decl2.c:4752
+msgid "a using-declaration cannot specify a template-id. Try `using %T::%D'"
+msgstr "una declaració d'ús no pot especificar un aneu de patró. Intenti \"using %T::%D\""
+
+#: cp/decl2.c:4788
+msgid "namespace `%T' undeclared"
+msgstr "espai de noms \"%T\" sense declarar"
+
+#: cp/decl2.c:4817
+msgid "default argument missing for parameter %P of `%+#D'"
+msgstr "falta l'argument per omissió per al paràmetre %P de \"%+#D\""
+
+#: cp/decl2.c:4941
+msgid "extra qualification `%T::' on member `%D' ignored"
+msgstr "s'ignora la qualificació extra \"%T::\" en el membre \"%D\""
+
+#: cp/decl2.c:4945
+msgid "`%T' does not have a class or union named `%D'"
+msgstr "\"%T\" no té una classe o union cridat \"%D\""
+
+#: cp/decl2.c:4963
+msgid "`%T' is not a class or union type"
+msgstr "\"%T\" no és una classe o tipus union"
+
+#: cp/decl2.c:4977
+msgid "template argument is required for `%T'"
+msgstr "es requereix un argument de patró per a \"%T\""
+
+#: cp/decl2.c:4995
+msgid "declaration of `%D' in `%D' which does not enclose `%D'"
+msgstr "declaració de \"%D\" en \"%D\" la qual no inclou a \"%D\""
+
+#: cp/error.c:35
+#, c-format
+msgid "`%s' not supported by %s"
+msgstr "\"%s\" no té suport per a %s"
+
+#: cp/error.c:571
+#, c-format
+msgid "<anonymous %s>"
+msgstr "<%s anònim>"
+
+#: cp/error.c:810
+#, c-format
+msgid "(static %s for %s)"
+msgstr "(%s static per a %s)"
+
+#: cp/error.c:1503
+#, c-format
+msgid "\\x%x"
+msgstr ""
+
+#: cp/error.c:2473
+#, c-format
+msgid "In %s `%s':"
+msgstr "En %s \"%s\":"
+
+#: cp/error.c:2530
+#, c-format
+msgid "%s: In instantiation of `%s':\n"
+msgstr "%s: En la instanciació de \"%s\":\n"
+
+#: cp/error.c:2554
+#, c-format
+msgid "%s:%d: instantiated from `%s'\n"
+msgstr "%s:%d: instanciat des de \"%s\"\n"
+
+#: cp/error.c:2559
+#, c-format
+msgid "%s:%d: instantiated from here\n"
+msgstr "%s:%d: instanciat des d'aquí\n"
+
+#. damn ICE suppression
+#: cp/error.c:2713
+#, c-format
+msgid "unexpected letter `%c' in locate_error\n"
+msgstr "lletra \"%c\" inesperada en locate_error\n"
+
+#. Can't throw a reference.
+#: cp/except.c:240
+msgid "type `%T' is disallowed in Java `throw' or `catch'"
+msgstr "el tipus \"%T\" no està permès en \"throw\" o \"catch\" de Java"
+
+#: cp/except.c:251
+msgid "call to Java `catch' or `throw' with `jthrowable' undefined"
+msgstr "cridada a \"catch\" o \"throw\" de Java amb \"jthrowable\" sense definir"
+
+#. Thrown object must be a Throwable.
+#: cp/except.c:258
+msgid "type `%T' is not derived from `java::lang::Throwable'"
+msgstr "el tipus \"%T\" no és derivat de \"java::lang::Throwable\""
+
+#: cp/except.c:322
+msgid "mixing C++ and Java catches in a single translation unit"
+msgstr "barrejant \"catches\" de C++ i Java en una sola unitat de traducció"
+
+#: cp/except.c:639
+msgid "throwing NULL, which has integral, not pointer type"
+msgstr "llançant NULL, que té un tipus integral, no un tipus punter"
+
+#: cp/except.c:730
+msgid " in thrown expression"
+msgstr " en expressió thrown"
+
+#: cp/except.c:856
+msgid "expression '%E' of abstract class type '%T' cannot be used in throw-expression"
+msgstr "no es pot usar l'expressió \"%E\" del tipus de classe abstracta \"%T\" en les expressions thrown"
+
+#: cp/except.c:944
+msgid "exception of type `%T' will be caught"
+msgstr "l'excepció del tipus \"%T\" serà atrapada"
+
+#: cp/except.c:947
+msgid " by earlier handler for `%T'"
+msgstr " per un gestor anterior per a \"%T\""
+
+#: cp/except.c:968
+msgid "`...' handler must be the last handler for its try block"
+msgstr "el gestor \"...\" deu ser l'últim gestor per al seu bloc try"
+
+#: cp/friend.c:159
+msgid "`%D' is already a friend of class `%T'"
+msgstr "\"%D\" ja és un friend de la classe \"%T\""
+
+#: cp/friend.c:161
+msgid "previous friend declaration of `%D'"
+msgstr "declaració friend prèvia de \"%D\""
+
+#: cp/friend.c:206
+msgid "invalid type `%T' declared `friend'"
+msgstr "el tipus invàlid \"%T\" va ser declarat \"friend\""
+
+#. [temp.friend]
+#. Friend declarations shall not declare partial
+#. specializations.
+#: cp/friend.c:222
+msgid "partial specialization `%T' declared `friend'"
+msgstr "l'especialització parcial \"%T\" es va declarar \"friend\""
+
+#: cp/friend.c:231
+msgid "class `%T' is implicitly friends with itself"
+msgstr "la classe \"%T\" és implícitament friend amb si mateixa"
+
+#. template <class T> friend typename S<T>::X;
+#: cp/friend.c:249
+msgid "typename type `%#T' declared `friend'"
+msgstr "el tipus de nom de tipus \"%#T\" es va declarar \"friend\""
+
+#. template <class T> friend class T;
+#: cp/friend.c:255
+msgid "template parameter type `%T' declared `friend'"
+msgstr "el tipus de paràmetre de patró \"%T\" es va declarar \"friend\""
+
+#. template <class T> friend class A; where A is not a template
+#: cp/friend.c:261
+msgid "`%#T' is not a template"
+msgstr "\"%#T\" no és un patró"
+
+#: cp/friend.c:276
+msgid "`%T' is already a friend of `%T'"
+msgstr "\"%T\" ja és un friend de \"%T\""
+
+#: cp/friend.c:376
+msgid "member `%D' declared as friend before type `%T' defined"
+msgstr "el membre \"%D\" és declarat friend abans que es defineixi el tipus \"%T\""
+
+#: cp/friend.c:431
+msgid "friend declaration `%#D' declares a non-template function"
+msgstr "la declaració friend \"%#D\" declara una funció que no és patró"
+
+#: cp/friend.c:434
+msgid "(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 "(si aquesta no és la seva intenció, asseguri's qu'el patró de la funció ja ha estat declarada i agregui <> aquí després del nom de la funció) -Wno-non-template-friend desactiva aquest avís"
+
+#: cp/g++spec.c:211 java/jvspec.c:423
+#, c-format
+msgid "argument to `%s' missing\n"
+msgstr "falta l'argument per a `%s'\n"
+
+#: cp/init.c:334
+msgid "`%D' should be initialized in the member initialization list"
+msgstr ""
+
+#: cp/init.c:384
+msgid "default-initialization of `%#D', which has reference type"
+msgstr "l'inicialització per omissió de \"%#D\", el qual té el tipus de referència"
+
+#: cp/init.c:389
+msgid "uninitialized reference member `%D'"
+msgstr "membre referència \"%D\" sense inicialitzar"
+
+#: cp/init.c:397
+msgid "initializer list treated as compound expression"
+msgstr "la llista d'inicialitzadors es tracta com una expressió compostada"
+
+#: cp/init.c:538
+msgid "`%D' will be initialized after"
+msgstr "\"%D\" s'inicialitzarà després"
+
+#: cp/init.c:541
+msgid "base `%T' will be initialized after"
+msgstr "la base \"%T\" s'inicialitzarà després"
+
+#: cp/init.c:544
+msgid " `%#D'"
+msgstr " \"#%D\""
+
+#: cp/init.c:546
+msgid " base `%T'"
+msgstr " base \"%T\""
+
+#: cp/init.c:564
+msgid "multiple initializations given for base `%T'"
+msgstr "es van donar inicialitzacions múltiples per a la base \"%T\""
+
+#: cp/init.c:631
+msgid "initializations for multiple members of `%T'"
+msgstr "inicialitzacions per a múltiples membres de \"%T\""
+
+#: cp/init.c:688
+msgid "base class `%#T' should be explicitly initialized in the copy constructor"
+msgstr "la classe base \"%#T\" deu ser inicialitzada explícitament en la còpia del constructor"
+
+#: cp/init.c:926
+msgid "class `%T' does not have any field named `%D'"
+msgstr "la classe \"%T\" no té cap camp cridat \"%D\""
+
+#: cp/init.c:932
+msgid "field `%#D' is static; the only point of initialization is its definition"
+msgstr "el camp \"%#D\" és static; l'únic punt d'inicialització és la seva definició"
+
+#: cp/init.c:965
+msgid "unnamed initializer for `%T', which has no base classes"
+msgstr "inicialitzador sense nom per a \"%T\", el qual no té una classe base"
+
+#: cp/init.c:972
+msgid "unnamed initializer for `%T', which uses multiple inheritance"
+msgstr "inicialitzador sense nom per a \"%T\", el qual usa herència múltiple"
+
+#: cp/init.c:1007
+msgid "type `%D' is not a direct or virtual base of `%T'"
+msgstr "el tipus \"%D\" no és una base directa o virtual de \"%T\""
+
+#: cp/init.c:1010
+msgid "type `%D' is not a direct base of `%T'"
+msgstr "el tipus \"%D\" no és una base directa de \"%T\""
+
+#. 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:1104
+msgid "bad array initializer"
+msgstr "inicialitzador de matriu erroni"
+
+#: cp/init.c:1311
+msgid "`%T' is not an aggregate type"
+msgstr "\"%T\" no és un tipus agregat"
+
+#: cp/init.c:1334
+msgid "`%T' fails to be an aggregate typedef"
+msgstr "\"%T\" falla a ser un tipus agregat"
+
+#: cp/init.c:1343
+msgid "type `%T' is of non-aggregate type"
+msgstr "el tipus \"%T\" és d'un tipus no agregat"
+
+#: cp/init.c:1446
+msgid "cannot call destructor `%T::~%T' without object"
+msgstr "no es pot cridar al destructor \"%T::%T\" sense un objecte"
+
+#: cp/init.c:1490
+msgid "invalid use of non-static field `%D'"
+msgstr "ús invàlid del camp no static \"%D\""
+
+#. We can get here when processing a bad default
+#. argument, like:
+#. struct S { int a; void f(int i = a); }
+#: cp/init.c:1499 cp/method.c:160
+msgid "invalid use of member `%D'"
+msgstr "ús invàlid del membre \"%D\""
+
+#: cp/init.c:1509
+msgid "no method `%T::%D'"
+msgstr "no hi ha un mètode \"%T::%D\""
+
+#: cp/init.c:1602
+msgid "incomplete type `%T' does not have member `%D'"
+msgstr "el tipus incomplet \"%T\" no té al membre \"%D\""
+
+#: cp/init.c:1676
+msgid "`%D' is not a member of type `%T'"
+msgstr "\"%D\" no és un membre de tipus \"%T\""
+
+#: cp/init.c:1695
+msgid "invalid pointer to bit-field `%D'"
+msgstr "punter invàlid al camp de bit \"%D\""
+
+#: cp/init.c:1734
+msgid "object missing in use of pointer-to-member construct"
+msgstr "manca objecte en l'ús d'una consctrucció que punta a membres"
+
+#: cp/init.c:1774
+msgid "member `%D' is non-static but referenced as a static member"
+msgstr "el membre \"%D\" no és static però és referenciat com un membre static"
+
+#: cp/init.c:1776 cp/typeck.c:2826 cp/typeck.c:2930
+msgid "at this point in file"
+msgstr "en aquest punt en el fitxer"
+
+#: cp/init.c:1813
+#, c-format
+msgid "object missing in `%E'"
+msgstr "falta un objecte en \"%E\""
+
+#: cp/init.c:1944
+msgid "new of array type fails to specify size"
+msgstr "new de matriu falla a l'especificar la grandària"
+
+#: cp/init.c:1955
+msgid "size in array new must have integral type"
+msgstr "la grandària de la matriu nova deu tenir un tipus integral"
+
+#: cp/init.c:1961
+msgid "zero size array reserves no space"
+msgstr "la matriu de grandària zero no reserva espai"
+
+#: cp/init.c:2026
+msgid "new cannot be applied to a reference type"
+msgstr "new no pot ser aplicat a un tipus de referència"
+
+#: cp/init.c:2032
+msgid "new cannot be applied to a function type"
+msgstr "new no pot ser aplicat a una funcció de referència"
+
+#: cp/init.c:2079
+msgid "call to Java constructor, while `jclass' undefined"
+msgstr "cridada a constructor Java, mentre \"jclass\" està indefinit"
+
+#: cp/init.c:2095
+msgid "can't find class$"
+msgstr "no es pot trobar class$"
+
+#: cp/init.c:2209
+msgid "invalid type `void' for new"
+msgstr "tipus \"void\" invàlid per a new"
+
+#: cp/init.c:2261
+#, c-format
+msgid "call to Java constructor with `%s' undefined"
+msgstr "cridada a constructor Java amb \"%s\" sense definir"
+
+#: cp/init.c:2369
+msgid "ISO C++ forbids initialization in array new"
+msgstr "ISO C++ prohibeix la inicialització en la matriu new"
+
+#: cp/init.c:2391 cp/typeck2.c:367 cp/typeck2.c:1208
+msgid "initializer list being treated as compound expression"
+msgstr "es tracta la llista d'inicialitzadors com una expressió composada"
+
+#: cp/init.c:2397
+msgid "ISO C++ forbids aggregate initializer to new"
+msgstr "ISO C++ prohibeix un inicialitzador agregat per a new"
+
+#: cp/init.c:2485
+msgid "uninitialized const in `new' of `%#T'"
+msgstr "const sense inicialitzar en \"new\" de \"%#T\""
+
+#: cp/init.c:2864
+msgid "initializer ends prematurely"
+msgstr "el inicialitzador acaba prematurament"
+
+#: cp/init.c:2934
+msgid "cannot initialize multi-dimensional array with initializer"
+msgstr "no es poden inicialitzar matrius multidimensionals amb el inicialitzador"
+
+#: cp/init.c:3124
+msgid "unknown array size in delete"
+msgstr "grandària de matriu desconeguda en delete"
+
+#: cp/init.c:3389
+msgid "type to vector delete is neither pointer or array type"
+msgstr "el tipus de vector delete no és del tipus punter ni matriu"
+
+#: cp/lex.c:136
+msgid "type name expected before `*'"
+msgstr "s'esperava nom de tipus abans de \"*\""
+
+#: cp/lex.c:158
+msgid "cannot declare references to references"
+msgstr "no es poden declarar referències a referències"
+
+#: cp/lex.c:163
+msgid "cannot declare pointers to references"
+msgstr "no es poden declarar punter a referències"
+
+#: cp/lex.c:167
+msgid "type name expected before `&'"
+msgstr "s'esperava nom de tipus abans de \"&\""
+
+#: cp/lex.c:894
+#, c-format
+msgid "semicolon missing after %s declaration"
+msgstr "manca punt i coma després de la declaració %s"
+
+#: cp/lex.c:897
+msgid "semicolon missing after declaration of `%T'"
+msgstr "manca punt i coma després de la declaració de \"%T\""
+
+#: cp/lex.c:945
+#, c-format
+msgid "junk at end of #pragma %s"
+msgstr "escombraries al final de #pragma %s"
+
+#: cp/lex.c:952
+#, c-format
+msgid "invalid #pragma %s"
+msgstr "#pragma %s invàlid"
+
+#: cp/lex.c:961
+msgid "#pragma vtable no longer supported"
+msgstr "#pragma vtable ja no té suport"
+
+#: cp/lex.c:1038
+#, c-format
+msgid "#pragma implementation for %s appears after file is included"
+msgstr "implementació de #pragma per a %s apareix després que el fitxer és inclòs"
+
+#: cp/lex.c:1063
+msgid "junk at end of #pragma GCC java_exceptions"
+msgstr "escombraries al final del #pragma GCC java_exceptions"
+
+#: cp/lex.c:1107
+msgid "`%D' not defined"
+msgstr "\"%D\" no està definit"
+
+#: cp/lex.c:1110
+msgid "`%D' was not declared in this scope"
+msgstr "\"%D\" no es va declarar en aquest àmbit"
+
+#: cp/lex.c:1118
+msgid "`%D' undeclared (first use this function)"
+msgstr "\"%D\" sense declarar (primer ús en aquesta funció)"
+
+#: cp/lex.c:1122
+msgid "(Each undeclared identifier is reported only once for each function it appears in.)"
+msgstr "(Cada identificador sense declarar és reportat només una vegada per a cada funció en el qual apareix.)"
+
+#: cp/lex.c:1242
+msgid "`::%D' undeclared (first use here)"
+msgstr "\"::%D\" sense declarar (primer ús aquí)"
+
+#: cp/mangle.c:2051
+msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
+msgstr ""
+
+#: cp/mangle.c:2363
+msgid "the mangled name of `%D' will change in a future version of GCC"
+msgstr ""
+
+#: cp/method.c:154
+msgid "invalid use of member `%D' in static member function"
+msgstr "ús invàlid del membre \"%D\" en la funció membre static"
+
+#: cp/method.c:216
+msgid "use of namespace `%D' as expression"
+msgstr "ús de l'espai de noms \"%D\" com una expressió"
+
+#: cp/method.c:221
+msgid "use of class template `%T' as expression"
+msgstr "ús de la plantilla de classe \"%T\" com una expressió"
+
+#: cp/method.c:234
+#, c-format
+msgid "use of %s from containing function"
+msgstr "ús de %s des d'una funció contenidora"
+
+#: cp/method.c:237
+msgid " `%#D' declared here"
+msgstr " \"%#D\" declarat aquí"
+
+#: cp/method.c:255
+msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
+msgstr "la petició pel membre \"%D\" és ambigua en la xarxa d'herència múltiple"
+
+#: cp/method.c:458
+msgid "generic thunk code fails for method `%#D' which uses `...'"
+msgstr "el codi de thunk genèric va fallar per al mètode \"%#D\" que utilitza \"...\""
+
+#: cp/method.c:697
+msgid "non-static const member `%#D', can't use default assignment operator"
+msgstr "el membre const \"%#D\" que no és static, no pot usar l'operador d'assignació per omissió"
+
+#: cp/method.c:702
+msgid "non-static reference member `%#D', can't use default assignment operator"
+msgstr "el membre de referència \"%#D\" que no és static, no pot usar l'operador d'assignació per omissió"
+
+#: parse.y:262
+msgid "`%s' tag used in naming `%#T'"
+msgstr "es va usar la marca \"%s\" al nomenar a\"%#T\""
+
+#: parse.y:542
+msgid "keyword `export' not implemented, and will be ignored"
+msgstr "la paraula clau \"export\" no està implementada, i serà ignorada"
+
+#: parse.y:646
+msgid "use of linkage spec `%D' is different from previous spec `%D'"
+msgstr "l'ús de l'especificació d'enllaçat \"%D\" és diferent de l'especificació prèvia \"%D\""
+
+#: parse.y:943
+msgid "no base or member initializers given following ':'"
+msgstr ""
+
+#: parse.y:984
+msgid "anachronistic old style base class initializer"
+msgstr "inicialitzador de classe base d'estil antic anacrònic"
+
+#. Handle `Class<Class<Type>>' without space in the `>>'
+#: parse.y:1117
+msgid "`>>' should be `> >' in template class name"
+msgstr "\">>\" deu ser \"> >\" en el nom de classe del patró"
+
+#: parse.y:1164
+msgid "use of template qualifier outside template"
+msgstr "ús del qualificador de patró fora del patró"
+
+#: parse.y:1193 parse.y:1202
+#, c-format
+msgid "ISO C++ forbids an empty condition for `%s'"
+msgstr "ISO C++ prohibeix una condició buida per a \"%s\""
+
+#: parse.y:1225
+msgid "definition of class `%T' in condition"
+msgstr "definició de la classe \"%T\" en una condició"
+
+#: parse.y:1227
+msgid "definition of enum `%T' in condition"
+msgstr "definició del enum \"%T\" en una condició"
+
+#: parse.y:1238
+msgid "definition of array `%#D' in condition"
+msgstr "definició de la matriu \"%#D\" en una condició"
+
+#: parse.y:1351
+msgid "old style placement syntax, use () instead"
+msgstr "sintaxi d'ubicació d'estil antic, usi en el seu lloc ()"
+
+#: parse.y:1362
+msgid "`%T' is not a valid expression"
+msgstr "\"%T\" no és una expressió vàlida"
+
+#. This was previously allowed as an extension, but
+#. was removed in G++ 3.3.
+#: parse.y:1369
+msgid "initialization of new expression with `='"
+msgstr "inicialització de l'expressió new amb \"=\""
+
+#: parse.y:1395
+msgid "ISO C++ forbids compound literals"
+msgstr "ISO C++ prohibeix literals composats"
+
+#: parse.y:1642
+msgid "ISO C++ forbids braced-groups within expressions"
+msgstr "ISO C++ prohibeix grups de parèntesis dintre de les expressions"
+
+#: parse.y:1721
+msgid "invalid use of template `%D'"
+msgstr "ús invàlid del patró \"%D\""
+
+#: parse.y:2053 parse.y:2068
+msgid "sigof type specifier"
+msgstr "especificador de tipus sigof"
+
+#: parse.y:2058
+msgid "`sigof' applied to non-aggregate expression"
+msgstr "\"sigof\" aplicat a una expressió no agregada"
+
+#: parse.y:2073
+msgid "`sigof' applied to non-aggregate type"
+msgstr "\"sigof\" aplicat a un tipus no agregat"
+
+#: parse.y:2339
+msgid "using `typename' outside of template"
+msgstr "usant \"typename\" fora de la plantilla"
+
+#: parse.y:2356
+msgid "qualified name does not name a class"
+msgstr ""
+
+#: parse.y:2417
+#, c-format
+msgid "storage class specifier `%s' not allowed after struct or class"
+msgstr "no es permet el especificador de classe d'emmagatzematge \"%s\" després de struct o class"
+
+#: parse.y:2419
+#, c-format
+msgid "type specifier `%s' not allowed after struct or class"
+msgstr "no es permet el especificador de tipus \"%s\" després de struct o class"
+
+#: parse.y:2421
+#, c-format
+msgid "type qualifier `%s' not allowed after struct or class"
+msgstr "no es permet el qualificador de tipus \"%s\" després de struct o class"
+
+#: parse.y:2423
+msgid "no body nor ';' separates two class, struct or union declarations"
+msgstr "no hi ha cos ni \";\" separant dues declaracions class, struct o union"
+
+#: parse.y:2553
+msgid "no bases given following `:'"
+msgstr "no hi ha bases donat seguint \":\""
+
+#: parse.y:2584 parse.y:2599
+msgid "`%D' access"
+msgstr "accés \"%D\""
+
+#: parse.y:2589
+msgid "multiple access specifiers"
+msgstr "specificadors d'accés múltiples"
+
+#: parse.y:2607
+msgid "multiple `virtual' specifiers"
+msgstr "specificadors \"virtual\" múltiples"
+
+#: parse.y:2644
+msgid "missing ';' before right brace"
+msgstr "falta \";\" abans de la clau dreta"
+
+#: parse.y:2865
+msgid "ISO C++ forbids array dimensions with parenthesized type in new"
+msgstr "ISO C++ prohibeix les dimensions de matriu amb tipus amb parèntesi en new"
+
+#: parse.y:3152 parse.y:3172 parse.y:3181 parse.y:3210
+msgid "`%T' is not a class or namespace"
+msgstr "\"%T\" no és una classa o un espai de noms"
+
+#: parse.y:3377
+msgid "ISO C++ forbids label declarations"
+msgstr "ISO C++ prohibeix declaracions d'etiquetes"
+
+#: parse.y:3537
+msgid "ISO C++ forbids computed gotos"
+msgstr "ISO C++ prohibeix gotos calculats"
+
+#: parse.y:3545
+msgid "label must be followed by statement"
+msgstr "l'etiqueta deu ser seguida d'una declaració"
+
+#: parse.y:3590
+msgid "must have at least one catch per try block"
+msgstr "es deu tenir almenys un catch per cada bloc try"
+
+#: parse.y:3650
+msgid "ISO C++ forbids compound statements inside for initializations"
+msgstr "ISO C++ prohibeix les declaracions compostoses internes per a inicialitzacions"
+
+#. This helps us recover from really nasty
+#. parse errors, for example, a missing right
+#. parenthesis.
+#: parse.y:3737 parse.y:3747
+msgid "possibly missing ')'"
+msgstr "possible \")\" faltant"
+
+#: parse.y:3840
+msgid "type specifier omitted for parameter"
+msgstr "especificador de tipus omès per al paràmetre"
+
+#: parse.y:3849
+#, c-format
+msgid "`%E' is not a type, use `typename %E' to make it one"
+msgstr "\"%E\" no és un tipus, usi \"typename %E\" per a fer-lo un tipus"
+
+#: parse.y:3851
+msgid "no type `%D' in `%T'"
+msgstr "no hi ha un tipus \"%D\" en \"%T\""
+
+#: parse.y:3854
+#, c-format
+msgid "type specifier omitted for parameter `%E'"
+msgstr "es va ometre el especificador per al paràmetre \"%E\""
+
+#: parse.y:3862
+msgid "'%D' is used as a type, but is not defined as a type."
+msgstr "s'usa \"%D\" com un tipus, però no està definit com un tipus."
+
+#: cp/pt.c:284
+msgid "data member `%D' cannot be a member template"
+msgstr "les dades membres \"%D\" no poden ser un patró membre"
+
+#: cp/pt.c:296
+msgid "invalid member template declaration `%D'"
+msgstr "declaració del patró membre \"%D\" invàlida"
+
+#: cp/pt.c:691
+msgid "explicit specialization in non-namespace scope `%D'"
+msgstr "especialització explícita en l'àmbit \"%D\" que no és espai de noms"
+
+#: cp/pt.c:703
+msgid "enclosing class templates are not explicitly specialized"
+msgstr "les patrons de classe contingudes no són especialitzades explícitament"
+
+#: cp/pt.c:792 cp/pt.c:833
+msgid "specializing `%#T' in different namespace"
+msgstr "especialitzant \"%#T\" en diferents espais de noms"
+
+#: cp/pt.c:793 cp/pt.c:834
+msgid " from definition of `%#D'"
+msgstr " de la definició de \"%#D\""
+
+#: cp/pt.c:801
+msgid "specialization of `%T' after instantiation"
+msgstr "especialització de \"%T\" després de la instanciació"
+
+#: cp/pt.c:848
+msgid "specialization `%T' after instantiation `%T'"
+msgstr "especialització de \"%T\" després de la instanciació \"%T\""
+
+#: cp/pt.c:860
+msgid "explicit specialization of non-template `%T'"
+msgstr "especialització explícita de \"%T\" que no és patró"
+
+#: cp/pt.c:992
+msgid "specialization of %D after instantiation"
+msgstr "especialització de %D després de la instanciació"
+
+#: cp/pt.c:1096
+msgid "%s %+#D"
+msgstr "%s %+#D"
+
+#: cp/pt.c:1147
+msgid "`%D' is not a function template"
+msgstr "\"%D\" no és un patró de funció"
+
+#: cp/pt.c:1286
+msgid "template-id `%D' for `%+D' does not match any template declaration"
+msgstr "l'idenfificador de patró \"%D\" per a \"%+D\" no coincideix amb cap declaració de patró"
+
+#: cp/pt.c:1294
+msgid "ambiguous template specialization `%D' for `%+D'"
+msgstr "especialització de patró ambigua \"%D\" per a \"%+D\""
+
+#. This case handles bogus declarations like template <>
+#. template <class T> void f<int>();
+#: cp/pt.c:1521 cp/pt.c:1595
+msgid "template-id `%D' in declaration of primary template"
+msgstr "identificador de patró \"%D\" en la declaració del patró primari"
+
+#: cp/pt.c:1534
+msgid "template parameter list used in explicit instantiation"
+msgstr "es va usar una llista de paràmetres de patró en una instanciació explícita"
+
+#: cp/pt.c:1540
+msgid "definition provided for explicit instantiation"
+msgstr "es proveeix una definició per a instanciació explícita"
+
+#: cp/pt.c:1546
+msgid "too many template parameter lists in declaration of `%D'"
+msgstr "massa llistes de paràmetres de patró en la declaració de \"%D\""
+
+#: cp/pt.c:1562
+msgid "too few template parameter lists in declaration of `%D'"
+msgstr "molt poques llistes de paràmetres de patró en la declaració de \"%D\""
+
+#: cp/pt.c:1579
+msgid "explicit specialization not preceded by `template <>'"
+msgstr "especialització explícita no precedida per \"template <>\""
+
+#: cp/pt.c:1592
+msgid "partial specialization `%D' of function template"
+msgstr "especialització parcial \"%D\" del patró de funció"
+
+#: cp/pt.c:1624
+msgid "default argument specified in explicit specialization"
+msgstr "es va especificar un argument per omissió en l'especialització explícita"
+
+#: cp/pt.c:1628
+msgid "template specialization with C linkage"
+msgstr "especialització de patró amb enllaç C"
+
+#. From [temp.expl.spec]:
+#.
+#. If such an explicit specialization for the member
+#. of a class template names an implicitly-declared
+#. special member function (clause _special_), the
+#. program is ill-formed.
+#.
+#. Similar language is found in [temp.explicit].
+#: cp/pt.c:1715
+msgid "specialization of implicitly-declared special member function"
+msgstr "especialització de la funció membre especial declarada implícitament"
+
+#: cp/pt.c:1759
+msgid "no member function `%D' declared in `%T'"
+msgstr "la funció no membre \"%D\" es va declarar en \"%T\""
+
+#. There are two many template parameter lists.
+#: cp/pt.c:1909
+msgid "too many template parameter lists in declaration of `%T'"
+msgstr "massa llistes de paràmetres de patró en la declaració de \"%T\""
+
+#: cp/pt.c:2005
+msgid " shadows template parm `%#D'"
+msgstr " enfosquen el paràmetre de patró \"%#D\""
+
+#: cp/pt.c:2409
+msgid "template parameters not used in partial specialization:"
+msgstr "no s'usen els paràmetres de patró en l'especialització parcial:"
+
+#: cp/pt.c:2413
+msgid " `%D'"
+msgstr " \"%D\""
+
+#: cp/pt.c:2425
+msgid "partial specialization `%T' does not specialize any template arguments"
+msgstr "l'especialització parcial \"%T\" no especialitza cap argument de patró"
+
+#: cp/pt.c:2450
+#, c-format
+msgid "template argument `%E' involves template parameter(s)"
+msgstr "l'argument de patró \"%E\" involucra el(s) paràmetre(s) de patró"
+
+#: cp/pt.c:2494
+msgid "type `%T' of template argument `%E' depends on template parameter(s)"
+msgstr "el tipus \"%T\" de l'argument de patró \"%E\" depèn del(s) paràmetre(s) de patró"
+
+#: cp/pt.c:2582
+msgid "no default argument for `%D'"
+msgstr "no hi ha un argument per omissió per a \"%D\""
+
+#: cp/pt.c:2735
+msgid "template with C linkage"
+msgstr "patró amb enllaç C"
+
+#: cp/pt.c:2738
+msgid "template class without a name"
+msgstr "classe de patró sense nom"
+
+#: cp/pt.c:2815
+msgid "`%D' does not declare a template type"
+msgstr "\"%D\" no declara un tipus de patró"
+
+#: cp/pt.c:2821
+msgid "template definition of non-template `%#D'"
+msgstr "definició de patró de \"%#D\" que no és patró"
+
+#: cp/pt.c:2862
+msgid "expected %d levels of template parms for `%#D', got %d"
+msgstr "s'esperaven %d nivells de paràmetres de patró per a \"%#D\", es van obtenir %d"
+
+#: cp/pt.c:2874
+msgid "got %d template parameters for `%#D'"
+msgstr "es van obtenir %d paràmetres de patró per a \"%#D\""
+
+#: cp/pt.c:2877
+msgid "got %d template parameters for `%#T'"
+msgstr "es van obtenir %d paràmetres de patró per a \"%#T\""
+
+#: cp/pt.c:2879
+#, c-format
+msgid " but %d required"
+msgstr " però es requereixen %d"
+
+#: cp/pt.c:2962
+msgid "`%T' is not a template type"
+msgstr "\"%T\" no és un tipus patró"
+
+#: cp/pt.c:2978
+msgid "previous declaration `%D'"
+msgstr "declaració prèvia de \"%D\""
+
+#: cp/pt.c:2979
+#, c-format
+msgid "used %d template parameter%s instead of %d"
+msgstr "es van usar %d paràmetre%s de patró en lloc de %d"
+
+#: cp/pt.c:2995
+msgid "template parameter `%#D'"
+msgstr "paràmetre de patró \"%#D\""
+
+#: cp/pt.c:2996
+msgid "redeclared here as `%#D'"
+msgstr "redeclarat aquí com \"%#D\""
+
+#. We have in [temp.param]:
+#.
+#. A template-parameter may not be given default arguments
+#. by two different declarations in the same scope.
+#: cp/pt.c:3006
+msgid "redefinition of default argument for `%#D'"
+msgstr "redefinició de l'argument per omissió per a \"%#D\""
+
+#: cp/pt.c:3007
+msgid " original definition appeared here"
+msgstr " la definició original apareix aquí"
+
+#: cp/pt.c:3100
+#, c-format
+msgid "`%E' is not a valid template argument"
+msgstr "\"%E\" no és un argument de patró vàlid"
+
+#: cp/pt.c:3104
+msgid "it must be the address of a function with external linkage"
+msgstr "deu ser l'adreça d'una funció amb enllaç extern"
+
+#: cp/pt.c:3106
+msgid "it must be the address of an object with external linkage"
+msgstr "deu ser l'adreça d'un objecte amb enllaç extern"
+
+#: cp/pt.c:3110
+msgid "it must be a pointer-to-member of the form `&X::Y'"
+msgstr "deu ser un punter-a-membre de la forma \"&X::I\""
+
+#: cp/pt.c:3121
+#, c-format
+msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
+msgstr "la cadena literal %E no és un argument vàlid de patró perquè és l'adreça d'un objecte amb enllaç estàtic"
+
+#: cp/pt.c:3133
+#, c-format
+msgid "address of non-extern `%E' cannot be used as template argument"
+msgstr "no es pot usar l'adreça de \"%E\" que no és extern com un argument de patró"
+
+#: cp/pt.c:3144
+#, c-format
+msgid "non-constant `%E' cannot be used as template argument"
+msgstr "\"%E\" que no és constant no es pot usar com un argument de patró"
+
+#: cp/pt.c:3151
+#, c-format
+msgid "object `%E' cannot be used as template argument"
+msgstr "l'objecte \"%E\" no es pot usar com un argument de patró"
+
+#: cp/pt.c:3526
+#, c-format
+msgid "to refer to a type member of a template parameter, use `typename %E'"
+msgstr "per a fer referència a un tipus membre d'un paràmetre de patró, usi \"typename %E\""
+
+#: cp/pt.c:3539 cp/pt.c:3555 cp/pt.c:3594
+msgid "type/value mismatch at argument %d in template parameter list for `%D'"
+msgstr "no coincideix el tipus/valor en l'argument %d en la llista de paràmetres de patró per a \"%D\""
+
+#: cp/pt.c:3542
+msgid " expected a constant of type `%T', got `%T'"
+msgstr " s'esperava una constant de tipus \"%T\", es va obtenir \"%T\""
+
+#: cp/pt.c:3546
+#, c-format
+msgid " expected a type, got `%E'"
+msgstr " s'esperava un tipus, es va obtenir \"%E\""
+
+#: cp/pt.c:3558
+msgid " expected a type, got `%T'"
+msgstr " s'esperava un tipus, es va obtenir \"%T\""
+
+#: cp/pt.c:3560
+msgid " expected a class template, got `%T'"
+msgstr " s'esperava un patró de classe, es va obtenir \"%T\""
+
+#: cp/pt.c:3596
+msgid " expected a template of type `%D', got `%D'"
+msgstr " s'esperava un patró de tipus \"%D\", es va obtenir \"%D\""
+
+#: cp/pt.c:3618
+msgid "template-argument `%T' uses anonymous type"
+msgstr "l'argument de patró \"%T\" usa un tipus anònim"
+
+#: cp/pt.c:3621
+msgid "template-argument `%T' uses local type `%T'"
+msgstr "l'argument de patró \"%T\" usa el tipus local \"%T\""
+
+#: cp/pt.c:3631
+msgid "template-argument `%T' is a variably modified type"
+msgstr "l'argument de patró \"%T\" és un tipus modificat variablement"
+
+#: cp/pt.c:3666
+msgid "could not convert template argument `%E' to `%T'"
+msgstr "no es pot convertir l'argument de patró \"%E\" a \"%T\""
+
+#: cp/pt.c:3710
+#, c-format
+msgid "wrong number of template arguments (%d, should be %d)"
+msgstr "nombre erroni d'arguments de patró (%d, deuria ser %d)"
+
+#: cp/pt.c:3714
+msgid "provided for `%D'"
+msgstr "proveït per \"%D\""
+
+#: cp/pt.c:3761
+#, c-format
+msgid "template argument %d is invalid"
+msgstr "l'argument de patró %d és invàlid"
+
+#: cp/pt.c:3997
+msgid "non-template used as template"
+msgstr "s'usa un no-patró com patró"
+
+#: cp/pt.c:4139
+msgid "`%T' is not a template"
+msgstr "\"%T\" no és un patró"
+
+#: cp/pt.c:4152
+msgid "non-template type `%T' used as a template"
+msgstr "s'usa el tipus \"%T\" que és no-patró com patró"
+
+#: cp/pt.c:4154
+msgid "for template declaration `%D'"
+msgstr "per a la declaració de patró \"%D\""
+
+#: cp/pt.c:4770
+msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
+msgstr "la profunditat d'instanciació del patró excedeix el màxim de %d (usi -ftemplate-depth-NN per a incrementar el màxim) al instanciar \"%D\""
+
+#: cp/pt.c:5247
+msgid "ambiguous class template instantiation for `%#T'"
+msgstr "instanciació de patró classe ambigua per a \"%#T\""
+
+#: cp/pt.c:5254
+msgid "%s %+#T"
+msgstr "%s %+#T"
+
+#: cp/pt.c:6284 cp/pt.c:6396
+msgid "instantiation of `%D' as type `%T'"
+msgstr "instanciació de \"%D\" com tipus \"%T\""
+
+#: cp/pt.c:6440
+msgid "invalid parameter type `%T'"
+msgstr "tipus de paràmetre \"%T\" invàlid"
+
+#: cp/pt.c:6442
+msgid "in declaration `%D'"
+msgstr "en la declaració \"%D\""
+
+#: cp/pt.c:6517
+msgid "creating pointer to member function of non-class type `%T'"
+msgstr "creant un punter a funció membre del tipus \"%T\" que no és classe"
+
+#: cp/pt.c:6680
+msgid "creating array with size zero"
+msgstr "creant la matriu amb grandària zero"
+
+#: cp/pt.c:6694
+#, c-format
+msgid "creating array with size zero (`%E')"
+msgstr "creant la matriu amb grandària zero (\"%E\")"
+
+#: cp/pt.c:6933
+msgid "forming reference to void"
+msgstr "formant la referència a void"
+
+#: cp/pt.c:6935
+msgid "forming %s to reference type `%T'"
+msgstr "formant %s per a referenciar al tipus \"%T\""
+
+#: cp/pt.c:6973
+msgid "creating pointer to member of non-class type `%T'"
+msgstr "creant un punter al membre del tipus \"%T\" que no és classe"
+
+#: cp/pt.c:6979
+msgid "creating pointer to member reference type `%T'"
+msgstr "creant un punter al membre de referència de tipus \"%T\""
+
+#: cp/pt.c:7057
+msgid "creating array of `%T'"
+msgstr "creant la matriu de \"%T\""
+
+#: cp/pt.c:7100
+msgid "`%T' is not a class, struct, or union type"
+msgstr "\"%T\" no és de tipus classe, struct o union"
+
+#: cp/pt.c:7213
+#, c-format
+msgid "use of `%s' in template"
+msgstr "ús de \"%s\" en el patró"
+
+#: cp/pt.c:7975
+msgid "type `%T' composed from a local class is not a valid template-argument"
+msgstr "el tipus \"%T\" composat des d'una classe local no és un argument de patró vàlid"
+
+#: cp/pt.c:7976
+msgid " trying to instantiate `%D'"
+msgstr " tractant d'instanciar \"%D\""
+
+#: cp/pt.c:8421
+msgid "incomplete type unification"
+msgstr "unificació de tipus incomplet"
+
+#: cp/pt.c:9387
+#, c-format
+msgid "use of `%s' in template type unification"
+msgstr "ús de \"%s\" en la unificació de tipus de patró"
+
+#: cp/pt.c:9821 cp/pt.c:9893
+msgid "explicit instantiation of non-template `%#D'"
+msgstr "instanciació explícita de \"%#D\" que no és patró"
+
+#: cp/pt.c:9837 cp/pt.c:9888
+msgid "no matching template for `%D' found"
+msgstr "no es troba una patró coincident per a \"%D\""
+
+#: cp/pt.c:9843
+msgid "explicit instantiation of `%#D'"
+msgstr "instanciació explícita de \"%#D\""
+
+#: cp/pt.c:9880
+msgid "duplicate explicit instantiation of `%#D'"
+msgstr "instanciació explícita duplicada de \"%#D\""
+
+#: cp/pt.c:9905
+msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
+msgstr "ISO C++ prohibeix l'ús de \"extern\" en instanciacions explícites"
+
+#: cp/pt.c:9909 cp/pt.c:9999
+msgid "storage class `%D' applied to template instantiation"
+msgstr "classe d'emmagatzematge \"%D\" aplicada a la instanciació d'un patró"
+
+#: cp/pt.c:9966
+msgid "explicit instantiation of non-template type `%T'"
+msgstr "instanciació explícita del tipus \"%T\" del tipus no-patró"
+
+#: cp/pt.c:9980
+msgid "explicit instantiation of `%#T' before definition of template"
+msgstr "instanciació explícita de \"%#T\" abans de la definició del patró"
+
+#: cp/pt.c:9988
+#, c-format
+msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
+msgstr "ISO C++ prohibeix l'ús de \"%s\" en les instanciacions explícites"
+
+#: cp/pt.c:10032
+msgid "duplicate explicit instantiation of `%#T'"
+msgstr "instanciació explícita duplicada de \"%#T\""
+
+#: cp/pt.c:10412
+msgid "explicit instantiation of `%D' but no definition available"
+msgstr "instanciació explícita de \"%D\" però no hi ha una definició disponible"
+
+#: cp/pt.c:10815
+msgid "`%#T' is not a valid type for a template constant parameter"
+msgstr "\"%#T\" no és un tipus vàlid per a un paràmetre constant de patró"
+
+#: cp/repo.c:271
+msgid "-frepo must be used with -c"
+msgstr "-frepo deu ser usat amb -c"
+
+#: cp/repo.c:361
+#, c-format
+msgid "mysterious repository information in %s"
+msgstr "informació de \"repository\" misteriosa en %s"
+
+#: cp/repo.c:376
+#, c-format
+msgid "can't create repository information file `%s'"
+msgstr "no es pot crear el fitxer d'informació de \"repository\" \"%s\""
+
+#: cp/rtti.c:240
+msgid "cannot use typeid with -fno-rtti"
+msgstr "no es pot usar typeid sense -fno-rtti"
+
+#: cp/rtti.c:246
+msgid "must #include <typeinfo> before using typeid"
+msgstr "deu fer #include <typeinfo> abans d'usar typeid"
+
+#: cp/rtti.c:320
+msgid "cannot create type information for type `%T' because its size is variable"
+msgstr "no es pot crear la informació de tipus per al tipus \"%T\" perquè la seva grandària és variable"
+
+#: cp/rtti.c:584 cp/rtti.c:598
+msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
+msgstr "dynamic_cast de \"%#D\" a \"%#T\" mai podrà tenir èxit"
+
+#: cp/rtti.c:674
+msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
+msgstr "no es pot fer dynamic_cast \"%E\" (de tipus \"%#T\") al tipus \"%#T\" (%s)"
+
+#: cp/search.c:332
+msgid "`%T' is an ambiguous base of `%T'"
+msgstr "\"%T\" és una base ambigua de \"%T\""
+
+#: cp/search.c:350
+msgid "`%T' is an inaccessible base of `%T'"
+msgstr "\"%T\" és una base inaccessible de \"%T\""
+
+#. At parse time, we don't want to give this error, since
+#. we won't have enough state to make this kind of
+#. decision properly. But there are times (e.g., with
+#. enums in nested classes) when we do need to call
+#. this fn at parse time. So, in those cases, we pass
+#. complain as a 0 and just return a NULL_TREE.
+#: cp/search.c:1638
+msgid "assignment to non-static member `%D' of enclosing class `%T'"
+msgstr ""
+
+#: cp/search.c:2050
+msgid "adjusting pointers for covariant returns"
+msgstr "ajustant els punters per a retorns covariants"
+
+#: cp/search.c:2054 cp/search.c:2061
+msgid "invalid covariant return type for `%#D'"
+msgstr "tipus de retorn covariant invàlid per a \"%#D\""
+
+#: cp/search.c:2055
+msgid " overriding `%#D' (must be pointer or reference to class)"
+msgstr " substituint a \"%#D\" (deu ser punter o referència a una classe)"
+
+#: cp/search.c:2062
+msgid " overriding `%#D' (must use pointer or reference)"
+msgstr " substituint a \"%#D\" (deu ser punter o referència)"
+
+#: cp/search.c:2067
+msgid "conflicting return type specified for `%#D'"
+msgstr "tipus de devolució en conflicte especificats per a \"%#D\""
+
+#: cp/search.c:2068
+msgid " overriding `%#D'"
+msgstr " substituint \"%#D\""
+
+#: cp/search.c:2077
+#, c-format
+msgid "looser throw specifier for `%#F'"
+msgstr "especificador thrown més flexible per a \"%#F\""
+
+#: cp/search.c:2078
+#, c-format
+msgid " overriding `%#F'"
+msgstr " substituint \"%#F\""
+
+#. A static member function cannot match an inherited
+#. virtual member function.
+#: cp/search.c:2167
+msgid "`%#D' cannot be declared"
+msgstr "\"%#D\" no pot ser declarat"
+
+#: cp/search.c:2168
+msgid " since `%#D' declared in base class"
+msgstr " ja que es va declarar \"%#D\" en la classe base"
+
+#: cp/search.c:2309
+msgid "`%#D' needs a final overrider"
+msgstr "\"%#D\" necessita un substituent final"
+
+#: cp/semantics.c:919
+#, c-format
+msgid "type of asm operand `%E' could not be determined"
+msgstr "no es pot determinar el tipus de l'operant asm \"%E\""
+
+#: cp/semantics.c:1051
+msgid "ISO C++ does not permit named return values"
+msgstr "ISO C++ no permet valors de retorn nomenats"
+
+#: cp/semantics.c:1060
+msgid "return identifier `%D' already in place"
+msgstr "l'identificador de retorn \"%D\" ja està en el seu lloc"
+
+#: cp/semantics.c:1068
+msgid "can't redefine default return value for constructors"
+msgstr "no es pot redefinir el valor per omissió de retorn pels constructors"
+
+#: cp/semantics.c:1100
+msgid "only constructors take base initializers"
+msgstr ""
+
+#: cp/semantics.c:1343
+msgid "`this' is unavailable for static member functions"
+msgstr "\"this\" no està disponible per a funcions membre static"
+
+#: cp/semantics.c:1349
+msgid "invalid use of `this' in non-member function"
+msgstr "ús invàlid de \"this\" en la funció no membre"
+
+#: cp/semantics.c:1351
+msgid "invalid use of `this' at top level"
+msgstr "ús invàlid de \"this\" en el nivell principal"
+
+#: cp/semantics.c:1381
+msgid "calling type `%T' like a method"
+msgstr "cridant al tipus \"%T\" com un mètode"
+
+#: cp/semantics.c:1419
+msgid "destructor specifier `%T::~%T()' must have matching names"
+msgstr "el especificador del destructor \"%T::%T()\" deu tenir noms coincidents"
+
+#: cp/semantics.c:1425
+msgid "`%E' is not of type `%T'"
+msgstr "\"%E\" no és de tipus \"%T\""
+
+#: cp/semantics.c:1613
+msgid "template type parameters must use the keyword `class' or `typename'"
+msgstr "els paràmetres de tipus patró deu usar la paraula clau \"class\" o \"typename\""
+
+#: cp/semantics.c:1652
+msgid "invalid default template argument"
+msgstr ""
+
+#: cp/semantics.c:1694
+msgid "definition of `%#T' inside template parameter list"
+msgstr "definició de \"%#T\" dintre d'una llista de paràmetres de patró"
+
+#: cp/semantics.c:1710
+msgid "invalid definition of qualified type `%T'"
+msgstr "definició invàlida del tipus qualificat \"%T\""
+
+#: cp/semantics.c:2053
+msgid "invalid base-class specification"
+msgstr "especificació de classe base invàlida"
+
+#: cp/semantics.c:2062
+msgid "base class `%T' has cv qualifiers"
+msgstr "la classe base \"%T\" té qualificadors cv"
+
+#: cp/semantics.c:2093
+msgid "multiple declarators in template declaration"
+msgstr "múltiples declaradors en una declaració de patró"
+
+#: cp/semantics.c:2120
+#, c-format
+msgid "type of `%E' is unknown"
+msgstr "el tipus de \"%E\" és desconegut"
+
+#: cp/spew.c:225
+#, c-format
+msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
+msgstr "el nom d'identificador \"%s\" causa conflictes amb l'estratègia interna de nomenatge del C++ de GNU"
+
+#: cp/spew.c:1002 cp/spew.c:1340
+msgid "parse error at end of saved function text"
+msgstr "error de decodificació al final del text de la funció guardada"
+
+#: cp/spew.c:1090 cp/spew.c:1178
+msgid "%Hend of file read inside definition"
+msgstr ""
+
+#: cp/spew.c:1121
+msgid "parse error in method specification"
+msgstr "error de decodificació en l'especificació del mètode"
+
+#: cp/spew.c:1161
+msgid "function body for constructor missing"
+msgstr "falta el cos de la funció pel constructor"
+
+#: cp/spew.c:1262
+msgid "%Hend of file read inside default argument"
+msgstr "%Hlectura de final de fitxer dintre de l'argument per defecte"
+
+#: cp/spew.c:1419
+msgid "circular dependency in default args of `%#D'"
+msgstr "dependència circular en els arguments per omissió de \"%#D\""
+
+#: cp/spew.c:1483
+msgid "invalid type `%T' for default argument to `%T'"
+msgstr "tipus \"%T\" invàlid per a l'argument per omissió de \"%T\""
+
+#: cp/spew.c:1548
+#, c-format
+msgid "%s before `%s'"
+msgstr "%s abans de \"%s\""
+
+#: cp/spew.c:1550
+#, c-format
+msgid "%s before `%c'"
+msgstr "%s abans de \"%c\""
+
+#: cp/spew.c:1552
+#, c-format
+msgid "%s before `\\%o'"
+msgstr "%s abans de \"\\%o\""
+
+#: cp/spew.c:1555
+#, c-format
+msgid "%s before `%s' token"
+msgstr "%s abans del testimoni \"%s\""
+
+#: cp/tree.c:263 cp/tree.c:275
+#, c-format
+msgid "non-lvalue in %s"
+msgstr "non-lvalue dintre %s"
+
+#: cp/tree.c:562
+msgid "`%V' qualifiers cannot be applied to `%T'"
+msgstr "els qualificadors \"%V\" no es poden aplicar a \"%T\""
+
+#: cp/tree.c:1941
+#, c-format
+msgid "`%s' attribute can only be applied to Java class definitions"
+msgstr "l'atribut \"%s\" només es pot aplicar a definicions de classes Java"
+
+#: cp/tree.c:1971
+#, c-format
+msgid "`%s' attribute can only be applied to class definitions"
+msgstr "l'atribut \"%s\" sol es pot aplicar a definicions de classe"
+
+#: cp/tree.c:1977
+#, c-format
+msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
+msgstr "\"%s\" és obsolet; les vtables de g++ ara són compatibles amb COM per omissió"
+
+#: cp/tree.c:2002
+msgid "requested init_priority is not an integer constant"
+msgstr "la init_priority sol·licitada no és una constant entera"
+
+#: cp/tree.c:2023
+#, c-format
+msgid "can only use `%s' attribute on file-scope definitions of objects of class type"
+msgstr "sol es pot usar l'atribut \"%s\" en definicions de rang de fitxer d'objectes de tipus class"
+
+#: cp/tree.c:2031
+msgid "requested init_priority is out of range"
+msgstr "la init_priority sol·licitada està fora de rang"
+
+#: cp/tree.c:2041
+msgid "requested init_priority is reserved for internal use"
+msgstr "la init_priority sol·licitada està reservada per a ús intern"
+
+#: cp/tree.c:2051
+#, c-format
+msgid "`%s' attribute is not supported on this platform"
+msgstr "l'atribut \"%s\" no té suport en aquesta plataforma"
+
+#: cp/tree.c:2588
+#, c-format
+msgid "lang_* check: failed in %s, at %s:%d"
+msgstr "revisió lang_*: va fallar en %s, en %s:%d"
+
+#: cp/typeck.c:524
+#, c-format
+msgid "ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
+msgstr "ISO C++ prohibeix %s entre punters de tipus \"void *\" i punters a funcions"
+
+#: cp/typeck.c:545
+msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
+msgstr "%s entre diferents tipus de punter \"%T\" i \"%T\" manca d'una conversió"
+
+#: cp/typeck.c:1436
+msgid "ISO C++ prohibits conversion from `%#T' to `(...)'"
+msgstr "ISO C++ prohibeix la conversió de \"%#T\" a \"(...)\""
+
+#: cp/typeck.c:1514
+#, c-format
+msgid "invalid application of `%s' to a member function"
+msgstr "aplicació invàlida de \"%s\" a una funció membre"
+
+#: cp/typeck.c:1520
+#, c-format
+msgid "invalid application of `%s' to non-static member"
+msgstr "ús invàlid de \"%s\" en un membre no static"
+
+#: cp/typeck.c:1538
+msgid "sizeof applied to a bit-field"
+msgstr "sizeof aplicat a un camp de bits"
+
+#: cp/typeck.c:1541
+msgid "ISO C++ forbids applying `sizeof' to an expression of function type"
+msgstr "ISO C++ prohibeix l'aplicació de \"sizeof\" a una expressió de tipus de funció"
+
+#: cp/typeck.c:1759
+msgid "deprecated conversion from string constant to `%T'"
+msgstr "conversió obsoleta d'una constant de cadena a \"%T\""
+
+#: cp/typeck.c:1890 cp/typeck.c:2122
+msgid "request for member `%D' in `%E', which is of non-class type `%T'"
+msgstr "sol·licitud pel membre \"%D\" en \"%E\", el qual és del tipus no agregat \"%T\""
+
+#: cp/typeck.c:1916
+msgid "`%D' is not a member of `%T'"
+msgstr "\"%D\" no és un membre de \"%T\""
+
+#: cp/typeck.c:1957 cp/typeck.c:1978
+msgid "invalid access to non-static data member `%D' of NULL object"
+msgstr "accés invàlid a dades del membre que no és static \"%D\" de l'objecte NULL"
+
+#: cp/typeck.c:1959 cp/typeck.c:1980
+msgid "(perhaps the `offsetof' macro was used incorrectly)"
+msgstr ""
+
+#: cp/typeck.c:2168
+msgid "`%D::%D' is not a member of `%T'"
+msgstr "\"%D::%D\" no és un membre de \"%T\""
+
+#: cp/typeck.c:2179
+msgid "`%T' is not a base of `%T'"
+msgstr "\"%T\" no és una base de \"%T\""
+
+#: cp/typeck.c:2199
+msgid "destructor specifier `%T::~%T' must have matching names"
+msgstr "el especificador del destructor \"%T::~%T\" deu tenir noms coincidents"
+
+#: cp/typeck.c:2205
+msgid "type `%T' has no destructor"
+msgstr "el tipus \"%T\" no té destructor"
+
+#: cp/typeck.c:2244
+msgid "`%D' is not a member template function"
+msgstr "\"%D\" no és una funció patró membre"
+
+#. A pointer to incomplete type (other than cv void) can be
+#. dereferenced [expr.unary.op]/1
+#: cp/typeck.c:2338
+msgid "`%T' is not a pointer-to-object type"
+msgstr "\"%T\" no és de tipus punter-a-objecte"
+
+#: cp/typeck.c:2365
+#, c-format
+msgid "invalid use of `%s' on pointer to member"
+msgstr "ús invàlid de \"%s\" en punter a membre"
+
+#: cp/typeck.c:2371
+msgid "invalid type argument"
+msgstr "argument de tipus invàlid"
+
+#: cp/typeck.c:2474
+msgid "ISO C++ forbids subscripting non-lvalue array"
+msgstr "ISO C++ prohibeix el subindici d'una matriu de l-valors"
+
+#: cp/typeck.c:2485
+msgid "subscripting array declared `register'"
+msgstr "es va declarar el subindici de la matriu com \"register\""
+
+#: cp/typeck.c:2570
+#, c-format
+msgid "object missing in use of `%E'"
+msgstr "falta un objecte en \"%E\""
+
+#: cp/typeck.c:2674
+msgid "ISO C++ forbids calling `::main' from within program"
+msgstr "ISO C++ prohibeix la cridada \"::main\" dintre del mateix programa"
+
+#: cp/typeck.c:2699
+#, c-format
+msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
+msgstr "es deu usar .* o ->* en la cridada a la funció punter-a-membre en \"%E (...)\""
+
+#: cp/typeck.c:2712
+#, c-format
+msgid "`%E' cannot be used as a function"
+msgstr "no es pot usar \"%E\" com una funció"
+
+#: cp/typeck.c:2824
+msgid "too many arguments to %s `%+#D'"
+msgstr "massa arguments per a %s \"%+#D\""
+
+#: cp/typeck.c:2865
+msgid "parameter type of called function is incomplete"
+msgstr "el tipus del paràmetre de la funció cridada és incomplet"
+
+#: cp/typeck.c:2928
+msgid "too few arguments to %s `%+#D'"
+msgstr "molt pocs arguments per a %s \"%+#D\""
+
+#: cp/typeck.c:3056 cp/typeck.c:3066
+msgid "assuming cast to type `%T' from overloaded function"
+msgstr "assumint la conversió al tipus \"%T\" des de la funció sobrecarregada"
+
+#: cp/typeck.c:3126
+#, c-format
+msgid "division by zero in `%E / 0'"
+msgstr "divisió per zero en \"%E / 0\""
+
+#: cp/typeck.c:3128
+#, c-format
+msgid "division by zero in `%E / 0.'"
+msgstr "divisió per zero en \"%E / 0.\""
+
+#: cp/typeck.c:3158
+#, c-format
+msgid "division by zero in `%E %% 0'"
+msgstr "divisió per zero en \"%E %% 0\""
+
+#: cp/typeck.c:3160
+#, c-format
+msgid "division by zero in `%E %% 0.'"
+msgstr "divisió per zero en \"%E %% 0.\""
+
+#: cp/typeck.c:3240
+#, c-format
+msgid "%s rotate count is negative"
+msgstr "el compte de rotació %s és negatiu"
+
+#: cp/typeck.c:3243
+#, c-format
+msgid "%s rotate count >= width of type"
+msgstr "el compte de rotació %s >= amplària del tipus"
+
+#: cp/typeck.c:3274 cp/typeck.c:3279 cp/typeck.c:3370 cp/typeck.c:3375
+msgid "ISO C++ forbids comparison between pointer and integer"
+msgstr "ISO C++ prohibeix la comparança entre punters i enters"
+
+#: cp/typeck.c:3553
+msgid "comparison between types `%#T' and `%#T'"
+msgstr "comparança entre els tipus \"%#T\" i \"%#T\""
+
+#: cp/typeck.c:3589
+msgid "comparison between signed and unsigned integer expressions"
+msgstr "comparança entre expressions enteres signed i unsigned"
+
+#: cp/typeck.c:3654
+msgid "invalid operands of types `%T' and `%T' to binary `%O'"
+msgstr "operadors invàlids de tipus \"%T\" i \"%T\" per al binari \"%O\""
+
+#. Some sort of arithmetic operation involving NULL was
+#. performed. Note that pointer-difference and pointer-addition
+#. have already been handled above, and so we don't end up here in
+#. that case.
+#: cp/typeck.c:3676
+msgid "NULL used in arithmetic"
+msgstr "es va usar NULL en l'aritmètica"
+
+#: cp/typeck.c:3743
+msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
+msgstr "ISO C++ prohibeix l'ús d'un punter de tipus \"void *\" en la substracció"
+
+#: cp/typeck.c:3745
+msgid "ISO C++ forbids using pointer to a function in subtraction"
+msgstr "ISO C++ prohibeix l'ús d'un punter a una funció en la substracció"
+
+#: cp/typeck.c:3747
+msgid "ISO C++ forbids using pointer to a method in subtraction"
+msgstr "ISO C++ prohibeix l'ús d'un punter a un mètode en la substracció"
+
+#: cp/typeck.c:3749
+msgid "ISO C++ forbids using pointer to a member in subtraction"
+msgstr "ISO C++ prohibeix l'ús d'un punter a un membre en la substracció"
+
+#: cp/typeck.c:3761
+msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
+msgstr "ús invàlid d'un punter a un tipus incomplet en aritmètica de punters"
+
+#: cp/typeck.c:3821
+#, c-format
+msgid "invalid use of '%E' to form a pointer-to-member-function. Use a qualified-id."
+msgstr ""
+
+#: cp/typeck.c:3827
+#, c-format
+msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
+msgstr ""
+
+#: cp/typeck.c:3850
+msgid "taking address of temporary"
+msgstr "prenent l'adreça del temporal"
+
+#: cp/typeck.c:4091
+#, c-format
+msgid "ISO C++ forbids %sing an enum"
+msgstr "ISO C++ prohibeix %sing un enum"
+
+#: cp/typeck.c:4103
+msgid "cannot %s a pointer to incomplete type `%T'"
+msgstr "no es pot %s un punter a un tipus incomplet \"%T\""
+
+#: cp/typeck.c:4110
+msgid "ISO C++ forbids %sing a pointer of type `%T'"
+msgstr "ISO C++ prohibeix %sing un punter de tipus \"%T\""
+
+#: cp/typeck.c:4135
+msgid "cast to non-reference type used as lvalue"
+msgstr "s'usa la conversió a un tipus no referenciat com un lvalue"
+
+#: cp/typeck.c:4169
+msgid "invalid use of `--' on bool variable `%D'"
+msgstr "ús invàlid de \"--\" en la variable booleana \"%D\""
+
+#. ARM $3.4
+#: cp/typeck.c:4202
+msgid "ISO C++ forbids taking address of function `::main'"
+msgstr "ISO C++ prohibeix prendre l'adreça de la funció \"::main\""
+
+#. An expression like &memfn.
+#: cp/typeck.c:4269
+msgid "ISO C++ forbids taking the address of an unqualified non-static member function to form a pointer to member function. Say `&%T::%D'"
+msgstr "ISO C++ prohibeix prendre l'adreça d'una funció membre no estàtica sense qualificar per a formar un punter a la funció membre. Com \"&%T::%D\""
+
+#: cp/typeck.c:4271
+msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
+msgstr "ISO C++ prohibeix prendre l'adreça d'una funció membre limitada per a formar un punter a la funció membre. Com \"&%T::%D\""
+
+#: cp/typeck.c:4295
+msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
+msgstr "ISO C++ prohibeix prendre l'adreça d'una conversió a una expressió no lvalue"
+
+#: cp/typeck.c:4324
+msgid "attempt to take address of bit-field structure member `%D'"
+msgstr ""
+
+#: cp/typeck.c:4444
+msgid "taking address of destructor"
+msgstr "prenent l'adreça del destructor"
+
+#: cp/typeck.c:4457
+msgid "taking address of bound pointer-to-member expression"
+msgstr "prenent l'adreça de l'expressió limitada punter-a-membre"
+
+#: cp/typeck.c:4473
+msgid "cannot create pointer to reference member `%D'"
+msgstr "no es pot crear un punter al membre referència \"%D\""
+
+#: cp/typeck.c:4536
+msgid "cannot take the address of `this', which is an rvalue expression"
+msgstr "no es pot prendre l'adreça de \"this\" que és una expressió rvalue"
+
+#: cp/typeck.c:4555
+msgid "address requested for `%D', which is declared `register'"
+msgstr "es va sol·licitar l'adreça de \"%D\", el qual es va declarar com \"register\""
+
+#: cp/typeck.c:4682
+msgid "static_cast from type `%T' to type `%T' casts away constness"
+msgstr "static_cast del tipus \"%T\" al tipus \"%T\" proscriu la constància"
+
+#: cp/typeck.c:4871
+msgid "invalid static_cast from type `%T' to type `%T'"
+msgstr "static_cast invàlid del tipus \"%T\" al tipus \"%T\""
+
+#: cp/typeck.c:4910
+msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
+msgstr "reinterpret_cast invàlid d'una expressió rvalue del tipus \"%T\" al tipus \"%T\""
+
+#: cp/typeck.c:4930
+msgid "reinterpret_cast from `%T' to `%T' loses precision"
+msgstr "reinterpret_cast de \"%T\" a \"%T\" perd precisió"
+
+#: cp/typeck.c:4943
+msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
+msgstr "reinterpret_cast de \"%T\" a \"%T\" proscriu a const (o volatile)"
+
+#: cp/typeck.c:4952
+msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
+msgstr "ISO C++ prohibeix la conversió entre entre punter a funció i punter a objecte"
+
+#: cp/typeck.c:4958
+msgid "invalid reinterpret_cast from type `%T' to type `%T'"
+msgstr "reinterpret_cast invàlid del tipus \"%T\" al tipus \"%T\""
+
+#: cp/typeck.c:4985
+msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
+msgstr "ús invàlid de const_cast amb tipus \"%T\", que no és punter, referència, ni un tipus punter-a-dades-membres"
+
+#: cp/typeck.c:4988
+msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
+msgstr "ús invàlid de const_cast amb tipus \"%T\", el qual és un punter o referència a un tipus de funció"
+
+#: cp/typeck.c:5011
+msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
+msgstr "const_cast invàlid d'un rvalue de tipus \"%T\" al tipus \"%T\""
+
+#: cp/typeck.c:5027
+msgid "invalid const_cast from type `%T' to type `%T'"
+msgstr "const_cast invàlid del tipus \"%T\" al tipus \"%T\""
+
+#: cp/typeck.c:5069 cp/typeck.c:5074
+msgid "ISO C++ forbids casting to an array type `%T'"
+msgstr "ISO C++ prohibeix la conversió a un tipus de matriu \"%T\""
+
+#: cp/typeck.c:5082
+msgid "invalid cast to function type `%T'"
+msgstr "conversió invàlida al tipus de funció \"%T\""
+
+#: cp/typeck.c:5138
+msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
+msgstr "la conversió de \"%T\" a \"%T\" descarta els qualificadors del tipus de la destinació del punter"
+
+#: cp/typeck.c:5184
+msgid "cast from `%T' to `%T' increases required alignment of target type"
+msgstr "la conversió de \"%T\" a \"%T\" incrementa l'alineació requerida del tipus de la destinació"
+
+#: cp/typeck.c:5357
+msgid " in evaluation of `%Q(%#T, %#T)'"
+msgstr " en l'avaluació de \"%Q(%#T, %#T)\""
+
+#: cp/typeck.c:5399
+msgid "ISO C++ forbids cast to non-reference type used as lvalue"
+msgstr "ISO C++ prohibeix la conversió a un tipus no referent usat com lvalue"
+
+#: cp/typeck.c:5463
+msgid "incompatible types in assignment of `%T' to `%T'"
+msgstr "tipus incompatible en l'assignació de \"%T\" a \"%T\""
+
+#: cp/typeck.c:5470
+msgid "ISO C++ forbids assignment of arrays"
+msgstr "ISO C++ prohibeix l'assignació de matrius"
+
+#: cp/typeck.c:5577
+msgid " in pointer to member function conversion"
+msgstr " en la conversió del punter a funció membre"
+
+#: cp/typeck.c:5585
+msgid " in pointer to member conversion"
+msgstr " en la conversió del punter a membre"
+
+#. This is a reinterpret cast, we choose to do nothing.
+#: cp/typeck.c:5596 cp/typeck.c:5615
+msgid "pointer to member cast via virtual base `%T' of `%T'"
+msgstr "punter a la conversió membre a través de la base virtual \"%T\" de \"%T\""
+
+#: cp/typeck.c:5619
+msgid "pointer to member conversion via virtual base `%T' of `%T'"
+msgstr "punter a la conversió membre a través de la base virtual \"%T\" de \"%T\""
+
+#: cp/typeck.c:5695
+msgid "invalid conversion to type `%T' from type `%T'"
+msgstr "conversió invàlida del tipus \"%T\" a partir del tipus \"%T\""
+
+#: cp/typeck.c:5860
+msgid "passing NULL used for non-pointer %s %P of `%D'"
+msgstr "passant NULL usat per al no punter %s %P de \"%D\""
+
+#: cp/typeck.c:5863
+msgid "%s to non-pointer type `%T' from NULL"
+msgstr "%s al tipus \"%T\" que no és punter des de NULL"
+
+#: cp/typeck.c:5871
+msgid "passing `%T' for %s %P of `%D'"
+msgstr "passant \"%T\" per a %s %P de \"%D\""
+
+#: cp/typeck.c:5874
+msgid "%s to `%T' from `%T'"
+msgstr "%s a \"%T\" des de \"%T\""
+
+#: cp/typeck.c:5884
+msgid "passing negative value `%E' for %s %P of `%D'"
+msgstr "passant el valor negatiu `%E' per a %s %P de \"%D\""
+
+#: cp/typeck.c:5887
+msgid "%s of negative value `%E' to `%T'"
+msgstr "%s de valor negatiu `%I' a \"%T\""
+
+#: cp/typeck.c:5982
+msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
+msgstr "no es pot convertir \"%T\" a \"%T\" per a l'argument `%P' per a \"%D\""
+
+#: cp/typeck.c:5985
+msgid "cannot convert `%T' to `%T' in %s"
+msgstr "no es pot convertir \"%T\" a \"%T\" en %s"
+
+#: cp/typeck.c:6073 cp/typeck.c:6075
+msgid "in passing argument %P of `%+D'"
+msgstr "en el pas de l'argument %P de \"%+D\""
+
+#: cp/typeck.c:6190
+msgid "returning reference to temporary"
+msgstr "retornant la referència al temporal"
+
+#: cp/typeck.c:6197
+msgid "reference to non-lvalue returned"
+msgstr "es va retornar una referència a un non-lvalue"
+
+#: cp/typeck.c:6209
+msgid "reference to local variable `%D' returned"
+msgstr "es va retornar una referència a la variable local \"%D\""
+
+#: cp/typeck.c:6212
+msgid "address of local variable `%D' returned"
+msgstr "es va retornar l'adreça de la variable local \"%D\""
+
+#: cp/typeck.c:6243
+msgid "returning a value from a destructor"
+msgstr "retornant un valor d'un destructor"
+
+#. If a return statement appears in a handler of the
+#. function-try-block of a constructor, the program is ill-formed.
+#: cp/typeck.c:6251
+msgid "cannot return from a handler of a function-try-block of a constructor"
+msgstr "no es pot retornar d'un gestor d'una function-try-block d'un constructor"
+
+#. You can't return a value from a constructor.
+#: cp/typeck.c:6254
+msgid "returning a value from a constructor"
+msgstr "retornant un valor d'un constructor"
+
+#: cp/typeck.c:6271
+msgid "return-statement with no value, in function declared with a non-void return type"
+msgstr "return-statement sense valor, en una funció declarada amb un tipus de retorn non-void"
+
+#: cp/typeck.c:6287
+msgid "return-statement with a value, in function declared with a void return type"
+msgstr "return-statement amb un valor, en una funció declarada amb un tipus de retorn void"
+
+#: cp/typeck.c:6308
+msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
+msgstr "\"operator new\" no deu regressar NULL a menys que es declari \"throw()\" (o -fcheck-new estigui en efecte)"
+
+#: cp/typeck2.c:54
+msgid "type `%T' is not a base type for type `%T'"
+msgstr "el tipus \"%T\" no és un tipus base per al tipus \"%T\""
+
+#: cp/typeck2.c:157
+msgid "cannot declare variable `%D' to be of type `%T'"
+msgstr "no es pot declarar que la variable \"%D\" sigui de tipus \"%T\""
+
+#: cp/typeck2.c:160
+msgid "cannot declare parameter `%D' to be of type `%T'"
+msgstr "no es pot declarar que el paràmetre \"%D\" sigui de tipus \"%T\""
+
+#: cp/typeck2.c:163
+msgid "cannot declare field `%D' to be of type `%T'"
+msgstr "no es pot declarar que el camp \"%D\" sigui de tipus \"%T\""
+
+#: cp/typeck2.c:167
+msgid "invalid return type for member function `%#D'"
+msgstr "tipus de retorn invàlid per a la funció membre \"%#D\""
+
+#: cp/typeck2.c:169
+msgid "invalid return type for function `%#D'"
+msgstr "tipus de retorn invàlid per a la funció \"%#D\""
+
+#: cp/typeck2.c:172
+msgid "cannot allocate an object of type `%T'"
+msgstr "no es pot assignar un objecte de tipus \"%T\""
+
+#: cp/typeck2.c:179
+msgid " because the following virtual functions are abstract:"
+msgstr " perquè les següents funcions virtual són abstractes:"
+
+#: cp/typeck2.c:181
+msgid "\t%#D"
+msgstr "\t%#D"
+
+#: cp/typeck2.c:184
+msgid " since type `%T' has abstract virtual functions"
+msgstr " ja que el tipus \"%T\" té funcions virtuals abstractes"
+
+#: cp/typeck2.c:338
+msgid "constructor syntax used, but no constructor declared for type `%T'"
+msgstr "es va usar la sintaxi de constructor, però no es va declarar un constructor per al tipus \"%T\""
+
+#: cp/typeck2.c:349
+msgid "comma expression used to initialize return value"
+msgstr "es va usar una expressió coma per a inicialitzar el valor de retorn"
+
+#: cp/typeck2.c:358
+msgid "cannot initialize arrays using this syntax"
+msgstr "no es poden inicialitzar matrius usant aquesta sintaxi"
+
+#: cp/typeck2.c:473
+msgid "initializing array with parameter list"
+msgstr "inicialitzant una matriu amb una llista de paràmetres"
+
+#: cp/typeck2.c:529
+msgid "initializer for scalar variable requires one element"
+msgstr "el inicialitzador per a una variable escalar requereix un element"
+
+#: cp/typeck2.c:536
+msgid "braces around scalar initializer for `%T'"
+msgstr "parèntesis al voltant del inicialitzador per a \"%T\""
+
+#: cp/typeck2.c:539
+msgid "ignoring extra initializers for `%T'"
+msgstr "ignorant els inicialitzadors extra per a \"%T\""
+
+#: cp/typeck2.c:551
+msgid "variable-sized object of type `%T' may not be initialized"
+msgstr "un objecte de grandària variable de tipus \"%T\" no pot ser inicialitzat"
+
+#: cp/typeck2.c:561
+msgid "subobject of type `%T' must be initialized by constructor, not by `%E'"
+msgstr "el subobjecte de tipus \"%T\" deu ser inicialitzat per un constructor, no per \"%E\""
+
+#: cp/typeck2.c:627
+msgid "aggregate has a partly bracketed initializer"
+msgstr "l'agregat té un inicialitzador amb parèntesis parcials"
+
+#: cp/typeck2.c:665 cp/typeck2.c:770
+msgid "non-trivial labeled initializers"
+msgstr "inicialitzadors etiquetats com no trivials"
+
+#: cp/typeck2.c:682
+msgid "non-empty initializer for array of empty elements"
+msgstr "inicialitzador no-buit per a una matriu d'elements buits"
+
+#: cp/typeck2.c:736
+msgid "initializer list for object of class with virtual base classes"
+msgstr "llista d'inicialitzadors per a un objecte d'una classe amb classes base virtual"
+
+#: cp/typeck2.c:742
+msgid "initializer list for object of class with base classes"
+msgstr "llista d'inicialitzadors per a un objecte d'una classe amb classes base"
+
+#: cp/typeck2.c:748
+msgid "initializer list for object using virtual functions"
+msgstr "llista d'inicialitzadors per a un objecte que usa funcions virtuals"
+
+#: cp/typeck2.c:811 cp/typeck2.c:827
+msgid "missing initializer for member `%D'"
+msgstr "falta el inicialitzador pel membre \"%D\""
+
+#: cp/typeck2.c:816
+msgid "uninitialized const member `%D'"
+msgstr "membre const \"%D\" sense inicialitzar"
+
+#: cp/typeck2.c:818
+msgid "member `%D' with uninitialized const fields"
+msgstr "membre \"%D\" amb camps const sense inicialitzar"
+
+#: cp/typeck2.c:821
+msgid "member `%D' is uninitialized reference"
+msgstr "el membre \"%D\" és una referència sense inicialitzar"
+
+#: cp/typeck2.c:868
+msgid "index value instead of field name in union initializer"
+msgstr "valor d'índex en lloc del nom del camp en el inicialitzador de union"
+
+#: cp/typeck2.c:880
+msgid "no field `%D' in union being initialized"
+msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant"
+
+#: cp/typeck2.c:888
+msgid "union `%T' with no named members cannot be initialized"
+msgstr "no es pot inicialitzar el union \"%T\" sense membres nomenats"
+
+#: cp/typeck2.c:924
+msgid "excess elements in aggregate initializer"
+msgstr "excés d'elements en el inicialitzador agregat"
+
+#: cp/typeck2.c:1038
+msgid "circular pointer delegation detected"
+msgstr "es va detectar una delegació de punter circular"
+
+#: cp/typeck2.c:1051
+msgid "base operand of `->' has non-pointer type `%T'"
+msgstr "l'operant base de \"->\" té el tipus \"%T\" que no és punter"
+
+#: cp/typeck2.c:1065
+msgid "result of `operator->()' yields non-pointer result"
+msgstr "el resultat de \"operator->()\" produeix un resultat que no és punter"
+
+#: cp/typeck2.c:1067
+msgid "base operand of `->' is not a pointer"
+msgstr "l'operant base de \"->\" no és un punter"
+
+#: cp/typeck2.c:1133
+msgid "`%E' cannot be used as a member pointer, since it is of type `%T'"
+msgstr "no es pot usar \"%E\" com un punter membre, perquè és de tipus \"%T\""
+
+#: cp/typeck2.c:1140
+msgid "cannot apply member pointer `%E' to `%E', which is of non-aggregate type `%T'"
+msgstr "no es pot aplicar el punter a membre \"%E\" a \"%E\", el qual és del tipus no agregat \"%T\""
+
+#: cp/typeck2.c:1149
+msgid "member type `%T::' incompatible with object type `%T'"
+msgstr "el tipus de membre \"%T::\" és incompatible amb el tipus objecte \"%T\""
+
+#: cp/typeck2.c:1186
+msgid "`%T' fails to be a typedef or built-in type"
+msgstr "\"%T\" falla al ser un typedef o un tipus built-in"
+
+#: cp/typeck2.c:1259
+#, c-format
+msgid "ISO C++ forbids defining types within %s"
+msgstr "ISO C++ prohibeix la definició de tipus dintre de %s"
+
+#: cp/typeck2.c:1384
+msgid "call to function `%D' which throws incomplete type `%#T'"
+msgstr "cridada a la funció \"%D\" la qual llança el tipus incomplet \"%#T\""
+
+#: cp/typeck2.c:1387
+msgid "call to function which throws incomplete type `%#T'"
+msgstr "cridada a una funció la qual llança el tipus incomplet \"%#T\""
+
+#. XXX Not i18n clean.
+#: cp/cp-tree.h:3936
+#, c-format
+msgid "%s is deprecated, please see the documentation for details"
+msgstr "%s és obsolet, per favor vegi la documentació per a més detalls"
+
+#: cp/lang-options.h:29
+msgid "Do not obey access control semantics"
+msgstr "No obeir les semàntiques de control d'accés"
+
+#: cp/lang-options.h:31
+msgid "Change when template instances are emitted"
+msgstr "Canviar quan s'emetin les instàncies del patró"
+
+#: cp/lang-options.h:36
+msgid "Check the return value of new"
+msgstr "Revisar el valor de retorn de new"
+
+#: cp/lang-options.h:39
+msgid "Reduce size of object files"
+msgstr "Reduir la grandària dels fitxers objecte"
+
+#: cp/lang-options.h:43
+msgid "Make string literals `char[]' instead of `const char[]'"
+msgstr "Fer que les cadenes literals siguin \"char[]\" en lloc de \"const char[]\""
+
+#: cp/lang-options.h:46
+msgid "Dump the entire translation unit to a file"
+msgstr "Buidar la unitat de traducció completa a un fitxer"
+
+#: cp/lang-options.h:48
+msgid "Do not inline member functions by default"
+msgstr "No fer inline per omissió a les funcions membre"
+
+#: cp/lang-options.h:51
+msgid "Do not generate run time type descriptor information"
+msgstr "No generar informació del tipus de descriptor en temps d'execució"
+
+#: cp/lang-options.h:56
+msgid "Do not generate code to check exception specifications"
+msgstr "No generar codi per a revisar excepcions d'especificacions"
+
+#: cp/lang-options.h:61
+msgid "Scope of for-init-statement vars extends outside"
+msgstr "L'àmbit de les variables de la declaració d'inici de for s'estén cap a fora"
+
+#: cp/lang-options.h:64
+msgid "Do not recognize GNU defined keywords"
+msgstr "No reconèixer les paraules claus definides per GNU"
+
+#: cp/lang-options.h:68
+msgid "Enable support for huge objects"
+msgstr "Activar el suport per a objectes enormes"
+
+#: cp/lang-options.h:72
+msgid "Export functions even if they can be inlined"
+msgstr "Exportar funcions encara si poden ser inline"
+
+#: cp/lang-options.h:75
+msgid "Only emit explicit template instantiations"
+msgstr "Emetre solament instanciacions explícites de patrons"
+
+#: cp/lang-options.h:78
+msgid "Only emit explicit instantiations of inline templates"
+msgstr "Emetre solament instanciacions explícites de patrons inline"
+
+#: cp/lang-options.h:84
+msgid "Don't pedwarn about uses of Microsoft extensions"
+msgstr "No avisar pedantment sobre els usos d'extensions Microsoft"
+
+#: cp/lang-options.h:87
+msgid "Recognize and/bitand/bitor/compl/not/or/xor"
+msgstr "Reconèixer and/bitand/bitor/compl/not/or/xor"
+
+#: cp/lang-options.h:91
+msgid "Disable optional diagnostics"
+msgstr "Desactivar els diagnòstics opcionals"
+
+#: cp/lang-options.h:93
+msgid "Downgrade conformance errors to warnings"
+msgstr "Degradar els errors de concordança a advertiments"
+
+#: cp/lang-options.h:96
+msgid "Enable automatic template instantiation"
+msgstr "Activar l'instanciació automàtica de patrons"
+
+#: cp/lang-options.h:101
+msgid "Display statistics accumulated during compilation"
+msgstr "Mostrar les estadístiques acumulades durant la compilació"
+
+#: cp/lang-options.h:104
+msgid "Specify maximum template instantiation depth"
+msgstr "Especificar la profunditat màxima d'instanciació de patrons"
+
+#: cp/lang-options.h:106
+msgid "Use __cxa_atexit to register destructors"
+msgstr "Usar __cxa_atexit per a registrar destructors"
+
+#: cp/lang-options.h:109
+msgid "Discard unused virtual functions"
+msgstr "Descartar funcions virtual sense usar"
+
+#: cp/lang-options.h:112
+msgid "Implement vtables using thunks"
+msgstr "Implementar vtables usant thunks"
+
+#: cp/lang-options.h:115
+msgid "Emit common-like symbols as weak symbols"
+msgstr "Emetre símbols comuns com símbols febles"
+
+#: cp/lang-options.h:118
+msgid "Emit cross referencing information"
+msgstr "Emetre informació de referència creuada"
+
+#: cp/lang-options.h:122
+msgid "Warn about inconsistent return types"
+msgstr "Avisar sobre tipus inconsistents de retorn"
+
+#: cp/lang-options.h:125
+msgid "Warn about overloaded virtual function names"
+msgstr "Avisar sobre noms de funcions virtual sobrecarregades"
+
+#: cp/lang-options.h:129
+msgid "Don't warn when all ctors/dtors are private"
+msgstr "No avisar quan tots els ctors/dtors són privats"
+
+#: cp/lang-options.h:131
+msgid "Warn about non virtual destructors"
+msgstr "Avisar sobre destructors no virtuals"
+
+#: cp/lang-options.h:134
+msgid "Warn when a function is declared extern, then inline"
+msgstr "Avisar quan una funció és declarada extern i després inline"
+
+#: cp/lang-options.h:137
+msgid "Warn when the compiler reorders code"
+msgstr "Avisar quan el compilador reordeni codi"
+
+#: cp/lang-options.h:140
+msgid "Warn when synthesis behavior differs from Cfront"
+msgstr "Avisar quan el comportament de síntesi difereixi de Cfront"
+
+#: cp/lang-options.h:144
+msgid "Don't warn when type converting pointers to member functions"
+msgstr "avisar quan el tipus converteix punters a funcions membre"
+
+#: cp/lang-options.h:146
+msgid "Warn about violations of Effective C++ style rules"
+msgstr "Avisar violacions de regles d'estil de Effective C++"
+
+#: cp/lang-options.h:149
+msgid "Warn when overload promotes from unsigned to signed"
+msgstr "Avisar quan la sobrecàrrega promogui de unsigned a signed"
+
+#: cp/lang-options.h:152
+msgid "Warn if a C style cast is used in a program"
+msgstr "Avisar quan s'usi una conversió d'estil C en un programa"
+
+#: cp/lang-options.h:156
+msgid "Don't warn when non-templatized friend functions are declared within a template"
+msgstr "No avisar quan les funcions friend sense patró són declarades dintre d'un patró"
+
+#: cp/lang-options.h:159
+msgid "Don't announce deprecation of compiler features"
+msgstr "No anunciar característiques obsoletes del compilador"
+
+#: f/bad.c:387
+msgid "note:"
+msgstr "nota:"
+
+#: f/bad.c:391
+msgid "warning:"
+msgstr "avís:"
+
+#: f/bad.c:395
+msgid "fatal:"
+msgstr "fatal:"
+
+#: f/bad.c:437
+msgid "(continued):"
+msgstr "(continuat):"
+
+#: f/bad.c:487 f/bad.c:505
+msgid "[REPORT BUG!!] %"
+msgstr "[REPORTAR error!!] %"
+
+#: f/bad.c:494 f/bad.c:526
+msgid "[REPORT BUG!!]"
+msgstr "[REPORTAR error!!]"
+
+#: f/com.c:3132
+#, no-c-format
+msgid "ASSIGN'ed label cannot fit into `%A' at %0 -- using wider sibling"
+msgstr "l'etiqueta ASSIGNada no entra en \"%A\" a %0 -- utilitzant una similar més ample"
+
+#: f/com.c:11623
+msgid "no INTEGER type can hold a pointer on this configuration"
+msgstr "cap tipus INTEGER pot guardar un punter en aquesta configuració"
+
+#: f/com.c:11844
+#, c-format
+msgid "configuration: REAL, INTEGER, and LOGICAL are %d bits wide,"
+msgstr "configuració: REAL, INTEGER, i LOGICAL són de %d bits d'amplària,"
+
+#: f/com.c:11846
+#, c-format
+msgid "and pointers are %d bits wide, but g77 doesn't yet work"
+msgstr "i els punters són de %d bits d'amplària, però g77 encara no treballa"
+
+#: f/com.c:11848
+msgid "properly unless they all are 32 bits wide"
+msgstr "de forma adequada a menys que tots siguin de 32 bits d'amplària"
+
+#: f/com.c:11849
+msgid "Please keep this in mind before you report bugs."
+msgstr "Per favor tingui això presenti abans de reportar errors."
+
+#. I/O will probably crash.
+#: f/com.c:11857
+#, c-format
+msgid "configuration: char * holds %d bits, but ftnlen only %d"
+msgstr "configuració: char * guarda %d bits, però ftnlen només %d"
+
+#. ASSIGN 10 TO I will crash.
+#: f/com.c:11866
+#, c-format
+msgid ""
+"configuration: char * holds %d bits, but INTEGER only %d --\n"
+" ASSIGN statement might fail"
+msgstr ""
+"configuració: char * guarda %d bits, però INTEGER només %d --\n"
+" la declaració ASSIGN pot fallar"
+
+#: f/com.c:13681
+msgid "In statement function"
+msgstr "En la declaració de la funció"
+
+#: f/com.c:13691
+msgid "Outside of any program unit:\n"
+msgstr "Fora de qualsevol unitat de programa:\n"
+
+#: f/com.c:15320
+#, no-c-format
+msgid "%A from %B at %0%C"
+msgstr "%A des de %B en %0%C"
+
+#: f/com.c:15497
+msgid "directory name must immediately follow -I"
+msgstr "el nom del directori deu seguir immediatament a -I"
+
+#: f/com.c:15640
+#, no-c-format
+msgid "At %0, INCLUDE file %A exists, but is not readable"
+msgstr "En %0, el fitxer INCLUDE %A existeix, però no és llegible"
+
+#: f/com.c:15675
+#, no-c-format
+msgid "At %0, INCLUDE nesting too deep"
+msgstr "En %0, la \"niació\" de INCLUDE és massa profunda"
+
+#: f/expr.c:9614
+#, no-c-format
+msgid "Two arithmetic operators in a row at %0 and %1 -- use parentheses"
+msgstr "Dos operadors aritmètics en una fila en %0 i %1 -- usi parèntesi"
+
+#: f/expr.c:9664
+#, no-c-format
+msgid "Operator at %0 has lower precedence than that at %1 -- use parentheses"
+msgstr "L'operador en %0 té una preferència menor que aquell en %1 -- usi parèntesi"
+
+#: f/expr.c:10525
+#, no-c-format
+msgid "Use .EQV./.NEQV. instead of .EQ./.NE. at %0 for LOGICAL operands at %1 and %2"
+msgstr "Usi .EQV./.NEQV. en lloc de .EQ./.NE en %0 pels operands LOGICAL en %1 i %2"
+
+#: f/expr.c:10896
+#, no-c-format
+msgid "Unsupported operand for ** at %1 -- converting to default INTEGER"
+msgstr "Operant sense suport per a ** en %1 -- es va convertir a INTEGER per omissió"
+
+#: f/g77spec.c:234
+#, c-format
+msgid "overflowed output arg list for `%s'"
+msgstr "llista d'arguments de sortida desbordada per a \"%s\""
+
+#: f/g77spec.c:373
+msgid "--driver no longer supported"
+msgstr "--driver ja no té suport"
+
+#: f/g77spec.c:386
+#, c-format
+msgid "argument to `%s' missing"
+msgstr "falta l'argument per a \"%s\""
+
+#: f/g77spec.c:390
+msgid "no input files; unwilling to write output files"
+msgstr "no hi ha fitxers d'entrada; incapaç d'escriure fitxers de sortida"
+
+#: f/implic.c:203
+#, no-c-format
+msgid "Implicit declaration of `%A' at %0"
+msgstr "Declaració implícita de \"%A\" en %0"
+
+#: f/lex.c:326
+#, no-c-format
+msgid "Non-ISO-C-standard escape sequence `\\%A' at %0"
+msgstr "Seqüència d'escapi que no és estàndard ISO \"\\%A\" en %0"
+
+#: f/lex.c:345
+#, no-c-format
+msgid "Unknown escape sequence `\\%A' at %0"
+msgstr "Seqüència d'escapi desconeguda \"\\%A\" en %0"
+
+#: f/lex.c:354
+#, no-c-format
+msgid "Unterminated escape sequence `\\' at %0"
+msgstr "Seqüència d'escapi sense acabar \"\\\" en %0"
+
+#: f/lex.c:365
+#, no-c-format
+msgid "Unknown escape sequence `\\' followed by char code 0x%A at %0"
+msgstr "Seqüència d'escapi desconeguda: \"\\\" seguida pel codi de caràcter 0x%A en %0"
+
+#: f/lex.c:393
+#, no-c-format
+msgid "\\x used at %0 with no following hex digits"
+msgstr "es va usar \\x en %0 sense dígits hexadecimals a continuació"
+
+#: f/lex.c:407
+#, no-c-format
+msgid "Hex escape at %0 out of range"
+msgstr "escapi Hex en %0 fora de rang"
+
+#: f/lex.c:441
+#, no-c-format
+msgid "Escape sequence at %0 out of range for character"
+msgstr "Seqüència d'escapi en %0 fora de rang per al caràcter"
+
+#: f/lex.c:595
+msgid "hex escape out of range"
+msgstr "escapi hex fora de rang"
+
+#: f/lex.c:648
+#, c-format
+msgid "non-ANSI-standard escape sequence, `\\%c'"
+msgstr "seqüència d'escapi que no és estàndard ANSI, \"\\%c\""
+
+#: f/lex.c:661
+#, c-format
+msgid "non-ISO escape sequence `\\%c'"
+msgstr "seqüència d'escapi que no és ISO, \"\\%c\""
+
+#: f/lex.c:665
+#, c-format
+msgid "unknown escape sequence `\\%c'"
+msgstr "seqüència d'escapi desconeguda, \"\\%c\""
+
+#: f/lex.c:667
+#, c-format
+msgid "unknown escape sequence: `\\' followed by char code 0x%x"
+msgstr "seqüència d'escapi desconeguda, \"\\\" seguida pel codi de caràcter 0x%x"
+
+#: f/lex.c:744
+msgid "badly formed directive -- no closing quote"
+msgstr "directiva mal formada -- cometa sense tancar"
+
+#: f/lex.c:802
+msgid "#-lines for entering and leaving files don't match"
+msgstr "el nombre de #-lines per a entrar i sortir dels fitxers no coincideixen"
+
+#: f/lex.c:964
+msgid "bad directive -- missing close-quote"
+msgstr "directiva errònia -- falta una cometa que tanqui"
+
+#: f/lex.c:1078
+#, c-format
+msgid "ignoring pragma: %s"
+msgstr "ignorant el pragma: %s"
+
+#: f/lex.c:1156
+msgid "invalid #ident"
+msgstr "#ident invàlid"
+
+#: f/lex.c:1173
+msgid "undefined or invalid # directive"
+msgstr "directiva # no definida o invàlida"
+
+#: f/lex.c:1229
+msgid "invalid #line"
+msgstr "#line invàlid"
+
+#: f/lex.c:1285 f/lex.c:1329
+msgid "use `#line ...' instead of `# ...' in first line"
+msgstr "usi \"#line ...\" en lloc de \"# ...\" en la primera línia"
+
+#: f/lex.c:1339
+msgid "invalid #-line"
+msgstr "#-line invàlid"
+
+#: f/lex.c:1432
+#, no-c-format
+msgid "Null character at %0 -- line ignored"
+msgstr "Caràcter nul en %0 -- línia ignorada"
+
+#: f/stb.c:12078
+#, no-c-format
+msgid "INCLUDE at %0 not the only statement on the source line"
+msgstr "INCLUDE en %0 no és la primera declaració en la línia de codi"
+
+#: f/ste.c:1400 f/ste.c:1747
+msgid "ASSIGNed FORMAT specifier is too small"
+msgstr "el especificador ASSIGNed FORMAT és massa petit"
+
+#. ~~~Someday handle CHARACTER*1, CHARACTER*N
+#: f/ste.c:2624
+#, no-c-format
+msgid "SELECT CASE on CHARACTER type (at %0) not supported -- sorry"
+msgstr "SELECT CASE en el tipus CHARACTER (en %0) no té suport -- perdó"
+
+#: f/ste.c:2729
+msgid "SELECT (at %0) has duplicate cases -- check integer overflow of CASE(s)"
+msgstr ""
+
+#: f/ste.c:2959
+msgid "ASSIGN to variable that is too small"
+msgstr "ASSIGN a una variable que és massa petita"
+
+#: f/ste.c:2987
+msgid "ASSIGNed GOTO target variable is too small"
+msgstr "la variable de l'objectiu ASSIGNed GOTO és massa petita"
+
+#: f/stu.c:305
+#, no-c-format
+msgid "Local adjustable symbol `%A' at %0"
+msgstr "Símbol local ajustable \"%A\" en %0"
+
+#: f/target.c:2550
+msgid "data initializer on host with different endianness"
+msgstr "inicialitzador de dades en l'ordinador amb \"endianness\" diferent"
+
+#: f/top.c:237
+#, c-format
+msgid "%s no longer supported -- try -fvxt"
+msgstr "%s ja no té suport -- intenti -fvxt"
+
+#: f/top.c:239
+#, c-format
+msgid "%s no longer supported -- try -fno-vxt -ff90"
+msgstr "%s ja no té suport -- intenti -fno-vxt -ff90"
+
+#: f/top.c:307 f/top.c:309
+#, c-format
+msgid "%s disabled, use normal debugging flags"
+msgstr "%s desactivat, usi els interruptors normals de depuració"
+
+#: f/lang-options.h:33
+msgid "Print g77-specific compiler version info, run internal tests"
+msgstr "Imprimeix informació de la versió específica del compilador g77, executa proves internes"
+
+#: f/lang-options.h:37
+msgid "Program is written in typical FORTRAN 66 dialect"
+msgstr "El programa està escrit en el dialecte típic FORTRAN 66"
+
+#: f/lang-options.h:40
+msgid "Program is written in typical Unix f77 dialect"
+msgstr "El programa està escrit en el dialecte típic Unix f77"
+
+#: f/lang-options.h:42
+msgid "Program does not use Unix-f77 dialectal features"
+msgstr "El programa no utilitza les característiques del dialecte Unix-f77"
+
+#: f/lang-options.h:44
+msgid "Program is written in Fortran-90-ish dialect"
+msgstr "El programa en un dialecte proper a Fortran-90"
+
+#: f/lang-options.h:48
+msgid "Treat local vars and COMMON blocks as if they were named in SAVE statements"
+msgstr "Tractar les variables locals i els blocs COMMON com si fossin nomenats en declaracions SAVE"
+
+#: f/lang-options.h:50
+msgid "Allow $ in symbol names"
+msgstr "Permetre $ en els noms de símbols"
+
+#: f/lang-options.h:54
+msgid "f2c-compatible code need not be generated"
+msgstr "No es necessita generar codi compatible amb f2c"
+
+#: f/lang-options.h:57
+msgid "Unsupported; do not generate libf2c-calling code"
+msgstr "Sense suport; no genera codi de cridada a libf2c"
+
+#: f/lang-options.h:59
+msgid "Unsupported; affects code-generation of arrays"
+msgstr "Sense suport; afecta la generació de codi de les matrius"
+
+#: f/lang-options.h:62
+msgid "Program is written in Fortran-90-ish free form"
+msgstr "El programa està escrit en una forma lliure propera a Fortran-90"
+
+#: f/lang-options.h:67
+msgid "Warn about use of (only a few for now) Fortran extensions"
+msgstr "Avisar sobre l'ús d' (només algunes per ara) extensions Fortran"
+
+#: f/lang-options.h:70
+msgid "Program is written in VXT (Digital-like) FORTRAN"
+msgstr "El programa està escrit en VXT (com Digital) FORTRAN"
+
+#: f/lang-options.h:73
+msgid "Disallow all ugly features"
+msgstr "Desactiva totes les característiques lletjes"
+
+#: f/lang-options.h:76
+msgid "Hollerith and typeless constants not passed as arguments"
+msgstr "No es passen les constants Hollerith i sense tipus com arguments"
+
+#: f/lang-options.h:78
+msgid "Allow ordinary copying of ASSIGN'ed vars"
+msgstr "Permet la còpia ordinària de variables ASSIGN'ed"
+
+#: f/lang-options.h:81
+msgid "Dummy array dimensioned to (1) is assumed-size"
+msgstr "La matriu faltament dimensionada a (1) és de grandària assumida"
+
+#: f/lang-options.h:84
+msgid "Trailing comma in procedure call denotes null argument"
+msgstr "Coma al final de la cridada al procediment denota un argument null"
+
+#: f/lang-options.h:87
+msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
+msgstr "Permet que REAL(Z) i AIMAG(Z) rebin DOUBLE COMPLEX Z"
+
+#: f/lang-options.h:91
+msgid "Initialization via DATA and PARAMETER is type-compatible"
+msgstr "L'inicialització a través de DATA i PARAMETER és de tipus compatible"
+
+#: f/lang-options.h:93
+msgid "Allow INTEGER and LOGICAL interchangeability"
+msgstr "Permet l'intercanvi entre INTEGER i LOGICAL"
+
+#: f/lang-options.h:96
+msgid "Print internal debugging-related info"
+msgstr "Mostra la informació interna relacionada amb la depuració"
+
+#: f/lang-options.h:99
+msgid "Initialize local vars and arrays to zero"
+msgstr "Inicialitza les variables locals i matrius a zero"
+
+#: f/lang-options.h:103
+msgid "Backslashes in character/hollerith constants not special (C-style)"
+msgstr "Les barres invertides en constants de caràcter/hollerith no són especials (estil C)"
+
+#: f/lang-options.h:105
+msgid "Have front end emulate COMPLEX arithmetic to avoid bugs"
+msgstr "Fa que el front emuli aritmètica COMPLEX per a evitar errors"
+
+#: f/lang-options.h:109
+msgid "Disable the appending of underscores to externals"
+msgstr "Desactiva l'agregació de subratllats als externs"
+
+#: f/lang-options.h:112
+msgid "Never append a second underscore to externals"
+msgstr "Mai agregar un segon subratllat als externs"
+
+#: f/lang-options.h:114
+msgid "Intrinsics spelled as e.g. SqRt"
+msgstr "Intrínsecs lletrejats com p.e. SqRt"
+
+#: f/lang-options.h:116
+msgid "Intrinsics in uppercase"
+msgstr "Intrínsecs en majúscules"
+
+#: f/lang-options.h:119
+msgid "Intrinsics letters in arbitrary cases"
+msgstr "Lletres d'intrínsecs amb majúscules/minúscules indistintes"
+
+#: f/lang-options.h:121
+msgid "Language keywords spelled as e.g. IOStat"
+msgstr "Paraules claus del llenguatge lletrejades com p.e. IOStat"
+
+#: f/lang-options.h:123
+msgid "Language keywords in uppercase"
+msgstr "Paraules claus del llenguatge en majúscules"
+
+#: f/lang-options.h:126
+msgid "Language keyword letters in arbitrary cases"
+msgstr "Paraules claus del llenguatge amb majúscules/minúscules indistintes"
+
+#: f/lang-options.h:128
+msgid "Internally convert most source to uppercase"
+msgstr "Convertir internament gairebé tot el codi a majúscules"
+
+#: f/lang-options.h:131
+msgid "Internally preserve source case"
+msgstr "Preservar internament les majúscules i minúscules del codi font"
+
+#: f/lang-options.h:133
+msgid "Symbol names spelled in mixed case"
+msgstr "Noms de símbol lletrejats amb majúscules/minúscules barrejades"
+
+#: f/lang-options.h:135
+msgid "Symbol names in uppercase"
+msgstr "Noms de símbol en majúscules"
+
+#: f/lang-options.h:137
+msgid "Symbol names in lowercase"
+msgstr "Noms de símbol en minúscules"
+
+#: f/lang-options.h:140
+msgid "Program written in uppercase"
+msgstr "Programa escrit en majúscules"
+
+#: f/lang-options.h:142
+msgid "Program written in lowercase"
+msgstr "Programa escrit en minúscules"
+
+#: f/lang-options.h:144
+msgid "Program written in strict mixed-case"
+msgstr "Programa escrit estrictament amb majúscules i minúscules barrejades"
+
+#: f/lang-options.h:146
+msgid "Compile as if program written in uppercase"
+msgstr "Compilar com si el programa estigués escrit en majúscules"
+
+#: f/lang-options.h:148
+msgid "Compile as if program written in lowercase"
+msgstr "Compilar com si el programa estigués escrit en minúscules"
+
+#: f/lang-options.h:150
+msgid "Preserve all spelling (case) used in program"
+msgstr "Preservar tot el lletrejo (majúscules/minúscules) usat en el programa"
+
+#: f/lang-options.h:152
+msgid "Delete libU77 intrinsics with bad interfaces"
+msgstr "Esborrar els intrínsecs libU77 amb interfícies errònies"
+
+#: f/lang-options.h:154
+msgid "Disable libU77 intrinsics with bad interfaces"
+msgstr "Desactivar els intrínsecs libU77 amb interfícies errònies"
+
+#: f/lang-options.h:157
+msgid "Hide libU77 intrinsics with bad interfaces"
+msgstr "Amagar els intrínsecs libU77 amb interfícies errònies"
+
+#: f/lang-options.h:159
+msgid "Delete non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Esborrar els intrínsecs de FORTRAN que no és 77 que f2c suporta"
+
+#: f/lang-options.h:161
+msgid "Disable non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Desactivar els intrínsecs de FORTRAN que no és 77 que f2c suporta"
+
+#: f/lang-options.h:164
+msgid "Hide non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Amagar els intrínsecs de FORTRAN que no és 77 que f2c suporta"
+
+#: f/lang-options.h:166
+msgid "Delete non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Esborrar els intrínsecs de FORTRAN que no és 77 que F90 suporta"
+
+#: f/lang-options.h:168
+msgid "Disable non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Desactivar els intrínsecs de FORTRAN que no és 77 que F90 suporta"
+
+#: f/lang-options.h:171
+msgid "Hide non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Amagar els intrínsecs de FORTRAN que no és 77 que F90 suporta"
+
+#: f/lang-options.h:173
+msgid "Delete non-FORTRAN-77 intrinsics g77 supports"
+msgstr "Esborrar els intrínsecs de FORTRAN que no és 77 que g77 suporta"
+
+#: f/lang-options.h:175
+msgid "Disable non-FORTRAN 77 intrinsics F90 supports"
+msgstr "Desactivar els intrínsecs de FORTRAN que no és 77 que g77 suporta"
+
+#: f/lang-options.h:178
+msgid "Hide non-FORTRAN 77 intrinsics F90 supports"
+msgstr "Amagar els intrínsecs de FORTRAN que no és 77 que g77 suporta"
+
+#: f/lang-options.h:180
+msgid "Delete MIL-STD 1753 intrinsics"
+msgstr "Esborrar els intrínsecs MIL-STD 1753"
+
+#: f/lang-options.h:182
+msgid "Disable MIL-STD 1753 intrinsics"
+msgstr "Desactivar els intrínsecs MIL-STD 1753"
+
+#: f/lang-options.h:185
+msgid "Hide MIL-STD 1753 intrinsics"
+msgstr "Amagar els intrínsecs MIL-STD 1753"
+
+#: f/lang-options.h:187
+msgid "Delete libU77 intrinsics"
+msgstr "Esborrar els intrínsecs libU77"
+
+#: f/lang-options.h:189
+msgid "Disable libU77 intrinsics"
+msgstr "Desactivar els intrínsecs libU77"
+
+#: f/lang-options.h:192
+msgid "Hide libU77 intrinsics"
+msgstr "Amagar els intrínsecs libU77"
+
+#: f/lang-options.h:194
+msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Esborrar els intrínsecs de FORTRAN que no és 77 que VXT FORTRAN suporta"
+
+#: f/lang-options.h:196
+msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Desactivar els intrínsecs de FORTRAN que no és 77 que VXT FORTRAN suporta"
+
+#: f/lang-options.h:199
+msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Amagar els intrínsecs de FORTRAN que no és 77 que VXT FORTRAN suporta"
+
+#: f/lang-options.h:201
+msgid "Treat initial values of 0 like non-zero values"
+msgstr "Tractar els valors inicials de 0 com valors que no són zero"
+
+#: f/lang-options.h:204
+msgid "Emit special debugging information for COMMON and EQUIVALENCE (disabled)"
+msgstr "Emetre informació especial de depuració per a COMMON i EQUIVALENCE (desactivat)"
+
+#: f/lang-options.h:207
+msgid "Take at least one trip through each iterative DO loop"
+msgstr "Prendre almenys un viatge a través de cada cicle DO iteratiu"
+
+#: f/lang-options.h:211
+msgid "Print names of program units as they are compiled"
+msgstr "Mostrar els noms de les unitats de programa mentre són compilades"
+
+#: f/lang-options.h:214
+msgid "Disable fatal diagnostics about inter-procedural problems"
+msgstr "Desactivar els diagnòstics fatals sobre problemes interprocedurals"
+
+#: f/lang-options.h:216
+msgid "Make prefix-radix non-decimal constants be typeless"
+msgstr "Fer que no tinguin tipus les constants amb prefix-radical que no és decimal"
+
+#: f/lang-options.h:219
+msgid "Generate code to check subscript and substring bounds"
+msgstr "Generar codi per a revisar els límits de subíndicis i subcadenes"
+
+#: f/lang-options.h:222
+msgid "Fortran-specific form of -fbounds-check"
+msgstr "Forma específica de Fortran de -fbounds-check"
+
+#: f/lang-options.h:226
+msgid "Disable warnings about inter-procedural problems"
+msgstr "Desactivar els avisos sobre problemes interprocedurals"
+
+#: f/lang-options.h:230
+msgid "Warn about constructs with surprising meanings"
+msgstr "Avisar sobre constructors amb significats sorprenents"
+
+#: f/lang-options.h:235
+msgid "Add a directory for INCLUDE searching"
+msgstr "Agregar un directori per a la recerca de INCLUDE"
+
+#: f/lang-options.h:237
+msgid "Set the maximum line length"
+msgstr "Establir la longitud màxima de línia"
+
+#: f/bad.def:39
+#, no-c-format
+msgid "Missing first operand for binary operator at %0"
+msgstr "Falta el primer operant binari per a l'operador binari en %0"
+
+#: f/bad.def:42
+#, no-c-format
+msgid "Zero-length character constant at %0"
+msgstr "Constant de caràcter de longitud zero en %0"
+
+#: f/bad.def:45
+#, no-c-format
+msgid "Invalid token at %0 in expression or subexpression at %1"
+msgstr "Element invàlid en %0 en l'expressió o subexpressió en %1"
+
+#: f/bad.def:48
+#, no-c-format
+msgid "Missing operand for operator at %1 at end of expression at %0"
+msgstr "Falta un operant per a l'operador en %1 al final de l'expressió en %0"
+
+#: f/bad.def:51
+#, no-c-format
+msgid "Label %A already defined at %1 when redefined at %0"
+msgstr "L'etiqueta %A ja es va definir en %1 quan es va redefinir en %0"
+
+#: f/bad.def:54
+#, no-c-format
+msgid "Unrecognized character at %0 [info -f g77 M LEX]"
+msgstr "Caràcter no reconegut en %0 [info -f g77 M LEX]"
+
+#: f/bad.def:57
+#, no-c-format
+msgid "Label definition %A at %0 on empty statement (as of %1)"
+msgstr "La definició de l'etiqueta %A en %0 en una declaració buida (per a %1)"
+
+#: f/bad.def:65
+#, no-c-format
+msgid "Invalid first character at %0 [info -f g77 M LEX]"
+msgstr "Primer caràcter invàlid en %0 [info -f g77 M LEX]"
+
+#: f/bad.def:68
+#, no-c-format
+msgid "Line too long as of %0 [info -f g77 M LEX]"
+msgstr "Línia massa deixa anar per a %0 [info -f g77 M LEX]"
+
+#: f/bad.def:71
+#, no-c-format
+msgid "Non-numeric character at %0 in label field [info -f g77 M LEX]"
+msgstr "Caràcter no numèric en %0 en el camp d'etiqueta [info -f g77 M LEX]"
+
+#: f/bad.def:74
+#, no-c-format
+msgid "Label number at %0 not in range 1-99999"
+msgstr "El nombre d'etiqueta en %0 no està en el rang 1-99999"
+
+#: f/bad.def:77
+#, no-c-format
+msgid "At %0, '!' and '/*' are not valid comment delimiters"
+msgstr "En %0, \"!\" i \"/*\" no són delimitadors de comentari vàlids"
+
+#: f/bad.def:80
+#, no-c-format
+msgid "Continuation indicator at %0 must appear in column 6 [info -f g77 M LEX]"
+msgstr "L'indicador de continuació en %0 deu aparèixer en la columna 6 [info -f g77 M LEX]"
+
+#: f/bad.def:83
+#, no-c-format
+msgid "Label at %0 invalid with continuation line indicator at %1 [info -f g77 M LEX]"
+msgstr "Etiqueta en %0 invàlida amb indicador de continuació de línia en %1 [info -f g77 M LEX]"
+
+#: f/bad.def:91
+#, no-c-format
+msgid "Character constant at %0 has no closing apostrophe at %1"
+msgstr "La constant de caràcter en %0 no té l'apòstrofe que tanca en %1"
+
+#: f/bad.def:94
+#, no-c-format
+msgid "Hollerith constant at %0 specified %A more characters than are present as of %1"
+msgstr "La constant hollerith en %0 especifica %A més caràcters que els presents en %1"
+
+#: f/bad.def:97
+#, no-c-format
+msgid "Missing close parenthese at %0 needed to match open parenthese at %1"
+msgstr "Falta el parèntesi que tanca en %0 necessari per a coincidir amb els parèntesis oberts en %1"
+
+#: f/bad.def:100
+#, no-c-format
+msgid "Integer at %0 too large"
+msgstr "Enter en %0 massa gran"
+
+#: f/bad.def:123
+#, no-c-format
+msgid "Period at %0 not followed by digits for floating-point number or by `NOT.', `TRUE.', or `FALSE.'"
+msgstr "El punt en %0 no està seguit de dígits per a un nombre de coma flotant o per \"NOT.\", \"TRUE.\" o \"FALSE.\""
+
+#: f/bad.def:126
+#, no-c-format
+msgid "Missing close-period between `.%A' at %0 and %1"
+msgstr "Falta el punt que tanca entri \".%A\" en %0 i %1"
+
+#: f/bad.def:129
+#, no-c-format
+msgid "Invalid exponent at %0 for real constant at %1; nondigit `%A' in exponent field"
+msgstr "Exponent invàlid en %0 per a la constant real en %1; \"%A\" que no és dígit en el camp de l'exponent"
+
+#: f/bad.def:132
+#, no-c-format
+msgid "Missing value at %1 for real-number exponent at %0"
+msgstr "Falta un valor en %1 per a l'exponent de nombre real en %0"
+
+#: f/bad.def:135
+#, no-c-format
+msgid "Expected binary operator between expressions at %0 and at %1"
+msgstr "S'esperava un operador binari entre les expressions en %0 i en %1"
+
+#: f/bad.def:253
+#, no-c-format
+msgid "Semicolon at %0 is an invalid token"
+msgstr "El punt i coma en %0 és un element invàlid"
+
+#: f/bad.def:271
+#, no-c-format
+msgid "Extraneous comma in FORMAT statement at %0"
+msgstr "Coma sobrant en la declaració FORMAT en %0"
+
+#: f/bad.def:274
+#, no-c-format
+msgid "Missing comma in FORMAT statement at %0"
+msgstr "Coma faltant en la declaració FORMAT en %0"
+
+#: f/bad.def:277
+#, no-c-format
+msgid "Spurious sign in FORMAT statement at %0"
+msgstr "Signe espuri en la declaració FORMAT en %0"
+
+#: f/bad.def:280
+#, no-c-format
+msgid "Spurious number in FORMAT statement at %0"
+msgstr "Nombre espuri en la declaració FORMAT en %0"
+
+#: f/bad.def:283
+#, no-c-format
+msgid "Spurious text trailing number in FORMAT statement at %0"
+msgstr "Text espuri addicional al nombre en la declaració FORMAT en %0"
+
+#: f/bad.def:291
+#, no-c-format
+msgid "Unrecognized FORMAT specifier at %0"
+msgstr "Especificador FORMAT no reconegut en %0"
+
+#: f/bad.def:419
+#, no-c-format
+msgid "Missing close-parenthese(s) in FORMAT statement at %0"
+msgstr "Falta(en) parèntesi(s) que tanquen en la declaració FORMAT en %0"
+
+#: f/bad.def:422
+#, no-c-format
+msgid "Missing number following period in FORMAT statement at %0"
+msgstr "Falta un nombre a continuació del punt en la declaració FORMAT en %0"
+
+#: f/bad.def:425
+#, no-c-format
+msgid "Missing number following `E' in FORMAT statement at %0"
+msgstr "Falta un nombre a continuació de \"E\" en la declaració FORMAT en %0"
+
+#: f/bad.def:433
+#, no-c-format
+msgid "Spurious trailing comma preceding terminator at %0"
+msgstr "Coma final espúria precedint al terminador en %0"
+
+#: f/bad.def:436
+#, no-c-format
+msgid "At %0, specify OPERATOR instead of ASSIGNMENT for INTERFACE statement not specifying the assignment operator (=)"
+msgstr "En %0, especifiqui OPERATOR en lloc de ASSIGNMENT per a la declaració INTERFACE que no especifica l'operador d'assignació (=)"
+
+#: f/bad.def:439
+#, no-c-format
+msgid "At %0, specify ASSIGNMENT instead of OPERATOR for INTERFACE statement specifying the assignment operator (=)"
+msgstr "En %0, especifiqui ASSIGNMENT en lloc de OPERATOR per a la declaració INTERFACE que especifica l'operador d'assignació (=)"
+
+#: f/bad.def:452
+#, no-c-format
+msgid "Cannot specify =initialization-expr at %0 unless `::' appears before list of objects"
+msgstr "No es pot especificar =expr-iniciació en %0 a menys que \"::\" aparegui abans que la llista dels objectes"
+
+#: f/bad.def:455
+#, no-c-format
+msgid "Reference to label at %1 inconsistent with its definition at %0"
+msgstr "La referència a l'etiqueta en %1 és inconsistenta amb la seva definició en %0"
+
+#: f/bad.def:458
+#, no-c-format
+msgid "Reference to label at %1 inconsistent with earlier reference at %0"
+msgstr "La referència a l'etiqueta en %1 és inconsistenta amb la referència anterior en %0"
+
+#: f/bad.def:461
+#, no-c-format
+msgid "DO-statement reference to label at %1 follows its definition at %0"
+msgstr "La referència de la declaració DO a l'etiqueta en %1 segueix la seva definició en %0"
+
+#: f/bad.def:464
+#, no-c-format
+msgid "Reference to label at %1 is outside block containing definition at %0"
+msgstr "La referència a l'etiqueta en %1 està fora del bloc que conté la definició en %0"
+
+#: f/bad.def:467
+#, no-c-format
+msgid "DO-statement references to label at %0 and %2 separated by unterminated block starting at %1"
+msgstr "Les referències de la declaració DO a l'etiqueta en %0 i %2 estan separades per un bloc sense acabar que comença en %1"
+
+#: f/bad.def:470
+#, no-c-format
+msgid "DO-statement reference to label at %0 and label definition at %2 separated by unterminated block starting at %1"
+msgstr "La referència de la declaració DO a l'etiqueta en %0 i la definició de l'etiqueta en %2 estan separades per un bloc sense acabar que comença en %1"
+
+#: f/bad.def:473
+#, no-c-format
+msgid "Label definition at %0 invalid on this kind of statement"
+msgstr "La definició d'etiqueta en %0 és invàlida en aquest tipus de declaració"
+
+#: f/bad.def:476
+#, no-c-format
+msgid "Statement at %0 invalid in this context"
+msgstr "La declaració en %0 és invàlida en aquest context"
+
+#: f/bad.def:479
+#, no-c-format
+msgid "Statement at %0 invalid in context established by statement at %1"
+msgstr "La declaració en %0 és invàlida en el context establert per la declaració en %1"
+
+#: f/bad.def:482
+#, no-c-format
+msgid "Statement at %0 must specify construct name specified at %1"
+msgstr "La declaració en %0 deu especificar el nom de la construcció especificada en %1"
+
+#: f/bad.def:485
+#, no-c-format
+msgid "Construct name at %0 superfluous, no construct name specified at %1"
+msgstr "El nom de la construcció en %0 és superflu, no es va especificar un nom de construcció en %1"
+
+#: f/bad.def:488
+#, no-c-format
+msgid "Construct name at %0 not the same as construct name at %1"
+msgstr "El nom de construcció en %0 no és el mateix que el nom de construcció en %1"
+
+#: f/bad.def:491
+#, no-c-format
+msgid "Construct name at %0 does not match construct name for any containing DO constructs"
+msgstr "El nom de construcció en %0 no coincideix amb el nom de construcció per a qualsevol construcció DO contenidora"
+
+#: f/bad.def:494
+#, no-c-format
+msgid "Label definition missing at %0 for DO construct specifying label at %1"
+msgstr "Falta la definició d'etiqueta en %0 per a la construcció DO que especifica l'etiqueta en %1"
+
+#: f/bad.def:497
+#, no-c-format
+msgid "Statement at %0 follows ELSE block for IF construct at %1"
+msgstr "La declaració en %0 segueix al bloc ELSE per a la construcció IF en %1"
+
+#: f/bad.def:500
+#, no-c-format
+msgid "No label definition for FORMAT statement at %0"
+msgstr "No hi ha definició d'etiqueta per a la declaració FORMAT en %0"
+
+#: f/bad.def:503
+#, no-c-format
+msgid "Second occurrence of ELSE WHERE at %0 within WHERE at %1"
+msgstr "Segona ocurrència de ELSE WHERE en %0 dintre de WHERE en %1"
+
+#: f/bad.def:506
+#, no-c-format
+msgid "END statement at %0 missing `%A' keyword required for internal or module procedure(s) bounded by %1"
+msgstr "A la declaració END en %0 li falta la paraula clau `%A' requerida per a procediment(s) intern(s) o mòdul(s) units per %1"
+
+#: f/bad.def:509
+#, no-c-format
+msgid "MODULE PROCEDURE statement at %0 disallowed because INTERFACE at %1 specifies no generic name, operator, or assignment"
+msgstr "No es permet la declaració MODULE PROCEDURE en %0 perquè INTERFACE en %1 no especifica un nom genèric, operador o assignació"
+
+#: f/bad.def:512
+#, no-c-format
+msgid "BLOCK DATA name at %0 superfluous, no name specified at %1"
+msgstr "El nom de BLOCK DATA en %0 és superflu, no es va especificar un nom en %1"
+
+#: f/bad.def:515
+#, no-c-format
+msgid "Program name at %0 superfluous, no PROGRAM statement specified at %1"
+msgstr "El nom de programa en %0 és superflu, no es va especificar una declaració PROGRAM en %1"
+
+#: f/bad.def:518
+#, no-c-format
+msgid "Program unit name at %0 not the same as name at %1"
+msgstr "El nom d'unitat de programa en %0 no és el mateix que el nom en %1"
+
+#: f/bad.def:521
+#, no-c-format
+msgid "Type name at %0 not the same as name at %1"
+msgstr "El nom de tipus en %0 no és el mateix que el nom en %1"
+
+#: f/bad.def:524
+#, no-c-format
+msgid "End of source file before end of block started at %0"
+msgstr "Fi del fitxer font abans que comencés el bloc en %0"
+
+#: f/bad.def:527
+#, no-c-format
+msgid "Undefined label, first referenced at %0"
+msgstr "Etiqueta indefinida, primer referenciada en %0"
+
+#: f/bad.def:530
+#, no-c-format
+msgid "SAVE statement or attribute at %1 cannot be specified along with SAVE statement or attribute at %0"
+msgstr "La declaració o atribut SAVE en %1 no es pot especificar juntament amb la declaració o atribut SAVE en %0"
+
+#: f/bad.def:533
+#, no-c-format
+msgid "PUBLIC or PRIVATE statement at %1 cannot be specified along with PUBLIC or PRIVATE statement at %0"
+msgstr "La declaració PUBLIC o PRIVATE en %1 no es pot especificar juntament amb la declaració PUBLIC o PRIVATE en %0"
+
+#: f/bad.def:536
+#, no-c-format
+msgid "RETURN statement at %0 invalid within a main program unit"
+msgstr "La declaració RETURN en %0 és invàlida dintre d'una unitat de programa principal"
+
+#: f/bad.def:539
+#, no-c-format
+msgid "Alternate return specifier at %0 invalid within a main program unit"
+msgstr "El especificador de retorn alternatiu en %0 és invàlid dintre d'una unitat de programa principal"
+
+#: f/bad.def:542
+#, no-c-format
+msgid "Alternate return specifier at %0 invalid within a function"
+msgstr "El especificador de retorn alternatiu en %0 és invàlid dintre d'una funció"
+
+#: f/bad.def:545
+#, no-c-format
+msgid "Access specifier or PRIVATE statement at %0 invalid for derived-type definition within other than the specification part of a module"
+msgstr "El especificador d'accés o la declaració PRIVATE en %0 és invàlid per a la definició de tipus derivat dintre d'un altre que la part d'especificació d'un mòdul"
+
+#: f/bad.def:548
+#, no-c-format
+msgid "Access specifier at %0 must immediately follow derived-type statement at %1 with no intervening statements"
+msgstr "El especificador d'accés en %0 deu seguir immediatament a la declaració de tipus derivat en %1 sense declaracions que intervinguin"
+
+#: f/bad.def:551
+#, no-c-format
+msgid "No components specified as of %0 for derived-type definition beginning at %1"
+msgstr "No es van especificar components per a %0 per a la definició de tipus derivat que comença en %1"
+
+#: f/bad.def:554
+#, no-c-format
+msgid "No components specified as of %0 for structure definition beginning at %1"
+msgstr "No es van especificar components per a %0 per a la la definició de l'estructura que comença en %1"
+
+#: f/bad.def:557
+#, no-c-format
+msgid "Missing structure name for outer structure definition at %0"
+msgstr "Falta el nom de l'estructura per a la definició de l'estructura externa en %0"
+
+#: f/bad.def:560
+#, no-c-format
+msgid "Field names at %0 for outer structure definition -- specify them in a subsequent RECORD statement instead"
+msgstr "Noms de camps en %0 per a la definició de l'estructura exterior -- especifiqui'ls en el seu lloc en una declaració RECORD subsecuents"
+
+#: f/bad.def:563
+#, no-c-format
+msgid "Missing field name(s) for structure definition at %0 within structure definition at %1"
+msgstr "Manca(en) el(s) nom(s) de camp(s) per a la definició de l'estructura en %0 dintre de la definició de l'estructura en %1"
+
+#: f/bad.def:566
+#, no-c-format
+msgid "No components specified as of %0 for map beginning at %1"
+msgstr "No es van especificar component en %0 per al mapa que comença en %1"
+
+#: f/bad.def:569
+#, no-c-format
+msgid "Zero or one maps specified as of %0 for union beginning at %1 -- at least two are required"
+msgstr "Es van especificar zero o un mapa en %0 per a la unió que comença en %1 -- es requereixen almenys dos"
+
+#: f/bad.def:572
+#, no-c-format
+msgid "Missing %A specifier in statement at %0"
+msgstr "Falta el especificador %A en la declaració en %0"
+
+#: f/bad.def:575
+#, no-c-format
+msgid "Items in I/O list starting at %0 invalid for namelist-directed I/O"
+msgstr "Els elements en la llista d'I/O que comença en %0 són invàlids pel I/O dirigit per una llista de noms"
+
+#: f/bad.def:578
+#, no-c-format
+msgid "Conflicting I/O control specifications at %0 and %1"
+msgstr "Especificacions de control d'I/O en conflicte en %0 i %1"
+
+#: f/bad.def:581
+#, no-c-format
+msgid "No UNIT= specifier in I/O control list at %0"
+msgstr "No hi ha un especificador UNIT= en la llista de control d'I/O en %0"
+
+#: f/bad.def:584
+#, no-c-format
+msgid "Specification at %0 requires ADVANCE=`NO' specification in same I/O control list"
+msgstr "L'especificació en %0 requereix l'especificació ADVANCE=\"NO\" en la mateixa llista de control d'I/O"
+
+#: f/bad.def:587
+#, no-c-format
+msgid "Specification at %0 requires explicit FMT= specification in same I/O control list"
+msgstr "L'especificació en %0 requereix l'especificació FMT= explícita en la mateixa llista de control d'I/O"
+
+#: f/bad.def:595
+#, no-c-format
+msgid "Second occurrence of CASE DEFAULT at %0 within SELECT CASE at %1"
+msgstr "Segona ocurrència de CASE DEFAULT en %0 dintre d'un SELECT CASE en %1"
+
+#: f/bad.def:598
+#, no-c-format
+msgid "Duplicate or overlapping case values/ranges at %0 and %1"
+msgstr "Valors/rangs casi duplicats o traslapats en %0 i %1"
+
+#: f/bad.def:601
+#, no-c-format
+msgid "Type and/or kind-type parameter disagreement between CASE value or value within range at %0 and SELECT CASE at %1"
+msgstr "Desacord de tipus i/o paràmetre de tipus entre el valor CASE o el valor dintre del rang en %0 i SELECT CASE en %1"
+
+#: f/bad.def:604
+#, no-c-format
+msgid "Range specification at %0 invalid for CASE statement within logical-type SELECT CASE statement"
+msgstr "Especificació de rang en %0 invàlida per a la declaració CASE dintre de la declaració SELECT CASE de tipus lògic"
+
+#: f/bad.def:617
+#, no-c-format
+msgid "Fortran 90 feature at %0 unsupported"
+msgstr "Característica Fortran 90 en %0 sense suport"
+
+#: f/bad.def:630
+#, no-c-format
+msgid "Invalid declaration of or reference to symbol `%A' at %0 [initially seen at %1]"
+msgstr "Declaració invàlida de/o referència al símbol \"%A\" en %0 [observat inicialment en %1]"
+
+#: f/bad.def:638
+#, no-c-format
+msgid "Null element at %0 for array reference at %1"
+msgstr "Element null en %0 per a la referència de matriu en %1"
+
+#: f/bad.def:641
+#, no-c-format
+msgid "Too few elements (%A missing) as of %0 for array reference at %1"
+msgstr "Molt pocs elements (falta %A) per a %0 per a la referència de matriu en %1"
+
+#: f/bad.def:644
+#, no-c-format
+msgid "Too many elements as of %0 for array reference at %1"
+msgstr "Massa elements per a %0 per a la referència de matriu en %1"
+
+#: f/bad.def:647
+#, no-c-format
+msgid "Missing colon as of %0 in substring reference for %1"
+msgstr "Falten dos punts en %0 en la referència de subcadene per a %1"
+
+#: f/bad.def:650
+#, no-c-format
+msgid "Invalid use at %0 of substring operator on %1"
+msgstr "ùs invàlid en %0 de l'operador de subcadenes en %1"
+
+#: f/bad.def:653
+#, no-c-format
+msgid "Substring begin/end point at %0 out of defined range"
+msgstr "El punt d'inici/fi de la subcadena en %0 està fora del rang definit"
+
+#: f/bad.def:656
+#, no-c-format
+msgid "Array element value at %0 out of defined range"
+msgstr "Valor de l'element de la matriu en %0 està fora del rang definit"
+
+#: f/bad.def:659
+#, no-c-format
+msgid "Expression at %0 has incorrect data type or rank for its context"
+msgstr "L'expressió en %0 té el tipus de dada o rang incorrecte per al seu context"
+
+#: f/bad.def:662
+#, no-c-format
+msgid "Division by 0 (zero) at %0 (IEEE not yet supported)"
+msgstr "Divisió per 0 (zero) en %0 (IEEE encara no té suport)"
+
+#: f/bad.def:665
+#, no-c-format
+msgid "%A step count known to be 0 (zero) at %0"
+msgstr "Se sap que el compte de passada %A és 0 (zero) en %0"
+
+#: f/bad.def:668
+#, no-c-format
+msgid "%A end value plus step count known to overflow at %0"
+msgstr "Se sap que el valor final %A mes el compte de passada es desborda en %0"
+
+#: f/bad.def:671
+#, no-c-format
+msgid "%A begin, end, and step-count values known to result in implementation-dependent behavior due to overflow(s) in intermediate calculations at %0"
+msgstr "Se sap que els valors d'inici, fi i compte de passada %A resulten en conducta depenent de la implementació a causa de desbordament(s) en càlculs intermedis en %0"
+
+#: f/bad.def:674
+#, no-c-format
+msgid "%A begin, end, and step-count values known to result in no iterations at %0"
+msgstr "Se sap que els valors d'inici, fi i compte de passada %A resulten en falta d'iteracions en %0"
+
+#: f/bad.def:677
+#, no-c-format
+msgid "Type disagreement between expressions at %0 and %1"
+msgstr "Desacord de tipus entre les expressions en %0 i %1"
+
+#: f/bad.def:690
+#, no-c-format
+msgid "No specification for implied-DO iterator `%A' at %0"
+msgstr "No hi ha especificació per al iterador del DO implícit `%A' en %0"
+
+#: f/bad.def:693
+#, no-c-format
+msgid "Gratuitous parentheses surround implied-DO construct at %0"
+msgstr "Parèntesis gratuïts al voltant de la construcció amb DO implícit en %0"
+
+#: f/bad.def:696
+#, no-c-format
+msgid "Zero-size specification invalid at %0"
+msgstr "Especificació de grandària zero invàlida en %0"
+
+#: f/bad.def:699
+#, no-c-format
+msgid "Zero-size array at %0"
+msgstr "Matriu de grandària zero en %0"
+
+#: f/bad.def:702
+#, no-c-format
+msgid "Target machine does not support complex entity of kind specified at %0"
+msgstr ""
+
+#: f/bad.def:705
+#, no-c-format
+msgid "Target machine does not support DOUBLE COMPLEX, specified at %0"
+msgstr ""
+
+#: f/bad.def:708
+#, no-c-format
+msgid "Attempt to raise constant zero to a power at %0"
+msgstr ""
+
+#: f/bad.def:806
+#, no-c-format
+msgid "Reference to generic intrinsic `%A' at %0 could be to form %B or %C"
+msgstr ""
+
+#: f/bad.def:809
+#, no-c-format
+msgid "Ambiguous use of intrinsic `%A' at %0 [info -f g77 M CMPAMBIG]"
+msgstr ""
+
+#: f/bad.def:812
+#, no-c-format
+msgid "Intrinsic `%A' referenced %Bly at %0, %Cly at %1 [info -f g77 M EXPIMP]"
+msgstr ""
+
+#: f/bad.def:815
+#, no-c-format
+msgid "Same name `%A' used for %B at %0 and %C at %1 [info -f g77 M INTGLOB]"
+msgstr ""
+
+#: f/bad.def:818
+#, no-c-format
+msgid "Explicit type declaration for intrinsic `%A' disagrees with invocation at %0"
+msgstr ""
+
+#: f/bad.def:821
+#, no-c-format
+msgid "Unable to open INCLUDE file `%A' at %0"
+msgstr ""
+
+#: f/bad.def:839
+#, no-c-format
+msgid "Null argument at %0 for statement function reference at %1"
+msgstr ""
+
+#: f/bad.def:842
+#, no-c-format
+msgid "Null argument at %0 for procedure invocation at %1"
+msgstr ""
+
+#: f/bad.def:845
+#, no-c-format
+msgid "%A too few arguments (starting with dummy argument `%B') as of %0 for statement function reference at %1"
+msgstr ""
+
+#: f/bad.def:848
+#, no-c-format
+msgid "%A too many arguments as of %0 for statement function reference at %1"
+msgstr ""
+
+#: f/bad.def:851
+#, no-c-format
+msgid "Array supplied at %1 for dummy argument `%A' in statement function reference at %0"
+msgstr ""
+
+#: f/bad.def:854
+#, no-c-format
+msgid "Unsupported FORMAT specifier at %0"
+msgstr ""
+
+#: f/bad.def:857
+#, no-c-format
+msgid "Variable-expression FORMAT specifier at %0 -- unsupported"
+msgstr ""
+
+#: f/bad.def:880
+#, no-c-format
+msgid "Unsupported VXT statement at %0"
+msgstr ""
+
+#: f/bad.def:883
+#, no-c-format
+msgid "Attempt to specify second initial value for `%A' at %0"
+msgstr ""
+
+#: f/bad.def:886
+#, no-c-format
+msgid "Too few initial values in list of initializers for `%A' at %0"
+msgstr ""
+
+#: f/bad.def:889
+#, no-c-format
+msgid "Too many initial values in list of initializers starting at %0"
+msgstr ""
+
+#: f/bad.def:892
+#, no-c-format
+msgid "Array or substring specification for `%A' out of range in statement at %0"
+msgstr ""
+
+#: f/bad.def:895
+#, no-c-format
+msgid "Array subscript #%B out of range for initialization of `%A' in statement at %0"
+msgstr ""
+
+#: f/bad.def:898
+#, no-c-format
+msgid "Implied do-loop step count of 0 (zero) for iteration variable `%A' in statement at %0"
+msgstr ""
+
+#: f/bad.def:901
+#, no-c-format
+msgid "Implied do-loop iteration count of 0 (zero) for iteration variable `%A' in statement at %0"
+msgstr ""
+
+#: f/bad.def:904
+#, no-c-format
+msgid "Not an integer constant expression in implied do-loop in statement at %0"
+msgstr ""
+
+#: f/bad.def:907
+#, no-c-format
+msgid "Attempt to specify second initial value for element of `%A' at %0"
+msgstr ""
+
+#: f/bad.def:910
+#, no-c-format
+msgid "Attempt to EQUIVALENCE common areas `%A' and `%B' at %0"
+msgstr ""
+
+#: f/bad.def:913
+#, no-c-format
+msgid "Can't place `%A' as directed by EQUIVALENCE due to alignment restrictions"
+msgstr ""
+
+#: f/bad.def:916
+#, no-c-format
+msgid "Mismatched EQUIVALENCE requirements for placement of `%A' at both %C and %D bytes offset from `%B'"
+msgstr ""
+
+#: f/bad.def:919
+#, no-c-format
+msgid "Array or substring specification for `%A' out of range in EQUIVALENCE statement"
+msgstr ""
+
+#: f/bad.def:922
+#, no-c-format
+msgid "Substring of non-CHARACTER entity `%A' in EQUIVALENCE statement"
+msgstr ""
+
+#: f/bad.def:925
+#, no-c-format
+msgid "Array reference to scalar variable `%A' in EQUIVALENCE statement"
+msgstr ""
+
+#: f/bad.def:928
+#, no-c-format
+msgid "Array subscript #%B out of range for EQUIVALENCE of `%A'"
+msgstr ""
+
+#: f/bad.def:936
+#, no-c-format
+msgid "Attempt to extend COMMON area beyond its starting point via EQUIVALENCE of `%A'"
+msgstr ""
+
+#: f/bad.def:939
+#, no-c-format
+msgid "Too few elements in reference to array `%A' in EQUIVALENCE statement"
+msgstr ""
+
+#: f/bad.def:942
+#, no-c-format
+msgid "Too many elements in reference to array `%A' in EQUIVALENCE statement"
+msgstr ""
+
+#: f/bad.def:945
+#, no-c-format
+msgid "Mixed CHARACTER and non-CHARACTER types via COMMON/EQUIVALENCE -- for example, `%A' and `%B'"
+msgstr ""
+
+#: f/bad.def:958
+#, no-c-format
+msgid "Return value `%A' for FUNCTION at %0 not referenced in subprogram"
+msgstr ""
+
+#: f/bad.def:976
+#, no-c-format
+msgid "Common block `%A' is SAVEd, explicitly or implicitly, at %0 but not SAVEd at %1"
+msgstr ""
+
+#: f/bad.def:979
+#, no-c-format
+msgid "Common block `%A' is %B %D in length at %0 but %C %E at %1"
+msgstr ""
+
+#: f/bad.def:987
+#, no-c-format
+msgid "Blank common initialized at %0"
+msgstr ""
+
+#: f/bad.def:990
+#, no-c-format
+msgid "Intrinsic `%A' is passed as actual argument at %0 but not explicitly declared INTRINSIC"
+msgstr ""
+
+#: f/bad.def:993
+#, no-c-format
+msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
+msgstr ""
+
+#: f/bad.def:996
+#, no-c-format
+msgid "Character `%A' (for example) is upper-case in symbol name at %0"
+msgstr ""
+
+#: f/bad.def:999
+#, no-c-format
+msgid "Character `%A' (for example) is lower-case in symbol name at %0"
+msgstr ""
+
+#: f/bad.def:1002
+#, no-c-format
+msgid "Character `%A' not followed at some point by lower-case character in symbol name at %0"
+msgstr ""
+
+#: f/bad.def:1005
+#, no-c-format
+msgid "Initial character `%A' is lower-case in symbol name at %0"
+msgstr ""
+
+#: f/bad.def:1013
+#, no-c-format
+msgid "NAMELIST not adequately supported by run-time library for source files with case preserved"
+msgstr ""
+
+#: f/bad.def:1016
+#, no-c-format
+msgid "Nested %% construct (%%VAL, %%REF, or %%DESCR) at %0"
+msgstr ""
+
+#: f/bad.def:1034
+#, no-c-format
+msgid "Statement at %0 invalid in BLOCK DATA program unit at %1"
+msgstr ""
+
+#: f/bad.def:1037
+#, no-c-format
+msgid "Truncating characters on right side of character constant at %0"
+msgstr ""
+
+#: f/bad.def:1040
+#, no-c-format
+msgid "Truncating characters on right side of hollerith constant at %0"
+msgstr ""
+
+#: f/bad.def:1043
+#, no-c-format
+msgid "Truncating non-zero data on left side of numeric constant at %0"
+msgstr ""
+
+#: f/bad.def:1046
+#, no-c-format
+msgid "Truncating non-zero data on left side of typeless constant at %0"
+msgstr ""
+
+#: f/bad.def:1049
+#, no-c-format
+msgid "Typeless constant at %0 too large"
+msgstr ""
+
+#: f/bad.def:1052
+#, no-c-format
+msgid "First-column ampersand continuation at %0"
+msgstr ""
+
+#: f/bad.def:1055 f/bad.def:1058
+#, no-c-format
+msgid "Global name `%A' defined at %0 already defined at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1061 f/bad.def:1064
+#, no-c-format
+msgid "Global name `%A' is %B at %0 but is %C at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1067 f/bad.def:1070
+#, no-c-format
+msgid "Global name `%A' at %0 has different type at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1073
+#, no-c-format
+msgid "Too %B arguments passed to `%A' at %0 versus definition at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1076
+#, no-c-format
+msgid "Too %B arguments for `%A' at %0 versus invocation at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1079 f/bad.def:1082
+#, no-c-format
+msgid "Argument #%B of `%A' is %C at %0 but is %D at %1 [info -f g77 M GLOBALS]"
+msgstr ""
+
+#: f/bad.def:1085
+#, no-c-format
+msgid "Array `%A' at %0 is too large to handle"
+msgstr ""
+
+#: f/bad.def:1088
+#, no-c-format
+msgid "Statement function `%A' defined at %0 is not used"
+msgstr ""
+
+#: f/bad.def:1091
+#, no-c-format
+msgid "Intrinsic `%A', invoked at %0, known to be non-Y2K-compliant [info -f g77 M Y2KBAD]"
+msgstr ""
+
+#: f/bad.def:1094
+#, no-c-format
+msgid "Internal compiler error -- cannot perform operation"
+msgstr ""
+
+#. Kind messages are used in diagnostic location reports of the
+#. form "<file>: In function `foo': <error message>".
+#: f/info-k.def:32
+msgid "In unknown kind"
+msgstr ""
+
+#: f/info-k.def:33
+msgid "In entity"
+msgstr ""
+
+#: f/info-k.def:34
+msgid "In function"
+msgstr ""
+
+#: f/info-k.def:35
+msgid "In subroutine"
+msgstr ""
+
+#: f/info-k.def:36
+msgid "In program"
+msgstr ""
+
+#: f/info-k.def:37
+msgid "In block-data unit"
+msgstr ""
+
+#: f/info-k.def:38
+msgid "In common block"
+msgstr ""
+
+#: f/info-k.def:39
+msgid "In construct"
+msgstr ""
+
+#: f/info-k.def:40
+msgid "In namelist"
+msgstr ""
+
+#: f/info-k.def:41
+msgid "In anything"
+msgstr ""
+
+#: java/check-init.c:917
+#, c-format
+msgid "internal error in check-init: tree code not implemented: %s"
+msgstr ""
+
+#: java/check-init.c:990
+#, c-format
+msgid "final field '%s' may not have been initialized"
+msgstr ""
+
+#: java/class.c:539 java/class.c:564
+msgid "internal error - too many interface type"
+msgstr ""
+
+#: java/class.c:677
+msgid "bad method signature"
+msgstr ""
+
+#: java/class.c:726
+msgid "misplaced ConstantValue attribute (not in any field)"
+msgstr ""
+
+#: java/class.c:728
+#, c-format
+msgid "duplicate ConstantValue attribute for field '%s'"
+msgstr ""
+
+#: java/class.c:739
+#, c-format
+msgid "ConstantValue attribute of field '%s' has wrong type"
+msgstr ""
+
+#: java/class.c:1103
+#, c-format
+msgid "field '%s' not found in class"
+msgstr ""
+
+#: java/class.c:1365
+msgid "abstract method in non-abstract class"
+msgstr ""
+
+#: java/class.c:2078
+#, c-format
+msgid "non-static method '%s' overrides static method"
+msgstr ""
+
+#: java/decl.c:1541
+#, c-format
+msgid "In %s: overlapped variable and exception ranges at %d"
+msgstr ""
+
+#: java/decl.c:1622
+msgid "bad type in parameter debug info"
+msgstr ""
+
+#: java/decl.c:1632
+#, c-format
+msgid "bad PC range for debug info for local `%s'"
+msgstr ""
+
+#: java/expr.c:530
+msgid "stack underflow - dup* operation"
+msgstr ""
+
+#: java/expr.c:1534
+#, c-format
+msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
+msgstr ""
+
+#: java/expr.c:1563
+#, c-format
+msgid "field `%s' not found"
+msgstr ""
+
+#: java/expr.c:1715
+msgid "ret instruction not implemented"
+msgstr ""
+
+#: java/expr.c:1857
+#, c-format
+msgid "method '%s' not found in class"
+msgstr ""
+
+#: java/expr.c:2060
+#, c-format
+msgid "failed to find class '%s'"
+msgstr ""
+
+#: java/expr.c:2070
+#, c-format
+msgid "class '%s' has no method named '%s' matching signature '%s'"
+msgstr ""
+
+#: java/expr.c:2080
+msgid "invokestatic on non static method"
+msgstr ""
+
+#: java/expr.c:2085
+msgid "invokestatic on abstract method"
+msgstr ""
+
+#: java/expr.c:2093
+msgid "invoke[non-static] on static method"
+msgstr ""
+
+#: java/expr.c:2396
+#, c-format
+msgid "missing field '%s' in '%s'"
+msgstr ""
+
+#: java/expr.c:2402
+#, c-format
+msgid "mismatching signature for field '%s' in '%s'"
+msgstr ""
+
+#: java/expr.c:2425
+#, c-format
+msgid "assignment to final field `%s' not in field's class"
+msgstr ""
+
+#: java/expr.c:2430
+#, c-format
+msgid "assignment to final static field `%s' not in class initializer"
+msgstr ""
+
+#: java/expr.c:2437
+#, c-format
+msgid "assignment to final field `%s' not in constructor"
+msgstr ""
+
+#: java/expr.c:2684
+#, c-format
+msgid "can't expand %s"
+msgstr ""
+
+#: java/expr.c:2861
+msgid "invalid PC in line number table"
+msgstr ""
+
+#. We've just reached the end of a region of dead code.
+#: java/expr.c:2906
+#, c-format
+msgid "unreachable bytecode from %d to before %d"
+msgstr ""
+
+#. We've just reached the end of a region of dead code.
+#: java/expr.c:2943
+#, c-format
+msgid "unreachable bytecode from %d to the end of the method"
+msgstr ""
+
+#. duplicate code from LOAD macro
+#: java/expr.c:3261
+msgid "unrecogized wide sub-instruction"
+msgstr ""
+
+#: java/jcf-io.c:543
+#, c-format
+msgid "source file for class `%s' is newer than its matching class file. Source file `%s' used instead"
+msgstr ""
+
+#: java/jcf-parse.c:338
+msgid "bad string constant"
+msgstr ""
+
+#: java/jcf-parse.c:356
+#, c-format
+msgid "bad value constant type %d, index %d"
+msgstr ""
+
+#: java/jcf-parse.c:528
+#, c-format
+msgid "can't reopen %s"
+msgstr ""
+
+#: java/jcf-parse.c:533
+#, c-format
+msgid "can't close %s"
+msgstr ""
+
+#: java/jcf-parse.c:619
+#, c-format
+msgid "cannot find file for class %s"
+msgstr ""
+
+#: java/jcf-parse.c:631
+msgid "not a valid Java .class file"
+msgstr ""
+
+#: java/jcf-parse.c:634
+msgid "error while parsing constant pool"
+msgstr ""
+
+#: java/jcf-parse.c:637
+#, c-format
+msgid "error in constant pool entry #%d\n"
+msgstr ""
+
+#. FIXME - where was first time
+#: java/jcf-parse.c:649
+#, c-format
+msgid "reading class %s for the second time from %s"
+msgstr ""
+
+#: java/jcf-parse.c:667
+msgid "error while parsing fields"
+msgstr ""
+
+#: java/jcf-parse.c:670
+msgid "error while parsing methods"
+msgstr ""
+
+#: java/jcf-parse.c:673
+msgid "error while parsing final attributes"
+msgstr ""
+
+#: java/jcf-parse.c:687
+#, c-format
+msgid "the `java.lang.Object' that was found in `%s' didn't have the special zero-length `gnu.gcj.gcj-compiled' attribute. This generally means that your classpath is incorrectly set. Use `info gcj \"Input Options\"' to see the info page describing how to set the classpath"
+msgstr ""
+
+#: java/jcf-parse.c:777
+msgid "missing Code attribute"
+msgstr ""
+
+#: java/jcf-parse.c:1014
+msgid "source file seen twice on command line and will be compiled only once"
+msgstr ""
+
+#: java/jcf-parse.c:1030
+msgid "no input file specified"
+msgstr ""
+
+#: java/jcf-parse.c:1059
+#, c-format
+msgid "can't close input file %s"
+msgstr ""
+
+#: java/jcf-parse.c:1096
+#, c-format
+msgid "bad zip/jar file %s"
+msgstr ""
+
+#: java/jcf-write.c:2650
+#, c-format
+msgid "internal error in generate_bytecode_insn - tree code not implemented: %s"
+msgstr ""
+
+#: java/jcf-write.c:2988
+msgid "field initializer type mismatch"
+msgstr ""
+
+#: java/jcf-write.c:3419
+#, c-format
+msgid "can't create directory %s"
+msgstr ""
+
+#: java/jcf-write.c:3473
+#, c-format
+msgid "can't create %s"
+msgstr ""
+
+#: java/jv-scan.c:187
+msgid "only one of `--print-main', `--list-class', and `--complexity' allowed"
+msgstr ""
+
+#: java/jv-scan.c:190
+#, c-format
+msgid "can't open output file `%s'"
+msgstr ""
+
+#: java/jv-scan.c:224
+#, c-format
+msgid "file not found `%s'"
+msgstr ""
+
+#: java/jvspec.c:426
+msgid "can't specify `-D' without `--main'\n"
+msgstr ""
+
+#: java/jvspec.c:429
+#, c-format
+msgid "`%s' is not a valid class name"
+msgstr ""
+
+#: java/jvspec.c:435
+msgid "--resource requires -o"
+msgstr ""
+
+#: java/jvspec.c:442
+msgid "warning: already-compiled .class files ignored with -C"
+msgstr ""
+
+#: java/jvspec.c:449
+msgid "cannot specify both -C and -o"
+msgstr ""
+
+#: java/jvspec.c:461
+msgid "cannot create temporary file"
+msgstr ""
+
+#: java/jvspec.c:489
+msgid "using both @FILE with multiple files not implemented"
+msgstr ""
+
+#: java/jvspec.c:538
+msgid "cannot specify `main' class when not linking"
+msgstr ""
+
+#: java/lang.c:548
+msgid "can't do dependency tracking with input from stdin"
+msgstr ""
+
+#: java/lang.c:564
+msgid "couldn't determine target name for dependency tracking"
+msgstr ""
+
+#: java/lex.c:303
+#, c-format
+msgid ""
+"unknown encoding: `%s'\n"
+"This might mean that your locale's encoding is not supported\n"
+"by your system's iconv(3) implementation. If you aren't trying\n"
+"to use a particular encoding for your input file, try the\n"
+"`--encoding=UTF-8' option"
+msgstr ""
+
+#: java/mangle.c:85
+#, c-format
+msgid "can't mangle %s"
+msgstr ""
+
+#: java/mangle_name.c:144 java/mangle_name.c:216
+msgid "internal error - invalid Utf8 name"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:881
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:962
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1303
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1364
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1574
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1796
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1805
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1816
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1827
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1839
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1854
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1871
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1873
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1945
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2116
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2178
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2330
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2342
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2349
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2356
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2367
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2369
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2407
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2409
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2411
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2432
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2434
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2436
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2452
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2454
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2475
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2477
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2479
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2507
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2509
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2511
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2513
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2531
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2533
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2544
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2555
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2566
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2577
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2588
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2601
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2605
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2607
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2620
+msgid "Missing term"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:883
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:734
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:772
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:797
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:983
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1338
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1550
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1552
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1781
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1807
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1818
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1829
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1841
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1856
+msgid "';' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:732
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:770
+msgid "Missing name"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:795
+msgid "'*' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:809
+msgid "Class or interface declaration expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:846
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:848
+msgid "Missing class name"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:851
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:855
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:863
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1023
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1284
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1286
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1616
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1867
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1899
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1952
+msgid "'{' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:865
+msgid "Missing super class name"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:875
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:891
+msgid "Missing interface name"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:977
+msgid "Missing variable initializer"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:994
+msgid "Invalid declaration"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:997
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1082
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2153
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2175
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2179
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2214
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2291
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2301
+msgid "']' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1001
+msgid "Unbalanced ']'"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1037
+msgid "Invalid method declaration, method name required"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1042
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1047
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1052
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2036
+msgid "Identifier expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1057
+msgid "Invalid method declaration, return type required"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1080
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1530
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1537
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1546
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1548
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1576
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1684
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1981
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2034
+msgid "')' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1096
+msgid "Missing formal parameter term"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1111
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1116
+msgid "Missing identifier"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1136
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1145
+msgid "Missing class type term"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1301
+msgid "Invalid interface type"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1494
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1663
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1665
+msgid "':' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1516
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1521
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1526
+msgid "Invalid expression statement"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1544
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1572
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1612
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1680
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1748
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1869
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1938
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2028
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2030
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2038
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2274
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2276
+msgid "'(' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1614
+msgid "Missing term or ')'"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1661
+msgid "Missing or invalid constant expression"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1682
+msgid "Missing term and ')' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1721
+msgid "Invalid control expression"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1723
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1725
+msgid "Invalid update expression"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1750
+msgid "Invalid init statement"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1941
+msgid "Missing term or ')' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1983
+msgid "'class' or 'this' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1985
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1987
+msgid "'class' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2032
+msgid "')' or term expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2151
+msgid "'[' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2229
+msgid "Field expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2286
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2296
+msgid "Missing term and ']' expected"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2400
+msgid "']' expected, invalid type expression"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2403
+msgid "Invalid type expression"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2515
+msgid "Invalid reference type"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2993
+msgid "Constructor invocation must be first thing in a constructor"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2995
+msgid "Only constructors can invoke constructors"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3004
+#, c-format
+msgid ": `%s' JDK1.1(TM) feature"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3064
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3066
+#, c-format
+msgid ""
+"%s.\n"
+"%s"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6879
+#, c-format
+msgid "malformed .zip archive in CLASSPATH: %s"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6950
+#, c-format
+msgid "Can't find default package `%s'. Check the CLASSPATH environment variable and the access to the archives"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12352
+#, c-format
+msgid "missing static field `%s'"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12357
+#, c-format
+msgid "not a static field `%s'"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12400
+#, c-format
+msgid "No case for %s"
+msgstr ""
+
+#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:13365
+#, c-format
+msgid "unregistered operator %s"
+msgstr ""
+
+#: java/typeck.c:553
+msgid "junk at end of signature string"
+msgstr ""
+
+#: java/verify.c:479
+msgid "bad pc in exception_table"
+msgstr ""
+
+#: java/verify.c:485
+msgid "exception handler inside code that is being protected"
+msgstr ""
+
+#: java/verify.c:1395
+#, c-format
+msgid "unknown opcode %d@pc=%d during verification"
+msgstr ""
+
+#: java/verify.c:1465 java/verify.c:1478 java/verify.c:1482
+#, c-format
+msgid "verification error at PC=%d"
+msgstr ""
+
+#: java/lang-options.h:32
+msgid "Disable automatic array bounds checking"
+msgstr ""
+
+#: java/lang-options.h:34
+msgid "Disable assignability checks for stores into object arrays"
+msgstr ""
+
+#: java/lang-options.h:36
+msgid "Assume native functions are implemented using JNI"
+msgstr ""
+
+#: java/lang-options.h:38
+msgid "Replace system path"
+msgstr ""
+
+#: java/lang-options.h:40
+msgid "Set class path"
+msgstr ""
+
+#: java/lang-options.h:42
+msgid "Set class path (deprecated: use --classpath instead)"
+msgstr ""
+
+#: java/lang-options.h:44
+msgid "Choose class whose main method should be used"
+msgstr ""
+
+#: java/lang-options.h:46
+msgid "Choose input encoding (default comes from locale)"
+msgstr ""
+
+#: java/lang-options.h:48
+msgid "Add directory to class path"
+msgstr ""
+
+#: java/lang-options.h:50
+msgid "Directory where class files should be written"
+msgstr ""
+
+#: java/lang-options.h:52
+msgid "Warn if modifiers are specified when not necessary"
+msgstr ""
+
+#: java/lang-options.h:54
+msgid "Warn if deprecated empty statements are found"
+msgstr ""
+
+#: java/lang-options.h:56
+msgid "Warn if .class files are out of date"
+msgstr ""
+
+#: java/lang-options.h:58
+msgid "Always check for non gcj generated classes archives"
+msgstr ""
+
+#: java/lang-options.h:60
+msgid "Never optimize static class initialization code"
+msgstr ""
+
+#: java/lang-options.h:62
+msgid "Use offset tables for virtual method calls"
+msgstr ""
+
+#: objc/objc-act.c:651
+#, c-format
+msgid "object does not conform to the `%s' protocol"
+msgstr ""
+
+#: objc/objc-act.c:737 objc/objc-act.c:810
+#, c-format
+msgid "class `%s' does not implement the `%s' protocol"
+msgstr ""
+
+#: objc/objc-act.c:914
+#, c-format
+msgid "`%s' cannot be statically allocated"
+msgstr ""
+
+#: objc/objc-act.c:963
+#, c-format
+msgid "unexpected type for `id' (%s)"
+msgstr ""
+
+#: objc/objc-act.c:968
+msgid "undefined type `id', please import <objc/objc.h>"
+msgstr ""
+
+#: objc/objc-act.c:1019
+#, c-format
+msgid "protocol `%s' has circular dependency"
+msgstr ""
+
+#: objc/objc-act.c:1041 objc/objc-act.c:5301
+#, c-format
+msgid "cannot find protocol declaration for `%s'"
+msgstr ""
+
+#: objc/objc-act.c:1289 objc/objc-act.c:5877 objc/objc-act.c:6195
+#: objc/objc-act.c:6244 objc/objc-act.c:6280 objc-parse.y:1799
+#, c-format
+msgid "cannot find interface declaration for `%s'"
+msgstr ""
+
+#: objc/objc-act.c:1328
+#, c-format
+msgid "cannot find reference tag for class `%s'"
+msgstr ""
+
+#: objc/objc-act.c:2050
+#, c-format
+msgid "creating selector for non existant method %s"
+msgstr ""
+
+#: objc/objc-act.c:2364
+#, c-format
+msgid "cannot find class `%s'"
+msgstr ""
+
+#: objc/objc-act.c:2366
+#, c-format
+msgid "class `%s' already exists"
+msgstr ""
+
+#. fatal did not work with 2 args...should fix
+#: objc/objc-act.c:2473
+#, c-format
+msgid "cannot find interface declaration for `%s', superclass of `%s'"
+msgstr ""
+
+#: objc/objc-act.c:2480
+#, c-format
+msgid "circular inheritance in interface declaration for `%s'"
+msgstr ""
+
+#: objc/objc-act.c:3566 objc/objc-act.c:3583
+msgid "inconsistent instance variable specification"
+msgstr ""
+
+#: objc/objc-act.c:4580
+msgid "can not use an object as parameter to a method\n"
+msgstr ""
+
+#: objc/objc-act.c:4780
+#, c-format
+msgid "multiple declarations for method `%s'"
+msgstr ""
+
+#: objc/objc-act.c:4946
+#, c-format
+msgid "invalid receiver type `%s'"
+msgstr ""
+
+#: objc/objc-act.c:4977 objc/objc-act.c:5003 objc/objc-act.c:5051
+#, c-format
+msgid "`%s' does not respond to `%s'"
+msgstr ""
+
+#: objc/objc-act.c:4983 objc/objc-act.c:7318
+#, c-format
+msgid "no super class declared in interface for `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5081
+msgid "cannot find class (factory) method"
+msgstr ""
+
+#: objc/objc-act.c:5082 objc/objc-act.c:5126
+#, c-format
+msgid "return type for `%s' defaults to id"
+msgstr ""
+
+#: objc/objc-act.c:5099
+#, c-format
+msgid "method `%s' not implemented by protocol"
+msgstr ""
+
+#: objc/objc-act.c:5108
+msgid "return type defaults to id"
+msgstr ""
+
+#: objc/objc-act.c:5125
+msgid "cannot find method"
+msgstr ""
+
+#: objc/objc-act.c:5399
+#, c-format
+msgid "undeclared selector `%s'"
+msgstr "selector \"%s\" sense declarar"
+
+#. Historically, a class method that produced objects (factory
+#. method) would assign `self' to the instance that it
+#. allocated. This would effectively turn the class method into
+#. an instance method. Following this assignment, the instance
+#. variables could be accessed. That practice, while safe,
+#. violates the simple rule that a class method should not refer
+#. 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:5443
+#, c-format
+msgid "instance variable `%s' accessed in class method"
+msgstr ""
+
+#: objc/objc-act.c:5678
+#, c-format
+msgid "duplicate definition of class method `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5684
+#, c-format
+msgid "duplicate declaration of class method `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5720
+#, c-format
+msgid "duplicate definition of instance method `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5726
+#, c-format
+msgid "duplicate declaration of instance method `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5766
+#, c-format
+msgid "duplicate interface declaration for category `%s(%s)'"
+msgstr ""
+
+#: objc/objc-act.c:5852
+#, c-format
+msgid "instance variable `%s' is declared private"
+msgstr ""
+
+#: objc/objc-act.c:5899
+#, c-format
+msgid "instance variable `%s' is declared %s"
+msgstr ""
+
+#: objc/objc-act.c:5909
+msgid "static access to object of type `id'"
+msgstr ""
+
+#: objc/objc-act.c:5934 objc/objc-act.c:6027
+#, c-format
+msgid "incomplete implementation of class `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5938 objc/objc-act.c:6032
+#, c-format
+msgid "incomplete implementation of category `%s'"
+msgstr ""
+
+#: objc/objc-act.c:5943 objc/objc-act.c:6037
+#, c-format
+msgid "method definition for `%c%s' not found"
+msgstr ""
+
+#: objc/objc-act.c:6081
+#, c-format
+msgid "%s `%s' does not fully implement the `%s' protocol"
+msgstr ""
+
+#: objc/objc-act.c:6139 objc/objc-act.c:8249
+msgid "`@end' missing in implementation context"
+msgstr ""
+
+#: objc/objc-act.c:6167
+#, c-format
+msgid "reimplementation of class `%s'"
+msgstr ""
+
+#: objc/objc-act.c:6209
+#, c-format
+msgid "conflicting super class name `%s'"
+msgstr ""
+
+#: objc/objc-act.c:6224
+#, c-format
+msgid "duplicate interface declaration for class `%s'"
+msgstr ""
+
+#: objc/objc-act.c:6506
+#, c-format
+msgid "duplicate declaration for protocol `%s'"
+msgstr ""
+
+#: objc/objc-act.c:7363
+msgid "[super ...] must appear in a method context"
+msgstr ""
+
+#: objc/objc-act.c:8354 objc/objc-act.c:8370
+#, c-format
+msgid "potential selector conflict for method `%s'"
+msgstr ""
+
+#: objc-parse.y:2655
+msgid "`@end' must appear in an implementation context"
+msgstr ""
+
+#: objc-parse.y:2931
+msgid "method definition not in class context"
+msgstr ""
+
+#: objc/lang-options.h:27
+msgid "Dump decls to a .decl file"
+msgstr ""
+
+#: objc/lang-options.h:29
+msgid "Generate code for GNU runtime environment"
+msgstr ""
+
+#: objc/lang-options.h:32
+msgid "Generate code for NeXT runtime environment"
+msgstr ""
+
+#: objc/lang-options.h:35
+msgid "Warn if a selector has multiple methods"
+msgstr ""
+
+#: objc/lang-options.h:39
+msgid "Do not warn if inherited methods are unimplemented"
+msgstr ""
+
+#: objc/lang-options.h:41
+msgid "Generate C header of platform specific features"
+msgstr ""
+
+#: objc/lang-options.h:43
+msgid "Specify the name of the class for constant strings"
+msgstr ""
+
+#. This is the contribution to the `lang_options' array in gcc.c for
+#. treelang.
+#: treelang/lang-options.h:26
+msgid "(debug) trace parsing process"
+msgstr ""
+
+#: treelang/lang-options.h:27
+msgid "(debug) trace lexical analysis"
+msgstr ""
+
+#: config/rs6000/darwin.h:62
+msgid " conflicting code gen style switches are used"
+msgstr ""
+
+#: config/i386/mingw32.h:85 config/i386/cygwin.h:171
+msgid "shared and mdll are not compatible"
+msgstr ""
+
+#: java/lang-specs.h:33
+msgid "-fjni and -femit-class-files are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:34
+msgid "-fjni and -femit-class-file are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:35 java/lang-specs.h:36
+msgid "-femit-class-file should used along with -fsyntax-only"
+msgstr ""
+
+#: ada/lang-specs.h:38 java/jvspec.c:77 gcc.c:716
+msgid "-pg and -fomit-frame-pointer are incompatible"
+msgstr ""
+
+#: ada/lang-specs.h:41
+msgid "-c or -S required for Ada"
+msgstr ""
+
+#: config/darwin.h:212
+msgid "-current_version only allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:215
+msgid "-install_name only allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:220
+msgid "-bundle not allowed with -dynamiclib"
+msgstr "no es permet -bundle amb -dynamiclib"
+
+#: config/darwin.h:221
+msgid "-bundle_loader not allowed with -dynamiclib"
+msgstr "no es permet -bundle_loader amb -dynamiclib"
+
+#: config/darwin.h:222
+msgid "-client_name not allowed with -dynamiclib"
+msgstr "no es permet -client_name amb -dynamiclib"
+
+#: config/darwin.h:225
+msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:226
+msgid "-force_flat_namespace not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:228
+msgid "-keep_private_externs not allowed with -dynamiclib"
+msgstr ""
+
+#: config/darwin.h:229
+msgid "-private_bundle not allowed with -dynamiclib"
+msgstr "no es permet -private_bundle amb -dynamiclib"
+
+#: config/sparc/freebsd.h:34 config/ia64/freebsd.h:23
+#: config/alpha/freebsd.h:44 config/rs6000/sysv4.h:1107
+#: config/i386/freebsd-aout.h:213
+msgid "`-p' not supported; use `-pg' and gprof(1)"
+msgstr ""
+
+#: config/sparc/linux64.h:197 config/sparc/linux64.h:208
+#: config/sparc/netbsd-elf.h:163 config/sparc/netbsd-elf.h:182
+#: config/sparc/sol2-bi.h:168 config/sparc/sol2-bi.h:178
+msgid "may not use both -m32 and -m64"
+msgstr ""
+
+#: config/arm/arm.h:178
+msgid "-mapcs-26 and -mapcs-32 may not be used together"
+msgstr ""
+
+#: config/arm/arm.h:180
+msgid "-msoft-float and -mhard_float may not be used together"
+msgstr ""
+
+#: config/arm/arm.h:182
+msgid "-mbig-endian and -mlittle-endian may not be used together"
+msgstr ""
+
+#: config/i386/sco5.h:195
+msgid "-pg not supported on this platform"
+msgstr "-pg no té suport en aquesta plataforma"
+
+#: config/i386/sco5.h:196
+msgid "-p and -pp specified - pick one"
+msgstr "-p i -pp especificats - tria un"
+
+#: config/i386/sco5.h:271
+msgid "-G and -static are mutually exclusive"
+msgstr "-G·i·-static són mútuament exclusius"
+
+#: f/lang-specs.h:38 gcc.c:689
+msgid "GNU C does not support -C without using -E"
+msgstr ""
+
+#: f/lang-specs.h:39 gcc.c:690
+msgid "GNU C does not support -CC without using -E"
+msgstr "GNU C no dóna suport a -CC sense usar -E"
+
+#: config/mcore/mcore.h:60
+msgid "choose either big or little endian, not both"
+msgstr ""
+
+#: config/mcore/mcore.h:63
+msgid "choose either m340 or m210 not both"
+msgstr ""
+
+#: config/mcore/mcore.h:64
+msgid "the m210 does not have little endian support"
+msgstr ""
+
+#: config/i386/cygwin.h:115
+msgid "mno-cygwin and mno-win32 are not compatible"
+msgstr ""
+
+#: config/vax/netbsd-elf.h:42
+msgid "The -shared option is not currently supported for VAX ELF."
+msgstr "L'opció -shared no se suporta actualment per a ELF de VAX."
+
+#: treelang/lang-specs.h:52
+msgid "-pg or -p and -fomit-frame-pointer are incompatible"
+msgstr "punters -pg o -p i -fomit-frame són incompatibles"
+
+#: gcc.c:847
+msgid "-E required when input is from standard input"
+msgstr ""
+
+#: gcc.c:851
+msgid "compilation of header file requested"
+msgstr ""
+
+#: config/vax/vax.h:50 config/vax/vax.h:51
+msgid "profiling not supported with -mg\n"
+msgstr ""
+
+#: config/mips/mips.h:954
+msgid "-pipe is not supported"
+msgstr ""
+
+#: config/mips/mips.h:1156 config/arc/arc.h:63
+msgid "may not use both -EB and -EL"
+msgstr ""
+
+#: config/mips/r3900.h:35
+msgid "-mhard-float not supported"
+msgstr ""
+
+#: config/mips/r3900.h:37
+msgid "-msingle-float and -msoft-float can not both be specified"
+msgstr ""
diff --git a/gcc/po/de.po b/gcc/po/de.po
index be3a20555d0..31ea5cc93ca 100644
--- a/gcc/po/de.po
+++ b/gcc/po/de.po
@@ -1,1060 +1,1086 @@
# German translation of gcc messages.
-# Copyright © 2002, 2003 Free Software Foundation, Inc.
+# Copyright © 2002, 2003, 2004 Free Software Foundation, Inc.
# Karl Eichwalder <ke@suse.de>, 2002, 2003.
-# Roland Stigge <stigge@antcom.de>, 2003.
+# Roland Stigge <stigge@antcom.de>, 2003, 2004.
# This file is distributed under the same license as the gcc package.
#
msgid ""
msgstr ""
-"Project-Id-Version: gcc 3.3.2\n"
-"POT-Creation-Date: 2003-10-24 13:20+0200\n"
-"PO-Revision-Date: 2003-12-15 21:30+0100\n"
+"Project-Id-Version: gcc 3.4-b20040206\n"
+"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
+"POT-Creation-Date: 2004-02-06 01:40+0000\n"
+"PO-Revision-Date: 2004-02-15 12:14+0100\n"
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: attribs.c:185
+#: attribs.c:178
#, c-format
msgid "`%s' attribute directive ignored"
msgstr "Attribut-Anweisung »%s« wird ignoriert"
-#: attribs.c:193
+#: attribs.c:186
#, c-format
msgid "wrong number of arguments specified for `%s' attribute"
msgstr "falsche Anzahl an Argumenten für das Attribut »%s« angegeben"
-#: attribs.c:210
+#: attribs.c:203
#, c-format
msgid "`%s' attribute does not apply to types"
msgstr "Attribut »%s« kann nicht auf Typen angewandt werden"
-#: attribs.c:247
+#: attribs.c:249
#, c-format
msgid "`%s' attribute only applies to function types"
msgstr "Attribut »%s« kann nur auf Funktionstypen angewandt werden"
-#: attribs.c:404 c-common.c:5275 c-common.c:5297 c-common.c:5319
-#: c-common.c:5350 c-common.c:5372 c-common.c:5397 c-common.c:5423
-#: c-common.c:5453 c-common.c:5491 c-common.c:5538 c-common.c:5568
-#: c-common.c:5598 c-common.c:5621 c-common.c:5878 c-common.c:5900
-#: c-common.c:5943 c-common.c:6020 c-common.c:6076 c-common.c:6103
-#: c-common.c:6186 c-common.c:6220 c-common.c:6574 config/arm/arm.c:2101
-#: config/arm/arm.c:2128 config/avr/avr.c:4774 config/h8300/h8300.c:3693
-#: config/h8300/h8300.c:3718 config/i386/i386.c:1403 config/i386/winnt.c:78
-#: config/ip2k/ip2k.c:3204
+#: attribs.c:416 c-common.c:4344 c-common.c:4363 c-common.c:4381
+#: c-common.c:4408 c-common.c:4427 c-common.c:4450 c-common.c:4473
+#: c-common.c:4499 c-common.c:4533 c-common.c:4577 c-common.c:4605
+#: c-common.c:4633 c-common.c:4652 c-common.c:4907 c-common.c:4929
+#: c-common.c:4964 c-common.c:5031 c-common.c:5077 c-common.c:5135
+#: c-common.c:5166 c-common.c:5512 c-common.c:5535 c-common.c:5574
+#: config/arm/arm.c:2278 config/arm/arm.c:2305 config/avr/avr.c:4539
+#: config/h8300/h8300.c:4281 config/h8300/h8300.c:4304 config/i386/i386.c:1599
+#: config/i386/i386.c:15299 config/i386/winnt.c:86 config/ia64/ia64.c:1053
+#: config/ip2k/ip2k.c:3151
#, c-format
msgid "`%s' attribute ignored"
msgstr "Attribut »%s« wird ignoriert"
-#: builtins.c:285
+#: builtins.c:318
msgid "offset outside bounds of constant string"
msgstr "Adressabstand ist außerhalb der Grenzen der konstanten Zeichenkette"
-#: builtins.c:765
+#: builtins.c:786
msgid "second arg to `__builtin_prefetch' must be a constant"
-msgstr "Zweites Argument für »__builtin_prefetch« muss eine Konstante sein"
+msgstr "zweites Argument für »__builtin_prefetch« muss eine Konstante sein"
-#: builtins.c:772
+#: builtins.c:793
msgid "invalid second arg to __builtin_prefetch; using zero"
-msgstr "Ungültiges zweites Argument für »__builtin_prefetch«; benutze Null"
+msgstr "ungültiges zweites Argument für »__builtin_prefetch«; es wird Null verwendet"
-#: builtins.c:779
+#: builtins.c:800
msgid "third arg to `__builtin_prefetch' must be a constant"
-msgstr "Drittes Argument für »__builtin_prefetch« muss eine Konstante sein"
+msgstr "drittes Argument für »__builtin_prefetch« muss eine Konstante sein"
-#: builtins.c:786
+#: builtins.c:807
msgid "invalid third arg to __builtin_prefetch; using zero"
-msgstr "Ungültiges drittes Argument für »__builtin_prefetch«; benutze Null"
-
-#. ??? 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:2875
-msgid "__builtin_saveregs not supported by this target"
-msgstr "__builtin_saveregs wird von diesem Ziel nicht unterstützt"
+msgstr "ungültiges drittes Argument für »__builtin_prefetch«; es wird Null verwendet"
-#: builtins.c:2917
+#: builtins.c:3828
msgid "argument of `__builtin_args_info' must be constant"
msgstr "Argument von »__builtin_args_info« muss konstant sein"
-#: builtins.c:2923
+#: builtins.c:3834
msgid "argument of `__builtin_args_info' out of range"
msgstr "Argument von »__builtin_args_info« außerhalb des Wertebereichs"
-#: builtins.c:2929
+#: builtins.c:3840
msgid "missing argument in `__builtin_args_info'"
-msgstr "Fehlendes Argument in »__builtin_args_info«"
+msgstr "fehlendes Argument in »__builtin_args_info«"
-#: builtins.c:2960
+#: builtins.c:3856
msgid "`va_start' used in function with fixed args"
msgstr "»va_start« in Funktion mit fester Parameterzahl verwendet"
-#: builtins.c:2979
+#: builtins.c:3875
msgid "second parameter of `va_start' not last named argument"
-msgstr "Zweiter Parameter von »va_start« ist nicht letztgenanntes Argument"
+msgstr "zweiter Parameter von »va_start« ist nicht letztgenanntes Argument"
#. 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:2984
+#: builtins.c:3880
msgid "`__builtin_next_arg' called without an argument"
msgstr "»__builtin_next_arg« ohne Argument gerufen"
-#: builtins.c:3070
+#: builtins.c:3969
msgid "too many arguments to function `va_start'"
-msgstr "Zu viele Argumente für »va_start«"
+msgstr "zu viele Argumente für »va_start«"
-#: builtins.c:3172
+#: builtins.c:4091
msgid "first argument to `va_arg' not of type `va_list'"
-msgstr "Erstes Argument für »va_arg« nicht vom Typ »va_list«"
+msgstr "erstes Argument für »va_arg« nicht vom Typ »va_list«"
#. Unfortunately, this is merely undefined, rather than a constraint
#. violation, so we cannot make this an error. If this call is never
#. executed, the program is still strictly conforming.
-#: builtins.c:3204
+#: builtins.c:4123
#, c-format
msgid "`%s' is promoted to `%s' when passed through `...'"
msgstr "»%s« auf »%s« gesetzt beim Durchlaufen von »...«"
-#: builtins.c:3209
+#: builtins.c:4128
#, c-format
msgid "(so you should pass `%s' not `%s' to `va_arg')"
msgstr "(Sie sollten also »%s« statt »%s« an »va_arg« übergeben)"
-#: builtins.c:3340
+#: builtins.c:4240
msgid "invalid arg to `__builtin_frame_address'"
-msgstr "Ungültiges Argument für »__builtin_frame_address«"
+msgstr "ungültiges Argument für »__builtin_frame_address«"
-#: builtins.c:3342
+#: builtins.c:4242
msgid "invalid arg to `__builtin_return_address'"
-msgstr "Ungültiges Argument für »__builtin_return_address«"
+msgstr "ungültiges Argument für »__builtin_return_address«"
-#: builtins.c:3356
+#: builtins.c:4256
msgid "unsupported arg to `__builtin_frame_address'"
-msgstr "Nicht unterstütztes Argument für »__builtin_frame_address«"
+msgstr "nicht unterstütztes Argument für »__builtin_frame_address«"
-#: builtins.c:3358
+#: builtins.c:4258
msgid "unsupported arg to `__builtin_return_address'"
-msgstr "Nicht unterstütztes Argument für »__builtin_return_address«"
+msgstr "nicht unterstütztes Argument für »__builtin_return_address«"
-#: builtins.c:3530
+#: builtins.c:4418
msgid "second arg to `__builtin_expect' must be a constant"
-msgstr "Zweites Argument für »__builtin_expect« muss eine Konstante sein"
+msgstr "zweites Argument für »__builtin_expect« muss eine Konstante sein"
-#: builtins.c:4028
+#: builtins.c:5359
msgid "__builtin_longjmp second argument must be 1"
-msgstr "Zweites Argument für __builtin_longjmp muss 1 sein"
+msgstr "zweites Argument für __builtin_longjmp muss 1 sein"
-#. just do library call, if unknown builtin
-#: builtins.c:4092 c-common.c:4459
+#: builtins.c:5454
#, c-format
msgid "built-in function `%s' not currently supported"
-msgstr "Eingebaute Funktion »%s« gegenwärtig nicht unterstützt"
+msgstr "eingebaute Funktion »%s« gegenwärtig nicht unterstützt"
-#: builtins.c:4165
+#: builtins.c:5594
msgid "target format does not support infinity"
msgstr "Zielformat unterstützt nicht »unendlich«"
-#: c-common.c:1168
-#, c-format
-msgid "`%s' is not defined outside of function scope"
-msgstr "»%s« ist außerhalb des Funktionsgültigkeitsbereiches undefiniert"
+#: c-common.c:934
+msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
+msgstr "%Hes wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges »else« zu vermeiden"
+
+#: c-common.c:1158
+msgid "%J'%D' is not defined outside of function scope"
+msgstr "%J»%D« ist außerhalb des Funktionsgültigkeitsbereiches nicht definiert"
-#: c-common.c:1189
+#: c-common.c:1178
#, c-format
msgid "string length `%d' is greater than the length `%d' ISO C%d compilers are required to support"
msgstr "Zeichenkettenlänge »%d« ist größer als die Länge »%d«, die von ISO-C%d-Compilern unterstützt werden muss"
-#: c-common.c:1247
-msgid "concatenation of string literals with __FUNCTION__ is deprecated"
-msgstr "Verkettung von Zeichenkettenliteralen mit __FUNCTION__ ist veraltet"
-
-#: c-common.c:1343
+#: c-common.c:1218
msgid "overflow in constant expression"
msgstr "Ãœberlauf in Konstanten-Ausdruck"
-#: c-common.c:1364
+#: c-common.c:1238
msgid "integer overflow in expression"
msgstr "Ganzzahlüberlauf in Ausdruck"
-#: c-common.c:1373
+#: c-common.c:1247
msgid "floating point overflow in expression"
-msgstr "Fließkommaüberlauf in Ausdruck"
+msgstr "Gleitkommaüberlauf in Ausdruck"
-#: c-common.c:1379
+#: c-common.c:1253
msgid "vector overflow in expression"
msgstr "Vektorüberlauf in Ausdruck"
#. This detects cases like converting -129 or 256 to unsigned char.
-#: c-common.c:1402
+#: c-common.c:1275
msgid "large integer implicitly truncated to unsigned type"
-msgstr "Große Ganzzahl implizit auf vorzeichenlosen Typen abgeschnitten"
+msgstr "große Ganzzahl implizit auf vorzeichenlosen Typen abgeschnitten"
-#: c-common.c:1404
+#: c-common.c:1277
msgid "negative integer implicitly converted to unsigned type"
-msgstr "Negative Ganzzahl implizit in vorzeichenlosen Typen konvertiert"
+msgstr "negative Ganzzahl implizit in vorzeichenlosen Typen konvertiert"
-#: c-common.c:1452
+#: c-common.c:1323
msgid "overflow in implicit constant conversion"
msgstr "Ãœberlauf in impliziter Konstantenkonvertierung"
-#: c-common.c:1600
+#: c-common.c:1459
#, c-format
msgid "operation on `%s' may be undefined"
msgstr "Operation auf »%s« könnte undefiniert sein"
-#: c-common.c:1891
+#: c-common.c:1743
msgid "expression statement has incomplete type"
msgstr "Ausdrucksanweisung hat unvollständigen Typ"
-#: c-common.c:1924
+#: c-common.c:1775
msgid "case label does not reduce to an integer constant"
msgstr "case-Marke reduziert nicht auf Ganzzahlkonstante"
-#: c-common.c:2228
+#: c-common.c:2105
msgid "invalid truth-value expression"
-msgstr "Ungültiger Wahrheitswert-Ausdruck"
+msgstr "ungültiger Wahrheitswert-Ausdruck"
-#: c-common.c:2279
+#: c-common.c:2156
#, c-format
msgid "invalid operands to binary %s"
-msgstr "Ungültige Operanden für binäres %s"
+msgstr "ungültige Operanden für binäres %s"
-#: c-common.c:2513
+#: c-common.c:2390
msgid "comparison is always false due to limited range of data type"
msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »unwahr«"
-#: c-common.c:2515
+#: c-common.c:2392
msgid "comparison is always true due to limited range of data type"
msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »wahr«"
-#: c-common.c:2585
+#: c-common.c:2462
msgid "comparison of unsigned expression >= 0 is always true"
msgstr "Vergleich eines vorzeichenlosen Ausdrucks >= 0 ist stets »wahr«"
-#: c-common.c:2594
+#: c-common.c:2471
msgid "comparison of unsigned expression < 0 is always false"
msgstr "Vergleich eines vorzeichenlosen Ausdrucks < 0 ist stets »unwahr«"
-#: c-common.c:2641
+#: c-common.c:2516
msgid "pointer of type `void *' used in arithmetic"
msgstr "Zeiger auf Typen »void *« in Arithmetik verwendet"
-#: c-common.c:2647
+#: c-common.c:2522
msgid "pointer to a function used in arithmetic"
msgstr "Zeiger auf Funktion in Arithmetik verwendet"
-#: c-common.c:2653
+#: c-common.c:2528
msgid "pointer to member function used in arithmetic"
-msgstr "Zeiger auf member-Funktion in Arithmetik verwendet"
+msgstr "Zeiger auf Elementfunktion in Arithmetik verwendet"
-#: c-common.c:2659
+#: c-common.c:2534
msgid "pointer to a member used in arithmetic"
-msgstr "Zeiger auf member in Arithmetik verwendet"
+msgstr "Zeiger auf Element in Arithmetik verwendet"
-#: c-common.c:2746 f/com.c:14762
+#: c-common.c:2623 f/com.c:14734
msgid "struct type value used where scalar is required"
msgstr "Wert eines struct-Typs anstelle des geforderten Skalars verwendet"
-#: c-common.c:2750 f/com.c:14766
+#: c-common.c:2627 f/com.c:14738
msgid "union type value used where scalar is required"
msgstr "Wert eines union-Typs anstelle des geforderten Skalars verwendet"
-#: c-common.c:2754 f/com.c:14770
+#: c-common.c:2631 f/com.c:14742
msgid "array type value used where scalar is required"
msgstr "Wert eines array-Typs anstelle des geforderten Skalars verwendet"
-#: c-common.c:2874 f/com.c:14903
+#. Common Ada/Pascal programmer's mistake. We always warn
+#. about this since it is so bad.
+#: c-common.c:2668
+msgid "the address of `%D', will always evaluate as `true'"
+msgstr "die Adresse von »%D« wird immer zu »true« auswerten"
+
+#: c-common.c:2762 f/com.c:14874
msgid "suggest parentheses around assignment used as truth value"
-msgstr "Schlage Klammern um Zuweisung, die als Wahrheitswert verwendet wird, vor"
+msgstr "um Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern vorgeschlagen"
-#: c-common.c:2918 c-common.c:2950
+#: c-common.c:2808 c-common.c:2848
msgid "invalid use of `restrict'"
-msgstr "Ungültige Verwendung von »restrict«"
+msgstr "ungültige Verwendung von »restrict«"
-#: c-common.c:3064
+#: c-common.c:2958
msgid "invalid application of `sizeof' to a function type"
-msgstr "Ungültige Anwendung von »sizeof« auf einen Funktionstypen"
+msgstr "ungültige Anwendung von »sizeof« auf einen Funktionstypen"
-#: c-common.c:3074
+#: c-common.c:2968
#, c-format
msgid "invalid application of `%s' to a void type"
-msgstr "Ungültige Anwendung von »%s« auf einen void-Typen"
+msgstr "ungültige Anwendung von »%s« auf einen void-Typen"
-#: c-common.c:3080
+#: c-common.c:2974
#, c-format
msgid "invalid application of `%s' to an incomplete type"
-msgstr "Ungültige Anwendung von »%s« auf einen unvollständigen Typen"
+msgstr "ungültige Anwendung von »%s« auf einen unvollständigen Typen"
-#: c-common.c:3121
+#: c-common.c:3014
msgid "`__alignof' applied to a bit-field"
msgstr "»__alignof« auf Bitfeld angewandt"
-#: c-common.c:3618
+#: c-common.c:3506
#, c-format
msgid "cannot disable built-in function `%s'"
-msgstr "Kann eingebaute Funktion »%s« nicht abschalten"
+msgstr "kann eingebaute Funktion »%s« nicht abschalten"
-#: c-common.c:3787 c-typeck.c:1748
+#: c-common.c:3667 c-typeck.c:1941
#, c-format
msgid "too few arguments to function `%s'"
-msgstr "Zu wenig Argumente für Funktion »%s«"
+msgstr "zu wenig Argumente für Funktion »%s«"
-#: c-common.c:3793 c-typeck.c:1601
+#: c-common.c:3673 c-typeck.c:1802
#, c-format
msgid "too many arguments to function `%s'"
-msgstr "Zu viele Argumente für Funktion »%s«"
+msgstr "zu viele Argumente für Funktion »%s«"
-#: c-common.c:3812
+#: c-common.c:3692
#, c-format
msgid "non-floating-point argument to function `%s'"
-msgstr "Nicht-Fließkomma-Argument für Funktion »%s«"
+msgstr "nicht-Gleitkomma-Argument für Funktion »%s«"
-#: c-common.c:4081
+#: c-common.c:3919
msgid "pointers are not permitted as case values"
msgstr "Zeiger sind nicht als case-Werte zugelassen"
-#: c-common.c:4087
-msgid "ISO C++ forbids range expressions in switch statements"
-msgstr "ISO-C++ verbietet Wertebereichsausdrücke in switch-Anweisungen"
-
-#: c-common.c:4089
-msgid "ISO C forbids range expressions in switch statements"
-msgstr "ISO-C verbietet Wertebereichsausdrücke in switch-Anweisungen"
+#: c-common.c:3923
+msgid "range expressions in switch statements are non-standard"
+msgstr "Wertebereichsausdrücke in switch-Anweisungen sind nicht standardkonform"
-#: c-common.c:4119
+#: c-common.c:3952
msgid "empty range specified"
-msgstr "Leerer Wertebereich angegeben"
+msgstr "leerer Wertebereich angegeben"
-#: c-common.c:4170
+#: c-common.c:4003
msgid "duplicate (or overlapping) case value"
-msgstr "Doppelte (oder sich überschneidende) case-Werte"
+msgstr "doppelte (oder sich überschneidende) case-Werte"
-#: c-common.c:4172
-msgid "this is the first entry overlapping that value"
-msgstr "Dies ist der erste Eintrag, der diesen Wert überschneidet"
+#: c-common.c:4004
+msgid "%Jthis is the first entry overlapping that value"
+msgstr "%Jdies ist der erste Eintrag, der diesen Wert überschneidet"
-#: c-common.c:4176
+#: c-common.c:4008
msgid "duplicate case value"
-msgstr "Doppelter case-Wert"
+msgstr "doppelter case-Wert"
-#: c-common.c:4177
-msgid "previously used here"
-msgstr "bereits hier verwendet"
+#: c-common.c:4009
+msgid "%Jpreviously used here"
+msgstr "%Jbereits hier verwendet"
-#: c-common.c:4181
+#: c-common.c:4013
msgid "multiple default labels in one switch"
-msgstr "Mehrere Standardmarken in einem »switch«"
+msgstr "mehrere Standardmarken in einem »switch«"
-#: c-common.c:4182
-msgid "this is the first default label"
-msgstr "Dies ist die erste Standardmarke"
+#: c-common.c:4014
+msgid "%Jthis is the first default label"
+msgstr "%Jdies ist die erste Standardmarke"
-#: c-common.c:4210
-msgid "ISO C++ forbids taking the address of a label"
-msgstr "ISO-C++ verbietet die Adresse einer Marke"
+#: c-common.c:4039
+msgid "taking the address of a label is non-standard"
+msgstr "das Ermitteln der Adresse einer Marke ist nicht standardkonform"
-#: c-common.c:4212
-msgid "ISO C forbids taking the address of a label"
-msgstr "ISO-C verbietet die Adresse einer Marke"
+#: c-common.c:4085
+msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
+msgstr "%Hder Rückgabewert von »%D« mit dem Attribut warn_unused_result wird ignoriert"
-#: c-common.c:5235
+#: c-common.c:4090
+msgid "%Hignoring return value of function declared with attribute warn_unused_result"
+msgstr "%Hder Rückgabewert der Funktion, die mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert"
+
+#. SW_PARAM
+#: c-common.c:4297
+#, c-format
+msgid "declaration of \"%s\" shadows a parameter"
+msgstr "Deklaration von »%s« überdeckt einen Parameter"
+
+#. SW_LOCAL
+#: c-common.c:4298
#, c-format
-msgid "declaration of `%s' shadows %s"
-msgstr "Deklaration von »%s« verdeckt %s"
+msgid "declaration of \"%s\" shadows a previous local"
+msgstr "Deklaration von »%s« überdeckt einen vorhergehenden lokalen Bezeichner"
-#: c-common.c:5654
+#. SW_GLOBAL
+#: c-common.c:4299
+#, c-format
+msgid "declaration of \"%s\" shadows a global declaration"
+msgstr "Deklaration von »%s« überdeckt eine globale Deklaration"
+
+#: c-common.c:4303
+msgid "%Jshadowed declaration is here"
+msgstr "%Jverdeckte Deklaration ist hier"
+
+#: c-common.c:4686
#, c-format
msgid "unknown machine mode `%s'"
-msgstr "Unbekannter Maschinenzustand »%s«"
+msgstr "unbekannter Maschinenzustand »%s«"
-#: c-common.c:5657
+#: c-common.c:4689
#, c-format
msgid "no data type for mode `%s'"
-msgstr "Kein Datentyp für Zustand »%s«"
+msgstr "kein Datentyp für Zustand »%s«"
+
+#: c-common.c:4693
+#, c-format
+msgid "invalid pointer mode `%s'"
+msgstr "ungültiger Zeigermodus »%s«"
-#: c-common.c:5666 c-common.c:6316
+#: c-common.c:4700 c-common.c:5263
#, c-format
msgid "unable to emulate '%s'"
msgstr "»%s« kann nicht emuliert werden"
-#: c-common.c:5702
-msgid "section attribute cannot be specified for local variables"
-msgstr "Abschnitts-Attribut kann nicht für lokale Variablen angegeben werden"
+#: c-common.c:4744
+msgid "%Jsection attribute cannot be specified for local variables"
+msgstr "%JAbschnitts-Attribut kann nicht für lokale Variablen angegeben werden"
-#: c-common.c:5713
-#, c-format
-msgid "section of `%s' conflicts with previous declaration"
-msgstr "Abschnitt von »%s« in Konflikt mit vorheriger Deklaration"
+#: c-common.c:4755
+msgid "%Jsection of '%D' conflicts with previous declaration"
+msgstr "%JAbschnitt von »%D« in Konflikt mit vorheriger Deklaration"
-#: c-common.c:5722
-#, c-format
-msgid "section attribute not allowed for `%s'"
-msgstr "Abschnitts-Attribute nicht erlaubt für »%s«"
+#: c-common.c:4764
+msgid "%Jsection attribute not allowed for '%D'"
+msgstr "%JAbschnitts-Attribute nicht erlaubt für »%D«"
-#: c-common.c:5729
-msgid "section attributes are not supported for this target"
-msgstr "Abschnitts-Attribute werden für dieses Ziel nicht unterstützt"
+#: c-common.c:4770
+msgid "%Jsection attributes are not supported for this target"
+msgstr "%JAbschnitts-Attribute werden für dieses Ziel nicht unterstützt"
-#: c-common.c:5771
+#: c-common.c:4808
msgid "requested alignment is not a constant"
-msgstr "Verlangte Ausrichtung ist keine Konstante"
+msgstr "verlangte Ausrichtung ist keine Konstante"
-#: c-common.c:5776
+#: c-common.c:4813
msgid "requested alignment is not a power of 2"
-msgstr "Verlangte Ausrichtung ist keine Zweierpotenz"
+msgstr "verlangte Ausrichtung ist keine Zweierpotenz"
-#: c-common.c:5781
+#: c-common.c:4818
msgid "requested alignment is too large"
-msgstr "Verlangte Ausrichtung ist zu groß"
+msgstr "verlangte Ausrichtung ist zu groß"
-#: c-common.c:5808
-#, c-format
-msgid "alignment may not be specified for `%s'"
-msgstr "Für »%s« darf keine Ausrichtung angegeben werden"
+#: c-common.c:4844
+msgid "%Jalignment may not be specified for '%D'"
+msgstr "%Jfür »%D« darf keine Ausrichtung angegeben werden"
-#: c-common.c:5853
-#, c-format
-msgid "`%s' defined both normally and as an alias"
-msgstr "»%s« sowohl normal als auch als Alias definiert"
+#: c-common.c:4882
+msgid "%J'%D' defined both normally and as an alias"
+msgstr "%J»%D« sowohl normal als auch als Alias definiert"
-#: c-common.c:5863
+#: c-common.c:4892
msgid "alias arg not a string"
msgstr "Alias-Argument ist keine Zeichenkette"
-#: c-common.c:5910
+#: c-common.c:4935
msgid "visibility arg not a string"
msgstr "Sichtbarkeitsargument ist keine Zeichenkette"
-#: c-common.c:5919
+#: c-common.c:4948
msgid "visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""
msgstr "Sichtbarkeitsargument muss »default«, »hidden«, »protected« oder »internal« sein"
-#: c-common.c:5953
+#: c-common.c:4974
msgid "tls_model arg not a string"
msgstr "Argument für tls_model ist keine Zeichenkette"
-#: c-common.c:5962
+#: c-common.c:4983
msgid "tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
msgstr "Argument für tls_model muss »local-exec«, »initial-exec«, »local-dynamic« oder »global-dynamic« sein"
-#: c-common.c:5987 c-common.c:6043
-#, c-format
-msgid "`%s' attribute applies only to functions"
-msgstr "Attribut »%s« kann nur auf Funktionen angewandt werden"
+#: c-common.c:5005 c-common.c:5051
+msgid "%J'%E' attribute applies only to functions"
+msgstr "%JAttribut »%E« kann nur auf Funktionen angewandt werden"
-#: c-common.c:5994 c-common.c:6050
-#, c-format
-msgid "can't set `%s' attribute after definition"
-msgstr "Kann Attribut »%s« nicht nach der Definition setzen"
+#: c-common.c:5010 c-common.c:5056
+msgid "%Jcan't set '%E' attribute after definition"
+msgstr "%Jkann Attribut »%E« nicht nach der Definition setzen"
-#: c-common.c:6114
-msgid "cleanup arg not an identifier"
-msgstr "Argument für cleanup ist kein Bezeichner"
-
-#: c-common.c:6121
-msgid "cleanup arg not a function"
-msgstr "Argument für cleanup ist keine Funktion"
-
-#: c-common.c:6183
+#: c-common.c:5132
#, c-format
msgid "`%s' attribute ignored for `%s'"
msgstr "Attribut »%s« ignoriert für »%s«"
-#: c-common.c:6248
+#: c-common.c:5195
#, c-format
msgid "invalid vector type for attribute `%s'"
-msgstr "Ungültiger Vektortyp für Attribut »%s«"
+msgstr "ungültiger Vektortyp für Attribut »%s«"
-#: c-common.c:6272 c-common.c:6304
+#: c-common.c:5219 c-common.c:5251
msgid "no vector mode with the size and type specified could be found"
msgstr "Vektorzustand mit der angegebenen Größe und dem angegebenen Typ konnte nicht gefunden werden"
-#: c-common.c:6403
+#: c-common.c:5353
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "Nicht-Null-Attribut ohne Argumente für einen Nicht-Prototyp"
-#: c-common.c:6418
+#: c-common.c:5368
#, c-format
msgid "nonnull argument has invalid operand number (arg %lu)"
msgstr "Nicht-Null-Argument hat ungültige Operandenzahl (Argument %lu)"
-#: c-common.c:6437
+#: c-common.c:5387
#, c-format
msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
msgstr "Nicht-Null-Argument mit Operandenzahl außerhalb des Wertebereiches (Argument %lu, Operand %lu)"
-#: c-common.c:6445
+#: c-common.c:5395
#, c-format
msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
msgstr "Nicht-Null-Argument referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)"
-#: c-common.c:6531
+#: c-common.c:5475
#, c-format
msgid "null argument where non-null required (arg %lu)"
msgstr "Null-Argument, wo Nicht-Null erwartet (Argument %lu)"
-#: c-convert.c:80 c-typeck.c:988 c-typeck.c:4059 cp/typeck.c:1615
-#: cp/typeck.c:5939
-msgid "void value not ignored as it ought to be"
-msgstr "void-Wert nicht ignoriert wie es sein sollte"
-
-#: c-convert.c:112 java/typeck.c:150
-msgid "conversion to non-scalar type requested"
-msgstr "Konvertierung zu Nicht-Skalar-Typ verlangt"
-
-#: c-decl.c:340
-#, c-format
-msgid "array `%s' assumed to have one element"
-msgstr "Feld »%s« als einelementig betrachtet"
-
-#: c-decl.c:526
-#, c-format
-msgid "`struct %s' incomplete in scope ending here"
-msgstr "»struct %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+#: c-common.c:5546
+msgid "cleanup arg not an identifier"
+msgstr "Argument für cleanup ist kein Bezeichner"
-#: c-decl.c:529
-#, c-format
-msgid "`union %s' incomplete in scope ending here"
-msgstr "»union %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+#: c-common.c:5553
+msgid "cleanup arg not a function"
+msgstr "Argument für cleanup ist keine Funktion"
-#: c-decl.c:532
+#: c-common.c:5914
#, c-format
-msgid "`enum %s' incomplete in scope ending here"
-msgstr "»enum %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+msgid "%s at end of input"
+msgstr "%s am Ende der Eingabe"
-#: c-decl.c:646 c-decl.c:771 java/decl.c:1403
+#: c-common.c:5920
#, c-format
-msgid "label `%s' used but not defined"
-msgstr "Marke »%s« verwendet, aber nicht definiert"
+msgid "%s before %s'%c'"
+msgstr "%s vor %s'%c'"
-#: c-decl.c:652 c-decl.c:778 java/decl.c:1409
+#: c-common.c:5922
#, c-format
-msgid "label `%s' defined but not used"
-msgstr "Marke »%s« definiert aber nicht verwendet"
+msgid "%s before %s'\\x%x'"
+msgstr "%s vor %s'\\x%x'"
-#: c-decl.c:893 cp/decl.c:3335
+#: c-common.c:5926
#, c-format
-msgid "function `%s' redeclared as inline"
-msgstr "Funktion »%s« als inline redeklariert"
+msgid "%s before string constant"
+msgstr "%s vor Zeichenkettenkonstante"
-#: c-decl.c:895 cp/decl.c:3337
+#: c-common.c:5928
#, c-format
-msgid "previous declaration of function `%s' with attribute noinline"
-msgstr "Vorherige Deklaration der Funktion »%s« mit Attribut noinline"
+msgid "%s before numeric constant"
+msgstr "%s vor numerischer Konstante"
-#: c-decl.c:902 cp/decl.c:3344
+#: c-common.c:5930
#, c-format
-msgid "function `%s' redeclared with attribute noinline"
-msgstr "Funktion »%s« redeklariert mit Attribut noinline"
+msgid "%s before \"%s\""
+msgstr "%s vor \"%s\""
-#: c-decl.c:904 cp/decl.c:3346
+#: c-common.c:5932
#, c-format
-msgid "previous declaration of function `%s' was inline"
-msgstr "Vorherige Deklaration der Funktion »%s« war inline"
+msgid "%s before '%s' token"
+msgstr "%s vor »%s«"
-#: c-decl.c:933 c-decl.c:979
+#. Use `%s' to print the string in case there are any escape
+#. characters in the message.
+#: c-common.c:5934 c-typeck.c:2578 c-typeck.c:3970 c-typeck.c:3985
+#: c-typeck.c:4000 final.c:2776 final.c:2778 gcc.c:4574 rtl-error.c:109
+#: toplev.c:1340 config/cris/cris.c:545 cp/parser.c:1848 cp/typeck.c:4111
+#: java/expr.c:356 java/verify.c:1456 java/verify.c:1457 java/verify.c:1472
#, c-format
-msgid "shadowing built-in function `%s'"
-msgstr "Eingebaute Funktion »%s« überdeckt"
+msgid "%s"
+msgstr "%s"
-#: c-decl.c:935
-#, c-format
-msgid "shadowing library function `%s'"
-msgstr "Bibliotheksfunktion »%s« überdeckt"
+#: c-convert.c:82 c-typeck.c:1193 c-typeck.c:3410 cp/typeck.c:1337
+#: cp/typeck.c:5648 treelang/tree-convert.c:79
+msgid "void value not ignored as it ought to be"
+msgstr "void-Wert nicht ignoriert wie es sein sollte"
-#: c-decl.c:941
-#, c-format
-msgid "library function `%s' declared as non-function"
-msgstr "Bibliotheksfunktion »%s« als Nicht-Funktion deklariert"
+#: c-convert.c:114 java/typeck.c:148 treelang/tree-convert.c:105
+msgid "conversion to non-scalar type requested"
+msgstr "Konvertierung zu Nicht-Skalar-Typ verlangt"
-#: c-decl.c:945 c-decl.c:948
-#, c-format
-msgid "built-in function `%s' declared as non-function"
-msgstr "Eingebaute Funktion »%s« als Nicht-Funktion deklariert"
+#: c-decl.c:371
+msgid "%Jarray '%D' assumed to have one element"
+msgstr "%JFeld »%D« als einelementig betrachtet"
-#: c-decl.c:952 objc/objc-act.c:2384 objc/objc-act.c:6154
-#, c-format
-msgid "`%s' redeclared as different kind of symbol"
-msgstr "»%s« redeklariert als andere Symbolart"
+#: c-decl.c:580
+msgid "%Jlabel `%D' used but not defined"
+msgstr "%JMarke »%D« verwendet, aber nicht definiert"
-#: c-decl.c:953 c-decl.c:1144 c-decl.c:1158 c-decl.c:1165 c-decl.c:1310
-#: objc/objc-act.c:2386 objc/objc-act.c:6156 objc/objc-act.c:6211
-#, c-format
-msgid "previous declaration of `%s'"
-msgstr "Vorherige Deklaration von »%s«"
+#: c-decl.c:586
+msgid "%Jlabel `%D' defined but not used"
+msgstr "%JMarke »%D« definiert aber nicht verwendet"
-#. If types don't match for a built-in, throw away the built-in.
-#: c-decl.c:1048
-#, c-format
-msgid "conflicting types for built-in function `%s'"
-msgstr "In Konflikt stehende Typen für eingebaute Funktion »%s«"
+#: c-decl.c:588
+msgid "%Jlabel `%D' declared but not defined"
+msgstr "%JMarke »%D« deklariert, aber nicht definiert"
-#: c-decl.c:1091 c-decl.c:1110
-#, c-format
-msgid "conflicting types for `%s'"
-msgstr "In Konflikt stehende Typen für »%s«"
+#: c-decl.c:613
+msgid "%Junused variable `%D'"
+msgstr "%JVariable »%D« wird nicht verwendet"
-#: c-decl.c:1133
+#: c-decl.c:821
msgid "a parameter list with an ellipsis can't match an empty parameter name list declaration"
-msgstr "Eine Parameterliste mit Auslassung passt nicht zu einer leeren Parameternamenslistendeklaration"
+msgstr "eine Parameterliste mit Auslassung passt nicht zu einer leeren Parameternamenslistendeklaration"
-#: c-decl.c:1139
+#: c-decl.c:828
msgid "an argument type that has a default promotion can't match an empty parameter name list declaration"
-msgstr "Ein Argumenttyp mit Standard-promotion passt nicht zu leerer Parameternamenslistendeklaration"
-
-#: c-decl.c:1157
-#, c-format
-msgid "thread-local declaration of `%s' follows non thread-local declaration"
-msgstr "Thread-lokale Deklaration von »%s« folgt nicht-Thread-lokaler Deklaration"
+msgstr "ein Argumenttyp mit Standard-Promotion passt nicht zu leerer Parameternamenslistendeklaration"
+
+#: c-decl.c:864
+msgid "%Jprototype for '%D' declares more arguments than previous old-style definition"
+msgstr "%JPrototyp für »%D« deklariert mehr Argumente als vorherige Definition im alten Stil"
+
+#: c-decl.c:870
+msgid "%Jprototype for '%D' declares fewer arguments than previous old-style definition"
+msgstr "%JPrototyp für »%D« deklariert weniger Argumente als vorherige Definition im alten Stil"
+
+#: c-decl.c:879
+msgid "%Jprototype for '%D' declares arg %d with incompatible type"
+msgstr "%JPrototyp für »%D« deklariert Argument %d mit inkompatiblem Typen"
+
+#. If we get here, no errors were found, but do issue a warning
+#. for this poor-style construct.
+#: c-decl.c:891
+msgid "%Jprototype for '%D' follows non-prototype definition"
+msgstr "%JPrototyp für »%D« folgt einer Nicht-Prototyp-Definition"
+
+#: c-decl.c:906
+msgid "%Jprevious definition of '%D' was here"
+msgstr "%Jvorherige Definition von »%D« war hier"
+
+#: c-decl.c:908
+msgid "%Jprevious implicit declaration of '%D' was here"
+msgstr "%Jvorherige implizite Deklaration von »%D« war hier"
+
+#: c-decl.c:910
+msgid "%Jprevious declaration of '%D' was here"
+msgstr "%Jvorherige Deklaration von »%D« war hier"
+
+#: c-decl.c:944
+msgid "%J'%D' redeclared as different kind of symbol"
+msgstr "%J»%D« redeklariert als andere Symbolart"
-#: c-decl.c:1164
-#, c-format
-msgid "non thread-local declaration of `%s' follows thread-local declaration"
-msgstr "Nicht-Thread-lokale Deklaration von »%s« folgt Thread-lokaler Deklaration"
-
-#: c-decl.c:1175 c-decl.c:1198
-#, c-format
-msgid "redefinition of `%s'"
-msgstr "Redefinition von »%s«"
+#: c-decl.c:949
+msgid "%Jbuilt-in function '%D' declared as non-function"
+msgstr "%Jeingebaute Funktion »%D« als Nicht-Funktion deklariert"
-#: c-decl.c:1178
-#, c-format
-msgid "redeclaration of `%s'"
-msgstr "Redeklaration von »%s«"
+#: c-decl.c:952 c-decl.c:1042
+msgid "%Jshadowing built-in function '%D'"
+msgstr "%Jeingebaute Funktion »%D« überdeckt"
-#: c-decl.c:1181
-#, c-format
-msgid "conflicting declarations of `%s'"
-msgstr "In Konflikt stehende Deklarationen von »%s«"
+#. If types don't match for a built-in, throw away the
+#. built-in. No point in calling locate_old_decl here, it
+#. won't print anything.
+#: c-decl.c:972
+msgid "%Jconflicting types for built-in function '%D'"
+msgstr "%Jin Konflikt stehende Typen für eingebaute Funktion »%D«"
-#: c-decl.c:1225
-#, c-format
-msgid "prototype for `%s' follows"
-msgstr "Prototyp für »%s« folgt"
+#: c-decl.c:996 c-decl.c:1004
+msgid "%Jconflicting types for '%D'"
+msgstr "%Jin Konflikt stehende Typen für »%D«"
-#: c-decl.c:1226 c-decl.c:1234 c-decl.c:1245
-msgid "non-prototype definition here"
-msgstr "Nicht-Prototyp-Definition hier"
+#. allow OLDDECL to continue in use
+#: c-decl.c:1019
+msgid "%Jredefinition of typedef '%D'"
+msgstr "%JRedefinition des typedef »%D«"
-#: c-decl.c:1233
-#, c-format
-msgid "prototype for `%s' follows and number of arguments doesn't match"
-msgstr "Prototyp für »%s« folgt und Anzahl der Argumente passt nicht"
-
-#: c-decl.c:1243
-#, c-format
-msgid "prototype for `%s' follows and argument %d doesn't match"
-msgstr "Prototyp für »%s« folgt und Argument %d passt nicht"
-
-#: c-decl.c:1261
-#, c-format
-msgid "`%s' declared inline after being called"
-msgstr "»%s« als inline deklariert nachdem es aufgerufen wurde"
+#: c-decl.c:1055 c-decl.c:1119
+msgid "%Jredefinition of '%D'"
+msgstr "%JRedefinition von »%D«"
-#: c-decl.c:1267
-#, c-format
-msgid "`%s' declared inline after its definition"
-msgstr "»%s« nach der Definition als inline deklariert"
+#: c-decl.c:1086 c-decl.c:1136
+msgid "%Jstatic declaration of '%D' follows non-static declaration"
+msgstr "%Jstatische Deklaration von »%D« folgt Nicht-statischer Deklaration"
-#: c-decl.c:1274
-#, c-format
-msgid "static declaration for `%s' follows non-static"
-msgstr "Statische Deklaration für »%s« folgt Nicht-static"
+#: c-decl.c:1094 c-decl.c:1133
+msgid "%Jnon-static declaration of '%D' follows static declaration"
+msgstr "%JNicht-statische-Deklaration von »%D« folgt statischer Deklaration"
-#: c-decl.c:1282
-#, c-format
-msgid "non-static declaration for `%s' follows static"
-msgstr "Nicht-static-Deklaration für »%s« folgt static"
+#: c-decl.c:1106
+msgid "%Jthread-local declaration of '%D' follows non-thread-local declaration"
+msgstr "%JThread-lokale Deklaration von »%D« folgt nicht-Thread-lokaler Deklaration"
-#: c-decl.c:1289
-#, c-format
-msgid "const declaration for `%s' follows non-const"
-msgstr "const-Deklaration für »%s« folgt Nicht-const"
+#: c-decl.c:1109
+msgid "%Jnon-thread-local declaration of '%D' follows thread-local declaration"
+msgstr "%JNicht-Thread-lokale Deklaration von »%D« folgt Thread-lokaler Deklaration"
-#: c-decl.c:1296
-#, c-format
-msgid "type qualifiers for `%s' conflict with previous decl"
-msgstr "Typ-Kennzeichner für »%s« stehen in Konflikt mit vorheriger Deklaration"
+#: c-decl.c:1149
+msgid "%Jextern declaration of '%D' follows declaration with no linkage"
+msgstr "%Jextern-Deklaration von »%D« folgt Deklaration ohne Bindung"
-#: c-decl.c:1309
-#, c-format
-msgid "redundant redeclaration of `%s' in same scope"
-msgstr "Redundante Redeklaration von »%s« im selben Gültigkeitsbereich"
+#: c-decl.c:1152
+msgid "%Jdeclaration of '%D' with no linkage follows extern declaration"
+msgstr "%JDeklaration von »%D« ohne Bindung folgt einer externen Deklaration"
-#: c-decl.c:1619 java/decl.c:1102
-#, c-format
-msgid "declaration of `%s' shadows a parameter"
-msgstr "Deklaration von »%s« überdeckt einen Parameter"
+#: c-decl.c:1155
+msgid "%Jredeclaration of '%D' with no linkage"
+msgstr "%JRedeklarationen von »%D« ohne Bindung"
-#: c-decl.c:1622 java/decl.c:1105
-#, c-format
-msgid "declaration of `%s' shadows a symbol from the parameter list"
-msgstr "Deklaration von »%s« überdeckt ein Symbol aus der Parameterliste"
+#: c-decl.c:1169
+msgid "%Jredeclaration of '%D' with different visibility (old visibility preserved)"
+msgstr "%JRedeklaration von »%D« mit anderer Sichtbarkeit (alte Sichtbarkeit beibehalten)"
-#: c-decl.c:1643 cp/decl.c:4479
-msgid "a parameter"
-msgstr "Ein Parameter"
+#: c-decl.c:1180
+msgid "%Jinline declaration of '%D' follows declaration with attribute noinline"
+msgstr "%Jinline-Deklaration von »%D« folgt Deklaration mit Attribut noinline"
-#: c-decl.c:1645 cp/decl.c:4496
-msgid "a previous local"
-msgstr "Ein vorheriges »local«"
+#: c-decl.c:1187
+msgid "%Jdeclaration of '%D' with attribute noinline follows inline declaration "
+msgstr "%JDeklaration von »%D« mit Attribut noinline folgt inline-Deklaration "
-#. XXX shadow warnings in outer-more namespaces
-#: c-decl.c:1649 cp/decl.c:4500
-msgid "a global declaration"
-msgstr "Eine globale Deklaration"
+#: c-decl.c:1199
+msgid "%J'%D' declared inline after being called"
+msgstr "%J»%D« als inline deklariert nachdem es aufgerufen wurde"
-#: c-decl.c:1693
-#, c-format
-msgid "nested extern declaration of `%s'"
-msgstr "Geschachtelte extern-Deklaration von »%s«"
+#: c-decl.c:1205
+msgid "%J'%D' declared inline after its definition"
+msgstr "%J»%D« nach der Definition als inline deklariert"
-#: c-decl.c:1712 java/decl.c:1055
-#, c-format
-msgid "`%s' used prior to declaration"
-msgstr "»%s« bereits vor Deklaration benutzt"
+#: c-decl.c:1217
+msgid "%Jvolatile declaration of '%D' follows non-volatile declaration"
+msgstr "%J»volatile«-Deklaration von »%D« folgt nicht-»volatile«-Deklaration"
-#: c-decl.c:1726 c-decl.c:1901
-#, c-format
-msgid "`%s' was declared implicitly `extern' and later `static'"
-msgstr "»%s« wurde implizit als »extern« und später als »static« deklariert"
+#: c-decl.c:1220
+msgid "%Jnon-volatile declaration of '%D' follows volatile declaration"
+msgstr "%JNicht-»volatile«-Deklaration von »%D« folgt »volatile«-Deklaration"
-#: c-decl.c:1829 cp/decl.c:4336
-msgid "type mismatch with previous external decl"
-msgstr "Typen passen nicht zu vorheriger externer Deklaration"
+#: c-decl.c:1227
+msgid "%Jconst declaration of '%D' follows non-const declaration"
+msgstr "%Jconst-Deklaration für »%D« folgt Nicht-const Deklaration"
-#: c-decl.c:1830
-#, c-format
-msgid "previous external decl of `%s'"
-msgstr "Vorherige externe Deklaration von »%s«"
+#: c-decl.c:1230
+msgid "%Jnon-const declaration of '%D' follows const declaration"
+msgstr "%JNicht-const-Deklaration von »%D« folgt const-Deklaration"
-#: c-decl.c:1843
-msgid "type mismatch with previous implicit declaration"
-msgstr "Typen passen nicht zu vorheriger impliziter Deklaration"
+#: c-decl.c:1246
+msgid "%Jredundant redeclaration of '%D'"
+msgstr "%Jredundante Redeklaration von »%D«"
-#: c-decl.c:1845
+#: c-decl.c:1690
#, c-format
-msgid "previous implicit declaration of `%s'"
-msgstr "Vorherige implizite Deklaration von »%s«"
+msgid "nested extern declaration of `%s'"
+msgstr "geschachtelte extern-Deklaration von »%s«"
-#: c-decl.c:1880
-#, c-format
-msgid "`%s' was previously implicitly declared to return `int'"
-msgstr "»%s« wurde bereits implizit deklariert, »int« zurückzugeben"
+#: c-decl.c:1829 objc/objc-act.c:2534 objc/objc-act.c:6793
+msgid "%Jprevious declaration of '%D'"
+msgstr "%Jvorherige Deklaration von »%D«"
-#: c-decl.c:1905
+#: c-decl.c:1870 c-decl.c:1872
#, c-format
-msgid "`%s' was declared `extern' and later `static'"
-msgstr "»%s« wurde »extern« deklariert und später »static«"
+msgid "implicit declaration of function `%s'"
+msgstr "implizite Deklaration der Funktion »%s«"
-#: c-decl.c:1929
+#: c-decl.c:1888
#, c-format
-msgid "extern declaration of `%s' doesn't match global one"
-msgstr "extern-Deklaration von »%s« passt nicht zu globaler Deklaration"
+msgid "`%s' undeclared here (not in a function)"
+msgstr "»%s« ist hier nicht deklariert (nicht in einer Funktion)"
-#: c-decl.c:1971
+#: c-decl.c:1894
#, c-format
-msgid "`%s' locally external but globally static"
-msgstr "»%s« ist lokal extern, aber global »static«"
+msgid "`%s' undeclared (first use in this function)"
+msgstr "»%s« nicht deklariert (erste Benutzung in dieser Funktion)"
-#: c-decl.c:2095
-#, c-format
-msgid "function `%s' was previously declared within a block"
-msgstr "Funktion »%s« wurde bereits innerhalb eines Blockes deklariert"
+#: c-decl.c:1899
+msgid "(Each undeclared identifier is reported only once"
+msgstr "(Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt"
-#: c-decl.c:2115 c-decl.c:2117
-#, c-format
-msgid "implicit declaration of function `%s'"
-msgstr "Implizite Deklaration der Funktion »%s«"
+#: c-decl.c:1900
+msgid "for each function it appears in.)"
+msgstr "für jede Funktion in der er auftritt.)"
-#: c-decl.c:2196
+#: c-decl.c:1953
#, c-format
msgid "label %s referenced outside of any function"
msgstr "Marke %s außerhalb einer Funktion referenziert"
-#: c-decl.c:2253
+#: c-decl.c:2000
#, c-format
msgid "duplicate label declaration `%s'"
-msgstr "Doppelte Markendeklaration »%s«"
+msgstr "doppelte Markendeklaration »%s«"
+
+#: c-decl.c:2001
+msgid "%Jthis is a previous declaration"
+msgstr "%Jdies ist eine vorherige Deklaration"
+
+#: c-decl.c:2036
+msgid "%Hduplicate label `%D'"
+msgstr "%Hdoppelte Marke »%D«"
-#: c-decl.c:2256
-msgid "this is a previous declaration"
-msgstr "Dies ist eine vorherige Deklaration"
+#: c-decl.c:2038
+msgid "%J`%D' previously defined here"
+msgstr "%J»%D« bereits hier definiert"
-#: c-decl.c:2679
+#: c-decl.c:2040
+msgid "%J`%D' previously declared here"
+msgstr "%J»%D« bereits hier deklariert"
+
+#: c-decl.c:2060
+msgid "%Htraditional C lacks a separate namespace for labels, identifier `%s' conflicts"
+msgstr "%Htraditionelles C bietet keinen separaten Namespace für Marken an, Bezeichner »%s« steht in Konflikt"
+
+#: c-decl.c:2131
+msgid "%H`%s' defined as wrong kind of tag"
+msgstr "%H»%s« definiert als falsche Symbolart"
+
+#: c-decl.c:2369
msgid "unnamed struct/union that defines no instances"
-msgstr "Unbenannte struct/union, die keine Instanzen definiert"
+msgstr "unbenannte struct/union, die keine Instanzen definiert"
-#: c-decl.c:2698
+#: c-decl.c:2388
msgid "useless keyword or type name in empty declaration"
-msgstr "Nutzloses Schlüsselwort oder Typenname in leerer Deklaration"
+msgstr "nutzloses Schlüsselwort oder Typenname in leerer Deklaration"
-#: c-decl.c:2705
+#: c-decl.c:2395
msgid "two types specified in one empty declaration"
-msgstr "Zwei Typen in einer leeren Deklaration angegeben"
+msgstr "zwei Typen in einer leeren Deklaration angegeben"
-#: c-decl.c:2710 c-parse.y:753 c-parse.y:755 parse.y:766 parse.y:1853
-#: objc-parse.y:799 objc-parse.y:801 objc-parse.y:3042
+#: c-decl.c:2400 c-parse.y:735 c-parse.y:737 objc/objc-parse.y:776
+#: objc/objc-parse.y:778 objc/objc-parse.y:3016
msgid "empty declaration"
msgstr "leere Deklaration"
-#: c-decl.c:2740
+#: c-decl.c:2426
msgid "ISO C90 does not support `static' or type qualifiers in parameter array declarators"
msgstr "ISO-C90 unterstützt kein »static« oder Typkennzeichner in Parameterfelddeklaratoren"
-#: c-decl.c:2742
+#: c-decl.c:2428
msgid "ISO C90 does not support `[*]' array declarators"
msgstr "ISO-C90 unterstützt nicht »[*]«-Felddeklaratoren"
-#: c-decl.c:2745
+#: c-decl.c:2431
msgid "GCC does not yet properly implement `[*]' array declarators"
-msgstr "GCC implementiert nocht keine richtigen »[*]«-Felddeklaratoren"
+msgstr "GCC implementiert noch keine richtigen »[*]«-Felddeklaratoren"
-#: c-decl.c:2764
+#: c-decl.c:2447
msgid "static or type qualifiers in abstract declarator"
msgstr "static oder Typkennzeichner in abstraktem Deklarator"
-#: c-decl.c:2838
-#, c-format
-msgid "`%s' is usually a function"
-msgstr "»%s« ist üblicherweise eine Funktion"
+#: c-decl.c:2517
+msgid "%J'%D' is usually a function"
+msgstr "%J»%D« ist üblicherweise eine Funktion"
-#: c-decl.c:2847
+#: c-decl.c:2526
#, c-format
msgid "typedef `%s' is initialized (use __typeof__ instead)"
msgstr "typedef »%s« ist initialisiert (benutzen Sie stattdessen __typeof__)"
-#: c-decl.c:2853
+#: c-decl.c:2532
#, c-format
msgid "function `%s' is initialized like a variable"
msgstr "Funktion »%s« ist wie eine Variable initialisiert"
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:2860
+#: c-decl.c:2539
#, c-format
msgid "parameter `%s' is initialized"
msgstr "Parameter »%s« ist initialisiert"
-#: c-decl.c:2880 c-typeck.c:4895
+#: c-decl.c:2559 c-typeck.c:4220
msgid "variable-sized object may not be initialized"
msgstr "Objekt variabler Größe darf nicht initialisiert werden"
-#: c-decl.c:2886
+#: c-decl.c:2565
#, c-format
msgid "variable `%s' has initializer but incomplete type"
-msgstr "Variable »%s« hat Initialisierung aber unvollständigen Typ"
+msgstr "Variable »%s« hat Initialisierung, aber unvollständigen Typ"
-#: c-decl.c:2892
+#: c-decl.c:2571
#, c-format
msgid "elements of array `%s' have incomplete type"
msgstr "Elemente des Feldes »%s« haben unvollständigen Typ"
-#: c-decl.c:2905
-#, c-format
-msgid "declaration of `%s' has `extern' and is initialized"
-msgstr "Deklaration von »%s« hat »extern« und ist initialisiert"
+#: c-decl.c:2640 c-decl.c:5426 cp/decl.c:3748 cp/decl.c:10156
+msgid "%Jinline function '%D' given attribute noinline"
+msgstr "%Jinline-Funktion »%D« wurde das Attribut »noinline« gegeben"
-#: c-decl.c:2954 c-decl.c:5828 cp/decl.c:7760 cp/decl.c:14339
-#, c-format
-msgid "inline function `%s' given attribute noinline"
-msgstr "inline-Funktion »%s« wurde das Attribut »noinline« gegeben"
+#: c-decl.c:2716
+msgid "%Jinitializer fails to determine size of '%D'"
+msgstr "%JInitialisierung scheitert an Größenbestimmung von »%D«"
+
+#: c-decl.c:2721
+msgid "%Jarray size missing in '%D'"
+msgstr "%JFeldgröße in »%D« fehlt"
+
+#: c-decl.c:2737
+msgid "%Jzero or negative size array '%D'"
+msgstr "%JFeldgröße von »%D« ist null oder negativ"
+
+#: c-decl.c:2765
+msgid "%Jstorage size of '%D' isn't known"
+msgstr "%JSpeichergröße von »%D« ist unbekannt"
+
+#: c-decl.c:2775
+msgid "%Jstorage size of '%D' isn't constant"
+msgstr "%JSpeichergröße von »%D« ist nicht konstant"
+
+#: c-decl.c:2858
+msgid "%Jignoring asm-specifier for non-static local variable '%D'"
+msgstr "%Jasm-Symbol für nicht-statische lokale Variable »%D« wird ignoriert"
-#: c-decl.c:3028
+#: c-decl.c:2969
+msgid "ISO C forbids forward parameter declarations"
+msgstr "ISO-C verbietet Vorwärtsdeklaration für Parameter"
+
+#: c-decl.c:3151
+msgid "<anonymous>"
+msgstr "<anonym>"
+
+#: c-decl.c:3160
#, c-format
-msgid "initializer fails to determine size of `%s'"
-msgstr "Initialisierung scheitert an Größenbestimmung von »%s«"
+msgid "bit-field `%s' width not an integer constant"
+msgstr "Breite des Bitfeldes »%s« ist keine Ganzzahlkonstante"
-#: c-decl.c:3033
+#: c-decl.c:3168
#, c-format
-msgid "array size missing in `%s'"
-msgstr "Feldgröße in »%s« fehlt"
+msgid "negative width in bit-field `%s'"
+msgstr "negative Breite in Bitfeld »%s«"
-#: c-decl.c:3049
+#: c-decl.c:3173
#, c-format
-msgid "zero or negative size array `%s'"
-msgstr "Feldgröße von »%s« ist null oder negativ"
+msgid "zero width for bit-field `%s'"
+msgstr "Breite null für Bitfeld »%s«"
-#: c-decl.c:3077
+#: c-decl.c:3183
#, c-format
-msgid "storage size of `%s' isn't known"
-msgstr "Speichergröße von »%s« unbekannt"
+msgid "bit-field `%s' has invalid type"
+msgstr "Bitfeld »%s« hat ungültigen Typen"
-#: c-decl.c:3087
+#: c-decl.c:3192
#, c-format
-msgid "storage size of `%s' isn't constant"
-msgstr "Speichergröße von »%s« unbekannt"
+msgid "type of bit-field `%s' is a GCC extension"
+msgstr "der Typ des Bitfeldes »%s« ist eine Erweiterung des GCC"
-#: c-decl.c:3147
+#: c-decl.c:3201
#, c-format
-msgid "ignoring asm-specifier for non-static local variable `%s'"
-msgstr "Ignoriere asm-Symbol für lokale Nicht-static Variable »%s«"
+msgid "width of `%s' exceeds its type"
+msgstr "Breite von »%s« überschreitet dessen Typen"
-#: c-decl.c:3247
+#: c-decl.c:3211
#, c-format
-msgid "ISO C forbids parameter `%s' shadowing typedef"
-msgstr "ISO-C verbietet typedef verdeckenden Parameter »%s«"
+msgid "`%s' is narrower than values of its type"
+msgstr "»%s« ist schmaler als die Werte seines Typs"
-#: c-decl.c:3592 cp/decl.c:10880
+#: c-decl.c:3361 cp/decl.c:6778
msgid "`long long long' is too long for GCC"
msgstr "»long long long« ist für GCC zu lang"
-#: c-decl.c:3597
+#: c-decl.c:3366
msgid "ISO C90 does not support `long long'"
msgstr "ISO-C90 unterstützt nicht »long long«"
-#: c-decl.c:3606 c-decl.c:3609 cp/decl.c:10885
+#: c-decl.c:3375 c-decl.c:3378 cp/decl.c:6783
#, c-format
msgid "duplicate `%s'"
-msgstr "Doppeltes »%s«"
+msgstr "doppeltes »%s«"
-#: c-decl.c:3619 cp/decl.c:10892
+#: c-decl.c:3388 cp/decl.c:6789
msgid "`__thread' before `extern'"
msgstr "»__thread« vor »extern«"
-#: c-decl.c:3621 cp/decl.c:10894
+#: c-decl.c:3390 cp/decl.c:6791
msgid "`__thread' before `static'"
msgstr "»__thread« vor »static«"
-#: c-decl.c:3629 cp/decl.c:10921
+#: c-decl.c:3398 cp/decl.c:6818
#, c-format
msgid "two or more data types in declaration of `%s'"
-msgstr "Zwei oder mehr Datentypen in Deklaration von »%s«"
+msgstr "zwei oder mehr Datentypen in Deklaration von »%s«"
-#: c-decl.c:3649 cp/decl.c:10926
+#: c-decl.c:3418 cp/decl.c:6823
#, c-format
msgid "`%s' fails to be a typedef or built in type"
msgstr "»%s« ist kein typedef oder eingebauter Typ"
-#: c-decl.c:3688
+#: c-decl.c:3457
#, c-format
msgid "type defaults to `int' in declaration of `%s'"
msgstr "»int« ist Standardtyp in Deklaration von »%s«"
-#: c-decl.c:3717
+#: c-decl.c:3486
#, c-format
msgid "both long and short specified for `%s'"
-msgstr "Sowohl »long« als auch »short« für »%s« angegeben"
+msgstr "sowohl »long« als auch »short« für »%s« angegeben"
-#: c-decl.c:3721 cp/decl.c:11041
+#: c-decl.c:3490 cp/decl.c:6923
#, c-format
msgid "long or short specified with char for `%s'"
msgstr "»long« oder »short« mit »char« für »%s« angegeben"
-#: c-decl.c:3728 cp/decl.c:11045
+#: c-decl.c:3497 cp/decl.c:6927
#, c-format
msgid "long or short specified with floating type for `%s'"
-msgstr "»long« oder »short« mit Fließkommatyp für »%s« angegeben"
+msgstr "»long« oder »short« mit Gleitkommatyp für »%s« angegeben"
-#: c-decl.c:3731
+#: c-decl.c:3500
msgid "the only valid combination is `long double'"
-msgstr "Die einzig gültige Kombination ist »long double«"
+msgstr "die einzig gültige Kombination ist »long double«"
-#: c-decl.c:3737
+#: c-decl.c:3506
#, c-format
msgid "both signed and unsigned specified for `%s'"
-msgstr "Sowohl »signed« als auch »unsigned« für »%s« angegeben"
+msgstr "sowohl »signed« als auch »unsigned« für »%s« angegeben"
-#: c-decl.c:3739 cp/decl.c:11034
+#: c-decl.c:3508 cp/decl.c:6916
#, c-format
msgid "long, short, signed or unsigned invalid for `%s'"
msgstr "long, short, signed oder unsigned ist ungültig für »%s«"
-#: c-decl.c:3745 cp/decl.c:11054
+#: c-decl.c:3514 cp/decl.c:6936
#, c-format
msgid "long, short, signed or unsigned used invalidly for `%s'"
msgstr "long, short, signed oder unsigned ungültig verwendet für »%s«"
-#: c-decl.c:3763 cp/decl.c:11075
+#: c-decl.c:3532 cp/decl.c:6957
#, c-format
msgid "complex invalid for `%s'"
msgstr "complex ungültig für »%s«"
-#: c-decl.c:3805
+#: c-decl.c:3574
msgid "ISO C90 does not support complex types"
msgstr "ISO-C90 unterstützt nicht komplexe Typen"
-#: c-decl.c:3817
+#: c-decl.c:3586
msgid "ISO C does not support plain `complex' meaning `double complex'"
msgstr "ISO-C unterstützt nicht »double complex« bedeutendes »complex«"
-#: c-decl.c:3823 c-decl.c:3835
+#: c-decl.c:3592 c-decl.c:3604
msgid "ISO C does not support complex integer types"
msgstr "ISO-C unterstützt keine komplexen Ganzzahltypen"
-#: c-decl.c:3850 c-decl.c:4316 cp/decl.c:11688
+#: c-decl.c:3632 c-decl.c:4090 cp/decl.c:7549
msgid "duplicate `const'"
-msgstr "Doppeltes »const«"
+msgstr "doppeltes »const«"
-#: c-decl.c:3852 c-decl.c:4320 cp/decl.c:11692
+#: c-decl.c:3634 c-decl.c:4094 cp/decl.c:7553
msgid "duplicate `restrict'"
-msgstr "Doppeltes »restrict«"
+msgstr "doppeltes »restrict«"
-#: c-decl.c:3854 c-decl.c:4318 cp/decl.c:11690
+#: c-decl.c:3636 c-decl.c:4092 cp/decl.c:7551
msgid "duplicate `volatile'"
-msgstr "Doppeltes »volatile«"
+msgstr "doppeltes »volatile«"
-#: c-decl.c:3882 cp/decl.c:11238
+#: c-decl.c:3664 cp/decl.c:7120
#, c-format
msgid "multiple storage classes in declaration of `%s'"
-msgstr "Mehrere Speicherklassen in Deklaration von »%s«"
+msgstr "mehrere Speicherklassen in Deklaration von »%s«"
-#: c-decl.c:3892
+#: c-decl.c:3674
msgid "function definition declared `auto'"
msgstr "Funktionsdefinition deklarierte »auto«"
-#: c-decl.c:3894
+#: c-decl.c:3676
msgid "function definition declared `register'"
msgstr "Funktionsdefinition deklarierte »register«"
-#: c-decl.c:3896
+#: c-decl.c:3678
msgid "function definition declared `typedef'"
msgstr "Funktionsdefinition deklarierte »typedef«"
-#: c-decl.c:3898
+#: c-decl.c:3680
msgid "function definition declared `__thread'"
msgstr "Funktionsdefinition deklarierte »__thread«"
-#: c-decl.c:3911
+#: c-decl.c:3693
#, c-format
msgid "storage class specified for structure field `%s'"
msgstr "Speicherklasse für Strukturfeld »%s« angegeben"
-#: c-decl.c:3915 cp/decl.c:11285
+#: c-decl.c:3697 cp/decl.c:7165
#, c-format
msgid "storage class specified for parameter `%s'"
msgstr "Speicherklasse für Parameter »%s« angegeben"
-#: c-decl.c:3918 cp/decl.c:11287
+#: c-decl.c:3700 cp/decl.c:7167
msgid "storage class specified for typename"
msgstr "Speicherklasse für Typnamen angegeben"
-#: c-decl.c:3930 cp/decl.c:11302
+#: c-decl.c:3712 cp/decl.c:7182
#, c-format
msgid "`%s' initialized and declared `extern'"
msgstr "»%s« initialisiert und als »extern« deklariert"
-#: c-decl.c:3932 cp/decl.c:11305
+#: c-decl.c:3714 cp/decl.c:7185
#, c-format
msgid "`%s' has both `extern' and initializer"
msgstr "»%s« hat sowohl »extern« als auch Initialisierung"
-#: c-decl.c:3937 cp/decl.c:11313
+#: c-decl.c:3719
#, c-format
-msgid "top-level declaration of `%s' specifies `auto'"
-msgstr "Deklaration höchster Ebene von »%s« spezifiziert »auto«"
+msgid "file-scope declaration of `%s' specifies `auto'"
+msgstr "Deklaration von »%s« in Datei-Sichtbarkeitsbereich spezifiziert »auto«"
-#: c-decl.c:3942 cp/decl.c:11309
+#: c-decl.c:3724 cp/decl.c:7189
#, c-format
msgid "nested function `%s' declared `extern'"
-msgstr "Geschachtelte Funktion »%s« als »extern« deklariert"
+msgstr "geschachtelte Funktion »%s« als »extern« deklariert"
-#: c-decl.c:3948 cp/decl.c:11319
+#: c-decl.c:3730 cp/decl.c:7199
#, c-format
msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgstr "Funktions-Gültigkeitsbereich »%s« ist implizit auto und deklarierte »__thread«"
@@ -1062,4254 +1088,3969 @@ msgstr "Funktions-Gültigkeitsbereich »%s« ist implizit auto und deklarierte Â
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
-#: c-decl.c:3987 c-decl.c:4188
+#: c-decl.c:3769 c-decl.c:3962
msgid "static or type qualifiers in non-parameter array declarator"
msgstr "»static« oder Typkennzeichner in Nicht-Parameter-Felddeklarator"
-#: c-decl.c:4031
+#: c-decl.c:3813
#, c-format
msgid "declaration of `%s' as array of voids"
msgstr "Deklaration von »%s« als Feld von voids"
-#: c-decl.c:4037
+#: c-decl.c:3819
#, c-format
msgid "declaration of `%s' as array of functions"
msgstr "Deklaration von »%s« als Feld von Funtionen"
-#: c-decl.c:4042 c-decl.c:5332
+#: c-decl.c:3824
msgid "invalid use of structure with flexible array member"
-msgstr "Ungültige Verwendung einer Struktur mit flexiblem Feld"
+msgstr "ungültige Verwendung einer Struktur mit flexiblem Feldelement"
-#: c-decl.c:4061
+#: c-decl.c:3843
#, c-format
msgid "size of array `%s' has non-integer type"
msgstr "Feldgröße von »%s« hat Nicht-Ganzzahltyp"
-#: c-decl.c:4066
+#: c-decl.c:3848
#, c-format
msgid "ISO C forbids zero-size array `%s'"
msgstr "ISO-C verbietet Feld »%s« der Größe null"
-#: c-decl.c:4073
+#: c-decl.c:3855
#, c-format
msgid "size of array `%s' is negative"
msgstr "Feldgröße von »%s« ist negativ"
-#: c-decl.c:4086
+#: c-decl.c:3868
#, c-format
msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
msgstr "ISO-C90 verbietet Feld »%s«, dessen Größe nicht ausgewertet werden kann"
-#: c-decl.c:4089
+#: c-decl.c:3871
#, c-format
msgid "ISO C90 forbids variable-size array `%s'"
msgstr "ISO-C90 verbietet Feld »%s« variabler Größe"
-#: c-decl.c:4119 c-decl.c:4342 cp/decl.c:11897
+#: c-decl.c:3901 c-decl.c:4116 cp/decl.c:7723
#, c-format
msgid "size of array `%s' is too large"
msgstr "Feldgröße von »%s« ist zu groß"
-#: c-decl.c:4145
+#: c-decl.c:3927
msgid "ISO C90 does not support flexible array members"
-msgstr "ISO-C90 unterstützt keine flexiblen Felder als Mitglied"
+msgstr "ISO-C90 unterstützt keine flexiblen Felder als Elemente"
-#: c-decl.c:4155
+#: c-decl.c:3937
msgid "array type has incomplete element type"
msgstr "Feldtyp hat unvollständigen Elementtypen"
-#: c-decl.c:4162 c-decl.c:4392
-msgid "ISO C forbids const or volatile function types"
-msgstr "ISO-C verbietet const oder volatile Funktionstypen"
-
-#: c-decl.c:4208 cp/decl.c:11445
+#: c-decl.c:3982 cp/decl.c:7320
#, c-format
msgid "`%s' declared as function returning a function"
msgstr "»%s« als Funktion, die eine Funktion zurückgibt, deklariert"
-#: c-decl.c:4213 cp/decl.c:11450
+#: c-decl.c:3987 cp/decl.c:7325
#, c-format
msgid "`%s' declared as function returning an array"
msgstr "»%s« als Funktion, die ein Feld zurückgibt, deklariert"
-#: c-decl.c:4241
+#: c-decl.c:4015
msgid "ISO C forbids qualified void function return type"
msgstr "ISO-C verbietet qualifiziertes void als Funktions-Rückgabetypen"
-#: c-decl.c:4245
+#: c-decl.c:4019
msgid "type qualifiers ignored on function return type"
msgstr "Typkennzeichner ignoriert an Funktions-Rückgabewert"
-#: c-decl.c:4274 c-decl.c:4357 c-decl.c:4481 c-decl.c:4573
+#: c-decl.c:4048 c-decl.c:4131 c-decl.c:4255 c-decl.c:4341
msgid "ISO C forbids qualified function types"
msgstr "ISO-C verbietet qualifizierte Funktionstypen"
-#: c-decl.c:4314 cp/decl.c:11684
+#: c-decl.c:4088 cp/decl.c:7545
msgid "invalid type modifier within pointer declarator"
-msgstr "Ungültiger Typmodifizierer innerhalb Zeigerdeklarator"
+msgstr "ungültiger Typmodifizierer innerhalb Zeigerdeklarator"
-#: c-decl.c:4412 cp/decl.c:12182
+#: c-decl.c:4166
+msgid "ISO C forbids const or volatile function types"
+msgstr "ISO-C verbietet const- oder volatile-Funktionstypen"
+
+#: c-decl.c:4186 cp/decl.c:8005
#, c-format
msgid "variable or field `%s' declared void"
msgstr "Variable oder Feld »%s« als »void« deklariert"
-#: c-decl.c:4445
+#: c-decl.c:4219
msgid "attributes in parameter array declarator ignored"
-msgstr "Attribute in Parameterfeld ignoriert"
+msgstr "Attribute in Parameterfelddeklarator ignoriert"
-#: c-decl.c:4470
+#: c-decl.c:4244
msgid "invalid type modifier within array declarator"
-msgstr "Ungültiger Typmodifizierer in Felddeklarator"
+msgstr "ungültiger Typmodifizierer in Felddeklarator"
-#: c-decl.c:4515
+#: c-decl.c:4289
#, c-format
msgid "field `%s' declared as a function"
msgstr "Feld »%s« als Funktion deklariert"
-#: c-decl.c:4521
+#: c-decl.c:4295
#, c-format
msgid "field `%s' has incomplete type"
msgstr "Feld »%s« hat unvollständigen Typen"
-#: c-decl.c:4553 c-decl.c:4555 c-decl.c:4557 c-decl.c:4564
+#: c-decl.c:4321 c-decl.c:4323 c-decl.c:4325 c-decl.c:4332
#, c-format
msgid "invalid storage class for function `%s'"
-msgstr "Ungültige Speicherklasse für Funktion »%s«"
+msgstr "ungültige Speicherklasse für Funktion »%s«"
-#: c-decl.c:4579
+#: c-decl.c:4347
msgid "`noreturn' function returns non-void value"
msgstr "»noreturn«-Funktion gibt nicht-void-Wert zurück"
-#: c-decl.c:4594
+#: c-decl.c:4362
msgid "cannot inline function `main'"
msgstr "»main« ist nicht als »inline« möglich"
-#: c-decl.c:4649
-#, c-format
-msgid "variable `%s' declared `inline'"
-msgstr "Variable »%s« als »inline« deklariert"
+#: c-decl.c:4415
+msgid "variable previously declared `static' redeclared `extern'"
+msgstr "als »extern« redeklarierte Variable war bereits als »static« deklariert"
+
+#: c-decl.c:4424
+msgid "%Jvariable '%D' declared `inline'"
+msgstr "%JVariable »%D« als »inline« deklariert"
#. A mere warning is sure to result in improper semantics
#. at runtime. Don't bother to allow this to compile.
-#: c-decl.c:4677 cp/decl.c:9951
+#: c-decl.c:4452 cp/decl.c:5877
msgid "thread-local storage not supported for this target"
msgstr "Thread-lokaler Speicher wird für dieses Ziel nicht unterstützt"
-#: c-decl.c:4732 c-decl.c:5880
+#: c-decl.c:4513 c-decl.c:5470
msgid "function declaration isn't a prototype"
msgstr "Funktionsdeklaration ist kein Prototyp"
-#: c-decl.c:4738
+#: c-decl.c:4519
msgid "parameter names (without types) in function declaration"
msgstr "Parameternamen (ohne Typen) in Funktionsdeklaration"
-#: c-decl.c:4770 c-decl.c:6250
+#: c-decl.c:4547
#, c-format
msgid "parameter `%s' has incomplete type"
msgstr "Parameter »%s« hat unvollständigen Typen"
-#: c-decl.c:4773
+#: c-decl.c:4550
msgid "parameter has incomplete type"
msgstr "Parameter hat unvollständigen Typen"
-#: c-decl.c:4794
-#, c-format
-msgid "parameter `%s' points to incomplete type"
-msgstr "Parameter »%s« zeigt auf unvollständigen Typen"
-
-#: c-decl.c:4797
-msgid "parameter points to incomplete type"
-msgstr "Parameter zeigt auf unvollständigen Typen"
+#: c-decl.c:4599
+msgid "\"void\" as only parameter may not be qualified"
+msgstr "\"void\" kann als einziger Parameter nicht qualifiziert werden"
-#: c-decl.c:4862
-#, c-format
-msgid "parameter `%s' has just a forward declaration"
-msgstr "Parameter »%s« hat nur eine Vorwärtsdeklaration"
+#: c-decl.c:4620
+msgid "\"void\" must be the only parameter"
+msgstr "\"void\" muss der einzige Parameter sein"
-#: c-decl.c:4903
-msgid "`void' in parameter list must be the entire list"
-msgstr "»void« in Parameterliste muss die gesamte Liste sein"
+#: c-decl.c:4637
+msgid "%Jparameter \"%D\" has just a forward declaration"
+msgstr "%JParameter »%D« hat nur eine Vorwärtsdeklaration"
-#: c-decl.c:4934
+#. The first %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:4665
#, c-format
-msgid "`struct %s' declared inside parameter list"
-msgstr "»struct %s« innerhalb Parameterliste deklariert"
+msgid "\"%s %s\" declared inside parameter list"
+msgstr "\"%s %s\" innerhalb Parameterliste deklariert"
-#: c-decl.c:4937
+#. The %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:4669
#, c-format
-msgid "`union %s' declared inside parameter list"
-msgstr "»union %s« innerhalb Parameterliste deklariert"
+msgid "anonymous %s declared inside parameter list"
+msgstr "anonymes %s innerhalb Parameterliste deklariert"
-#: c-decl.c:4940
-#, c-format
-msgid "`enum %s' declared inside parameter list"
-msgstr "»enum %s« innerhalb Parameterliste deklariert"
-
-#: c-decl.c:4947
-msgid "anonymous struct declared inside parameter list"
-msgstr "Anonymes »struct« innerhalb Parameterliste deklariert"
-
-#: c-decl.c:4949
-msgid "anonymous union declared inside parameter list"
-msgstr "Anonymes »union« innerhalb Parameterliste deklariert"
-
-#: c-decl.c:4951
-msgid "anonymous enum declared inside parameter list"
-msgstr "Anonymes »enum« innerhalb Parameterliste deklariert"
-
-#: c-decl.c:4955
+#: c-decl.c:4673
msgid "its scope is only this definition or declaration, which is probably not what you want"
-msgstr "Sein Gültigkeitsbereich umfasst nur diese Definition bzw. Deklaration, was Sie wahrscheinlich nicht wollten"
+msgstr "sein Gültigkeitsbereich umfasst nur diese Definition bzw. Deklaration, was Sie wahrscheinlich nicht wollten"
-#: c-decl.c:5032
+#: c-decl.c:4758
#, c-format
msgid "redefinition of `union %s'"
msgstr "Redefinition von »union %s«"
-#: c-decl.c:5034
+#: c-decl.c:4760
#, c-format
msgid "redefinition of `struct %s'"
msgstr "Redefinition von »struct %s«"
-#: c-decl.c:5105 cp/decl.c:7532
+#: c-decl.c:4828 cp/decl.c:3521
msgid "declaration does not declare anything"
msgstr "Deklaration deklariert nichts"
-#: c-decl.c:5169 c-decl.c:5172
+#: c-decl.c:4873 c-decl.c:4889
+msgid "%Jduplicate member '%D'"
+msgstr "%Jdoppeltes Element »%D«"
+
+#: c-decl.c:4923 c-decl.c:4926
#, c-format
msgid "%s defined inside parms"
msgstr "%s innerhalb Parameter definiert"
-#: c-decl.c:5170 c-decl.c:5173 c-decl.c:5184
+#: c-decl.c:4924 c-decl.c:4927 c-decl.c:4938
msgid "union"
-msgstr "union"
+msgstr "Union"
-#: c-decl.c:5170 c-decl.c:5173
+#: c-decl.c:4924 c-decl.c:4927
msgid "structure"
msgstr "Struktur"
-#: c-decl.c:5183
+#: c-decl.c:4937
#, c-format
msgid "%s has no %s"
msgstr "%s hat kein %s"
-#: c-decl.c:5184
+#: c-decl.c:4938
msgid "struct"
msgstr "struct"
-#: c-decl.c:5185
+#: c-decl.c:4939
msgid "named members"
-msgstr "benannte Member"
+msgstr "benannte Elemente"
-#: c-decl.c:5185
+#: c-decl.c:4939
msgid "members"
-msgstr "Member"
+msgstr "Elemente"
-#: c-decl.c:5224
+#: c-decl.c:4978
#, c-format
msgid "nested redefinition of `%s'"
msgstr "Verschachtelte Redefinition von »%s«"
-#: c-decl.c:5237
-#, c-format
-msgid "bit-field `%s' width not an integer constant"
-msgstr "Breite des Bitfeldes »%s« ist keine Ganzzahlkonstante"
-
-#: c-decl.c:5248
-#, c-format
-msgid "bit-field `%s' has invalid type"
-msgstr "Bitfeld »%s« hat ungültigen Typen"
-
-#: c-decl.c:5260
-#, c-format
-msgid "bit-field `%s' type invalid in ISO C"
-msgstr "Typ des Bitfeldes »%s« ist ungültig in ISO-C"
-
-#: c-decl.c:5271
-#, c-format
-msgid "negative width in bit-field `%s'"
-msgstr "Negative Breite in Bitfeld »%s«"
-
-#: c-decl.c:5273
-#, c-format
-msgid "width of `%s' exceeds its type"
-msgstr "Breite von »%s« überschreitet dessen Typen"
-
-#: c-decl.c:5275
-#, c-format
-msgid "zero width for bit-field `%s'"
-msgstr "Breite null für Bitfeld »%s«"
-
-#: c-decl.c:5289
-#, c-format
-msgid "`%s' is narrower than values of its type"
-msgstr "»%s« ist schmaler als die Werte seines Typs"
+#: c-decl.c:4998
+msgid "%Jflexible array member in union"
+msgstr "%Jflexibles Feldelement in Union"
-#: c-decl.c:5323
-msgid "flexible array member in union"
-msgstr "Flexibler Feld-Member in union"
+#: c-decl.c:5000
+msgid "%Jflexible array member not at end of struct"
+msgstr "%Jflexibles Feld-Element nicht am Ende von struct"
-#: c-decl.c:5325
-msgid "flexible array member not at end of struct"
-msgstr "Flexibler Feld-Member nicht am Ende von struct"
+#: c-decl.c:5002
+msgid "%Jflexible array member in otherwise empty struct"
+msgstr "%Jlexibler Feld-Element in ansonsten leerem struct"
-#: c-decl.c:5327
-msgid "flexible array member in otherwise empty struct"
-msgstr "Flexibler Feld-Member in ansonsten leerem struct"
+#: c-decl.c:5007
+msgid "%Jinvalid use of structure with flexible array member"
+msgstr "%Jungültige Verwendung einer Struktur mit flexiblem Feld-Element"
-#: c-decl.c:5357
-#, c-format
-msgid "duplicate member `%s'"
-msgstr "Doppelter Member »%s«"
-
-#: c-decl.c:5448
+#: c-decl.c:5102
msgid "union cannot be made transparent"
msgstr "union kann nicht transparent gemacht werden"
#. This enum is a named one that has been declared already.
-#: c-decl.c:5558
+#: c-decl.c:5171
#, c-format
msgid "redeclaration of `enum %s'"
msgstr "Redeklaration von »enum %s«"
-#: c-decl.c:5592
+#: c-decl.c:5202
msgid "enum defined inside parms"
msgstr "enum innerhalb von Parametern definiert"
-#: c-decl.c:5625
+#: c-decl.c:5235
msgid "enumeration values exceed range of largest integer"
msgstr "Aufzählungswerte überschreiten Wertebereich des größten Ganzzahltypen"
-#: c-decl.c:5734
+#: c-decl.c:5338
#, c-format
msgid "enumerator value for `%s' not integer constant"
msgstr "Aufzählungswert für »%s« ist keine Ganzzahlkonstante"
-#: c-decl.c:5747
+#: c-decl.c:5351
msgid "overflow in enumeration values"
msgstr "Überlauf in Aufzählungswerten"
-#: c-decl.c:5752
+#: c-decl.c:5356
msgid "ISO C restricts enumerator values to range of `int'"
msgstr "ISO-C beschränkt Aufzählungswerte auf Bereich von »int«"
-#: c-decl.c:5834
+#: c-decl.c:5432
msgid "return type is an incomplete type"
msgstr "Rückgabetyp ist unvollständig"
-#: c-decl.c:5842
+#: c-decl.c:5440
msgid "return type defaults to `int'"
msgstr "Rückgabetyp ist auf »int« voreingestellt"
-#: c-decl.c:5889
-#, c-format
-msgid "no previous prototype for `%s'"
-msgstr "Kein vorheriger Prototyp für »%s«"
+#: c-decl.c:5476
+msgid "%Jno previous prototype for '%D'"
+msgstr "%Jkein vorheriger Prototyp für »%D«"
-#: c-decl.c:5896
-#, c-format
-msgid "`%s' was used with no prototype before its definition"
-msgstr "»%s« wurde vor seiner Definition ohne Prototyp verwendet"
+#: c-decl.c:5482
+msgid "%J'%D' was used with no prototype before its definition"
+msgstr "%J»%D« wurde vor seiner Definition ohne Prototyp verwendet"
-#: c-decl.c:5902
-#, c-format
-msgid "no previous declaration for `%s'"
-msgstr "Keine vorherige Deklaration für »%s«"
+#: c-decl.c:5489
+msgid "%Jno previous declaration for '%D'"
+msgstr "%Jkeine vorherige Deklaration für »%D«"
-#: c-decl.c:5909
-#, c-format
-msgid "`%s' was used with no declaration before its definition"
-msgstr "»%s« wurde vor seiner Definition ohne Deklaration verwendet"
+#: c-decl.c:5495
+msgid "%J`%D' was used with no declaration before its definition"
+msgstr "%J»%D« wurde vor seiner Definition ohne Deklaration verwendet"
-#: c-decl.c:5933 c-decl.c:6486
-#, c-format
-msgid "return type of `%s' is not `int'"
-msgstr "Rückgabetyp von »%s« ist nicht »int«"
+#: c-decl.c:5531 c-decl.c:6037
+msgid "%Jreturn type of '%D' is not `int'"
+msgstr "%JRückgabetyp von »%D« ist nicht »int«"
-#: c-decl.c:5949
-#, c-format
-msgid "first argument of `%s' should be `int'"
-msgstr "Erstes Argument von »%s« sollte »int« sein"
+#: c-decl.c:5546
+msgid "%Jfirst argument of '%D' should be `int'"
+msgstr "%Jerstes Argument von »%D« sollte »int« sein"
-#: c-decl.c:5958
-#, c-format
-msgid "second argument of `%s' should be `char **'"
-msgstr "Zweites Argument von »%s« sollte »char **« sein"
+#: c-decl.c:5555
+msgid "%Jsecond argument of '%D' should be 'char **'"
+msgstr "%Jzweites Argument von »%D« sollte »char **« sein"
-#: c-decl.c:5967
-#, c-format
-msgid "third argument of `%s' should probably be `char **'"
-msgstr "Drittes Argument von »%s« sollte wahrscheinlich »char **« sein"
+#: c-decl.c:5564
+msgid "%Jthird argument of '%D' should probably be 'char **'"
+msgstr "%Jdrittes Argument von »%D« sollte wahrscheinlich »char **« sein"
-#: c-decl.c:5976
-#, c-format
-msgid "`%s' takes only zero or two arguments"
-msgstr "»%s« benötigt entweder null oder zwei Argumente"
+#: c-decl.c:5574
+msgid "%J'%D' takes only zero or two arguments"
+msgstr "%J»%D« benötigt entweder null oder zwei Argumente"
-#: c-decl.c:5979
-#, c-format
-msgid "`%s' is normally a non-static function"
-msgstr "»%s« ist normalerweise eine Nicht-static-Funktion"
+#: c-decl.c:5577
+msgid "%J'%D' is normally a non-static function"
+msgstr "%J»%D« ist normalerweise eine Nicht-static-Funktion"
-#: c-decl.c:6077
-msgid "parm types given both in parmlist and separately"
-msgstr "Parametertypen sowohl in Parameterliste als auch separat angegeben"
+#: c-decl.c:5633
+msgid "%Jold-style parameter declarations in prototyped function definition"
+msgstr "%JParameterdeklarationen alten Stils in Prototyp-Funktionsdeklaration"
-#: c-decl.c:6098
-msgid "parameter name omitted"
-msgstr "Parametername ausgelassen"
+#: c-decl.c:5647
+msgid "%Jparameter name omitted"
+msgstr "%JParametername ausgelassen"
-#: c-decl.c:6102 c-decl.c:6204
-#, c-format
-msgid "parameter `%s' declared void"
-msgstr "Parameter »%s« als void deklariert"
+#: c-decl.c:5722
+msgid "%Jparameter name missing from parameter list"
+msgstr "%JParametername fehlt in Parameterliste"
-#: c-decl.c:6178
-msgid "parameter name missing from parameter list"
-msgstr "Parametername fehlt in Parameterliste"
+#: c-decl.c:5732
+msgid "%J\"%D\" declared as a non-parameter"
+msgstr "%J\"%D\" als Nicht-Parameter deklariert"
-#: c-decl.c:6197
-#, c-format
-msgid "multiple parameters named `%s'"
-msgstr "Mehrere Parameter wurden »%s« genannt"
+#: c-decl.c:5737
+msgid "%Jmultiple parameters named \"%D\""
+msgstr "%Jmehrere Parameter wurden »%D« genannt"
-#: c-decl.c:6219 c-decl.c:6221
-#, c-format
-msgid "type of `%s' defaults to `int'"
-msgstr "Typ von »%s« auf »int« voreingestellt"
+#: c-decl.c:5745
+msgid "%Jparameter \"%D\" declared void"
+msgstr "%JParameter »%D« als void deklariert"
-#: c-decl.c:6257
-#, c-format
-msgid "declaration for parameter `%s' but no such parameter"
-msgstr "Nicht vorhandener Parameter »%s« deklariert"
+#: c-decl.c:5760 c-decl.c:5762
+msgid "%Jtype of \"%D\" defaults to \"int\""
+msgstr "%JTyp von »%D« ist auf »int« voreingestellt"
+
+#: c-decl.c:5776
+msgid "%Jparameter \"%D\" has incomplete type"
+msgstr "%JParameter \"%D\" hat unvollständigen Typen"
+
+#: c-decl.c:5782
+msgid "%Jdeclaration for parameter \"%D\" but no such parameter"
+msgstr "%Jnicht vorhandener Parameter »%D« deklariert"
-#: c-decl.c:6305
+#: c-decl.c:5834
msgid "number of arguments doesn't match prototype"
msgstr "Anzahl der Argumente passt nicht zum Prototypen"
-#: c-decl.c:6335
-#, c-format
-msgid "promoted argument `%s' doesn't match prototype"
-msgstr "Weitergegebenes Argument »%s« passt nicht zum Prototypen"
+#: c-decl.c:5835 c-decl.c:5866 c-decl.c:5873
+msgid "%Hprototype declaration"
+msgstr "%HPrototyp-Deklaration"
-#: c-decl.c:6345
-#, c-format
-msgid "argument `%s' doesn't match prototype"
-msgstr "Argument »%s« passt nicht zum Prototypen"
+#: c-decl.c:5864
+msgid "promoted argument \"%D\" doesn't match prototype"
+msgstr "weitergegebenes Argument »%D« passt nicht zum Prototypen"
-#: c-decl.c:6518 cp/decl.c:15049
+#: c-decl.c:5872
+msgid "argument \"%D\" doesn't match prototype"
+msgstr "Argument »%D« passt nicht zum Prototypen"
+
+#: c-decl.c:6069 cp/decl.c:10876
msgid "no return statement in function returning non-void"
-msgstr "Keine return-Anweisung in nicht void zurückgebender Funktion"
+msgstr "keine return-Anweisung in nicht void zurückgebender Funktion"
-#: c-decl.c:6525
+#: c-decl.c:6076
msgid "this function may return with or without a value"
-msgstr "Diese Funktion kann mit oder ohne Wert zurückkehren"
-
-#: c-decl.c:6729
-#, c-format
-msgid "size of return value of `%s' is %u bytes"
-msgstr "Größe des Rückgabewertes von »%s« ist %u Bytes"
-
-#: c-decl.c:6733
-#, c-format
-msgid "size of return value of `%s' is larger than %d bytes"
-msgstr "Größe des Rückgabewertes von »%s« ist größer als %d Bytes"
+msgstr "diese Funktion kann mit oder ohne Wert zurückkehren"
#. If we get here, declarations have been used in a for loop without
#. the C99 for loop scope. This doesn't make much sense, so don't
#. allow it.
-#: c-decl.c:6791
-msgid "`for' loop initial declaration used outside C99 mode"
+#: c-decl.c:6175
+msgid "'for' loop initial declaration used outside C99 mode"
msgstr "Anfangsdeklaration in »for«-Schleife außerhalb C99-Modus verwendet"
-#: c-decl.c:6815
+#: c-decl.c:6199
#, c-format
-msgid "`struct %s' declared in `for' loop initial declaration"
+msgid "'struct %s' declared in 'for' loop initial declaration"
msgstr "»struct %s« in Anfangsdeklaration einer »for«-Schleife deklariert"
-#: c-decl.c:6818
+#: c-decl.c:6202
#, c-format
-msgid "`union %s' declared in `for' loop initial declaration"
+msgid "'union %s' declared in 'for' loop initial declaration"
msgstr "»union %s« in Anfangsdeklaration einer »for«-Schleife deklariert"
-#: c-decl.c:6821
+#: c-decl.c:6205
#, c-format
-msgid "`enum %s' declared in `for' loop initial declaration"
+msgid "'enum %s' declared in 'for' loop initial declaration"
msgstr "»enum %s« in Anfangsdeklaration einer »for«-Schleife deklariert"
-#: c-decl.c:6829
-#, c-format
-msgid "declaration of non-variable `%s' in `for' loop initial declaration"
-msgstr "Deklaration der Nicht-Variablen »%s« in Anfangsdeklaration einer »for«-Schleife"
-
-#: c-decl.c:6831
-#, c-format
-msgid "declaration of static variable `%s' in `for' loop initial declaration"
-msgstr "Deklaration der »static«-Variablen »%s« in Anfangsdeklaration einer »for«-Schleife"
+#: c-decl.c:6213
+msgid "%Jdeclaration of non-variable '%D' in 'for' loop initial declaration"
+msgstr "%JDeklaration der Nicht-Variablen »%D« in Anfangsdeklaration einer »for«-Schleife"
-#: c-decl.c:6833
-#, c-format
-msgid "declaration of `extern' variable `%s' in `for' loop initial declaration"
-msgstr "Deklaration der »extern«-Variablen »%s« in Anfangsdeklaration einer »for«-Schleife"
+#: c-decl.c:6216
+msgid "%Jdeclaration of static variable '%D' in 'for' loop initial declaration"
+msgstr "%JDeklaration der »static«-Variablen »%D« in Anfangsdeklaration einer »for«-Schleife"
-#: c-format.c:109 c-format.c:191
-msgid "format string arg not a string type"
-msgstr "Format-Zeichenkettenargument ist kein Zeichenkettentyp"
+#: c-decl.c:6219
+msgid "%Jdeclaration of 'extern' variable '%D' in 'for' loop initial declaration"
+msgstr "%JDeklaration der »extern«-Variablen »%D« in Anfangsdeklaration einer »for«-Schleife"
-#: c-format.c:124
-msgid "args to be formatted is not '...'"
-msgstr "Zu formatierendes Argument ist nicht »...«"
+#: c-decl.c:6532
+msgid "%Jredefinition of global '%D'"
+msgstr "%JRedefinition des globalen »%D«"
-#: c-format.c:133
-msgid "strftime formats cannot format arguments"
-msgstr "strftime-Formate können keine Argumente formatieren"
+#: c-decl.c:6533
+msgid "%J'%D' previously defined here"
+msgstr "%J»%D« bereits hier verwendet"
-#: c-format.c:168 c-format.c:270
+#: c-format.c:94 c-format.c:210
msgid "format string has invalid operand number"
msgstr "Formatzeichenkette hat ungültige Operandenzahl"
-#: c-format.c:202
+#: c-format.c:111
msgid "function does not return string type"
msgstr "Funktion gibt keinen Zeichenkettentypen zurück"
-#: c-format.c:233
+#: c-format.c:140
+msgid "format string arg not a string type"
+msgstr "Format-Zeichenkettenargument ist kein Zeichenkettentyp"
+
+#: c-format.c:190
msgid "unrecognized format specifier"
-msgstr "Unerkannte Formatangabe"
+msgstr "unerkannte Formatangabe"
-#: c-format.c:246
+#: c-format.c:203
#, c-format
msgid "`%s' is an unrecognized format function type"
msgstr "»%s« ist ein nicht erkannter Formatfunktionstyp"
-#: c-format.c:280
+#: c-format.c:216
+msgid "'...' has invalid operand number"
+msgstr "»...« hat ungültige Operandenzahl"
+
+#: c-format.c:224
msgid "format string arg follows the args to be formatted"
msgstr "Format-Zeichenkettenargument folgt den zu formatierenden Argumenten"
-#: c-format.c:601
+#: c-format.c:565 c-format.c:589
msgid "` ' flag"
msgstr "» «-Kennzeichen"
-#: c-format.c:601
+#: c-format.c:565 c-format.c:589
msgid "the ` ' printf flag"
-msgstr "Das » «-printf-Kennzeichen"
+msgstr "das » «-printf-Kennzeichen"
-#: c-format.c:602 c-format.c:673
+#: c-format.c:566 c-format.c:590 c-format.c:627 c-format.c:683
msgid "`+' flag"
msgstr "»+«-Kennzeichen"
-#: c-format.c:602
+#: c-format.c:566 c-format.c:590 c-format.c:627
msgid "the `+' printf flag"
-msgstr "Das »+«-printf-Kennzeichen"
+msgstr "das »+«-printf-Kennzeichen"
-#: c-format.c:603 c-format.c:649
+#: c-format.c:567 c-format.c:591 c-format.c:628 c-format.c:659
msgid "`#' flag"
msgstr "»#«-Kennzeichen"
-#: c-format.c:603
+#: c-format.c:567 c-format.c:591 c-format.c:628
msgid "the `#' printf flag"
-msgstr "Das »#«-printf-Kennzeichen"
+msgstr "das »#«-printf-Kennzeichen"
-#: c-format.c:604 c-format.c:647
+#: c-format.c:568 c-format.c:592 c-format.c:657
msgid "`0' flag"
msgstr "»0«-Kennzeichen"
-#: c-format.c:604
+#: c-format.c:568 c-format.c:592
msgid "the `0' printf flag"
-msgstr "Das »0«-printf-Kennzeichen"
+msgstr "das »0«-printf-Kennzeichen"
-#: c-format.c:605 c-format.c:646 c-format.c:676
+#: c-format.c:569 c-format.c:593 c-format.c:656 c-format.c:686
msgid "`-' flag"
msgstr "»-«-Kennzeichen"
-#: c-format.c:605
+#: c-format.c:569 c-format.c:593
msgid "the `-' printf flag"
-msgstr "Das »-«-printf-Kennzeichen"
+msgstr "das »-«-printf-Kennzeichen"
-#: c-format.c:606 c-format.c:630
+#: c-format.c:570 c-format.c:640
msgid "`'' flag"
msgstr "»'«-Kennzeichen"
-#: c-format.c:606
+#: c-format.c:570
msgid "the `'' printf flag"
-msgstr "Das »'«-printf-Kennzeichen"
+msgstr "das »'«-printf-Kennzeichen"
-#: c-format.c:607 c-format.c:631
+#: c-format.c:571 c-format.c:641
msgid "`I' flag"
msgstr "»I«-Kennzeichen"
-#: c-format.c:607
+#: c-format.c:571
msgid "the `I' printf flag"
-msgstr "Das »I«-printf-Kennzeichen"
+msgstr "das »I«-printf-Kennzeichen"
-#: c-format.c:608 c-format.c:628 c-format.c:650 c-format.c:677 c-format.c:1702
+#: c-format.c:572 c-format.c:594 c-format.c:638 c-format.c:660 c-format.c:687
+#: c-format.c:1802
msgid "field width"
msgstr "Feldbreite"
-#: c-format.c:608
+#: c-format.c:572 c-format.c:594
msgid "field width in printf format"
msgstr "Feldbreite im printf-Format"
-#: c-format.c:609
+#: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
msgid "precision"
-msgstr "Präzision"
+msgstr "Genauigkeit"
-#: c-format.c:609
+#: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
msgid "precision in printf format"
-msgstr "Präzision im printf-Format"
+msgstr "Genauigkeit im printf-Format"
-#: c-format.c:610 c-format.c:629 c-format.c:680
+#: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630 c-format.c:639
+#: c-format.c:690
msgid "length modifier"
msgstr "Längenmodifizierer"
-#: c-format.c:610
+#: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630
msgid "length modifier in printf format"
msgstr "Längenmodifizierer im printf-Format"
-#: c-format.c:626
+#: c-format.c:636
msgid "assignment suppression"
msgstr "Zuweisungsunterdrückung"
-#: c-format.c:626
+#: c-format.c:636
msgid "the assignment suppression scanf feature"
-msgstr "Das scanf-Merkmal der Zuweisungsunterdrückung"
+msgstr "das scanf-Merkmal der Zuweisungsunterdrückung"
-#: c-format.c:627
+#: c-format.c:637
msgid "`a' flag"
msgstr "»a«-Kennzeichen"
-#: c-format.c:627
+#: c-format.c:637
msgid "the `a' scanf flag"
-msgstr "Das »a«-scanf-Kennzeichen"
+msgstr "das »a«-scanf-Kennzeichen"
-#: c-format.c:628
+#: c-format.c:638
msgid "field width in scanf format"
msgstr "Feldbreite im scanf-Format"
-#: c-format.c:629
+#: c-format.c:639
msgid "length modifier in scanf format"
msgstr "Längenmodifizierer im scanf-Format"
-#: c-format.c:630
+#: c-format.c:640
msgid "the `'' scanf flag"
-msgstr "Das »'«-scanf-Kennzeichen"
+msgstr "das »'«-scanf-Kennzeichen"
-#: c-format.c:631
+#: c-format.c:641
msgid "the `I' scanf flag"
-msgstr "Das »I«-scanf-Kennzeichen"
+msgstr "das »I«-scanf-Kennzeichen"
-#: c-format.c:645
+#: c-format.c:655
msgid "`_' flag"
msgstr "»_«-Kennzeichen"
-#: c-format.c:645
+#: c-format.c:655
msgid "the `_' strftime flag"
-msgstr "Das »_«-strftime-Kennzeichen"
+msgstr "das »_«-strftime-Kennzeichen"
-#: c-format.c:646
+#: c-format.c:656
msgid "the `-' strftime flag"
-msgstr "Das »-«-strftime-Kennzeichen"
+msgstr "das »-«-strftime-Kennzeichen"
-#: c-format.c:647
+#: c-format.c:657
msgid "the `0' strftime flag"
-msgstr "Das »0«-strftime-Kennzeichen"
+msgstr "das »0«-strftime-Kennzeichen"
-#: c-format.c:648 c-format.c:672
+#: c-format.c:658 c-format.c:682
msgid "`^' flag"
msgstr "»^«-Kennzeichen"
-#: c-format.c:648
+#: c-format.c:658
msgid "the `^' strftime flag"
-msgstr "Das »^«-strftime-Kennzeichen"
+msgstr "das »^«-strftime-Kennzeichen"
-#: c-format.c:649
+#: c-format.c:659
msgid "the `#' strftime flag"
-msgstr "Das »#«-strftime-Kennzeichen"
+msgstr "das »#«-strftime-Kennzeichen"
-#: c-format.c:650
+#: c-format.c:660
msgid "field width in strftime format"
msgstr "Feldbreite im strftime-Format"
-#: c-format.c:651
+#: c-format.c:661
msgid "`E' modifier"
msgstr "»E«-Modifizierer"
-#: c-format.c:651
+#: c-format.c:661
msgid "the `E' strftime modifier"
-msgstr "Der »E«-strftime-Modifizierer"
+msgstr "der »E«-strftime-Modifizierer"
-#: c-format.c:652
+#: c-format.c:662
msgid "`O' modifier"
msgstr "»O«-Modifizierer"
-#: c-format.c:652
+#: c-format.c:662
msgid "the `O' strftime modifier"
-msgstr "Der »O«-strftime-Modifizierer"
+msgstr "der »O«-strftime-Modifizierer"
-#: c-format.c:653
+#: c-format.c:663
msgid "the `O' modifier"
-msgstr "Der »O«-Modifizierer"
+msgstr "der »O«-Modifizierer"
-#: c-format.c:671
+#: c-format.c:681
msgid "fill character"
msgstr "Füllzeichen"
-#: c-format.c:671
+#: c-format.c:681
msgid "fill character in strfmon format"
msgstr "Füllzeichen im strfmon-Format"
-#: c-format.c:672
+#: c-format.c:682
msgid "the `^' strfmon flag"
-msgstr "Das »^«-strfmon-Kennzeichen"
+msgstr "das »^«-strfmon-Kennzeichen"
-#: c-format.c:673
+#: c-format.c:683
msgid "the `+' strfmon flag"
-msgstr "Das »+«-strfmon-Kennzeichen"
+msgstr "das »+«-strfmon-Kennzeichen"
-#: c-format.c:674
+#: c-format.c:684
msgid "`(' flag"
msgstr "»(«-Kennzeichen"
-#: c-format.c:674
+#: c-format.c:684
msgid "the `(' strfmon flag"
-msgstr "Das »(«-strfmon-Kennzeichen"
+msgstr "das »(«-strfmon-Kennzeichen"
-#: c-format.c:675
+#: c-format.c:685
msgid "`!' flag"
msgstr "»!«-Kennzeichen"
-#: c-format.c:675
+#: c-format.c:685
msgid "the `!' strfmon flag"
-msgstr "Das »!«-strfmon-Kennzeichen"
+msgstr "das »!«-strfmon-Kennzeichen"
-#: c-format.c:676
+#: c-format.c:686
msgid "the `-' strfmon flag"
-msgstr "Das »-«-strfmon-Kennzeichen"
+msgstr "das »-«-strfmon-Kennzeichen"
-#: c-format.c:677
+#: c-format.c:687
msgid "field width in strfmon format"
msgstr "Feldbreite im strfmon-Format"
-#: c-format.c:678
+#: c-format.c:688
msgid "left precision"
-msgstr "Linke Präzision"
+msgstr "linke Präzision"
-#: c-format.c:678
+#: c-format.c:688
msgid "left precision in strfmon format"
-msgstr "Linke Präzision im strfmon-Format"
+msgstr "linke Präzision im strfmon-Format"
-#: c-format.c:679
+#: c-format.c:689
msgid "right precision"
-msgstr "Rechte Präzision"
+msgstr "rechte Präzision"
-#: c-format.c:679
+#: c-format.c:689
msgid "right precision in strfmon format"
-msgstr "Rechte Präzision im strfmon-Format"
+msgstr "rechte Präzision im strfmon-Format"
-#: c-format.c:680
+#: c-format.c:690
msgid "length modifier in strfmon format"
msgstr "Längenmodifizierer im strfmon-Format"
-#: c-format.c:983
+#: c-format.c:1107
#, c-format
msgid "function might be possible candidate for `%s' format attribute"
msgstr "Funktion könnte möglicher Kandidat für Formatattribut »%s« sein"
-#: c-format.c:1107 c-format.c:1128 c-format.c:2112
+#: c-format.c:1223 c-format.c:1244 c-format.c:2212
msgid "missing $ operand number in format"
-msgstr "Fehlende $-Operandennummer im Format"
+msgstr "fehlende $-Operandennummer im Format"
-#: c-format.c:1138
+#: c-format.c:1254
#, c-format
msgid "%s does not support %%n$ operand number formats"
msgstr "%s unterstützt nicht %%n$-Operandennummerformate"
-#: c-format.c:1145
+#: c-format.c:1261
msgid "operand number out of range in format"
msgstr "Operandennummer außerhalb des Wertebereiches im Format"
-#: c-format.c:1168
+#: c-format.c:1284
#, c-format
msgid "format argument %d used more than once in %s format"
msgstr "Formatargument %d mehr als einmal im %s-Format verwendet"
-#: c-format.c:1218
+#: c-format.c:1331
#, c-format
msgid "format argument %d unused before used argument %d in $-style format"
msgstr "Formatargument %d nicht verwendet vor benutztem Argument %d im $-Stil-Format"
-#: c-format.c:1322
+#: c-format.c:1429
msgid "format not a string literal, format string not checked"
msgstr "Format ist kein Zeichenkettenliteral, Formatzeichenkette ungeprüft"
-#: c-format.c:1336
+#: c-format.c:1443
msgid "format not a string literal and no format arguments"
msgstr "Format ist kein Zeichenkettenliteral, und keine Formatargumente"
-#: c-format.c:1338
+#: c-format.c:1445
msgid "format not a string literal, argument types not checked"
msgstr "Format ist kein Zeichenkettenliteral, Argumenttypen ungeprüft"
-#: c-format.c:1351
+#: c-format.c:1458
msgid "too many arguments for format"
-msgstr "Zu viele Argumente für Format"
+msgstr "zu viele Argumente für Format"
-#: c-format.c:1354
+#: c-format.c:1461
msgid "unused arguments in $-style format"
-msgstr "Unbenutzte Argumente in $-Stil-Format"
+msgstr "unbenutzte Argumente in $-Stil-Format"
-#: c-format.c:1357
+#: c-format.c:1464
#, c-format
msgid "zero-length %s format string"
msgstr "Format-Zeichenkette %s der Länge null"
-#: c-format.c:1361
+#: c-format.c:1468
msgid "format is a wide character string"
msgstr "Format ist »wide character«-Zeichenkette"
-#: c-format.c:1364
+#: c-format.c:1471
msgid "unterminated format string"
-msgstr "Unbeendete Formatzeichenkette"
+msgstr "unbeendete Formatzeichenkette"
-#: c-format.c:1581
+#: c-format.c:1681
msgid "embedded `\\0' in format"
-msgstr "Eingebettetes »\\0« im Format"
+msgstr "eingebettetes »\\0« im Format"
-#: c-format.c:1596
+#: c-format.c:1696
#, c-format
msgid "spurious trailing `%%' in format"
-msgstr "Störendes letztes »%%« im Format"
+msgstr "störendes letztes »%%« im Format"
-#: c-format.c:1635 c-format.c:1872
+#: c-format.c:1735 c-format.c:1972
#, c-format
msgid "repeated %s in format"
-msgstr "Wiederholtes %s im Format"
+msgstr "wiederholtes %s im Format"
-#: c-format.c:1648
+#: c-format.c:1748
msgid "missing fill character at end of strfmon format"
-msgstr "Fehlendes Füllzeichen am Ende des strfmon-Formates"
+msgstr "fehlendes Füllzeichen am Ende des strfmon-Formates"
-#: c-format.c:1687 c-format.c:1786 c-format.c:2066 c-format.c:2119
+#: c-format.c:1787 c-format.c:1886 c-format.c:2166 c-format.c:2219
msgid "too few arguments for format"
-msgstr "Zu wenig Argumente für Format"
+msgstr "zu wenig Argumente für Format"
-#: c-format.c:1728
+#: c-format.c:1828
#, c-format
msgid "zero width in %s format"
msgstr "Breite null im Format %s"
-#: c-format.c:1747
+#: c-format.c:1847
#, c-format
msgid "empty left precision in %s format"
-msgstr "Leere linke Präzision im Format %s"
+msgstr "leere linke Präzision im Format %s"
-#: c-format.c:1801
+#: c-format.c:1901
msgid "field precision"
msgstr "Feldpräzision"
-#: c-format.c:1816
+#: c-format.c:1916
#, c-format
msgid "empty precision in %s format"
-msgstr "Fehlende Präzision im Format %s"
+msgstr "fehlende Präzision im Format %s"
-#: c-format.c:1856
+#: c-format.c:1956
#, c-format
msgid "%s does not support the `%s' %s length modifier"
msgstr "%s unterstützt nicht den Längenmodifizierer »%s« %s"
-#: c-format.c:1906
+#: c-format.c:2006
msgid "conversion lacks type at end of format"
msgstr "Konvertierung fehlt der Typ am Ende des Formates"
-#: c-format.c:1917
+#: c-format.c:2017
#, c-format
msgid "unknown conversion type character `%c' in format"
-msgstr "Unbekanntes Konvertierungstyp-Zeichen »%c« im Format"
+msgstr "unbekanntes Konvertierungstyp-Zeichen »%c« im Format"
-#: c-format.c:1920
+#: c-format.c:2020
#, c-format
msgid "unknown conversion type character 0x%x in format"
-msgstr "Unbekanntes Konvertierungstyp-Zeichen 0x%x im Format"
+msgstr "unbekanntes Konvertierungstyp-Zeichen 0x%x im Format"
-#: c-format.c:1927
+#: c-format.c:2027
#, c-format
msgid "%s does not support the `%%%c' %s format"
msgstr "%s unterstützt nicht das Format »%%%c« %s"
-#: c-format.c:1943
+#: c-format.c:2043
#, c-format
msgid "%s used with `%%%c' %s format"
msgstr "%s verwendet mit Format »%%%c« %s"
-#: c-format.c:1952
+#: c-format.c:2052
#, c-format
msgid "%s does not support %s"
msgstr "%s unterstützt nicht %s"
-#: c-format.c:1961
+#: c-format.c:2061
#, c-format
msgid "%s does not support %s with the `%%%c' %s format"
msgstr "%s unterstützt nicht %s mit dem Format »%%%c« %s"
-#: c-format.c:1994
+#: c-format.c:2094
#, c-format
msgid "%s ignored with %s and `%%%c' %s format"
msgstr "%s ignoriert mit %s und Format »%%%c« %s"
-#: c-format.c:1998
+#: c-format.c:2098
#, c-format
msgid "%s ignored with %s in %s format"
msgstr "%s ignoriert mit %s im Format %s"
-#: c-format.c:2004
+#: c-format.c:2104
#, c-format
msgid "use of %s and %s together with `%%%c' %s format"
-msgstr "Verwendung von %s und %s zusammen mit »%%%c« %s Format"
+msgstr "Verwendung von %s und %s zusammen mit Format »%%%c« %s"
-#: c-format.c:2008
+#: c-format.c:2108
#, c-format
msgid "use of %s and %s together in %s format"
msgstr "Verwendung von %s und %s zusammen im Format %s"
-#: c-format.c:2027
+#: c-format.c:2127
#, c-format
msgid "`%%%c' yields only last 2 digits of year in some locales"
msgstr "»%%%c« liefert in manchen Locales nur die letzten 2 Ziffern des Jahres"
-#: c-format.c:2030
+#: c-format.c:2130
#, c-format
msgid "`%%%c' yields only last 2 digits of year"
msgstr "»%%%c« liefert nur die letzten 2 Ziffern des Jahres"
#. The end of the format string was reached.
-#: c-format.c:2046
+#: c-format.c:2146
#, c-format
msgid "no closing `]' for `%%[' format"
-msgstr "Kein schließendes »]« für »%%[«-Format"
+msgstr "kein schließendes »]« für »%%[«-Format"
-#: c-format.c:2059
+#: c-format.c:2159
#, c-format
msgid "use of `%s' length modifier with `%c' type character"
msgstr "Verwendung des »%s«-Längenmodifizierers mit »%c«-Typ-Zeichen"
-#: c-format.c:2080
+#: c-format.c:2180
#, c-format
msgid "%s does not support the `%%%s%c' %s format"
msgstr "%s unterstützt nicht das Format »%%%s%c« %s"
-#: c-format.c:2095
+#: c-format.c:2195
msgid "operand number specified with suppressed assignment"
msgstr "Operandennummer mit unterdrückter Zuweisung angegeben"
-#: c-format.c:2097
+#: c-format.c:2197
msgid "operand number specified for format taking no argument"
-msgstr "Operandennummer angegeben für Format ohne Argumente"
+msgstr "Operandennummer für Format ohne Argumente angegeben"
-#: c-format.c:2211
+#: c-format.c:2309
#, c-format
msgid "writing through null pointer (arg %d)"
msgstr "Schreiben mit Null-Zeiger (Argument %d)"
-#: c-format.c:2220
+#: c-format.c:2318
#, c-format
msgid "reading through null pointer (arg %d)"
msgstr "Lesen mit Null-Zeiger (Argument %d)"
-#: c-format.c:2240
+#: c-format.c:2338
#, c-format
msgid "writing into constant object (arg %d)"
msgstr "Schreiben in konstantes Objekt (Argument %d)"
-#: c-format.c:2250
+#: c-format.c:2348
#, c-format
msgid "extra type qualifiers in format argument (arg %d)"
-msgstr "Zusätzliche Typqualifizierer in Format-Argument (Argument %d)"
+msgstr "zusätzliche Typqualifizierer in Format-Argument (Argument %d)"
-#: c-format.c:2257
+#: c-format.c:2355
#, c-format
msgid "format argument is not a pointer (arg %d)"
msgstr "Format-Argument ist kein Zeiger (Argument %d)"
-#: c-format.c:2259
+#: c-format.c:2357
#, c-format
msgid "format argument is not a pointer to a pointer (arg %d)"
msgstr "Format-Argument ist kein Zeiger auf einen Zeiger (Argument %d)"
-#: c-format.c:2330
+#: c-format.c:2433
msgid "pointer"
msgstr "Zeiger"
-#: c-format.c:2332
+#: c-format.c:2435
msgid "different type"
msgstr "anderer Typ"
-#: c-format.c:2353
+#: c-format.c:2456
#, c-format
msgid "%s is not type %s (arg %d)"
msgstr "%s ist nicht vom Typ %s (Argument %d)"
-#: c-format.c:2356
+#: c-format.c:2459
#, c-format
msgid "%s format, %s arg (arg %d)"
msgstr "%s Format, %s Argument (Argument %d)"
-#: c-lex.c:153
-msgid "YYDEBUG not defined"
-msgstr "YYDEBUG ist nicht definiert"
+#: c-format.c:2704
+msgid "args to be formatted is not '...'"
+msgstr "zu formatierendes Argument ist nicht »...«"
+
+#: c-format.c:2713
+msgid "strftime formats cannot format arguments"
+msgstr "strftime-Formate können keine Argumente formatieren"
+
+#: c-incpath.c:68
+#, c-format
+msgid "ignoring duplicate directory \"%s\"\n"
+msgstr "doppeltes Verzeichnis »%s« wird ignoriert\n"
-#: c-lex.c:293
+#: c-incpath.c:71
+#, c-format
+msgid " as it is a non-system directory that duplicates a system directory\n"
+msgstr " da es ein Nicht-Systemverzeichnis ist, das ein Systemverzeichnis dupliziert\n"
+
+#: c-incpath.c:75
+#, c-format
+msgid "ignoring nonexistent directory \"%s\"\n"
+msgstr "nicht vorhandenes Verzeichnis »%s« wird ignoriert\n"
+
+#: c-incpath.c:273
+#, c-format
+msgid "#include \"...\" search starts here:\n"
+msgstr "#include \"...\" - Suche beginnt hier:\n"
+
+#: c-incpath.c:277
+#, c-format
+msgid "#include <...> search starts here:\n"
+msgstr "#include <...> - Suche beginnt hier:\n"
+
+#: c-incpath.c:282
+#, c-format
+msgid "End of search list.\n"
+msgstr "Ende der Suchliste.\n"
+
+#: c-lex.c:240
msgid "badly nested C headers from preprocessor"
-msgstr "Schlecht geschachtelte C-Header vom Präprozessor"
+msgstr "schlecht geschachtelte C-Header vom Präprozessor"
-#: c-lex.c:336
+#: c-lex.c:281
#, c-format
msgid "ignoring #pragma %s %s"
-msgstr "Ignoriere #pragma %s %s"
+msgstr "ignoriere #pragma %s %s"
-#: c-lex.c:386
-#, c-format
-msgid "universal-character-name '\\U%08x' not valid in identifier"
-msgstr "Universeller Zeichenname »\\U%08x« nicht gültig in Bezeichner"
+#. ... or not.
+#: c-lex.c:385
+msgid "%Hstray '@' in program"
+msgstr "%Hverirrtes »@« im Programm"
-#: c-lex.c:632
+#: c-lex.c:393
#, c-format
-msgid "universal-character-name '\\u%04x' not valid in identifier"
-msgstr "Universeller Zeichenname »\\u%04x« nicht gültig in Bezeichner"
+msgid "missing terminating %c character"
+msgstr "fehlendes abschließendes Zeichen %c"
-#: c-lex.c:695
+#: c-lex.c:395
#, c-format
msgid "stray '%c' in program"
-msgstr "Verirrtes »%c« im Programm"
+msgstr "verirrtes »%c« im Programm"
-#: c-lex.c:697
+#: c-lex.c:397
#, c-format
msgid "stray '\\%o' in program"
-msgstr "Verirrtes »\\%o« im Programm"
+msgstr "verirrtes »\\%o« im Programm"
-#: c-lex.c:854
+#: c-lex.c:535
msgid "this decimal constant is unsigned only in ISO C90"
-msgstr "Diese Dezimalkonstante ist nur in ISO-C90 vorzeichenlos"
+msgstr "diese Dezimalkonstante ist nur in ISO-C90 vorzeichenlos"
-#: c-lex.c:857
+#: c-lex.c:538
msgid "this decimal constant would be unsigned in ISO C90"
-msgstr "Diese Dezimalkonstante wäre in ISO-C90 vorzeichenlos"
+msgstr "diese Dezimalkonstante wäre in ISO-C90 vorzeichenlos"
-#: c-lex.c:873
+#: c-lex.c:554
#, c-format
msgid "integer constant is too large for \"%s\" type"
msgstr "Ganzzahlkonstante ist zu groß für »%s«-Typ"
-#: c-lex.c:941
+#: c-lex.c:620
#, c-format
msgid "floating constant exceeds range of \"%s\""
-msgstr "Fließkommakonstante überschreitet Wertebereich von »%s«"
+msgstr "Gleitkommakonstante überschreitet Wertebereich von »%s«"
+
+#: c-lex.c:696
+msgid "traditional C rejects string constant concatenation"
+msgstr "traditionelles C weist Stringkonstantenverkettung zurück"
+
+#: c-objc-common.c:82
+msgid "%Jfunction '%F' can never be inlined because it is supressed using -fno-inline"
+msgstr "%JFunktion »%F« kann nie inline sein, da dies mit -fno-inline unterdrückt wird"
+
+#: c-objc-common.c:92
+msgid "%Jfunction '%F' can never be inlined because it might not be bound within this unit of translation"
+msgstr "%JFunktion »%F« kann nie inline sein, da sie nicht in diese Übersetzungseinheit gebunden wird"
+
+#: c-objc-common.c:100
+msgid "%Jfunction '%F' can never be inlined because it uses attributes conflicting with inlining"
+msgstr "%JFunktion »%F« kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hat"
-#: c-lex.c:977 cpplex.c:330 cpplex.c:668 cpplex.c:1942
-msgid "ignoring invalid multibyte character"
-msgstr "Ungültiges Multibyte-Zeichen wird ignoriert"
+#: c-objc-common.c:115
+msgid "%Jfunction '%F' can never be inlined because it has pending sizes"
+msgstr "%JFunktion »%F« kann nie inline sein, da sie noch offene Größen hat"
-#: c-opts.c:355
+#: c-objc-common.c:128
+msgid "%Jnested function '%F' can never be inlined because it has possibly saved pending sizes"
+msgstr "%Jdie geschachtelte Funktion »%F« kann nie inline sein, da sie möglicherweise gespeicherte, noch offene Größen hat"
+
+#: c-opts.c:141
#, c-format
-msgid "missing argument to \"-%s\""
-msgstr "Fehlendes Argument für »-%s«"
+msgid "no class name specified with \"%s\""
+msgstr "kein Klassenname mit \"%s\" angegeben"
-#: c-opts.c:359
+#: c-opts.c:145
#, c-format
-msgid "no class name specified with \"-%s\""
-msgstr "Kein Klassenname mit »-%s« angegeben"
+msgid "assertion missing after \"%s\""
+msgstr "Behauptung fehlt hinter \"%s\""
-#: c-opts.c:366
+#: c-opts.c:150
#, c-format
-msgid "missing filename after \"-%s\""
-msgstr "Fehlender Dateiname hinter »-%s«"
+msgid "macro name missing after \"%s\""
+msgstr "Makroname fehlt hinter \"%s\""
-#: c-opts.c:371
+#: c-opts.c:157
#, c-format
-msgid "missing target after \"-%s\""
-msgstr "Fehlendes Ziel hinter »-%s«"
+msgid "missing path after \"%s\""
+msgstr "fehlender Pfad hinter \"%s\""
-#: c-opts.c:505
+#: c-opts.c:166
#, c-format
-msgid "options array incorrectly sorted: %s is before %s"
-msgstr "Optionenliste falsch sortiert: %s kommt vor %s"
+msgid "missing filename after \"%s\""
+msgstr "fehlender Dateiname hinter \"%s\""
-#: c-opts.c:550
+#: c-opts.c:171
#, c-format
-msgid "too many filenames given. Type %s --help for usage"
-msgstr "Zu viele Dateinamen angegeben. Geben sie »%s --help« ein für Hilfe"
+msgid "missing makefile target after \"%s\""
+msgstr "fehlendes Makefile-Ziel hinter \"%s\""
-#: c-opts.c:937
-msgid "-Wno-strict-prototypes is not supported in C++"
-msgstr "-Wno-strict-prototypes wird in C++ nicht unterstützt"
+#: c-opts.c:291
+msgid "-I- specified twice"
+msgstr "-I- doppelt angegeben"
-#: c-opts.c:1017
+#: c-opts.c:692
#, c-format
msgid "switch \"%s\" is no longer supported"
msgstr "Option »%s« wird nicht mehr unterstützt"
-#: c-opts.c:1033
-#, c-format
-msgid "switch \"%s\" is deprecated, please see documentation for details"
-msgstr "Option »%s« ist veraltet, schauen sie in die Dokumentation für Details"
-
-#: c-opts.c:1153
-msgid "-fhandle-exceptions has been renamed to -fexceptions (and is now on by default)"
+#: c-opts.c:816
+msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr "-fhandle-exceptions wurde in -fexceptions umbenannt (und ist nun voreingestellt)"
-#: c-opts.c:1273
+#: c-opts.c:982
msgid "output filename specified twice"
msgstr "Ausgabedatei doppelt angegeben"
-#: c-opts.c:1387
+#: c-opts.c:1106
msgid "-Wformat-y2k ignored without -Wformat"
msgstr "-Wformat-y2k wird ohne -Wformat ignoriert"
-#: c-opts.c:1389
+#: c-opts.c:1108
msgid "-Wformat-extra-args ignored without -Wformat"
msgstr "-Wformat-extra-args wird ohne -Wformat ignoriert"
-#: c-opts.c:1391
+#: c-opts.c:1110
msgid "-Wformat-zero-length ignored without -Wformat"
msgstr "-Wformat-zero-length wird ohne -Wformat ignoriert"
-#: c-opts.c:1393
+#: c-opts.c:1112
msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr "-Wformat-nonliteral wird ohne -Wformat ignoriert"
-#: c-opts.c:1395
+#: c-opts.c:1114
msgid "-Wformat-security ignored without -Wformat"
msgstr "-Wformat-security wird ohne -Wformat ignoriert"
-#: c-opts.c:1397
+#: c-opts.c:1116
msgid "-Wmissing-format-attribute ignored without -Wformat"
msgstr "-Wmissing-format-attribute wird ohne -Wformat ignoriert"
-#: c-opts.c:1419
+#: c-opts.c:1130
#, c-format
-msgid "opening output file %s"
-msgstr "Ausgabedatei »%s« wird geöffnet"
+msgid "opening output file %s: %m"
+msgstr "Ausgabedatei »%s« wird geöffnet: %m"
-#: c-opts.c:1474
+#: c-opts.c:1135
#, c-format
-msgid "opening dependency file %s"
-msgstr "Abhängigkeitsdatei »%s« wird geöffnet"
+msgid "too many filenames given. Type %s --help for usage"
+msgstr "zu viele Dateinamen angegeben. Geben sie »%s --help« für Hilfe ein"
-#: c-opts.c:1484
-#, c-format
-msgid "closing dependency file %s"
-msgstr "Abhängigkeitsdatei »%s« wird geschlossen"
+#: c-opts.c:1213
+msgid "YYDEBUG not defined"
+msgstr "YYDEBUG ist nicht definiert"
-#: c-opts.c:1487
+#: c-opts.c:1260
#, c-format
-msgid "when writing output to %s"
-msgstr "beim Schreiben der Ausgabe nach %s"
+msgid "opening dependency file %s: %m"
+msgstr "Abhängigkeitsdatei »%s« wird geöffnet: %m"
-#: c-opts.c:1567
-msgid "to generate dependencies you must specify either -M or -MM"
-msgstr "Um Abhängigkeiten zu erzeugen müssen Sie entweder -M oder -MM angeben"
+#: c-opts.c:1270
+#, c-format
+msgid "closing dependency file %s: %m"
+msgstr "Abhängigkeitsdatei »%s« wird geschlossen: %m"
-#: c-opts.c:1715
+#: c-opts.c:1273
#, c-format
-msgid "\"-%c%s%s\" is valid for %s but not for %s"
-msgstr "\"-%c%s%s\" ist gültig für %s, aber nicht für %s"
+msgid "when writing output to %s: %m"
+msgstr "beim Schreiben der Ausgabe nach %s: %m"
-#. To keep the lines from getting too long for some compilers, limit
-#. to about 500 characters (6 lines) per chunk.
-#: c-opts.c:1726
-msgid ""
-"Switches:\n"
-" -include <file> Include the contents of <file> before other files\n"
-" -imacros <file> Accept definition of macros in <file>\n"
-" -iprefix <path> Specify <path> as a prefix for next two options\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"
-msgstr ""
-"Optionen:\n"
-" -include <Datei> Inhalt von <Datei> vor anderen Dateien einfügen\n"
-" -imacros <Datei> Die Definition von Makros in <Datei> akzeptieren\n"
-" -iprefix <Pfad> <Pfad> als Präfix für die nächsten beiden Optionen\n"
-" angeben\n"
-" -iwithprefix <Verz> <Verz> zum Ende des System-Einfüge-Pfades\n"
-" hinzufügen\n"
-" -iwithprefixbefore <Verz> <Verz> zum das Ende des Haupt-Einfüge-Pfades\n"
-" hinzufügen\n"
-" -isystem <Verz> <Verz> zum Anfang des System-Einfüge-Pfades\n"
-" hinzufügen\n"
-
-#: c-opts.c:1735
-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 docs\n"
-" -nostdinc Do not search system include directories\n"
-" (dirs specified with -isystem will still be used)\n"
-" -nostdinc++ Do not search system include directories for C++\n"
-" -o <file> Put output into <file>\n"
-msgstr ""
-" -idirafter <Verz> <Verz> zum Ende des System-Einfüge-Pfades\n"
-" hinzufügen\n"
-" -I <Verz> <Verz> zum Anfang des Haupt-Einfüge-Pfades\n"
-" hinzufügen\n"
-" -I- Feineinstellung des Einfügepfades; siehe info-\n"
-" Seiten\n"
-" -nostdinc Keine System-Einfüge-Verzeichnisse durchsuchen\n"
-" (-isystem Verzeichnisse werden aber verwendet)\n"
-" -nostdinc++ Keine System-Einfüge-Verzeichnisse nach C++\n"
-" durchsuchen\n"
-" -o <Datei> Ausgabe in <Datei> leiten\n"
-
-#: c-opts.c:1744
-msgid ""
-" -trigraphs Support ISO C trigraphs\n"
-" -std=<std name> Specify the conformance standard; one of:\n"
-" gnu89, gnu99, c89, c99, iso9899:1990,\n"
-" iso9899:199409, iso9899:1999, c++98\n"
-" -w Inhibit warning messages\n"
-" -W[no-]trigraphs Warn if trigraphs are encountered\n"
-" -W[no-]comment{s} Warn if one comment starts inside another\n"
-msgstr ""
-" -trigraphs ISO-C-»Trigraphs« unterstützen\n"
-" -std=<Name> Standardkonformität angeben; eines von:\n"
-" gnu89, gnu99, c89, c99, iso9899:1990,\n"
-" iso9899:199409, iso9899:1999, c++98\n"
-" -w Warnungen unterdrücken\n"
-" -W[no-]trigraphs Warnungen bei »Trigraphs«\n"
-" -W[no-]comment{s} Warnungen bei geschachtelten Kommentaren\n"
-
-#: c-opts.c:1753
-msgid ""
-" -W[no-]traditional Warn about features not present in traditional C\n"
-" -W[no-]undef Warn if an undefined macro is used by #if\n"
-" -W[no-]import Warn about the use of the #import directive\n"
-msgstr ""
-" -W[no-]traditional Warnungen bei Merkmalen von traditionellem C\n"
-" -W[no-]undef Warnungen bei Verwendung undefinierter Makros\n"
-" mit #if\n"
-" -W[no-]import Warnungen über die Verwendung der Direktive\n"
-" #import\n"
+#: c-opts.c:1343
+msgid "to generate dependencies you must specify either -M or -MM"
+msgstr "um Abhängigkeiten zu erzeugen, müssen Sie entweder -M oder -MM angeben"
-#: c-opts.c:1758
-msgid ""
-" -W[no-]error Treat all warnings as errors\n"
-" -W[no-]system-headers Do not suppress warnings from system headers\n"
-" -W[no-]all Enable most preprocessor warnings\n"
-msgstr ""
-" -W[no-]error Alle Warnungen als Fehler behandeln\n"
-" -W[no-]system-headers Keine Warnungen von System-Headern unterdrücken\n"
-" -W[no-]all Die meisten Präprozessorwarnungen einschalten\n"
+#: c-opts.c:1403
+msgid "<built-in>"
+msgstr "<eingebaut>"
-#: c-opts.c:1763
-msgid ""
-" -M Generate make dependencies\n"
-" -MM As -M, but ignore system header files\n"
-" -MD Generate make dependencies and compile\n"
-" -MMD As -MD, but ignore system header files\n"
-" -MF <file> Write dependency output to the given file\n"
-" -MG Treat missing header file as generated files\n"
-msgstr ""
-" -M Make-Abhängigkeiten generieren\n"
-" -MM Wie -M, aber System-Header ignorieren\n"
-" -MD Make-Abhängigkeiten generieren und kompilieren\n"
-" -MMD Wie -MD, aber System-Header ignorieren\n"
-" -MF <Datei> Abhängigkeiten-Ausgabe in die angegebene Datei\n"
-" schreiben\n"
-" -MG Fehlende Header-Dateien als generierte Dateien\n"
-" behandeln\n"
-
-#: c-opts.c:1771
-msgid ""
-" -MP\t\t\t Generate phony targets for all headers\n"
-" -MQ <target> Add a MAKE-quoted target\n"
-" -MT <target> Add an unquoted target\n"
-msgstr ""
-" -MP\t\t\t Generiere falsche (phony) Ziele für Header\n"
-" -MQ <Ziel> MAKE-zitiertes Ziel hinzufügen\n"
-" -MT <Ziel> Ein unzitiertes Ziel hinzufügen\n"
+#: c-opts.c:1418
+msgid "<command line>"
+msgstr "<Kommandozeile>"
-#: c-opts.c:1776
-msgid ""
-" -D<macro> Define a <macro> with string '1' as its value\n"
-" -D<macro>=<val> Define a <macro> with <val> as its value\n"
-" -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"
-msgstr ""
-" -D<Makro> <Makro> mit Wert \"1\" definieren\n"
-" -D<Makro>=<Wert> <Makro> mit Wert <Wert> definieren\n"
-" -A<Frage>=<Antwort> Die <Antwort> auf <Frage> annehmen\n"
-" -A-<Frage>=<Antwort> Die <Antwort> auf <Frage> abschalten\n"
-" -U<Makro> <Makro> löschen\n"
-" -v Version anzeigen\n"
-
-#: c-opts.c:1784
-msgid ""
-" -H Print the name of header files as they are used\n"
-" -C Do not discard comments\n"
-" -dM Display a list of macro definitions active at end\n"
-" -dD Preserve macro definitions in output\n"
-" -dN As -dD except that only the names are preserved\n"
-" -dI Include #include directives in the output\n"
-msgstr ""
-" -H Namen von Header-Dateien anzeigen wenn sie\n"
-" verwendet werden\n"
-" -C Kommentare nicht streichen\n"
-" -dM Am Ende eine Liste von Makrodefinitionen anzeigen\n"
-" -dD Makrodefinitionen in der Ausgabe bewahren\n"
-" -dN Wie -dD nur dass die Namen bewahrt werden\n"
-" -dI #include-Anweisungen in die Ausgabe einfügen\n"
-
-#: c-opts.c:1792
-msgid ""
-" -f[no-]preprocessed Treat the input file as already preprocessed\n"
-" -ftabstop=<number> Distance between tab stops for column reporting\n"
-" -P Do not generate #line directives\n"
-" -remap Remap file names when including files\n"
-" --help Display this information\n"
-msgstr ""
-" -f[no-]preprocessed Eingabedatei als bereits vorverarbeitet behandeln\n"
-" -ftabstop=<Zahl> Tabulatorenabstand für Spaltenmeldungen\n"
-" -P Keine #line-Direktiven generieren\n"
-" -remap Dateinamen beim Einfügen neu abbilden\n"
-" --help Diese Information anzeigen\n"
+#: c-opts.c:1502
+msgid "too late for # directive to set debug directory"
+msgstr "zu spät für »#«-Direktive, um Debug-Verzeichnis festzulegen"
#. Like YYERROR but do call yyerror.
-#: c-parse.y:55 parse.y:48 objc-parse.y:55
+#: c-parse.y:54 c-parse.c:5381 gengtype-yacc.c:1514 java/parse-scan.c:3063
+#: java/parse.c:6067 objc/objc-parse.y:54 objc/objc-parse.c:6644
msgid "syntax error"
msgstr "Syntaxfehler"
-#: /usr/share/bison/bison.simple:179
+#: c-parse.c:2118 gengtype-yacc.c:545 java/parse-scan.c:1932 java/parse.c:2875
+#: objc/objc-parse.c:2717
msgid "syntax error: cannot back up"
-msgstr "Syntaxfehler: Kann nicht zurücksetzen"
+msgstr "Syntaxfehler: es kann nicht zurückgesetzt werden"
-#: c-parse.y:325 objc-parse.y:346
+#: c-parse.y:320 objc/objc-parse.y:344
msgid "ISO C forbids an empty source file"
msgstr "ISO-C erlaubt keine leeren Quelldateien"
-#: c-parse.y:366 c-typeck.c:6916 objc-parse.y:388
+#: c-parse.y:349 c-typeck.c:6217 objc/objc-parse.y:374
msgid "argument of `asm' is not a constant string"
msgstr "Argument von »asm« ist keine konstante Zeichenkette"
-#: c-parse.y:374 objc-parse.y:396
+#: c-parse.y:357 objc/objc-parse.y:382
msgid "ISO C forbids data definition with no type or storage class"
msgstr "ISO-C verbietet Datendefinition ohne Typ und Speicherklasse"
-#: c-parse.y:376 objc-parse.y:398
+#: c-parse.y:359 objc/objc-parse.y:384
msgid "data definition has no type or storage class"
msgstr "Datendefinition hat keinen Typ oder Speicherklasse"
-#: c-parse.y:389 objc-parse.y:411
+#: c-parse.y:372 objc/objc-parse.y:397
msgid "ISO C does not allow extra `;' outside of a function"
msgstr "ISO-C erlaubt kein extra »;« außerhalb einer Funktion"
-#: c-parse.y:449 cppexp.c:1312
+#: c-parse.y:429 cppexp.c:1253
msgid "traditional C rejects the unary plus operator"
-msgstr "Traditionelles C weist den unären Plus-Operator zurück"
+msgstr "traditionelles C weist den unären Plus-Operator zurück"
-#: c-parse.y:496 objc-parse.y:518
+#: c-parse.y:476 objc/objc-parse.y:501
msgid "`sizeof' applied to a bit-field"
-msgstr "»sizeof«-Operator auf ein Bitfeld angewendet"
+msgstr "»sizeof«-Operator auf ein Bitfeld angewandt"
-#: c-parse.y:583 objc-parse.y:605
+#: c-parse.y:563 objc/objc-parse.y:588
msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr "ISO-C verbietet das Weglassen des mittleren Terms eines ?:-Ausdruckes"
-#: c-parse.y:632 objc-parse.y:654
+#: c-parse.y:611 objc/objc-parse.y:636
msgid "ISO C89 forbids compound literals"
msgstr "ISO-C89 verbietet zusammengesetzte Literale"
-#: c-parse.y:646 objc-parse.y:668
+#: c-parse.y:625 objc/objc-parse.y:650
msgid "ISO C forbids braced-groups within expressions"
-msgstr "ISO-C verbietet geklammerte Gruppen innerhalb von Ausrücken"
+msgstr "ISO-C verbietet geklammerte Gruppen innerhalb von Ausdrücken"
-#: c-parse.y:677 objc-parse.y:699
+#: c-parse.y:653 objc/objc-parse.y:678
msgid "first argument to __builtin_choose_expr not a constant"
-msgstr "Das erste Argument für __builtin_choose_expr ist keine Konstante"
+msgstr "das erste Argument für __builtin_choose_expr ist keine Konstante"
-#: c-parse.y:721 objc-parse.y:767
+#: c-parse.y:696 objc/objc-parse.y:737
msgid "traditional C rejects ISO C style function definitions"
-msgstr "Traditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurück"
-
-#: c-parse.y:985 c-parse.y:991 c-parse.y:997 c-parse.y:1003 c-parse.y:1024
-#: c-parse.y:1030 c-parse.y:1036 c-parse.y:1042 c-parse.y:1075 c-parse.y:1081
-#: c-parse.y:1087 c-parse.y:1093 c-parse.y:1138 c-parse.y:1144 c-parse.y:1150
-#: c-parse.y:1156 parse.y:1933 parse.y:1940 parse.y:1975 objc-parse.y:1031
-#: objc-parse.y:1037 objc-parse.y:1043 objc-parse.y:1049 objc-parse.y:1070
-#: objc-parse.y:1076 objc-parse.y:1082 objc-parse.y:1088 objc-parse.y:1121
-#: objc-parse.y:1127 objc-parse.y:1133 objc-parse.y:1139 objc-parse.y:1184
-#: objc-parse.y:1190 objc-parse.y:1196 objc-parse.y:1202
+msgstr "traditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurück"
+
+#: c-parse.y:699 c-parse.y:705 objc/objc-parse.y:740 objc/objc-parse.y:746
+msgid "old-style parameter declaration"
+msgstr "Parameterdeklaration alten Stils"
+
+#: c-parse.y:967 c-parse.y:973 c-parse.y:979 c-parse.y:985 c-parse.y:1006
+#: c-parse.y:1012 c-parse.y:1018 c-parse.y:1024 c-parse.y:1057 c-parse.y:1063
+#: c-parse.y:1069 c-parse.y:1075 c-parse.y:1120 c-parse.y:1126 c-parse.y:1132
+#: c-parse.y:1138 objc/objc-parse.y:1008 objc/objc-parse.y:1014
+#: objc/objc-parse.y:1020 objc/objc-parse.y:1026 objc/objc-parse.y:1047
+#: objc/objc-parse.y:1053 objc/objc-parse.y:1059 objc/objc-parse.y:1065
+#: objc/objc-parse.y:1098 objc/objc-parse.y:1104 objc/objc-parse.y:1110
+#: objc/objc-parse.y:1116 objc/objc-parse.y:1161 objc/objc-parse.y:1167
+#: objc/objc-parse.y:1173 objc/objc-parse.y:1179
#, c-format
msgid "`%s' is not at beginning of declaration"
msgstr "»%s« ist nicht am Beginn einer Deklaration"
-#: c-parse.y:1441 objc-parse.y:1496
+#: c-parse.y:1300 objc/objc-parse.y:1350
+msgid "`typeof' applied to a bit-field"
+msgstr "»typeof« auf ein Bitfeld angewandt"
+
+#: c-parse.y:1427 objc/objc-parse.y:1477
msgid "ISO C forbids empty initializer braces"
msgstr "ISO-C verbietet leere Initialisierungsklammern"
-#: c-parse.y:1455 objc-parse.y:1510
+#: c-parse.y:1441 objc/objc-parse.y:1491
msgid "ISO C89 forbids specifying subobject to initialize"
msgstr "ISO-C89 verbietet die Angabe von zu initialisierenden Unterobjekten"
-#: c-parse.y:1458 objc-parse.y:1513
+#: c-parse.y:1444 objc/objc-parse.y:1494
msgid "obsolete use of designated initializer without `='"
-msgstr "Veraltete Verwendung einer bestimmten Initialisierung ohne »=«"
+msgstr "veraltete Verwendung einer bestimmten Initialisierung ohne »=«"
-#: c-parse.y:1462 objc-parse.y:1517
+#: c-parse.y:1448 objc/objc-parse.y:1498
msgid "obsolete use of designated initializer with `:'"
-msgstr "Veraltete Verwendung einer bestimmten Initialisierung mit »:«"
+msgstr "veraltete Verwendung einer bestimmten Initialisierung mit »:«"
-#: c-parse.y:1489 objc-parse.y:1544
+#: c-parse.y:1475 objc/objc-parse.y:1525
msgid "ISO C forbids specifying range of elements to initialize"
msgstr "ISO-C verbietet die Angabe eines zu initialisierenden Wertebereiches"
-#: c-parse.y:1497 c-parse.y:1528 objc-parse.y:1552 objc-parse.y:1583
+#: c-parse.y:1483 c-parse.y:1514 objc/objc-parse.y:1533 objc/objc-parse.y:1564
msgid "ISO C forbids nested functions"
msgstr "ISO-C verbietet verschachtelte Funktionen"
-#: c-parse.y:1703 objc-parse.y:1760
+#: c-parse.y:1691 objc/objc-parse.y:1743
msgid "ISO C forbids forward references to `enum' types"
msgstr "ISO-C verbietet Vorwärts-Referenzen auf »enum«-Typen"
-#: c-parse.y:1715 parse.y:2411 objc-parse.y:1772
+#: c-parse.y:1703 cp/parser.c:9282 objc/objc-parse.y:1755
msgid "comma at end of enumerator list"
msgstr "Komma am Ende der Aufzählungsliste"
-#: c-parse.y:1723 objc-parse.y:1780
+#: c-parse.y:1723 objc/objc-parse.y:1775
msgid "no semicolon at end of struct or union"
-msgstr "Kein Semikolon am Ende von »struct« oder »union«"
+msgstr "kein Semikolon am Ende von »struct« oder »union«"
-#: c-parse.y:1732 objc-parse.y:1789 objc-parse.y:2864
+#: c-parse.y:1732 objc/objc-parse.y:1784 objc/objc-parse.y:2846
msgid "extra semicolon in struct or union specified"
-msgstr "Zusätzliches Semikolon in »struct« oder »union« angegeben"
+msgstr "zusätzliches Semikolon in »struct« oder »union« angegeben"
-#: c-parse.y:1745 objc-parse.y:1816
+#: c-parse.y:1745 objc/objc-parse.y:1800
msgid "ISO C doesn't support unnamed structs/unions"
msgstr "ISO-C unterstützt keine namenlosen structs/unions"
-#: c-parse.y:1754 objc-parse.y:1825
+#: c-parse.y:1754 objc/objc-parse.y:1809
msgid "ISO C forbids member declarations with no members"
-msgstr "ISO-C verbietet Member-Deklarationen ohne Member"
+msgstr "ISO-C verbietet Elementdeklarationen ohne Elemente"
-#: c-parse.y:1913 objc-parse.y:1984
-msgid "deprecated use of label at end of compound statement"
-msgstr "Veraltete Verwendung einer Marke am Ende einer Verbundanweisung"
+#: c-parse.y:1915 objc/objc-parse.y:1970
+msgid "label at end of compound statement"
+msgstr "Marke am Ende einer Verbundanweisung"
-#: c-parse.y:1930 objc-parse.y:2001
-msgid "ISO C89 forbids mixed declarations and code"
-msgstr "ISO-C89 verbietet gemischte Deklarationen und Kode"
+#: c-parse.y:1934 objc/objc-parse.y:1989
+msgid "ISO C90 forbids mixed declarations and code"
+msgstr "ISO-C90 verbietet gemischte Deklarationen und Code"
-#: c-parse.y:2005 objc-parse.y:2080
+#: c-parse.y:2012 objc/objc-parse.y:2069
msgid "ISO C forbids label declarations"
msgstr "ISO-C verbietet Markendeklarationen"
-#: c-parse.y:2055 parse.y:1638 objc-parse.y:2130
+#: c-parse.y:2062 objc/objc-parse.y:2119
msgid "braced-group within expression allowed only inside a function"
-msgstr "Geklammerte Gruppe innerhalb Ausdruck nur in Funktion erlaubt"
+msgstr "geklammerte Gruppe innerhalb eines Ausdrucks nur in Funktion erlaubt"
-#: c-parse.y:2182 objc-parse.y:2257
+#: c-parse.y:2184 objc/objc-parse.y:2241
msgid "empty body in an else-statement"
-msgstr "Leerer Körper in einer else-Anweisung"
+msgstr "leerer Körper in einer else-Anweisung"
+
+#: c-parse.y:2192 objc/objc-parse.y:2249
+msgid "%Hempty body in an if-statement"
+msgstr "%Hleerer Körper in einer if-Anweisung"
-#: c-parse.y:2303 objc-parse.y:2378
+#: c-parse.y:2272 cp/parser.c:6028 objc/objc-parse.y:2329
+msgid "break statement not within loop or switch"
+msgstr "break-Anweisung nicht innerhalb einer Schleife oder »switch«"
+
+#: c-parse.y:2281 cp/parser.c:6039 objc/objc-parse.y:2338
+msgid "continue statement not within a loop"
+msgstr "continue-Anweisung nicht innerhalb einer Schleife"
+
+#: c-parse.y:2323 objc/objc-parse.y:2380
msgid "ISO C forbids `goto *expr;'"
msgstr "ISO-C verbietet »goto *expr;«"
-#: c-parse.y:2403 objc-parse.y:2478
-msgid "ISO C forbids forward parameter declarations"
-msgstr "ISO-C verbietet Vorwärtsdeklaration für Parameter"
-
#. 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:2429 objc-parse.y:2504
+#: c-parse.y:2440 objc/objc-parse.y:2548
msgid "ISO C requires a named argument before `...'"
msgstr "ISO-C erfordert ein benanntes Argument vor »...«"
-#: c-parse.y:2526 objc-parse.y:2601
+#: c-parse.y:2538 objc/objc-parse.y:2646
msgid "`...' in old-style identifier list"
msgstr "»...« in einer Bezeichnerliste alten Stils"
-#: /usr/share/bison/bison.simple:795
-msgid "parse error; also virtual memory exhausted"
-msgstr "Fehler beim Parsen; auch virtueller Speicher verbraucht"
+#: c-parse.c:5377 gengtype-yacc.c:1510 java/parse-scan.c:3059
+#: java/parse.c:6063 objc/objc-parse.c:6640
+msgid "syntax error; also virtual memory exhausted"
+msgstr "Syntaxfehler; auch virtueller Speicher verbraucht"
-#: /usr/share/bison/bison.simple:799 cp/spew.c:364
-msgid "parse error"
-msgstr "Fehler beim Parsen"
-
-#: /usr/share/bison/bison.simple:924
+#: c-parse.c:5495 gengtype-yacc.c:1628 java/parse-scan.c:3177
+#: java/parse.c:6181 objc/objc-parse.c:6758
msgid "parser stack overflow"
msgstr "Parser-Keller-Ãœberlauf"
-#: c-parse.y:2838 cp/spew.c:1525 objc-parse.y:3537
+#: c-parse.y:2968 objc/objc-parse.y:3663
#, c-format
-msgid "%s at end of input"
-msgstr "%s am Ende der Eingabe"
+msgid "syntax error at '%s' token"
+msgstr "Syntaxfehler beim Token »%s«"
-#: c-parse.y:2844 cp/spew.c:1533 objc-parse.y:3543
+#: c-pch.c:112
#, c-format
-msgid "%s before %s'%c'"
-msgstr "%s vor %s'%c'"
+msgid "can't create precompiled header %s: %m"
+msgstr "der vorkompilierte Header »%s« kann nicht erzeugt werden: %m"
-#: c-parse.y:2846 cp/spew.c:1535 objc-parse.y:3545
+#: c-pch.c:132
#, c-format
-msgid "%s before %s'\\x%x'"
-msgstr "%s vor %s'\\x%x'"
+msgid "can't write to %s: %m"
+msgstr "in %s kann nicht geschrieben werden: %m"
-#: c-parse.y:2850 cp/spew.c:1542 objc-parse.y:3549
+#: c-pch.c:138
#, c-format
-msgid "%s before string constant"
-msgstr "%s vor Zeichenkettenkonstante"
+msgid "`%s' is not a valid output file"
+msgstr "»%s« ist keine gültige Ausgabedatei"
-#: c-parse.y:2852 cp/spew.c:1544 objc-parse.y:3551
+#: c-pch.c:167 c-pch.c:183 c-pch.c:195
#, c-format
-msgid "%s before numeric constant"
-msgstr "%s vor numerischer Konstante"
+msgid "can't write %s: %m"
+msgstr "%s kann nicht geschrieben werden: %m"
-#: c-parse.y:2854 objc-parse.y:3553
+#: c-pch.c:173
#, c-format
-msgid "%s before \"%s\""
-msgstr "%s vor \"%s\""
+msgid "can't seek in %s: %m"
+msgstr "in %s kann nicht positioniert werden: %m"
-#: c-parse.y:2856 objc-parse.y:3555
+#: c-pch.c:181 c-pch.c:221 c-pch.c:249 c-pch.c:254 c-pch.c:324
#, c-format
-msgid "%s before '%s' token"
-msgstr "%s vor »%s«"
+msgid "can't read %s: %m"
+msgstr "%s kann nicht gelesen werden: %m"
-#: c-parse.y:2921
-msgid "traditional C rejects string concatenation"
-msgstr "Traditionelles C weist Stringverkettung zurück"
+#: c-pch.c:234
+#, c-format
+msgid "%s: not compatible with this GCC version"
+msgstr "%s: nicht kompatibel mit dieser Version des GCC"
-#: c-parse.y:3047 objc-parse.y:3779
+#. It's a PCH for the wrong language.
+#: c-pch.c:237
#, c-format
-msgid "syntax error at '%s' token"
-msgstr "Syntaxfehler bei »%s«"
+msgid "%s: not for %s"
+msgstr "%s: nicht für %s"
+
+#. Not any kind of PCH.
+#: c-pch.c:241
+#, c-format
+msgid "%s: not a PCH file"
+msgstr "%s: keine PCH-Datei"
+
+#: c-pch.c:260
+#, c-format
+msgid "%s: created on host `%.*s', but used on host `%s'"
+msgstr "%s: auf Rechner »%.*s« erzeugt, aber auf Rechner »%s« verwendet"
+
+#: c-pch.c:270
+#, c-format
+msgid "%s: created for target `%.*s', but used for target `%s'"
+msgstr "%s: für das Ziel »%.*s« erzeugt, aber für das Ziel »%s« verwendet"
-#: c-pragma.c:107
+#: c-pch.c:283
+#, c-format
+msgid "%s: created by version `%.*s', but this is version `%s'"
+msgstr "%s: durch Version »%.*s« erzeugt, aber dies ist Version »%s«"
+
+#: c-pch.c:299
+#, c-format
+msgid "%s: created with -g%s, but used with -g%s"
+msgstr "%s: mit -g%s erzeugt, aber mit -g%s verwendet"
+
+#: c-pch.c:313
+#, c-format
+msgid "%s: had text segment at different address"
+msgstr "%s: Textsegment trat an anderer Adresse auf"
+
+#: c-pch.c:330 cpperror.c:176 gcc.c:6547
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: c-pch.c:361
+msgid "calling fdopen"
+msgstr "fdopen wird aufgerufen"
+
+#: c-pch.c:369 c-pch.c:381
+msgid "reading"
+msgstr "Lesen"
+
+#: c-pragma.c:106
msgid "#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
msgstr "#pragma pack (pop) gefunden ohne passendes #pragma pack (push, <n>)"
-#: c-pragma.c:125
+#: c-pragma.c:124
#, c-format
msgid "#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, <n>)"
msgstr "#pragma pack(pop, %s) gefunden ohne passendes #pragma pack(push, %s, <n>)"
-#: c-pragma.c:145
+#: c-pragma.c:144
msgid "#pragma pack(push[, id], <n>) is not supported on this target"
msgstr "#pragma pack(push[, id], <n>) wird von diesem Ziel nicht unterstützt"
-#: c-pragma.c:147
+#: c-pragma.c:146
msgid "#pragma pack(pop[, id], <n>) is not supported on this target"
msgstr "#pragma pack(pop[, id], <n>) wird von diesem Ziel nicht unterstützt"
-#: c-pragma.c:167
+#: c-pragma.c:165
msgid "missing '(' after '#pragma pack' - ignored"
-msgstr "Fehlendes »(« hinter »#pragma pack« - ignoriert"
+msgstr "fehlendes »(« hinter »#pragma pack« - ignoriert"
-#: c-pragma.c:180 c-pragma.c:230
+#: c-pragma.c:178 c-pragma.c:228
msgid "malformed '#pragma pack' - ignored"
-msgstr "Falsch geformtes »#pragma pack« - ignoriert"
+msgstr "falsch geformtes »#pragma pack« - ignoriert"
-#: c-pragma.c:185
+#: c-pragma.c:183
msgid "malformed '#pragma pack(push[, id], <n>)' - ignored"
-msgstr "Falsch geformtes »#pragma pack(push[, id], <n>)« - ignoriert"
+msgstr "falsch geformtes »#pragma pack(push[, id], <n>)« - ignoriert"
-#: c-pragma.c:187
+#: c-pragma.c:185
msgid "malformed '#pragma pack(pop[, id])' - ignored"
-msgstr "Falsch geformtes »#pragma pack(pop[, id])« - ignoriert"
+msgstr "falsch geformtes »#pragma pack(pop[, id])« - ignoriert"
-#: c-pragma.c:196
+#: c-pragma.c:194
#, c-format
msgid "unknown action '%s' for '#pragma pack' - ignored"
-msgstr "Unbekannte Aktion »%s« für »#pragma pack« - ignoriert"
+msgstr "unbekannte Aktion »%s« für »#pragma pack« - ignoriert"
-#: c-pragma.c:233
+#: c-pragma.c:231
msgid "junk at end of '#pragma pack'"
msgstr "Ausschuss am Ende von »#pragma pack«"
-#: c-pragma.c:247
+#: c-pragma.c:245
#, c-format
msgid "alignment must be a small power of two, not %d"
msgstr "Ausrichtung muss eine kleine Zweierpotenz sein, nicht %d"
-#: c-pragma.c:280
-#, c-format
-msgid "applying #pragma weak `%s' after first use results in unspecified behavior"
-msgstr "Anwendung von #pragma weak »%s« nach erster Benutzung führt zu nicht spezifiziertem Verhalten"
+#: c-pragma.c:278
+msgid "%Japplying #pragma weak '%D' after first use results in unspecified behavior"
+msgstr "%JAnwendung von #pragma weak »%D« nach erster Benutzung führt zu nicht spezifiziertem Verhalten"
-#: c-pragma.c:328 c-pragma.c:333
+#: c-pragma.c:325 c-pragma.c:330
msgid "malformed #pragma weak, ignored"
-msgstr "Falsch geformtes #pragma weak, ignoriert"
+msgstr "falsch geformtes #pragma weak, ignoriert"
-#: c-pragma.c:337
+#: c-pragma.c:334
msgid "junk at end of #pragma weak"
msgstr "Ausschuss am Ende von #pragma weak"
-#: c-pragma.c:372 c-pragma.c:377
+#: c-pragma.c:367 c-pragma.c:372
msgid "malformed #pragma redefine_extname, ignored"
-msgstr "Falsch geformtes #pragma redefine_extname, ignoriert"
+msgstr "falsch geformtes #pragma redefine_extname, ignoriert"
-#: c-pragma.c:382
+#: c-pragma.c:377
msgid "junk at end of #pragma redefine_extname"
msgstr "Ausschuss am Ende von #pragma redefine_extname"
-#: c-pragma.c:389 c-pragma.c:470
+#: c-pragma.c:384 c-pragma.c:462
msgid "#pragma redefine_extname conflicts with declaration"
msgstr "#pragma redefine_extname steht in Konflikt mit Deklaration"
-#: c-pragma.c:420
+#: c-pragma.c:413
msgid "malformed #pragma extern_prefix, ignored"
-msgstr "Falsch geformtes #pragma extern_prefix, ignoriert"
+msgstr "falsch geformtes #pragma extern_prefix, ignoriert"
-#: c-pragma.c:425
+#: c-pragma.c:418
msgid "junk at end of #pragma extern_prefix"
msgstr "Ausschuss am Ende von #pragma extern_prefix"
-#: c-pragma.c:457
+#: c-pragma.c:449
msgid "asm declaration conflicts with previous rename"
msgstr "asm-Deklaration steht in Konflikt mit vorheriger Umbenennung"
-#: c-semantics.c:565
-msgid "break statement not within loop or switch"
-msgstr "break-Anweisung nicht innerhalb einer Schleife oder »switch«"
+#: c-semantics.c:697
+msgid "destructor needed for `%D'"
+msgstr "Destruktor für »%D« benötigt"
-#: c-semantics.c:583
-msgid "continue statement not within a loop"
-msgstr "continue-Anweisung nicht innerhalb einer Schleife"
-
-#: c-semantics.c:678
-msgid "destructor needed for `%#D'"
-msgstr "Destruktor für »%#D« benötigt"
-
-#: c-semantics.c:679
+#: c-semantics.c:698
msgid "where case label appears here"
msgstr "wobei die case-Marke hier auftritt"
-#: c-semantics.c:682
+#: c-semantics.c:701
msgid "(enclose actions of previous case statements requiring destructors in their own scope.)"
-msgstr "(schließen sie Aktionen vorheriger case-Anweisungen, die Destruktoren benötigen, in ihrem eigenen Gültigkeitsbereich ein)"
+msgstr "(schließen Sie Aktionen vorheriger case-Anweisungen, die Destruktoren benötigen, in ihrem eigenen Gültigkeitsbereich ein)"
-#: c-semantics.c:725 c-typeck.c:6942 cp/semantics.c:897
+#: c-semantics.c:737 c-typeck.c:6239 cp/semantics.c:1070
#, c-format
msgid "%s qualifier ignored on asm"
msgstr "%s-Qualifizierer für asm ignoriert"
-#: c-typeck.c:123
+#: c-semantics.c:991
+msgid "will never be executed"
+msgstr "wird niemals ausgeführt"
+
+#: c-typeck.c:120
#, c-format
msgid "`%s' has an incomplete type"
msgstr "»%s« hat unvollständigen Typ"
-#: c-typeck.c:145 cp/call.c:2865
+#: c-typeck.c:142 cp/call.c:2532
msgid "invalid use of void expression"
-msgstr "Falsche Benutzung eines void-Ausdruckes"
+msgstr "falsche Benutzung eines void-Ausdruckes"
-#: c-typeck.c:153
+#: c-typeck.c:150
msgid "invalid use of flexible array member"
-msgstr "Falsche Benutzung eines flexiblen Feld-Members"
+msgstr "falsche Benutzung eines flexiblen Feldelements"
-#: c-typeck.c:159
+#: c-typeck.c:156
msgid "invalid use of array with unspecified bounds"
-msgstr "Falsche Benutzung eines Feldes mit unbekannten Grenzen"
+msgstr "falsche Benutzung eines Feldes mit unbekannten Grenzen"
-#: c-typeck.c:167
+#: c-typeck.c:164
#, c-format
msgid "invalid use of undefined type `%s %s'"
-msgstr "Falsche Benutzung des undefinierten Typs »%s %s«"
+msgstr "falsche Benutzung des undefinierten Typs »%s %s«"
#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
-#: c-typeck.c:171
+#: c-typeck.c:168
#, c-format
msgid "invalid use of incomplete typedef `%s'"
-msgstr "Falsche Benutzung des unvollständigen typedef »%s«"
+msgstr "falsche Benutzung des unvollständigen typedef »%s«"
-#: c-typeck.c:424 c-typeck.c:438
+#: c-typeck.c:415 c-typeck.c:430
msgid "function types not truly compatible in ISO C"
msgstr "Funktionstypen nicht wirklich kompatibel in ISO-C"
-#: c-typeck.c:603
+#: c-typeck.c:611
msgid "types are not quite compatible"
msgstr "Typen nicht sehr kompatibel"
-#: c-typeck.c:757 c-typeck.c:2687
+#: c-typeck.c:820
+msgid "function return types not compatible due to `volatile'"
+msgstr "Funktionsrückgabetypen nicht kompatibel wegen »volatile«"
+
+#: c-typeck.c:966 c-typeck.c:2143
msgid "arithmetic on pointer to an incomplete type"
msgstr "Arithmetik mit Zeiger auf unvollständigen Typen"
-#: c-typeck.c:1136
+#: c-typeck.c:1339
#, c-format
msgid "%s has no member named `%s'"
-msgstr "%s hat keinen Member »%s«"
+msgstr "%s hat kein Element namens »%s«"
-#: c-typeck.c:1172
+#: c-typeck.c:1375
#, c-format
msgid "request for member `%s' in something not a structure or union"
-msgstr "Anfrage nach Member »%s« in etwas, was keine Struktur oder union ist"
+msgstr "Anfrage nach Element »%s« in etwas, was keine Struktur oder Variante ist"
-#: c-typeck.c:1204
+#: c-typeck.c:1404
msgid "dereferencing pointer to incomplete type"
msgstr "Dereferenzierung eines Zeigers auf unvollständigen Typen"
-#: c-typeck.c:1208
+#: c-typeck.c:1408
msgid "dereferencing `void *' pointer"
-msgstr "Dereferenzierung eines »void *« Zeigers"
+msgstr "Dereferenzierung eines »void *«-Zeigers"
-#: c-typeck.c:1225 cp/typeck.c:2369
+#: c-typeck.c:1425 cp/typeck.c:2104
#, c-format
msgid "invalid type argument of `%s'"
-msgstr "Falsches Typ-Argument von »%s«"
+msgstr "falsches Typ-Argument von »%s«"
-#: c-typeck.c:1244 cp/typeck.c:2395
+#: c-typeck.c:1443 cp/typeck.c:2129
msgid "subscript missing in array reference"
msgstr "Index fehlt in Feldreferenz"
-#: c-typeck.c:1265 cp/typeck.c:2437
+#: c-typeck.c:1464 cp/typeck.c:2171
msgid "array subscript has type `char'"
msgstr "Feldindex hat Typ »char«"
-#: c-typeck.c:1273 c-typeck.c:1362 cp/typeck.c:2444 cp/typeck.c:2523
+#: c-typeck.c:1472 c-typeck.c:1561 cp/typeck.c:2175 cp/typeck.c:2261
msgid "array subscript is not an integer"
msgstr "Feldindex ist keine Ganzzahl"
-#: c-typeck.c:1306
+#: c-typeck.c:1505
msgid "ISO C forbids subscripting `register' array"
msgstr "ISO-C verbietet, ein »register«-Array zu indizieren"
-#: c-typeck.c:1308
+#: c-typeck.c:1507
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr "ISO-C90 verbietet, ein Nicht-L-Wert-Feld zu indizieren"
-#: c-typeck.c:1341
+#: c-typeck.c:1540
msgid "subscript has type `char'"
msgstr "Index hat Typ »char«"
-#: c-typeck.c:1357 cp/typeck.c:2518
+#: c-typeck.c:1556 cp/typeck.c:2256
msgid "subscripted value is neither array nor pointer"
-msgstr "Indizierter Wert ist weder ein Feld noch ein Zeiger"
+msgstr "indizierter Wert ist weder ein Feld noch ein Zeiger"
-#: c-typeck.c:1411
-#, c-format
-msgid "`%s' undeclared here (not in a function)"
-msgstr "»%s« ist hier nicht deklariert (nicht in einer Funktion)"
-
-#: c-typeck.c:1418
-#, c-format
-msgid "`%s' undeclared (first use in this function)"
-msgstr "»%s« nicht deklariert (erste Benutzung in dieser Funktion)"
-
-#: c-typeck.c:1423
-msgid "(Each undeclared identifier is reported only once"
-msgstr "(Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt"
-
-#: c-typeck.c:1424
-msgid "for each function it appears in.)"
-msgstr "für jede Funktion in der er auftritt.)"
-
-#: c-typeck.c:1441
+#: c-typeck.c:1586
#, c-format
msgid "local declaration of `%s' hides instance variable"
-msgstr "Lokale Deklaration von »%s« versteckt Instanzvariable"
+msgstr "lokale Deklaration von »%s« verdeckt Instanzvariable"
-#: c-typeck.c:1518
+#: c-typeck.c:1679
msgid "called object is not a function"
-msgstr "Gerufenes Objekt ist keine Funktion"
+msgstr "gerufenes Objekt ist keine Funktion"
-#: c-typeck.c:1604 cp/typeck.c:2829
+#. This situation leads to run-time undefined behavior. We can't,
+#. therefore, simply error unless we can prove that all possible
+#. executions of the program must execute the code.
+#: c-typeck.c:1711
+msgid "function called through a non-compatible type"
+msgstr "Funktion über nicht kompatiblen Typen aufgerufen"
+
+#: c-typeck.c:1805 cp/typeck.c:2544
msgid "too many arguments to function"
-msgstr "Zu viele Argumente für Funktion"
+msgstr "zu viele Argumente für Funktion"
-#: c-typeck.c:1625
+#: c-typeck.c:1826
#, c-format
msgid "type of formal parameter %d is incomplete"
msgstr "Typ des formalen Parameters %d ist unvollständig"
-#: c-typeck.c:1638
+#: c-typeck.c:1839
#, c-format
msgid "%s as integer rather than floating due to prototype"
-msgstr "%s als Ganzzahl statt Fließkomma aufgrund des Prototyps"
+msgstr "%s als Ganzzahl statt Gleitkomma aufgrund des Prototyps"
-#: c-typeck.c:1641
+#: c-typeck.c:1842
#, c-format
msgid "%s as integer rather than complex due to prototype"
msgstr "%s als Ganzzahl statt komplex aufgrund des Prototyps"
-#: c-typeck.c:1644
+#: c-typeck.c:1845
#, c-format
msgid "%s as complex rather than floating due to prototype"
-msgstr "%s als komplex statt Fließkomma aufgrund des Prototyps"
+msgstr "%s als komplex statt Gleitkomma aufgrund des Prototyps"
-#: c-typeck.c:1647
+#: c-typeck.c:1848
#, c-format
msgid "%s as floating rather than integer due to prototype"
-msgstr "%s als Fließkomma statt Ganzzahl aufgrund des Prototyps"
+msgstr "%s als Gleitkomma statt Ganzzahl aufgrund des Prototyps"
-#: c-typeck.c:1650
+#: c-typeck.c:1851
#, c-format
msgid "%s as complex rather than integer due to prototype"
msgstr "%s als komplex statt Ganzzahl aufgrund des Prototyps"
-#: c-typeck.c:1653
+#: c-typeck.c:1854
#, c-format
msgid "%s as floating rather than complex due to prototype"
-msgstr "%s als Gließkomma statt komplex aufgrund des Prototyps"
+msgstr "%s als Gleitkomma statt komplex aufgrund des Prototyps"
-#: c-typeck.c:1663
+#: c-typeck.c:1864
#, c-format
msgid "%s as `float' rather than `double' due to prototype"
msgstr "%s als »float« statt »double« aufgrund des Prototyps"
-#: c-typeck.c:1681
+#: c-typeck.c:1882
#, c-format
msgid "%s with different width due to prototype"
msgstr "%s mit anderer Breite aufgrund des Prototyps"
-#: c-typeck.c:1715
+#: c-typeck.c:1908
#, c-format
msgid "%s as unsigned due to prototype"
msgstr "%s als vorzeichenlos aufgrund des Prototyps"
-#: c-typeck.c:1717
+#: c-typeck.c:1910
#, c-format
msgid "%s as signed due to prototype"
msgstr "%s als vorzeichenbehaftet aufgrund des Prototyps"
-#: c-typeck.c:1751 cp/typeck.c:2933
+#: c-typeck.c:1944 cp/typeck.c:2650
msgid "too few arguments to function"
-msgstr "Zu wenige Argumente für Funktion"
+msgstr "zu wenige Argumente für Funktion"
-#: c-typeck.c:1793
+#: c-typeck.c:1984
msgid "suggest parentheses around + or - inside shift"
msgstr "Klammern um + oder - innerhalb von Schiebeoperation empfohlen"
-#: c-typeck.c:1800
+#: c-typeck.c:1991
msgid "suggest parentheses around && within ||"
msgstr "Klammern um && innerhalb von || empfohlen"
-#: c-typeck.c:1809
+#: c-typeck.c:2000
msgid "suggest parentheses around arithmetic in operand of |"
msgstr "Klammern um Arithmetik in Operand von | empfohlen"
-#: c-typeck.c:1812
+#: c-typeck.c:2003
msgid "suggest parentheses around comparison in operand of |"
msgstr "Klammern um Vergleich in Operand von | empfohlen"
-#: c-typeck.c:1821
+#: c-typeck.c:2012
msgid "suggest parentheses around arithmetic in operand of ^"
msgstr "Klammern um Arithmetik in Operand von ^ empfohlen"
-#: c-typeck.c:1824
+#: c-typeck.c:2015
msgid "suggest parentheses around comparison in operand of ^"
msgstr "Klammern um Vergleich in Operand von ^ empfohlen"
-#: c-typeck.c:1831
+#: c-typeck.c:2022
msgid "suggest parentheses around + or - in operand of &"
msgstr "Klammern um + oder - in Operand von & empfohlen"
-#: c-typeck.c:1834
+#: c-typeck.c:2025
msgid "suggest parentheses around comparison in operand of &"
msgstr "Klammern um Vergleich in Operand von & empfohlen"
-#: c-typeck.c:1841
+#: c-typeck.c:2032
msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
msgstr "Vergleiche wie X<=Y<=Z haben nicht ihre mathematische Bedeutung"
-#: c-typeck.c:2001 c-typeck.c:2036
-msgid "division by zero"
-msgstr "Teilung durch Null"
-
-#: c-typeck.c:2081 cp/typeck.c:3194
-msgid "right shift count is negative"
-msgstr "Rechts-Schiebe-Weite ist negativ"
-
-#: c-typeck.c:2088 cp/typeck.c:3200
-msgid "right shift count >= width of type"
-msgstr "Rechts-Schiebe-Weite >= Breite des Typs"
-
-#: c-typeck.c:2109 cp/typeck.c:3219
-msgid "left shift count is negative"
-msgstr "Links-Schiebe-Weite ist negativ"
-
-#: c-typeck.c:2112 cp/typeck.c:3221
-msgid "left shift count >= width of type"
-msgstr "Links-Schiebe-Weite >= Breite des Typs"
-
-#: c-typeck.c:2133
-msgid "shift count is negative"
-msgstr "Schiebeweite ist negativ"
-
-#: c-typeck.c:2135
-msgid "shift count >= width of type"
-msgstr "Schiebeweite >= Breite des Typs"
-
-#: c-typeck.c:2152 cp/typeck.c:3256
-msgid "comparing floating point with == or != is unsafe"
-msgstr "Vergleich von Fließkomma mit == oder != ist unsicher"
-
-#: c-typeck.c:2178 c-typeck.c:2184
-msgid "ISO C forbids comparison of `void *' with function pointer"
-msgstr "ISO-C verbietet Vergleich von »void *« mit Funktionszeiger"
-
-#: c-typeck.c:2187 c-typeck.c:2227 c-typeck.c:2255
-msgid "comparison of distinct pointer types lacks a cast"
-msgstr "In Vergleich verschiedener Zeigertypen fehlt Typkonvertierung"
-
-#: c-typeck.c:2201 c-typeck.c:2206 c-typeck.c:2275 c-typeck.c:2280
-msgid "comparison between pointer and integer"
-msgstr "Vergleich zwischen Zeiger und Ganzzahl"
-
-#: c-typeck.c:2222 c-typeck.c:2250
-msgid "ISO C forbids ordered comparisons of pointers to functions"
-msgstr "ISO-C verbietet geordnete Vergleiche zwischen Zeigern auf Funktionen"
-
-#: c-typeck.c:2247
-msgid "comparison of complete and incomplete pointers"
-msgstr "Vergleich von vollständigen und unvollständigen Zeigern"
-
-#: c-typeck.c:2263 c-typeck.c:2270
-msgid "ordered comparison of pointer with integer zero"
-msgstr "Geordneter Vergleich von Zeiger mit Ganzzahlnull"
-
-#: c-typeck.c:2294 cp/typeck.c:3389
-msgid "unordered comparison on non-floating point argument"
-msgstr "Ungeordneter Vergleich mit Nicht-Fließkomma-Argument"
-
-#: c-typeck.c:2505
-msgid "comparison between signed and unsigned"
-msgstr "Vergleich zwischen vorzeichenbehaftet und vorzeichenlos"
-
-#: c-typeck.c:2551 cp/typeck.c:3633
-msgid "comparison of promoted ~unsigned with constant"
-msgstr "Vergleich von weitergegebenem ~unsigned mit Konstante"
-
-#: c-typeck.c:2559 cp/typeck.c:3641
-msgid "comparison of promoted ~unsigned with unsigned"
-msgstr "Vergleich von weitergegebenem ~unsigned mit unsigned"
-
-#: c-typeck.c:2639
+#: c-typeck.c:2095
msgid "pointer of type `void *' used in subtraction"
msgstr "Zeiger des Typs »void *« in Subtraktion verwendet"
-#: c-typeck.c:2641
+#: c-typeck.c:2097
msgid "pointer to a function used in subtraction"
msgstr "Zeiger auf eine Funktion in Subtraktion verwendet"
-#: c-typeck.c:2738
+#: c-typeck.c:2191
msgid "wrong type argument to unary plus"
msgstr "Argument falschen Typs für unäres Plus"
-#: c-typeck.c:2751
+#: c-typeck.c:2204
msgid "wrong type argument to unary minus"
msgstr "Argument falschen Typs für unäres Minus"
-#: c-typeck.c:2768
+#: c-typeck.c:2221
msgid "ISO C does not support `~' for complex conjugation"
msgstr "ISO-C unterstützt nicht »~« für komplexe Konjugation"
-#: c-typeck.c:2774
+#: c-typeck.c:2227
msgid "wrong type argument to bit-complement"
msgstr "Argument falschen Typs für Bit-Komplement"
-#: c-typeck.c:2783
+#: c-typeck.c:2235
msgid "wrong type argument to abs"
msgstr "Argument falschen Typs für abs"
-#: c-typeck.c:2795
+#: c-typeck.c:2247
msgid "wrong type argument to conjugation"
msgstr "Argument falschen Typs für Konjugation"
-#: c-typeck.c:2809
+#: c-typeck.c:2261
msgid "wrong type argument to unary exclamation mark"
msgstr "Argument falschen Typs für unäres Ausrufungszeichen"
-#: c-typeck.c:2852
+#: c-typeck.c:2304
msgid "ISO C does not support `++' and `--' on complex types"
msgstr "ISO-C unterstützt kein »++« und »--« für komplexe Typen"
-#: c-typeck.c:2867 c-typeck.c:2899
+#: c-typeck.c:2319 c-typeck.c:2351
msgid "wrong type argument to increment"
msgstr "Argument falschen Typs für Inkrementierung"
-#: c-typeck.c:2869 c-typeck.c:2901
+#: c-typeck.c:2321 c-typeck.c:2353
msgid "wrong type argument to decrement"
msgstr "Argument falschen Typs für Dekrementierung"
-#: c-typeck.c:2890
+#: c-typeck.c:2342
msgid "increment of pointer to unknown structure"
-msgstr ""
+msgstr "Erhöhung eines Zeigers auf unbekannte Struktur"
-#: c-typeck.c:2892
+#: c-typeck.c:2344
msgid "decrement of pointer to unknown structure"
-msgstr ""
+msgstr "Verminderung eines Zeigers auf unbekannte Struktur"
-#: c-typeck.c:3029
-msgid "ISO C forbids the address of a cast expression"
-msgstr ""
-
-#: c-typeck.c:3039
+#: c-typeck.c:2469
msgid "invalid lvalue in unary `&'"
-msgstr ""
+msgstr "ungültiger L-Wert in unärem »&«"
-#: c-typeck.c:3071
+#: c-typeck.c:2501
#, c-format
msgid "attempt to take address of bit-field structure member `%s'"
-msgstr ""
-
-#: c-typeck.c:3180 c-typeck.c:4651 c-typeck.c:4667 c-typeck.c:4683
-#: final.c:3146 final.c:3148 gcc.c:4381 rtl-error.c:122 toplev.c:1694
-#: config/cris/cris.c:545 cp/spew.c:1538 cp/typeck.c:4367 java/expr.c:364
-#: java/verify.c:1467 java/verify.c:1468 java/verify.c:1483
-#, c-format
-msgid "%s"
-msgstr ""
+msgstr "Versuch, die Adresse des Bitfeld-Element »%s« einer Struktur zu verwenden"
-#: c-typeck.c:3241
-msgid "ISO C forbids use of conditional expressions as lvalues"
-msgstr ""
+#: c-typeck.c:2634
+msgid "use of conditional expressions as lvalues is deprecated"
+msgstr "die Verwendung bedingter Ausdrücke als L-Werte ist veraltet"
-#: c-typeck.c:3244
-msgid "ISO C forbids use of compound expressions as lvalues"
-msgstr ""
+#: c-typeck.c:2637
+msgid "use of compound expressions as lvalues is deprecated"
+msgstr "Verwendung zusammengesetzter Ausdrücke als L-Werte ist veraltet"
-#: c-typeck.c:3247
-msgid "ISO C forbids use of cast expressions as lvalues"
-msgstr ""
+#: c-typeck.c:2640
+msgid "use of cast expressions as lvalues is deprecated"
+msgstr "die Verwendung von cast-Ausdrücken als L-Werte ist veraltet"
-#: c-typeck.c:3264
+#: c-typeck.c:2655
#, c-format
msgid "%s of read-only member `%s'"
-msgstr ""
+msgstr "%s des schreibgeschützten Elementes »%s«"
-#: c-typeck.c:3268
+#: c-typeck.c:2659
#, c-format
msgid "%s of read-only variable `%s'"
-msgstr ""
+msgstr "%s der schreibgeschützten Variable »%s«"
-#: c-typeck.c:3271
+#: c-typeck.c:2662
#, c-format
msgid "%s of read-only location"
-msgstr ""
+msgstr "%s der schreibgeschützten Speicherstelle"
-#: c-typeck.c:3290
+#: c-typeck.c:2680
#, c-format
msgid "cannot take address of bit-field `%s'"
-msgstr ""
+msgstr "die Adresse des Bit-Feldes »%s« kann nicht ermittelt werden"
-#: c-typeck.c:3318
+#: c-typeck.c:2708 treelang/treetree.c:946
#, c-format
msgid "global register variable `%s' used in nested function"
-msgstr ""
+msgstr "globale Register-Variable »%s« in verschachtelter Funktion verwendet"
-#: c-typeck.c:3322
+#: c-typeck.c:2712 treelang/treetree.c:950
#, c-format
msgid "register variable `%s' used in nested function"
-msgstr ""
+msgstr "Register-Variable »%s« in verschachtelter Funktion verwendet"
-#: c-typeck.c:3329
+#: c-typeck.c:2719 treelang/treetree.c:957
#, c-format
msgid "address of global register variable `%s' requested"
-msgstr ""
+msgstr "Adresse der globalen Variable »%s« angefordert"
-#: c-typeck.c:3341
+#: c-typeck.c:2731
msgid "cannot put object with volatile field into register"
-msgstr ""
+msgstr "kann kein Objekt mit volatile-Feld in Register laden"
-#: c-typeck.c:3345
+#: c-typeck.c:2735 treelang/treetree.c:962
#, c-format
msgid "address of register variable `%s' requested"
-msgstr ""
+msgstr "Adresse der Register-Variablen »%s« angefordert"
-#: c-typeck.c:3453
+#: c-typeck.c:2820
msgid "signed and unsigned type in conditional expression"
-msgstr ""
+msgstr "Vorzeichenloser und -behafteter Typ in bedingtem Ausdruck"
-#: c-typeck.c:3460
+#: c-typeck.c:2827
msgid "ISO C forbids conditional expr with only one void side"
-msgstr ""
+msgstr "ISO-C verbietet bedingten Ausdruck mit nur einer void-Seite"
-#: c-typeck.c:3476 c-typeck.c:3483
+#: c-typeck.c:2843 c-typeck.c:2850
msgid "ISO C forbids conditional expr between `void *' and function pointer"
-msgstr ""
+msgstr "ISO-C verbietet bedingten Ausdruck zwischen »void *« und Funktionszeiger"
-#: c-typeck.c:3489
+#: c-typeck.c:2856
msgid "pointer type mismatch in conditional expression"
-msgstr ""
+msgstr "Zeigertyp passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:3496 c-typeck.c:3506
+#: c-typeck.c:2863 c-typeck.c:2873
msgid "pointer/integer type mismatch in conditional expression"
-msgstr ""
+msgstr "Zeiger-/Ganzzahltyp passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:3520
+#: c-typeck.c:2887
msgid "type mismatch in conditional expression"
-msgstr ""
+msgstr "Typ passt nicht in bedingtem Ausdruck"
-#: c-typeck.c:3591 cp/typeck.c:4623
+#: c-typeck.c:2947
msgid "left-hand operand of comma expression has no effect"
-msgstr ""
+msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt"
-#: c-typeck.c:3635
+#: c-typeck.c:2978
msgid "cast specifies array type"
-msgstr ""
+msgstr "Typkonvertierung gibt Feldtyp an"
-#: c-typeck.c:3641
+#: c-typeck.c:2984
msgid "cast specifies function type"
-msgstr ""
+msgstr "Typkonvertierung gibt Funktionstyp an"
-#: c-typeck.c:3651
+#: c-typeck.c:2994
msgid "ISO C forbids casting nonscalar to the same type"
-msgstr ""
+msgstr "ISO-C verbietet Typkonvertierung von Nicht-Skalar auf selben Typen"
-#: c-typeck.c:3670
+#: c-typeck.c:3012
msgid "ISO C forbids casts to union type"
-msgstr ""
+msgstr "ISO-C verbietet Typkonvertierung auf union-Typ"
-#: c-typeck.c:3685
+#: c-typeck.c:3020
msgid "cast to union type from type not present in union"
-msgstr ""
+msgstr "Typkonvertierung in union-Typ von nicht in union vorhandenem Typen"
-#: c-typeck.c:3736
+#: c-typeck.c:3071
msgid "cast adds new qualifiers to function type"
-msgstr ""
+msgstr "Typkonvertierung fügt neue Typqualifizierer zu Funktionstypen hinzu"
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:3741
+#: c-typeck.c:3076
msgid "cast discards qualifiers from pointer target type"
-msgstr ""
+msgstr "Typkonvertierung streicht Qualifizierer von Zeiger-Zieltyp"
-#: c-typeck.c:3756
+#: c-typeck.c:3091
msgid "cast increases required alignment of target type"
-msgstr ""
+msgstr "Typkonvertierung erfordert Ausrichtung des Zieltyps"
-#: c-typeck.c:3762 cp/typeck.c:5144
+#: c-typeck.c:3097 cp/typeck.c:4889
msgid "cast from pointer to integer of different size"
-msgstr ""
+msgstr "Typkonvertierung von Zeiger auf Ganzzahl anderer Breite"
-#: c-typeck.c:3767
+#: c-typeck.c:3102
msgid "cast does not match function type"
-msgstr ""
+msgstr "Typkonvertierung passt nicht zum Funktionstypen"
-#: c-typeck.c:3774 cp/typeck.c:5151
+#: c-typeck.c:3109 cp/typeck.c:4896
msgid "cast to pointer from integer of different size"
-msgstr ""
+msgstr "Typkonvertierung in Zeiger von Ganzzahl anderer Breite"
-#: c-typeck.c:3786
+#: c-typeck.c:3121
msgid "type-punning to incomplete type might break strict-aliasing rules"
-msgstr ""
+msgstr "Type-Punning auf unvollständigen Typen kann strict-aliasing-Regeln verletzen"
-#: c-typeck.c:3790
+#: c-typeck.c:3125
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
-msgstr ""
+msgstr "Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln"
+
+#: c-typeck.c:3136
+msgid "ISO C forbids conversion of function pointer to object pointer type"
+msgstr "ISO-C verbietet Konvertierung von Funktionszeigern in Objektzeigertyp"
+
+#: c-typeck.c:3145
+msgid "ISO C forbids conversion of object pointer to function pointer type"
+msgstr "ISO-C verbietet Konvertierung von Objektzeigertypen in Funktionszeigertyp"
#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
#. Reject anything strange now.
-#: c-typeck.c:3949
+#: c-typeck.c:3303
msgid "invalid lvalue in assignment"
-msgstr ""
+msgstr "ungültiger L-Wert in Zuweisung"
#. Convert new value to destination type.
-#: c-typeck.c:3958 c-typeck.c:3983 c-typeck.c:4000 cp/typeck.c:5266
-#: cp/typeck.c:5416
+#. Check this here to avoid odd errors when trying to convert
+#. a throw to the type of the COND_EXPR.
+#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
+#. Reject anything strange now.
+#: c-typeck.c:3312 c-typeck.c:3337 c-typeck.c:3354 cp/typeck.c:5008
+#: cp/typeck.c:5152
msgid "assignment"
-msgstr ""
+msgstr "Zuweisung"
-#: c-typeck.c:4070
+#: c-typeck.c:3421
msgid "cannot pass rvalue to reference parameter"
-msgstr ""
+msgstr "kann R-Wert nicht an Referenzparameter übergeben"
-#: c-typeck.c:4174 c-typeck.c:4241
+#: c-typeck.c:3530 c-typeck.c:3606
#, c-format
msgid "%s makes qualified function pointer from unqualified"
-msgstr ""
+msgstr "%s erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
-#: c-typeck.c:4178 c-typeck.c:4221
+#: c-typeck.c:3534 c-typeck.c:3586
#, c-format
msgid "%s discards qualifiers from pointer target type"
-msgstr ""
+msgstr "%s streicht Qualifizierer von Zeiger-Zieltypen"
-#: c-typeck.c:4184
+#: c-typeck.c:3540
msgid "ISO C prohibits argument conversion to union type"
-msgstr ""
+msgstr "ISO-C verbietet Argumentkonvertierung in union-Typ"
-#: c-typeck.c:4213
+#: c-typeck.c:3578
#, c-format
msgid "ISO C forbids %s between function pointer and `void *'"
-msgstr ""
+msgstr "ISO-C verbietet %s zwischen Funktionszeiger und »void *«"
-#: c-typeck.c:4230
+#: c-typeck.c:3595
#, c-format
msgid "pointer targets in %s differ in signedness"
-msgstr ""
+msgstr "Zeigerziele in %s unterscheiden sich im Vorzeichenbesitz"
-#: c-typeck.c:4246
+#: c-typeck.c:3611
#, c-format
msgid "%s from incompatible pointer type"
-msgstr ""
+msgstr "%s von inkompatiblem Zeigertyp"
-#: c-typeck.c:4252 c-typeck.c:4804 cp/typeck.c:1653
+#: c-typeck.c:3617 c-typeck.c:4124 cp/typeck.c:1366
msgid "invalid use of non-lvalue array"
-msgstr ""
+msgstr "ungültige Verwendung eines Nicht-L-Wert-Feldes"
-#: c-typeck.c:4267
+#: c-typeck.c:3631
#, c-format
msgid "%s makes pointer from integer without a cast"
-msgstr ""
+msgstr "%s erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
-#: c-typeck.c:4275
+#: c-typeck.c:3638
#, c-format
msgid "%s makes integer from pointer without a cast"
-msgstr ""
+msgstr "%s erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"
-#: c-typeck.c:4289 c-typeck.c:4292
+#: c-typeck.c:3652 c-typeck.c:3655
#, c-format
msgid "incompatible type for argument %d of `%s'"
-msgstr ""
+msgstr "inkompatibler Typ für Argument %d von »%s«"
-#: c-typeck.c:4296
+#: c-typeck.c:3659
#, c-format
msgid "incompatible type for argument %d of indirect function call"
-msgstr ""
+msgstr "inkompatibler Typ für Argument %d eines indirekten Funktionsaufrufes"
-#: c-typeck.c:4300
+#: c-typeck.c:3663
#, c-format
msgid "incompatible types in %s"
-msgstr ""
+msgstr "inkompatible Typen in %s"
#. Function name is known; supply it.
-#: c-typeck.c:4358
+#: c-typeck.c:3719
#, c-format
msgid "passing arg of `%s'"
-msgstr ""
+msgstr "Verarbeiten des Argumentes von »%s«"
#. Function name unknown (call through ptr).
-#: c-typeck.c:4368
+#: c-typeck.c:3728
msgid "passing arg of pointer to function"
-msgstr ""
+msgstr "Verarbeiten des Zeigerargumentes an Funktion"
#. Function name is known; supply it.
-#: c-typeck.c:4376
+#: c-typeck.c:3736
#, c-format
msgid "passing arg %d of `%s'"
-msgstr ""
+msgstr "Verarbeiten des Argumentes %d von »%s«"
#. Function name unknown (call through ptr); just give arg number.
-#: c-typeck.c:4386
+#: c-typeck.c:3745
#, c-format
msgid "passing arg %d of pointer to function"
-msgstr ""
-
-#: c-typeck.c:4452
-msgid "initializer for static variable is not constant"
-msgstr ""
-
-#: c-typeck.c:4458
-msgid "initializer for static variable uses complicated arithmetic"
-msgstr ""
-
-#: c-typeck.c:4466
-msgid "aggregate initializer is not constant"
-msgstr ""
-
-#: c-typeck.c:4468
-msgid "aggregate initializer uses complicated arithmetic"
-msgstr ""
+msgstr "Verarbeiten des Argumentes %d von Zeiger auf Funktion"
-#: c-typeck.c:4475
+#: c-typeck.c:3802
msgid "traditional C rejects automatic aggregate initialization"
-msgstr ""
+msgstr "traditionelles C lehnt automatische Gesamt-Initialisierung ab"
-#: c-typeck.c:4654 c-typeck.c:4670 c-typeck.c:4686
+#: c-typeck.c:3973 c-typeck.c:3988 c-typeck.c:4003
#, c-format
msgid "(near initialization for `%s')"
-msgstr ""
+msgstr "(nahe der Initialisierung für »%s«)"
-#: c-typeck.c:4737 cp/typeck2.c:488
+#: c-typeck.c:4052 cp/typeck2.c:559
msgid "char-array initialized from wide string"
-msgstr ""
+msgstr "char-Feld mit wide-Zeichenkette initialisiert"
-#: c-typeck.c:4744 cp/typeck2.c:495
+#: c-typeck.c:4059 cp/typeck2.c:566
msgid "int-array initialized from non-wide string"
-msgstr ""
+msgstr "int-Feld mit Nicht-wide-Zeichenkette initialisiert"
-#: c-typeck.c:4762 cp/typeck2.c:511
+#: c-typeck.c:4077 cp/typeck2.c:581
msgid "initializer-string for array of chars is too long"
-msgstr ""
+msgstr "Initialisierungs-Zeichenkette für char-Feld ist zu lang"
-#: c-typeck.c:4822
+#: c-typeck.c:4147
msgid "array initialized from non-constant array expression"
-msgstr ""
+msgstr "Feld mit nicht konstantem Feldausdruck initialisiert"
-#: c-typeck.c:4839 c-typeck.c:4841 c-typeck.c:4857 c-typeck.c:4878
-#: c-typeck.c:6281
+#: c-typeck.c:4164 c-typeck.c:4166 c-typeck.c:4182 c-typeck.c:4203
+#: c-typeck.c:5585
msgid "initializer element is not constant"
-msgstr ""
+msgstr "Initialisierungselement ist nicht konstant"
-#: c-typeck.c:4873
+#: c-typeck.c:4198
msgid "initialization"
-msgstr ""
+msgstr "Initialisierung"
-#: c-typeck.c:4884 c-typeck.c:6286
+#: c-typeck.c:4209 c-typeck.c:5590
msgid "initializer element is not computable at load time"
-msgstr ""
+msgstr "Initialisierungs-Element ist zur Lade-Zeit nicht berechenbar"
-#: c-typeck.c:4899 cp/typeck2.c:588
+#: c-typeck.c:4224 cp/typeck2.c:658
msgid "invalid initializer"
-msgstr ""
+msgstr "ungültige Initialisierung"
+
+#: c-typeck.c:4509 cp/decl.c:4465
+msgid "opaque vector types cannot be initialized"
+msgstr "opake Vektortypen können nicht initialisiert werden"
-#: c-typeck.c:5393
+#: c-typeck.c:4703
msgid "extra brace group at end of initializer"
-msgstr ""
+msgstr "zusätzliche geschweifte Klammern am Ende der Initialisierung"
-#: c-typeck.c:5413
+#: c-typeck.c:4723
msgid "missing braces around initializer"
-msgstr ""
+msgstr "geschweifte Klammern fehlen um Initialisierung"
-#: c-typeck.c:5473
+#: c-typeck.c:4783
msgid "braces around scalar initializer"
-msgstr ""
+msgstr "geschweifte Klammern um Skalar-Initialisierung"
-#: c-typeck.c:5521
+#: c-typeck.c:4830
msgid "initialization of flexible array member in a nested context"
-msgstr ""
+msgstr "Initialisierung eines flexiblen Feld-Elements in geschachteltem Kontext"
-#: c-typeck.c:5523
+#: c-typeck.c:4832
msgid "initialization of a flexible array member"
-msgstr ""
+msgstr "Initialisierung eines flexiblen Feld-Elements"
-#: c-typeck.c:5554
+#: c-typeck.c:4863
msgid "missing initializer"
-msgstr ""
+msgstr "fehlende Initialisierung"
-#: c-typeck.c:5580
+#: c-typeck.c:4889
msgid "empty scalar initializer"
-msgstr ""
+msgstr "leere Skalar-Initialisierung"
-#: c-typeck.c:5585
+#: c-typeck.c:4894
msgid "extra elements in scalar initializer"
-msgstr ""
+msgstr "zusätzliche Elemente in Skalar-Initialisierung"
-#: c-typeck.c:5671
+#: c-typeck.c:4979
msgid "initialization designators may not nest"
-msgstr ""
+msgstr "Initialisierungs-Bezeichner dürfen nicht geschachtelt werden"
-#: c-typeck.c:5692 c-typeck.c:5763
+#: c-typeck.c:5000 c-typeck.c:5068
msgid "array index in non-array initializer"
-msgstr ""
+msgstr "Feldindex in Nicht-Feld-Initialisierung"
-#: c-typeck.c:5697 c-typeck.c:5817
+#: c-typeck.c:5005 c-typeck.c:5121
msgid "field name not in record or union initializer"
-msgstr ""
+msgstr "Feldname nicht in Datensatz- oder union-Initialisierung"
-#: c-typeck.c:5759 c-typeck.c:5761
+#: c-typeck.c:5064 c-typeck.c:5066
msgid "nonconstant array index in initializer"
-msgstr ""
+msgstr "nichtkonstanter Feldindex in Initialisierung"
-#: c-typeck.c:5765 c-typeck.c:5768
+#: c-typeck.c:5070 c-typeck.c:5073
msgid "array index in initializer exceeds array bounds"
-msgstr ""
+msgstr "Feldindex in Initialisierung überschreitet Feldgrenzen"
-#: c-typeck.c:5779
+#: c-typeck.c:5084
msgid "empty index range in initializer"
-msgstr ""
+msgstr "leerer Indexbereich in Initialisierung"
-#: c-typeck.c:5788
+#: c-typeck.c:5093
msgid "array index range in initializer exceeds array bounds"
-msgstr ""
+msgstr "Feldindexbereich in Initialisierung überschreitet Feldgrenzen"
-#: c-typeck.c:5829
+#: c-typeck.c:5133
#, c-format
msgid "unknown field `%s' specified in initializer"
-msgstr ""
+msgstr "unbekanntes Feld »%s« in Initialisierung angegeben"
-#: c-typeck.c:5866 c-typeck.c:5887 c-typeck.c:6348
+#: c-typeck.c:5169 c-typeck.c:5190 c-typeck.c:5652
msgid "initialized field with side-effects overwritten"
-msgstr ""
+msgstr "initialisiertes Feld mit Seiteneffekten überschrieben"
-#: c-typeck.c:6558
+#: c-typeck.c:5860
msgid "excess elements in char array initializer"
-msgstr ""
+msgstr "Elementüberschreitung in char-Feld-Initialisierung"
-#: c-typeck.c:6565 c-typeck.c:6611
+#: c-typeck.c:5867 c-typeck.c:5913
msgid "excess elements in struct initializer"
-msgstr ""
+msgstr "Elementüberschreitung in struct-Initialisierung"
-#: c-typeck.c:6626
+#: c-typeck.c:5928
msgid "non-static initialization of a flexible array member"
-msgstr ""
+msgstr "nicht-statische Initialisierung eines flexiblen Feldelements"
-#: c-typeck.c:6693
+#: c-typeck.c:5995
msgid "excess elements in union initializer"
-msgstr ""
+msgstr "Elementüberschreitung in union-Initialisierung"
-#: c-typeck.c:6714
+#: c-typeck.c:6016
msgid "traditional C rejects initialization of unions"
-msgstr ""
+msgstr "traditionelles C lehnt Initialisierung von unions ab"
-#: c-typeck.c:6777
+#: c-typeck.c:6079
msgid "excess elements in array initializer"
-msgstr ""
+msgstr "Elementüberschreitung in Feldinitialisierung"
-#: c-typeck.c:6806
+#: c-typeck.c:6108
msgid "excess elements in vector initializer"
-msgstr ""
+msgstr "Elementüberschreitung in Vektorinitialisierung"
-#: c-typeck.c:6828
+#: c-typeck.c:6130
msgid "excess elements in scalar initializer"
-msgstr ""
+msgstr "Elementüberschreitung in Skalar-Initialisierung"
-#: c-typeck.c:6935
+#: c-typeck.c:6232
msgid "asm template is not a string constant"
-msgstr ""
+msgstr "asm-Template ist keine Zeichenkettenkonstante"
-#: c-typeck.c:6967
+#: c-typeck.c:6264
msgid "invalid lvalue in asm statement"
-msgstr ""
+msgstr "ungültiger L-Wert in asm-Anweisung"
-#: c-typeck.c:7042
+#: c-typeck.c:6336
msgid "modification by `asm'"
-msgstr ""
+msgstr "Modifizierung durch »asm«"
-#: c-typeck.c:7061 cp/typeck.c:6237
+#: c-typeck.c:6354 cp/typeck.c:5926
msgid "function declared `noreturn' has a `return' statement"
-msgstr ""
+msgstr "als »noreturn« deklarierte Funktion hat »return«-Anweisung"
-#: c-typeck.c:7068
+#: c-typeck.c:6361
msgid "`return' with no value, in function returning non-void"
-msgstr ""
+msgstr "»return« ohne Wert in nicht void zurückgebender Funktion"
-#: c-typeck.c:7074
+#: c-typeck.c:6367
msgid "`return' with a value, in function returning void"
-msgstr ""
+msgstr "»return« mit Wert in void zurückgebender Funktion"
-#: c-typeck.c:7078
+#: c-typeck.c:6371
msgid "return"
-msgstr ""
+msgstr "return"
-#: c-typeck.c:7130
+#: c-typeck.c:6423
msgid "function returns address of local variable"
-msgstr ""
+msgstr "Funktion liefert Adresse einer lokalen Variablen zurück"
-#: c-typeck.c:7186 cp/semantics.c:555
+#: c-typeck.c:6478 cp/semantics.c:749
msgid "switch quantity not an integer"
-msgstr ""
+msgstr "switch-Größe keine Ganzzahl"
-#: c-typeck.c:7196
+#: c-typeck.c:6488
msgid "`long' switch expression not converted to `int' in ISO C"
-msgstr ""
+msgstr "»long« switch-Ausdruck nicht nach »int« konvertiert in ISO C"
-#: c-typeck.c:7231 cp/decl.c:5523
+#: c-typeck.c:6529 cp/parser.c:5538
msgid "case label not within a switch statement"
-msgstr ""
+msgstr "case-Marke nicht innerhalb einer switch-Anweisung"
-#: c-typeck.c:7233 cp/decl.c:5528
+#: c-typeck.c:6531
msgid "`default' label not within a switch statement"
-msgstr ""
+msgstr "»default«-Marke nicht innerhalb einer switch-Anweisung"
-#: calls.c:1934 tree-inline.c:1177
-#, c-format
-msgid "inlining failed in call to `%s'"
-msgstr ""
+#: c-typeck.c:6683 c-typeck.c:6717
+msgid "division by zero"
+msgstr "Teilung durch Null"
+
+#: c-typeck.c:6762 cp/typeck.c:2928
+msgid "right shift count is negative"
+msgstr "Rechts-Schiebe-Weite ist negativ"
+
+#: c-typeck.c:6769 cp/typeck.c:2934
+msgid "right shift count >= width of type"
+msgstr "Rechts-Schiebe-Weite >= Breite des Typs"
+
+#: c-typeck.c:6790 cp/typeck.c:2953
+msgid "left shift count is negative"
+msgstr "Links-Schiebe-Weite ist negativ"
+
+#: c-typeck.c:6793 cp/typeck.c:2955
+msgid "left shift count >= width of type"
+msgstr "Links-Schiebe-Weite >= Breite des Typs"
+
+#: c-typeck.c:6814
+msgid "shift count is negative"
+msgstr "Schiebeweite ist negativ"
+
+#: c-typeck.c:6816
+msgid "shift count >= width of type"
+msgstr "Schiebeweite >= Breite des Typs"
+
+#: c-typeck.c:6833 cp/typeck.c:2990
+msgid "comparing floating point with == or != is unsafe"
+msgstr "Vergleich von Gleitkomma mit == oder != ist unsicher"
+
+#: c-typeck.c:6859 c-typeck.c:6865
+msgid "ISO C forbids comparison of `void *' with function pointer"
+msgstr "ISO-C verbietet Vergleich von »void *« mit Funktionszeiger"
+
+#: c-typeck.c:6868 c-typeck.c:6908 c-typeck.c:6936
+msgid "comparison of distinct pointer types lacks a cast"
+msgstr "in Vergleich verschiedener Zeigertypen fehlt Typkonvertierung"
+
+#: c-typeck.c:6882 c-typeck.c:6887 c-typeck.c:6956 c-typeck.c:6961
+msgid "comparison between pointer and integer"
+msgstr "Vergleich zwischen Zeiger und Ganzzahl"
+
+#: c-typeck.c:6903 c-typeck.c:6931
+msgid "ISO C forbids ordered comparisons of pointers to functions"
+msgstr "ISO-C verbietet geordnete Vergleiche zwischen Zeigern auf Funktionen"
+
+#: c-typeck.c:6928
+msgid "comparison of complete and incomplete pointers"
+msgstr "Vergleich von vollständigen und unvollständigen Zeigern"
+
+#: c-typeck.c:6944 c-typeck.c:6951
+msgid "ordered comparison of pointer with integer zero"
+msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
+
+#: c-typeck.c:6975 cp/typeck.c:3126
+msgid "unordered comparison on non-floating point argument"
+msgstr "ungeordneter Vergleich mit Nicht-Gleitkomma-Argument"
+
+#: c-typeck.c:7185
+msgid "comparison between signed and unsigned"
+msgstr "Vergleich zwischen vorzeichenbehaftet und vorzeichenlos"
+
+#: c-typeck.c:7231 cp/typeck.c:3373
+msgid "comparison of promoted ~unsigned with constant"
+msgstr "Vergleich von weitergegebenem ~unsigned mit Konstante"
-#: calls.c:1935 calls.c:2271 tree-inline.c:1178
+#: c-typeck.c:7239 cp/typeck.c:3381
+msgid "comparison of promoted ~unsigned with unsigned"
+msgstr "Vergleich von weitergegebenem ~unsigned mit unsigned"
+
+#: calls.c:1838
+msgid "%Jinlining failed in call to '%F'"
+msgstr "%J»inline« beim Aufruf von »%F« gescheitert"
+
+#: calls.c:1839 calls.c:2208 tree-inline.c:1339 tree-inline.c:1346
msgid "called from here"
-msgstr ""
+msgstr "von hier aufgerufen"
-#: calls.c:2270
-#, c-format
-msgid "can't inline call to `%s'"
-msgstr ""
+#: calls.c:2207
+msgid "%Jcan't inline call to '%F'"
+msgstr "%JAufruf von »%F« kann nicht »inline« erfolgen"
+
+#: calls.c:2216
+msgid "ignoring return value of `%D', declared with attribute warn_unused_result"
+msgstr "Rückgabewert von »%D«, das mit dem Attribut warn_unused_result definiert wurde, wird ignoriert"
+
+#: calls.c:2229
+msgid "ignoring return value of function declared with attribute warn_unused_result"
+msgstr "Rückgabewert der mit dem Attribut warn_unused_result definierten Funktion wird ignoriert"
-#: calls.c:2300
+#: calls.c:2239
msgid "function call has aggregate value"
-msgstr ""
+msgstr "Funktionsaufruf hat zusammengesetzten Wert"
-#: cfgloop.c:1107
+#: cfg.c:835
#, c-format
-msgid "Size of loop %d should be %d, not %d."
-msgstr ""
+msgid "bb %d on wrong place"
+msgstr "bb %d an falscher Stelle"
-#: cfgloop.c:1126
+#: cfg.c:841
#, c-format
-msgid "Bb %d do not belong to loop %d."
-msgstr ""
+msgid "prev_bb of %d should be %d, not %d"
+msgstr "prev_bb von %d sollte %d sein, nicht %d"
-#: cfgloop.c:1144
+#: cfg.c:857
#, c-format
-msgid "Loop %d's header does not have exactly 2 entries."
-msgstr ""
+msgid "verify_flow_info: Wrong count of block %i %i"
+msgstr "verify_flow_info: Falsche Blockzahl %i %i"
-#: cfgloop.c:1152
+#: cfg.c:863
#, c-format
-msgid "Loop %d's latch does not have exactly 1 successor."
-msgstr ""
+msgid "verify_flow_info: Wrong frequency of block %i %i"
+msgstr "verify_flow_info: Falsche Blockfrequenz %i %i"
-#: cfgloop.c:1157
+#: cfg.c:871
#, c-format
-msgid "Loop %d's latch does not have header as successor."
-msgstr ""
+msgid "verify_flow_info: Duplicate edge %i->%i"
+msgstr "verify_flow_info: Doppelte Kante %i->%i"
-#: cfgloop.c:1162
+#: cfg.c:877
#, c-format
-msgid "Loop %d's latch does not belong directly to it."
-msgstr ""
+msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
+msgstr "verify_flow_info: Falsche Wahrscheinlichkeit der Kante %i->%i %i"
-#: cfgloop.c:1168
+#: cfg.c:883
#, c-format
-msgid "Loop %d's header does not belong directly to it."
-msgstr ""
+msgid "verify_flow_info: Wrong count of edge %i->%i %i"
+msgstr "verify_flow_info: Falsche Kantenzahl %i->%i %i"
-#: cfgrtl.c:1774
+#: cfg.c:895
#, c-format
-msgid "bb %d on wrong place"
-msgstr ""
+msgid "verify_flow_info: Basic block %d succ edge is corrupted"
+msgstr "verify_flow_info: Nachfolgekante des Basis-Blocks %d ist beschädigt"
-#: cfgrtl.c:1780
+#: cfg.c:909 cfgrtl.c:1971
#, c-format
-msgid "prev_bb of %d should be %d, not %d"
-msgstr ""
+msgid "Wrong amount of branch edges after unconditional jump %i"
+msgstr "Falsche Summe der Zweig-Kanten nach unbedingtem Sprung %i"
-#: cfgrtl.c:1800
+#: cfg.c:917
#, c-format
-msgid "end insn %d for block %d not found in the insn stream"
-msgstr ""
+msgid "basic block %d pred edge is corrupted"
+msgstr "Vorgänger des Basis-Blocks %d ist beschädigt"
-#: cfgrtl.c:1814
+#: cfg.c:943
#, c-format
-msgid "insn %d is in multiple basic blocks (%d and %d)"
-msgstr ""
+msgid "basic block %i edge lists are corrupted"
+msgstr "Kantenlisten des Basis-Blockes %i sind beschädigt"
+
+#: cfg.c:955
+msgid "verify_flow_info failed"
+msgstr "verify_flow_info gescheitert"
-#: cfgrtl.c:1826
+#: cfgloop.c:1134
#, c-format
-msgid "head insn %d for block %d not found in the insn stream"
-msgstr ""
+msgid "Size of loop %d should be %d, not %d."
+msgstr "Größe der Schleife %d sollte %d sein, nicht %d"
-#: cfgrtl.c:1848
+#: cfgloop.c:1153
#, c-format
-msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i"
-msgstr ""
+msgid "Bb %d do not belong to loop %d."
+msgstr "Bb %d gehört nicht zur Schleife %d."
-#: cfgrtl.c:1855
+#: cfgloop.c:1171
#, c-format
-msgid "verify_flow_info: Wrong count of block %i %i"
-msgstr ""
+msgid "Loop %d's header does not have exactly 2 entries."
+msgstr "Kopf der Schleife %d hat nicht genau 2 Einträge."
-#: cfgrtl.c:1861
+#: cfgloop.c:1179
#, c-format
-msgid "verify_flow_info: Wrong frequency of block %i %i"
-msgstr ""
+msgid "Loop %d's latch does not have exactly 1 successor."
+msgstr "Falle der Schleife %d hat nicht genau einen Nachfolger."
-#: cfgrtl.c:1869
+#: cfgloop.c:1184
#, c-format
-msgid "verify_flow_info: Duplicate edge %i->%i"
-msgstr ""
+msgid "Loop %d's latch does not have header as successor."
+msgstr "Falle der Schleife %d hat nicht den Kopf als Nachfolger."
-#: cfgrtl.c:1875
+#: cfgloop.c:1189
#, c-format
-msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
-msgstr ""
+msgid "Loop %d's latch does not belong directly to it."
+msgstr "Falle der Schleife %d gehört nicht direkt zu ihr."
-#: cfgrtl.c:1881
+#: cfgloop.c:1195
#, c-format
-msgid "verify_flow_info: Wrong count of edge %i->%i %i"
-msgstr ""
+msgid "Loop %d's header does not belong directly to it."
+msgstr "Kopf der Schleife %d gehört nicht direkt zu ihr."
-#: cfgrtl.c:1911
+#: cfgloop.c:1201
#, c-format
-msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
-msgstr ""
+msgid "Loop %d's latch is marked as part of irreducible region."
+msgstr "Falle der Schleife %d ist als Teil einer irreduziblen Region markiert."
-#: cfgrtl.c:1926
+#: cfgloop.c:1231
#, c-format
-msgid "verify_flow_info: Incorrect fallthru %i->%i"
-msgstr ""
+msgid "Basic block %d should be marked irreducible."
+msgstr "Basisblock %d sollte als irreduzibel markiert werden."
-#: cfgrtl.c:1928
-msgid "wrong insn in the fallthru edge"
-msgstr ""
+#: cfgloop.c:1237
+#, c-format
+msgid "Basic block %d should not be marked irreducible."
+msgstr "Basisblock %d sollte nicht als irreduzibel markiert werden."
-#: cfgrtl.c:1935
+#: cfgloop.c:1245
#, c-format
-msgid "verify_flow_info: Basic block %d succ edge is corrupted"
-msgstr ""
+msgid "Edge from %d to %d should be marked irreducible."
+msgstr "Kante von %d nach %d sollte als irreduzibel markiert werden."
-#: cfgrtl.c:1951
+#: cfgloop.c:1252
#, c-format
-msgid "Missing REG_EH_REGION note in the end of bb %i"
-msgstr ""
+msgid "Edge from %d to %d should not be marked irreducible."
+msgstr "Kante von %d nach %d sollte nicht als irreduzibel markiert werden."
-#: cfgrtl.c:1959
+#: cfgrtl.c:1877
#, c-format
-msgid "Too many outgoing branch edges from bb %i"
-msgstr ""
+msgid "end insn %d for block %d not found in the insn stream"
+msgstr "Ende-insn %d für Block %d nicht im insn-Stream gefunden"
-#: cfgrtl.c:1964
+#: cfgrtl.c:1891
#, c-format
-msgid "Fallthru edge after unconditional jump %i"
-msgstr ""
+msgid "insn %d is in multiple basic blocks (%d and %d)"
+msgstr "insn %d ist in mehreren Basisblöcken (%d und %d)"
-#: cfgrtl.c:1969
+#: cfgrtl.c:1903
#, c-format
-msgid "Wrong amount of branch edges after unconditional jump %i"
-msgstr ""
+msgid "head insn %d for block %d not found in the insn stream"
+msgstr "Kopf-insn %d für Block %d nicht im insn-Stream gefunden"
+
+#: cfgrtl.c:1925
+msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
+msgstr "verify_flow_info: REG_BR_PROB passt nicht zu cfg %wi %i"
-#: cfgrtl.c:1975
+#: cfgrtl.c:1953
#, c-format
-msgid "Wrong amount of branch edges after conditional jump %i"
-msgstr ""
+msgid "Missing REG_EH_REGION note in the end of bb %i"
+msgstr "Fehlender Vermerk von REG_EH_REGION am Ende vom bb %i"
-#: cfgrtl.c:1980
+#: cfgrtl.c:1961
#, c-format
-msgid "Call edges for non-call insn in bb %i"
-msgstr ""
+msgid "Too many outgoing branch edges from bb %i"
+msgstr "Zu viele abgehende Zweig-Kanten vom bb %i"
-#: cfgrtl.c:1989
+#: cfgrtl.c:1966
#, c-format
-msgid "Abnormal edges for no purpose in bb %i"
-msgstr ""
+msgid "Fallthru edge after unconditional jump %i"
+msgstr "Fallthru-Kante nach unbedingtem Sprung %i"
-#: cfgrtl.c:2004
+#: cfgrtl.c:1977
#, c-format
-msgid "missing barrier after block %i"
-msgstr ""
+msgid "Wrong amount of branch edges after conditional jump %i"
+msgstr "Falsche Summe der Zweig-Kanten nach bedingtem Sprung %i"
-#: cfgrtl.c:2014
+#: cfgrtl.c:1982
#, c-format
-msgid "basic block %d pred edge is corrupted"
-msgstr ""
+msgid "Call edges for non-call insn in bb %i"
+msgstr "Ruf-Kanten für Nicht-Aufruf-insn im bb %i"
+
+#: cfgrtl.c:1991
+#, c-format
+msgid "Abnormal edges for no purpose in bb %i"
+msgstr "Abnormale Kanten ohne Grund in bb %i"
-#: cfgrtl.c:2031
+#: cfgrtl.c:2001
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
-msgstr ""
+msgstr "insn %d innerhalb des Basis-Blockes %d, aber block_for_insn ist NULL"
-#: cfgrtl.c:2035
+#: cfgrtl.c:2005
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
-msgstr ""
+msgstr "insn %d innerhalb Basis-Blockes %d, aber block_for_insn ist %i"
-#: cfgrtl.c:2049 cfgrtl.c:2059
+#: cfgrtl.c:2019 cfgrtl.c:2029
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
-msgstr ""
+msgstr "NOTE_INSN_BASIC_BLOCK fehlt für Block %d"
-#: cfgrtl.c:2072
+#: cfgrtl.c:2042
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
-msgstr ""
+msgstr "NOTE_INSN_BASIC_BLOCK %d in der Mitte des Basis-Blocks %d"
-#: cfgrtl.c:2084
+#: cfgrtl.c:2052
#, c-format
msgid "in basic block %d:"
-msgstr ""
+msgstr "im Basis-Block %d:"
-#: cfgrtl.c:2085
+#: cfgrtl.c:2053
msgid "flow control insn inside a basic block"
-msgstr ""
+msgstr "Flusskontroll-insn innerhalb eines Basis-Blockes"
-#: cfgrtl.c:2104
+#: cfgrtl.c:2099
#, c-format
-msgid "basic block %i edge lists are corrupted"
-msgstr ""
+msgid "missing barrier after block %i"
+msgstr "fehlende Sperre nach Block %i"
-#: cfgrtl.c:2119
-msgid "basic blocks not numbered consecutively"
-msgstr ""
+#: cfgrtl.c:2112
+#, c-format
+msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
+msgstr "verify_flow_info: Falsche Blöcke für »fallthru« %i->%i"
+
+#: cfgrtl.c:2127
+#, c-format
+msgid "verify_flow_info: Incorrect fallthru %i->%i"
+msgstr "verify_flow_info: Falsches »fallthru« %i->%i"
+
+#: cfgrtl.c:2129
+msgid "wrong insn in the fallthru edge"
+msgstr "falsche insn in »fallthru«-Kante"
-#: cfgrtl.c:2144
+#: cfgrtl.c:2146
+msgid "basic blocks not laid down consecutively"
+msgstr "Basis-Blöcke sind nicht fortlaufend"
+
+#: cfgrtl.c:2171
msgid "insn outside basic block"
-msgstr ""
+msgstr "insn außerhalb eines Basis-Blockes"
-#: cfgrtl.c:2152
+#: cfgrtl.c:2179
msgid "return not followed by barrier"
-msgstr ""
+msgstr "»return« nicht gefolgt von Sperre"
-#: cfgrtl.c:2157
+#: cfgrtl.c:2186
#, c-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
-msgstr ""
+msgstr "Anzahl der bb-Vermerke in insn-Kette (%d) != n_basic_blocks (%d)"
-#: cfgrtl.c:2161
-msgid "verify_flow_info failed"
-msgstr ""
+#: cgraph.c:161
+msgid "function body not available"
+msgstr "Funktionskörper nicht verfügbar"
+
+#: cgraph.c:163 cgraphunit.c:341
+msgid "redefined extern inline functions are not considered for inlining"
+msgstr "redefinierte »extern inline«-Funktionen kommen nicht als »inline« in Betracht"
+
+#: cgraph.c:166 cgraphunit.c:346
+msgid "function not considered for inlining"
+msgstr "Funktion kommt nicht für »inline« in Betracht"
+
+#: cgraph.c:168 cgraphunit.c:344
+msgid "function not inlinable"
+msgstr "Funktion kann nicht »inline« sein"
+
+#: cgraph.c:476
+msgid "%D renamed after being referenced in assembly"
+msgstr "%D nach Referenzierung in Assemblierung umbenannt"
+
+#: cgraphunit.c:1042
+msgid "--param large-function-growth limit reached"
+msgstr "--param large-function-growth: Limit erreicht"
-#: collect2.c:425
+#: cgraphunit.c:1055
+msgid "--param large-function-growth limit reached while inlining the caller"
+msgstr "--param large-function-growth: Limit bei »inline« des Aufrufers erreicht"
+
+#: cgraphunit.c:1120
+msgid "--param max-inline-insns-single limit reached"
+msgstr "--param max-inline-insns-single: Limit erreicht"
+
+#: cgraphunit.c:1144
+msgid "--param max-inline-insns-single limit reached after inlining into the callee"
+msgstr "--param max-inline-insns-single: Limit nach »inline« im Aufgerufenen erreicht"
+
+#: cgraphunit.c:1221
+msgid "--param inline-unit-growth limit reached"
+msgstr "--param inline-unit-growth: Limit erreicht"
+
+#: cgraphunit.c:1293 cgraphunit.c:1437
+msgid "recursive inlining"
+msgstr "rekursives inline"
+
+#: collect2.c:406
msgid "internal error"
-msgstr ""
+msgstr "interner Fehler"
-#: collect2.c:934
+#: collect2.c:894
msgid "no arguments"
-msgstr ""
+msgstr "Keiner Argumente"
-#: collect2.c:1263 collect2.c:1411 collect2.c:1444
+#: collect2.c:1226 collect2.c:1374 collect2.c:1407
#, c-format
msgid "fopen %s"
-msgstr ""
+msgstr "fopen %s"
-#: collect2.c:1266 collect2.c:1416 collect2.c:1447
+#: collect2.c:1229 collect2.c:1379 collect2.c:1410
#, c-format
msgid "fclose %s"
-msgstr ""
+msgstr "fclose %s"
-#: collect2.c:1275
+#: collect2.c:1238
#, c-format
msgid "collect2 version %s"
-msgstr ""
+msgstr "collect2-Version %s"
-#: collect2.c:1365
+#: collect2.c:1328
#, c-format
msgid "%d constructor(s) found\n"
-msgstr ""
+msgstr "%d Konstruktor(en) gefunden\n"
-#: collect2.c:1366
+#: collect2.c:1329
#, c-format
msgid "%d destructor(s) found\n"
-msgstr ""
+msgstr "%d Destruktor(en) gefunden\n"
-#: collect2.c:1367
+#: collect2.c:1330
#, c-format
msgid "%d frame table(s) found\n"
-msgstr ""
+msgstr "%d Rahmentabelle(n) gefunden\n"
-#: collect2.c:1508
+#: collect2.c:1470
#, c-format
msgid "%s terminated with signal %d [%s]%s"
-msgstr ""
+msgstr "%s mit Signal %d [%s]%s beendet"
-#: collect2.c:1527
+#: collect2.c:1488
#, c-format
msgid "%s returned %d exit status"
-msgstr ""
+msgstr "%s gab Ende-Status %d zurück"
-#: collect2.c:1555
+#: collect2.c:1513
#, c-format
msgid "[cannot find %s]"
-msgstr ""
+msgstr "[kann %s nicht finden]"
-#: collect2.c:1570
+#: collect2.c:1528
#, c-format
msgid "cannot find `%s'"
-msgstr ""
+msgstr "kann »%s« nicht finden"
-#: collect2.c:1581 collect2.c:1584
+#: collect2.c:1539 collect2.c:1542
#, c-format
msgid "redirecting stdout: %s"
-msgstr ""
+msgstr "leite Standardausgabe um: %s"
-#: collect2.c:1627
+#: collect2.c:1581
#, c-format
msgid "[Leaving %s]\n"
-msgstr ""
+msgstr "[Verlasse %s]\n"
-#: collect2.c:1870
+#: collect2.c:1801
#, c-format
msgid ""
"\n"
"write_c_file - output name is %s, prefix is %s\n"
msgstr ""
+"\n"
+"write_c_file - Ausgabename ist %s, Präfix ist %s\n"
-#: collect2.c:2082
+#: collect2.c:2005
msgid "cannot find `nm'"
-msgstr ""
+msgstr "kann »nm« nicht finden"
-#: collect2.c:2092 collect2.c:2533
+#: collect2.c:2015 collect2.c:2444
msgid "pipe"
-msgstr ""
+msgstr "Pipe"
-#: collect2.c:2096 collect2.c:2537
+#: collect2.c:2019 collect2.c:2448
msgid "fdopen"
-msgstr ""
+msgstr "fdopen"
-#: collect2.c:2122 collect2.c:2563
+#: collect2.c:2045 collect2.c:2474
#, c-format
msgid "dup2 %d 1"
-msgstr ""
+msgstr "dup2 %d 1"
-#: collect2.c:2125 collect2.c:2128 collect2.c:2141 collect2.c:2566
-#: collect2.c:2569 collect2.c:2582
+#: collect2.c:2048 collect2.c:2051 collect2.c:2064 collect2.c:2477
+#: collect2.c:2480 collect2.c:2493
#, c-format
msgid "close %d"
-msgstr ""
+msgstr "close %d"
-#: collect2.c:2131 collect2.c:2572
+#: collect2.c:2054 collect2.c:2483
#, c-format
msgid "execv %s"
-msgstr ""
+msgstr "execv %s"
-#: collect2.c:2185
+#: collect2.c:2108
#, c-format
msgid "init function found in object %s"
-msgstr ""
+msgstr "init-Funktion im Objekt %s gefunden"
-#: collect2.c:2193
+#: collect2.c:2116
#, c-format
msgid "fini function found in object %s"
-msgstr ""
+msgstr "fini-Funktion im Objekt %s gefunden"
-#: collect2.c:2216 collect2.c:2621
+#: collect2.c:2139 collect2.c:2532
msgid "fclose"
-msgstr ""
+msgstr "fclose"
-#: collect2.c:2261
+#: collect2.c:2181
#, c-format
msgid "unable to open file '%s'"
-msgstr ""
+msgstr "kann Datei »%s« nicht öffnen"
-#: collect2.c:2263
+#: collect2.c:2183
#, c-format
msgid "unable to stat file '%s'"
-msgstr ""
+msgstr "kann Dateistatus für »%s« nicht ermitteln"
-#: collect2.c:2269
+#: collect2.c:2189
#, c-format
msgid "unable to mmap file '%s'"
-msgstr ""
+msgstr "kann mmap nicht auf Datei »%s« anwenden"
-#: collect2.c:2422
+#: collect2.c:2335
msgid "not found\n"
-msgstr ""
+msgstr "nicht gefunden\n"
-#: collect2.c:2424 collect2.c:2600
+#: collect2.c:2337 collect2.c:2511
#, c-format
msgid "dynamic dependency %s not found"
-msgstr ""
+msgstr "dynamische Abhängigkeit %s nicht gefunden"
-#: collect2.c:2444
+#: collect2.c:2356
#, c-format
msgid "bad magic number in file '%s'"
-msgstr ""
+msgstr "Falsche magische Zahl in Datei »%s«"
-#: collect2.c:2466
+#: collect2.c:2378
msgid "dynamic dependencies.\n"
-msgstr ""
+msgstr "dynamische Abhängigkeiten.\n"
-#: collect2.c:2524
+#: collect2.c:2435
msgid "cannot find `ldd'"
-msgstr ""
+msgstr "kann »ldd« nicht finden"
-#: collect2.c:2585
+#: collect2.c:2496
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
msgstr ""
+"\n"
+"Ausgabe von ldd mit Konstruktoren/Destruktoren.\n"
-#: collect2.c:2612
+#: collect2.c:2523
#, c-format
msgid "unable to open dynamic dependency '%s'"
-msgstr ""
+msgstr "kann dynamische Abhängigkeit »%s« nicht öffnen"
-#: collect2.c:2726
+#: collect2.c:2683
#, c-format
msgid "%s: not a COFF file"
-msgstr ""
+msgstr "%s: keine COFF-Datei"
-#: collect2.c:2845
+#: collect2.c:2802
#, c-format
msgid "%s: cannot open as COFF file"
-msgstr ""
+msgstr "kann %s nicht als COFF-Datei öffnen"
-#: collect2.c:2901
+#: collect2.c:2857
#, c-format
msgid "library lib%s not found"
-msgstr ""
+msgstr "Bibliothek lib%s nicht gefunden"
-#: collect2.c:3028
+#: combine.c:13027
#, c-format
-msgid "open %s"
-msgstr ""
-
-#: collect2.c:3051
-msgid "incompatibilities between object file & expected values"
+msgid ""
+";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
+"\n"
msgstr ""
+";; Kombinierer-Statistik: %d Versuche, %d Ersetzungen (%d benötigten neuen Platz),\n"
+";; %d Erfolge.\n"
+"\n"
-#: collect2.c:3124
+#: combine.c:13036
#, c-format
msgid ""
"\n"
-"Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
msgstr ""
+"\n"
+";; Kombinierer-Gesamtwerte: %d Versuche, %d Ersetzungen (%d benötigten neuen Platz),\n"
+";; %d Erfolge.\n"
-#: collect2.c:3133
-msgid "string section missing"
-msgstr ""
+#: convert.c:70
+msgid "cannot convert to a pointer type"
+msgstr "kann nicht in Zeigertyp konvertieren"
-#: collect2.c:3136
-msgid "section pointer missing"
-msgstr ""
+#: convert.c:267
+msgid "pointer value used where a floating point value was expected"
+msgstr "Zeigerwert verwendet, wo Gleitkommawert erwartet wurde"
-#: collect2.c:3184
-msgid "no symbol table found"
-msgstr ""
+#: convert.c:271
+msgid "aggregate value used where a float was expected"
+msgstr "zusammengesetzten Wert verwendet, wo Gleitkomma erwartet wurde"
-#: collect2.c:3197
-msgid "no cmd_strings found"
-msgstr ""
+#: convert.c:296
+msgid "conversion to incomplete type"
+msgstr "Konvertierung in unvollständigen Typen"
-#: collect2.c:3209
-msgid ""
-"\n"
-"Updating header and load commands.\n"
-"\n"
-msgstr ""
+#: convert.c:600 convert.c:678
+msgid "can't convert between vector values of different size"
+msgstr "kann nicht zwischen Vektorwerten verschiedener Größen konvertieren"
-#: collect2.c:3216
-#, c-format
-msgid "load command map, %d cmds, new size %ld.\n"
-msgstr ""
+#: convert.c:606
+msgid "aggregate value used where an integer was expected"
+msgstr "zusammengesetzter Wert verwendet, wo Ganzzahl erwartet wurde"
-#: collect2.c:3247
-msgid ""
-"writing load commands.\n"
-"\n"
-msgstr ""
+#: convert.c:657 f/com.c:1101
+msgid "pointer value used where a complex was expected"
+msgstr "Zeigerwert verwendet, wo »complex« erwartet wurde"
-#: collect2.c:3267
+#: convert.c:661 f/com.c:1103
+msgid "aggregate value used where a complex was expected"
+msgstr "zusammengesetzer Wert verwendet, wo »complex« erwartet wurde"
+
+#: convert.c:684
+msgid "can't convert value to a vector"
+msgstr "kann Wert nicht in Vektor konvertieren"
+
+#: coverage.c:164
#, c-format
-msgid "close %s"
-msgstr ""
+msgid "`%s' is not a gcov data file"
+msgstr "»%s« ist keine gcov-Datei"
-#: collect2.c:3341
-msgid "could not convert 0x%l.8x into a region"
-msgstr ""
+#: coverage.c:175
+#, c-format
+msgid "`%s' is version `%.4s', expected version `%.4s'"
+msgstr "»%s« hat Version »%.4s«, Version »%.4s« erwartet"
-#: collect2.c:3345
+#: coverage.c:255 coverage.c:263
#, c-format
-msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
-msgstr ""
+msgid "coverage mismatch for function %u while reading execution counters."
+msgstr "Überdeckung passt nicht für Funktion %u beim Lesen der Ausführungszähler."
-#: collect2.c:3472
-msgid "bad magic number"
-msgstr ""
+#: coverage.c:257 coverage.c:340
+#, c-format
+msgid "checksum is %x instead of %x"
+msgstr "Prüfsumme ist %x statt %x"
-#: collect2.c:3473
-msgid "bad header version"
-msgstr ""
+#: coverage.c:265 coverage.c:348
+#, c-format
+msgid "number of counters is %d instead of %d"
+msgstr "Zahl der Zähler ist %d statt %d"
-#: collect2.c:3474
-msgid "bad raw header version"
-msgstr ""
+#: coverage.c:271
+#, c-format
+msgid "cannot merge separate %s counters for function %u"
+msgstr "separate %s Zähler für die Funktion %u können nicht verschmolzen werden"
-#: collect2.c:3475
-msgid "raw header buffer too small"
-msgstr ""
+#: coverage.c:296
+#, c-format
+msgid "`%s' has overflowed"
+msgstr "»%s« übergelaufen"
-#: collect2.c:3476
-msgid "old raw header file"
-msgstr ""
+#: coverage.c:296
+#, c-format
+msgid "`%s' is corrupted"
+msgstr "»%s« ist beschädigt"
-#: collect2.c:3477
-msgid "unsupported version"
-msgstr ""
+#: coverage.c:319
+#, c-format
+msgid "file %s not found, execution counts assumed to be zero"
+msgstr "Datei %s nicht gefunden, Ausführungszähler als null angenommen"
-#: collect2.c:3479
+#: coverage.c:329
#, c-format
-msgid "unknown {de,en}code_mach_o_hdr return value %d"
-msgstr ""
+msgid "no coverage for function '%s' found."
+msgstr "keine Überdeckung für Funktion »%s« gefunden."
-#: collect2.c:3499
+#: coverage.c:337 coverage.c:345
#, c-format
-msgid "fstat %s"
-msgstr ""
+msgid "coverage mismatch for function '%s' while reading counter '%s'."
+msgstr "Überdeckung passt nicht bei Funktion »%s« beim Lesen des Zählers »%s«."
-#: collect2.c:3536 collect2.c:3584
+#: coverage.c:492
#, c-format
-msgid "lseek %s 0"
-msgstr ""
+msgid "cannot open %s"
+msgstr "Es ist nicht möglich, »%s« zu öffnen"
-#: collect2.c:3540
+#: coverage.c:527
#, c-format
-msgid "read %s"
-msgstr ""
+msgid "error writing `%s'"
+msgstr "Fehler beim Schreiben der Datei »%s«"
-#: collect2.c:3543
+#. XXX should be DL_SORRY
+#: cppcharset.c:653
#, c-format
-msgid "read %ld bytes, expected %ld, from %s"
-msgstr ""
+msgid "conversion from %s to %s not supported by iconv"
+msgstr "Konvertierung von %s nach %s wird von iconv nicht unterstützt"
+
+#: cppcharset.c:656
+msgid "iconv_open"
+msgstr "iconv_open"
-#: collect2.c:3564
+#. XXX should be DL_SORRY
+#: cppcharset.c:664
#, c-format
-msgid "msync %s"
-msgstr ""
+msgid "no iconv implementation, cannot convert from %s to %s"
+msgstr "keine Implementation für iconv, es kann nicht von %s nach %s konvertiert werden"
+
+#: cppcharset.c:808
+msgid "universal character names are only valid in C++ and C99"
+msgstr "universelle Zeichennamen sind nur in C++ und C99 gültig"
-#: collect2.c:3571
+#: cppcharset.c:811
#, c-format
-msgid "munmap %s"
-msgstr ""
+msgid "the meaning of '\\%c' is different in traditional C"
+msgstr "die Bedeutung von '\\%c' ist in traditionellem C anders"
-#: collect2.c:3588
+#: cppcharset.c:837
#, c-format
-msgid "write %s"
-msgstr ""
+msgid "incomplete universal character name %.*s"
+msgstr "unvollständiger Universal-Zeichenname %.*s"
-#: collect2.c:3591
+#: cppcharset.c:849
#, c-format
-msgid "wrote %ld bytes, expected %ld, to %s"
-msgstr ""
+msgid "%.*s is not a valid universal character"
+msgstr "»%.*s« ist kein gültiges universelles Zeichen"
-#: combine.c:13222
+#: cppcharset.c:859
#, c-format
-msgid ""
-";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n"
-";; %d successes.\n"
-"\n"
-msgstr ""
+msgid "universal character %.*s is not valid in an identifier"
+msgstr "universelles Zeichen %.*s ist nicht gültig in Bezeichner"
-#: combine.c:13232
+#: cppcharset.c:863
#, c-format
-msgid ""
-"\n"
-";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
-";; %d successes.\n"
-msgstr ""
+msgid "universal character %.*s is not valid at the start of an identifier"
+msgstr "universelles Zeichen %.*s ist nicht gültig am Anfang eines Bezeichners"
-#: convert.c:69
-msgid "cannot convert to a pointer type"
-msgstr ""
+#: cppcharset.c:898
+msgid "converting UCN to source character set"
+msgstr "UCN wird in Quellzeichensatz konvertiert"
-#: convert.c:102
-msgid "pointer value used where a floating point value was expected"
-msgstr ""
+#: cppcharset.c:902
+msgid "converting UCN to execution character set"
+msgstr "UCN wird in Ausführungszeichensatz konvertiert"
-#: convert.c:106
-msgid "aggregate value used where a float was expected"
-msgstr ""
+#: cppcharset.c:967
+msgid "the meaning of '\\x' is different in traditional C"
+msgstr "die Bedeutung von '\\x' ist in traditionellem C anders"
-#: convert.c:132
-msgid "conversion to incomplete type"
-msgstr ""
+#: cppcharset.c:984 f/lex.c:580
+msgid "\\x used with no following hex digits"
+msgstr "\\x ohne folgende Hex-Ziffern verwendet"
-#: convert.c:414 convert.c:494
-msgid "can't convert between vector values of different size"
-msgstr ""
+#: cppcharset.c:991
+msgid "hex escape sequence out of range"
+msgstr "Hex-Fluchtsequenz außerhalb des Wertebereiches"
-#: convert.c:420
-msgid "aggregate value used where an integer was expected"
-msgstr ""
+#: cppcharset.c:1030
+msgid "octal escape sequence out of range"
+msgstr "Oktal-Fluchtsequenz außerhalb des Wertebereiches"
-#: convert.c:472 f/com.c:1100
-msgid "pointer value used where a complex was expected"
-msgstr ""
+#: cppcharset.c:1098
+msgid "the meaning of '\\a' is different in traditional C"
+msgstr "die Bedeutung von '\\a' ist in traditionellem C anders"
-#: convert.c:476 f/com.c:1102
-msgid "aggregate value used where a complex was expected"
-msgstr ""
+#: cppcharset.c:1105
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
+msgstr "nicht-ISO-standardkonforme Fluchtsequenz '\\%c'"
-#: convert.c:500
-msgid "can't convert value to a vector"
-msgstr ""
+#: cppcharset.c:1113
+#, c-format
+msgid "unknown escape sequence '\\%c'"
+msgstr "unbekannte Fluchtsequenz '\\%c'"
+
+#: cppcharset.c:1116
+#, c-format
+msgid "unknown escape sequence: '\\%03o'"
+msgstr "unbekannte Fluchtsequenz: '\\%03o'"
+
+#: cppcharset.c:1122
+msgid "converting escape sequence to execution character set"
+msgstr "Fluchtsequenz wird in Zeichensatz der Ausführung konvertiert"
+
+#: cppcharset.c:1181
+msgid "converting to execution character set"
+msgstr "Konvertierung in Zeichensatz der Ausführung"
+
+#: cppcharset.c:1244 cppcharset.c:1307
+msgid "character constant too long for its type"
+msgstr "Zeichenkonstante zu lang für ihren Typ"
+
+#: cppcharset.c:1247
+msgid "multi-character character constant"
+msgstr "Zeichenkonstante mit mehreren Zeichen"
+
+#: cppcharset.c:1339
+msgid "empty character constant"
+msgstr "Leere Zeichenkonstante"
+
+#: cppcharset.c:1378
+#, c-format
+msgid "failure to convert %s to %s"
+msgstr "Fehler beim Konvertieren von %s in %s"
-#: cpperror.c:113
+#: cpperror.c:110 diagnostic.def:5
msgid "warning: "
msgstr "Warnung: "
-#: cpperror.c:115
+#: cpperror.c:112
msgid "internal error: "
msgstr "interner Fehler: "
-#: cpperror.c:189
+#: cpperror.c:174
msgid "stdout"
-msgstr ""
-
-#: cpperror.c:191 gcc.c:6428
-#, c-format
-msgid "%s: %s"
-msgstr ""
+msgstr "Standardausgabe"
-#: cppexp.c:199
+#: cppexp.c:192
msgid "too many decimal points in number"
-msgstr ""
+msgstr "zu viele Dezimalpunkte in Zahl"
-#: cppexp.c:219
+#: cppexp.c:212
#, c-format
msgid "invalid digit \"%c\" in octal constant"
-msgstr ""
+msgstr "ungültige Ziffer »%c« in Oktal-Konstante"
-#: cppexp.c:225
+#: cppexp.c:218
msgid "use of C99 hexadecimal floating constant"
-msgstr ""
+msgstr "Verwendung von C99 hexadezimaler Gleitkommakonstante"
-#: cppexp.c:234
+#: cppexp.c:227
msgid "exponent has no digits"
-msgstr ""
+msgstr "Exponent hat keine Ziffern"
-#: cppexp.c:241
+#: cppexp.c:234
msgid "hexadecimal floating constants require an exponent"
-msgstr ""
+msgstr "hexadezimale Gleitkommakonstanten benötigen Exponenten"
-#: cppexp.c:247
+#: cppexp.c:240
#, c-format
msgid "invalid suffix \"%.*s\" on floating constant"
-msgstr ""
+msgstr "ungültiger Suffix »%.*s« an Gleitkommakonstante"
-#: cppexp.c:257 cppexp.c:282
+#: cppexp.c:250 cppexp.c:275
#, c-format
msgid "traditional C rejects the \"%.*s\" suffix"
-msgstr ""
+msgstr "traditionelles C lehnt den Suffix »%.*s« ab"
-#: cppexp.c:268
+#: cppexp.c:261
#, c-format
msgid "invalid suffix \"%.*s\" on integer constant"
-msgstr ""
+msgstr "ungültiger Suffix »%.*s« an Ganzzahlkonstante"
-#: cppexp.c:289
+#: cppexp.c:283
msgid "use of C99 long long integer constant"
-msgstr ""
+msgstr "C99 long long Ganzzahlkonstante verwendet"
-#: cppexp.c:295
+#: cppexp.c:290
msgid "imaginary constants are a GCC extension"
-msgstr ""
+msgstr "imaginäre Konstanten sind eine GCC-Erweiterung"
-#: cppexp.c:383
+#: cppexp.c:376
msgid "integer constant is too large for its type"
-msgstr ""
+msgstr "Ganzzahlkonstante ist zu groß für ihren Typ"
-#: cppexp.c:395
+#: cppexp.c:388
msgid "integer constant is so large that it is unsigned"
-msgstr ""
+msgstr "Ganzzahlkonstante ist so groß, dass sie vorzeichenlos ist"
-#: cppexp.c:482
+#: cppexp.c:470
msgid "missing ')' after \"defined\""
-msgstr ""
+msgstr "fehlendes ')' hinter »defined«"
-#: cppexp.c:489
+#: cppexp.c:477
msgid "operator \"defined\" requires an identifier"
-msgstr ""
+msgstr "Operator »defined« erfordert einen Bezeichner"
-#: cppexp.c:497
+#: cppexp.c:485
#, c-format
msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
-msgstr ""
+msgstr "(»%s« ist ein alternatives Token for »%s« in C++)"
-#: cppexp.c:507
+#: cppexp.c:495
msgid "this use of \"defined\" may not be portable"
-msgstr ""
+msgstr "diese Verwendung von »defined« könnte nicht portierbar sein"
-#: cppexp.c:545
+#: cppexp.c:531
msgid "floating constant in preprocessor expression"
-msgstr ""
+msgstr "Gleitkommakonstante in Präprozessorausdruck"
-#: cppexp.c:551
+#: cppexp.c:537
msgid "imaginary number in preprocessor expression"
-msgstr ""
+msgstr "imaginäre Zahl in Präprozessorausdruck"
-#: cppexp.c:596
-#, c-format
-msgid "ISO C++ does not permit \"%s\" in #if"
-msgstr ""
-
-#: cppexp.c:604
+#: cppexp.c:582
#, c-format
msgid "\"%s\" is not defined"
-msgstr ""
+msgstr "»%s« ist nicht definiert"
-#: cppexp.c:737 cppexp.c:772
+#: cppexp.c:714 cppexp.c:743
#, c-format
msgid "missing binary operator before token \"%s\""
-msgstr ""
-
-#: cppexp.c:756
-#, c-format
-msgid "invalid character '%c' in #if"
-msgstr ""
-
-#: cppexp.c:758
-#, c-format
-msgid "invalid character '\\%03o' in #if"
-msgstr ""
+msgstr "fehlender binärer Operator vor Token »%s«"
-#: cppexp.c:763
+#: cppexp.c:734
#, c-format
msgid "token \"%s\" is not valid in preprocessor expressions"
-msgstr ""
+msgstr "Token »%s« ist nicht gültig in Präprozessorausdrücken"
-#: cppexp.c:782
+#: cppexp.c:753
msgid "void expression between '(' and ')'"
-msgstr ""
+msgstr "ungültiger Ausdruck zwischen '(' und ')'"
-#: cppexp.c:785
+#: cppexp.c:756
msgid "#if with no expression"
-msgstr ""
+msgstr "#if ohne Ausdruck"
-#: cppexp.c:787
+#: cppexp.c:758
#, c-format
msgid "operator '%s' has no right operand"
-msgstr ""
+msgstr "Operator »%s« hat keinen rechten Operanden"
-#: cppexp.c:813
+#: cppexp.c:784
msgid " ':' without preceding '?'"
-msgstr ""
+msgstr " ':' ohne vorangehendes '?'"
-#: cppexp.c:840
+#: cppexp.c:811
msgid "unbalanced stack in #if"
-msgstr ""
+msgstr "unausgeglichener Keller in #if"
-#: cppexp.c:862
+#: cppexp.c:830
#, c-format
msgid "impossible operator '%u'"
-msgstr ""
+msgstr "unmöglicher Operator '%u'"
-#: cppexp.c:954
+#: cppexp.c:922
msgid "missing ')' in expression"
-msgstr ""
+msgstr "fehlendes ')' in Ausdruck"
-#: cppexp.c:975
+#: cppexp.c:943
msgid "'?' without following ':'"
-msgstr ""
+msgstr "'?' ohne folgendes ':'"
-#: cppexp.c:985
+#: cppexp.c:953
msgid "integer overflow in preprocessor expression"
-msgstr ""
+msgstr "Ganzzahlüberlauf in Präprozessorausdruck"
-#: cppexp.c:990
+#: cppexp.c:958
msgid "missing '(' in expression"
-msgstr ""
+msgstr "fehlendes '(' in Ausdruck"
-#: cppexp.c:1026
+#: cppexp.c:990
#, c-format
msgid "the left operand of \"%s\" changes sign when promoted"
-msgstr ""
+msgstr "der linke Operand von »%s« ändert bei der Weitergabe das Vorzeichen"
-#: cppexp.c:1031
+#: cppexp.c:995
#, c-format
msgid "the right operand of \"%s\" changes sign when promoted"
-msgstr ""
+msgstr "der rechte Operand von »%s« ändert bei der Weitergabe das Vorzeichen"
-#: cppexp.c:1414
+#: cppexp.c:1352
msgid "comma operator in operand of #if"
-msgstr ""
+msgstr "Kommaoperator in Operand von #if"
-#: cppexp.c:1551
+#: cppexp.c:1483
msgid "division by zero in #if"
-msgstr ""
+msgstr "Division durch null in #if"
-#: cppfiles.c:411
-#, c-format
-msgid "%s is too large"
-msgstr "%s ist zu groß"
+#: cppfiles.c:370
+msgid "NULL directory in find_file"
+msgstr "NULL-Verzeichnis in find_file"
-#: cppfiles.c:447
-#, c-format
-msgid "%s is shorter than expected"
-msgstr ""
+#: cppfiles.c:397
+msgid "one or more PCH files were found, but they were invalid"
+msgstr "ein oder mehrere PCH-Dateien wurden gefunden, aber sie sind ungültig"
-#: cppfiles.c:461
-#, c-format
-msgid "%s is a block device"
-msgstr ""
+#: cppfiles.c:400
+msgid "use -Winvalid-pch for more information"
+msgstr "verwenden Sie -Winvalid-pch für mehr Informationen"
-#: cppfiles.c:594
+#: cppfiles.c:458
#, c-format
-msgid "no include path in which to find %s"
-msgstr ""
-
-#: cppfiles.c:668
-msgid "Multiple include guards may be useful for:\n"
-msgstr ""
-
-#: cppfiles.c:1014
-msgid "absolute file name in remap_filename"
-msgstr ""
+msgid "%s is a block device"
+msgstr "%s ist ein Block-Gerät"
-#: cppinit.c:224
+#: cppfiles.c:475
#, c-format
-msgid "ignoring nonexistent directory \"%s\"\n"
-msgstr "nicht vorhandenes Verzeichnis »%s« wird ignoriert\n"
+msgid "%s is too large"
+msgstr "%s ist zu groß"
-#: cppinit.c:231
+#: cppfiles.c:510
#, c-format
-msgid "%s: Not a directory"
-msgstr "%s: Kein Verzeichnis"
+msgid "%s is shorter than expected"
+msgstr "%s ist kürzer als erwartet"
-#: cppinit.c:287
+#: cppfiles.c:696
#, c-format
-msgid "ignoring duplicate directory \"%s\"\n"
-msgstr "doppeltes Verzeichnis »%s« wird ignoriert\n"
+msgid "no include path in which to search for %s"
+msgstr "kein Include-Pfad, um %s zu finden"
-#: cppinit.c:325
-msgid " as it is a non-system directory that duplicates a system directory\n"
-msgstr ""
+#: cppfiles.c:956
+msgid "Multiple include guards may be useful for:\n"
+msgstr "Mehrere Include-Wächter könnten nützlich sein für:\n"
-#: cppinit.c:891
+#: cppinit.c:387
msgid "cppchar_t must be an unsigned type"
-msgstr ""
+msgstr "cppchar_t muss ein vorzeichenloser Typ sein"
-#: cppinit.c:895
+#: cppinit.c:391
#, c-format
msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
-msgstr ""
+msgstr "Präprozessorarithmetik hat maximale Präzision von %lu Bits; Ziel erfordert %lu Bits"
-#: cppinit.c:901
+#: cppinit.c:398
msgid "CPP arithmetic must be at least as precise as a target int"
-msgstr ""
+msgstr "CPP-Arithmetik muss mindestens so genau sein wie das Ziel int"
-#: cppinit.c:904
+#: cppinit.c:401
msgid "target char is less than 8 bits wide"
-msgstr ""
+msgstr "Ziel-char ist weniger als 8 Bits breit"
-#: cppinit.c:908
+#: cppinit.c:405
msgid "target wchar_t is narrower than target char"
-msgstr ""
+msgstr "Ziel-wchar_t ist schmaler als Ziel char"
-#: cppinit.c:912
+#: cppinit.c:409
msgid "target int is narrower than target char"
-msgstr ""
+msgstr "Ziel-int ist schmaler als Ziel-char"
-#: cppinit.c:916
+#: cppinit.c:414
msgid "CPP half-integer narrower than CPP character"
-msgstr ""
+msgstr "CPP Halb-Ganzzahl ist schmaler als CPP-Zeichen"
-#: cppinit.c:920
+#: cppinit.c:418
#, c-format
msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
-msgstr ""
-
-#: cppinit.c:972
-msgid "#include \"...\" search starts here:\n"
-msgstr ""
-
-#: cppinit.c:976
-msgid "#include <...> search starts here:\n"
-msgstr ""
-
-#: cppinit.c:979
-msgid "End of search list.\n"
-msgstr ""
-
-#: cppinit.c:1057
-msgid "<built-in>"
-msgstr ""
-
-#: cppinit.c:1059
-msgid "<command line>"
-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:1164
-#, c-format
-msgid "assertion missing after %s"
-msgstr ""
-
-#: cppinit.c:1165
-#, c-format
-msgid "directory name missing after %s"
-msgstr ""
-
-#: cppinit.c:1166
-#, c-format
-msgid "file name missing after %s"
-msgstr ""
-
-#: cppinit.c:1167
-#, c-format
-msgid "macro name missing after %s"
-msgstr ""
-
-#: cppinit.c:1168
-#, c-format
-msgid "path name missing after %s"
-msgstr ""
-
-#: cppinit.c:1353
-msgid "-I- specified twice"
-msgstr ""
-
-#: cpplex.c:149
-#, c-format
-msgid "trigraph ??%c converted to %c"
-msgstr ""
-
-#: cpplex.c:157
-#, c-format
-msgid "trigraph ??%c ignored"
-msgstr ""
-
-#: cpplex.c:214
-msgid "backslash and newline separated by space"
-msgstr ""
-
-#: cpplex.c:221 cpptrad.c:158
-msgid "backslash-newline at end of file"
-msgstr ""
+msgstr "CPP kann auf diesem Computer keine Wide-Zeichenkonstanten über %lu Bits Breite behandeln, das Ziel benötigt %lu Bits"
-#: cpplex.c:287 cpptrad.c:199
-msgid "\"/*\" within comment"
-msgstr ""
-
-#: cpplex.c:395
+#: cpplex.c:410
msgid "null character(s) ignored"
-msgstr ""
+msgstr "Null-Zeichen ignoriert"
-#: cpplex.c:402
-#, c-format
-msgid "%s in preprocessing directive"
-msgstr ""
+#: cpplex.c:445
+msgid "'$' in identifier or number"
+msgstr "'$' in Bezeichner oder Zahl"
-#: cpplex.c:475
+#: cpplex.c:492
#, c-format
msgid "attempt to use poisoned \"%s\""
-msgstr ""
+msgstr "Versuch, schlechtes »%s« zu verwenden"
-#: cpplex.c:483
+#: cpplex.c:500
msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
-msgstr ""
-
-#: cpplex.c:555
-msgid "'$' character(s) in identifier or number"
-msgstr ""
-
-#: cpplex.c:698
-#, c-format
-msgid "missing terminating %c character"
-msgstr ""
+msgstr "__VA_ARGS__ kann nur in Erweiterung eines variadischen C99-Makros auftreten"
-#: cpplex.c:711
+#: cpplex.c:596
msgid "null character(s) preserved in literal"
-msgstr ""
+msgstr "Null-Zeichen im Literal erhalten"
-#: cpplex.c:915 cpptrad.c:487
-msgid "no newline at end of file"
-msgstr ""
-
-#: cpplex.c:1092 cpptrad.c:213
+#: cpplex.c:916
msgid "unterminated comment"
msgstr "nicht beendeter Kommentar"
-#: cpplex.c:1103
+#: cpplex.c:927
msgid "C++ style comments are not allowed in ISO C90"
-msgstr ""
+msgstr "C++-Stil-Kommentare sind in ISO-C90 nicht erlaubt"
-#: cpplex.c:1105
+#: cpplex.c:929
msgid "(this will be reported only once per input file)"
-msgstr ""
+msgstr "(dies wird nur einmal pro Eingabedatei gemeldet)"
-#: cpplex.c:1110
+#: cpplex.c:934
msgid "multi-line comment"
msgstr "mehrzeiliger Kommentar"
-#: cpplex.c:1425
-#, c-format
-msgid "unknown string token %s\n"
-msgstr ""
-
-#: cpplex.c:1438
+#: cpplex.c:1198
#, c-format
msgid "unspellable token %s"
-msgstr ""
-
-#: cpplex.c:1695
-#, c-format
-msgid "the meaning of '\\%c' is different in traditional C"
-msgstr ""
-
-#: cpplex.c:1701
-msgid "incomplete universal-character-name"
-msgstr ""
-
-#: cpplex.c:1715
-#, c-format
-msgid "non-hex digit '%c' in universal-character-name"
-msgstr ""
-
-#: cpplex.c:1723
-msgid "universal-character-name on EBCDIC target"
-msgstr ""
-
-#: cpplex.c:1737
-msgid "universal-character-name out of range"
-msgstr ""
-
-#: cpplex.c:1791
-msgid "the meaning of '\\a' is different in traditional C"
-msgstr ""
-
-#: cpplex.c:1798
-#, c-format
-msgid "non-ISO-standard escape sequence, '\\%c'"
-msgstr ""
-
-#: cpplex.c:1809
-msgid "the meaning of '\\x' is different in traditional C"
-msgstr ""
-
-#: cpplex.c:1828 f/lex.c:585
-msgid "\\x used with no following hex digits"
-msgstr ""
-
-#: cpplex.c:1833
-msgid "hex escape sequence out of range"
-msgstr ""
-
-#: cpplex.c:1858
-msgid "octal escape sequence out of range"
-msgstr ""
-
-#: cpplex.c:1874
-#, c-format
-msgid "unknown escape sequence '\\%c'"
-msgstr ""
-
-#: cpplex.c:1877
-#, c-format
-msgid "unknown escape sequence: '\\%03o'"
-msgstr ""
-
-#: cpplex.c:1882
-msgid "escape sequence out of range for its type"
-msgstr ""
-
-#: cpplex.c:1973
-msgid "empty character constant"
-msgstr ""
+msgstr "nicht buchstabierbares Token %s"
-#: cpplex.c:1983
-msgid "character constant too long for its type"
-msgstr ""
-
-#: cpplex.c:1986
-msgid "multi-character character constant"
-msgstr ""
-
-#: cpplib.c:225
+#: cpplib.c:218
#, c-format
msgid "extra tokens at end of #%s directive"
-msgstr ""
+msgstr "mehrere Token am Ende der Direktive #%s"
-#: cpplib.c:315
+#: cpplib.c:304
#, c-format
msgid "#%s is a GCC extension"
msgstr "#%s ist eine Erweiterung des GCC"
-#: cpplib.c:327
+#: cpplib.c:316
msgid "suggest not using #elif in traditional C"
-msgstr ""
+msgstr "empfehle, in traditionellem C nicht #elif zu verwenden"
-#: cpplib.c:330
+#: cpplib.c:319
#, c-format
msgid "traditional C ignores #%s with the # indented"
-msgstr ""
+msgstr "traditionelles C ignoriert #%s mit eingerücktem #"
-#: cpplib.c:334
+#: cpplib.c:323
#, c-format
msgid "suggest hiding #%s from traditional C with an indented #"
-msgstr ""
+msgstr "empfehle, #%s vor traditionellem C mit # zu verbergen"
-#: cpplib.c:358
+#: cpplib.c:345
msgid "embedding a directive within macro arguments is not portable"
-msgstr ""
+msgstr "das Einbetten einer Direktive innerhalb von Makroargumenten ist nicht portierbar"
-#: cpplib.c:378
+#: cpplib.c:365
msgid "style of line directive is a GCC extension"
-msgstr ""
+msgstr "der Stil der line-Direktive ist eine Erweiterung des GCC"
-#: cpplib.c:428
+#: cpplib.c:415
#, c-format
msgid "invalid preprocessing directive #%s"
-msgstr ""
+msgstr "ungültige Präprozessordirektive #%s"
-#: cpplib.c:500
+#: cpplib.c:484
msgid "\"defined\" cannot be used as a macro name"
-msgstr ""
+msgstr "»defined« kann nicht als Makroname verwendet werden"
-#: cpplib.c:506
+#: cpplib.c:490
#, c-format
msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
-msgstr ""
+msgstr "»%s« kann nicht als Makroname verwendet werden, da es ein Operator in C++ ist"
-#: cpplib.c:509
+#: cpplib.c:493
#, c-format
msgid "no macro name given in #%s directive"
-msgstr ""
+msgstr "kein Makroname in Direktive #%s angegeben"
-#: cpplib.c:512
+#: cpplib.c:496
msgid "macro names must be identifiers"
-msgstr ""
+msgstr "Makronamen müssen Bezeichner sein"
-#: cpplib.c:552
+#: cpplib.c:537
#, c-format
msgid "undefining \"%s\""
-msgstr ""
+msgstr "un-definiere »%s«"
-#: cpplib.c:598
+#: cpplib.c:609
msgid "missing terminating > character"
-msgstr ""
+msgstr "fehlendes abschließendes »>«-Zeichen"
-#: cpplib.c:637
+#: cpplib.c:662
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
-msgstr ""
+msgstr "#%s erwartet \"DATEINAME\" oder <DATEINAME>"
-#: cpplib.c:648
-#, c-format
-msgid "empty file name in #%s"
-msgstr ""
+#: cpplib.c:685
+msgid "#include nested too deeply"
+msgstr "#include ist zu tief geschachtelt"
-#: cpplib.c:667
+#: cpplib.c:723
msgid "#include_next in primary source file"
-msgstr ""
-
-#: cpplib.c:674
-msgid "#import is obsolete, use an #ifndef wrapper in the header file"
-msgstr ""
-
-#: cpplib.c:682
-msgid "#include nested too deeply"
-msgstr ""
+msgstr "#include_next in erster Quelldatei"
-#: cpplib.c:739
+#: cpplib.c:749
#, c-format
msgid "invalid flag \"%s\" in line directive"
-msgstr ""
+msgstr "ungültiges Flag »%s« in line-Direktive"
-#: cpplib.c:814
+#: cpplib.c:794
#, c-format
msgid "\"%s\" after #line is not a positive integer"
-msgstr ""
+msgstr "»%s« hinter #line ist keine positive Ganzzahl"
-#: cpplib.c:820
+#: cpplib.c:800
msgid "line number out of range"
-msgstr ""
+msgstr "Zeilennummer ist außerhalb des Wertebereiches"
-#: cpplib.c:831 cpplib.c:902
+#: cpplib.c:812 cpplib.c:885
#, c-format
msgid "\"%s\" is not a valid filename"
-msgstr ""
+msgstr "»%s« ist kein gültiger Dateiname"
-#: cpplib.c:866
+#: cpplib.c:847
#, c-format
msgid "\"%s\" after # is not a positive integer"
-msgstr ""
+msgstr "»%s« hinter # ist keine positive Ganzzahl"
-#: cpplib.c:973
+#: cpplib.c:947
msgid "invalid #ident directive"
-msgstr ""
+msgstr "ungültige #ident-Direktive"
-#: cpplib.c:1061
+#: cpplib.c:1027
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
-msgstr ""
+msgstr "registriere »%s« sowohl als Pragma als auch als Pragma-Namespace"
-#: cpplib.c:1064
+#: cpplib.c:1030
#, c-format
msgid "#pragma %s %s is already registered"
-msgstr ""
+msgstr "#pragma %s %s ist bereits registriert"
-#: cpplib.c:1067
+#: cpplib.c:1033
#, c-format
msgid "#pragma %s is already registered"
-msgstr ""
-
-#: cpplib.c:1143
-msgid "#pragma once is obsolete"
-msgstr ""
+msgstr "#pragma %s ist bereits registriert"
-#: cpplib.c:1146
+#: cpplib.c:1178
msgid "#pragma once in main file"
-msgstr ""
+msgstr "#pragma once in Hauptdatei"
-#: cpplib.c:1170
+#: cpplib.c:1201
msgid "invalid #pragma GCC poison directive"
-msgstr ""
+msgstr "ungültige #pragma GCC Direktive"
-#: cpplib.c:1179
+#: cpplib.c:1210
#, c-format
msgid "poisoning existing macro \"%s\""
-msgstr ""
+msgstr "schlechtes existierendes Makro »%s«"
-#: cpplib.c:1201
+#: cpplib.c:1231
msgid "#pragma system_header ignored outside include file"
-msgstr ""
+msgstr "#pragma system_header außerhalb include-Datei ignoriert"
-#: cpplib.c:1226
+#: cpplib.c:1255
#, c-format
-msgid "cannot find source %s"
-msgstr ""
+msgid "cannot find source file %s"
+msgstr "Quelldatei %s kann nicht gefunden werden"
-#: cpplib.c:1230
+#: cpplib.c:1259
#, c-format
msgid "current file is older than %s"
-msgstr ""
+msgstr "aktuelle Datei ist älter als %s"
-#: cpplib.c:1346
+#: cpplib.c:1373
msgid "_Pragma takes a parenthesized string literal"
-msgstr ""
+msgstr "_Pragma nimmt ein geklammertes Zeichenkettenliteral"
-#: cpplib.c:1429
+#: cpplib.c:1451
msgid "#else without #if"
-msgstr ""
+msgstr "#else ohne #if"
-#: cpplib.c:1434
+#: cpplib.c:1456
msgid "#else after #else"
-msgstr ""
+msgstr "#else hinter #else"
-#: cpplib.c:1436 cpplib.c:1470
-msgid "the conditional began here"
-msgstr ""
-
-#: cpplib.c:1463
+#: cpplib.c:1484
msgid "#elif without #if"
-msgstr ""
+msgstr "#elif ohne #if"
-#: cpplib.c:1468
+#: cpplib.c:1489
msgid "#elif after #else"
-msgstr ""
+msgstr "#elif hinter #else"
-#: cpplib.c:1499
+#: cpplib.c:1519
msgid "#endif without #if"
-msgstr ""
+msgstr "#endif ohne #if"
-#: cpplib.c:1582
+#: cpplib.c:1596
msgid "missing '(' after predicate"
-msgstr ""
+msgstr "fehlendes '(' hinter Prädikat"
-#: cpplib.c:1597
+#: cpplib.c:1611
msgid "missing ')' to complete answer"
-msgstr ""
+msgstr "fehlendes ')', um Antwort abzuschließen"
-#: cpplib.c:1617
+#: cpplib.c:1631
msgid "predicate's answer is empty"
-msgstr ""
+msgstr "Prädikatantwort ist leer"
-#: cpplib.c:1647
+#: cpplib.c:1658
msgid "assertion without predicate"
-msgstr ""
+msgstr "Behauptung ohne Prädikat"
-#: cpplib.c:1649
+#: cpplib.c:1660
msgid "predicate must be an identifier"
-msgstr ""
+msgstr "Prädikat muss ein Bezeichner sein"
-#: cpplib.c:1738
+#: cpplib.c:1744
#, c-format
msgid "\"%s\" re-asserted"
-msgstr ""
+msgstr "»%s« wieder behauptet"
-#: cpplib.c:1968
-#, c-format
-msgid "unterminated #%s"
-msgstr ""
-
-#: cppmacro.c:94
-#, c-format
-msgid "macro \"%s\" is not used"
-msgstr ""
-
-#: cppmacro.c:139 cppmacro.c:294
+#: cppmacro.c:125 cppmacro.c:280
#, c-format
msgid "invalid built-in macro \"%s\""
-msgstr ""
+msgstr "ungültiges eingebautes Makro »%s«"
-#: cppmacro.c:234
+#: cppmacro.c:221
msgid "could not determine date and time"
-msgstr ""
+msgstr "Datum und Zeit konnten nicht bestimmt werden"
-#: cppmacro.c:407
+#: cppmacro.c:393
msgid "invalid string literal, ignoring final '\\'"
-msgstr ""
+msgstr "ungültiges Zeichenkettenliteral, ignoriere abschließendes '\\'"
-#: cppmacro.c:504
+#: cppmacro.c:476
#, c-format
msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
-msgstr ""
+msgstr "das Einfügen von »%s« und »%s« ergibt kein gültiges Präprozessor-Token"
-#: cppmacro.c:546
+#: cppmacro.c:514
msgid "ISO C99 requires rest arguments to be used"
-msgstr ""
+msgstr "ISO-C99 erfordert, dass Restargumente verwendet werden"
-#: cppmacro.c:551
+#: cppmacro.c:519
#, c-format
msgid "macro \"%s\" requires %u arguments, but only %u given"
-msgstr ""
+msgstr "Makro »%s« erfordert %u Argumente, aber nur %u wurden angegeben"
-#: cppmacro.c:556
+#: cppmacro.c:524
#, c-format
msgid "macro \"%s\" passed %u arguments, but takes just %u"
-msgstr ""
+msgstr "dem Makro »%s« wurden %u Argumente übergeben, aber es nimmt nur %u"
-#: cppmacro.c:669 cpptrad.c:774
+#: cppmacro.c:635
#, c-format
msgid "unterminated argument list invoking macro \"%s\""
-msgstr ""
+msgstr "unvollendete Argumentliste beim Makroaufruf »%s«"
-#: cppmacro.c:776
+#: cppmacro.c:738
#, c-format
msgid "function-like macro \"%s\" must be used with arguments in traditional C"
-msgstr ""
+msgstr "funktionsähnliches Makro »%s« muss mit Argumenten in traditionellem C verwendet werden"
-#: cppmacro.c:1314
+#: cppmacro.c:1241
#, c-format
msgid "duplicate macro parameter \"%s\""
-msgstr ""
+msgstr "doppelter Makroparameter »%s«"
-#: cppmacro.c:1351
+#: cppmacro.c:1286
#, c-format
msgid "\"%s\" may not appear in macro parameter list"
-msgstr ""
+msgstr "»%s« darf nicht in Makroparameterliste auftreten"
-#: cppmacro.c:1359
+#: cppmacro.c:1294
msgid "macro parameters must be comma-separated"
-msgstr ""
+msgstr "Makroparameter müssen mit Komma getrennt sein"
-#: cppmacro.c:1376
+#: cppmacro.c:1311
msgid "parameter name missing"
-msgstr ""
+msgstr "Parametername fehlt"
-#: cppmacro.c:1391
+#: cppmacro.c:1326
msgid "anonymous variadic macros were introduced in C99"
-msgstr ""
+msgstr "anonyme variadische Makros wurden in C99 eingeführt"
-#: cppmacro.c:1395
+#: cppmacro.c:1330
msgid "ISO C does not permit named variadic macros"
-msgstr ""
+msgstr "ISO-C erlaubt keine benannten variadischen Makros"
-#: cppmacro.c:1404
+#: cppmacro.c:1339
msgid "missing ')' in macro parameter list"
-msgstr ""
+msgstr "fehlendes ')' in Makroparameterliste"
-#: cppmacro.c:1472
+#: cppmacro.c:1402
msgid "ISO C requires whitespace after the macro name"
-msgstr ""
+msgstr "ISO-C erfordert Whitespace hinter Makroname"
-#: cppmacro.c:1500
+#: cppmacro.c:1430
msgid "'#' is not followed by a macro parameter"
-msgstr ""
+msgstr "'#' wird nicht von einem Makroparameter gefolgt"
-#: cppmacro.c:1519
+#: cppmacro.c:1449
msgid "'##' cannot appear at either end of a macro expansion"
-msgstr ""
+msgstr "'##' kann nicht an den Enden einer Makroexpansion auftreten"
-#: cppmacro.c:1601
-#, c-format
-msgid "\"%s\" redefined"
-msgstr ""
-
-#: cppmacro.c:1606
-msgid "this is the location of the previous definition"
-msgstr ""
-
-#: cppmacro.c:1657
+#: cppmacro.c:1588
#, c-format
msgid "macro argument \"%s\" would be stringified in traditional C"
-msgstr ""
+msgstr "Makroargument »%s« würde in traditionellem C zum String gewandelt werden"
-#: cppmacro.c:1682
+#: cppmacro.c:1611
#, c-format
msgid "invalid hash type %d in cpp_macro_definition"
-msgstr ""
-
-#: cppspec.c:109
-#, c-format
-msgid "\"%s\" is not a valid option to the preprocessor"
-msgstr ""
+msgstr "ungültiger Hash-Typ %d in cpp_macro_definition"
-#: cppspec.c:133
-msgid "too many input files"
-msgstr "zu viele Eingabedateien"
+#: cpppch.c:84 cpppch.c:332 cpppch.c:356 cpppch.c:365
+msgid "while writing precompiled header"
+msgstr "beim Schreiben des vorkompilierten Headers"
-#: cpptrad.c:841
+#: cpppch.c:463
#, c-format
-msgid "detected recursion whilst expanding macro \"%s\""
-msgstr ""
-
-#: cse.c:7195
-#, c-format
-msgid ";; Processing block from %d to %d, %d sets.\n"
-msgstr ""
+msgid "%s: not used because `%.*s' not defined"
+msgstr "%s: nicht verwendet, da »%.*s« nicht definiert"
-#: diagnostic.c:714
-msgid "((anonymous))"
-msgstr ""
-
-#: diagnostic.c:928
+#: cpppch.c:475
#, c-format
-msgid "%s: warnings being treated as errors\n"
-msgstr ""
+msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
+msgstr "%s: nicht verwendet, da »%.*s« als »%s« statt als »%.*s« definiert wurde"
-#: diagnostic.c:963
+#: cpppch.c:516
#, c-format
-msgid "%s: %s: "
-msgstr ""
+msgid "%s: not used because `%s' is defined"
+msgstr "%s: nicht verwendet, da »%s« definiert ist"
-#: diagnostic.c:1054
-#, c-format
-msgid "%s "
-msgstr ""
+#: cpppch.c:529 cpppch.c:715
+msgid "while reading precompiled header"
+msgstr "beim Lesen des vorkompilierten Headers"
-#: diagnostic.c:1056
+#: cppspec.c:106
#, c-format
-msgid " %s"
-msgstr ""
+msgid "\"%s\" is not a valid option to the preprocessor"
+msgstr "»%s« ist keine gültige Präprozessoroption"
-#: diagnostic.c:1078
-msgid "At top level:"
-msgstr ""
+#: cppspec.c:128
+msgid "too many input files"
+msgstr "zu viele Eingabedateien"
-#: diagnostic.c:1083
+#: cpptrad.c:744
#, c-format
-msgid "In member function `%s':"
-msgstr ""
+msgid "detected recursion whilst expanding macro \"%s\""
+msgstr "Rekursion bei Expansion des Makros »%s« entdeckt"
-#: diagnostic.c:1087
-#, c-format
-msgid "In function `%s':"
-msgstr ""
+#: cpptrad.c:911
+msgid "syntax error in macro parameter list"
+msgstr "Syntaxfehler in Makroparameterliste"
-#: diagnostic.c:1175
-msgid "compilation terminated.\n"
-msgstr ""
+#: cse.c:7040
+#, c-format
+msgid ";; Processing block from %d to %d, %d sets.\n"
+msgstr ";; Bearbeite Block von %d bis %d, %d Sets.\n"
-#: diagnostic.c:1193
+#: diagnostic.c:209
#, c-format
msgid "%s:%d: confused by earlier errors, bailing out\n"
-msgstr ""
+msgstr "%s:%d: durch frühere Fehler verwirrt, Abbruch\n"
-#: diagnostic.c:1208 diagnostic.c:1316
-#, c-format
-msgid ""
-"Please submit a full bug report,\n"
-"with preprocessed source if appropriate.\n"
-"See %s for instructions.\n"
-msgstr ""
-"Bitte senden Sie einen vollständigen Fehlerbericht auf Englisch ein;\n"
-"bearbeiten Sie die Quellen zunächst mit einem Präprozessor, wenn es\n"
-"dienlich ist.\n"
-"Fehler in der deutschen Ãœbersetzung sind an de@li.org zu melden.\n"
-"\n"
-"Gehen Sie gemäß den Hinweisen in %s vor.\n"
+#: diagnostic.c:281
+msgid "compilation terminated.\n"
+msgstr "Kompilierung beendet.\n"
-#: diagnostic.c:1314
+#: diagnostic.c:572
msgid "Internal compiler error: Error reporting routines re-entered.\n"
-msgstr ""
+msgstr "Interner Compilerfehler: Fehlerbehandlungsroutinen doppelt betreten.\n"
-#: diagnostic.c:1376
+#: diagnostic.c:584
#, c-format
msgid "in %s, at %s:%d"
-msgstr ""
-
-#: diagnostic.c:1397
-#, c-format
-msgid "In file included from %s:%d"
-msgstr ""
-
-#: diagnostic.c:1400
-#, c-format
-msgid ""
-",\n"
-" from %s:%d"
-msgstr ""
-
-#: diagnostic.c:1401
-msgid ":\n"
-msgstr ""
-
-#: diagnostic.c:1445 diagnostic.c:1462
-#, c-format
-msgid "`%s' is deprecated (declared at %s:%d)"
-msgstr ""
+msgstr "in %s, bei %s:%d"
-#: diagnostic.c:1465
-#, c-format
-msgid "`%s' is deprecated"
-msgstr ""
-
-#: diagnostic.c:1468
-#, c-format
-msgid "type is deprecated (declared at %s:%d)"
-msgstr ""
-
-#: diagnostic.c:1471
-msgid "type is deprecated"
-msgstr ""
-
-#: dominance.c:728
+#: dominance.c:763
#, c-format
msgid "dominator of %d should be %d, not %d"
-msgstr ""
+msgstr "Herrscher über %d sollte %d sein, nicht %d"
-#: dwarf2out.c:3135
+#: dwarf2out.c:3228
#, c-format
msgid "DW_LOC_OP %s not implemented\n"
-msgstr ""
-
-#: dwarfout.c:2066
-#, c-format
-msgid "internal regno botch: `%s' has regno = %d\n"
-msgstr ""
-
-#: dwarfout.c:6181
-msgid "support for the DWARF1 debugging format is deprecated"
-msgstr ""
-
-#: dwarfout.c:6278
-msgid "can't get current directory"
-msgstr ""
+msgstr "DW_LOC_OP %s nicht implementiert\n"
#: emit-rtl.c:1155
msgid "can't access real part of complex value in hard register"
-msgstr ""
+msgstr "kann nicht auf realen Teil des komplexen Wertes im festen Register zugreifen"
-#: emit-rtl.c:1177
+#: emit-rtl.c:1182
msgid "can't access imaginary part of complex value in hard register"
-msgstr ""
+msgstr "kann nicht auf imaginären Teil des komplexen Wertes im festen Register zugreifen"
-#: emit-rtl.c:3402
+#: emit-rtl.c:2263
+msgid "Invalid rtl sharing found in the insn"
+msgstr "ungültige gemeinsame rtl-Benutzung in insn gefunden"
+
+#: emit-rtl.c:2265
+msgid "Shared rtx"
+msgstr "Gemeinsames rtx"
+
+#: emit-rtl.c:3400
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
-msgstr ""
+msgstr "ICE: emit_insn verwendet, wo emit_jump_insn erforderlich:\n"
-#: errors.c:136
+#: errors.c:129
#, c-format
msgid "abort in %s, at %s:%d"
-msgstr ""
+msgstr "Abbruch in %s, bei %s:%d"
-#: except.c:369
+#: except.c:357
msgid "exception handling disabled, use -fexceptions to enable"
-msgstr ""
+msgstr "Ausnahmebehandlung ausgeschaltet, benutzen Sie -fexeptions zum Anschalten"
-#: except.c:2994
+#: except.c:2942
msgid "argument of `__builtin_eh_return_regno' must be constant"
-msgstr ""
+msgstr "Argument für »__builtin_eh_return_regno« muss konstant sein"
-#: except.c:3137
+#: except.c:3073
msgid "__builtin_eh_return not supported on this target"
-msgstr ""
+msgstr "__builtin_eh_return für dieses Ziel nicht unterstützt"
-#: explow.c:1408
+#: explow.c:1327
msgid "stack limits not supported on this target"
-msgstr ""
+msgstr "Kellergrenzen nicht für dieses Ziel unterstützt"
-#: expr.c:3355
+#: expr.c:2965
msgid "function using short complex types cannot be inline"
-msgstr ""
-
-#: expr.c:6272 expr.c:6281 expr.c:6290 expr.c:6295 expr.c:6604 expr.c:6620
-msgid "unsupported wide integer operation"
-msgstr ""
+msgstr "Funktion, die komplexe »short«-Typen verwendet, kann nicht »inline« sein"
-#: expr.c:6669
-#, c-format
-msgid "prior parameter's size depends on `%s'"
-msgstr ""
+#: expr.c:6311
+msgid "%Jprior parameter's size depends on '%D'"
+msgstr "%Jvorherige Parametergröße hängt von »%D« ab"
-#: expr.c:7005
+#: expr.c:6678
msgid "returned value in block_exit_expr"
-msgstr ""
+msgstr "zurückgelieferter Wert in block_exit_expr"
#. We can't make a bitwise copy of this object, so fail.
-#: expr.c:9202
+#: expr.c:8823
msgid "cannot take the address of an unaligned member"
-msgstr ""
+msgstr "die Adresse eines nicht ausgerichteten Elements kann nicht ermittelt werden"
-#: final.c:1342
+#: final.c:1058
msgid "negative insn length"
-msgstr ""
+msgstr "negative insn-Länge"
-#: final.c:2793
+#: final.c:2429
msgid "could not split insn"
-msgstr ""
+msgstr "insn kann nicht aufgeteilt werden"
-#: final.c:3141
+#: final.c:2771
msgid "invalid `asm': "
-msgstr ""
+msgstr "ungültiges »asm«: "
-#: final.c:3328
+#: final.c:2954
msgid "nested assembly dialect alternatives"
-msgstr ""
+msgstr "geschachtelte Assemblerdialekt-Alternativen"
-#: final.c:3345 final.c:3357
+#: final.c:2971 final.c:2983
msgid "unterminated assembly dialect alternative"
-msgstr ""
+msgstr "unbeendete Assemblerdialekt-Alternative"
-#: final.c:3401
+#: final.c:3027
#, c-format
msgid "operand number missing after %%-letter"
-msgstr ""
+msgstr "Operandenzahl fehlt hinter %%-Buchstabe"
-#: final.c:3404 final.c:3443
+#: final.c:3030 final.c:3069
msgid "operand number out of range"
-msgstr ""
+msgstr "Operandenzahl außerhalb des Wertebereiches"
-#: final.c:3462
+#: final.c:3088
#, c-format
msgid "invalid %%-code"
-msgstr ""
+msgstr "ungültiger %%-Code"
-#: final.c:3493
+#: final.c:3118
#, c-format
msgid "`%%l' operand isn't a label"
-msgstr ""
+msgstr "»%%l«-Operand ist keine Marke"
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3600 vmsdbgout.c:466 config/i386/i386.c:6314
-#: config/pdp11/pdp11.c:1573
+#. We can't handle floating point constants; PRINT_OPERAND must
+#. handle them.
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#: final.c:3220 vmsdbgout.c:467 config/i386/i386.c:6739
+#: config/pdp11/pdp11.c:1646
msgid "floating constant misused"
-msgstr ""
+msgstr "Gleitkommakonstante falsch benutzt"
-#: final.c:3656 vmsdbgout.c:523 config/i386/i386.c:6392
-#: config/pdp11/pdp11.c:1620
+#: final.c:3276 vmsdbgout.c:524 config/i386/i386.c:6817
+#: config/pdp11/pdp11.c:1693
msgid "invalid expression as operand"
-msgstr ""
+msgstr "ungültiger Ausdruck als Operand"
-#: flow.c:352
+#: flow.c:329
msgid "function might be possible candidate for attribute `noreturn'"
-msgstr ""
+msgstr "Funktion könnte möglicher Kandidat für Attribut »noreturn« sein"
-#: flow.c:357
+#: flow.c:334
msgid "`noreturn' function does return"
-msgstr ""
+msgstr "»noreturn«-Funktion kehrt zurück"
-#: flow.c:378
+#: flow.c:355
msgid "control reaches end of non-void function"
-msgstr ""
+msgstr "Kontrollfluss erreicht Ende einer Nicht-void-Funktion"
-#: flow.c:1642
+#: flow.c:1582
msgid "Attempt to delete prologue/epilogue insn:"
-msgstr ""
+msgstr "Versuch, Prolog/Epilog-insn zu löschen"
-#: fold-const.c:2546 fold-const.c:2559
+#: fold-const.c:2759 fold-const.c:2772
#, c-format
msgid "comparison is always %d due to width of bit-field"
-msgstr ""
+msgstr "Vergleich ist immer %d wegen Breite des Bitfeldes"
-#: fold-const.c:3753 fold-const.c:3770
+#: fold-const.c:3967 fold-const.c:3984
#, c-format
msgid "comparison is always %d"
-msgstr ""
+msgstr "Vergleich ist immer %d"
-#: fold-const.c:3901
+#: fold-const.c:4115
msgid "`or' of unmatched not-equal tests is always 1"
-msgstr ""
+msgstr "»oder« nicht passender Ungleichheits-Tests ist immer 1"
-#: fold-const.c:3906
+#: fold-const.c:4120
msgid "`and' of mutually exclusive equal-tests is always 0"
-msgstr ""
+msgstr "»und« gegenseitig ausschließender Gleichheits-Tests ist immer 0"
-#: function.c:884 varasm.c:1503
-#, c-format
-msgid "size of variable `%s' is too large"
-msgstr ""
+#: fold-const.c:8340
+msgid "fold check: original tree changed by fold"
+msgstr "Faltungstest: ursprünglicher Baum durch Faltung geändert"
+
+#: function.c:884 varasm.c:1408
+msgid "%Jsize of variable '%D' is too large"
+msgstr "%JGröße der Variable »%D« ist zu hoch"
-#: function.c:3772
+#: function.c:3737
msgid "impossible constraint in `asm'"
-msgstr ""
+msgstr "unmögliche Bedingung in »asm«"
-#: function.c:5527
-#, c-format
-msgid "`%s' might be used uninitialized in this function"
-msgstr ""
+#: function.c:5697
+msgid "%J'%D' might be used uninitialized in this function"
+msgstr "%J»%D« könnte in dieser Funktion uninitialisiert bleiben"
-#: function.c:5534
-#, c-format
-msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
-msgstr ""
+#: function.c:5704
+msgid "%Jvariable '%D' might be clobbered by `longjmp' or `vfork'"
+msgstr "%JVariable »%D« könnte von »longjmp« oder »vfork« zerstört werden"
-#: function.c:5553
-#, c-format
-msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
-msgstr ""
+#: function.c:5723
+msgid "%Jargument '%D' might be clobbered by `longjmp' or `vfork'"
+msgstr "%JArgument »%D« könnte von »longjmp« oder »vfork« zerstört werden"
-#: function.c:6420
+#: function.c:6497
msgid "function returns an aggregate"
-msgstr ""
+msgstr "Funktion gibt Aggregat zurück"
-#: function.c:6925
-#, c-format
-msgid "unused parameter `%s'"
-msgstr ""
+#: function.c:6980
+msgid "%Junused parameter '%D'"
+msgstr "%Jnicht benutzter Parameter »%D«"
-#: gcc.c:1107
+#: gcc.c:1191
#, c-format
msgid "ambiguous abbreviation %s"
-msgstr ""
+msgstr "mehrdeutige Abkürzung %s"
-#: gcc.c:1134
+#: gcc.c:1218
#, c-format
msgid "incomplete `%s' option"
-msgstr ""
+msgstr "unvollständige »%s«-Option"
-#: gcc.c:1145
+#: gcc.c:1229
#, c-format
msgid "missing argument to `%s' option"
-msgstr ""
+msgstr "fehlendes Argument für »%s«-Option"
-#: gcc.c:1158
+#: gcc.c:1242
#, c-format
msgid "extraneous argument to `%s' option"
-msgstr ""
+msgstr "zusätzliches (belangloses) Argument für »%s«-Option"
-#: gcc.c:1486
+#: gcc.c:1563
msgid "Using built-in specs.\n"
-msgstr ""
+msgstr "Benutze eingebaute Spezifikationen.\n"
-#: gcc.c:1667
+#: gcc.c:1748
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
+"Setze Spezifikation %s auf '%s'\n"
+"\n"
-#: gcc.c:1774
+#: gcc.c:1850
#, c-format
msgid "Reading specs from %s\n"
-msgstr ""
+msgstr "Lese Spezifikationen von %s\n"
-#: gcc.c:1872 gcc.c:1891
+#: gcc.c:1946 gcc.c:1965
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
-msgstr ""
+msgstr "falsche %%include-Syntax für Spezifikationen nach %ld Zeichen"
-#: gcc.c:1899
+#: gcc.c:1973
#, c-format
msgid "could not find specs file %s\n"
-msgstr ""
+msgstr "konnte Spezifikationsdatei %s nicht finden\n"
-#: gcc.c:1916 gcc.c:1924 gcc.c:1933 gcc.c:1942
+#: gcc.c:1990 gcc.c:1998 gcc.c:2007 gcc.c:2016
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
-msgstr ""
+msgstr "falsche %%rename-Syntax für Spezifikationen nach %ld Zeichen"
-#: gcc.c:1951
+#: gcc.c:2025
#, c-format
msgid "specs %s spec was not found to be renamed"
-msgstr ""
+msgstr "keine %s-Spezifikation zum Umbenennen gefunden"
-#: gcc.c:1958
+#: gcc.c:2032
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
-msgstr ""
+msgstr "%s: Versuch, Spezifikation »%s« in bereits definierte Spezifikation »%s« umzubenennen"
-#: gcc.c:1963
+#: gcc.c:2037
#, c-format
msgid "rename spec %s to %s\n"
-msgstr ""
+msgstr "benenne Spezifikation %s nach %s um\n"
-#: gcc.c:1965
+#: gcc.c:2039
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
+"Spezifikation ist '%s'\n"
+"\n"
-#: gcc.c:1978
+#: gcc.c:2052
#, c-format
msgid "specs unknown %% command after %ld characters"
-msgstr ""
+msgstr "Spezifikation: unbekannter %%-Befehl nach %ld Zeichen"
-#: gcc.c:1989 gcc.c:2002
+#: gcc.c:2063 gcc.c:2076
#, c-format
msgid "specs file malformed after %ld characters"
-msgstr ""
+msgstr "Fehler in Spezifikationsdatei nach %ld Zeichen"
-#: gcc.c:2056
+#: gcc.c:2129
msgid "spec file has no spec for linking"
-msgstr ""
+msgstr "Spezifikationsdatei hat keine Spezifikation zum Binden"
-#: gcc.c:2554
+#: gcc.c:2634
msgid "-pipe not supported"
msgstr "-pipe wird nicht unterstützt"
# can we use j/n here, too?
# 2002-04-23 18:57:43 CEST -ke-
-#: gcc.c:2609
+#: gcc.c:2696
msgid ""
"\n"
"Go ahead? (y or n) "
@@ -5317,7 +5058,7 @@ msgstr ""
"\n"
"Fortfahren? (y oder n) "
-#: gcc.c:2735
+#: gcc.c:2822
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -5330,159 +5071,184 @@ msgstr ""
"sind an de@li.org zu melden.\n"
"Gehen Sie gemäß den Hinweisen in %s vor."
-#: gcc.c:2753
+#: gcc.c:2840
#, c-format
msgid "# %s %.2f %.2f\n"
-msgstr ""
+msgstr "# %s %.2f %.2f\n"
-#: gcc.c:2883
+#: gcc.c:2973
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr "Aufruf: %s [Optionen] Datei...\n"
-#: gcc.c:2884
+#: gcc.c:2974
msgid "Options:\n"
msgstr "Optionen:\n"
-#: gcc.c:2886
+#: gcc.c:2976
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
-msgstr ""
+msgstr " -pass-exit-codes Ende mit höchstem Rückgabe-Code einer Phase\n"
-#: gcc.c:2887
+#: gcc.c:2977
msgid " --help Display this information\n"
msgstr " --help Diese Informationen anzeigen\n"
-#: gcc.c:2888
+#: gcc.c:2978
msgid " --target-help Display target specific command line options\n"
-msgstr ""
+msgstr " --target-help Zielspezifische Kommandozeilenoptionen anzeigen\n"
-#: gcc.c:2890
+#: gcc.c:2980
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
-msgstr ""
+msgstr " ('-v --help' zum Anzeigen der Kommandozeilenoptionen von Subprozessen verwenden)\n"
-#: gcc.c:2891
+#: gcc.c:2981
msgid " -dumpspecs Display all of the built in spec strings\n"
-msgstr ""
+msgstr " -dumpspecs Alle eingebauten Spezifikationszeichenketten anzeigen\n"
-#: gcc.c:2892
+#: gcc.c:2982
msgid " -dumpversion Display the version of the compiler\n"
-msgstr ""
+msgstr " -dumpversion Compilerversion anzeigen\n"
-#: gcc.c:2893
+#: gcc.c:2983
msgid " -dumpmachine Display the compiler's target processor\n"
-msgstr ""
+msgstr " -dumpmachine Zielprozessor des Compilers anzeigen\n"
-#: gcc.c:2894
+#: gcc.c:2984
msgid " -print-search-dirs Display the directories in the compiler's search path\n"
-msgstr ""
+msgstr " -print-search-dirs Verzeichnisse im Suchpfad des Compilers anzeigen\n"
-#: gcc.c:2895
+#: gcc.c:2985
msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n"
-msgstr ""
+msgstr " -print-libgcc-file-name Name der Begleitbibliothek des Compilers anzeigen\n"
-#: gcc.c:2896
+#: gcc.c:2986
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
-msgstr ""
+msgstr " -print-file-name=<lib> Vollen Pfad zur Bibliothek <lib> anzeigen\n"
-#: gcc.c:2897
+#: gcc.c:2987
msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n"
-msgstr ""
+msgstr " -print-prog-name=<prog> Vollen Pfad zur Compilerkomponente <prog> anzeigen\n"
-#: gcc.c:2898
+#: gcc.c:2988
msgid " -print-multi-directory Display the root directory for versions of libgcc\n"
-msgstr ""
+msgstr " -print-multi-directory Wurzelverzeichnis für Versionen von libgcc anzeigen\n"
-#: gcc.c:2899
+#: gcc.c:2989
msgid ""
" -print-multi-lib Display the mapping between command line options and\n"
" multiple library search directories\n"
msgstr ""
+" -print-multi-lib Abbildung zwischen Kommandozeilenoptionen und\n"
+" mehreren Suchverzeichnissen für Bibliotheken anzeigen\n"
-#: gcc.c:2902
+#: gcc.c:2992
msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
msgstr ""
+" -print-multi-os-directory Relativen Pfad zu Betriebssystembibliotheken\n"
+" anzeigen\n"
-#: gcc.c:2903
+#: gcc.c:2993
msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n"
-msgstr ""
+msgstr " -Wa,<Optionen> Komma-getrennte <Optionen> an Assembler übergeben\n"
-#: gcc.c:2904
+#: gcc.c:2994
msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n"
-msgstr ""
+msgstr " -Wp,<Optionen> Komma-getrennte <Optionen> an Präprozessor übergeben\n"
-#: gcc.c:2905
+#: gcc.c:2995
msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n"
-msgstr ""
+msgstr " -Wl,<Optionen> Komma-getrennte <Optionen> an Linker übergeben\n"
+
+#: gcc.c:2996
+msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
+msgstr " -Xassembler <arg> <arg> an den Assembler übergeben\n"
+
+#: gcc.c:2997
+msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
+msgstr " -Xpreprocessor <arg> <arg> an den Präprozessor übergeben\n"
-#: gcc.c:2906
+#: gcc.c:2998
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
-msgstr ""
+msgstr " -Xlinker <arg> <arg> an den Linker übergeben\n"
-#: gcc.c:2907
+#: gcc.c:2999
msgid " -save-temps Do not delete intermediate files\n"
-msgstr ""
+msgstr " -save-temps Temporäre Dateien nicht löschen\n"
-#: gcc.c:2908
+#: gcc.c:3000
msgid " -pipe Use pipes rather than intermediate files\n"
-msgstr ""
+msgstr " -pipe Pipes statt temporärer Dateien verwenden\n"
-#: gcc.c:2909
+#: gcc.c:3001
msgid " -time Time the execution of each subprocess\n"
-msgstr ""
+msgstr " -time Zeit für Ausführung jedes Subprozesses stoppen\n"
-#: gcc.c:2910
+#: gcc.c:3002
msgid " -specs=<file> Override built-in specs with the contents of <file>\n"
msgstr ""
+" -specs=<Datei> Eingebaute Spezifikationen mit Inhalt der <Datei>\n"
+" überschreiben\n"
-#: gcc.c:2911
+#: gcc.c:3003
msgid " -std=<standard> Assume that the input sources are for <standard>\n"
-msgstr ""
+msgstr " -std=<Standard> Annehmen, dass die Eingabequellen für <Standard> sind\n"
-#: gcc.c:2912
+#: gcc.c:3004
msgid " -B <directory> Add <directory> to the compiler's search paths\n"
-msgstr ""
+msgstr " -B <Verzeichnis> <Verzeichnis> zum Suchpfad des Compilers hinzufügen\n"
-#: gcc.c:2913
+#: gcc.c:3005
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
+" -b <Maschine> GCC für die Ziel-<Maschine> laufen lassen, falls\n"
+" installiert\n"
-#: gcc.c:2914
+#: gcc.c:3006
msgid " -V <version> Run gcc version number <version>, if installed\n"
-msgstr ""
+msgstr " -V <Version> GCC <Version> laufen lassen, falls installiert\n"
-#: gcc.c:2915
+#: gcc.c:3007
msgid " -v Display the programs invoked by the compiler\n"
-msgstr ""
+msgstr " -v Vom Compiler aufgerufene Programme anzeigen\n"
-#: gcc.c:2916
+#: gcc.c:3008
msgid " -### Like -v but options quoted and commands not executed\n"
msgstr ""
+" -### Wie -v, aber mit zitierten Optionen und nicht\n"
+" ausgeführten Befehlen\n"
-#: gcc.c:2917
+#: gcc.c:3009
msgid " -E Preprocess only; do not compile, assemble or link\n"
msgstr ""
+" -E Nur Präprozessor, kein Compiler, Assembler oder\n"
+" Binder\n"
-#: gcc.c:2918
+#: gcc.c:3010
msgid " -S Compile only; do not assemble or link\n"
-msgstr ""
+msgstr " -S Nur kompilieren, nicht assemblieren oder binden\n"
-#: gcc.c:2919
+#: gcc.c:3011
msgid " -c Compile and assemble, but do not link\n"
-msgstr ""
+msgstr " -c Nur kompilieren und assemblieren, aber nicht binden\n"
-#: gcc.c:2920
+#: gcc.c:3012
msgid " -o <file> Place the output into <file>\n"
msgstr " -o <Datei> Ausgabe in <Datei> schreiben\n"
-#: gcc.c:2921
+#: gcc.c:3013
msgid ""
" -x <language> Specify the language of the following input files\n"
" Permissible languages include: c c++ assembler none\n"
" 'none' means revert to the default behavior of\n"
" guessing the language based on the file's extension\n"
msgstr ""
+" -x <Sprache> Sprache der folgenden Eingabedateien angeben\n"
+" Zulässige Sprachen sind: c c++ assembler none\n"
+" 'none' bedeutet den Rückfall auf das Standard-\n"
+" verhalten, die Sprache aufgrund der Dateinamens-\n"
+" erweiterung zu vermuten\n"
-#: gcc.c:2928
+#: gcc.c:3020
#, c-format
msgid ""
"\n"
@@ -5490,29 +5256,29 @@ msgid ""
" passed on to the various sub-processes invoked by %s. In order to pass\n"
" other options on to these processes the -W<letter> options must be used.\n"
msgstr ""
+"\n"
+"Optionen, die mit -g, -f, -m, -O, -W, oder --param beginnen, werden automatisch\n"
+" an die verschiedenen Subprozesse, die von %s aufgerufen werden, übergeben.\n"
+" Um andere Optionen an diese Prozesse zu übergeben, müssen die Optionen\n"
+" -W<Buchstabe> verwendet werden.\n"
-#: gcc.c:3063
+#: gcc.c:3141
#, c-format
msgid "`-%c' option must have argument"
-msgstr ""
+msgstr "Die Option »-%c« muss ein Argument haben"
-#: gcc.c:3085
+#: gcc.c:3163
#, c-format
msgid "couldn't run `%s': %s"
-msgstr ""
+msgstr "konnte »%s« nicht ausführen: %s"
#. translate_options () has turned --version into -fversion.
-#: gcc.c:3262
+#: gcc.c:3349
#, c-format
msgid "%s (GCC) %s\n"
msgstr "%s (GCC) %s\n"
-#: gcc.c:3263
-#, fuzzy
-msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
-msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
-
-#: gcc.c:3265 gcov.c:364
+#: gcc.c:3352
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -5522,137 +5288,146 @@ msgstr ""
"gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.\n"
"\n"
-#: gcc.c:3366
+#: gcc.c:3453
msgid "argument to `-Xlinker' is missing"
-msgstr ""
+msgstr "Argument für »-Xlinker« fehlt"
-#: gcc.c:3374
+#: gcc.c:3461
+msgid "argument to `-Xpreprocessor' is missing"
+msgstr "Argument für »-Xpreprocessor« fehlt"
+
+#: gcc.c:3468
+msgid "argument to `-Xassembler' is missing"
+msgstr "Argument für »-Xassembler« fehlt"
+
+#: gcc.c:3475
msgid "argument to `-l' is missing"
-msgstr ""
+msgstr "Argument für »-l« fehlt"
-#: gcc.c:3391
+#: gcc.c:3491
msgid "argument to `-specs' is missing"
-msgstr ""
+msgstr "Argument für »-specs« fehlt"
-#: gcc.c:3406
+#: gcc.c:3505
msgid "argument to `-specs=' is missing"
-msgstr ""
+msgstr "Argument für »-specs=« fehlt"
-#: gcc.c:3436
+#: gcc.c:3542
#, c-format
msgid "`-%c' must come at the start of the command line"
-msgstr ""
+msgstr "»-%c« muss am Anfang der Kommandozeile stehen"
-#: gcc.c:3445
+#: gcc.c:3551
msgid "argument to `-B' is missing"
-msgstr ""
-
-#: gcc.c:3618
-msgid "cannot specify -o with -c or -S and multiple compilations"
-msgstr ""
+msgstr "Argument für »-B« fehlt"
-#: gcc.c:3791
+#: gcc.c:3728
msgid "warning: -pipe ignored because -save-temps specified"
-msgstr ""
+msgstr "Warnung: -pipe ignoriert, da -save-temps angegeben"
-#: gcc.c:3795
+#: gcc.c:3732
msgid "warning: -pipe ignored because -time specified"
-msgstr ""
+msgstr "Warnung: -pipe ignoriert, da -time angegeben"
-#: gcc.c:3807
+#: gcc.c:3944
msgid "argument to `-x' is missing"
-msgstr ""
+msgstr "Argument für »-x« fehlt"
-#: gcc.c:3835
+#: gcc.c:3972
#, c-format
msgid "argument to `-%s' is missing"
-msgstr ""
+msgstr "Argument für »-%s« fehlt"
-#: gcc.c:3896
+#: gcc.c:4033
#, c-format
msgid "warning: `-x %s' after last input file has no effect"
-msgstr ""
+msgstr "Warnung: »-x %s« hinter letzter Eingabedatei hat keine Wirkung"
-#: gcc.c:4241
+#: gcc.c:4434
msgid "invalid specification! Bug in cc"
-msgstr ""
+msgstr "ungültige Spezifikation! Fehler in cc"
-#: gcc.c:4395
+#: gcc.c:4588
#, c-format
msgid "%s\n"
-msgstr ""
+msgstr "%s\n"
#. 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:4955
+#: gcc.c:5092
#, c-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
-msgstr ""
+msgstr "Spezifikationsfehler: »%%*« wurde nicht durch Mustererkennung initialisiert"
-#: gcc.c:4964
+#: gcc.c:5101
#, c-format
msgid "warning: use of obsolete %%[ operator in specs"
-msgstr ""
+msgstr "Warnung: Verwendung des veralteten Operators %%[ in Spezifikation"
-#: gcc.c:4982
+#: gcc.c:5119
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
-msgstr ""
+msgstr "Verarbeite Spezifikation %c%s%c, welche »%s« ist\n"
-#: gcc.c:5107
+#: gcc.c:5182
#, c-format
msgid "spec failure: unrecognized spec option '%c'"
-msgstr ""
+msgstr "Spezifikationsfehler: nicht erkannte Option »%c«"
-#: gcc.c:5188
+#: gcc.c:5261
#, c-format
msgid "unknown spec function `%s'"
-msgstr ""
+msgstr "unbekannte Spezifikationsfunktion »%s«"
-#: gcc.c:5207
+#: gcc.c:5280
#, c-format
msgid "error in args to spec function `%s'"
-msgstr ""
+msgstr "Fehler in Argumenten für Spezifikationsfunktion »%s«"
-#: gcc.c:5256
+#: gcc.c:5328
msgid "malformed spec function name"
-msgstr ""
+msgstr "schlechter Name für Spezifikationsfunktion"
#. )
-#: gcc.c:5259
+#: gcc.c:5331
msgid "no arguments for spec function"
-msgstr ""
+msgstr "keine Argumente für Spezifikationsfunktion"
-#: gcc.c:5278
+#: gcc.c:5350
msgid "malformed spec function arguments"
-msgstr ""
+msgstr "schlechte Argumente für Spezifikationsfunktion"
-#: gcc.c:5386
-msgid "mismatched braces in specs"
-msgstr ""
+#: gcc.c:6076
+msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC."
+msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_SUFFIX_SPEC."
+
+#: gcc.c:6086
+msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC."
+msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_HEADERS_SUFFIX_SPEC."
-#: gcc.c:6081
+#: gcc.c:6179
#, c-format
msgid "unrecognized option `-%s'"
-msgstr ""
+msgstr "nicht erkannte Option »-%s«"
-#: gcc.c:6087
+#: gcc.c:6185
#, c-format
msgid "install: %s%s\n"
-msgstr ""
+msgstr "installiere: %s%s\n"
-#: gcc.c:6088
+#: gcc.c:6186
#, c-format
msgid "programs: %s\n"
-msgstr ""
+msgstr "Programme: %s\n"
-#: gcc.c:6089
+#: gcc.c:6187
#, c-format
msgid "libraries: %s\n"
-msgstr ""
+msgstr "Bibliotheken: %s\n"
-#: gcc.c:6146
+#: gcc.c:6244
+#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
@@ -5662,54 +5437,58 @@ msgstr ""
"folgenden Hinweise; Fehler in der deutschen Ãœbersetzung sind an de@li.org\n"
"zu melden:\n"
-#: gcc.c:6162
+#: gcc.c:6260
#, c-format
msgid "Configured with: %s\n"
msgstr "Konfiguriert mit: %s\n"
-#: gcc.c:6176
+#: gcc.c:6274
#, c-format
msgid "Thread model: %s\n"
-msgstr ""
+msgstr "Thread-Modell: %s\n"
-#: gcc.c:6187
+#: gcc.c:6285
#, c-format
msgid "gcc version %s\n"
msgstr "gcc-Version %s\n"
-#: gcc.c:6189
+#: gcc.c:6287
#, c-format
msgid "gcc driver version %s executing gcc version %s\n"
-msgstr ""
+msgstr "gcc-Treiberversion %s führt gcc Version %s aus\n"
-#: gcc.c:6197
+#: gcc.c:6295
msgid "no input files"
msgstr "keine Eingabedateien"
-#: gcc.c:6235
+#: gcc.c:6317 gcc.c:6436
#, c-format
-msgid "%s: %s compiler not installed on this system"
-msgstr "%s: %s-Compiler ist auf diesem System nicht installiert"
+msgid "%s: linker input file unused because linking not done"
+msgstr "%s: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht"
-#: gcc.c:6310
+#: gcc.c:6320
+msgid "cannot specify -o with -c or -S and multiple languages"
+msgstr "-o kann nicht mit -c oder -S und mehreren Sprachen angegeben werden"
+
+#: gcc.c:6355
#, c-format
-msgid "%s: linker input file unused because linking not done"
-msgstr ""
+msgid "%s: %s compiler not installed on this system"
+msgstr "%s: %s-Compiler ist auf diesem System nicht installiert"
-#: gcc.c:6353
+#: gcc.c:6476
#, c-format
msgid "language %s not recognized"
msgstr "Sprache %s nicht erkannt"
-#: gcc.c:6456
+#: gcc.c:6573
msgid "internal gcc abort"
-msgstr ""
+msgstr "interner Abruch des gcc"
-#: gcov.c:325
+#: gcov.c:384
msgid "Internal gcov abort.\n"
-msgstr ""
+msgstr "Interner gcov-Abbruch.\n"
-#: gcov.c:338
+#: gcov.c:397
msgid ""
"Usage: gcov [OPTION]... SOURCEFILE\n"
"\n"
@@ -5717,53 +5496,67 @@ msgstr ""
"Aufruf: gcov [OPTION]... QUELLDATEI\n"
"\n"
-#: gcov.c:339
+#: gcov.c:398
msgid ""
"Print code coverage information.\n"
"\n"
msgstr ""
+"Information zur Code-Ãœberdeckung ausgeben.\n"
+"\n"
-#: gcov.c:340
+#: gcov.c:399
msgid " -h, --help Print this help, then exit\n"
msgstr " -h, --help Diese Hilfe anzeigen\n"
-#: gcov.c:341
+#: gcov.c:400
msgid " -v, --version Print version number, then exit\n"
msgstr " -v, --version Versionsnummer anzeigen\n"
-#: gcov.c:342
+#: gcov.c:401
+msgid " -a, --all-blocks Show information for every basic block\n"
+msgstr " -a, --all-blocks Informationen für jeden Basisblock zeigen\n"
+
+#: gcov.c:402
msgid " -b, --branch-probabilities Include branch probabilities in output\n"
-msgstr ""
+msgstr " -b, --branch-probabilities Zweigwahrscheinlichkeiten in Ausgabe aufnehmen\n"
-#: gcov.c:343
+#: gcov.c:403
msgid ""
" -c, --branch-counts Given counts of branches taken\n"
" rather than percentages\n"
-msgstr ""
+msgstr " -c, --branch-counts Angegebene Zweigzahlen statt Anteilen nehmen\n"
-#: gcov.c:345
+#: gcov.c:405
msgid " -n, --no-output Do not create an output file\n"
msgstr " -n, --no-output Keine Ausgabedatei erzeugen\n"
-#: gcov.c:346
+#: gcov.c:406
msgid ""
" -l, --long-file-names Use long output file names for included\n"
" source files\n"
msgstr ""
+" -l, --long-file-names Lange Dateinamen für Ausgabedateien für\n"
+" eingefügte Quelldateien verwenden\n"
-#: gcov.c:348
+#: gcov.c:408
msgid " -f, --function-summaries Output summaries for each function\n"
-msgstr ""
+msgstr " -f, --function-summaries Ausgabezusammenfassungen für jede Funktion\n"
-#: gcov.c:349
+#: gcov.c:409
msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
msgstr ""
+" -o, --object-directory DIR|FILE In DIR oder aufgerufener Datei FILE nach\n"
+" Objektdateien suchen\n"
-#: gcov.c:350
+#: gcov.c:410
msgid " -p, --preserve-paths Preserve all pathname components\n"
-msgstr ""
+msgstr " -p, --preserve-paths Alle Pfadnamenskomponenten bewahren\n"
+
+#: gcov.c:411
+msgid " -u, --unconditional-branches Show unconditional branch counts too\n"
+msgstr " -u, --unconditional-branches Auch unbedingte Zweigzähler zeigen\n"
-#: gcov.c:351
+#: gcov.c:412
#, c-format
msgid ""
"\n"
@@ -5775,474 +5568,368 @@ msgstr ""
"%s.\n"
"Fehler in der deutschen Ãœbersetzung sind an de@li.org zu melden.\n"
-#: gcov.c:361
+#: gcov.c:422
#, c-format
msgid "gcov (GCC) %s\n"
msgstr "gcov (GCC) %s\n"
-#: gcov.c:362
-msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
-msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
-
-#: gcov.c:500
-#, c-format
-msgid "Could not open basic block file %s.\n"
-msgstr ""
-
-#: gcov.c:507
-#, c-format
-msgid "Could not open program flow graph file %s.\n"
-msgstr ""
-
-#: gcov.c:524
-#, c-format
-msgid "Could not open data file %s.\n"
-msgstr ""
-
-#: gcov.c:525
-msgid "Assuming that all execution counts are zero.\n"
-msgstr ""
-
-#: gcov.c:534
-#, c-format
-msgid "No executable code associated with file %s.\n"
-msgstr ""
-
-#: gcov.c:1186
-#, c-format
-msgid "%s of %d lines executed in %s %s\n"
-msgstr ""
-
-#: gcov.c:1191
-#, c-format
-msgid "No executable lines in %s %s\n"
-msgstr ""
-
-#: gcov.c:1198
-#, c-format
-msgid "%s of %d branches executed in %s %s\n"
-msgstr ""
-
-#: gcov.c:1203
-#, c-format
-msgid "%s of %d branches taken at least once in %s %s\n"
-msgstr ""
-
-#: gcov.c:1209
-#, c-format
-msgid "No branches in %s %s\n"
-msgstr ""
-
-#: gcov.c:1211
-#, c-format
-msgid "%s of %d calls executed in %s %s\n"
-msgstr ""
-
-#: gcov.c:1216
-#, c-format
-msgid "No calls in %s %s\n"
-msgstr ""
-
-#: gcov.c:1351
-#, c-format
-msgid "didn't use all bb entries of graph, function %s\n"
-msgstr ""
-
-#: gcov.c:1353
-#, c-format
-msgid "block_num = %ld, num_blocks = %d\n"
-msgstr ""
-
-#: gcov.c:1367
-#, c-format
-msgid "ERROR: unexpected line number %ld\n"
-msgstr ""
-
-#: gcov.c:1383
-#, c-format
-msgid "ERROR: too many basic blocks in function %s\n"
-msgstr ""
-
-#: gcov.c:1398
-#, c-format
-msgid "ERROR: out of range line number in function %s\n"
-msgstr ""
-
-#: gcov.c:1470
-#, c-format
-msgid "Could not open source file %s.\n"
-msgstr ""
+#: gcov.c:423
+msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2003 Free Software Foundation, Inc.\n"
-#: gcov.c:1480
-#, c-format
-msgid "Warning: source file %s is newer than %s\n"
+#: gcov.c:425
+msgid ""
+"This is free software; see the source for copying conditions.\n"
+"There is NO warranty; not even for MERCHANTABILITY or \n"
+"FITNESS FOR A PARTICULAR PURPOSE.\n"
+"\n"
msgstr ""
+"Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es\n"
+"gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.\n"
+"\n"
-#: gcov.c:1510
+#: gcov.c:515
#, c-format
-msgid "Unexpected EOF while reading source file %s.\n"
-msgstr ""
+msgid "%s:no functions found\n"
+msgstr "%s: keine Funktionen gefunden\n"
-#: gcov.c:1532
-#, c-format
-msgid "call %2d never executed\n"
-msgstr ""
+#: gcov.c:536 gcov.c:564
+msgid "\n"
+msgstr "\n"
-#: gcov.c:1535
+#: gcov.c:551
#, c-format
-msgid "call %2d returns %s\n"
-msgstr ""
+msgid "%s:creating `%s'\n"
+msgstr "%s: Erzeugen von »%s«\n"
-#: gcov.c:1543
+#: gcov.c:555
#, c-format
-msgid "branch %2d never executed\n"
-msgstr ""
+msgid "%s:error writing output file `%s'\n"
+msgstr "%s: Fehler beim Schreiben der Ausgabedatei »%s«\n"
-#: gcov.c:1546
+#: gcov.c:560
#, c-format
-msgid "branch %2d taken %s\n"
-msgstr ""
+msgid "%s:could not open output file `%s'\n"
+msgstr "%s: Ausgabedatei %s konnte nicht geöffnet werden\n"
-#: gcov.c:1610
+#: gcov.c:711
#, c-format
-msgid "Creating %s.\n"
-msgstr ""
+msgid "%s:cannot open graph file\n"
+msgstr "%s: Graph-Datei kann nicht geöffnet werden\n"
-#: gcov.c:1613
+#: gcov.c:717
#, c-format
-msgid "Error writing output file %s.\n"
-msgstr ""
+msgid "%s:not a gcov graph file\n"
+msgstr "%s: keine gcov-Graph-Datei\n"
-#: gcov.c:1618
+#: gcov.c:730
#, c-format
-msgid "Could not open output file %s.\n"
-msgstr ""
+msgid "%s:version `%.4s', prefer `%.4s'\n"
+msgstr "%s: Version »%.4s«, aber »%.4s« wird bevorzugt\n"
-#: gcse.c:763
+#: gcov.c:782
#, c-format
-msgid "GCSE disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block"
-msgstr ""
+msgid "%s:already seen blocks for `%s'\n"
+msgstr "%s: bereits gesehene Blöcke für »%s«\n"
-#: gcse.c:775
+#: gcov.c:903 gcov.c:1062
#, c-format
-msgid "GCSE disabled: %d basic blocks and %d registers"
-msgstr ""
+msgid "%s:corrupted\n"
+msgstr "%s: beschädigt\n"
-#: genautomata.c:1490
+#: gcov.c:976
#, c-format
-msgid "Name `%s' contains quotes"
-msgstr ""
+msgid "%s:cannot open data file\n"
+msgstr "%s: kann nicht geöffnet werden\n"
-#: genautomata.c:1621
+#: gcov.c:981
#, c-format
-msgid "invalid string `%s' in define_cpu_unit"
-msgstr ""
+msgid "%s:not a gcov data file\n"
+msgstr "%s: keine gcov-Datei\n"
-#: genautomata.c:1650
+#: gcov.c:994
#, c-format
-msgid "invalid string `%s' in define_query_cpu_unit"
-msgstr ""
+msgid "%s:version `%.4s', prefer version `%.4s'\n"
+msgstr "%s: Version »%.4s«, aber Version »%.4s« wird bevorzugt\n"
-#: genautomata.c:1682 genautomata.c:1685
+#: gcov.c:1000
#, c-format
-msgid "invalid string `%s' in define_bypass"
-msgstr ""
+msgid "%s:stamp mismatch with graph file\n"
+msgstr "%s: Marke passt nicht zur Graph-Datei\n"
-#: genautomata.c:1720
+#: gcov.c:1026
#, c-format
-msgid "invalid first string `%s' in exclusion_set"
-msgstr ""
+msgid "%s:unknown function `%u'\n"
+msgstr "%s: unbekannte Funktion »%u«\n"
-#: genautomata.c:1724
+#: gcov.c:1039
#, c-format
-msgid "invalid second string `%s' in exclusion_set"
-msgstr ""
+msgid "%s:profile mismatch for `%s'\n"
+msgstr "%s: Profil passt nicht für `%s'\n"
-#: genautomata.c:1760
+#: gcov.c:1062
#, c-format
-msgid "invalid first string `%s' in presence_set"
-msgstr ""
+msgid "%s:overflowed\n"
+msgstr "%s: übergelaufen\n"
-#: genautomata.c:1764
+#: gcov.c:1085
#, c-format
-msgid "invalid second string `%s' in presence_set"
-msgstr ""
+msgid "%s:`%s' lacks entry and/or exit blocks\n"
+msgstr "%s: Eintrag und/oder Exit-Blöcke fehlen in »%s«\n"
-#: genautomata.c:1800
+#: gcov.c:1090
#, c-format
-msgid "invalid first string `%s' in absence_set"
-msgstr ""
+msgid "%s:`%s' has arcs to entry block\n"
+msgstr "%s: »%s« hat Bögen zum Eintrittsblock\n"
-#: genautomata.c:1804
+#: gcov.c:1098
#, c-format
-msgid "invalid second string `%s' in absence_set"
-msgstr ""
+msgid "%s:`%s' has arcs from exit block\n"
+msgstr "%s: »%s« hat Bögen vom Eintrittsblock\n"
-#: genautomata.c:1837
+#: gcov.c:1306
#, c-format
-msgid "invalid string `%s' in define_automaton"
-msgstr ""
+msgid "%s:graph is unsolvable for `%s'\n"
+msgstr "%s: Graph ist für »%s« unlösbar\n"
-#: genautomata.c:1868
+#: gcov.c:1386
#, c-format
-msgid "invalid option `%s' in automata_option"
-msgstr "ungültige Option »%s« in automata_option"
+msgid "%s `%s'\n"
+msgstr "%s: »%s«\n"
-#: genautomata.c:1890
+#: gcov.c:1389
#, c-format
-msgid "garbage after ) in reservation `%s'"
-msgstr ""
+msgid "Lines executed:%s of %d\n"
+msgstr "%s von %d Zeilen ausgeführt\n"
-#: genautomata.c:1921 genautomata.c:1954 genautomata.c:1981
-#, fuzzy, c-format
-msgid "invalid `%s' in reservation `%s'"
-msgstr "ungültige Option »%s«"
+#: gcov.c:1393
+msgid "No executable lines"
+msgstr "Keine ausführbaren Zeilen"
-#: genautomata.c:1932
+#: gcov.c:1399
#, c-format
-msgid "repetition `%s' <= 1 in reservation `%s'"
-msgstr ""
-
-#: genautomata.c:2425
-#, c-format
-msgid "unit `%s' in exclusion is not declared"
-msgstr ""
+msgid "Branches executed:%s of %d\n"
+msgstr "%s von %d Zweigen ausgeführt\n"
-#: genautomata.c:2427
+#: gcov.c:1403
#, c-format
-msgid "`%s' in exclusion is not unit"
-msgstr ""
+msgid "Taken at least once:%s of %d\n"
+msgstr "%s von %d Zweigen mindestens einmal genommen\n"
-#: genautomata.c:2465
-#, c-format
-msgid "unit `%s' excludes itself"
-msgstr ""
+#: gcov.c:1409
+msgid "No branches\n"
+msgstr "Keine Zweige\n"
-#: genautomata.c:2473
+#: gcov.c:1411
#, c-format
-msgid "units `%s' and `%s' in exclusion set belong to different automata"
-msgstr ""
+msgid "Calls executed:%s of %d\n"
+msgstr "%s von %d Aufrufe ausgeführt\n"
-#: genautomata.c:2603 genautomata.c:2609
-#, c-format
-msgid "unit `%s' excludes and requires presence of `%s'"
-msgstr ""
+#: gcov.c:1415
+msgid "No calls\n"
+msgstr "Keine Aufrufe\n"
-#: genautomata.c:2623 genautomata.c:2629
+#: gcov.c:1556
#, c-format
-msgid "unit `%s' requires absence and presence of `%s'"
-msgstr ""
-
-#: genautomata.c:2692 genautomata.c:2695
-#, fuzzy, c-format
-msgid "repeated declaration of automaton `%s'"
-msgstr "Deklaration von »%D« als %s"
+msgid "%s:no lines for `%s'\n"
+msgstr "%s: keine Zeilen für »%s«\n"
-#: genautomata.c:2711
+#: gcov.c:1751
#, c-format
-msgid "define_insn_reservation `%s' has negative latency time"
-msgstr ""
+msgid "call %2d returned %s\n"
+msgstr "Aufruf %2d gab %s zurück\n"
-#: genautomata.c:2717
+#: gcov.c:1756
#, c-format
-msgid "`%s' is already used as insn reservation name"
-msgstr ""
+msgid "call %2d never executed\n"
+msgstr "Aufruf %2d niemals ausgeführt\n"
-#: genautomata.c:2723
+#: gcov.c:1761
#, c-format
-msgid "define_bypass `%s - %s' has negative latency time"
-msgstr ""
+msgid "branch %2d taken %s%s\n"
+msgstr "Zweig %2d wurde genommen: %s%s\n"
-#: genautomata.c:2737
+#: gcov.c:1765
#, c-format
-msgid "automaton `%s' is not declared"
-msgstr ""
+msgid "branch %2d never executed\n"
+msgstr "Zweig %2d niemals ausgeführt\n"
-#: genautomata.c:2747
+#: gcov.c:1770
#, c-format
-msgid "define_unit `%s' without automaton when one defined"
-msgstr ""
+msgid "unconditional %2d taken %s\n"
+msgstr "unbedingtes %2d, genommen: %s\n"
-#: genautomata.c:2753
+#: gcov.c:1773
#, c-format
-msgid "`%s' is declared as cpu unit"
-msgstr ""
+msgid "unconditional %2d never executed\n"
+msgstr "unbedingtes %2d niemals ausgeführt\n"
-#: genautomata.c:2762
-#, fuzzy, c-format
-msgid "`%s' is declared as cpu reservation"
-msgstr "»%s« als »static« deklariert, aber nirgendwo definiert"
-
-#: genautomata.c:2772
+#: gcov.c:1805
#, c-format
-msgid "repeated declaration of unit `%s'"
-msgstr "wiederholte Deklaration von Unit »%s«"
+msgid "%s:cannot open source file\n"
+msgstr "%s: Quelldatei kann nicht geöffnet werden\n"
-#: genautomata.c:2775
+#: gcov.c:1815
#, c-format
-msgid "repeated declaration of reservation `%s'"
-msgstr ""
+msgid "%s:source file is newer than graph file `%s'\n"
+msgstr "%s: Quelldatei ist neuer als Graph-Datei »%s«\n"
-#: genautomata.c:2790 genautomata.c:2793
-#, c-format
-msgid "there is no insn reservation `%s'"
-msgstr ""
+#. Return if there's nothing to do, or it is too expensive.
+#: gcse.c:747
+msgid "GCSE disabled"
+msgstr "GCSE ausgeschaltet"
-#: genautomata.c:2810 genautomata.c:2815
-#, c-format
-msgid "the same bypass `%s - %s' is already defined"
-msgstr ""
+#: gcse.c:6108
+msgid "NULL pointer checks disabled"
+msgstr "NULL-Zeiger Tests ausgeschaltet"
-#: genautomata.c:2820
-#, c-format
-msgid "bypass `%s - %s' is already defined"
-msgstr ""
+#. Return if there's nothing to do, or it is too expensive.
+#: gcse.c:7994
+msgid "jump bypassing disabled"
+msgstr "Sprungumgehungen ausgeschaltet"
-#: genautomata.c:2925 genautomata.c:2927
+#: gcse.c:8055
#, c-format
-msgid "automaton `%s' is not used"
-msgstr ""
+msgid "%s: %d basic blocks and %d edges/basic block"
+msgstr "%s: %d Basis-Blöcke und %d Kanten/Basis-Blöcke"
-#: genautomata.c:2950
+#: gcse.c:8068
#, c-format
-msgid "undeclared unit or reservation `%s'"
-msgstr ""
+msgid "%s: %d basic blocks and %d registers"
+msgstr "%s: %d Basis-Blöcke und %d Register"
-#: genautomata.c:3028 genautomata.c:3030
+#: ggc-common.c:398 ggc-common.c:406 ggc-common.c:487 ggc-common.c:507
+#: ggc-page.c:2030 ggc-page.c:2062 ggc-page.c:2069 ggc-zone.c:1361
+#: ggc-zone.c:1367 ggc-zone.c:1372 ggc-zone.c:1379
#, c-format
-msgid "unit `%s' is not used"
-msgstr "Unit »%s« wird nicht verwendet"
+msgid "can't write PCH file: %m"
+msgstr "PCH-Datei kann nicht geschrieben werden: %m"
-#: genautomata.c:3035 genautomata.c:3037
+#: ggc-common.c:500
#, c-format
-msgid "reservation `%s' is not used"
-msgstr ""
+msgid "can't get position in PCH file: %m"
+msgstr "Position in PCH-Datei kann nicht ermittelt werden: %m"
-#: genautomata.c:3134
+#: ggc-common.c:510
#, c-format
-msgid "cycle in definition of reservation `%s'"
-msgstr ""
+msgid "can't write padding to PCH file: %m"
+msgstr "Auffüllung für PCH-Datei kann nicht geschrieben werden: %m"
-#: genautomata.c:5333
+#: ggc-common.c:563 ggc-common.c:571 ggc-common.c:578 ggc-common.c:581
+#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2157 ggc-zone.c:1389
#, c-format
-msgid "Units `%s' and `%s' should be in the same automaton"
-msgstr ""
+msgid "can't read PCH file: %m"
+msgstr "PCH-Datei kann nicht gelesen werden: %m"
-#: genautomata.c:9441
-msgid "-split has no argument."
-msgstr ""
-
-#: genautomata.c:9442
-msgid "option `-split' has not been implemented yet\n"
-msgstr ""
+#: ggc-common.c:681
+msgid "had to relocate PCH"
+msgstr "PCH musste verschoben werden"
-#: genautomata.c:9486 genautomata.c:9491
+#: ggc-page.c:1325
#, c-format
-msgid "Automaton `%s': Insn `%s' will never be issued"
-msgstr ""
+msgid "open /dev/zero: %m"
+msgstr "/dev/zero öffnen: %m"
-#: genautomata.c:9498 genautomata.c:9501
-#, c-format
-msgid "Insn `%s' will never be issued"
-msgstr ""
+#: ggc-page.c:2047 ggc-page.c:2053
+msgid "can't write PCH file"
+msgstr "PCH-Datei kann nicht geschrieben werden"
-#: genautomata.c:9649
-msgid "Errors in DFA description"
-msgstr ""
+#: ggc-simple.c:506
+msgid "Generating PCH files is not supported when using ggc-simple.c"
+msgstr "Das Erzeugen von PCH-Dateien wird bei Verwendung von ggc-simple.c nicht unterstützt"
-#: genautomata.c:9732
+#: global.c:356 global.c:369 global.c:383
#, c-format
-msgid "Error in writing DFA description file %s"
-msgstr ""
-
-#: genconditions.c:196
-msgid "No input file name."
-msgstr "Kein Eingabedateiname,"
+msgid "%s cannot be used in asm here"
+msgstr "%s kann nicht hier in »asm« verwendet werden"
-#: ggc-page.c:1265
-msgid "open /dev/zero"
-msgstr ""
-
-#: graph.c:420 profile.c:1204 profile.c:1211 toplev.c:1836 toplev.c:5168
-#: f/com.c:14210 java/jcf-parse.c:917 java/jcf-parse.c:1063 java/lex.c:1776
-#: objc/objc-act.c:449
+#: graph.c:403 toplev.c:1481 toplev.c:4408 f/com.c:14202 java/jcf-parse.c:883
+#: java/jcf-parse.c:1030 java/lex.c:1828 objc/objc-act.c:503
#, c-format
-msgid "can't open %s"
-msgstr "Es ist nicht möglich »%s« zu öffnen"
+msgid "can't open %s: %m"
+msgstr "%s kann nicht geöffnet werden: %m"
#: haifa-sched.c:196
#, c-format
msgid "fix_sched_param: unknown param: %s"
-msgstr ""
+msgstr "fix_sched_param: unbekannter Parameter: %s"
-#: integrate.c:174
+#: integrate.c:166
msgid "function cannot be inline"
-msgstr ""
+msgstr "Funktion kann nicht »inline« sein"
-#: integrate.c:178
+#: integrate.c:170
msgid "varargs function cannot be inline"
-msgstr ""
+msgstr "Varargs-Funktion kann nicht »inline« sein"
-#: integrate.c:181
+#: integrate.c:173
msgid "function using alloca cannot be inline"
-msgstr ""
+msgstr "alloca benutzende Funktion kann nicht »inline« sein"
+
+#: integrate.c:176
+msgid "function using longjmp cannot be inline"
+msgstr "longjmp benutzende Funktion kann nicht »inline« sein"
-#: integrate.c:184
+#: integrate.c:179
msgid "function using setjmp cannot be inline"
-msgstr ""
+msgstr "setjmp benutzende Funktion kann nicht »inline« sein"
-#: integrate.c:187
+#: integrate.c:182
msgid "function uses __builtin_eh_return"
-msgstr ""
+msgstr "Funktion verwendet __builtin_eh_return"
-#: integrate.c:190
+#: integrate.c:185
msgid "function with nested functions cannot be inline"
-msgstr ""
+msgstr "Funktion mit geschachtelten Funktionen kann nicht »inline« sein"
-#: integrate.c:194
+#: integrate.c:189
msgid "function with label addresses used in initializers cannot inline"
-msgstr ""
+msgstr "Funktion mit Markenadressen in Initialisierungen kann nicht »inline« sein"
-#: integrate.c:201 integrate.c:245
+#: integrate.c:196 integrate.c:240
msgid "function too large to be inline"
-msgstr ""
+msgstr "Funktion zu groß um »inline« sein zu können"
-#: integrate.c:211
+#: integrate.c:206
msgid "no prototype, and parameter address used; cannot be inline"
-msgstr ""
+msgstr "kein Prototyp, und Parameteradresse verwendet; kann nicht »inline« sein"
-#: integrate.c:218 integrate.c:263
+#: integrate.c:213 integrate.c:258
msgid "inline functions not supported for this return value type"
-msgstr ""
+msgstr "»inline«-Funktionen für diesen Rückgabetyp nicht unterstützt"
-#: integrate.c:223
+#: integrate.c:218
msgid "function with varying-size return value cannot be inline"
-msgstr ""
+msgstr "Funktion mit Rückgabetyp variabler Größe kann nicht »inline« sein"
-#: integrate.c:230
+#: integrate.c:225
msgid "function with varying-size parameter cannot be inline"
-msgstr ""
+msgstr "Funktion mit Parameter variabler Größe kann nicht »inline« sein"
-#: integrate.c:233
+#: integrate.c:228
msgid "function with transparent unit parameter cannot be inline"
-msgstr ""
+msgstr "Funktion mit transparentem Einheiten-Parameter kann nicht »inline« sein"
-#: integrate.c:252
+#: integrate.c:247
msgid "function with computed jump cannot inline"
-msgstr ""
+msgstr "Funktion mit berechnetem Sprung kann nicht »inline« sein"
-#: integrate.c:256
+#: integrate.c:251
msgid "function with nonlocal goto cannot be inline"
-msgstr ""
+msgstr "Funktion mit nichtlokalem Goto kann nicht »inline« sein"
-#: integrate.c:270
+#: integrate.c:265
msgid "function with target specific attribute(s) cannot be inlined"
-msgstr ""
+msgstr "Funktion mit zielspezifischen Attributen kann nicht »inline« sein"
+
+#: jump.c:1896
+msgid "%Hwill never be executed"
+msgstr "%Hwird niemals ausgeführt"
-#: line-map.c:198
+#: line-map.c:202
#, c-format
msgid "In file included from %s:%u"
-msgstr ""
+msgstr "In Datei, eingefügt von %s:%u"
#. Translators note: this message is used in conjunction
#. with "In file included from %s:%ld" and some other
@@ -6256,2261 +5943,1647 @@ msgstr ""
#. with all the "from"s lined up.
#. The trailing comma is at the beginning of this message,
#. and the trailing colon is not translated.
-#: line-map.c:216
+#: line-map.c:220
#, c-format
msgid ""
",\n"
" from %s:%u"
msgstr ""
+",\n"
+" von %s:%u"
-#. If we didn't find this parameter, issue an error message.
-#: params.c:80
+#. What to print when a switch has no documentation.
+#: opts.c:149
+msgid "This switch lacks documentation"
+msgstr "Dieser Schalter ist undokumentiert"
+
+#. Eventually this should become a hard error IMO.
+#: opts.c:318
#, c-format
-msgid "invalid parameter `%s'"
-msgstr ""
+msgid "command line option \"%s\" is valid for %s but not for %s"
+msgstr "Kommandozeilenoption \"%s\" ist gültig für %s, aber nicht für %s"
-#: profile.c:397
+#: opts.c:406
#, c-format
-msgid "Profile does not match flowgraph of function %s (out of date?)"
-msgstr ""
+msgid "missing argument to \"%s\""
+msgstr "fehlendes Argument für »%s«"
-#: profile.c:400
-msgid ".da file corrupted"
-msgstr ""
+#: opts.c:416
+#, c-format
+msgid "argument to \"%s\" should be a non-negative integer"
+msgstr "Argument von »%s« sollte eine nicht-negative Ganzzahl sein"
-#: profile.c:634
+#: opts.c:463
#, c-format
-msgid "corrupted profile info: prob for %d-%d thought to be %d"
-msgstr ""
+msgid "unrecognized command line option \"%s\""
+msgstr "nicht erkannte Kommandozeilenoption »%s«"
+
+#: opts.c:646
+msgid "-Wuninitialized is not supported without -O"
+msgstr "-Wuninitialized wird nicht ohne -O unterstützt"
-#: profile.c:1226
+#: opts.c:1350
#, c-format
-msgid "file %s not found, execution counts assumed to be zero"
+msgid "unrecognized register name \"%s\""
+msgstr "unbekannter Registername: \"%s\""
+
+#: opts.c:1394
+#, c-format
+msgid "unknown tls-model \"%s\""
+msgstr "unbekanntes tls-Modell »%s«"
+
+#: opts.c:1450
+msgid "-fwritable-strings is deprecated; see documentation for details"
+msgstr "-fwritable-strings veraltet, schauen Sie in die Dokumentation für Details"
+
+#: opts.c:1534
+#, c-format
+msgid "%s: --param arguments should be of the form NAME=VALUE"
+msgstr "%s: »--param«-Argumente sollten von der Form NAME=VALUE sein"
+
+#: opts.c:1539
+#, c-format
+msgid "invalid --param value `%s'"
+msgstr "ungültiger Wert für --param: »%s«"
+
+#: opts.c:1635
+msgid "target system does not support debug output"
+msgstr "Zielsystem unterstützt nicht Testausgaben"
+
+#: opts.c:1642
+#, c-format
+msgid "debug format \"%s\" conflicts with prior selection"
+msgstr "Testformat »%s« steht in Konflikt mit vorheriger Auswahl"
+
+#: opts.c:1658
+#, c-format
+msgid "unrecognised debug output level \"%s\""
+msgstr "Testausgabestufe »%s« nicht erkannt"
+
+#: opts.c:1660
+#, c-format
+msgid "debug output level %s is too high"
+msgstr "Testausgabestufe »%s« ist zu groß"
+
+#: opts.c:1679
+msgid "The following options are language-independent:\n"
+msgstr "Die folgenden Optionen sind sprach-unabhängig:\n"
+
+#: opts.c:1686
+#, c-format
+msgid ""
+"The %s front end recognizes the following options:\n"
+"\n"
msgstr ""
+"Das %s-Frontend erkennt die folgenden Optionen:\n"
+"\n"
+
+#: opts.c:1700
+msgid "The --param option recognizes the following as parameters:\n"
+msgstr "Die Option »--param« erkennt die folgenden Parameter:\n"
+
+#. If we didn't find this parameter, issue an error message.
+#: params.c:76
+#, c-format
+msgid "invalid parameter `%s'"
+msgstr "ungültiger Parameter »%s«"
+
+#: profile.c:288
+msgid "corrupted profile info: run_max * runs < sum_max"
+msgstr "beschädigte Profilinformation: run_max * runs < sum_max"
-#: protoize.c:542
+#: profile.c:294
+msgid "corrupted profile info: sum_all is smaller than sum_max"
+msgstr "beschädigte Profilinformation: sum_all ist kleiner als sum_max"
+
+#: profile.c:336
+#, c-format
+msgid "corrupted profile info: edge from %i to %i exceeds maximal count"
+msgstr "Info zum beschädigten Profil: Kante von %i nach %i überschreitet Höchstzahl"
+
+#: profile.c:499
+#, c-format
+msgid "corrupted profile info: number of iterations for basic block %d thought to be %i"
+msgstr "Info zum beschädigten Profil: Anzahl der Durchläufe des Basisblocks %d sollte %i sein"
+
+#: profile.c:526
+#, c-format
+msgid "corrupted profile info: number of executions for edge %d-%d thought to be %i"
+msgstr "Info zum beschädigten Profil: Anzahl der Ausführungen der Kante »%d-%d« sollte %i sein"
+
+#: protoize.c:534
#, c-format
msgid "%s: internal abort\n"
-msgstr ""
+msgstr "%s: interner Abbruch\n"
-#: protoize.c:633
+#: protoize.c:592
#, c-format
msgid "%s: error writing file `%s': %s\n"
-msgstr ""
+msgstr "%s: Fehler beim Schreiben der Datei »%s«: %s\n"
-#: protoize.c:678
+#: protoize.c:636
#, c-format
msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
-msgstr ""
+msgstr "%s: Aufruf '%s [ -VqfnkN ] [ -i <istring> ] [ Dateiname ... ]'\n"
-#: protoize.c:681
+#: protoize.c:639
#, c-format
msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
-msgstr ""
+msgstr "%s: Aufruf '%s [ -VqfnkNlgC ] [ -B <VerzName> ] [ Dateiname ... ]'\n"
-#: protoize.c:788
+#: protoize.c:745
#, c-format
msgid "%s: warning: no read access for file `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: kein Leserecht für Datei »%s«\n"
-#: protoize.c:796
+#: protoize.c:753
#, c-format
msgid "%s: warning: no write access for file `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: kein Schreibrecht für Datei »%s«\n"
-#: protoize.c:804
+#: protoize.c:761
#, c-format
msgid "%s: warning: no write access for dir containing `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: kein Schreibrecht für Verzeichnis von »%s«\n"
#. Catch cases like /.. where we try to backup to a
#. point above the absolute root of the logical file
#. system.
-#: protoize.c:1222
+#: protoize.c:1148
#, c-format
msgid "%s: invalid file name: %s\n"
-msgstr ""
+msgstr "%s: ungültiger Dateiname: %s\n"
-#: protoize.c:1374
+#: protoize.c:1296
#, c-format
msgid "%s: %s: can't get status: %s\n"
-msgstr ""
+msgstr "%s: %s: kann Status nicht ermitteln: %s\n"
-#: protoize.c:1395
+#: protoize.c:1317
#, c-format
msgid ""
"\n"
"%s: fatal error: aux info file corrupted at line %d\n"
msgstr ""
+"\n"
+"%s: kritischer Fehler: Datei mit Hilfsinformationen beschädigt in Zeile %d\n"
-#: protoize.c:1731
+#: protoize.c:1646
#, c-format
msgid "%s:%d: declaration of function `%s' takes different forms\n"
-msgstr ""
+msgstr "%s:%d: Deklaration der Funktion »%s« nimmt verschiedene Formen an\n"
-#: protoize.c:1989
+#: protoize.c:1901
#, c-format
msgid "%s: compiling `%s'\n"
-msgstr ""
+msgstr "%s: »%s« wird kompiliert\n"
-#: protoize.c:2012
+#: protoize.c:1924
#, c-format
msgid "%s: wait: %s\n"
-msgstr ""
+msgstr "%s: warten: %s\n"
-#: protoize.c:2017
+#: protoize.c:1929
#, c-format
msgid "%s: subprocess got fatal signal %d\n"
-msgstr ""
+msgstr "%s: Subprozess empfing kritischen Fehler %d\n"
-#: protoize.c:2025
+#: protoize.c:1937
#, c-format
msgid "%s: %s exited with status %d\n"
-msgstr ""
+msgstr "%s: %s beendet mit Status %d\n"
-#: protoize.c:2077
+#: protoize.c:1986
#, c-format
msgid "%s: warning: missing SYSCALLS file `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: SYSCALLS-Datei »%s« fehlt\n"
-#: protoize.c:2086 protoize.c:2115
+#: protoize.c:1995 protoize.c:2024
#, c-format
msgid "%s: can't read aux info file `%s': %s\n"
-msgstr ""
+msgstr "%s: Datei mit Hilfsinformationen »%s« kann nicht gelesen werden: %s\n"
-#: protoize.c:2131 protoize.c:2159
+#: protoize.c:2040 protoize.c:2068
#, c-format
msgid "%s: can't get status of aux info file `%s': %s\n"
-msgstr ""
+msgstr "%s: Status der Datei mit Hilfsinformationen »%s« kann nicht ermittelt werden: %s\n"
-#: protoize.c:2187
+#: protoize.c:2096
#, c-format
msgid "%s: can't open aux info file `%s' for reading: %s\n"
-msgstr ""
+msgstr "%s: Datei mit Hilfsinformationen »%s« kann nicht zum Lesen geöffnet werden: %s\n"
-#: protoize.c:2205
+#: protoize.c:2114
#, c-format
msgid "%s: error reading aux info file `%s': %s\n"
-msgstr ""
+msgstr "%s: Fehler beim Lesen der Datei mit Hilfsinformationen »%s«: %s\n"
-#: protoize.c:2218
+#: protoize.c:2127
#, c-format
msgid "%s: error closing aux info file `%s': %s\n"
-msgstr ""
+msgstr "%s: Fehler beim Schließen der Datei mit Hilfsinformationen »%s«: %s\n"
-#: protoize.c:2234
+#: protoize.c:2143
#, c-format
msgid "%s: can't delete aux info file `%s': %s\n"
-msgstr ""
+msgstr "%s: Fehler beim Löschen der Datei mit Hilfsinformationen »%s«: %s\n"
-#: protoize.c:2316 protoize.c:4318
+#: protoize.c:2225 protoize.c:4195
#, c-format
msgid "%s: can't delete file `%s': %s\n"
-msgstr ""
+msgstr "%s: Fehler beim Löschen der Datei »%s«: %s\n"
-#: protoize.c:2395
+#: protoize.c:2303
#, c-format
msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
-msgstr ""
+msgstr "%s: Warnung: Fehler beim Umbenennen der Datei »%s« in »%s«: %s\n"
-#: protoize.c:2520
+#: protoize.c:2425
#, c-format
msgid "%s: conflicting extern definitions of '%s'\n"
-msgstr ""
+msgstr "%s: externe Definitionen von »%s« stehen in Konflikt\n"
-#: protoize.c:2524
+#: protoize.c:2429
#, c-format
msgid "%s: declarations of '%s' will not be converted\n"
-msgstr ""
+msgstr "%s: Deklarationen von »%s« werden nicht konvertiert\n"
-#: protoize.c:2526
+#: protoize.c:2431
#, c-format
msgid "%s: conflict list for '%s' follows:\n"
-msgstr ""
+msgstr "%s: Konfliktliste für »%s« folgt:\n"
-#: protoize.c:2559
+#: protoize.c:2464
#, c-format
msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: Formalliste von %s(%d) für Funktion »%s« verwendet\n"
-#: protoize.c:2599
+#: protoize.c:2504
#, c-format
msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
-msgstr ""
+msgstr "%s: %d: »%s« verwendet, fehlt jedoch in SYSCALLS\n"
-#: protoize.c:2605
+#: protoize.c:2510
#, c-format
msgid "%s: %d: warning: no extern definition for `%s'\n"
-msgstr ""
+msgstr "%s: %d: Warnung: keine externe Definition für »%s«\n"
-#: protoize.c:2636
+#: protoize.c:2540
#, c-format
msgid "%s: warning: no static definition for `%s' in file `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: keine statische Definition für »%s« in Datei »%s«\n"
-#: protoize.c:2642
+#: protoize.c:2546
#, c-format
msgid "%s: multiple static defs of `%s' in file `%s'\n"
-msgstr ""
+msgstr "%s: mehrere statische Definitionen von »%s« in Datei »%s«\n"
-#: protoize.c:2815 protoize.c:2818
+#: protoize.c:2716 protoize.c:2719
#, c-format
msgid "%s: %d: warning: source too confusing\n"
-msgstr ""
+msgstr "%s: %d: Warnung: Quelle zu verworren\n"
-#: protoize.c:3024
+#: protoize.c:2915
#, c-format
msgid "%s: %d: warning: varargs function declaration not converted\n"
-msgstr ""
+msgstr "%s: %d: Warnung: Funktionsdeklaration mit variablen Argumenten nicht konvertiert\n"
-#: protoize.c:3039
+#: protoize.c:2930
#, c-format
msgid "%s: declaration of function `%s' not converted\n"
-msgstr ""
+msgstr "%s: Deklaration der Funktion »%s« nicht konvertiert\n"
-#: protoize.c:3162
+#: protoize.c:3053
#, c-format
msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: zu viele Parameterlisten in Deklaration von »%s«\n"
-#: protoize.c:3183
+#: protoize.c:3074
#, c-format
msgid ""
"\n"
"%s: warning: too few parameter lists in declaration of `%s'\n"
msgstr ""
+"\n"
+"%s: Warnung: zu wenige Parameterlisten in Deklaration von »%s«\n"
-#: protoize.c:3281
+#: protoize.c:3170
#, c-format
msgid "%s: %d: warning: found `%s' but expected `%s'\n"
-msgstr ""
+msgstr "%s: %d: Warnung: »%s« gefunden, aber »%s« erwartet\n"
-#: protoize.c:3459
+#: protoize.c:3345
#, c-format
msgid "%s: local declaration for function `%s' not inserted\n"
-msgstr ""
+msgstr "%s: lokale Deklaration für Funktion »%s« nicht eingefügt\n"
-#: protoize.c:3486
+#: protoize.c:3372
#, c-format
msgid ""
"\n"
"%s: %d: warning: can't add declaration of `%s' into macro call\n"
msgstr ""
+"\n"
+"%s: %d: Warnung: kann Deklaration von »%s« nicht zu Makro-Aufruf hinzufügen\n"
-#: protoize.c:3560
+#: protoize.c:3444
#, c-format
msgid "%s: global declarations for file `%s' not inserted\n"
-msgstr ""
+msgstr "%s: globale Deklarationen für Datei »%s« wurden nicht eingefügt\n"
-#: protoize.c:3651 protoize.c:3681
+#: protoize.c:3533 protoize.c:3563
#, c-format
msgid "%s: definition of function `%s' not converted\n"
-msgstr ""
+msgstr "%s: Definition der Funktion »%s« nicht konvertiert\n"
-#: protoize.c:3670
+#: protoize.c:3552
#, c-format
msgid "%s: %d: warning: definition of %s not converted\n"
-msgstr ""
+msgstr "%s: %d: Warnung: Definition von %s nicht konvertiert\n"
-#: protoize.c:4000
+#: protoize.c:3878
#, c-format
msgid "%s: found definition of `%s' at %s(%d)\n"
-msgstr ""
+msgstr "%s: Definition von »%s« an Stelle %s(%d) gefunden\n"
#. If we make it here, then we did not know about this
#. function definition.
-#: protoize.c:4016
+#: protoize.c:3894
#, c-format
msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
-msgstr ""
+msgstr "%s: %d: Warnung: »%s« durch Präprozessor ausgeschlossen\n"
-#: protoize.c:4019
+#: protoize.c:3897
#, c-format
msgid "%s: function definition not converted\n"
-msgstr ""
+msgstr "%s: Funktionsdefinition nicht konvertiert\n"
-#: protoize.c:4078
+#: protoize.c:3955
#, c-format
msgid "%s: `%s' not converted\n"
-msgstr ""
+msgstr "%s: »%s« nicht konvertiert\n"
-#: protoize.c:4086
+#: protoize.c:3963
#, c-format
msgid "%s: would convert file `%s'\n"
-msgstr ""
+msgstr "%s: würde Datei »%s« konvertieren\n"
-#: protoize.c:4089
+#: protoize.c:3966
#, c-format
msgid "%s: converting file `%s'\n"
-msgstr ""
+msgstr "%s: Datei »%s« wird konvertiert\n"
-#: protoize.c:4099
+#: protoize.c:3976
#, c-format
msgid "%s: can't get status for file `%s': %s\n"
-msgstr ""
+msgstr "%s: Status der Datei »%s« kann nicht ermittelt werden: %s\n"
-#: protoize.c:4141
+#: protoize.c:4018
#, c-format
msgid "%s: can't open file `%s' for reading: %s\n"
-msgstr ""
+msgstr "%s: Datei »%s« kann nicht zum Schreiben geöffnet werden: %s\n"
-#: protoize.c:4156
+#: protoize.c:4033
#, c-format
msgid ""
"\n"
"%s: error reading input file `%s': %s\n"
msgstr ""
+"\n"
+"%s: Fehler beim Lesen der Eingabedatei »%s«: %s\n"
-#: protoize.c:4190
+#: protoize.c:4067
#, c-format
msgid "%s: can't create/open clean file `%s': %s\n"
-msgstr ""
+msgstr "%s: die leere Datei »%s« kann nicht erzeugt oder geöffnet werden: %s\n"
-#: protoize.c:4295
+#: protoize.c:4172
#, c-format
msgid "%s: warning: file `%s' already saved in `%s'\n"
-msgstr ""
+msgstr "%s: Warnung: Datei »%s« bereits in »%s« gesichert\n"
-#: protoize.c:4303
+#: protoize.c:4180
#, c-format
msgid "%s: can't link file `%s' to `%s': %s\n"
-msgstr ""
+msgstr "%s: die Datei »%s« kann nicht mit »%s« verbunden werden (Link): %s\n"
-#: protoize.c:4333
+#: protoize.c:4210
#, c-format
msgid "%s: can't create/open output file `%s': %s\n"
-msgstr ""
+msgstr "%s: die Ausgabedatei »%s« kann nicht erzeugt oder geöffnet werden: %s\n"
-#: protoize.c:4366
+#: protoize.c:4243
#, c-format
msgid "%s: can't change mode of file `%s': %s\n"
-msgstr ""
+msgstr "%s: Rechte der Datei »%s« können nicht geändert werden: %s\n"
-#: protoize.c:4541
+#: protoize.c:4416
#, c-format
msgid "%s: cannot get working directory: %s\n"
-msgstr ""
+msgstr "%s: aktuelles Verzeichnis kann nicht ermittelt werden: %s\n"
-#: protoize.c:4639
+#: protoize.c:4514
#, c-format
msgid "%s: input file names must have .c suffixes: %s\n"
-msgstr ""
+msgstr "%s: Namen der Eingabedateien müssen Suffix ».c« haben: %s\n"
#: ra.c:750
msgid "Didn't find a coloring.\n"
-msgstr ""
+msgstr "Färbung konnte nicht gefunden werden.\n"
-#: reg-stack.c:673
+#: reg-stack.c:665
#, c-format
msgid "output constraint %d must specify a single register"
-msgstr ""
+msgstr "Ausgabebedingung %d muss ein einzelnes Register angeben"
-#: reg-stack.c:683
+#: reg-stack.c:675
#, c-format
msgid "output constraint %d cannot be specified together with \"%s\" clobber"
-msgstr ""
+msgstr "Ausgabebedingung %d kann nicht zusammen mit »%s« angegeben werden"
-#: reg-stack.c:706
+#: reg-stack.c:698
msgid "output regs must be grouped at top of stack"
-msgstr ""
+msgstr "Ausgaberegister müssen oben auf dem Stack gruppiert werden"
-#: reg-stack.c:743
+#: reg-stack.c:735
msgid "implicitly popped regs must be grouped at top of stack"
-msgstr ""
+msgstr "implizit geholte (»pop«) Register müssen oben auf dem Stack gruppiert werden"
-#: reg-stack.c:762
+#: reg-stack.c:754
#, c-format
msgid "output operand %d must use `&' constraint"
-msgstr ""
+msgstr "Ausgabeoperand %d muss »&«-Bedingung benutzen"
-#: regclass.c:756
+#: regclass.c:743
#, c-format
msgid "can't use '%s' as a %s register"
-msgstr ""
+msgstr "»%s« kann nicht als ein %s-Register verwendet werden"
-#: regclass.c:771 config/ia64/ia64.c:4304 config/ia64/ia64.c:4311
+#: regclass.c:758 config/ia64/ia64.c:4640 config/ia64/ia64.c:4647
#, c-format
msgid "unknown register name: %s"
-msgstr ""
+msgstr "unbekannter Registername: %s"
-#: regclass.c:782
+#: regclass.c:768
msgid "global register variable follows a function definition"
-msgstr ""
+msgstr "globale Registervariable folgt einer Funktionsdefinition"
-#: regclass.c:786
+#: regclass.c:772
msgid "register used for two global register variables"
-msgstr ""
+msgstr "Register für zwei globale Registervariablen verwendet"
-#: regclass.c:791
+#: regclass.c:777
msgid "call-clobbered register used for global register variable"
-msgstr ""
+msgstr "für Ruf vorgesehenes Register wurde für globale Registervariable verwendet"
-#: regrename.c:1899
+#: regrename.c:1846
#, c-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
-msgstr ""
+msgstr "validate_value_data: [%u] Falsches next_regno für leere Kette (%u)"
-#: regrename.c:1911
+#: regrename.c:1858
#, c-format
msgid "validate_value_data: Loop in regno chain (%u)"
-msgstr ""
+msgstr "validate_value_data: Zyklus in regno-Kette (%u)"
-#: regrename.c:1914
+#: regrename.c:1861
#, c-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
-msgstr ""
+msgstr "validate_value_data: [%u] Falsches oldest_regno (%u)"
-#: regrename.c:1926
+#: regrename.c:1873
#, c-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
-msgstr ""
+msgstr "validate_value_data: [%u] Nicht leeres Register in Kette (%s %u %i)"
-#: reload.c:1229
+#: reload.c:1254
msgid "cannot reload integer constant operand in `asm'"
-msgstr ""
+msgstr "Ganzzahlkonstantenoperand kann in »asm« nicht neu geladen werden"
-#: reload.c:1251
+#: reload.c:1276
msgid "impossible register constraint in `asm'"
-msgstr ""
+msgstr "unmögliche Registerbedingung in »asm«"
-#: reload.c:3461
+#: reload.c:3489
msgid "`&' constraint used with no register class"
-msgstr ""
+msgstr "»&«-Bedingung ohne Registerklasse verwendet"
-#: reload.c:3629
+#: reload.c:3657
msgid "unable to generate reloads for:"
-msgstr ""
+msgstr "Neuladungen konnten nicht generiert werden für:"
-#: reload.c:3630 reload.c:3844
+#: reload.c:3658 reload.c:3872
msgid "inconsistent operand constraints in an `asm'"
-msgstr ""
+msgstr "inkonsistente Operandenbedingungen in einem »asm«"
-#: reload1.c:1250
+#: reload1.c:1212
msgid "frame size too large for reliable stack checking"
-msgstr ""
+msgstr "Rahmengröße zu groß für zuverlässige Kellerüberprüfung"
-#: reload1.c:1253
+#: reload1.c:1215
msgid "try reducing the number of local variables"
-msgstr ""
+msgstr "versuchen Sie, die Anzahl der lokalen Variablen zu verringern"
-#: reload1.c:1909
+#: reload1.c:1868
#, c-format
msgid "can't find a register in class `%s' while reloading `asm'"
-msgstr ""
+msgstr "in der Klasse »%s« konnte während des Neuladens von »asm« kein Register gefunden werden"
-#: reload1.c:1913
+#: reload1.c:1872
#, c-format
msgid "unable to find a register to spill in class `%s'"
-msgstr ""
+msgstr "in Klasse »%s« konnte kein Register für Überlauf gefunden werden"
-#: reload1.c:1915
+#: reload1.c:1874
msgid "this is the insn:"
-msgstr ""
+msgstr "dies ist das insn:"
-#: reload1.c:3938
+#: reload1.c:3871
msgid "`asm' operand requires impossible reload"
-msgstr ""
+msgstr "»asm«-Operand erfordert unmögliches Neuladen"
#. It's the compiler's fault.
-#: reload1.c:5052
+#: reload1.c:4963
msgid "could not find a spill register"
-msgstr ""
+msgstr "es konnte kein Ãœberlaufregister gefunden werden"
-#: reload1.c:5057
+#: reload1.c:4968
msgid "`asm' operand constraint incompatible with operand size"
-msgstr ""
+msgstr "»asm«-Operandenbedingung inkompatibel mit Operandengröße"
#. It's the compiler's fault.
-#: reload1.c:6679
+#: reload1.c:6590
msgid "VOIDmode on an output"
-msgstr ""
+msgstr "VOIDmode bei einer Ausgabe"
-#: reload1.c:6680
+#: reload1.c:6591
msgid "output operand is constant in `asm'"
-msgstr ""
+msgstr "Ausgabeoperand ist in »asm« konstant"
-#: rtl-error.c:140
+#: rtl-error.c:124
msgid "unrecognizable insn:"
-msgstr ""
+msgstr "unerkennbares insn:"
-#: rtl-error.c:142
+#: rtl-error.c:126
msgid "insn does not satisfy its constraints:"
-msgstr ""
+msgstr "insn erfüllt nicht seine Bedingungen:"
-#: rtl.c:535
+#: rtl.c:477
#, c-format
msgid "RTL check: access of elt %d of `%s' with last elt %d in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Zugriff von Elt %d von »%s« mit letztem Elt %d in %s, bei %s:%d"
-#: rtl.c:550
+#: rtl.c:487
#, c-format
msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Elt-%d-Typ %c erwartet, haben Typ %c (rtx %s) in %s, bei %s:%d"
-#: rtl.c:566
+#: rtl.c:497
#, c-format
msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Elt-%d-Typ %c oder %c erwartet, haben Typ %c (rtx %s) in %s, bei %s:%d"
-#: rtl.c:579
+#: rtl.c:506
#, c-format
msgid "RTL check: expected code `%s', have `%s' in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Code »%s« erwartet, haben »%s« in %s, bei %s:%d"
-#: rtl.c:593
+#: rtl.c:516
#, c-format
msgid "RTL check: expected code `%s' or `%s', have `%s' in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Code »%s« oder »%s« erwartet, haben »%s« in %s, bei %s:%d"
-#: rtl.c:608
+#: rtl.c:527
#, c-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Überprüfung: Zugriff von Elt %d von Vektor mit letztem Elt %d in %s, bei %s:%d"
-#: rtl.c:623
+#: rtl.c:538
#, c-format
msgid "RTL flag check: %s used with unexpected rtx code `%s' in %s, at %s:%d"
-msgstr ""
+msgstr "RTL-Kennzeichenüberprüfung: %s mit unerwartetem RTX-Code »%s« in %s bei %s:%d verwendet"
-#: stmt.c:766
+#: stmt.c:750
#, c-format
msgid "jump to `%s' invalidly jumps into binding contour"
-msgstr ""
+msgstr "Sprung zu »%s« springt ungültig in bindenden Querschnitt"
-#: stmt.c:1002 stmt.c:3766
-#, c-format
-msgid "label `%s' used before containing binding contour"
-msgstr ""
+#: stmt.c:977 stmt.c:3793
+msgid "%Jlabel '%D' used before containing binding contour"
+msgstr "%JMarke »%D« verwendet vor enthaltendem bindenden Querschnitt"
-#: stmt.c:1190
+#: stmt.c:1156
msgid "output operand constraint lacks `='"
-msgstr ""
+msgstr "Bedingung des Ausgabeoperanden erfordert »=«"
-#: stmt.c:1205
+#: stmt.c:1171
#, c-format
msgid "output constraint `%c' for operand %d is not at the beginning"
-msgstr ""
+msgstr "Ausgabebedingung »%c« für Operand %d steht nicht am Anfang"
-#: stmt.c:1227
+#: stmt.c:1193
msgid "operand constraint contains incorrectly positioned '+' or '='"
-msgstr ""
+msgstr "Operandenbedingung enthält falsch positioniertes »+« oder »=«"
-#: stmt.c:1233 stmt.c:1337
+#: stmt.c:1199 stmt.c:1301
#, c-format
msgid "`%%' constraint used with last operand"
-msgstr ""
+msgstr "»%%«-Bedingung mit letztem Operanden verwendet"
-#: stmt.c:1252
+#: stmt.c:1218
msgid "matching constraint not valid in output operand"
-msgstr ""
+msgstr "dazu passende Bedingung in Ausgabeoperanden ungültig"
-#: stmt.c:1328
+#: stmt.c:1260
+msgid "read-write constraint does not allow a register"
+msgstr "Schreib- und Lesebeschränkungen erlauben kein Register"
+
+#: stmt.c:1292
#, c-format
msgid "input operand constraint contains `%c'"
-msgstr ""
+msgstr "Bedingung für Eingabeoperanden enthält »%c«"
-#: stmt.c:1368
+#: stmt.c:1334
msgid "matching constraint references invalid operand number"
-msgstr ""
+msgstr "dazu passende Bedingung referenziert ungültige Operandennummer"
-#: stmt.c:1400
+#: stmt.c:1372
#, c-format
msgid "invalid punctuation `%c' in constraint"
-msgstr ""
+msgstr "ungültiges Zeichen »%c« in Bedingung"
+
+#: stmt.c:1396
+msgid "matching constraint does not allow a register"
+msgstr "dazu passende Bedingung erlaubt kein Register"
-#: stmt.c:1450
+#: stmt.c:1424
#, c-format
msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
-msgstr ""
+msgstr "asm-Spezifizierer für Variable »%s« steht in Konflikt mit asm-Konflikt-Liste"
-#: stmt.c:1540
+#: stmt.c:1514
#, c-format
msgid "unknown register name `%s' in `asm'"
-msgstr ""
+msgstr "unbekannter Registername »%s« in »asm«"
+
+#: stmt.c:1522
+#, c-format
+msgid "PIC register `%s' clobbered in `asm'"
+msgstr "PIC-Register »%s« wird in »asm« zerstört"
-#: stmt.c:1588
+#: stmt.c:1571
#, c-format
msgid "more than %d operands in `asm'"
-msgstr ""
+msgstr "mehr als %d Operanden in »asm«"
-#: stmt.c:1650
+#: stmt.c:1633
#, c-format
msgid "output number %d not directly addressable"
-msgstr ""
+msgstr "Ausgabezahl %d nicht direkt adressierbar"
-#: stmt.c:1728
+#: stmt.c:1711
#, c-format
msgid "asm operand %d probably doesn't match constraints"
-msgstr ""
+msgstr "asm-Operand %d passt wahrscheinlich nicht zu den Bedingungen"
-#: stmt.c:1738
+#: stmt.c:1721
#, c-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
-msgstr ""
+msgstr "die Verwendung einer Speichereingabe ohne L-Wert in asm-Operand %d ist veraltet"
-#: stmt.c:1889
+#: stmt.c:1875
msgid "asm clobber conflict with output operand"
-msgstr ""
+msgstr "asm-Konflikt mit Ausgabeoperand"
-#: stmt.c:1894
+#: stmt.c:1880
msgid "asm clobber conflict with input operand"
-msgstr ""
+msgstr "asm-Konflikt mit Eingabeoperand"
-#: stmt.c:1929
+#: stmt.c:1914
msgid "too many alternatives in `asm'"
-msgstr ""
+msgstr "zu viele Alternativen in »asm«"
-#: stmt.c:1941
+#: stmt.c:1926
msgid "operand constraints for `asm' differ in number of alternatives"
-msgstr ""
+msgstr "Operandenbedingungen für »asm« unterscheiden sich in der Anzahl der Alternativen"
-#: stmt.c:1994
+#: stmt.c:1978
#, c-format
msgid "duplicate asm operand name '%s'"
-msgstr ""
+msgstr "doppelter asm-Operandenname »%s«"
-#: stmt.c:2081
+#: stmt.c:2076
msgid "missing close brace for named operand"
-msgstr ""
+msgstr "schließende geschweifte Klammer für benannten Operanden fehlt"
-#: stmt.c:2109
+#: stmt.c:2104
#, c-format
msgid "undefined named operand '%s'"
-msgstr ""
+msgstr "benannter Operand »%s« ist nicht definiert"
-#: stmt.c:3703
-#, c-format
-msgid "unused variable `%s'"
-msgstr ""
+#: stmt.c:2161
+msgid "%Hstatement with no effect"
+msgstr "%HAnweisung ohne Effekt"
+
+#: stmt.c:2317
+msgid "%Hvalue computed is not used"
+msgstr "%Hberechneter Wert ist unbenutzt"
+
+#: stmt.c:3733
+msgid "%Junused variable '%D'"
+msgstr "%JVariable »%D« wird nicht verwendet"
+
+#: stmt.c:4508
+msgid "%Hunreachable code at beginning of %s"
+msgstr "%Hunerreichbarer Code am Anfang von %s"
-#: stmt.c:5189
+#: stmt.c:5136
#, c-format
msgid "enumeration value `%s' not handled in switch"
-msgstr ""
+msgstr "Aufzählungswert »%s« wird nicht von switch behandelt"
-#: stmt.c:5214 stmt.c:5234
+#: stmt.c:5161 stmt.c:5181
#, c-format
msgid "case value `%ld' not in enumerated type"
-msgstr ""
+msgstr "case-Wert »%ld« nicht in Aufzählungstyp"
-#: stmt.c:5217 stmt.c:5237
+#: stmt.c:5164 stmt.c:5184
#, c-format
msgid "case value `%ld' not in enumerated type `%s'"
-msgstr ""
+msgstr "case-Wert »%ld« nicht in Aufzählungstyp »%s«"
-#: stmt.c:5310
+#: stmt.c:5401
msgid "switch missing default case"
-msgstr ""
+msgstr "die Standardfallbehandlung in switch fehlt"
-#: stor-layout.c:178
+#: stor-layout.c:183
msgid "type size can't be explicitly evaluated"
-msgstr ""
+msgstr "die Typgröße kann nicht explizit ausgewertet werden"
-#: stor-layout.c:180
+#: stor-layout.c:185
msgid "variable-size type declared outside of any function"
-msgstr ""
+msgstr "Typ mit variabler Größe wurde außerhalb einer Funktion definiert"
-#: stor-layout.c:487
-#, c-format
-msgid "size of `%s' is %d bytes"
-msgstr ""
+#: stor-layout.c:515
+msgid "%Jsize of '%D' is %d bytes"
+msgstr "%JGröße von »%Ds« ist %d Bytes"
-#: stor-layout.c:489
-#, c-format
-msgid "size of `%s' is larger than %d bytes"
-msgstr ""
+#: stor-layout.c:517
+msgid "%Jsize of '%D' is larger than %d bytes"
+msgstr "%JGröße von »%D« übertrifft %d Bytes"
+
+#: stor-layout.c:883
+msgid "%Jpacked attribute causes inefficient alignment for '%D'"
+msgstr "%Jgepacktes Attribut verursacht ineffiziente Ausrichtung für »%D«"
-#: stor-layout.c:909 stor-layout.c:1325
+#: stor-layout.c:886
+msgid "%Jpacked attribute is unnecessary for '%D'"
+msgstr "%Jgepacktes Attribut ist unnötig für »%D«"
+
+#: stor-layout.c:902
+msgid "%Jpadding struct to align '%D'"
+msgstr "%Jstruct wird aufgefüllt, um »%D« auszurichten"
+
+#: stor-layout.c:1245
+msgid "padding struct size to alignment boundary"
+msgstr "struct wird bis zur Ausrichtungsgrenze aufgefüllt"
+
+#: stor-layout.c:1275
#, c-format
msgid "packed attribute causes inefficient alignment for `%s'"
-msgstr ""
+msgstr "gepacktes Attribut verursacht ineffiziente Ausrichtung für »%s«"
-#: stor-layout.c:911 stor-layout.c:1327
+#: stor-layout.c:1277
#, c-format
msgid "packed attribute is unnecessary for `%s'"
-msgstr ""
-
-#: stor-layout.c:926
-#, c-format
-msgid "padding struct to align `%s'"
-msgstr ""
+msgstr "gepacktes Attribut ist unnötig für »%s«"
-#: stor-layout.c:1289
-msgid "padding struct size to alignment boundary"
-msgstr ""
-
-#: stor-layout.c:1332
+#: stor-layout.c:1282
msgid "packed attribute causes inefficient alignment"
-msgstr ""
+msgstr "gepacktes Attribut führt zu ineffizienter Ausrichtung"
-#: stor-layout.c:1334
+#: stor-layout.c:1284
msgid "packed attribute is unnecessary"
-msgstr ""
+msgstr "gepacktes Attribut ist unnötig"
+
+#: targhooks.c:154
+msgid "__builtin_saveregs not supported by this target"
+msgstr "__builtin_saveregs wird von diesem Ziel nicht unterstützt"
-#: timevar.c:322
+#: timevar.c:314
#, c-format
msgid "cannot timevar_pop '%s' when top of timevars stack is '%s'"
-msgstr ""
+msgstr "timevar_pop '%s' kann nicht ausgeführt werden, wenn am Anfang des timevars-Stacks '%s' steht"
-#: timevar.c:453
+#: timevar.c:440
msgid ""
"\n"
"Execution times (seconds)\n"
msgstr ""
+"\n"
+"Ausführungszeiten (Sekunden)\n"
#. Print total time.
-#: timevar.c:503
+#: timevar.c:490
msgid " TOTAL :"
-msgstr ""
+msgstr " GESAMT :"
-#: timevar.c:539
+#: timevar.c:513
#, c-format
msgid "time in %s: %ld.%06ld (%ld%%)\n"
-msgstr ""
+msgstr "Zeit in %s: %ld.%06ld (%ld%%)\n"
-#: tlink.c:399
+#: tlink.c:377
#, c-format
msgid "collect: reading %s\n"
-msgstr ""
+msgstr "sammeln: %s lesen\n"
-#: tlink.c:502
+#: tlink.c:478
#, c-format
msgid "collect: recompiling %s\n"
-msgstr ""
+msgstr "sammeln: %s neu kompilieren\n"
-#: tlink.c:674
+#: tlink.c:654
#, c-format
msgid "collect: tweaking %s in %s\n"
-msgstr ""
+msgstr "sammeln: %s wird in %s eingestellt\n"
-#: tlink.c:721
+#: tlink.c:700
+#, c-format
msgid "collect: relinking\n"
-msgstr ""
+msgstr "sammeln: neu binden\n"
-#: tlink.c:730
+#: tlink.c:709
#, c-format
msgid "ld returned %d exit status"
-msgstr ""
-
-#: toplev.c:920
-msgid "Generate debugging info in default format"
-msgstr ""
-
-#: toplev.c:921
-msgid "Generate debugging info in default extended format"
-msgstr ""
-
-#: toplev.c:923
-msgid "Generate STABS format debug info"
-msgstr ""
-
-#: toplev.c:924
-msgid "Generate extended STABS format debug info"
-msgstr ""
-
-#: toplev.c:927
-msgid "Generate DWARF-1 format debug info"
-msgstr ""
-
-#: toplev.c:929
-msgid "Generate extended DWARF-1 format debug info"
-msgstr ""
-
-#: toplev.c:932
-msgid "Generate DWARF-2 debug info"
-msgstr ""
-
-#: toplev.c:935
-msgid "Generate XCOFF format debug info"
-msgstr ""
-
-#: toplev.c:936
-msgid "Generate extended XCOFF format debug info"
-msgstr ""
-
-#: toplev.c:939
-msgid "Generate COFF format debug info"
-msgstr ""
-
-#: toplev.c:942
-msgid "Generate VMS format debug info"
-msgstr ""
-
-#: toplev.c:981
-msgid "Perform DWARF2 duplicate elimination"
-msgstr ""
-
-#: toplev.c:983
-msgid "Do not store floats in registers"
-msgstr ""
-
-#: toplev.c:985
-msgid "Consider all mem refs through pointers as volatile"
-msgstr ""
-
-#: toplev.c:987
-msgid "Consider all mem refs to global data to be volatile"
-msgstr ""
-
-#: toplev.c:989
-msgid "Consider all mem refs to static data to be volatile"
-msgstr ""
-
-#: toplev.c:991
-msgid "Defer popping functions args from stack until later"
-msgstr ""
-
-#: toplev.c:993
-msgid "When possible do not generate stack frames"
-msgstr ""
-
-#: toplev.c:995
-msgid "Optimize sibling and tail recursive calls"
-msgstr ""
-
-#: toplev.c:997
-msgid "Perform superblock formation via tail duplication"
-msgstr ""
-
-#: toplev.c:999
-msgid "When running CSE, follow jumps to their targets"
-msgstr ""
-
-#: toplev.c:1001
-msgid "When running CSE, follow conditional jumps"
-msgstr ""
-
-#: toplev.c:1003
-msgid "Perform a number of minor, expensive optimizations"
-msgstr ""
-
-#: toplev.c:1005
-msgid "Perform jump threading optimizations"
-msgstr ""
-
-#: toplev.c:1007
-msgid "Perform strength reduction optimizations"
-msgstr ""
-
-#: toplev.c:1009
-msgid "Perform loop unrolling when iteration count is known"
-msgstr ""
-
-#: toplev.c:1011
-msgid "Perform loop unrolling for all loops"
-msgstr ""
-
-#: toplev.c:1013
-msgid "Generate prefetch instructions, if available, for arrays in loops"
-msgstr ""
-
-#: toplev.c:1015
-msgid "Force all loop invariant computations out of loops"
-msgstr ""
-
-#: toplev.c:1017
-msgid "Strength reduce all loop general induction variables"
-msgstr ""
-
-#: toplev.c:1019
-msgid "Store strings in writable data section"
-msgstr ""
-
-#: toplev.c:1021
-msgid "Enable machine specific peephole optimizations"
-msgstr ""
-
-#: toplev.c:1023
-msgid "Copy memory operands into registers before using"
-msgstr ""
-
-#: toplev.c:1025
-msgid "Copy memory address constants into regs before using"
-msgstr ""
-
-#: toplev.c:1027
-msgid "Allow function addresses to be held in registers"
-msgstr ""
-
-#: toplev.c:1029
-msgid "Integrate simple functions into their callers"
-msgstr ""
-
-#: toplev.c:1031
-msgid "Generate code for funcs even if they are fully inlined"
-msgstr ""
-
-#: toplev.c:1033
-msgid "Pay attention to the 'inline' keyword"
-msgstr ""
-
-#: toplev.c:1035
-msgid "Emit static const variables even if they are not used"
-msgstr ""
-
-#: toplev.c:1037
-msgid "Check for syntax errors, then stop"
-msgstr ""
-
-#: toplev.c:1039
-msgid "Mark data as shared rather than private"
-msgstr ""
-
-#: toplev.c:1041
-msgid "Enable saving registers around function calls"
-msgstr ""
-
-#: toplev.c:1043
-msgid "Return 'short' aggregates in memory, not registers"
-msgstr ""
-
-#: toplev.c:1045
-msgid "Return 'short' aggregates in registers"
-msgstr ""
-
-#: toplev.c:1047
-msgid "Attempt to fill delay slots of branch instructions"
-msgstr ""
-
-#: toplev.c:1049
-msgid "Perform the global common subexpression elimination"
-msgstr ""
-
-#: toplev.c:1051
-msgid "Perform enhanced load motion during global subexpression elimination"
-msgstr ""
-
-#: toplev.c:1053
-msgid "Perform store motion after global subexpression elimination"
-msgstr ""
-
-#: toplev.c:1055
-msgid "Perform the loop optimizations"
-msgstr ""
-
-#: toplev.c:1057
-msgid "Perform cross-jumping optimization"
-msgstr ""
-
-#: toplev.c:1059
-msgid "Perform conversion of conditional jumps to branchless equivalents"
-msgstr ""
-
-#: toplev.c:1061
-msgid "Perform conversion of conditional jumps to conditional execution"
-msgstr ""
-
-#: toplev.c:1063
-msgid "Run CSE pass after loop optimizations"
-msgstr ""
-
-#: toplev.c:1065
-msgid "Run the loop optimizer twice"
-msgstr ""
-
-#: toplev.c:1067
-msgid "Delete useless null pointer checks"
-msgstr ""
-
-#: toplev.c:1069
-msgid "Reschedule instructions before register allocation"
-msgstr ""
-
-#: toplev.c:1071
-msgid "Reschedule instructions after register allocation"
-msgstr ""
-
-#: toplev.c:1073
-msgid "Enable scheduling across basic blocks"
-msgstr ""
-
-#: toplev.c:1075
-msgid "Allow speculative motion of non-loads"
-msgstr ""
-
-#: toplev.c:1077
-msgid "Allow speculative motion of some loads"
-msgstr ""
-
-#: toplev.c:1079
-msgid "Allow speculative motion of more loads"
-msgstr ""
-
-#: toplev.c:1081
-msgid "Replace add,compare,branch with branch on count reg"
-msgstr ""
-
-#: toplev.c:1083
-msgid "Generate position independent code, if possible"
-msgstr ""
-
-#: toplev.c:1086
-msgid "Enable exception handling"
-msgstr ""
-
-#: toplev.c:1088
-msgid "Just generate unwind tables for exception handling"
-msgstr ""
-
-#: toplev.c:1090
-msgid "Generate unwind tables exact at each instruction boundary"
-msgstr ""
-
-#: toplev.c:1092
-msgid "Support synchronous non-call exceptions"
-msgstr ""
-
-#: toplev.c:1094
-msgid "Insert arc based program profiling code"
-msgstr ""
-
-#: toplev.c:1096
-msgid "Create data files needed by gcov"
-msgstr ""
-
-#: toplev.c:1098
-msgid "Use profiling information for branch probabilities"
-msgstr ""
-
-#: toplev.c:1100
-msgid "Enable basic program profiling code"
-msgstr ""
-
-#: toplev.c:1102
-msgid "Reorder basic blocks to improve code placement"
-msgstr ""
-
-#: toplev.c:1104
-msgid "Reorder functions to improve code placement"
-msgstr ""
-
-#: toplev.c:1106
-msgid "Do the register renaming optimization pass"
-msgstr ""
-
-#: toplev.c:1108
-msgid "Do the register copy-propagation optimization pass"
-msgstr ""
-
-#: toplev.c:1110
-msgid "Do not put uninitialized globals in the common section"
-msgstr ""
-
-#: toplev.c:1112
-msgid "Do not generate .size directives"
-msgstr ""
-
-#: toplev.c:1114
-msgid "place each function into its own section"
-msgstr ""
-
-#: toplev.c:1116
-msgid "place data items into their own section"
-msgstr ""
-
-#: toplev.c:1118
-msgid "Add extra commentary to assembler output"
-msgstr ""
-
-#: toplev.c:1120
-msgid "Output GNU ld formatted global initializers"
-msgstr ""
-
-#: toplev.c:1122
-msgid "Enables a register move optimization"
-msgstr ""
-
-#: toplev.c:1124
-msgid "Do the full regmove optimization pass"
-msgstr ""
-
-#: toplev.c:1126
-msgid "Pack structure members together without holes"
-msgstr ""
-
-#: toplev.c:1128
-msgid "Insert stack checking code into the program"
-msgstr ""
-
-#: toplev.c:1130
-msgid "Specify that arguments may alias each other & globals"
-msgstr ""
-
-#: toplev.c:1132
-msgid "Assume arguments may alias globals but not each other"
-msgstr ""
-
-#: toplev.c:1134
-msgid "Assume arguments do not alias each other or globals"
-msgstr ""
-
-#: toplev.c:1136
-msgid "Assume strict aliasing rules apply"
-msgstr ""
-
-#: toplev.c:1138
-msgid "Align the start of loops"
-msgstr ""
-
-#: toplev.c:1140
-msgid "Align labels which are only reached by jumping"
-msgstr ""
-
-#: toplev.c:1142
-msgid "Align all labels"
-msgstr ""
-
-#: toplev.c:1144
-msgid "Align the start of functions"
-msgstr ""
-
-#: toplev.c:1146
-msgid "Attempt to merge identical constants across compilation units"
-msgstr ""
-
-#: toplev.c:1148
-msgid "Attempt to merge identical constants and constant variables"
-msgstr ""
-
-#: toplev.c:1150
-msgid "Suppress output of instruction numbers and line number notes in debugging dumps"
-msgstr ""
-
-#: toplev.c:1152
-msgid "Instrument function entry/exit with profiling calls"
-msgstr ""
-
-#: toplev.c:1154
-msgid "Put zero initialized data in the bss section"
-msgstr ""
-
-#: toplev.c:1156
-msgid "Enable SSA optimizations"
-msgstr ""
-
-#: toplev.c:1158
-msgid "Enable SSA conditional constant propagation"
-msgstr ""
-
-#: toplev.c:1160
-msgid "Enable aggressive SSA dead code elimination"
-msgstr ""
-
-#: toplev.c:1162
-msgid "External symbols have a leading underscore"
-msgstr ""
-
-#: toplev.c:1164
-msgid "Process #ident directives"
-msgstr ""
-
-#: toplev.c:1166
-msgid "Enables an rtl peephole pass run before sched2"
-msgstr ""
-
-#: toplev.c:1168
-msgid "Assume no NaNs or +-Infs are generated"
-msgstr ""
-
-#: toplev.c:1170
-msgid "Enables guessing of branch probabilities"
-msgstr ""
-
-#: toplev.c:1172
-msgid "Set errno after built-in math functions"
-msgstr ""
-
-#: toplev.c:1174
-msgid "Floating-point operations can trap"
-msgstr ""
-
-#: toplev.c:1176
-msgid "Allow math optimizations that may violate IEEE or ANSI standards"
-msgstr ""
-
-#: toplev.c:1178
-msgid "Disable optimizations observable by IEEE signaling NaNs"
-msgstr ""
-
-#: toplev.c:1180
-msgid "Generate code to check bounds before indexing arrays"
-msgstr ""
-
-#: toplev.c:1182
-msgid "Convert floating point constant to single precision constant"
-msgstr ""
-
-#: toplev.c:1184
-msgid "Report time taken by each compiler pass at end of run"
-msgstr ""
-
-#: toplev.c:1186
-msgid "Report on permanent memory allocation at end of run"
-msgstr ""
-
-#: toplev.c:1188
-msgid "Trap for signed overflow in addition / subtraction / multiplication"
-msgstr ""
-
-#: toplev.c:1190
-msgid "Use graph coloring register allocation."
-msgstr ""
-
-#: toplev.c:1207
-msgid "Compile just for ISO C90"
-msgstr ""
-
-#: toplev.c:1209
-msgid "Determine language standard"
-msgstr ""
-
-#: toplev.c:1213
-msgid "Make bit-fields by unsigned by default"
-msgstr ""
-
-#: toplev.c:1217
-msgid "Make 'char' be signed by default"
-msgstr ""
-
-#: toplev.c:1219
-msgid "Make 'char' be unsigned by default"
-msgstr ""
-
-#: toplev.c:1225
-msgid "Do not recognize the 'asm' keyword"
-msgstr ""
-
-#: toplev.c:1228
-msgid "Do not recognize any built in functions"
-msgstr ""
-
-#: toplev.c:1230
-msgid "Assume normal C execution environment"
-msgstr ""
-
-#: toplev.c:1233
-msgid "Assume that standard libraries & main might not exist"
-msgstr ""
-
-#: toplev.c:1236
-msgid "Allow different types as args of ? operator"
-msgstr ""
-
-#: toplev.c:1239
-msgid "Allow the use of $ inside identifiers"
-msgstr ""
-
-#: toplev.c:1244
-msgid "Use the same size for double as for float"
-msgstr ""
-
-#: toplev.c:1247
-msgid "Use the smallest fitting integer to hold enums"
-msgstr ""
-
-#: toplev.c:1250
-msgid "Override the underlying type for wchar_t to `unsigned short'"
-msgstr ""
-
-#: toplev.c:1254
-msgid "Enable most warning messages"
-msgstr ""
-
-#: toplev.c:1256
-msgid "Warn about casting functions to incompatible types"
-msgstr ""
-
-#: toplev.c:1259
-msgid "Warn about functions which might be candidates for format attributes"
-msgstr ""
-
-#: toplev.c:1262
-msgid "Warn about casts which discard qualifiers"
-msgstr ""
-
-#: toplev.c:1265
-msgid "Warn about subscripts whose type is 'char'"
-msgstr ""
-
-#: toplev.c:1268 toplev.c:1271
-msgid "Warn if nested comments are detected"
-msgstr ""
-
-#: toplev.c:1274
-msgid "Warn about possibly confusing type conversions"
-msgstr ""
-
-#: toplev.c:1278
-msgid "Do not warn about compile-time integer division by zero"
-msgstr ""
-
-#: toplev.c:1280
-msgid "Warn about testing equality of floating point numbers"
-msgstr ""
-
-#: toplev.c:1283
-msgid "Warn about printf/scanf/strftime/strfmon format anomalies"
-msgstr ""
-
-#: toplev.c:1287
-msgid "Don't warn about too many arguments to format functions"
-msgstr ""
-
-#: toplev.c:1289
-msgid "Warn about non-string-literal format strings"
-msgstr ""
-
-#: toplev.c:1292
-msgid "Warn about possible security problems with format functions"
-msgstr ""
-
-#: toplev.c:1296
-msgid "Don't warn about strftime formats yielding 2 digit years"
-msgstr ""
-
-#: toplev.c:1298
-msgid "Warn about implicit function declarations"
-msgstr ""
-
-#: toplev.c:1302
-msgid "Warn when a declaration does not specify a type"
-msgstr ""
-
-#: toplev.c:1307
-msgid "Warn about the use of the #import directive"
-msgstr ""
-
-#: toplev.c:1311
-msgid "Do not warn about using 'long long' when -pedantic"
-msgstr ""
-
-#: toplev.c:1313
-msgid "Warn about suspicious declarations of main"
-msgstr ""
-
-#: toplev.c:1316
-msgid "Warn about possibly missing braces around initializers"
-msgstr ""
-
-#: toplev.c:1319
-msgid "Warn about global funcs without previous declarations"
-msgstr ""
-
-#: toplev.c:1322
-msgid "Warn about global funcs without prototypes"
-msgstr ""
-
-#: toplev.c:1325
-msgid "Warn about use of multicharacter literals"
-msgstr ""
-
-#: toplev.c:1328
-msgid "Warn about externs not at file scope level"
-msgstr ""
-
-#: toplev.c:1331
-msgid "Warn about possible missing parentheses"
-msgstr ""
-
-#: toplev.c:1334
-msgid "Warn about function pointer arithmetic"
-msgstr ""
-
-#: toplev.c:1337
-msgid "Warn about multiple declarations of the same object"
-msgstr ""
-
-#: toplev.c:1340
-msgid "Warn whenever a function's return-type defaults to int"
-msgstr ""
-
-#: toplev.c:1343
-msgid "Warn about possible violations of sequence point rules"
-msgstr ""
-
-#: toplev.c:1346
-msgid "Warn about signed/unsigned comparisons"
-msgstr ""
-
-#: toplev.c:1349
-msgid "Warn about non-prototyped function decls"
-msgstr ""
-
-#: toplev.c:1352
-msgid "Warn about constructs whose meanings change in ISO C"
-msgstr ""
-
-#: toplev.c:1355
-msgid "Warn when trigraphs are encountered"
-msgstr ""
-
-#: toplev.c:1360
-msgid "Warn about unrecognized pragmas"
-msgstr ""
-
-#: toplev.c:1363
-msgid "Mark strings as 'const char *'"
-msgstr ""
-
-#: toplev.c:1508
-msgid "Warn when a function is unused"
-msgstr ""
-
-#: toplev.c:1510
-msgid "Warn when a label is unused"
-msgstr ""
-
-#: toplev.c:1512
-msgid "Warn when a function parameter is unused"
-msgstr ""
-
-#: toplev.c:1514
-msgid "Warn when a variable is unused"
-msgstr ""
-
-#: toplev.c:1516
-msgid "Warn when an expression value is unused"
-msgstr ""
-
-#: toplev.c:1518
-msgid "Do not suppress warnings from system headers"
-msgstr ""
-
-#: toplev.c:1520
-msgid "Treat all warnings as errors"
-msgstr ""
-
-#: toplev.c:1522
-msgid "Warn when one local variable shadows another"
-msgstr ""
-
-#: toplev.c:1524
-msgid "Warn about enumerated switches, with no default, missing a case"
-msgstr ""
-
-#: toplev.c:1526
-msgid "Warn about enumerated switches missing a default case"
-msgstr ""
-
-#: toplev.c:1528
-msgid "Warn about all enumerated switches missing a specific case"
-msgstr ""
-
-#: toplev.c:1530
-msgid "Warn about returning structures, unions or arrays"
-msgstr ""
-
-#: toplev.c:1532
-msgid "Warn about pointer casts which increase alignment"
-msgstr ""
-
-#: toplev.c:1534
-msgid "Warn about code that will never be executed"
-msgstr ""
-
-#: toplev.c:1536
-msgid "Warn about uninitialized automatic variables"
-msgstr ""
-
-#: toplev.c:1538
-msgid "Warn when an inlined function cannot be inlined"
-msgstr ""
-
-#: toplev.c:1540
-msgid "Warn when the packed attribute has no effect on struct layout"
-msgstr ""
-
-#: toplev.c:1542
-msgid "Warn when padding is required to align struct members"
-msgstr ""
-
-#: toplev.c:1544
-msgid "Warn when an optimization pass is disabled"
-msgstr ""
-
-#: toplev.c:1546
-msgid "Warn about uses of __attribute__((deprecated)) declarations"
-msgstr ""
-
-#: toplev.c:1548
-msgid "Warn about functions which might be candidates for attribute noreturn"
-msgstr ""
-
-#: toplev.c:1550
-msgid "Warn about code which might break the strict aliasing rules"
-msgstr ""
+msgstr "ld gab %d als Ende-Status zurück"
-#: toplev.c:1627 toplev.c:4548 config/rs6000/rs6000.c:680
+#: toplev.c:1226
#, c-format
-msgid "invalid option `%s'"
-msgstr "ungültige Option »%s«"
+msgid "%s "
+msgstr "%s "
-#: toplev.c:2031
+#: toplev.c:1228
#, c-format
-msgid "`%s' used but never defined"
-msgstr "»%s« verwendet, aber nirgendwo definiert"
+msgid " %s"
+msgstr " %s"
-#: toplev.c:2034
+#: toplev.c:1293
#, c-format
-msgid "`%s' declared `static' but never defined"
-msgstr "»%s« als »static« deklariert, aber nirgendwo definiert"
+msgid "invalid option argument `%s'"
+msgstr "ungültiges Optionsargument »%s«"
-#: toplev.c:2057
+#: toplev.c:1356
#, c-format
-msgid "`%s' defined but not used"
-msgstr "»%s« definiert, aber nicht verwendet"
+msgid "getting core file size maximum limit: %m"
+msgstr "Kern-Dateigrößenlimit wird geholt: %m"
-#: toplev.c:2280
+#: toplev.c:1359
#, c-format
-msgid "invalid register name `%s' for register variable"
-msgstr ""
-
-#: toplev.c:3697
-msgid " -ffixed-<register> Mark <register> as being unavailable to the compiler\n"
-msgstr ""
-
-#: toplev.c:3698
-msgid " -fcall-used-<register> Mark <register> as being corrupted by function calls\n"
-msgstr ""
-
-#: toplev.c:3699
-msgid " -fcall-saved-<register> Mark <register> as being preserved across functions\n"
-msgstr ""
-
-#: toplev.c:3700
-msgid " -finline-limit=<number> Limits the size of inlined functions to <number>\n"
-msgstr ""
-
-#: toplev.c:3701
-msgid " -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line. 0 suppresses line-wrapping\n"
-msgstr ""
-
-#: toplev.c:3702
-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:3703
-msgid " -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indicates the default thread-local storage code generation model\n"
-msgstr ""
-
-#: toplev.c:3704
-msgid " -fstack-limit-register=<register> Trap if the stack goes past <register>\n"
-msgstr ""
-
-#: toplev.c:3705
-msgid " -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>\n"
-msgstr ""
-
-#: toplev.c:3706
-msgid " -frandom-seed=<string> Make compile reproducible using <string>\n"
-msgstr ""
-
-#: toplev.c:3718
-msgid " -O[number] Set optimization level to [number]\n"
-msgstr ""
-
-#: toplev.c:3719
-msgid " -Os Optimize for space rather than speed\n"
-msgstr ""
-
-#: toplev.c:3731
-msgid " -pedantic Issue warnings needed by strict compliance to ISO C\n"
-msgstr ""
-
-#: toplev.c:3732
-msgid " -pedantic-errors Like -pedantic except that errors are produced\n"
-msgstr ""
-
-#: toplev.c:3733
-msgid " -w Suppress warnings\n"
-msgstr ""
-
-#: toplev.c:3734
-msgid " -W Enable extra warnings\n"
-msgstr ""
-
-#: toplev.c:3745
-msgid " -Wunused Enable unused warnings\n"
-msgstr ""
-
-#: toplev.c:3746
-msgid " -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"
-msgstr ""
-
-#: toplev.c:3747
-msgid " -p Enable function profiling\n"
-msgstr ""
-
-#: toplev.c:3748
-msgid " -o <file> Place output into <file> \n"
-msgstr ""
+msgid "setting core file size limit to maximum: %m"
+msgstr "Kern-Dateigrößenlimit wird gesetzt: %m"
-#: toplev.c:3749
-msgid ""
-" -G <number> Put global and static data smaller than <number>\n"
-" bytes into a special section (on some targets)\n"
-msgstr ""
-
-#: toplev.c:3760
-msgid " -aux-info <file> Emit declaration info into <file>\n"
-msgstr ""
+#: toplev.c:1678
+msgid "%J'%F' used but never defined"
+msgstr "%J»%F« verwendet, aber nirgendwo definiert"
-#: toplev.c:3761
-msgid " -quiet Do not display functions compiled or elapsed time\n"
-msgstr ""
+#: toplev.c:1680
+msgid "%J'%F' declared `static' but never defined"
+msgstr "%J»%F« als »static« deklariert, aber nirgendwo definiert"
-#: toplev.c:3762
-msgid " -version Display the compiler's version\n"
-msgstr ""
+#: toplev.c:1705
+msgid "%J'%D' defined but not used"
+msgstr "%J»%D« definiert, aber nicht verwendet"
-#: toplev.c:3763
-msgid " -d[letters] Enable dumps from specific passes of the compiler\n"
-msgstr ""
-
-#: toplev.c:3764
-msgid " -dumpbase <file> Base name to be used for dumps from specific passes\n"
-msgstr ""
+#: toplev.c:1726 toplev.c:1743
+#, c-format
+msgid "`%s' is deprecated (declared at %s:%d)"
+msgstr "»%s« ist veraltet (deklariert bei %s:%d)"
-#: toplev.c:3766
-msgid " -fsched-verbose=<number> Set the verbosity level of the scheduler\n"
-msgstr ""
+#: toplev.c:1746
+#, c-format
+msgid "`%s' is deprecated"
+msgstr "»%s« ist veraltet"
-#: toplev.c:3768
-msgid " --help Display this information\n"
-msgstr ""
+#: toplev.c:1749
+#, c-format
+msgid "type is deprecated (declared at %s:%d)"
+msgstr "Typ ist veraltet (in %s:%d deklariert)"
-#: toplev.c:3783
-msgid ""
-"\n"
-"Language specific options:\n"
-msgstr ""
+#: toplev.c:1752
+msgid "type is deprecated"
+msgstr "Typ ist veraltet"
-#: toplev.c:3795
+#: toplev.c:1956
#, c-format
-msgid " %-23.23s [undocumented]\n"
-msgstr ""
+msgid "invalid register name `%s' for register variable"
+msgstr "ungültiger Registername »%s« für Registervariable"
-#: toplev.c:3803 toplev.c:3817
-#, c-format
-msgid ""
-"\n"
-"There are undocumented %s specific options as well.\n"
-msgstr ""
+#: toplev.c:3522
+msgid "branch target register load optimization is not intended to be run twice"
+msgstr "Ladeoptimierung für Zweig-Zielregister ist nicht dafür vorgesehen, mehrfach zu laufen"
-#: toplev.c:3807
+#: toplev.c:3689
#, c-format
msgid ""
"\n"
-" Options for %s:\n"
-msgstr ""
-
-#: toplev.c:3844
-msgid ""
-"\n"
"Target specific options:\n"
msgstr ""
+"\n"
+"Zielspezifische Optionen:\n"
-#: toplev.c:3858 toplev.c:3877
+#: toplev.c:3703 toplev.c:3722
#, c-format
-msgid " -m%-23.23s [undocumented]\n"
-msgstr ""
+msgid " -m%-23s [undocumented]\n"
+msgstr " -m%-23s [undokumentiert]\n"
-#: toplev.c:3886
+#: toplev.c:3731
+#, c-format
msgid ""
"\n"
"There are undocumented target specific options as well.\n"
msgstr ""
+"\n"
+"Es gibt auch undokumentierte zielspezifische Optionen.\n"
-#: toplev.c:3888
+#: toplev.c:3733
+#, c-format
msgid " They exist, but they are not documented.\n"
-msgstr ""
+msgstr " Es gibt sie, aber sie sind nicht dokumentiert.\n"
-#: toplev.c:3941
+#: toplev.c:3788
#, c-format
msgid "unrecognized gcc debugging option: %c"
-msgstr ""
-
-#: toplev.c:4007
-#, c-format
-msgid "`%s': unknown tls-model option"
-msgstr ""
-
-#: toplev.c:4034
-#, c-format
-msgid "unrecognized register name `%s'"
-msgstr ""
-
-#: toplev.c:4059 toplev.c:5012
-#, c-format
-msgid "unrecognized option `%s'"
-msgstr ""
-
-#: toplev.c:4107
-msgid "-Wid-clash-LEN is no longer supported"
-msgstr ""
-
-#: toplev.c:4184
-#, c-format
-msgid "use -gdwarf -g%d for DWARF v1, level %d"
-msgstr ""
-
-#: toplev.c:4187
-msgid "use -gdwarf-2 for DWARF v2"
-msgstr ""
-
-#: toplev.c:4192
-#, c-format
-msgid "ignoring option `%s' due to invalid debug level specification"
-msgstr ""
-
-#: toplev.c:4215 toplev.c:5010
-#, c-format
-msgid "`%s': unknown or unsupported -g option"
-msgstr ""
-
-#: toplev.c:4222
-#, c-format
-msgid "`%s' ignored, conflicts with `-g%s'"
-msgstr ""
-
-#: toplev.c:4304
-msgid "-param option missing argument"
-msgstr ""
-
-#: toplev.c:4313
-#, c-format
-msgid "invalid --param option: %s"
-msgstr ""
+msgstr "gcc-Debuggingoption nicht erkannt: %c"
-#: toplev.c:4325
+#: toplev.c:3850 config/rs6000/rs6000.c:909
#, c-format
-msgid "invalid parameter value `%s'"
-msgstr ""
+msgid "invalid option `%s'"
+msgstr "ungültige Option »%s«"
-#: toplev.c:4565
+#: toplev.c:3865
#, c-format
msgid ""
"%s%s%s version %s (%s)\n"
"%s\tcompiled by GNU C version %s.\n"
"%s%s%s version %s (%s) compiled by CC.\n"
msgstr ""
+"%s%s%s Version %s (%s)\n"
+"%s\tkompiliert von GNU-C-Version %s.\n"
+"%s%s%s Version %s (%s) kompiliert von CC.\n"
-#: toplev.c:4572
+#: toplev.c:3872
#, c-format
msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
-msgstr ""
+msgstr "%s%sGGC-Heuristik: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
-#: toplev.c:4630
+#: toplev.c:3924
msgid "options passed: "
-msgstr ""
+msgstr "angegebene Optionen: "
-#: toplev.c:4659
+#: toplev.c:3953
msgid "options enabled: "
-msgstr ""
+msgstr "angeschaltete Optionen: "
-#: toplev.c:4718 java/jcf-write.c:3453
+#: toplev.c:4011 java/jcf-write.c:3422
#, c-format
-msgid "can't open %s for writing"
-msgstr ""
+msgid "can't open %s for writing: %m"
+msgstr "Datei »%s« kann nicht zum Schreiben geöffnet werden: %m"
-#: toplev.c:5002
-#, c-format
-msgid "ignoring command line option '%s'"
-msgstr ""
+#: toplev.c:4094 config/sh/sh.c:6883
+msgid "created and used with different settings of -fpic"
+msgstr "erzeugt und mit anderen Einstellungen von -fpic verwendet"
+
+#: toplev.c:4096 config/sh/sh.c:6885
+msgid "created and used with different settings of -fpie"
+msgstr "erzeugt und mit anderen Einstellungen von -fpie verwendet"
-#: toplev.c:5005
+#: toplev.c:4147 config/sh/sh.c:6935
#, c-format
-msgid "(it is valid for %s but not the selected language)"
-msgstr ""
+msgid "created and used with differing settings of `-m%s'"
+msgstr "erzeugt und mit anderen Einstellungen von »-m%s« verwendet"
-#: toplev.c:5039
-msgid "-Wuninitialized is not supported without -O"
-msgstr ""
+#: toplev.c:4150 config/sh/sh.c:6938
+msgid "out of memory"
+msgstr "Platz im Hauptspeicher reicht nicht aus"
-#: toplev.c:5094
+#: toplev.c:4331
msgid "instruction scheduling not supported on this target machine"
-msgstr ""
+msgstr "Befehlsplanung wird von dieser Zielmaschine nicht unterstützt"
-#: toplev.c:5098
+#: toplev.c:4335
msgid "this target machine does not have delayed branches"
-msgstr ""
+msgstr "diese Zielmaschine hat keine verzögerten Zweige"
-#: toplev.c:5112
+#: toplev.c:4349
#, c-format
msgid "-f%sleading-underscore not supported on this target machine"
-msgstr ""
+msgstr "-f%sleading-underscore wird auf dieser Zielmaschine nicht unterstützt"
+
+#: toplev.c:4398
+#, c-format
+msgid "target system does not support the \"%s\" debug format"
+msgstr "Zielsystem unterstützt nicht das Testformat \"%s\""
-#: toplev.c:5175
+#: toplev.c:4415
msgid "-ffunction-sections not supported for this target"
-msgstr ""
+msgstr "-ffunction-sections wird für dieses Ziel nicht unterstützt"
-#: toplev.c:5180
+#: toplev.c:4420
msgid "-fdata-sections not supported for this target"
-msgstr ""
+msgstr "-fdata-sections wird für dieses Ziel nicht unterstützt"
-#: toplev.c:5187
+#: toplev.c:4427
msgid "-ffunction-sections disabled; it makes profiling impossible"
-msgstr ""
+msgstr "-ffunction-sections ausgeschaltet; das macht Profiling unmöglich"
-#: toplev.c:5194
+#: toplev.c:4434
msgid "-fprefetch-loop-arrays not supported for this target"
-msgstr ""
+msgstr "-fprefetch-loop-arrays wird für dieses Ziel nicht unterstützt"
-#: toplev.c:5200
+#: toplev.c:4440
msgid "-fprefetch-loop-arrays not supported for this target (try -march switches)"
-msgstr ""
+msgstr "-fprefetch-loop-arrays wird für dieses Ziel nicht unterstützt (versuchen Sie die »-march«-Schalter)"
-#: toplev.c:5209
+#: toplev.c:4449
msgid "-fprefetch-loop-arrays is not supported with -Os"
-msgstr ""
+msgstr "-fprefetch-loop-arrays wird nicht mit -Os unterstützt"
-#: toplev.c:5215
+#: toplev.c:4455
msgid "-ffunction-sections may affect debugging on some targets"
-msgstr ""
+msgstr "-ffunction-sections kann für verschiedene Ziele die Fehlersuche beeinträchtigen"
-#: toplev.c:5327
+#: toplev.c:4557
#, c-format
-msgid "error writing to %s"
-msgstr ""
+msgid "error writing to %s: %m"
+msgstr "Fehler beim Schreiben der Datei %s: %m"
-#: toplev.c:5329 java/jcf-parse.c:936 java/jcf-write.c:3460
+#: toplev.c:4559 java/jcf-parse.c:902 java/jcf-write.c:3429
#, c-format
-msgid "error closing %s"
-msgstr ""
+msgid "error closing %s: %m"
+msgstr "Fehler beim Schließen von %s: %m"
-#: tree-dump.c:702
+#: tree-dump.c:692
#, c-format
msgid "could not open dump file `%s'"
-msgstr ""
+msgstr "Abzugsdatei »%s« konnte nicht geöffnet werden"
-#: tree-dump.c:778
+#: tree-dump.c:763
#, c-format
-msgid "ignoring unknown option `%.*s' in `-f%s'"
-msgstr ""
+msgid "ignoring unknown option `%.*s' in `-fdump-%s'"
+msgstr "unbekannte Option »%.*s« in »-fdump-%s« wird ignoriert"
+
+#: tree-inline.c:1016
+msgid "%Jfunction '%F' can never be inlined because it uses alloca (override using the always_inline attribute)"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie alloca verwendet (zum Aufheben: Attribut »always_inline« verwenden)"
+
+#: tree-inline.c:1029
+msgid "%Jfunction '%F' can never be inlined because it uses setjmp"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie setjmp verwendet"
+
+#: tree-inline.c:1044
+msgid "%Jfunction '%F' can never be inlined because it uses variable argument lists"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie eine variable Argumentliste verwendet"
+
+#: tree-inline.c:1060
+msgid "%Jfunction '%F' can never be inlined because it uses setjmp-longjmp exception handling"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie »setjmp-longjmp«-Ausnahmebehandlung verwendet"
+
+#: tree-inline.c:1078
+msgid "%Jfunction '%F' can never be inlined because it contains a nested function"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie eine geschachtelte Funktion enthält"
+
+#: tree-inline.c:1095
+msgid "%Jfunction '%F' can never be inlined because it contains a computed goto"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie ein berechnetes »goto« enthält"
+
+#: tree-inline.c:1105
+msgid "%Jfunction '%F' can never be inlined because it contains a nonlocal goto"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie ein nichtlokales »goto« enthält"
+
+#: tree-inline.c:1128
+msgid "%Jfunction '%F' can never be inlined because it uses variable sized variables"
+msgstr "%Jdie Funktion »%F« kann nie »inline« sein, da sie Variablen variabler Größe verwendet"
+
+#: tree-inline.c:1338 tree-inline.c:1345
+msgid "%Jinlining failed in call to '%F': %s"
+msgstr "%J»inline« beim Aufruf von »%F« gescheitert: %s"
+
+#: tree-optimize.c:190
+msgid "%Jsize of return value of '%D' is %u bytes"
+msgstr "%JGröße des Rückgabewertes von »%D« ist %u Bytes"
+
+#: tree-optimize.c:193
+msgid "%Jsize of return value of '%D' is larger than %wd bytes"
+msgstr "%JGröße des Rückgabewertes von »%D« ist größer als %wd Bytes"
-#: tree.c:3645
+#: tree.c:3800
msgid "arrays of functions are not meaningful"
-msgstr ""
+msgstr "Felder von Funktionen sind sinnlos"
-#: tree.c:3702
+#: tree.c:3855
msgid "function return type cannot be function"
-msgstr ""
+msgstr "Rückgabetyp der Funktion kann keine Funktion sein"
-#: tree.c:4557
+#: tree.c:4684
msgid "invalid initializer for bit string"
-msgstr ""
+msgstr "ungültige Initialisierung für Bitstring"
-#: tree.c:4616
+#: tree.c:4736
#, c-format
msgid "tree check: expected %s, have %s in %s, at %s:%d"
-msgstr ""
+msgstr "Baumprüfung: %s erwartet, haben %s in %s, bei %s:%d"
-#: tree.c:4633
+#: tree.c:4749
#, c-format
msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
-msgstr ""
+msgstr "Baumprüfung: Klasse %c erwartet, haben '%c' (%s) in %s, bei %s:%d"
-#: tree.c:4650
+#: tree.c:4762
#, c-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
-msgstr ""
+msgstr "Baumprüfung: auf Elt %d von tree_vec mit %d Elts in %s bei %s:%d zugegriffen"
-#: varasm.c:455 config/i386/winnt.c:611
+#: tree.c:4774
#, c-format
-msgid "%s causes a section type conflict"
-msgstr ""
+msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
+msgstr "Baumprüfung: auf Operand %d von %s mit %d Operanden in %s bei %s:%d zugegriffen"
-#: varasm.c:841
-#, c-format
-msgid "register name not specified for `%s'"
-msgstr ""
+#: varasm.c:434
+msgid "%J%D causes a section type conflict"
+msgstr "%J%D löst einen Abschnittstypkonflikt aus"
-#: varasm.c:843
-#, c-format
-msgid "invalid register name for `%s'"
-msgstr ""
+#: varasm.c:796
+msgid "%Jregister name not specified for '%D'"
+msgstr "%Jfür »%D« wurde kein Registername angegeben"
-#: varasm.c:846
-#, c-format
-msgid "data type of `%s' isn't suitable for a register"
-msgstr ""
+#: varasm.c:798
+msgid "%Jinvalid register name for '%D'"
+msgstr "%Jungültiger Registername für »%D«"
-#: varasm.c:849
-#, c-format
-msgid "register specified for `%s' isn't suitable for data type"
-msgstr ""
+#: varasm.c:800
+msgid "%Jdata type of '%D' isn't suitable for a register"
+msgstr "%JDatentyp von »%D« eignet sich nicht für Register"
+
+#: varasm.c:803
+msgid "%Jregister specified for '%D' isn't suitable for data type"
+msgstr "%Jfür »%D« angegebenes Register eignet sich nicht für Datentyp"
-#: varasm.c:858
+#: varasm.c:813
msgid "global register variable has initial value"
-msgstr ""
+msgstr "globle Registervariable hat Anfangswert"
-#: varasm.c:861
+#: varasm.c:816
msgid "volatile register variables don't work as you might wish"
-msgstr ""
+msgstr "»volatile«-Registervariablen funktionieren oft nicht so wie erhofft"
-#: varasm.c:894
-#, c-format
-msgid "register name given for non-register variable `%s'"
-msgstr ""
+#: varasm.c:848
+msgid "%Jregister name given for non-register variable '%D'"
+msgstr "%JRegistername für Nicht-Registervariable »%D« verwendet"
-#: varasm.c:1542
-#, c-format
-msgid "alignment of `%s' is greater than maximum object file alignment. Using %d"
-msgstr ""
+#: varasm.c:1380
+msgid "%Jstorage size of `%D' isn't known"
+msgstr "%JSpeichergröße von »%D« ist unbekannt"
-#: varasm.c:1584
+#: varasm.c:1434
+msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
+msgstr "%JAusrichtung von »%D ist größer als maximale Objektdateiausrichtung. %d verwendet«"
+
+#: varasm.c:1480
msgid "thread-local COMMON data not implemented"
-msgstr ""
+msgstr "Thread-lokale COMMON-Daten nicht implementiert"
-#: varasm.c:1610
-#, c-format
-msgid "requested alignment for %s is greater than implemented alignment of %d"
-msgstr ""
+#: varasm.c:1505
+msgid "%Jrequested alignment for '%D' is greater than implemented alignment of %d"
+msgstr "%Jangeforderte Ausrichtung für »%D« ist größer als die implementierte Ausrichtung von %d"
-#: varasm.c:4048
+#: varasm.c:3787
msgid "initializer for integer value is too complicated"
-msgstr ""
+msgstr "Initialisierung für Ganzzahlwert ist zu kompliziert"
-#: varasm.c:4053
+#: varasm.c:3792
msgid "initializer for floating value is not a floating constant"
-msgstr ""
+msgstr "Initialisierung für Gleitkommawert ist keine Gleitkommakonstante"
-#: varasm.c:4120
+#: varasm.c:3858
msgid "unknown set constructor type"
-msgstr ""
+msgstr "unbekannter Mengenkonstruktortyp"
-#: varasm.c:4334
+#: varasm.c:4077
#, c-format
msgid "invalid initial value for member `%s'"
-msgstr ""
+msgstr "ungültiger Anfangswert für Element »%s«"
-#: varasm.c:4525 varasm.c:4568
-#, c-format
-msgid "weak declaration of `%s' must precede definition"
-msgstr ""
+#: varasm.c:4264 varasm.c:4308
+msgid "%Jweak declaration of '%D' must precede definition"
+msgstr "%Jschwache Deklaration von »%D« muss der Definition vorangehen"
-#: varasm.c:4532
-#, c-format
-msgid "weak declaration of `%s' after first use results in unspecified behavior"
-msgstr ""
+#: varasm.c:4272
+msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
+msgstr "%Jschwache Deklaration von »%D« nach erster Benutzung führt zu undefiniertem Verhalten"
-#: varasm.c:4566
-#, c-format
-msgid "weak declaration of `%s' must be public"
-msgstr ""
+#: varasm.c:4306
+msgid "%Jweak declaration of '%D' must be public"
+msgstr "%Jschwache Deklaration von »%D« muss öffentlich sein"
-#: varasm.c:4575
-#, c-format
-msgid "weak declaration of `%s' not supported"
-msgstr ""
+#: varasm.c:4315
+msgid "%Jweak declaration of '%D' not supported"
+msgstr "%Jschwache Deklaration von »%D« wird nicht unterstützt"
-#: varasm.c:4602 varasm.c:4677
+#: varasm.c:4344 varasm.c:4434
msgid "only weak aliases are supported in this configuration"
-msgstr ""
+msgstr "in dieser Konfiguration werden nur schwache Aliase unterstützt"
-#: varasm.c:4685
+#: varasm.c:4437
msgid "alias definitions not supported in this configuration; ignored"
-msgstr ""
+msgstr "Alias-Definitionen werden in dieser Konfiguration nicht unterstützt; ignoriert"
-#: varasm.c:4716
+#: varasm.c:4466
msgid "visibility attribute not supported in this configuration; ignored"
-msgstr ""
+msgstr "Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstützt; ignoriert"
-#: varray.c:134
+#: varray.c:194
#, c-format
msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
-msgstr ""
+msgstr "virtuelles Feld %s[%lu]: Element %lu außerhalb der Grenzen in %s, bei %s:%d"
+
+#: varray.c:204
+#, c-format
+msgid "underflowed virtual array %s in %s, at %s:%d"
+msgstr "Unterlauf im virtuellen Feld %s in %s bei %s:%d"
#. Print an error message for unrecognized stab codes.
-#: xcoffout.c:175
+#: xcoffout.c:173
#, c-format
msgid "no sclass for %s stab (0x%x)\n"
-msgstr ""
+msgstr "kein »sclass« für %s Stab (0x%x)\n"
-#: pretty-print.h:97
-#, c-format
-msgid "#`%s' not supported by %s#"
-msgstr "#»%s« wird von %s# nicht unterstützt"
+#.
+#. Local variables:
+#. mode:c
+#. End:
+#.
+#: diagnostic.def:1
+msgid "fatal error: "
+msgstr "schwerwiegender Fehler: "
+
+#: diagnostic.def:2
+msgid "internal compiler error: "
+msgstr "interner Compiler-Fehler: "
+
+#: diagnostic.def:3
+msgid "error: "
+msgstr "Fehler: "
+
+#: diagnostic.def:4
+msgid "sorry, unimplemented: "
+msgstr "nicht implementiert: "
+
+#: diagnostic.def:6
+msgid "anachronism: "
+msgstr "Anachronismus: "
+
+#: diagnostic.def:7
+msgid "note: "
+msgstr "Anmerkung: "
+
+#: diagnostic.def:8
+msgid "debug: "
+msgstr "zur Fehlersuche: "
#: params.def:53
msgid "The maximum number of instructions in a single function eligible for inlining"
-msgstr ""
+msgstr "Die Höchstzahl der Anweisungen in einer einzelnen für »inline« geeigneten Funktion"
#: params.def:65
msgid "The maximum number of instructions when automatically inlining"
-msgstr ""
-
-#: params.def:84
-msgid "The maximum number of instructions by repeated inlining before gcc starts to throttle inlining"
-msgstr ""
-
-#: params.def:97
-msgid "The slope of the linear function throttling inlining after the recursive inlining limit has been reached is given by the negative reciprocal value of this parameter"
-msgstr ""
+msgstr "Die Höchstzahl der Anweisungen für automatisches »inline«"
-#: params.def:110
-msgid "The number of instructions in a single functions still eligible to inlining after a lot recursive inlining"
-msgstr ""
-
-#: params.def:120
+#: params.def:75
msgid "The maximum number of instructions for the RTL inliner"
-msgstr ""
+msgstr "Die Höchstzahl der Anweisungen für RTL »inline«"
-#: params.def:131
+#: params.def:86
msgid "The maximum number of instructions to consider to fill a delay slot"
-msgstr ""
+msgstr "Die Höchstzahl der zu betrachtenden Anweisungen um Verzögerungsschlitz zu füllen"
-#: params.def:142
+#: params.def:97
msgid "The maximum number of instructions to consider to find accurate live register information"
-msgstr ""
+msgstr "Die Höchstzahl der zu betrachtenden Anweisungen um richtige aktive Registerinformationen zu finden"
-#: params.def:152
+#: params.def:107
msgid "The maximum length of scheduling's pending operations list"
-msgstr ""
+msgstr "Die Maximallänge der Liste der anhängigen geplanten Operationen"
-#: params.def:159
+#: params.def:112
+msgid "The size of function body to be considered large"
+msgstr "Die Größe eines als groß angesehenen Funktionskörpers"
+
+#: params.def:116
+msgid "Maximal growth due to inlining of large function (in percent)"
+msgstr "Maximales Wachstum durch »inline« einer großen Funktion (in Prozent)"
+
+#: params.def:120
+msgid "how much can given compilation unit grow because of the inlining (in percent)"
+msgstr "um wie viel eine Übersetzungseinheit durch »inline« wachsen kann (in Prozent)"
+
+#: params.def:127
msgid "The maximum amount of memory to be allocated by GCSE"
-msgstr ""
+msgstr "Maximalbetrag des von GCSE zu belegenden Speichers"
-#: params.def:164
+#: params.def:132
msgid "The maximum number of passes to make when doing GCSE"
-msgstr ""
+msgstr "Die Höchstzahl der Durchläufe für GCSE"
-#: params.def:171
+#: params.def:139
msgid "The maximum number of instructions to consider to unroll in a loop"
+msgstr "Die Höchstzahl der zum Aufrollen von Schleifen zu betrachtenden Anweisungen"
+
+#: params.def:145
+msgid "The maximum number of instructions to consider to unroll in a loop on average"
+msgstr "Die Höchstzahl der zum Aufrollen von Schleifen im Mittel zu betrachtenden Anweisungen"
+
+#: params.def:150
+msgid "The maximum number of unrollings of a single loop"
+msgstr "Die Höchstzahl der Iterationen zum Aufrollen in einzelner Schleife"
+
+#: params.def:155
+msgid "The maximum number of insns of a peeled loop"
+msgstr "Die Höchstzahl der insns einer geschälten Schleife"
+
+#: params.def:160
+msgid "The maximum number of peelings of a single loop"
+msgstr "Die Höchstzahl der Schälvorgänge einer einzelnen Schleife"
+
+#: params.def:165
+msgid "The maximum number of insns of a completely peeled loop"
+msgstr "Die Höchstzahl der insns einer vollständig geschälten Schleife"
+
+#: params.def:170
+msgid "The maximum number of peelings of a single loop that is peeled completely"
+msgstr "Die Höchstzahl der Schälvorgänge einer einzelnen Schleife, die vollständig geschält wird"
+
+#: params.def:175
+msgid "The maximum number of insns of a peeled loop that rolls only once"
+msgstr "Die Höchstzahl der insns einer geschälten Schleife, die nur einmal rollt"
+
+#: params.def:181
+msgid "The maximum number of insns of an unswitched loop"
msgstr ""
-#: params.def:176
+#: params.def:186
+msgid "The maximum number of unswitchings in a single loop"
+msgstr ""
+
+#: params.def:191
msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
msgstr ""
-#: params.def:181
+#: params.def:196
msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot"
msgstr ""
-#: params.def:186
+#: params.def:201
msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
msgstr ""
-#: params.def:191
+#: params.def:206
msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
msgstr ""
-#: params.def:196
-msgid "Maximal code growth caused by tail duplication (in percents)"
+#: params.def:211
+msgid "Maximal code growth caused by tail duplication (in percent)"
msgstr ""
-#: params.def:200
-msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percents)"
+#: params.def:215
+msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)"
msgstr ""
-#: params.def:205
-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is available"
+#: params.def:220
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available"
msgstr ""
-#: params.def:210
-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is not available"
+#: params.def:225
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available"
msgstr ""
-#: params.def:217
+#: params.def:232
msgid "The maximum number of incoming edges to consider for crossjumping"
msgstr ""
-#: params.def:230
-msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap."
+#: params.def:238
+msgid "The maximum length of path considered in cse"
+msgstr ""
+
+#: params.def:243
+msgid "The maximum memory locations recorded by cselib"
+msgstr ""
+
+#: params.def:256
+msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap"
+msgstr ""
+
+#: params.def:262
+msgid "Minimum heap size before we start collecting garbage, in kilobytes"
msgstr ""
-#: params.def:236
-msgid "Minimum heap size before we start collecting garbage, in kilobytes."
+#: params.def:270
+msgid "The maximum number of instructions to search backward when looking for equivalent reload"
msgstr ""
#: config/darwin-c.c:75
msgid "too many #pragma options align=reset"
msgstr ""
-#: config/darwin-c.c:97 config/darwin-c.c:100 config/darwin-c.c:102
-#: config/darwin-c.c:104
+#: config/darwin-c.c:95 config/darwin-c.c:98 config/darwin-c.c:100
+#: config/darwin-c.c:102
msgid "malformed '#pragma options', ignoring"
msgstr ""
-#: config/darwin-c.c:107
+#: config/darwin-c.c:105
msgid "junk at end of '#pragma options'"
msgstr ""
-#: config/darwin-c.c:117
+#: config/darwin-c.c:115
msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
msgstr ""
-#: config/darwin-c.c:130
+#: config/darwin-c.c:127
msgid "missing '(' after '#pragma unused', ignoring"
msgstr ""
-#: config/darwin-c.c:148
+#: config/darwin-c.c:145
msgid "missing ')' after '#pragma unused', ignoring"
msgstr ""
-#: config/darwin-c.c:151
+#: config/darwin-c.c:148
msgid "junk at end of '#pragma unused'"
msgstr ""
-#: config/lynx-ng.h:97 config/lynx.h:121 config/rs6000/lynx.h:100
+#: config/darwin.c:1347
+msgid "internal and protected visibility attributes not supportedin this configuration; ignored"
+msgstr ""
+
+#: config/lynx-ng.h:97 config/lynx.h:116 config/rs6000/lynx.h:73
msgid "-msystem-v and -p are incompatible"
msgstr ""
-#: config/lynx-ng.h:99 config/lynx.h:123 config/rs6000/lynx.h:102
+#: config/lynx-ng.h:99 config/lynx.h:118 config/rs6000/lynx.h:75
msgid "-msystem-v and -mthreads are incompatible"
msgstr ""
-#: config/alpha/alpha.c:342
+#: config/windiss.h:37
+msgid "profiler support for WindISS"
+msgstr ""
+
+#: config/alpha/alpha.c:231
#, c-format
msgid "-f%s ignored for Unicos/Mk (not supported)"
msgstr ""
-#: config/alpha/alpha.c:366
+#: config/alpha/alpha.c:255
msgid "-mieee not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:377
+#: config/alpha/alpha.c:266
msgid "-mieee-with-inexact not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:394
+#: config/alpha/alpha.c:283
#, c-format
msgid "bad value `%s' for -mtrap-precision switch"
msgstr ""
-#: config/alpha/alpha.c:408
+#: config/alpha/alpha.c:297
#, c-format
msgid "bad value `%s' for -mfp-rounding-mode switch"
msgstr ""
-#: config/alpha/alpha.c:423
+#: config/alpha/alpha.c:312
#, c-format
msgid "bad value `%s' for -mfp-trap-mode switch"
msgstr ""
-#: config/alpha/alpha.c:435
+#: config/alpha/alpha.c:324 config/rs6000/rs6000.c:1063
#, c-format
msgid "bad value `%s' for -mtls-size switch"
msgstr ""
-#: config/alpha/alpha.c:454 config/alpha/alpha.c:466
+#: config/alpha/alpha.c:343 config/alpha/alpha.c:355
#, c-format
msgid "bad value `%s' for -mcpu switch"
msgstr ""
-#: config/alpha/alpha.c:473
+#: config/alpha/alpha.c:362
msgid "trap mode not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:480
+#: config/alpha/alpha.c:369
msgid "fp software completion requires -mtrap-precision=i"
msgstr ""
-#: config/alpha/alpha.c:496
+#: config/alpha/alpha.c:385
msgid "rounding mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:501
+#: config/alpha/alpha.c:390
msgid "trap mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:530
+#: config/alpha/alpha.c:419
#, c-format
msgid "L%d cache latency unknown for %s"
msgstr ""
-#: config/alpha/alpha.c:545
+#: config/alpha/alpha.c:434
#, c-format
msgid "bad value `%s' for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:5604 config/m88k/m88k.c:2889 config/romp/romp.c:754
-#: config/romp/romp.c:761
+#: config/alpha/alpha.c:5411
#, c-format
msgid "invalid %%H value"
msgstr ""
-#: config/alpha/alpha.c:5625
+#: config/alpha/alpha.c:5432
#, c-format
msgid "invalid %%J value"
msgstr ""
-#: config/alpha/alpha.c:5641 config/ia64/ia64.c:3970 config/m88k/m88k.c:3034
+#: config/alpha/alpha.c:5448 config/ia64/ia64.c:4243
#, c-format
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:5651 config/rs6000/rs6000.c:7737
+#: config/alpha/alpha.c:5458 config/rs6000/rs6000.c:8944
+#: config/xtensa/xtensa.c:1999
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5657 config/rs6000/rs6000.c:7663
+#: config/alpha/alpha.c:5464 config/rs6000/rs6000.c:8863
+#: config/xtensa/xtensa.c:1966
#, c-format
msgid "invalid %%N value"
msgstr ""
-#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:7691
+#: config/alpha/alpha.c:5472 config/rs6000/rs6000.c:8891
#, c-format
msgid "invalid %%P value"
msgstr ""
-#: config/alpha/alpha.c:5673 config/m88k/m88k.c:2895 config/romp/romp.c:740
-#: config/romp/romp.c:747
+#: config/alpha/alpha.c:5480
#, c-format
msgid "invalid %%h value"
msgstr ""
-#: config/alpha/alpha.c:5681 config/romp/romp.c:698
+#: config/alpha/alpha.c:5488 config/xtensa/xtensa.c:1992
#, c-format
msgid "invalid %%L value"
msgstr ""
-#: config/alpha/alpha.c:5720 config/rs6000/rs6000.c:7645
+#: config/alpha/alpha.c:5527 config/rs6000/rs6000.c:8845
#, c-format
msgid "invalid %%m value"
msgstr ""
-#: config/alpha/alpha.c:5728 config/rs6000/rs6000.c:7653
+#: config/alpha/alpha.c:5535 config/rs6000/rs6000.c:8853
#, c-format
msgid "invalid %%M value"
msgstr ""
-#: config/alpha/alpha.c:5772
+#: config/alpha/alpha.c:5579
#, c-format
msgid "invalid %%U value"
msgstr ""
-#: config/alpha/alpha.c:5784 config/alpha/alpha.c:5798 config/romp/romp.c:706
-#: config/rs6000/rs6000.c:7745
+#: config/alpha/alpha.c:5591 config/alpha/alpha.c:5605
+#: config/rs6000/rs6000.c:8952
#, c-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:5821 config/m88k/m88k.c:2997
+#: config/alpha/alpha.c:5628
#, c-format
msgid "invalid %%C value"
msgstr ""
-#: config/alpha/alpha.c:5858 config/m88k/m88k.c:3018
-#: config/rs6000/rs6000.c:7502
+#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:8702
#, c-format
msgid "invalid %%E value"
msgstr ""
-#: config/alpha/alpha.c:5883 config/alpha/alpha.c:5933
+#: config/alpha/alpha.c:5690 config/alpha/alpha.c:5738
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5892 config/romp/romp.c:981
-#: config/rs6000/rs6000.c:8052
+#: config/alpha/alpha.c:5699 config/rs6000/rs6000.c:9265
#, c-format
msgid "invalid %%xn code"
msgstr ""
-#: config/alpha/alpha.c:6618 config/alpha/alpha.c:6621 config/s390/s390.c:6069
-#: config/s390/s390.c:6072
+#: config/alpha/alpha.c:6634 config/alpha/alpha.c:6637 config/s390/s390.c:6572
+#: config/s390/s390.c:6575
msgid "bad builtin fcode"
msgstr ""
@@ -8519,87 +7592,98 @@ 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/alpha/alpha.h:279 config/i386/i386.h:294 config/i386/i386.h:296
-#: config/i386/i386.h:298 config/ns32k/ns32k.h:140 config/rs6000/rs6000.h:292
-#: config/s390/s390.h:68 config/sparc/sparc.h:522 config/sparc/sparc.h:527
+#. WARNING: Do not mark empty strings for translation, as calling
+#. gettext on an empty string does NOT return an empty
+#. string.
+#. 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/alpha/alpha.h:286 config/i386/i386.h:327 config/i386/i386.h:329
+#: config/i386/i386.h:331 config/ns32k/ns32k.h:140 config/s390/s390.h:124
+#: config/sparc/sparc.h:537 config/sparc/sparc.h:542
msgid "Use hardware fp"
msgstr ""
-#: config/alpha/alpha.h:280 config/i386/i386.h:295 config/i386/i386.h:297
-#: config/rs6000/rs6000.h:294 config/sparc/sparc.h:524
-#: config/sparc/sparc.h:529
+#: config/alpha/alpha.h:287 config/i386/i386.h:328 config/i386/i386.h:330
+#: config/sparc/sparc.h:539 config/sparc/sparc.h:544
msgid "Do not use hardware fp"
msgstr ""
-#: config/alpha/alpha.h:281
+#: config/alpha/alpha.h:288
msgid "Use fp registers"
msgstr ""
-#: config/alpha/alpha.h:283
+#: config/alpha/alpha.h:290
msgid "Do not use fp registers"
msgstr ""
-#: config/alpha/alpha.h:284
+#: config/alpha/alpha.h:291
msgid "Do not assume GAS"
msgstr ""
-#: config/alpha/alpha.h:285
+#: config/alpha/alpha.h:292
msgid "Assume GAS"
msgstr ""
-#: config/alpha/alpha.h:287
+#: config/alpha/alpha.h:294
msgid "Request IEEE-conformant math library routines (OSF/1)"
msgstr ""
-#: config/alpha/alpha.h:289
+#: config/alpha/alpha.h:296
msgid "Emit IEEE-conformant code, without inexact exceptions"
msgstr ""
-#: config/alpha/alpha.h:291
+#: config/alpha/alpha.h:298
msgid "Emit IEEE-conformant code, with inexact exceptions"
msgstr ""
-#: config/alpha/alpha.h:293
+#: config/alpha/alpha.h:300
msgid "Do not emit complex integer constants to read-only memory"
msgstr ""
-#: config/alpha/alpha.h:294
+#: config/alpha/alpha.h:301
msgid "Use VAX fp"
msgstr ""
-#: config/alpha/alpha.h:295
+#: config/alpha/alpha.h:302
msgid "Do not use VAX fp"
msgstr ""
-#: config/alpha/alpha.h:296
+#: config/alpha/alpha.h:303
msgid "Emit code for the byte/word ISA extension"
msgstr ""
-#: config/alpha/alpha.h:299
+#: config/alpha/alpha.h:306
msgid "Emit code for the motion video ISA extension"
msgstr ""
-#: config/alpha/alpha.h:302
+#: config/alpha/alpha.h:309
msgid "Emit code for the fp move and sqrt ISA extension"
msgstr ""
-#: config/alpha/alpha.h:304
+#: config/alpha/alpha.h:311
msgid "Emit code for the counting ISA extension"
msgstr ""
-#: config/alpha/alpha.h:307
+#: config/alpha/alpha.h:314
msgid "Emit code using explicit relocation directives"
msgstr ""
-#: config/alpha/alpha.h:310
+#: config/alpha/alpha.h:317
msgid "Emit 16-bit relocations to the small data areas"
msgstr ""
-#: config/alpha/alpha.h:312
+#: config/alpha/alpha.h:319
msgid "Emit 32-bit relocations to the small data areas"
msgstr ""
-#: config/alpha/alpha.h:314
+#: config/alpha/alpha.h:321
+msgid "Emit direct branches to local functions"
+msgstr ""
+
+#: config/alpha/alpha.h:324
msgid "Emit rdval instead of rduniq for thread pointer"
msgstr ""
@@ -8610,292 +7694,313 @@ msgstr ""
#. For -mtrap-precision=[p|f|i]
#. For -mmemory-latency=
#. For -mtls-size=
-#: config/alpha/alpha.h:343
+#: config/alpha/alpha.h:353
msgid "Use features of and schedule given CPU"
msgstr ""
-#: config/alpha/alpha.h:345
+#: config/alpha/alpha.h:355
msgid "Schedule given CPU"
msgstr ""
-#: config/alpha/alpha.h:347
+#: config/alpha/alpha.h:357
msgid "Control the generated fp rounding mode"
msgstr ""
-#: config/alpha/alpha.h:349
+#: config/alpha/alpha.h:359
msgid "Control the IEEE trap mode"
msgstr ""
-#: config/alpha/alpha.h:351
+#: config/alpha/alpha.h:361
msgid "Control the precision given to fp exceptions"
msgstr ""
-#: config/alpha/alpha.h:353
+#: config/alpha/alpha.h:363
msgid "Tune expected memory latency"
msgstr ""
-#: config/alpha/alpha.h:355 config/ia64/ia64.h:225
+#: config/alpha/alpha.h:365 config/ia64/ia64.h:267 config/rs6000/sysv4.h:90
msgid "Specify bit size of immediate TLS offsets"
msgstr ""
-#: config/arc/arc.c:135
+#: config/arc/arc.c:147
#, c-format
msgid "bad value (%s) for -mcpu switch"
msgstr ""
-#: config/arc/arc.c:362
+#: config/arc/arc.c:369
#, c-format
msgid "argument of `%s' attribute is not a string constant"
msgstr ""
-#: config/arc/arc.c:369
+#: config/arc/arc.c:376
#, c-format
msgid "argument of `%s' attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arc/arc.c:1708 config/m32r/m32r.c:2286
+#: config/arc/arc.c:1714 config/m32r/m32r.c:2325
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:1740 config/m32r/m32r.c:2309
+#: config/arc/arc.c:1746 config/m32r/m32r.c:2348
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:1763 config/m32r/m32r.c:2385
+#: config/arc/arc.c:1769 config/m32r/m32r.c:2419
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
-#: config/arc/arc.c:1774
+#: config/arc/arc.c:1780
#, c-format
msgid "invalid operand to %%V code"
msgstr ""
#. Unknown flag.
-#: config/arc/arc.c:1781 config/m32r/m32r.c:2424 config/sparc/sparc.c:6533
+#. Undocumented flag.
+#: config/arc/arc.c:1787 config/m32r/m32r.c:2446 config/sparc/sparc.c:6985
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:458
+#: config/arm/arm.c:520
#, c-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:468 config/rs6000/rs6000.c:558 config/sparc/sparc.c:393
+#: config/arm/arm.c:530 config/rs6000/rs6000.c:759 config/sparc/sparc.c:424
#, c-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:604
+#: config/arm/arm.c:672
msgid "target CPU does not support APCS-32"
msgstr ""
-#: config/arm/arm.c:609
+#: config/arm/arm.c:677
msgid "target CPU does not support APCS-26"
msgstr ""
-#: config/arm/arm.c:615
+#: config/arm/arm.c:683
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:621
+#: config/arm/arm.c:689
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:635
+#: config/arm/arm.c:703
msgid "enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:638
+#: config/arm/arm.c:706
msgid "enabling callee interworking support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:641
+#: config/arm/arm.c:709
msgid "enabling caller interworking support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:647
+#: config/arm/arm.c:715
msgid "interworking forces APCS-32 to be used"
msgstr ""
-#: config/arm/arm.c:653
+#: config/arm/arm.c:721
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:661
+#: config/arm/arm.c:729
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:664
+#: config/arm/arm.c:732
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:672
+#: config/arm/arm.c:740
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:680
+#: config/arm/arm.c:748
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:709
+#: config/arm/arm.c:792
#, c-format
msgid "invalid floating point emulation option: -mfpe-%s"
msgstr ""
-#: config/arm/arm.c:733
+#: config/arm/arm.c:803
+msgid "-mfpe switch not supported by ep9312 target cpu - ignored."
+msgstr ""
+
+#: config/arm/arm.c:823
msgid "structure size boundary can only be set to 8 or 32"
msgstr ""
-#: config/arm/arm.c:741
+#: config/arm/arm.c:831
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:748
+#: config/arm/arm.c:838
#, c-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:2064 config/arm/arm.c:2087 config/avr/avr.c:4794
-#: config/c4x/c4x.c:4644 config/h8300/h8300.c:3667 config/i386/i386.c:1396
-#: config/i386/i386.c:1425 config/ip2k/ip2k.c:3224
-#: config/m68hc11/m68hc11.c:1267 config/mcore/mcore.c:3510
-#: config/ns32k/ns32k.c:1047 config/rs6000/rs6000.c:12538 config/sh/sh.c:5681
-#: config/sh/sh.c:5706 config/sh/sh.c:5745 config/stormy16/stormy16.c:2026
-#: config/v850/v850.c:2180
+#: config/arm/arm.c:2246 config/arm/arm.c:2264 config/avr/avr.c:4558
+#: config/c4x/c4x.c:4447 config/h8300/h8300.c:4257 config/i386/i386.c:1571
+#: config/i386/i386.c:1617 config/ip2k/ip2k.c:3169
+#: config/m68hc11/m68hc11.c:1227 config/m68k/m68k.c:333
+#: config/mcore/mcore.c:3375 config/ns32k/ns32k.c:1064
+#: config/rs6000/rs6000.c:14556 config/sh/sh.c:6737 config/sh/sh.c:6758
+#: config/sh/sh.c:6793 config/stormy16/stormy16.c:2073 config/v850/v850.c:2173
#, c-format
msgid "`%s' attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:9459
+#: config/arm/arm.c:10573
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:10138
+#. @@@ better error message
+#: config/arm/arm.c:11201 config/arm/arm.c:11238
+msgid "selector must be an immediate"
+msgstr ""
+
+#. @@@ better error message
+#: config/arm/arm.c:11281 config/i386/i386.c:14219 config/i386/i386.c:14253
+msgid "mask must be an immediate"
+msgstr ""
+
+#: config/arm/arm.c:11976
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:10389
+#: config/arm/arm.c:12226
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/pe.c:168 config/mcore/mcore.c:3358
-#, c-format
-msgid "initialized variable `%s' is marked dllimport"
+#: config/arm/pe.c:170 config/mcore/mcore.c:3241
+msgid "%Jinitialized variable '%D' is marked dllimport"
msgstr ""
-#: config/arm/pe.c:177
-#, c-format
-msgid "static variable `%s' is marked dllimport"
+#: config/arm/pe.c:179
+msgid "%Jstatic variable '%D' is marked dllimport"
msgstr ""
-#: config/arm/arm.h:416
+#: config/arm/arm.h:450
msgid "Generate APCS conformant stack frames"
msgstr ""
-#: config/arm/arm.h:419
+#: config/arm/arm.h:453
msgid "Store function names in object code"
msgstr ""
-#: config/arm/arm.h:423
+#: config/arm/arm.h:457
msgid "Use the 32-bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:425
+#: config/arm/arm.h:459
msgid "Use the 26-bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:429
+#: config/arm/arm.h:463
msgid "Pass FP arguments in FP registers"
msgstr ""
-#: config/arm/arm.h:432
+#: config/arm/arm.h:466
msgid "Generate re-entrant, PIC code"
msgstr ""
-#: config/arm/arm.h:435
+#: config/arm/arm.h:469
msgid "The MMU will trap on unaligned accesses"
msgstr ""
-#: config/arm/arm.h:442
+#: config/arm/arm.h:476
msgid "Use library calls to perform FP operations"
msgstr ""
-#: config/arm/arm.h:444 config/i960/i960.h:281
+#: config/arm/arm.h:478 config/i960/i960.h:291
msgid "Use hardware floating point instructions"
msgstr ""
-#: config/arm/arm.h:446
+#: config/arm/arm.h:480
msgid "Assume target CPU is configured as big endian"
msgstr ""
-#: config/arm/arm.h:448
+#: config/arm/arm.h:482
msgid "Assume target CPU is configured as little endian"
msgstr ""
-#: config/arm/arm.h:450
+#: config/arm/arm.h:484
msgid "Assume big endian bytes, little endian words"
msgstr ""
-#: config/arm/arm.h:452
+#: config/arm/arm.h:486
msgid "Support calls between Thumb and ARM instruction sets"
msgstr ""
-#: config/arm/arm.h:455
+#: config/arm/arm.h:489
msgid "Generate a call to abort if a noreturn function returns"
msgstr ""
-#: config/arm/arm.h:458
+#: config/arm/arm.h:492
msgid "Do not move instructions into a function's prologue"
msgstr ""
-#: config/arm/arm.h:461
+#: config/arm/arm.h:495
msgid "Do not load the PIC register in function prologues"
msgstr ""
-#: config/arm/arm.h:464
+#: config/arm/arm.h:498
msgid "Generate call insns as indirect calls, if necessary"
msgstr ""
-#: config/arm/arm.h:467
+#: config/arm/arm.h:501
msgid "Compile for the Thumb not the ARM"
msgstr ""
-#: config/arm/arm.h:471
+#: config/arm/arm.h:505
msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:474
+#: config/arm/arm.h:508
msgid "Thumb: Generate (leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:477
+#: config/arm/arm.h:511
msgid "Thumb: Assume non-static functions may be called from ARM code"
msgstr ""
-#: config/arm/arm.h:481
+#: config/arm/arm.h:515
msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
msgstr ""
-#: config/arm/arm.h:491
+#: config/arm/arm.h:519
+msgid "Cirrus: Place NOPs to avoid invalid instruction combinations"
+msgstr ""
+
+#: config/arm/arm.h:521
+msgid "Cirrus: Do not break up invalid instruction combinations with NOPs"
+msgstr ""
+
+#: config/arm/arm.h:529
msgid "Specify the name of the target CPU"
msgstr ""
-#: config/arm/arm.h:493
+#: config/arm/arm.h:531
msgid "Specify the name of the target architecture"
msgstr ""
-#: config/arm/arm.h:497
+#: config/arm/arm.h:535
msgid "Specify the version of the floating point emulator"
msgstr ""
-#: config/arm/arm.h:499
+#: config/arm/arm.h:537
msgid "Specify the minimum bit alignment of structures"
msgstr ""
-#: config/arm/arm.h:501
+#: config/arm/arm.h:539
msgid "Specify the register to be used for PIC addressing"
msgstr ""
@@ -8903,92 +8008,92 @@ msgstr ""
msgid "Ignore dllimport attribute for functions"
msgstr ""
-#: config/avr/avr.c:528
+#: config/avr/avr.c:514
#, c-format
msgid "large frame pointer change (%d) with -mtiny-stack"
msgstr ""
-#: config/avr/avr.c:1135
+#: config/avr/avr.c:1101
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1143
+#: config/avr/avr.c:1109
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1156
+#: config/avr/avr.c:1122
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:1864 config/avr/avr.c:2576
+#: config/avr/avr.c:1744 config/avr/avr.c:2405
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:1901 config/avr/avr.c:1987 config/avr/avr.c:2036
-#: config/avr/avr.c:2045 config/avr/avr.c:2143 config/avr/avr.c:2315
-#: config/avr/avr.c:2613 config/avr/avr.c:2724
+#: config/avr/avr.c:1778 config/avr/avr.c:1861 config/avr/avr.c:1910
+#: config/avr/avr.c:1919 config/avr/avr.c:2014 config/avr/avr.c:2183
+#: config/avr/avr.c:2439 config/avr/avr.c:2547
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:2064 config/avr/avr.c:2228 config/avr/avr.c:2386
-#: config/avr/avr.c:2768
+#: config/avr/avr.c:1938 config/avr/avr.c:2099 config/avr/avr.c:2254
+#: config/avr/avr.c:2591
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:3003
+#: config/avr/avr.c:2814
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:3119 config/avr/avr.c:3549 config/avr/avr.c:3929
+#: config/avr/avr.c:2927 config/avr/avr.c:3348 config/avr/avr.c:3719
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/avr/avr.c:4767 config/ip2k/ip2k.c:3197
+#: config/avr/avr.c:4532 config/ip2k/ip2k.c:3144
msgid "only initialized variables can be placed into program memory area"
msgstr ""
-#: config/avr/avr.c:4866
+#: config/avr/avr.c:4626
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:4881
+#: config/avr/avr.c:4640
#, c-format
msgid "MCU `%s' supported for assembler only"
msgstr ""
-#: config/avr/avr.h:78
+#: config/avr/avr.h:73
msgid "Assume int to be 8 bit integer"
msgstr ""
-#: config/avr/avr.h:80
+#: config/avr/avr.h:75
msgid "Change the stack pointer without disabling interrupts"
msgstr ""
-#: config/avr/avr.h:82
+#: config/avr/avr.h:77
msgid "Use subroutines for function prologue/epilogue"
msgstr ""
-#: config/avr/avr.h:84
+#: config/avr/avr.h:79
msgid "Change only the low 8 bits of the stack pointer"
msgstr ""
-#: config/avr/avr.h:86
+#: config/avr/avr.h:81
msgid "Do not generate tablejump insns"
msgstr ""
-#: config/avr/avr.h:88
+#: config/avr/avr.h:83
msgid "Use rjmp/rcall (limited range) on >8K devices"
msgstr ""
-#: config/avr/avr.h:91
+#: config/avr/avr.h:85
msgid "Output instruction sizes to the asm file"
msgstr ""
-#: config/avr/avr.h:108
+#: config/avr/avr.h:102
msgid "Specify the initial stack address"
msgstr ""
-#: config/avr/avr.h:109
+#: config/avr/avr.h:103
msgid "Specify the MCU name"
msgstr ""
@@ -9000,140 +8105,135 @@ msgstr ""
#. For instance, the SH target has only positive offsets in
#. addresses. Thus sorting to put the smallest address first allows
#. the most combinations to be found.
-#: config/avr/avr.h:2450
+#: config/avr/avr.h:2267
msgid "trampolines not supported"
msgstr ""
-#: config/c4x/c4x-c.c:69
+#: config/c4x/c4x-c.c:71
#, c-format
msgid "missing '(' after '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:72
+#: config/c4x/c4x-c.c:74
#, c-format
msgid "missing function name in '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:77
+#: config/c4x/c4x-c.c:79
#, c-format
msgid "malformed '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:79
+#: config/c4x/c4x-c.c:81
#, c-format
msgid "missing section name in '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:84
+#: config/c4x/c4x-c.c:86
#, c-format
msgid "missing ')' for '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:87
+#: config/c4x/c4x-c.c:89
#, c-format
msgid "junk at end of '#pragma %s'"
msgstr ""
-#: config/c4x/c4x.c:280
+#: config/c4x/c4x.c:300
#, c-format
msgid "unknown CPU version %d, using 40.\n"
msgstr ""
-#: config/c4x/c4x.c:853
+#: config/c4x/c4x.c:850
#, c-format
msgid "ISR %s requires %d words of local vars, max is 32767"
msgstr ""
-#: config/c4x/c4x.c:1602
+#: config/c4x/c4x.c:1571
msgid "using CONST_DOUBLE for address"
msgstr ""
-#: config/c4x/c4x.c:1742
+#: config/c4x/c4x.c:1709
msgid "c4x_address_cost: Invalid addressing mode"
msgstr ""
-#: config/c4x/c4x.c:1884
+#: config/c4x/c4x.c:1844
#, c-format
msgid "c4x_print_operand: %%L inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1890
+#: config/c4x/c4x.c:1850
#, c-format
msgid "c4x_print_operand: %%N inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1931
+#: config/c4x/c4x.c:1891
#, c-format
msgid "c4x_print_operand: %%O inconsistency"
msgstr ""
-#: config/c4x/c4x.c:2026
+#: config/c4x/c4x.c:1986
msgid "c4x_print_operand: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2069
+#: config/c4x/c4x.c:2027
msgid "c4x_print_operand_address: Bad post_modify"
msgstr ""
-#: config/c4x/c4x.c:2091
+#: config/c4x/c4x.c:2049
msgid "c4x_print_operand_address: Bad pre_modify"
msgstr ""
-#: config/c4x/c4x.c:2139 config/c4x/c4x.c:2151 config/c4x/c4x.c:2166
+#: config/c4x/c4x.c:2097 config/c4x/c4x.c:2109 config/c4x/c4x.c:2124
msgid "c4x_print_operand_address: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2422
+#: config/c4x/c4x.c:2375
msgid "c4x_rptb_insert: Cannot find start label"
msgstr ""
-#: config/c4x/c4x.c:3409 config/c4x/c4x.c:3429
+#: config/c4x/c4x.c:3292 config/c4x/c4x.c:3310
msgid "mode not QImode"
msgstr ""
-#: config/c4x/c4x.c:3514
+#: config/c4x/c4x.c:3380
msgid "invalid indirect memory address"
msgstr ""
-#: config/c4x/c4x.c:3603
+#: config/c4x/c4x.c:3469
msgid "invalid indirect (S) memory address"
msgstr ""
-#: config/c4x/c4x.c:3944
+#: config/c4x/c4x.c:3797
msgid "c4x_valid_operands: Internal error"
msgstr ""
-#: config/c4x/c4x.c:4424
+#: config/c4x/c4x.c:4216
msgid "c4x_operand_subword: invalid mode"
msgstr ""
-#: config/c4x/c4x.c:4427
+#: config/c4x/c4x.c:4219
msgid "c4x_operand_subword: invalid operand"
msgstr ""
#. We could handle these with some difficulty.
#. e.g., *p-- => *(p-=2); *(p+1).
-#: config/c4x/c4x.c:4453
+#: config/c4x/c4x.c:4245
msgid "c4x_operand_subword: invalid autoincrement"
msgstr ""
-#: config/c4x/c4x.c:4459
+#: config/c4x/c4x.c:4251
msgid "c4x_operand_subword: invalid address"
msgstr ""
-#: config/c4x/c4x.c:4470
+#: config/c4x/c4x.c:4262
msgid "c4x_operand_subword: address not offsettable"
msgstr ""
-#: config/c4x/c4x.c:4670
+#: config/c4x/c4x.c:4472
msgid "c4x_rptb_rpts_p: Repeat block top label moved\n"
msgstr ""
-#. Name of the c4x assembler.
-#. Name of the c4x linker.
-#. Define assembler options.
-#. Define linker options.
-#. Specify the end file to link with.
#. Target compilation option flags.
#. Small memory model.
#. Use 24-bit MPYI for C3x.
@@ -9352,158 +8452,158 @@ msgstr ""
msgid "Select CPU to generate code for"
msgstr ""
-#: config/cris/cris.c:599
+#: config/cris/cris.c:597
msgid "unexpected index-type in cris_print_index"
msgstr ""
-#: config/cris/cris.c:615
+#: config/cris/cris.c:611
msgid "unexpected base-type in cris_print_base"
msgstr ""
-#: config/cris/cris.c:908
+#: config/cris/cris.c:904
#, c-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:1223
+#: config/cris/cris.c:1215
msgid "allocated but unused delay list in epilogue"
msgstr ""
-#: config/cris/cris.c:1233
+#: config/cris/cris.c:1225
msgid "unexpected function type needing stack adjustment for __builtin_eh_return"
msgstr ""
-#: config/cris/cris.c:1312
+#: config/cris/cris.c:1301
msgid "invalid operand for 'b' modifier"
msgstr ""
-#: config/cris/cris.c:1324
+#: config/cris/cris.c:1314
msgid "invalid operand for 'v' modifier"
msgstr ""
-#: config/cris/cris.c:1334
+#: config/cris/cris.c:1324
msgid "invalid operand for 'P' modifier"
msgstr ""
-#: config/cris/cris.c:1341
+#: config/cris/cris.c:1331
msgid "invalid operand for 'p' modifier"
msgstr ""
-#: config/cris/cris.c:1380
+#: config/cris/cris.c:1370
msgid "invalid operand for 'z' modifier"
msgstr ""
-#: config/cris/cris.c:1411 config/cris/cris.c:1441
+#: config/cris/cris.c:1401 config/cris/cris.c:1431
msgid "invalid operand for 'H' modifier"
msgstr ""
-#: config/cris/cris.c:1417
+#: config/cris/cris.c:1407
msgid "bad register"
msgstr ""
-#: config/cris/cris.c:1455
+#: config/cris/cris.c:1445
msgid "invalid operand for 'e' modifier"
msgstr ""
-#: config/cris/cris.c:1472
+#: config/cris/cris.c:1462
msgid "invalid operand for 'm' modifier"
msgstr ""
-#: config/cris/cris.c:1497
+#: config/cris/cris.c:1487
msgid "invalid operand for 'A' modifier"
msgstr ""
-#: config/cris/cris.c:1505
+#: config/cris/cris.c:1495
msgid "invalid operand for 'D' modifier"
msgstr ""
-#: config/cris/cris.c:1519
+#: config/cris/cris.c:1509
msgid "invalid operand for 'T' modifier"
msgstr ""
-#: config/cris/cris.c:1528
+#: config/cris/cris.c:1518
msgid "invalid operand modifier letter"
msgstr ""
-#: config/cris/cris.c:1536
+#: config/cris/cris.c:1526
#, c-format
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1584
+#: config/cris/cris.c:1574
msgid "unexpected multiplicative operand"
msgstr ""
-#: config/cris/cris.c:1604
+#: config/cris/cris.c:1594
msgid "unexpected operand"
msgstr ""
-#: config/cris/cris.c:1639 config/cris/cris.c:1649
+#: config/cris/cris.c:1627 config/cris/cris.c:1637
msgid "unrecognized address"
msgstr ""
-#: config/cris/cris.c:2005
+#: config/cris/cris.c:1987
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2292
+#: config/cris/cris.c:2380
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2374 config/cris/cris.c:2432
+#: config/cris/cris.c:2457 config/cris/cris.c:2519
msgid "unrecognized supposed constant"
msgstr ""
-#: config/cris/cris.c:2473
+#: config/cris/cris.c:2564
msgid "unrecognized supposed constant in cris_global_pic_symbol"
msgstr ""
-#: config/cris/cris.c:2492
+#: config/cris/cris.c:2583
#, c-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2520
+#: config/cris/cris.c:2611
#, c-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2556
+#: config/cris/cris.c:2647
#, c-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2574
+#: config/cris/cris.c:2665
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2681
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2824 config/cris/cris.c:2869
+#: config/cris/cris.c:2936 config/cris/cris.c:2981
msgid "unexpected side-effects in address"
msgstr ""
#. Labels are never marked as global symbols.
-#: config/cris/cris.c:2966 config/cris/cris.c:2997
+#: config/cris/cris.c:3076 config/cris/cris.c:3107
msgid "unexpected PIC symbol"
msgstr ""
-#: config/cris/cris.c:2970
+#: config/cris/cris.c:3080
msgid "PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:2983 config/cris/cris.c:3066
+#: config/cris/cris.c:3093 config/cris/cris.c:3176
msgid "unexpected address expression"
msgstr ""
-#: config/cris/cris.c:3001
+#: config/cris/cris.c:3111
msgid "emitting PIC operand, but PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:3010
+#: config/cris/cris.c:3120
msgid "unexpected NOTE as addr_const:"
msgstr ""
@@ -9516,212 +8616,212 @@ msgid "For elinux, request a specified stack-size for this program"
msgstr ""
#. No "no-etrax" as it does not really imply any model. On the other hand, "etrax" implies the common (and large) subset matching all models.
-#: config/cris/cris.h:340
+#: config/cris/cris.h:334
msgid "Compile for ETRAX 4 (CRIS v3)"
msgstr ""
-#: config/cris/cris.h:345
+#: config/cris/cris.h:339
msgid "Compile for ETRAX 100 (CRIS v8)"
msgstr ""
-#: config/cris/cris.h:349
+#: config/cris/cris.h:343
msgid "Emit verbose debug information in assembly code"
msgstr ""
-#: config/cris/cris.h:352
+#: config/cris/cris.h:346
msgid "Do not use condition codes from normal instructions"
msgstr ""
-#: config/cris/cris.h:356
+#: config/cris/cris.h:350
msgid "Do not emit addressing modes with side-effect assignment"
msgstr ""
-#: config/cris/cris.h:359
+#: config/cris/cris.h:353
msgid "Do not tune stack alignment"
msgstr ""
-#: config/cris/cris.h:362
+#: config/cris/cris.h:356
msgid "Do not tune writable data alignment"
msgstr ""
-#: config/cris/cris.h:365
+#: config/cris/cris.h:359
msgid "Do not tune code and read-only data alignment"
msgstr ""
-#: config/cris/cris.h:374
+#: config/cris/cris.h:368
msgid "Align code and data to 32 bits"
msgstr ""
-#: config/cris/cris.h:387
+#: config/cris/cris.h:381
msgid "Don't align items in code or data"
msgstr ""
-#: config/cris/cris.h:390
+#: config/cris/cris.h:384
msgid "Do not emit function prologue or epilogue"
msgstr ""
#. We have to handle this m-option here since we can't wash it off in both CC1_SPEC and CC1PLUS_SPEC.
-#: config/cris/cris.h:394
+#: config/cris/cris.h:388
msgid "Use the most feature-enabling options allowed by other options"
msgstr ""
#. We must call it "override-" since calling it "no-" will cause gcc.c to forget it, if there's a "later" -mbest-lib-options. Kludgy, but needed for some multilibbed files.
-#: config/cris/cris.h:400
+#: config/cris/cris.h:394
msgid "Override -mbest-lib-options"
msgstr ""
-#: config/cris/cris.h:432
+#: config/cris/cris.h:426
msgid "Generate code for the specified chip or CPU version"
msgstr ""
-#: config/cris/cris.h:434
+#: config/cris/cris.h:428
msgid "Tune alignment for the specified chip or CPU version"
msgstr ""
-#: config/cris/cris.h:436
+#: config/cris/cris.h:430
msgid "Warn when a stackframe is larger than the specified size"
msgstr ""
#. Node: Profiling
-#: config/cris/cris.h:1022
+#: config/cris/cris.h:1016
msgid "no FUNCTION_PROFILER for CRIS"
msgstr ""
-#: config/cris/linux.h:71
+#: config/cris/linux.h:69
msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
msgstr ""
-#: config/d30v/d30v.c:207
+#: config/d30v/d30v.c:218
#, c-format
msgid "bad modes_tieable_p for register %s, mode1 %s, mode2 %s"
msgstr ""
-#: config/d30v/d30v.c:2666
+#: config/d30v/d30v.c:2678
msgid "bad insn to d30v_print_operand_address:"
msgstr ""
-#: config/d30v/d30v.c:2683 config/d30v/d30v.c:2744 config/d30v/d30v.c:2765
-#: config/d30v/d30v.c:2783
+#: config/d30v/d30v.c:2695 config/d30v/d30v.c:2756 config/d30v/d30v.c:2777
+#: config/d30v/d30v.c:2795
msgid "bad insn to d30v_print_operand_memory_reference:"
msgstr ""
-#: config/d30v/d30v.c:2851
+#: config/d30v/d30v.c:2863
msgid "bad insn to d30v_print_operand, 'f' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2860
+#: config/d30v/d30v.c:2872
msgid "bad insn to d30v_print_operand, 'A' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2867
+#: config/d30v/d30v.c:2879
msgid "bad insn to d30v_print_operand, 'M' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2921
+#: config/d30v/d30v.c:2933
msgid "bad insn to print_operand, 'F' or 'T' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2932
+#: config/d30v/d30v.c:2944
msgid "bad insn to print_operand, 'B' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2939
+#: config/d30v/d30v.c:2951
msgid "bad insn to print_operand, 'E' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2957
+#: config/d30v/d30v.c:2969
msgid "bad insn to print_operand, 'R' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2966 config/d30v/d30v.c:2974
+#: config/d30v/d30v.c:2978 config/d30v/d30v.c:2986
msgid "bad insn to print_operand, 's' modifier:"
msgstr ""
-#: config/d30v/d30v.c:3003
+#: config/d30v/d30v.c:3015
msgid "bad insn in d30v_print_operand, 0 case"
msgstr ""
-#: config/d30v/d30v.c:3301
+#: config/d30v/d30v.c:3313
msgid "d30v_emit_comparison"
msgstr ""
-#: config/d30v/d30v.c:3345
+#: config/d30v/d30v.c:3357
msgid "bad call to d30v_move_2words"
msgstr ""
-#: config/d30v/d30v.h:114
+#: config/d30v/d30v.h:111
msgid "Enable use of conditional move instructions"
msgstr ""
-#: config/d30v/d30v.h:117
+#: config/d30v/d30v.h:114
msgid "Disable use of conditional move instructions"
msgstr ""
-#: config/d30v/d30v.h:120
+#: config/d30v/d30v.h:117
msgid "Debug argument support in compiler"
msgstr ""
-#: config/d30v/d30v.h:123
+#: config/d30v/d30v.h:120
msgid "Debug stack support in compiler"
msgstr ""
-#: config/d30v/d30v.h:126
+#: config/d30v/d30v.h:123
msgid "Debug memory address support in compiler"
msgstr ""
-#: config/d30v/d30v.h:129
+#: config/d30v/d30v.h:126
msgid "Make adjacent short instructions parallel if possible"
msgstr ""
-#: config/d30v/d30v.h:132
+#: config/d30v/d30v.h:129
msgid "Do not make adjacent short instructions parallel"
msgstr ""
-#: config/d30v/d30v.h:135 config/d30v/d30v.h:138
+#: config/d30v/d30v.h:132 config/d30v/d30v.h:135
msgid "Link programs/data to be in external memory by default"
msgstr ""
-#: config/d30v/d30v.h:141
+#: config/d30v/d30v.h:138
msgid "Link programs/data to be in onchip memory by default"
msgstr ""
-#: config/d30v/d30v.h:149
+#: config/d30v/d30v.h:146
msgid "Change the branch costs within the compiler"
msgstr ""
-#: config/d30v/d30v.h:152
+#: config/d30v/d30v.h:149
msgid "Change the threshold for conversion to conditional execution"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1446 config/dsp16xx/dsp16xx.c:1469
+#: config/dsp16xx/dsp16xx.c:1463 config/dsp16xx/dsp16xx.c:1486
msgid "stack size > 32k"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1678
+#: config/dsp16xx/dsp16xx.c:1695
msgid "invalid addressing mode"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1821
+#: config/dsp16xx/dsp16xx.c:1838
msgid "bad register extension code"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1921
+#: config/dsp16xx/dsp16xx.c:1938
msgid "invalid offset in ybase addressing"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1924
+#: config/dsp16xx/dsp16xx.c:1941
msgid "invalid register in ybase addressing"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2099
+#: config/dsp16xx/dsp16xx.c:2116
msgid "invalid shift operator in emit_1600_core_shift"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2428
+#: config/dsp16xx/dsp16xx.c:2406
msgid "invalid mode for gen_tst_reg"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2500
+#: config/dsp16xx/dsp16xx.c:2478
msgid "invalid mode for integer comparison in gen_compare_reg"
msgstr ""
@@ -9816,58 +8916,62 @@ msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/dsp16xx/dsp16xx.h:1218 config/dsp16xx/dsp16xx.h:1772
-#: config/dsp16xx/dsp16xx.h:1777
+#. This is how to output an insn to push a register on the stack.
+#. It need not be very fast code since it is used only for profiling
+#. This is how to output an insn to pop a register from the stack.
+#. It need not be very fast code since it is used only for profiling
+#: config/dsp16xx/dsp16xx.h:1216 config/dsp16xx/dsp16xx.h:1667
+#: config/dsp16xx/dsp16xx.h:1672
msgid "profiling not implemented yet"
msgstr ""
#. Emit RTL insns to initialize the variable parts of a trampoline.
#. FNADDR is an RTX for the address of the function's pure code.
#. CXT is an RTX for the static chain value for the function.
-#: config/dsp16xx/dsp16xx.h:1228 config/dsp16xx/dsp16xx.h:1240
+#: config/dsp16xx/dsp16xx.h:1226 config/dsp16xx/dsp16xx.h:1238
msgid "trampolines not yet implemented"
msgstr ""
-#: config/fr30/fr30.c:453
+#: config/fr30/fr30.c:451
msgid "fr30_print_operand_address: unhandled address"
msgstr ""
-#: config/fr30/fr30.c:480
+#: config/fr30/fr30.c:475
#, c-format
msgid "fr30_print_operand: unrecognized %%p code"
msgstr ""
-#: config/fr30/fr30.c:500
+#: config/fr30/fr30.c:495
#, c-format
msgid "fr30_print_operand: unrecognized %%b code"
msgstr ""
-#: config/fr30/fr30.c:521
+#: config/fr30/fr30.c:516
#, c-format
msgid "fr30_print_operand: unrecognized %%B code"
msgstr ""
-#: config/fr30/fr30.c:529
+#: config/fr30/fr30.c:524
#, c-format
msgid "fr30_print_operand: invalid operand to %%A code"
msgstr ""
-#: config/fr30/fr30.c:546
+#: config/fr30/fr30.c:541
#, c-format
msgid "fr30_print_operand: invalid %%x code"
msgstr ""
-#: config/fr30/fr30.c:553
+#: config/fr30/fr30.c:548
#, c-format
msgid "fr30_print_operand: invalid %%F code"
msgstr ""
-#: config/fr30/fr30.c:570
+#: config/fr30/fr30.c:565
msgid "fr30_print_operand: unknown code"
msgstr ""
-#: config/fr30/fr30.c:599 config/fr30/fr30.c:608 config/fr30/fr30.c:619
-#: config/fr30/fr30.c:632
+#: config/fr30/fr30.c:594 config/fr30/fr30.c:603 config/fr30/fr30.c:614
+#: config/fr30/fr30.c:627
msgid "fr30_print_operand: unhandled MEM"
msgstr ""
@@ -9875,136 +8979,136 @@ msgstr ""
msgid "Assume small address space"
msgstr ""
-#: config/frv/frv.c:410 config/frv/frv.c:428
+#: config/frv/frv.c:392 config/frv/frv.c:410
#, c-format
msgid "Unknown cpu: -mcpu=%s"
msgstr ""
-#: config/frv/frv.c:451
+#: config/frv/frv.c:433
msgid "-fpic and -gdwarf are incompatible (-fpic and -g/-gdwarf-2 are fine)"
msgstr ""
-#: config/frv/frv.c:2520
+#: config/frv/frv.c:2397
msgid "Bad insn to frv_print_operand_address:"
msgstr ""
-#: config/frv/frv.c:2533
+#: config/frv/frv.c:2408
msgid "Bad register to frv_print_operand_memory_reference_reg:"
msgstr ""
-#: config/frv/frv.c:2574 config/frv/frv.c:2584 config/frv/frv.c:2593
-#: config/frv/frv.c:2621 config/frv/frv.c:2633 config/frv/frv.c:2637
+#: config/frv/frv.c:2446 config/frv/frv.c:2456 config/frv/frv.c:2465
+#: config/frv/frv.c:2493 config/frv/frv.c:2506 config/frv/frv.c:2510
msgid "Bad insn to frv_print_operand_memory_reference:"
msgstr ""
-#: config/frv/frv.c:2779
+#: config/frv/frv.c:2648
msgid "Bad insn in frv_print_operand, bad const_double"
msgstr ""
-#: config/frv/frv.c:2824
+#: config/frv/frv.c:2693
msgid "Bad insn to frv_print_operand, 'C' modifier:"
msgstr ""
-#: config/frv/frv.c:2847
+#: config/frv/frv.c:2716
msgid "Bad insn to frv_print_operand, 'c' modifier:"
msgstr ""
-#: config/frv/frv.c:2872
+#: config/frv/frv.c:2741
msgid "Bad insn to frv_print_operand, 'e' modifier:"
msgstr ""
-#: config/frv/frv.c:2880
+#: config/frv/frv.c:2749
msgid "Bad insn to frv_print_operand, 'F' modifier:"
msgstr ""
-#: config/frv/frv.c:2896
+#: config/frv/frv.c:2765
msgid "Bad insn to frv_print_operand, 'f' modifier:"
msgstr ""
-#: config/frv/frv.c:2949
+#: config/frv/frv.c:2818
msgid "Bad insn to frv_print_operand, 'L' modifier:"
msgstr ""
-#: config/frv/frv.c:2962
+#: config/frv/frv.c:2831
msgid "Bad insn to frv_print_operand, 'M/N' modifier:"
msgstr ""
-#: config/frv/frv.c:2983
+#: config/frv/frv.c:2852
msgid "Bad insn to frv_print_operand, 'O' modifier:"
msgstr ""
-#: config/frv/frv.c:3001
+#: config/frv/frv.c:2870
msgid "Bad insn to frv_print_operand, P modifier:"
msgstr ""
-#: config/frv/frv.c:3021
+#: config/frv/frv.c:2890
msgid "Bad insn in frv_print_operand, z case"
msgstr ""
-#: config/frv/frv.c:3049
+#: config/frv/frv.c:2918
msgid "Bad insn in frv_print_operand, 0 case"
msgstr ""
-#: config/frv/frv.c:3054
+#: config/frv/frv.c:2923
msgid "frv_print_operand: unknown code"
msgstr ""
-#: config/frv/frv.c:5737
+#: config/frv/frv.c:5474
msgid "Bad output_move_single operand"
msgstr ""
-#: config/frv/frv.c:5866
+#: config/frv/frv.c:5601
msgid "Bad output_move_double operand"
msgstr ""
-#: config/frv/frv.c:6010
+#: config/frv/frv.c:5743
msgid "Bad output_condmove_single operand"
msgstr ""
-#: config/frv/frv.c:8315
+#: config/frv/frv.c:8031
msgid "frv_registers_update"
msgstr ""
-#: config/frv/frv.c:8475
+#: config/frv/frv.c:8188
msgid "frv_registers_used_p"
msgstr ""
-#: config/frv/frv.c:8604
+#: config/frv/frv.c:8314
msgid "frv_registers_set_p"
msgstr ""
-#: config/frv/frv.c:9171
+#: config/frv/frv.c:8910
msgid "accumulator is not a constant integer"
msgstr ""
-#: config/frv/frv.c:9176
+#: config/frv/frv.c:8915
msgid "accumulator number is out of bounds"
msgstr ""
-#: config/frv/frv.c:9187
+#: config/frv/frv.c:8926
#, c-format
msgid "inappropriate accumulator for `%s'"
msgstr ""
-#: config/frv/frv.c:9253
+#: config/frv/frv.c:8986
#, c-format
msgid "`%s' expects a constant argument"
msgstr ""
-#: config/frv/frv.c:9258
+#: config/frv/frv.c:8991
#, c-format
msgid "constant argument out of range for `%s'"
msgstr ""
-#: config/frv/frv.c:9638
+#: config/frv/frv.c:9338
msgid "media functions are not available unless -mmedia is used"
msgstr ""
-#: config/frv/frv.c:9650
+#: config/frv/frv.c:9350
msgid "this media function is only available on the fr500"
msgstr ""
-#: config/frv/frv.c:9678
+#: config/frv/frv.c:9378
msgid "this media function is only available on the fr400"
msgstr ""
@@ -10017,15 +9121,16 @@ msgstr ""
#. #else
#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
#. #endif
-#: config/frv/frv.h:512
+#: config/frv/frv.h:506
+#, c-format
msgid " (frv)"
msgstr ""
-#: config/h8300/h8300.c:314
+#: config/h8300/h8300.c:288
msgid "-ms2600 is used without -ms"
msgstr ""
-#: config/h8300/h8300.c:320
+#: config/h8300/h8300.c:294
msgid "-mn is used without -mh or -ms"
msgstr ""
@@ -10034,75 +9139,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/h8300/h8300.h:150
+#: config/h8300/h8300.h:145
msgid "Generate H8S code"
msgstr ""
-#: config/h8300/h8300.h:151
+#: config/h8300/h8300.h:146
msgid "Do not generate H8S code"
msgstr ""
-#: config/h8300/h8300.h:152
+#: config/h8300/h8300.h:147
msgid "Generate H8S/2600 code"
msgstr ""
-#: config/h8300/h8300.h:153
+#: config/h8300/h8300.h:148
msgid "Do not generate H8S/2600 code"
msgstr ""
-#: config/h8300/h8300.h:154
+#: config/h8300/h8300.h:149
msgid "Make integers 32 bits wide"
msgstr ""
-#: config/h8300/h8300.h:157
+#: config/h8300/h8300.h:152
msgid "Use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:159
+#: config/h8300/h8300.h:154
msgid "Do not use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:161
+#: config/h8300/h8300.h:156
msgid "Consider access to byte sized memory slow"
msgstr ""
-#: config/h8300/h8300.h:162
+#: config/h8300/h8300.h:157
msgid "Enable linker relaxing"
msgstr ""
-#: config/h8300/h8300.h:164
+#: config/h8300/h8300.h:158
msgid "Generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:165
+#: config/h8300/h8300.h:159
msgid "Enable the normal mode"
msgstr ""
-#: config/h8300/h8300.h:166
+#: config/h8300/h8300.h:160
msgid "Do not generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:167
+#: config/h8300/h8300.h:161
msgid "Use H8/300 alignment rules"
msgstr ""
-#: config/i370/i370-c.c:53
+#: config/i370/i370-c.c:55
msgid "junk at end of #pragma map"
msgstr ""
-#: config/i370/i370-c.c:59
+#: config/i370/i370-c.c:61
msgid "malformed #pragma map, ignored"
msgstr ""
-#: config/i370/i370.c:915
+#: config/i370/i370.c:784
msgid "real name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:920
+#: config/i370/i370.c:789
msgid "alias name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:1191
+#: config/i370/i370.c:1060
msgid "internal error--no jump follows compare:"
msgstr ""
@@ -10118,405 +9223,453 @@ msgstr ""
msgid "Do not generate char instructions"
msgstr ""
-#: config/i386/i386.c:1050
+#: config/i386/i386.c:1161
#, c-format
msgid "code model %s not supported in PIC mode"
msgstr ""
-#: config/i386/i386.c:1060 config/sparc/sparc.c:356
+#: config/i386/i386.c:1171 config/sparc/sparc.c:387
#, c-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/i386/i386.c:1075
+#: config/i386/i386.c:1186
#, c-format
msgid "bad value (%s) for -masm= switch"
msgstr ""
-#: config/i386/i386.c:1078
+#: config/i386/i386.c:1189
#, c-format
msgid "code model `%s' not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:1081
+#: config/i386/i386.c:1192
msgid "code model `large' not supported yet"
msgstr ""
-#: config/i386/i386.c:1083
+#: config/i386/i386.c:1194
#, c-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:1113
+#: config/i386/i386.c:1221 config/i386/i386.c:1233
+msgid "CPU you selected does not support x86-64 instruction set"
+msgstr ""
+
+#: config/i386/i386.c:1226 config/iq2000/iq2000.c:1840
#, c-format
msgid "bad value (%s) for -march= switch"
msgstr ""
-#: config/i386/i386.c:1124
+#: config/i386/i386.c:1239
#, c-format
-msgid "bad value (%s) for -mcpu= switch"
+msgid "bad value (%s) for -mtune= switch"
msgstr ""
-#: config/i386/i386.c:1141
+#: config/i386/i386.c:1256
#, c-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1154
+#: config/i386/i386.c:1269
msgid "-malign-loops is obsolete, use -falign-loops"
msgstr ""
-#: config/i386/i386.c:1159 config/i386/i386.c:1172 config/i386/i386.c:1185
+#: config/i386/i386.c:1274 config/i386/i386.c:1287 config/i386/i386.c:1300
#, c-format
msgid "-malign-loops=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1167
+#: config/i386/i386.c:1282
msgid "-malign-jumps is obsolete, use -falign-jumps"
msgstr ""
-#: config/i386/i386.c:1180
+#: config/i386/i386.c:1295
msgid "-malign-functions is obsolete, use -falign-functions"
msgstr ""
-#: config/i386/i386.c:1218
+#: config/i386/i386.c:1333
#, c-format
msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:1230
+#: config/i386/i386.c:1345
#, c-format
msgid "-mbranch-cost=%d is not between 0 and 5"
msgstr ""
-#: config/i386/i386.c:1242
+#: config/i386/i386.c:1357
#, c-format
msgid "bad value (%s) for -mtls-dialect= switch"
msgstr ""
-#: config/i386/i386.c:1263
+#: config/i386/i386.c:1386
msgid "-malign-double makes no sense in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1265
+#: config/i386/i386.c:1388
msgid "-mrtd calling convention not supported in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1281 config/i386/i386.c:1292
+#: config/i386/i386.c:1410 config/i386/i386.c:1421
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:1297
+#: config/i386/i386.c:1426
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:1304
+#: config/i386/i386.c:1433
#, c-format
msgid "bad value (%s) for -mfpmath= switch"
msgstr ""
-#: config/i386/i386.c:1436
+#: config/i386/i386.c:1581 config/i386/i386.c:1592
+msgid "fastcall and stdcall attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:1585 config/i386/i386.c:1641
+msgid "fastcall and regparm attributes are not compatible"
+msgstr ""
+
+#: config/i386/i386.c:1628
#, c-format
msgid "`%s' attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:1442
+#: config/i386/i386.c:1634
#, c-format
msgid "argument to `%s' attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:2504
+#: config/i386/i386.c:2593
+msgid "SSE vector argument without SSE enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:2609
+msgid "MMX vector argument without MMX enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:2837
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6386
+#: config/i386/i386.c:6811
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:6648
+#: config/i386/i386.c:7069
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:6663
+#: config/i386/i386.c:7084
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:6978
+#: config/i386/i386.c:7399
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:7024
+#: config/i386/i386.c:7445
#, c-format
msgid "invalid operand code `%c'"
msgstr ""
-#: config/i386/i386.c:7071
+#: config/i386/i386.c:7488
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:11271
+#: config/i386/i386.c:11889
msgid "unknown insn mode"
msgstr ""
-#. @@@ better error message
-#: config/i386/i386.c:13391 config/i386/i386.c:13427
-msgid "selector must be an immediate"
-msgstr ""
-
-#. @@@ better error message
-#: config/i386/i386.c:13588 config/i386/i386.c:13622
-msgid "mask must be an immediate"
+#: config/i386/i386.c:14021 config/i386/i386.c:14057
+#, c-format
+msgid "selector must be an integer constant in the range 0..%i"
msgstr ""
-#: config/i386/i386.c:13654
+#: config/i386/i386.c:14285
msgid "shift must be an immediate"
msgstr ""
-#: config/i386/winnt.c:96
+#: config/i386/i386.c:15308
#, c-format
-msgid "function `%s' definition is marked dllimport."
-msgstr ""
+msgid "`%s' incompatible attribute ignored"
+msgstr "»%s«-inkompatibles Attribut wird ignoriert"
#: config/i386/winnt.c:104
-#, c-format
-msgid "variable `%s' definition is marked dllimport."
+msgid "%Jfunction `%D' definition is marked dllimport."
+msgstr "%JFunktionsdefinition von »%D« ist als »dllimport« markiert"
+
+#: config/i386/winnt.c:112
+msgid "%Jvariable `%D' definition is marked dllimport."
msgstr ""
-#: config/i386/winnt.c:123
-#, c-format
-msgid "external linkage required for symbol '%s' because of '%s' attribute."
+#: config/i386/winnt.c:132
+msgid "%Jexternal linkage required for symbol '%D' because of '%s' attribute."
msgstr ""
-#: config/i386/winnt.c:143
+#: config/i386/winnt.c:149
#, c-format
msgid "`%s' attribute only applies to variables"
msgstr ""
-#: config/i386/winnt.c:242
-#, c-format
-msgid "function '%s' is defined after prior declaration as dllimport: attribute ignored."
+#: config/i386/winnt.c:247
+msgid "%Jfunction '%D' is defined after prior declaration as dllimport: attribute ignored"
msgstr ""
-#: config/i386/winnt.c:252
-#, c-format
-msgid "inline function '%s' is declared as dllimport: attribute ignored."
-msgstr ""
+#: config/i386/winnt.c:258
+msgid "%Jinline function '%D' is declared as dllimport: attribute ignored."
+msgstr "%J»inline«-Funktion »%D« ist als »dllimport« deklariert: Attribute ignoriert."
-#: config/i386/winnt.c:263
-#, c-format
-msgid "definition of static data member '%s' of dllimport'd class."
+#: config/i386/winnt.c:270
+msgid "%Jdefinition of static data member '%D' of dllimport'd class."
msgstr ""
-#: config/i386/winnt.c:322
-#, c-format
-msgid "inconsistent dll linkage for '%s': dllexport assumed."
+#: config/i386/winnt.c:329
+msgid "%Jinconsistent dll linkage for '%D', dllexport assumed."
msgstr ""
-#: config/i386/winnt.c:364
+#: config/i386/winnt.c:371
#, c-format
msgid "`%s' declared as both exported to and imported from a DLL"
msgstr ""
-#: config/i386/winnt.c:373
-#, c-format
-msgid "failure in redeclaration of '%s': dllimport'd symbol lacks external linkage."
+#: config/i386/winnt.c:380
+msgid "%Jfailure in redeclaration of '%D': dllimport'd symbol lacks external linkage."
msgstr ""
-#: config/i386/winnt.c:479
-#, c-format
-msgid "'%s' %s after being referenced with dllimport linkage."
+#: config/i386/winnt.c:529
+msgid "%J'%D' defined locally after being referenced with dllimport linkage"
+msgstr ""
+
+#: config/i386/winnt.c:532
+msgid "%J'%D' redeclared without dllimport attribute after being referenced with dllimport linkage"
+msgstr ""
+
+#: config/i386/winnt.c:701
+msgid "%J'%D' causes a section type conflict"
msgstr ""
-#: config/i386/cygwin.h:45
+#: config/i386/cygming.h:40
msgid "Use the Cygwin interface"
msgstr ""
-#: config/i386/cygwin.h:46
+#: config/i386/cygming.h:41
msgid "Use the Mingw32 interface"
msgstr ""
-#: config/i386/cygwin.h:47
+#: config/i386/cygming.h:42
msgid "Create GUI application"
msgstr ""
-#: config/i386/cygwin.h:48
+#: config/i386/cygming.h:43
msgid "Don't set Windows defines"
msgstr ""
-#: config/i386/cygwin.h:49
+#: config/i386/cygming.h:44
msgid "Set Windows defines"
msgstr ""
-#: config/i386/cygwin.h:50
+#: config/i386/cygming.h:45
msgid "Create console application"
msgstr ""
-#: config/i386/cygwin.h:51 config/i386/win32.h:59
+#: config/i386/cygming.h:46
msgid "Generate code for a DLL"
msgstr ""
-#: config/i386/cygwin.h:53 config/i386/win32.h:61
+#: config/i386/cygming.h:48
msgid "Ignore dllimport for functions"
msgstr ""
-#: config/i386/cygwin.h:55
+#: config/i386/cygming.h:50
msgid "Use Mingw-specific thread support"
msgstr ""
-#: config/i386/cygwin.h:245
+#: config/i386/cygming.h:169
#, c-format
msgid "-f%s ignored for target (all code is position independent)"
msgstr ""
-#: config/i386/djgpp.h:206
+#: config/i386/djgpp.h:191
msgid "-mbnu210 is ignored (option is obsolete)"
msgstr ""
+#: config/i386/i386-interix.h:256
+msgid "ms-bitfields not supported for objc"
+msgstr "ms-Bitfelder nicht unterstützt für objc"
+
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
-#: config/i386/i386.h:306
+#: config/i386/i386.h:339
msgid "Alternate calling convention"
msgstr ""
-#: config/i386/i386.h:308 config/m68k/m68k.h:180 config/ns32k/ns32k.h:144
+#: config/i386/i386.h:341 config/m68k/m68k.h:344 config/ns32k/ns32k.h:144
msgid "Use normal calling convention"
msgstr ""
-#: config/i386/i386.h:310
+#: config/i386/i386.h:343
msgid "Align some doubles on dword boundary"
msgstr ""
-#: config/i386/i386.h:312
+#: config/i386/i386.h:345
msgid "Align doubles on word boundary"
msgstr ""
-#: config/i386/i386.h:314
+#: config/i386/i386.h:347
msgid "Uninitialized locals in .bss"
msgstr ""
-#: config/i386/i386.h:316
+#: config/i386/i386.h:349
msgid "Uninitialized locals in .data"
msgstr ""
-#: config/i386/i386.h:318 config/m68k/linux-aout.h:45 config/m68k/linux.h:50
-#: config/ns32k/ns32k.h:167
+#: config/i386/i386.h:351 config/m68k/linux.h:35 config/ns32k/ns32k.h:167
msgid "Use IEEE math for fp comparisons"
msgstr ""
-#: config/i386/i386.h:320 config/ns32k/ns32k.h:169
+#: config/i386/i386.h:353 config/ns32k/ns32k.h:169
msgid "Do not use IEEE math for fp comparisons"
msgstr ""
-#: config/i386/i386.h:322
+#: config/i386/i386.h:355
msgid "Return values of functions in FPU registers"
msgstr ""
-#: config/i386/i386.h:324
+#: config/i386/i386.h:357
msgid "Do not return values of functions in FPU registers"
msgstr ""
-#: config/i386/i386.h:326
+#: config/i386/i386.h:359
msgid "Do not generate sin, cos, sqrt for FPU"
msgstr ""
-#: config/i386/i386.h:328
+#: config/i386/i386.h:361
msgid "Generate sin, cos, sqrt for FPU"
msgstr ""
-#: config/i386/i386.h:330
+#: config/i386/i386.h:363
msgid "Omit the frame pointer in leaf functions"
msgstr ""
-#: config/i386/i386.h:333
+#: config/i386/i386.h:366
msgid "Enable stack probing"
msgstr ""
#. undocumented
#. undocumented
-#: config/i386/i386.h:338
+#: config/i386/i386.h:371
msgid "Align destination of the string operations"
msgstr ""
-#: config/i386/i386.h:340
+#: config/i386/i386.h:373
msgid "Do not align destination of the string operations"
msgstr ""
-#: config/i386/i386.h:342
+#: config/i386/i386.h:375
msgid "Inline all known string operations"
msgstr ""
-#: config/i386/i386.h:344
+#: config/i386/i386.h:377
msgid "Do not inline all known string operations"
msgstr ""
-#: config/i386/i386.h:346 config/i386/i386.h:350
+#: config/i386/i386.h:379 config/i386/i386.h:383
msgid "Use push instructions to save outgoing arguments"
msgstr ""
-#: config/i386/i386.h:348 config/i386/i386.h:352
+#: config/i386/i386.h:381 config/i386/i386.h:385
msgid "Do not use push instructions to save outgoing arguments"
msgstr ""
-#: config/i386/i386.h:354
+#: config/i386/i386.h:387
msgid "Support MMX built-in functions"
msgstr ""
-#: config/i386/i386.h:356
+#: config/i386/i386.h:389
msgid "Do not support MMX built-in functions"
msgstr ""
-#: config/i386/i386.h:358
+#: config/i386/i386.h:391
msgid "Support 3DNow! built-in functions"
msgstr ""
-#: config/i386/i386.h:360
+#: config/i386/i386.h:393
msgid "Do not support 3DNow! built-in functions"
msgstr ""
-#: config/i386/i386.h:362
+#: config/i386/i386.h:395
msgid "Support MMX and SSE built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:364
+#: config/i386/i386.h:397
msgid "Do not support MMX and SSE built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:366
+#: config/i386/i386.h:399
msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:368
+#: config/i386/i386.h:401
msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:370
+#: config/i386/i386.h:403
+msgid "Support MMX, SSE, SSE2 and PNI built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.h:405
+msgid "Do not support MMX, SSE, SSE2 and PNI built-in functions and code generation"
+msgstr ""
+
+#: config/i386/i386.h:407
msgid "sizeof(long double) is 16"
msgstr ""
-#: config/i386/i386.h:372
+#: config/i386/i386.h:409
msgid "sizeof(long double) is 12"
msgstr ""
-#: config/i386/i386.h:374
+#: config/i386/i386.h:411
msgid "Generate 64bit x86-64 code"
msgstr ""
-#: config/i386/i386.h:376
+#: config/i386/i386.h:413
msgid "Generate 32bit i386 code"
msgstr ""
-#: config/i386/i386.h:378
+#: config/i386/i386.h:415
+msgid "Use native (MS) bitfield layout"
+msgstr ""
+
+#: config/i386/i386.h:417
+msgid "Use gcc default bitfield layout"
+msgstr ""
+
+#: config/i386/i386.h:419
msgid "Use red-zone in the x86-64 code"
msgstr ""
-#: config/i386/i386.h:380
+#: config/i386/i386.h:421
msgid "Do not use red-zone in the x86-64 code"
msgstr ""
+#: config/i386/i386.h:423
+#, c-format
+msgid "Use direct references against %gs when accessing tls data"
+msgstr ""
+
+#: config/i386/i386.h:425
+#, c-format
+msgid "Do not use direct references against %gs when accessing tls data"
+msgstr ""
+
#. This macro is similar to `TARGET_SWITCHES' but defines names of
#. command options that have values. Its definition is an
#. initializer with a subgrouping for each command option.
@@ -10526,23 +9679,24 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:409 config/rs6000/rs6000.h:393 config/sparc/sparc.h:635
+#: config/i386/i386.h:459 config/ia64/ia64.h:269 config/rs6000/rs6000.h:437
+#: config/s390/s390.h:146 config/sparc/sparc.h:650
msgid "Schedule code for given CPU"
msgstr ""
-#: config/i386/i386.h:411
+#: config/i386/i386.h:461
msgid "Generate floating point mathematics using given instruction set"
msgstr ""
-#: config/i386/i386.h:413
+#: config/i386/i386.h:463 config/s390/s390.h:148
msgid "Generate code for given CPU"
msgstr ""
-#: config/i386/i386.h:415
+#: config/i386/i386.h:465
msgid "Number of registers used to pass integer arguments"
msgstr ""
-#. TARGET_DEFAULT is defined in sun*.h and isi.h, etc.
+#. TARGET_DEFAULT is defined in m68k-none.h, netbsd.h, etc.
#. This macro is similar to `TARGET_SWITCHES' but defines names of
#. command options that have values. Its definition is an
#. initializer with a subgrouping for each command option.
@@ -10552,97 +9706,98 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:417 config/m68k/m68k.h:263
+#: config/i386/i386.h:467 config/m68k/m68k.h:360
msgid "Loop code aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:419 config/m68k/m68k.h:265
+#: config/i386/i386.h:469 config/m68k/m68k.h:362
msgid "Jump targets are aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:421 config/m68k/m68k.h:267
+#: config/i386/i386.h:471 config/m68k/m68k.h:364
msgid "Function starts are aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:424
+#: config/i386/i386.h:474
msgid "Attempt to keep stack aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:426
+#: config/i386/i386.h:476
msgid "Branches are this expensive (1-5, arbitrary units)"
msgstr ""
-#: config/i386/i386.h:428
+#: config/i386/i386.h:478
msgid "Use given x86-64 code model"
msgstr ""
#. Undocumented.
#. Undocumented.
-#: config/i386/i386.h:434
+#: config/i386/i386.h:484
msgid "Use given assembler dialect"
msgstr ""
-#: config/i386/i386.h:436
+#: config/i386/i386.h:486
msgid "Use given thread-local storage dialect"
msgstr ""
-#: config/i386/sco5.h:297
+#: config/i386/sco5.h:292
msgid "Generate ELF output"
msgstr ""
-#: config/i386/win32.h:53
-msgid "Use Mingw32 interface"
-msgstr ""
-
-#: config/i386/win32.h:55
-msgid "Use Cygwin interface"
-msgstr ""
-
-#: config/i386/win32.h:57
-msgid "Use bare Windows interface"
-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:71
+#: config/i386/xm-djgpp.h:64
msgid "environment variable DJGPP not defined"
msgstr ""
-#: config/i386/xm-djgpp.h:73
+#: config/i386/xm-djgpp.h:66
#, c-format
msgid "environment variable DJGPP points to missing file '%s'"
msgstr ""
-#: config/i386/xm-djgpp.h:76
+#: config/i386/xm-djgpp.h:69
#, c-format
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/i960/i960-c.c:66
+#. 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/i860/i860.h:60
+msgid "Generate code which uses the FPU"
+msgstr ""
+
+#: config/i860/i860.h:61 config/i860/i860.h:62
+msgid "Do not generate code which uses the FPU"
+msgstr ""
+
+#: config/i960/i960-c.c:68
msgid "sorry, not implemented: #pragma align NAME=SIZE"
msgstr ""
-#: config/i960/i960-c.c:71
+#: config/i960/i960-c.c:73
msgid "malformed #pragma align - ignored"
msgstr ""
-#: config/i960/i960-c.c:109
+#: config/i960/i960-c.c:111
msgid "sorry, not implemented: #pragma noalign NAME"
msgstr ""
-#: config/i960/i960.c:121 config/i960/i960.c:131
+#: config/i960/i960.c:134 config/i960/i960.c:144
msgid "conflicting architectures defined - using C series"
msgstr ""
-#: config/i960/i960.c:126
+#: config/i960/i960.c:139
msgid "conflicting architectures defined - using K series"
msgstr ""
-#: config/i960/i960.c:141
+#: config/i960/i960.c:154
msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
msgstr ""
-#: config/i960/i960.c:1448 config/m68k/m68k.c:559 config/rs6000/rs6000.c:9976
+#: config/i960/i960.c:1456 config/m68k/m68k.c:588 config/rs6000/rs6000.c:11296
msgid "stack limit expression is not supported"
msgstr ""
@@ -10653,394 +9808,536 @@ 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:240
+#: config/i960/i960.h:250
msgid "Generate SA code"
msgstr ""
-#: config/i960/i960.h:243
+#: config/i960/i960.h:253
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:248
+#: config/i960/i960.h:258
msgid "Generate KA code"
msgstr ""
-#: config/i960/i960.h:251
+#: config/i960/i960.h:261
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:256
+#: config/i960/i960.h:266
msgid "Generate JA code"
msgstr ""
-#: config/i960/i960.h:258
+#: config/i960/i960.h:268
msgid "Generate JD code"
msgstr ""
-#: config/i960/i960.h:261
+#: config/i960/i960.h:271
msgid "Generate JF code"
msgstr ""
-#: config/i960/i960.h:263
+#: config/i960/i960.h:273
msgid "generate RP code"
msgstr ""
-#: config/i960/i960.h:266
+#: config/i960/i960.h:276
msgid "Generate MC code"
msgstr ""
-#: config/i960/i960.h:269
+#: config/i960/i960.h:279
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:279
+#: config/i960/i960.h:289
msgid "Generate CF code"
msgstr ""
-#: config/i960/i960.h:283 config/mips/mips.h:568 config/pa/pa.h:266
+#: config/i960/i960.h:293 config/mips/mips.h:539 config/pa/pa.h:266
msgid "Use software floating point"
msgstr ""
-#: config/i960/i960.h:285
+#: config/i960/i960.h:295
msgid "Use alternate leaf function entries"
msgstr ""
-#: config/i960/i960.h:287
+#: config/i960/i960.h:297
msgid "Do not use alternate leaf function entries"
msgstr ""
-#: config/i960/i960.h:289
+#: config/i960/i960.h:299
msgid "Perform tail call optimization"
msgstr ""
-#: config/i960/i960.h:291
+#: config/i960/i960.h:301
msgid "Do not perform tail call optimization"
msgstr ""
-#: config/i960/i960.h:293
+#: config/i960/i960.h:303
msgid "Use complex addressing modes"
msgstr ""
-#: config/i960/i960.h:295
+#: config/i960/i960.h:305
msgid "Do not use complex addressing modes"
msgstr ""
-#: config/i960/i960.h:297
+#: config/i960/i960.h:307
msgid "Align code to 8 byte boundary"
msgstr ""
-#: config/i960/i960.h:299
+#: config/i960/i960.h:309
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:305 config/i960/i960.h:307
+#: config/i960/i960.h:315 config/i960/i960.h:317
msgid "Enable compatibility with iC960 v2.0"
msgstr ""
-#: config/i960/i960.h:309
+#: config/i960/i960.h:319
msgid "Enable compatibility with iC960 v3.0"
msgstr ""
-#: config/i960/i960.h:311 config/i960/i960.h:313
+#: config/i960/i960.h:321 config/i960/i960.h:323
msgid "Enable compatibility with ic960 assembler"
msgstr ""
-#: config/i960/i960.h:315
+#: config/i960/i960.h:325
msgid "Do not permit unaligned accesses"
msgstr ""
-#: config/i960/i960.h:317
+#: config/i960/i960.h:327
msgid "Permit unaligned accesses"
msgstr ""
-#: config/i960/i960.h:319
+#: config/i960/i960.h:329
msgid "Layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:321
+#: config/i960/i960.h:331
msgid "Do not layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:323 config/sparc/freebsd.h:80 config/sparc/linux.h:86
-#: config/sparc/linux64.h:88 config/sparc/netbsd-elf.h:238
+#: config/i960/i960.h:333 config/sparc/freebsd.h:76 config/sparc/linux.h:91
+#: config/sparc/linux64.h:103 config/sparc/netbsd-elf.h:215
msgid "Use 64 bit long doubles"
msgstr ""
-#: config/i960/i960.h:325
+#: config/i960/i960.h:335
msgid "Enable linker relaxation"
msgstr ""
-#: config/i960/i960.h:327
+#: config/i960/i960.h:337
msgid "Do not enable linker relaxation"
msgstr ""
-#: config/ia64/ia64-c.c:51
+#: config/ia64/ia64-c.c:52
msgid "malformed #pragma builtin"
msgstr ""
-#: config/ia64/ia64.c:4015
+#: config/ia64/ia64.c:1021 config/m32r/m32r.c:354
+#, c-format
+msgid "invalid argument of `%s' attribute"
+msgstr ""
+
+#: config/ia64/ia64.c:1033
+msgid "%Jan address area attribute cannot be specified for local variables"
+msgstr "%Jfür lokale Variablen kann kein Adressabschnittsattribut angegeben werden"
+
+#: config/ia64/ia64.c:1040
+msgid "%Jaddress area of '%s' conflicts with previous declaration"
+msgstr "%JAdressabschnitt von »%s« in Konflikt mit vorheriger Deklaration"
+
+#: config/ia64/ia64.c:1047
+msgid "%Jaddress area attribute cannot be specified for functions"
+msgstr "%JAdressabschnittsattribut kann nicht für Funktionen angegeben werden"
+
+#: config/ia64/ia64.c:4288
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:4292
+#: config/ia64/ia64.c:4628
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:4319
+#: config/ia64/ia64.c:4655
#, c-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:4350
+#: config/ia64/ia64.c:4703
msgid "cannot optimize floating point division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:4356
+#: config/ia64/ia64.c:4709
msgid "cannot optimize integer division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:4368
+#: config/ia64/ia64.c:4715
+msgid "cannot optimize square root for both latency and throughput"
+msgstr ""
+
+#: config/ia64/ia64.c:4721
+msgid "not yet implemented: latency-optimized inline square root"
+msgstr ""
+
+#: config/ia64/ia64.c:4733
#, c-format
msgid "bad value (%s) for -mtls-size= switch"
msgstr ""
+#: config/ia64/ia64.c:4749
+#, c-format
+msgid "bad value (%s) for -tune= switch"
+msgstr ""
+
#. This macro defines names of command options to set and clear bits in
#. `target_flags'. Its definition is an initializer with a subgrouping for
#. each command option.
-#: config/ia64/ia64.h:154
+#: config/ia64/ia64.h:172
msgid "Generate big endian code"
msgstr ""
-#: config/ia64/ia64.h:156 config/mcore/mcore.h:159
+#: config/ia64/ia64.h:174 config/mcore/mcore.h:154
msgid "Generate little endian code"
msgstr ""
-#: config/ia64/ia64.h:158
+#: config/ia64/ia64.h:176
msgid "Generate code for GNU as"
msgstr ""
-#: config/ia64/ia64.h:160
+#: config/ia64/ia64.h:178
msgid "Generate code for Intel as"
msgstr ""
-#: config/ia64/ia64.h:162
+#: config/ia64/ia64.h:180
msgid "Generate code for GNU ld"
msgstr ""
-#: config/ia64/ia64.h:164
+#: config/ia64/ia64.h:182
msgid "Generate code for Intel ld"
msgstr ""
-#: config/ia64/ia64.h:166
+#: config/ia64/ia64.h:184
msgid "Generate code without GP reg"
msgstr ""
-#: config/ia64/ia64.h:168
+#: config/ia64/ia64.h:186
msgid "Emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:170
+#: config/ia64/ia64.h:188
msgid "Don't emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:172
+#: config/ia64/ia64.h:190
msgid "Emit code for Itanium (TM) processor B step"
msgstr ""
-#: config/ia64/ia64.h:174
+#: config/ia64/ia64.h:192
msgid "Use in/loc/out register names"
msgstr ""
-#: config/ia64/ia64.h:176
+#: config/ia64/ia64.h:194
msgid "Disable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:178
+#: config/ia64/ia64.h:196
msgid "Enable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:180
+#: config/ia64/ia64.h:198
msgid "gp is constant (but save/restore gp on indirect calls)"
msgstr ""
-#: config/ia64/ia64.h:182
+#: config/ia64/ia64.h:200
msgid "Generate self-relocatable code"
msgstr ""
-#: config/ia64/ia64.h:184
+#: config/ia64/ia64.h:202
msgid "Generate inline floating point division, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:186
+#: config/ia64/ia64.h:204
msgid "Generate inline floating point division, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:188
+#: config/ia64/ia64.h:206
msgid "Generate inline integer division, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:190
+#: config/ia64/ia64.h:208
msgid "Generate inline integer division, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:192
+#: config/ia64/ia64.h:210
+msgid "Generate inline square root, optimize for latency"
+msgstr ""
+
+#: config/ia64/ia64.h:212
+msgid "Generate inline square root, optimize for throughput"
+msgstr ""
+
+#: config/ia64/ia64.h:214
msgid "Enable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:194
+#: config/ia64/ia64.h:216
msgid "Disable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:223
+#: config/ia64/ia64.h:218
+msgid "Enable earlier placing stop bits for better scheduling"
+msgstr ""
+
+#: config/ia64/ia64.h:220
+msgid "Disable earlier placing stop bits"
+msgstr ""
+
+#: config/ia64/ia64.h:265
msgid "Specify range of registers to make fixed"
msgstr ""
-#: config/ip2k/ip2k.c:1090
+#: config/ip2k/ip2k.c:1074
msgid "bad operand"
msgstr ""
-#: config/m32r/m32r.c:139
+#: config/iq2000/iq2000.c:1816
#, c-format
-msgid "bad value (%s) for -mmodel switch"
+msgid "bad value (%s) for -mcpu= switch"
msgstr ""
-#: config/m32r/m32r.c:148
+#: config/iq2000/iq2000.c:1845
#, c-format
-msgid "bad value (%s) for -msdata switch"
+msgid "The compiler does not support -march=%s."
+msgstr "Der Compiler unterstützt nicht -march=%s."
+
+#: config/iq2000/iq2000.c:2232
+#, c-format
+msgid "gp_offset (%ld) or end_offset (%ld) is less than zero."
msgstr ""
-#: config/m32r/m32r.c:319
+#: config/iq2000/iq2000.c:3023
#, c-format
-msgid "invalid argument of `%s' attribute"
+msgid "argument `%d' is not a constant"
+msgstr "Argument »%d« ist keine Konstante"
+
+#: config/iq2000/iq2000.c:3314 config/xtensa/xtensa.c:2081
+msgid "PRINT_OPERAND_ADDRESS, null pointer"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3469
+#, c-format
+msgid "PRINT_OPERAND: Unknown punctuation '%c'"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3478 config/mips/mips.c:5457
+#: config/xtensa/xtensa.c:1935
+msgid "PRINT_OPERAND null pointer"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3547
+#, c-format
+msgid "invalid %%P operand"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3555 config/rs6000/rs6000.c:8881
+#, c-format
+msgid "invalid %%p value"
+msgstr ""
+
+#: config/iq2000/iq2000.c:3619 config/mips/mips.c:5587
+#, c-format
+msgid "invalid use of %%d, %%x, or %%X"
+msgstr ""
+
+#: config/iq2000/iq2000.h:72 config/mn10300/mn10300.h:74
+msgid "No default crt0.o"
+msgstr ""
+
+#: config/iq2000/iq2000.h:74
+msgid "Use GP relative sdata/sbss sections"
+msgstr ""
+
+#: config/iq2000/iq2000.h:76
+msgid "Don't use GP relative sdata/sbss sections"
+msgstr ""
+
+#: config/iq2000/iq2000.h:78 config/mips/mips.h:563
+msgid "Use ROM instead of RAM"
+msgstr ""
+
+#: config/iq2000/iq2000.h:80 config/mips/mips.h:565
+msgid "Don't use ROM instead of RAM"
+msgstr ""
+
+#: config/iq2000/iq2000.h:82 config/mips/mips.h:567
+msgid "Put uninitialized constants in ROM (needs -membedded-data)"
+msgstr ""
+
+#: config/iq2000/iq2000.h:84 config/mips/mips.h:569
+msgid "Don't put uninitialized constants in ROM"
+msgstr ""
+
+#: config/iq2000/iq2000.h:106 config/mips/mips.h:731 config/pa/pa.h:310
+msgid "Specify CPU for scheduling purposes"
+msgstr ""
+
+#: config/iq2000/iq2000.h:108 config/mips/mips.h:733
+msgid "Specify CPU for code generation purposes"
+msgstr ""
+
+#: config/m32r/m32r.c:172
+#, c-format
+msgid "bad value (%s) for -mmodel switch"
+msgstr ""
+
+#: config/m32r/m32r.c:181
+#, c-format
+msgid "bad value (%s) for -msdata switch"
msgstr ""
-#: config/m32r/m32r.c:422
-msgid "const objects cannot go in .sdata/.sbss"
+#: config/m32r/m32r.c:188
+#, c-format
+msgid "bad value (%s) for -flush-trap=n (0=<n<=15)"
msgstr ""
-#: config/m32r/m32r.c:2256
+#: config/m32r/m32r.c:2295
#, c-format
msgid "invalid operand to %%s code"
msgstr ""
-#: config/m32r/m32r.c:2263
+#: config/m32r/m32r.c:2302
#, c-format
msgid "invalid operand to %%p code"
msgstr ""
-#: config/m32r/m32r.c:2318
+#: config/m32r/m32r.c:2357
msgid "bad insn for 'A'"
msgstr ""
-#: config/m32r/m32r.c:2370
+#: config/m32r/m32r.c:2404
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr ""
-#: config/m32r/m32r.c:2393
+#: config/m32r/m32r.c:2427
#, c-format
msgid "invalid operand to %%N code"
msgstr ""
-#: config/m32r/m32r.c:2438
+#: config/m32r/m32r.c:2460
msgid "pre-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2445
+#: config/m32r/m32r.c:2467
msgid "pre-decrement address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2452
+#: config/m32r/m32r.c:2474
msgid "post-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2530 config/m32r/m32r.c:2546
-#: config/rs6000/rs6000.c:12802
+#: config/m32r/m32r.c:2550 config/m32r/m32r.c:2566
+#: config/rs6000/rs6000.c:14753
msgid "bad address"
msgstr ""
-#: config/m32r/m32r.c:2551
+#: config/m32r/m32r.c:2571
msgid "lo_sum not of register"
msgstr ""
#. { "relax", TARGET_RELAX_MASK, "" }, { "no-relax", -TARGET_RELAX_MASK, "" },
-#: config/m32r/m32r.h:241
+#: config/m32r/m32r.h:277
msgid "Display compile time statistics"
msgstr ""
-#: config/m32r/m32r.h:243
+#: config/m32r/m32r.h:279
msgid "Align all loops to 32 byte boundary"
msgstr ""
-#: config/m32r/m32r.h:246
+#: config/m32r/m32r.h:282
msgid "Only issue one instruction per cycle"
msgstr ""
-#: config/m32r/m32r.h:249
+#: config/m32r/m32r.h:285
msgid "Prefer branches over conditional execution"
msgstr ""
-#: config/m32r/m32r.h:265
+#: config/m32r/m32r.h:306
msgid "Code size: small, medium or large"
msgstr ""
-#: config/m32r/m32r.h:267
+#: config/m32r/m32r.h:308
msgid "Small data area: none, sdata, use"
msgstr ""
-#: config/m68hc11/m68hc11.c:242
+#: config/m32r/m32r.h:310 config/mips/mips.h:739
+msgid "Don't call any cache flush functions"
+msgstr ""
+
+#: config/m32r/m32r.h:312 config/mips/mips.h:741
+msgid "Specify cache flush function"
+msgstr ""
+
+#: config/m32r/m32r.h:314
+msgid "Don't call any cache flush trap"
+msgstr ""
+
+#: config/m32r/m32r.h:316
+msgid "Specify cache flush trap number"
+msgstr ""
+
+#: config/m68hc11/m68hc11.c:269
#, c-format
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
msgstr ""
-#: config/m68hc11/m68hc11.c:1305
+#: config/m68hc11/m68hc11.c:1260
msgid "`trap' and `far' attributes are not compatible, ignoring `far'"
msgstr ""
-#: config/m68hc11/m68hc11.c:1311
-#, fuzzy
+#: config/m68hc11/m68hc11.c:1266
msgid "`trap' attribute is already used"
-msgstr "Attribut »%s« wird ignoriert"
+msgstr "»trap«-Attribut wird bereits verwendet"
#. !!!! SCz wrong here.
-#: config/m68hc11/m68hc11.c:3327 config/m68hc11/m68hc11.c:3733
+#: config/m68hc11/m68hc11.c:3222 config/m68hc11/m68hc11.c:3606
msgid "move insn not handled"
msgstr ""
-#: config/m68hc11/m68hc11.c:3579 config/m68hc11/m68hc11.c:3663
-#: config/m68hc11/m68hc11.c:3946
+#: config/m68hc11/m68hc11.c:3454 config/m68hc11/m68hc11.c:3538
+#: config/m68hc11/m68hc11.c:3809
msgid "invalid register in the move instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3613
+#: config/m68hc11/m68hc11.c:3488
msgid "invalid operand in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3920
+#: config/m68hc11/m68hc11.c:3783
msgid "invalid register in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3953
+#: config/m68hc11/m68hc11.c:3816
msgid "operand 1 must be a hard register"
msgstr ""
-#: config/m68hc11/m68hc11.c:3970
+#: config/m68hc11/m68hc11.c:3830
msgid "invalid rotate insn"
msgstr ""
-#: config/m68hc11/m68hc11.c:4391
+#: config/m68hc11/m68hc11.c:4246
msgid "registers IX, IY and Z used in the same INSN"
msgstr ""
-#: config/m68hc11/m68hc11.c:4728 config/m68hc11/m68hc11.c:5031
+#: config/m68hc11/m68hc11.c:4583 config/m68hc11/m68hc11.c:4883
msgid "cannot do z-register replacement"
msgstr ""
-#: config/m68hc11/m68hc11.c:5094
+#: config/m68hc11/m68hc11.c:4946
msgid "invalid Z register replacement for insn"
msgstr ""
@@ -11048,55 +10345,55 @@ msgstr ""
#. 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/m68hc11/m68hc11.h:172
+#: config/m68hc11/m68hc11.h:177
msgid "Compile with 16-bit integer mode"
msgstr ""
-#: config/m68hc11/m68hc11.h:174
+#: config/m68hc11/m68hc11.h:179
msgid "Compile with 32-bit integer mode"
msgstr ""
-#: config/m68hc11/m68hc11.h:176
+#: config/m68hc11/m68hc11.h:181
msgid "Auto pre/post decrement increment allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:178
+#: config/m68hc11/m68hc11.h:183
msgid "Auto pre/post decrement increment not allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:180
+#: config/m68hc11/m68hc11.h:185
msgid "Min/max instructions allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:182
+#: config/m68hc11/m68hc11.h:187
msgid "Min/max instructions not allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:184
+#: config/m68hc11/m68hc11.h:189
msgid "Use call and rtc for function calls and returns"
msgstr ""
-#: config/m68hc11/m68hc11.h:186
+#: config/m68hc11/m68hc11.h:191
msgid "Use jsr and rts for function calls and returns"
msgstr ""
-#: config/m68hc11/m68hc11.h:188
+#: config/m68hc11/m68hc11.h:193
msgid "Do not use direct addressing mode for soft registers"
msgstr ""
-#: config/m68hc11/m68hc11.h:190
+#: config/m68hc11/m68hc11.h:195
msgid "Use direct addressing mode for soft registers"
msgstr ""
-#: config/m68hc11/m68hc11.h:192 config/m68hc11/m68hc11.h:198
+#: config/m68hc11/m68hc11.h:197 config/m68hc11/m68hc11.h:203
msgid "Compile for a 68HC11"
msgstr ""
-#: config/m68hc11/m68hc11.h:194 config/m68hc11/m68hc11.h:200
+#: config/m68hc11/m68hc11.h:199 config/m68hc11/m68hc11.h:205
msgid "Compile for a 68HC12"
msgstr ""
-#: config/m68hc11/m68hc11.h:196 config/m68hc11/m68hc11.h:202
+#: config/m68hc11/m68hc11.h:201 config/m68hc11/m68hc11.h:207
msgid "Compile for a 68HCS12"
msgstr ""
@@ -11109,30 +10406,43 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/m68hc11/m68hc11.h:216
+#: config/m68hc11/m68hc11.h:221
msgid "Specify the register allocation order"
msgstr ""
-#: config/m68hc11/m68hc11.h:218
+#: config/m68hc11/m68hc11.h:223
msgid "Indicate the number of soft registers available"
msgstr ""
-#: config/m68k/m68k.c:158
+#: config/m68k/m68k.c:227
#, c-format
msgid "-malign-loops=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:169
+#: config/m68k/m68k.c:238
+msgid "-mshared-library-id= specified without -mid-shared-library"
+msgstr ""
+
+#: config/m68k/m68k.c:241
+#, c-format
+msgid "-mshared-library-id=%d is not between 0 and %d"
+msgstr ""
+
+#: config/m68k/m68k.c:255
+msgid "cannot specify both -msep-data and -mid-shared-library"
+msgstr "-msep-data und -mid-shared-library können nicht zusammen angegeben werden"
+
+#: config/m68k/m68k.c:270
#, c-format
msgid "-malign-jumps=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:180
+#: config/m68k/m68k.c:281
#, c-format
msgid "-malign-functions=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:189
+#: config/m68k/m68k.c:290
msgid "-fPIC is not currently supported on the 68000 or 68010\n"
msgstr ""
@@ -11141,503 +10451,431 @@ 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/m68k/m68k.h:162 config/m68k/m68k.h:164
+#: config/m68k/m68k.h:248 config/m68k/m68k.h:250
msgid "Generate code for a 68020"
msgstr ""
-#: config/m68k/m68k.h:169 config/m68k/m68k.h:172
+#: config/m68k/m68k.h:255 config/m68k/m68k.h:258
msgid "Generate code for a 68000"
msgstr ""
-#: config/m68k/m68k.h:174
+#: config/m68k/m68k.h:260
msgid "Use the bit-field instructions"
msgstr ""
-#: config/m68k/m68k.h:176
+#: config/m68k/m68k.h:262
msgid "Do not use the bit-field instructions"
msgstr ""
-#: config/m68k/m68k.h:178
-msgid "Use different calling convention using 'rtd'"
-msgstr ""
-
-#: config/m68k/m68k.h:182
+#: config/m68k/m68k.h:264
msgid "Consider type `int' to be 16 bits wide"
msgstr ""
-#: config/m68k/m68k.h:184
+#: config/m68k/m68k.h:266
msgid "Consider type `int' to be 32 bits wide"
msgstr ""
-#: config/m68k/m68k.h:186
-msgid "Generate code for a Sun FPA"
-msgstr ""
-
-#: config/m68k/m68k.h:189
-msgid "Do not generate code for a Sun FPA"
-msgstr ""
-
-#: config/m68k/m68k.h:191 config/m68k/m68k.h:193
-msgid "Generate code for a Sun Sky board"
-msgstr ""
-
-#: config/m68k/m68k.h:195
-msgid "Do not use Sky linkage convention"
-msgstr ""
-
-#: config/m68k/m68k.h:197
-msgid "Generate code for a 68881"
-msgstr ""
-
-#: config/m68k/m68k.h:200
+#: config/m68k/m68k.h:269
msgid "Generate code with library calls for floating point"
msgstr ""
-#: config/m68k/m68k.h:202
+#: config/m68k/m68k.h:271
msgid "Generate code for a 68040, without any new instructions"
-msgstr ""
+msgstr "Code für einen 68040 ohne neue Befehle erzeugen"
-#: config/m68k/m68k.h:205
+#: config/m68k/m68k.h:274
msgid "Generate code for a 68060, without any new instructions"
-msgstr ""
+msgstr "Code für einen 68060 ohne neue Befehle erzeugen"
-#: config/m68k/m68k.h:209
+#: config/m68k/m68k.h:278
msgid "Generate code for a 68030"
-msgstr ""
+msgstr "Code für einen 68030 erzeugen"
-#: config/m68k/m68k.h:212
+#: config/m68k/m68k.h:281
msgid "Generate code for a 68040"
-msgstr ""
+msgstr "Code für einen 68040 erzeugen"
-#: config/m68k/m68k.h:216
+#: config/m68k/m68k.h:285
msgid "Generate code for a 68060"
-msgstr ""
+msgstr "Code für einen 68060 erzeugen"
-#: config/m68k/m68k.h:221
+#: config/m68k/m68k.h:290
msgid "Generate code for a 520X"
-msgstr ""
+msgstr "Code für einen 520X erzeugen"
-#: config/m68k/m68k.h:224
+#: config/m68k/m68k.h:294
+msgid "Generate code for a 5206e"
+msgstr "Code für einen 5206e erzeugen"
+
+#: config/m68k/m68k.h:298
+msgid "Generate code for a 528x"
+msgstr "Code für einen 528x erzeugen"
+
+#: config/m68k/m68k.h:302
+msgid "Generate code for a 5307"
+msgstr "Code für einen 5307 erzeugen"
+
+#: config/m68k/m68k.h:306
+msgid "Generate code for a 5407"
+msgstr "Code für einen 5407 erzeugen"
+
+#: config/m68k/m68k.h:309
msgid "Generate code for a 68851"
-msgstr ""
+msgstr "Code für einen 68851 erzeugen"
-#: config/m68k/m68k.h:226
+#: config/m68k/m68k.h:311
msgid "Do no generate code for a 68851"
-msgstr ""
+msgstr "Code für einen 68851 erzeugen"
-#: config/m68k/m68k.h:229
+#: config/m68k/m68k.h:314
msgid "Generate code for a 68302"
-msgstr ""
+msgstr "Code für einen 68302 erzeugen"
-#: config/m68k/m68k.h:232
+#: config/m68k/m68k.h:317
msgid "Generate code for a 68332"
-msgstr ""
+msgstr "Code für einen 68332 erzeugen"
-#: config/m68k/m68k.h:236
+#: config/m68k/m68k.h:321
msgid "Generate code for a cpu32"
-msgstr ""
+msgstr "Code für eine cpu32 erzeugen"
-#: config/m68k/m68k.h:239
+#: config/m68k/m68k.h:324
msgid "Align variables on a 32-bit boundary"
msgstr ""
-#: config/m68k/m68k.h:241
+#: config/m68k/m68k.h:326
msgid "Align variables on a 16-bit boundary"
msgstr ""
-#: config/m68k/m68k.h:243
-msgid "Generate pc-relative code"
-msgstr ""
-
-#: config/m68k/m68k.h:245
-msgid "Do not use unaligned memory references"
-msgstr ""
-
-#: config/m68k/m68k.h:247
-msgid "Use unaligned memory references"
-msgstr ""
-
-#: config/m88k/m88k.c:903
-#, c-format
-msgid "internal gcc monitor: short-branch(%x)"
-msgstr ""
-
-#: config/m88k/m88k.c:2302
-msgid "internal gcc error: Can't express symbolic location"
-msgstr ""
-
-#: config/m88k/m88k.c:2517
-#, c-format
-msgid "argument #%d is a structure"
-msgstr ""
-
-#: config/m88k/m88k.c:2816
-#, c-format
-msgid "%%R not followed by %%B/C/D/E"
-msgstr ""
-
-#: config/m88k/m88k.c:2884
-#, c-format
-msgid "invalid %%x/X value"
-msgstr ""
-
-#: config/m88k/m88k.c:2901
-#, c-format
-msgid "invalid %%Q value"
-msgstr ""
-
-#: config/m88k/m88k.c:2907 config/rs6000/rs6000.c:7718
-#, c-format
-msgid "invalid %%q value"
-msgstr ""
-
-#: config/m88k/m88k.c:2913
-#, c-format
-msgid "invalid %%o value"
-msgstr ""
-
-#: config/m88k/m88k.c:2920 config/rs6000/rs6000.c:7681
-#, c-format
-msgid "invalid %%p value"
-msgstr ""
-
-#: config/m88k/m88k.c:2933 config/m88k/m88k.c:2938
-#, c-format
-msgid "invalid %%s/S value"
-msgstr ""
-
-#: config/m88k/m88k.c:2949
-#, c-format
-msgid "invalid %%P operand"
+#: config/m68k/m68k.h:328
+msgid "Enable separate data segment"
msgstr ""
-#: config/m88k/m88k.c:2980 config/romp/romp.c:690
-#, c-format
-msgid "invalid %%B value"
+#: config/m68k/m68k.h:330
+msgid "Disable separate data segment"
msgstr ""
-#: config/m88k/m88k.c:3010
-#, c-format
-msgid "invalid %%D value"
+#: config/m68k/m68k.h:332
+msgid "Enable ID based shared library"
msgstr ""
-#: config/m88k/m88k.c:3023
-#, c-format
-msgid "`%%d' operand isn't a register"
+#: config/m68k/m68k.h:334
+msgid "Disable ID based shared library"
msgstr ""
-#: config/m88k/m88k.c:3041
-msgid "operand is r0"
-msgstr ""
-
-#: config/m88k/m88k.c:3055
-msgid "operand is const_double"
-msgstr ""
-
-#: config/m88k/m88k.c:3074
-msgid "invalid code"
+#: config/m68k/m68k.h:336
+msgid "Generate pc-relative code"
msgstr ""
-#. Do any checking or such that is needed after processing the -m switches.
-#: config/m88k/m88k.h:277
-msgid "-mtrap-large-shift and -mhandle-large-shift are incompatible"
+#: config/m68k/m68k.h:338
+msgid "Do not use unaligned memory references"
msgstr ""
-#: config/m88k/m88k.h:299
-#, c-format
-msgid "invalid option `-mshort-data-%s'"
+#: config/m68k/m68k.h:340
+msgid "Use unaligned memory references"
msgstr ""
-#: config/m88k/m88k.h:304
-#, c-format
-msgid "-mshort-data-%s is too large "
+#: config/m68k/m68k.h:342
+msgid "Use different calling convention using 'rtd'"
msgstr ""
-#: config/m88k/m88k.h:306
-#, c-format
-msgid "-mshort-data-%s and PIC are incompatible"
+#: config/m68k/m68k.h:366
+msgid "ID of shared library to build"
msgstr ""
-#: config/mcore/mcore.c:3078
+#: config/mcore/mcore.c:2973
#, c-format
msgid "invalid option `-mstack-increment=%s'"
msgstr ""
-#: config/mcore/mcore.h:126
+#: config/mcore/mcore.h:121
msgid "Inline constants if it can be done in 2 insns or less"
msgstr ""
-#: config/mcore/mcore.h:128
+#: config/mcore/mcore.h:123
msgid "Inline constants if it only takes 1 instruction"
msgstr ""
-#: config/mcore/mcore.h:130
+#: config/mcore/mcore.h:125
msgid "Set maximum alignment to 4"
msgstr ""
-#: config/mcore/mcore.h:132
+#: config/mcore/mcore.h:127
msgid "Set maximum alignment to 8"
msgstr ""
-#: config/mcore/mcore.h:136
+#: config/mcore/mcore.h:131
msgid "Do not use the divide instruction"
msgstr ""
-#: config/mcore/mcore.h:140
+#: config/mcore/mcore.h:135
msgid "Do not arbitrary sized immediates in bit operations"
msgstr ""
-#: config/mcore/mcore.h:142
+#: config/mcore/mcore.h:137
msgid "Always treat bit-field as int-sized"
msgstr ""
-#: config/mcore/mcore.h:146
+#: config/mcore/mcore.h:141
msgid "Force functions to be aligned to a 4 byte boundary"
msgstr ""
-#: config/mcore/mcore.h:148
+#: config/mcore/mcore.h:143
msgid "Force functions to be aligned to a 2 byte boundary"
msgstr ""
-#: config/mcore/mcore.h:150
+#: config/mcore/mcore.h:145
msgid "Emit call graph information"
msgstr ""
-#: config/mcore/mcore.h:154
+#: config/mcore/mcore.h:149
msgid "Prefer word accesses over byte accesses"
msgstr ""
-#: config/mcore/mcore.h:165
+#: config/mcore/mcore.h:160
msgid "Generate code for the M*Core M340"
msgstr ""
-#: config/mcore/mcore.h:178
+#: config/mcore/mcore.h:173
msgid "Maximum amount for a single stack increment operation"
msgstr ""
-#: config/mips/mips.c:5128
-#, c-format
-msgid "bad value (%s) for -mabi= switch"
+#: config/mips/mips.c:3115 config/xtensa/xtensa.c:992
+#: config/xtensa/xtensa.c:1024 config/xtensa/xtensa.c:1033
+msgid "bad test"
msgstr ""
-#: config/mips/mips.c:5158
+#: config/mips/mips.c:4593
#, c-format
-msgid "-mips%d conflicts with the other architecture options, which specify a MIPS%d processor"
+msgid "bad value (%s) for -mabi= switch"
msgstr ""
-#: config/mips/mips.c:5165
+#: config/mips/mips.c:4616
#, c-format
-msgid "bad value (%s) for -mips switch"
+msgid "-mips%s conflicts with the other architecture options, which specify a MIPS%d processor"
msgstr ""
-#: config/mips/mips.c:5180
+#: config/mips/mips.c:4635
#, c-format
msgid "-march=%s is not compatible with the selected ABI"
msgstr ""
-#: config/mips/mips.c:5192
+#: config/mips/mips.c:4650
msgid "-mgp64 used with a 32-bit processor"
msgstr ""
-#: config/mips/mips.c:5194
+#: config/mips/mips.c:4652
msgid "-mgp32 used with a 64-bit ABI"
msgstr ""
-#: config/mips/mips.c:5196
+#: config/mips/mips.c:4654
msgid "-mgp64 used with a 32-bit ABI"
msgstr ""
-#: config/mips/mips.c:5214 config/mips/mips.c:5216 config/mips/mips.c:5218
+#: config/mips/mips.c:4672 config/mips/mips.c:4674 config/mips/mips.c:4676
+#: config/mips/mips.c:4804
#, c-format
msgid "unsupported combination: %s"
msgstr ""
-#: config/mips/mips.c:5288
+#: config/mips/mips.c:4768
+msgid "-g is only supported using GNU as,"
+msgstr ""
+
+#: config/mips/mips.c:4770
+msgid "-g is only supported using GNU as with -mabi=32,"
+msgstr ""
+
+#: config/mips/mips.c:4771 config/pa/pa.c:353
+msgid "-g option disabled"
+msgstr ""
+
+#: config/mips/mips.c:4799
msgid "generation of Branch Likely instructions enabled, but not supported by architecture"
msgstr ""
-#: config/mips/mips.c:5299
+#: config/mips/mips.c:4816
msgid "-G is incompatible with PIC code which is the default"
msgstr ""
-#: config/mips/mips.c:5315
+#: config/mips/mips.c:4844
msgid "-membedded-pic and -mabicalls are incompatible"
msgstr ""
-#: config/mips/mips.c:5318
+#: config/mips/mips.c:4847
msgid "-G and -membedded-pic are incompatible"
msgstr ""
-#: config/mips/mips.c:5369
-#, c-format
-msgid "invalid option `entry%s'"
+#: config/mips/mips.c:4879
+msgid "non-PIC n64 with explicit relocations"
msgstr ""
-#: config/mips/mips.c:5372
-msgid "-mentry is only meaningful with -mips-16"
+#: config/mips/mips.c:5267
+msgid "mips_debugger_offset called with non stack/frame/arg pointer"
msgstr ""
-#: config/mips/mips.c:5781
+#: config/mips/mips.c:5394
#, c-format
msgid "internal error: %%) found without a %%( in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5795
+#: config/mips/mips.c:5408
#, c-format
msgid "internal error: %%] found without a %%[ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5808
+#: config/mips/mips.c:5421
#, c-format
msgid "internal error: %%> found without a %%< in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5821
+#: config/mips/mips.c:5434
#, c-format
msgid "internal error: %%} found without a %%{ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5835
+#: config/mips/mips.c:5448
#, c-format
msgid "PRINT_OPERAND: unknown punctuation '%c'"
msgstr ""
-#: config/mips/mips.c:5844 config/xtensa/xtensa.c:1939
-msgid "PRINT_OPERAND null pointer"
-msgstr ""
-
-#: config/mips/mips.c:5975
+#: config/mips/mips.c:5477
#, c-format
-msgid "invalid use of %%d, %%x, or %%X"
+msgid "PRINT_OPERAND, invalid insn for %%C"
msgstr ""
-#: config/mips/mips.c:6013 config/xtensa/xtensa.c:2033
-msgid "PRINT_OPERAND_ADDRESS, null pointer"
+#: config/mips/mips.c:5494
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%N"
msgstr ""
-#: config/mips/mips.c:6242
-msgid "MIPS ECOFF format does not allow changing filenames within functions with #line"
+#: config/mips/mips.c:5503
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%F"
msgstr ""
-#: config/mips/mips.c:6552
-msgid "can't rewind temp file"
+#: config/mips/mips.c:5512
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%W"
msgstr ""
-#: config/mips/mips.c:6556
-msgid "can't write to output file"
+#: config/mips/mips.c:5618
+msgid "PRINT_OPERAND, invalid operand for relocation"
msgstr ""
-#: config/mips/mips.c:6559
-msgid "can't read from temp file"
+#: config/mips/mips.c:8252
+#, c-format
+msgid "can not handle inconsistent calls to `%s'"
msgstr ""
-#: config/mips/mips.c:6562
-msgid "can't close temp file"
+#: config/mips/mips.c:9258
+msgid "the cpu name must be lower case"
msgstr ""
-#: config/mips/mips.c:7003
+#: config/mips/mips.c:9280
#, c-format
-msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
+msgid "bad value (%s) for %s"
msgstr ""
-#: config/mips/mips.c:7112
+#: config/mips/mips.c:9549
#, c-format
-msgid "fp_offset (%ld) or end_offset (%ld) is less than zero"
-msgstr ""
+msgid "can't rewind temp file: %m"
+msgstr "temporäre Datei konnte nicht zurückgesetzt werden: %m"
-#: config/mips/mips.c:9335
+#: config/mips/mips.c:9553
#, c-format
-msgid "can not handle inconsistent calls to `%s'"
-msgstr ""
+msgid "can't write to output file: %m"
+msgstr "in die Ausgabedatei kann nicht geschrieben werden: %m"
-#: config/mips/mips.c:10467
-msgid "the cpu name must be lower case"
-msgstr ""
+#: config/mips/mips.c:9556
+#, c-format
+msgid "can't read from temp file: %m"
+msgstr "von der temporären Datei kann nicht gelesen werden: %m"
-#: config/mips/mips.c:10489
+#: config/mips/mips.c:9559
#, c-format
-msgid "bad value (%s) for %s"
+msgid "can't close temp file: %m"
+msgstr "die temporäre Datei kann nicht geschlossen werden: %m"
+
+#: config/mips/linux64.h:39
+msgid "Same as -mabi=32, just trickier"
msgstr ""
#. Target CPU builtins.
#. We do this here because __mips is defined below and so we can't use builtin_define_std.
#. Treat _R3000 and _R4000 like register-size defines, which is how they've historically been used.
#. Macros dependent on the C dialect.
-#. Bizzare, but needed at least for Irix.
+#. Bizarre, but needed at least for Irix.
#. 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/mips/mips.h:528 config/mn10300/mn10300.h:64
-msgid "No default crt0.o"
-msgstr ""
-
-#: config/mips/mips.h:530
+#: config/mips/mips.h:501
msgid "Use 64-bit int type"
msgstr ""
-#: config/mips/mips.h:532
+#: config/mips/mips.h:503
msgid "Use 64-bit long type"
msgstr ""
-#: config/mips/mips.h:534
+#: config/mips/mips.h:505
msgid "Use 32-bit long type"
msgstr ""
-#: config/mips/mips.h:536
+#: config/mips/mips.h:507
msgid "Optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:538
+#: config/mips/mips.h:509
msgid "Don't optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:540
+#: config/mips/mips.h:511
msgid "Use MIPS as"
msgstr ""
-#: config/mips/mips.h:542
+#: config/mips/mips.h:513
msgid "Use GNU as"
msgstr ""
-#: config/mips/mips.h:544
+#: config/mips/mips.h:515
msgid "Use symbolic register names"
msgstr ""
-#: config/mips/mips.h:546
+#: config/mips/mips.h:517
msgid "Don't use symbolic register names"
msgstr ""
-#: config/mips/mips.h:548 config/mips/mips.h:550
-msgid "Use GP relative sdata/sbss sections"
+#: config/mips/mips.h:519 config/mips/mips.h:521
+msgid "Use GP relative sdata/sbss sections (now ignored)"
msgstr ""
-#: config/mips/mips.h:552 config/mips/mips.h:554
-msgid "Don't use GP relative sdata/sbss sections"
+#: config/mips/mips.h:523 config/mips/mips.h:525
+msgid "Don't use GP relative sdata/sbss sections (now ignored)"
msgstr ""
-#: config/mips/mips.h:556
-msgid "Output compiler statistics"
+#: config/mips/mips.h:527
+msgid "Output compiler statistics (now ignored)"
msgstr ""
-#: config/mips/mips.h:558
+#: config/mips/mips.h:529
msgid "Don't output compiler statistics"
msgstr ""
-#: config/mips/mips.h:560
+#: config/mips/mips.h:531
msgid "Don't optimize block moves"
msgstr ""
-#: config/mips/mips.h:562
+#: config/mips/mips.h:533
msgid "Optimize block moves"
msgstr ""
-#: config/mips/mips.h:564
+#: config/mips/mips.h:535
msgid "Use mips-tfile asm postpass"
msgstr ""
-#: config/mips/mips.h:566
+#: config/mips/mips.h:537
msgid "Don't use mips-tfile asm postpass"
msgstr ""
@@ -11647,271 +10885,237 @@ 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:570 config/pdp11/pdp11.h:56
+#: config/mips/mips.h:541 config/pdp11/pdp11.h:61 config/rs6000/rs6000.h:314
msgid "Use hardware floating point"
msgstr ""
-#: config/mips/mips.h:572
+#: config/mips/mips.h:543
msgid "Use 64-bit FP registers"
msgstr ""
-#: config/mips/mips.h:574
+#: config/mips/mips.h:545
msgid "Use 32-bit FP registers"
msgstr ""
-#: config/mips/mips.h:576
+#: config/mips/mips.h:547
msgid "Use 64-bit general registers"
msgstr ""
-#: config/mips/mips.h:578
+#: config/mips/mips.h:549
msgid "Use 32-bit general registers"
msgstr ""
-#: config/mips/mips.h:580
+#: config/mips/mips.h:551
msgid "Use Irix PIC"
msgstr ""
-#: config/mips/mips.h:582
+#: config/mips/mips.h:553
msgid "Don't use Irix PIC"
msgstr ""
-#: config/mips/mips.h:584
+#: config/mips/mips.h:555
msgid "Use indirect calls"
msgstr ""
-#: config/mips/mips.h:586
+#: config/mips/mips.h:557
msgid "Don't use indirect calls"
msgstr ""
-#: config/mips/mips.h:588
+#: config/mips/mips.h:559
msgid "Use embedded PIC"
msgstr ""
-#: config/mips/mips.h:590
+#: config/mips/mips.h:561
msgid "Don't use embedded PIC"
msgstr ""
-#: config/mips/mips.h:592
-msgid "Use ROM instead of RAM"
-msgstr ""
-
-#: config/mips/mips.h:594
-msgid "Don't use ROM instead of RAM"
-msgstr ""
-
-#: config/mips/mips.h:596
-msgid "Put uninitialized constants in ROM (needs -membedded-data)"
-msgstr ""
-
-#: config/mips/mips.h:598
-msgid "Don't put uninitialized constants in ROM"
-msgstr ""
-
-#. Macro to define tables used to set the flags.
-#: config/mips/mips.h:600 config/xtensa/xtensa.h:110
+#: config/mips/mips.h:571
msgid "Use big-endian byte order"
msgstr ""
-#: config/mips/mips.h:602 config/xtensa/xtensa.h:112
+#: config/mips/mips.h:573
msgid "Use little-endian byte order"
msgstr ""
-#: config/mips/mips.h:604
+#: config/mips/mips.h:575
msgid "Use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:606
+#: config/mips/mips.h:577
msgid "Don't use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:608
+#: config/mips/mips.h:579
msgid "Use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:610
+#: config/mips/mips.h:581
msgid "Don't use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:612 config/rs6000/rs6000.h:314
+#: config/mips/mips.h:583
msgid "Don't generate fused multiply/add instructions"
msgstr ""
-#: config/mips/mips.h:614 config/rs6000/rs6000.h:312
+#: config/mips/mips.h:585 config/rs6000/rs6000.h:330
msgid "Generate fused multiply/add instructions"
msgstr ""
-#: config/mips/mips.h:616
+#: config/mips/mips.h:587
msgid "Work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:618
+#: config/mips/mips.h:589
msgid "Don't work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:620
-msgid "Trap on integer divide by zero"
+#: config/mips/mips.h:591
+msgid "Work around errata for early SB-1 revision 2 cores"
msgstr ""
-#: config/mips/mips.h:622
-msgid "Don't trap on integer divide by zero"
+#: config/mips/mips.h:593
+msgid "Don't work around errata for early SB-1 revision 2 cores"
msgstr ""
-#: config/mips/mips.h:624
-msgid "Trap on integer divide overflow"
+#: config/mips/mips.h:595
+msgid "Trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:626
-msgid "Don't trap on integer divide overflow"
+#: config/mips/mips.h:597
+msgid "Don't trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:628
+#: config/mips/mips.h:599
msgid "Use Branch Likely instructions, overriding default for arch"
msgstr ""
-#: config/mips/mips.h:630
+#: config/mips/mips.h:601
msgid "Don't use Branch Likely instructions, overriding default for arch"
msgstr ""
-#: config/mips/mips.h:744 config/pa/pa.h:310
-msgid "Specify CPU for scheduling purposes"
+#: config/mips/mips.h:603
+msgid "Use NewABI-style %reloc() assembly operators"
msgstr ""
-#: config/mips/mips.h:746
-msgid "Specify CPU for code generation purposes"
+#: config/mips/mips.h:605
+msgid "Use assembler macros instead of relocation operators"
msgstr ""
-#: config/mips/mips.h:748
-msgid "Specify an ABI"
+#: config/mips/mips.h:607
+msgid "Generate mips16 code"
msgstr ""
-#: config/mips/mips.h:750
-msgid "Specify a Standard MIPS ISA"
+#: config/mips/mips.h:609
+msgid "Generate normal-mode code"
msgstr ""
-#: config/mips/mips.h:752
-msgid "Use mips16 entry/exit psuedo ops"
+#: config/mips/mips.h:611
+msgid "Lift restrictions on GOT size"
msgstr ""
-#: config/mips/mips.h:754
-msgid "Don't use MIPS16 instructions"
+#: config/mips/mips.h:613
+msgid "Do not lift restrictions on GOT size"
msgstr ""
-#: config/mips/mips.h:756
-msgid "Don't call any cache flush functions"
+#: config/mips/mips.h:735
+msgid "Specify an ABI"
msgstr ""
-#: config/mips/mips.h:758
-msgid "Specify cache flush function"
+#: config/mips/mips.h:737
+msgid "Specify a Standard MIPS ISA"
msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2900
+#: config/mips/mips.h:2403
msgid "mips16 function profiling"
msgstr ""
-#: config/mmix/mmix.c:189
+#: config/mmix/mmix.c:207
#, c-format
msgid "-f%s not supported: ignored"
msgstr ""
-#: config/mmix/mmix.c:644
+#: config/mmix/mmix.c:633
#, c-format
msgid "too large function value type, needs %d registers, have only %d registers for this"
msgstr ""
-#: config/mmix/mmix.c:826
+#: config/mmix/mmix.c:803
msgid "function_profiler support for MMIX"
msgstr ""
-#: config/mmix/mmix.c:848
+#: config/mmix/mmix.c:823
msgid "MMIX Internal: Last named vararg would not fit in a register"
msgstr ""
-#: config/mmix/mmix.c:1639 config/mmix/mmix.c:1769
+#: config/mmix/mmix.c:1538 config/mmix/mmix.c:1668
msgid "MMIX Internal: Expected a CONST_INT, not this"
msgstr ""
-#: config/mmix/mmix.c:1647 config/mmix/mmix.c:1671 config/mmix/mmix.c:1787
+#: config/mmix/mmix.c:1546 config/mmix/mmix.c:1570 config/mmix/mmix.c:1686
#, c-format
msgid "MMIX Internal: Bad register: %d"
msgstr ""
-#: config/mmix/mmix.c:1718
+#: config/mmix/mmix.c:1617
msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
msgstr ""
-#: config/mmix/mmix.c:1737
+#: config/mmix/mmix.c:1636
msgid "MMIX Internal: Expected a register, not this"
msgstr ""
-#: config/mmix/mmix.c:1747
+#: config/mmix/mmix.c:1646
msgid "MMIX Internal: Expected a constant, not this"
msgstr ""
#. Presumably there's a missing case above if we get here.
-#: config/mmix/mmix.c:1779
+#: config/mmix/mmix.c:1678
#, c-format
msgid "MMIX Internal: Missing `%c' case in mmix_print_operand"
msgstr ""
#. We need the original here.
-#: config/mmix/mmix.c:1831
+#: config/mmix/mmix.c:1730
msgid "MMIX Internal: Cannot decode this operand"
msgstr ""
-#: config/mmix/mmix.c:1891
+#: config/mmix/mmix.c:1787
msgid "MMIX Internal: This is not a recognized address"
msgstr ""
-#: config/mmix/mmix.c:2082
+#: config/mmix/mmix.c:1964
#, c-format
msgid "stack frame not a multiple of 8 bytes: %d"
msgstr ""
-#: config/mmix/mmix.c:2321
+#: config/mmix/mmix.c:2203
#, c-format
msgid "stack frame not a multiple of octabyte: %d"
msgstr ""
-#: config/mmix/mmix.c:2818 config/mmix/mmix.c:2887
+#: config/mmix/mmix.c:2677 config/mmix/mmix.c:2741
#, c-format
msgid "MMIX Internal: %s is not a shiftable int"
msgstr ""
-#: config/mmix/mmix.c:3006
+#: config/mmix/mmix.c:2857
msgid "MMIX Internal: Trying to output invalidly reversed condition:"
msgstr ""
-#: config/mmix/mmix.c:3013
+#: config/mmix/mmix.c:2864
msgid "MMIX Internal: What's the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:3017
+#: config/mmix/mmix.c:2868
msgid "MMIX Internal: What is the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:3088
+#: config/mmix/mmix.c:2938
msgid "MMIX Internal: This is not a constant:"
msgstr ""
-#. For these target macros, there is no generic documentation here. You
-#. should read `Using and Porting GCC' for that. Only comments specific
-#. to the MMIX target are here.
-#.
-#. There are however references to the specific texinfo node (comments
-#. with "Node:"), so there should be little or nothing amiss. Probably
-#. the opposite, since we don't have to care about old littering and
-#. soon outdated generic comments.
-#. Node: Driver
-#. User symbols are in the same name-space as built-in symbols, but we
-#. don't need the built-in symbols, so remove those and instead apply
-#. stricter operand checking. Don't warn when expanding insns.
-#. Pass on -mset-program-start=N and -mset-data-start=M to the linker.
-#. Provide default program start 0x100 unless -mno-set-program-start.
-#. Don't do this if linking relocatably, with -r. For a final link,
-#. produce mmo, unless ELF is requested or when linking relocatably.
-#. Put unused option values here.
#: config/mmix/mmix.h:132
msgid "Set start-address of the program"
msgstr ""
@@ -11981,23 +11185,27 @@ msgstr ""
msgid "Do not generate a single exit point for each function"
msgstr ""
-#: config/mn10300/mn10300.h:59
-msgid "Work around hardware multiply bug"
+#: config/mn10300/linux.h:60 config/mn10300/mn10300.h:71
+msgid "Target the AM33 processor"
msgstr ""
-#: config/mn10300/mn10300.h:60
-msgid "Do not work around hardware multiply bug"
+#: config/mn10300/linux.h:61 config/mn10300/mn10300.h:75
+msgid "Target the AM33/2.0 processor"
msgstr ""
-#: config/mn10300/mn10300.h:61
-msgid "Target the AM33 processor"
+#: config/mn10300/linux.h:62 config/mn10300/mn10300.h:78
+msgid "Enable linker relaxations"
msgstr ""
-#: config/mn10300/mn10300.h:65
-msgid "Enable linker relaxations"
+#: config/mn10300/mn10300.h:69
+msgid "Work around hardware multiply bug"
+msgstr ""
+
+#: config/mn10300/mn10300.h:70
+msgid "Do not work around hardware multiply bug"
msgstr ""
-#: config/ns32k/ns32k.h:142 config/s390/s390.h:69
+#: config/ns32k/ns32k.h:142 config/s390/s390.h:125
msgid "Don't use hardware fp"
msgstr ""
@@ -12069,43 +11277,37 @@ msgstr ""
msgid "No \"Small register classes\" kludge"
msgstr ""
-#: config/pa/pa.c:261
+#: config/pa/pa.c:304
#, c-format
msgid ""
"unknown -mschedule= option (%s).\n"
"Valid options are 700, 7100, 7100LC, 7200, 7300, and 8000\n"
msgstr ""
-#: config/pa/pa.c:286
+#: config/pa/pa.c:329
#, c-format
msgid ""
"unknown -march= option (%s).\n"
"Valid options are 1.0, 1.1, and 2.0\n"
msgstr ""
-#: config/pa/pa.c:299
+#: config/pa/pa.c:342
msgid "PIC code generation is not supported in the portable runtime model\n"
msgstr ""
-#: config/pa/pa.c:304
+#: config/pa/pa.c:347
msgid "PIC code generation is not compatible with fast indirect calls\n"
msgstr ""
-#: config/pa/pa.c:309
+#: config/pa/pa.c:352
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:310
-msgid "-g option disabled"
-msgstr ""
-
-#: config/pa/pa-hiux.h:75 config/pa/pa-hpux.h:87 config/pa/pa-hpux7.h:81
-#: config/pa/pa64-hpux.h:25
+#: config/pa/pa-hpux.h:91 config/pa/pa64-hpux.h:25
msgid "Generate cpp defines for server IO"
msgstr ""
-#: config/pa/pa-hiux.h:76 config/pa/pa-hpux.h:88 config/pa/pa-hpux7.h:82
-#: config/pa/pa64-hpux.h:27
+#: config/pa/pa-hpux.h:92 config/pa/pa64-hpux.h:27
msgid "Generate cpp defines for workstation IO"
msgstr ""
@@ -12227,50 +11429,50 @@ msgstr ""
msgid "Assume code will be linked by HP ld"
msgstr ""
-#: config/pdp11/pdp11.h:57
+#: config/pdp11/pdp11.h:62 config/rs6000/rs6000.h:316
msgid "Do not use hardware floating point"
msgstr ""
#. return float result in ac0
-#: config/pdp11/pdp11.h:59
+#: config/pdp11/pdp11.h:64
msgid "Return floating point results in ac0"
msgstr ""
-#: config/pdp11/pdp11.h:60
+#: config/pdp11/pdp11.h:65
msgid "Return floating point results in memory"
msgstr ""
#. is 11/40
-#: config/pdp11/pdp11.h:62
+#: config/pdp11/pdp11.h:67
msgid "Generate code for an 11/40"
msgstr ""
#. is 11/45
-#: config/pdp11/pdp11.h:65
+#: config/pdp11/pdp11.h:70
msgid "Generate code for an 11/45"
msgstr ""
#. is 11/10
-#: config/pdp11/pdp11.h:68
+#: config/pdp11/pdp11.h:73
msgid "Generate code for an 11/10"
msgstr ""
#. use movstrhi for bcopy
#. use 32 bit for int
-#: config/pdp11/pdp11.h:73 config/pdp11/pdp11.h:74
+#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
msgid "Use 32 bit int"
msgstr ""
-#: config/pdp11/pdp11.h:75 config/pdp11/pdp11.h:76
+#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
msgid "Use 16 bit int"
msgstr ""
#. use 32 bit for float
-#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
+#: config/pdp11/pdp11.h:83 config/pdp11/pdp11.h:84
msgid "Use 32 bit float"
msgstr ""
-#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
+#: config/pdp11/pdp11.h:85 config/pdp11/pdp11.h:86
msgid "Use 64 bit float"
msgstr ""
@@ -12278,69 +11480,53 @@ msgstr ""
#. is branching expensive - on a PDP, it's actually really cheap
#. this is just to play around and check what code gcc generates
#. split instruction and data memory?
-#: config/pdp11/pdp11.h:90
+#: config/pdp11/pdp11.h:95
msgid "Target has split I&D"
msgstr ""
-#: config/pdp11/pdp11.h:91
+#: config/pdp11/pdp11.h:96
msgid "Target does not have split I&D"
msgstr ""
#. UNIX assembler syntax?
-#: config/pdp11/pdp11.h:93
+#: config/pdp11/pdp11.h:98
msgid "Use UNIX assembler syntax"
msgstr ""
-#: config/pdp11/pdp11.h:94
+#: config/pdp11/pdp11.h:99
msgid "Use DEC assembler syntax"
msgstr ""
-#: config/romp/romp.c:717 config/rs6000/rs6000.c:7755
-#, c-format
-msgid "invalid %%S value"
+#: config/rs6000/host-darwin.c:52
+msgid "Segmentation Fault (code)"
msgstr ""
-#: config/romp/romp.c:726 config/romp/romp.c:733
-#, c-format
-msgid "invalid %%b value"
+#: config/rs6000/host-darwin.c:83
+msgid "Out of stack space.\n"
msgstr ""
-#: config/romp/romp.c:773 config/romp/romp.c:784
+#: config/rs6000/host-darwin.c:104
#, c-format
-msgid "invalid %%z value"
+msgid "Try running `%s' in the shell to raise its limit.\n"
msgstr ""
-#: config/romp/romp.c:792 config/romp/romp.c:800
-#, c-format
-msgid "invalid %%Z value"
+#: config/rs6000/host-darwin.c:117
+msgid "Segmentation Fault"
msgstr ""
-#: config/romp/romp.c:807 config/romp/romp.c:816 config/romp/romp.c:823
-#: config/rs6000/rs6000.c:7584
+#: config/rs6000/host-darwin.c:131
#, c-format
-msgid "invalid %%k value"
+msgid "While setting up signal stack: %m"
msgstr ""
-#: config/romp/romp.c:908 config/romp/romp.c:951
+#: config/rs6000/host-darwin.c:137
#, c-format
-msgid "invalid %%j value"
+msgid "While setting up signal handler: %m"
msgstr ""
-#. Perform any needed actions needed for a function that is receiving a
-#. variable number of arguments.
-#.
-#. CUM is as above.
-#.
-#. MODE and TYPE are the mode and type of the current parameter.
-#.
-#. PRETEND_SIZE is a variable that should be set to the amount of stack
-#. that must be pushed by the prolog to pretend that our caller pushed
-#. it.
-#.
-#. Normally, this macro will push all remaining incoming registers on the
-#. stack and set PRETEND_SIZE to the length of the registers pushed.
-#: config/romp/romp.h:648
-msgid "can't have varargs with -mfp-arg-in-fp-regs"
+#: config/rs6000/host-darwin.c:184
+#, c-format
+msgid "couldn't unmap pch_address_space: %m\n"
msgstr ""
#. Handle the machine specific pragma longcall. Its syntax is
@@ -12352,192 +11538,239 @@ msgstr ""
#. rs6000_default_long_calls is set to the value of TOGGLE, changing
#. whether or not new function declarations receive a longcall
#. attribute by default.
-#: config/rs6000/rs6000-c.c:44
+#: config/rs6000/rs6000-c.c:46
msgid "ignoring malformed #pragma longcall"
msgstr ""
-#: config/rs6000/rs6000-c.c:58
+#: config/rs6000/rs6000-c.c:59
msgid "missing open paren"
msgstr ""
-#: config/rs6000/rs6000-c.c:60
+#: config/rs6000/rs6000-c.c:61
msgid "missing number"
msgstr ""
-#: config/rs6000/rs6000-c.c:62
+#: config/rs6000/rs6000-c.c:63
msgid "missing close paren"
msgstr ""
-#: config/rs6000/rs6000-c.c:65
+#: config/rs6000/rs6000-c.c:66
msgid "number must be 0 or 1"
msgstr ""
-#: config/rs6000/rs6000-c.c:68
+#: config/rs6000/rs6000-c.c:69
msgid "junk at end of #pragma longcall"
msgstr ""
-#: config/rs6000/rs6000.c:592
+#: config/rs6000/rs6000.c:793
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:599
+#: config/rs6000/rs6000.c:800
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:623
+#: config/rs6000/rs6000.c:814
#, c-format
msgid "unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:635
+#: config/rs6000/rs6000.c:826
#, c-format
msgid "unknown -mtraceback arg `%s'; expecting `full', `partial' or `none'"
msgstr ""
-#: config/rs6000/rs6000.c:646
+#: config/rs6000/rs6000.c:837
#, c-format
msgid "Unknown switch -mlong-double-%s"
msgstr ""
-#: config/rs6000/rs6000.c:738
+#: config/rs6000/rs6000.c:1008
#, c-format
-msgid "unknown -misel= option specified: '%s'"
+msgid "unknown -m%s= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:753
+#: config/rs6000/rs6000.c:1025
#, c-format
-msgid "unknown -mvrsave= option specified: '%s'"
+msgid "not configured for ABI: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:772
+#: config/rs6000/rs6000.c:1031
#, c-format
msgid "unknown ABI specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:4206
+#: config/rs6000/rs6000.c:1045
+#, c-format
+msgid "unknown -malign-XXXXX option specified: '%s'"
+msgstr ""
+
+#: config/rs6000/rs6000.c:5358
msgid "argument 1 must be a 5-bit signed literal"
msgstr ""
-#: config/rs6000/rs6000.c:4313 config/rs6000/rs6000.c:4903
+#: config/rs6000/rs6000.c:5460 config/rs6000/rs6000.c:6083
msgid "argument 2 must be a 5-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:4356
+#: config/rs6000/rs6000.c:5500
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:4410
+#: config/rs6000/rs6000.c:5554
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:4489
+#: config/rs6000/rs6000.c:5682
msgid "argument 3 must be a 4-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:4666
+#: config/rs6000/rs6000.c:5852
#, c-format
msgid "argument to `%s' must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:4782
+#: config/rs6000/rs6000.c:5965
msgid "argument to dss must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:5013
+#: config/rs6000/rs6000.c:6203
msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:5086
+#: config/rs6000/rs6000.c:6276
msgid "argument 1 of __builtin_spe_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:7511
+#: config/rs6000/rs6000.c:8711
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:7520
+#: config/rs6000/rs6000.c:8720
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:7529
+#: config/rs6000/rs6000.c:8729
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:7564
+#: config/rs6000/rs6000.c:8764
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:7574
+#: config/rs6000/rs6000.c:8774
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:7604
+#: config/rs6000/rs6000.c:8784
+#, c-format
+msgid "invalid %%k value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:8804 config/xtensa/xtensa.c:1985
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:7671
+#: config/rs6000/rs6000.c:8871
#, c-format
msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:7793
+#: config/rs6000/rs6000.c:8918
+#, c-format
+msgid "invalid %%q value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:8962
+#, c-format
+msgid "invalid %%S value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9004
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:7803
+#: config/rs6000/rs6000.c:9014
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:7812
+#: config/rs6000/rs6000.c:9023 config/xtensa/xtensa.c:1955
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:12242
+#: config/rs6000/rs6000.c:13513
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/aix.h:160 config/rs6000/beos.h:32
+#: config/rs6000/aix.h:184 config/rs6000/beos.h:32
msgid "Always pass floating-point arguments in memory"
msgstr ""
-#: config/rs6000/aix.h:162 config/rs6000/beos.h:34
+#: config/rs6000/aix.h:186 config/rs6000/beos.h:34
msgid "Don't always pass floating-point arguments in memory"
msgstr ""
-#: config/rs6000/aix41.h:28 config/rs6000/aix43.h:32 config/rs6000/aix51.h:32
-#: config/rs6000/aix52.h:32
+#: config/rs6000/aix41.h:27 config/rs6000/aix43.h:31 config/rs6000/aix51.h:31
+#: config/rs6000/aix52.h:31
msgid "Support message passing with the Parallel Environment"
msgstr ""
-#: config/rs6000/aix43.h:28 config/rs6000/aix51.h:28 config/rs6000/aix52.h:28
+#: config/rs6000/aix43.h:27 config/rs6000/aix51.h:27 config/rs6000/aix52.h:27
msgid "Compile for 64-bit pointers"
msgstr ""
-#: config/rs6000/aix43.h:30 config/rs6000/aix51.h:30 config/rs6000/aix52.h:30
+#: config/rs6000/aix43.h:29 config/rs6000/aix51.h:29 config/rs6000/aix52.h:29
msgid "Compile for 32-bit pointers"
msgstr ""
-#: config/rs6000/aix43.h:49 config/rs6000/aix51.h:49 config/rs6000/aix52.h:49
+#: config/rs6000/aix43.h:48 config/rs6000/aix51.h:48 config/rs6000/aix52.h:48
msgid "-maix64 and POWER architecture are incompatible"
msgstr ""
-#: config/rs6000/aix43.h:54 config/rs6000/aix51.h:54 config/rs6000/aix52.h:54
+#: config/rs6000/aix43.h:53 config/rs6000/aix51.h:53 config/rs6000/aix52.h:53
msgid "-maix64 requires PowerPC64 architecture remain enabled"
msgstr ""
-#: config/rs6000/aix43.h:58 config/rs6000/aix51.h:58 config/rs6000/aix52.h:58
+#: config/rs6000/aix43.h:57 config/rs6000/aix51.h:57 config/rs6000/aix52.h:57
msgid "-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
msgstr ""
+#: config/rs6000/darwin.h:64
+msgid "Generate code suitable for executables (NOT shared libs)"
+msgstr ""
+
+#. The Darwin ABI always includes AltiVec, can't be (validly) turned
+#. off.
+#: config/rs6000/darwin.h:80
+msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
+msgstr ""
+
+#. Darwin doesn't support -fpic.
+#: config/rs6000/darwin.h:86
+msgid "-fpic is not supported; -fPIC assumed"
+msgstr "-fpic wird nicht unterstützt; -fPIC angenommen"
+
+#: config/rs6000/linux64.h:96
+msgid "-m64 requires a PowerPC64 cpu"
+msgstr ""
+
+#: config/rs6000/linux64.h:201
+msgid "Call mcount for profiling before a function prologue"
+msgstr ""
+
+#: config/rs6000/linux64.h:203
+msgid "Call mcount for profiling after a function prologue"
+msgstr ""
+
#. Run-time compilation parameters selecting different hardware subsets.
#.
#. Macro to define tables used to set the flags.
@@ -12545,162 +11778,198 @@ 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/rs6000/rs6000.h:240
+#: config/rs6000/rs6000.h:262
msgid "Use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:243
+#: config/rs6000/rs6000.h:265
msgid "Use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:245
+#: config/rs6000/rs6000.h:267
msgid "Do not use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:248
+#: config/rs6000/rs6000.h:270
msgid "Do not use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:250
+#: config/rs6000/rs6000.h:272
msgid "Use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:253
+#: config/rs6000/rs6000.h:275
msgid "Do not use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:255
+#: config/rs6000/rs6000.h:277
msgid "Use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:257
-msgid "Don't use PowerPC General Purpose group optional instructions"
+#: config/rs6000/rs6000.h:279
+msgid "Do not use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:259
+#: config/rs6000/rs6000.h:281
msgid "Use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:261
-msgid "Don't use PowerPC Graphics group optional instructions"
+#: config/rs6000/rs6000.h:283
+msgid "Do not use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:263
+#: config/rs6000/rs6000.h:285
msgid "Use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:265
-msgid "Don't use PowerPC-64 instruction set"
+#: config/rs6000/rs6000.h:287
+msgid "Do not use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:267
+#: config/rs6000/rs6000.h:289
msgid "Use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:269
-msgid "Don't use AltiVec instructions"
+#: config/rs6000/rs6000.h:291
+msgid "Do not use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:271
+#: config/rs6000/rs6000.h:293
msgid "Use new mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:273
+#: config/rs6000/rs6000.h:295
msgid "Use old mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:276
+#: config/rs6000/rs6000.h:298
msgid "Put everything in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:278
+#: config/rs6000/rs6000.h:300
msgid "Place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:280
-msgid "Don't place floating point constants in TOC"
+#: config/rs6000/rs6000.h:302
+msgid "Do not place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:282
+#: config/rs6000/rs6000.h:304
msgid "Place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:284
-msgid "Don't place symbol+offset constants in TOC"
+#: config/rs6000/rs6000.h:306
+msgid "Do not place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:290
+#: config/rs6000/rs6000.h:312
msgid "Place variable addresses in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:296
+#: config/rs6000/rs6000.h:318
msgid "Generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:298
+#: config/rs6000/rs6000.h:320
msgid "Do not generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:302
+#: config/rs6000/rs6000.h:322
msgid "Generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:304
+#: config/rs6000/rs6000.h:324
msgid "Do not generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:308
+#: config/rs6000/rs6000.h:326
msgid "Generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:310
+#: config/rs6000/rs6000.h:328
msgid "Do not generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:318
-msgid "Don't schedule the start and end of the procedure"
+#: config/rs6000/rs6000.h:332
+msgid "Do not generate fused multiply/add instructions"
msgstr ""
-#: config/rs6000/rs6000.h:324
+#: config/rs6000/rs6000.h:336
+msgid "Do not schedule the start and end of the procedure"
+msgstr ""
+
+#: config/rs6000/rs6000.h:342
msgid "Return all structures in memory (AIX default)"
msgstr ""
-#: config/rs6000/rs6000.h:326
+#: config/rs6000/rs6000.h:344
msgid "Return small structures in registers (SVR4 default)"
msgstr ""
-#: config/rs6000/rs6000.h:391 config/sparc/sparc.h:633
+#: config/rs6000/rs6000.h:350
+msgid "Generate single field mfcr instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.h:352
+msgid "Do not generate single field mfcr instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.h:435 config/sparc/sparc.h:648
msgid "Use features of and schedule code for given CPU"
msgstr ""
-#: config/rs6000/rs6000.h:394
+#: config/rs6000/rs6000.h:438
msgid "Enable debug output"
msgstr ""
-#: config/rs6000/rs6000.h:396
+#: config/rs6000/rs6000.h:440
msgid "Select full, part, or no traceback table"
msgstr ""
-#: config/rs6000/rs6000.h:397
+#: config/rs6000/rs6000.h:441
msgid "Specify ABI to use"
msgstr ""
-#: config/rs6000/rs6000.h:399
+#: config/rs6000/rs6000.h:443
msgid "Specify size of long double (64 or 128 bits)"
msgstr ""
-#: config/rs6000/rs6000.h:401
+#: config/rs6000/rs6000.h:445
msgid "Specify yes/no if isel instructions should be generated"
msgstr ""
-#: config/rs6000/rs6000.h:403
+#: config/rs6000/rs6000.h:447
+msgid "Specify yes/no if SPE SIMD instructions should be generated"
+msgstr ""
+
+#: config/rs6000/rs6000.h:449
+msgid "Specify yes/no if using floating point in the GPRs"
+msgstr ""
+
+#: config/rs6000/rs6000.h:451
msgid "Specify yes/no if VRSAVE instructions should be generated for AltiVec"
msgstr ""
-#: config/rs6000/rs6000.h:405
+#: config/rs6000/rs6000.h:453
msgid "Avoid all range limits on call instructions"
msgstr ""
+#: config/rs6000/rs6000.h:456
+msgid "Determine which dependences between insns are considered costly"
+msgstr ""
+
+#: config/rs6000/rs6000.h:458
+msgid "Specify which post scheduling nop insertion scheme to apply"
+msgstr ""
+
+#: config/rs6000/rs6000.h:460
+msgid "Specify alignment of structure fields default/natural"
+msgstr ""
+
+#: config/rs6000/rs6000.h:462
+msgid "Specify scheduling priority for dispatch slot restricted insns"
+msgstr ""
+
#. Definitions for __builtin_return_address and __builtin_frame_address.
#. __builtin_return_address (0) should give link register (65), enable
#. this.
@@ -12713,7 +11982,7 @@ 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:1884
+#: config/rs6000/rs6000.h:1926
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
@@ -12725,91 +11994,98 @@ msgstr ""
msgid "Select method for sdata handling"
msgstr ""
-#: config/rs6000/sysv4.h:103
+#: config/rs6000/sysv4.h:100
msgid "Align to the base type of the bit-field"
msgstr ""
-#: config/rs6000/sysv4.h:105
+#: config/rs6000/sysv4.h:102
msgid "Don't align to the base type of the bit-field"
msgstr ""
-#: config/rs6000/sysv4.h:107
+#: config/rs6000/sysv4.h:104
msgid "Don't assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:109
+#: config/rs6000/sysv4.h:106
msgid "Assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:111 config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:108 config/rs6000/sysv4.h:112
msgid "Produce code relocatable at runtime"
msgstr ""
-#: config/rs6000/sysv4.h:113 config/rs6000/sysv4.h:117
+#: config/rs6000/sysv4.h:110 config/rs6000/sysv4.h:114
msgid "Don't produce code relocatable at runtime"
msgstr ""
-#: config/rs6000/sysv4.h:119 config/rs6000/sysv4.h:121
+#: config/rs6000/sysv4.h:116 config/rs6000/sysv4.h:118
msgid "Produce little endian code"
msgstr ""
-#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:125
+#: config/rs6000/sysv4.h:120 config/rs6000/sysv4.h:122
msgid "Produce big endian code"
msgstr ""
-#: config/rs6000/sysv4.h:126 config/rs6000/sysv4.h:127
-#: config/rs6000/sysv4.h:128 config/rs6000/sysv4.h:129
-#: config/rs6000/sysv4.h:130 config/rs6000/sysv4.h:131
-#: config/rs6000/sysv4.h:141 config/rs6000/sysv4.h:142
-#: config/rs6000/sysv4.h:153 config/rs6000/sysv4.h:155
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:124
+#: config/rs6000/sysv4.h:125 config/rs6000/sysv4.h:126
+#: config/rs6000/sysv4.h:127 config/rs6000/sysv4.h:128
+#: config/rs6000/sysv4.h:138 config/rs6000/sysv4.h:139
+#: config/rs6000/sysv4.h:151 config/rs6000/sysv4.h:157
msgid "no description yet"
msgstr ""
-#: config/rs6000/sysv4.h:132
+#: config/rs6000/sysv4.h:129
msgid "Use EABI"
msgstr ""
-#: config/rs6000/sysv4.h:133
+#: config/rs6000/sysv4.h:130
msgid "Don't use EABI"
msgstr ""
-#: config/rs6000/sysv4.h:136
+#: config/rs6000/sysv4.h:133
msgid "Do not allow bit-fields to cross word boundaries"
msgstr ""
-#: config/rs6000/sysv4.h:138
+#: config/rs6000/sysv4.h:135
msgid "Use alternate register names"
msgstr ""
-#: config/rs6000/sysv4.h:140
+#: config/rs6000/sysv4.h:137
msgid "Don't use alternate register names"
msgstr ""
-#: config/rs6000/sysv4.h:144
+#: config/rs6000/sysv4.h:141
msgid "Link with libsim.a, libc.a and sim-crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:146
+#: config/rs6000/sysv4.h:143
msgid "Link with libads.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:145
msgid "Link with libyk.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:150
+#: config/rs6000/sysv4.h:147
msgid "Link with libmvme.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:152
+#: config/rs6000/sysv4.h:149
msgid "Set the PPC_EMB bit in the ELF flags header"
msgstr ""
-#: config/rs6000/sysv4.h:154
+#: config/rs6000/sysv4.h:150
msgid "Use the WindISS simulator"
msgstr ""
+#: config/rs6000/sysv4.h:153
+msgid "Generate 64-bit code"
+msgstr ""
+
+#: config/rs6000/sysv4.h:155
+msgid "Generate 32-bit code"
+msgstr ""
+
#. Sometimes certain combinations of command options do not make sense
#. on a particular target machine. You can define a macro
#. `OVERRIDE_OPTIONS' to take account of this. This macro, if
@@ -12833,360 +12109,426 @@ msgstr ""
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:255
+#: config/rs6000/sysv4.h:256
#, c-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:264
+#: config/rs6000/sysv4.h:265
#, c-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:273
+#: config/rs6000/sysv4.h:274
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:279
+#: config/rs6000/sysv4.h:280
#, c-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:286
+#: config/rs6000/sysv4.h:287
#, c-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:293
+#: config/rs6000/sysv4.h:294
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/s390/s390.c:3063
+#: config/rs6000/sysv4.h:309
+#, c-format
+msgid "-m%s not supported in this configuration"
+msgstr "-m%s wird in dieser Konfiguration nicht unterstützt"
+
+#: config/s390/s390.c:926
+#, c-format
+msgid "Unknown cpu used in -march=%s."
+msgstr ""
+
+#: config/s390/s390.c:945
+#, c-format
+msgid "Unknown cpu used in -mtune=%s."
+msgstr ""
+
+#: config/s390/s390.c:950
+#, c-format
+msgid "z/Architecture mode not supported on %s."
+msgstr ""
+
+#: config/s390/s390.c:952
+msgid "64-bit ABI not supported in ESA/390 mode."
+msgstr ""
+
+#: config/s390/s390.c:3337
msgid "invalid UNSPEC as operand (1)"
msgstr ""
-#: config/s390/s390.c:3123
+#: config/s390/s390.c:3385
msgid "invalid UNSPEC as operand (2)"
msgstr ""
-#: config/s390/s390.c:3129
+#: config/s390/s390.c:3391
msgid "UNKNOWN in s390_output_symbolic_const !?"
msgstr ""
-#: config/s390/s390.c:3147
+#: config/s390/s390.c:3407
msgid "Cannot decompose address."
msgstr ""
-#: config/s390/s390.c:3308
+#: config/s390/s390.c:3578
msgid "UNKNOWN in print_operand !?"
msgstr ""
-#: config/s390/s390.c:4961
+#: config/s390/s390.c:5301
msgid "Total size of local variables exceeds architecture limit."
msgstr ""
-#: config/s390/s390.h:70
+#: config/s390/s390.h:126
msgid "Set backchain"
msgstr ""
-#: config/s390/s390.h:71
+#: config/s390/s390.h:127
msgid "Don't set backchain (faster, but debug harder"
msgstr ""
-#: config/s390/s390.h:72
+#: config/s390/s390.h:128
msgid "Use bras for executable < 64k"
msgstr ""
-#: config/s390/s390.h:73
+#: config/s390/s390.h:129
msgid "Don't use bras"
msgstr ""
-#: config/s390/s390.h:74
+#: config/s390/s390.h:130
msgid "Additional debug prints"
msgstr ""
-#: config/s390/s390.h:75
+#: config/s390/s390.h:131
msgid "Don't print additional debug prints"
msgstr ""
-#: config/s390/s390.h:76
-msgid "64 bit mode"
+#: config/s390/s390.h:132
+msgid "64 bit ABI"
msgstr ""
-#: config/s390/s390.h:77
-msgid "31 bit mode"
+#: config/s390/s390.h:133
+msgid "31 bit ABI"
msgstr ""
-#: config/s390/s390.h:78
+#: config/s390/s390.h:134
+msgid "z/Architecture"
+msgstr ""
+
+#: config/s390/s390.h:135
+msgid "ESA/390 architecture"
+msgstr ""
+
+#: config/s390/s390.h:136
msgid "mvcle use"
msgstr ""
-#: config/s390/s390.h:79
+#: config/s390/s390.h:137
msgid "mvc&ex"
msgstr ""
-#: config/sh/sh.c:5137
+#: config/s390/s390.h:138
+msgid "enable tpf OS code"
+msgstr ""
+
+#: config/s390/s390.h:139
+msgid "disable tpf OS code"
+msgstr ""
+
+#: config/s390/s390.h:140
+msgid "disable fused multiply/add instructions"
+msgstr ""
+
+#: config/s390/s390.h:141
+msgid "enable fused multiply/add instructions"
+msgstr ""
+
+#: config/sh/sh.c:5841
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:5687
+#: config/sh/sh.c:6743
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
#. The sp_switch attribute only has meaning for interrupt functions.
-#: config/sh/sh.c:5713 config/sh/sh.c:5752
+#. The trap_exit attribute only has meaning for interrupt functions.
+#: config/sh/sh.c:6765 config/sh/sh.c:6800
#, c-format
msgid "`%s' attribute only applies to interrupt functions"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:5720
+#: config/sh/sh.c:6772
#, c-format
msgid "`%s' attribute argument not a string constant"
msgstr ""
#. The argument must be a constant integer.
-#: config/sh/sh.c:5759
+#: config/sh/sh.c:6807
#, c-format
msgid "`%s' attribute argument not an integer constant"
msgstr ""
#. There are no delay slots on SHmedia.
#. Relaxation isn't yet supported for SHmedia
-#: config/sh/sh.h:437
+#. -fprofile-arcs needs a working libgcov . In unified tree configurations with newlib, this requires to configure with --with-newlib --with-headers. But there is no way to check here we have a working libgcov, so just assume that we have.
+#: config/sh/sh.h:478
msgid "Profiling is not supported on this target."
msgstr ""
-#: config/sparc/sparc.c:329
+#: config/sparc/sparc.c:360
#, c-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:336
+#: config/sparc/sparc.c:367
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:361
+#: config/sparc/sparc.c:392
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
-#: config/sparc/sparc.c:6341 config/sparc/sparc.c:6347
+#: config/sparc/sparc.c:6793 config/sparc/sparc.c:6799
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:6417
+#: config/sparc/sparc.c:6869
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:6427
+#: config/sparc/sparc.c:6879
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:6466
+#: config/sparc/sparc.c:6918
#, c-format
msgid "invalid %%c operand"
msgstr ""
-#: config/sparc/sparc.c:6467
+#: config/sparc/sparc.c:6919
#, c-format
msgid "invalid %%C operand"
msgstr ""
-#: config/sparc/sparc.c:6488
+#: config/sparc/sparc.c:6940
#, c-format
msgid "invalid %%d operand"
msgstr ""
-#: config/sparc/sparc.c:6489
+#: config/sparc/sparc.c:6941
#, c-format
msgid "invalid %%D operand"
msgstr ""
-#: config/sparc/sparc.c:6505
+#: config/sparc/sparc.c:6957
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:6519
+#: config/sparc/sparc.c:6971
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:6573
+#: config/sparc/sparc.c:7025
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:6576
+#: config/sparc/sparc.c:7028
msgid "floating point constant not a valid immediate operand"
msgstr ""
-#: config/sparc/freebsd.h:81 config/sparc/linux.h:87 config/sparc/linux64.h:89
-#: config/sparc/netbsd-elf.h:239
+#: config/sparc/freebsd.h:77 config/sparc/linux.h:92
+#: config/sparc/linux64.h:104 config/sparc/netbsd-elf.h:216
msgid "Use 128 bit long doubles"
msgstr ""
-#: config/sparc/sp64-elf.h:84 config/sparc/splet.h:29
+#: config/sparc/sp64-elf.h:90
msgid "Generate code for big endian"
msgstr ""
-#: config/sparc/sp64-elf.h:85 config/sparc/splet.h:30
+#: config/sparc/sp64-elf.h:91
msgid "Generate code for little endian"
msgstr ""
-#: config/sparc/sp86x-aout.h:51 config/sparc/sp86x-elf.h:65
+#: config/sparc/sp86x-elf.h:68
msgid "Use little-endian byte order for data"
msgstr ""
-#: config/sparc/sparc.h:532
+#: config/sparc/sparc.h:547
msgid "Assume possible double misalignment"
msgstr ""
-#: config/sparc/sparc.h:534
+#: config/sparc/sparc.h:549
msgid "Assume all doubles are aligned"
msgstr ""
-#: config/sparc/sparc.h:536
+#: config/sparc/sparc.h:551
msgid "Pass -assert pure-text to linker"
msgstr ""
-#: config/sparc/sparc.h:538
+#: config/sparc/sparc.h:553
msgid "Do not pass -assert pure-text to linker"
msgstr ""
-#: config/sparc/sparc.h:540
+#: config/sparc/sparc.h:555
msgid "Use flat register window model"
msgstr ""
-#: config/sparc/sparc.h:542
+#: config/sparc/sparc.h:557
msgid "Do not use flat register window model"
msgstr ""
-#: config/sparc/sparc.h:544
+#: config/sparc/sparc.h:559
msgid "Use ABI reserved registers"
msgstr ""
-#: config/sparc/sparc.h:546
+#: config/sparc/sparc.h:561
msgid "Do not use ABI reserved registers"
msgstr ""
-#: config/sparc/sparc.h:548
+#: config/sparc/sparc.h:563
msgid "Use hardware quad fp instructions"
msgstr ""
-#: config/sparc/sparc.h:550
+#: config/sparc/sparc.h:565
msgid "Do not use hardware quad fp instructions"
msgstr ""
-#: config/sparc/sparc.h:552
+#: config/sparc/sparc.h:567
msgid "Compile for v8plus ABI"
msgstr ""
-#: config/sparc/sparc.h:554
+#: config/sparc/sparc.h:569
msgid "Do not compile for v8plus ABI"
msgstr ""
-#: config/sparc/sparc.h:556
+#: config/sparc/sparc.h:571
msgid "Utilize Visual Instruction Set"
msgstr ""
-#: config/sparc/sparc.h:558
+#: config/sparc/sparc.h:573
msgid "Do not utilize Visual Instruction Set"
msgstr ""
#. ??? These are deprecated, coerced to -mcpu=. Delete in 2.9.
-#: config/sparc/sparc.h:561
+#: config/sparc/sparc.h:576
msgid "Optimize for Cypress processors"
msgstr ""
-#: config/sparc/sparc.h:563
+#: config/sparc/sparc.h:578
msgid "Optimize for SPARCLite processors"
msgstr ""
-#: config/sparc/sparc.h:565
+#: config/sparc/sparc.h:580
msgid "Optimize for F930 processors"
msgstr ""
-#: config/sparc/sparc.h:567
+#: config/sparc/sparc.h:582
msgid "Optimize for F934 processors"
msgstr ""
-#: config/sparc/sparc.h:569
+#: config/sparc/sparc.h:584
msgid "Use V8 SPARC ISA"
msgstr ""
-#: config/sparc/sparc.h:571
+#: config/sparc/sparc.h:586
msgid "Optimize for SuperSPARC processors"
msgstr ""
#. End of deprecated options.
-#: config/sparc/sparc.h:574
+#: config/sparc/sparc.h:589
msgid "Pointers are 64-bit"
msgstr ""
-#: config/sparc/sparc.h:576
+#: config/sparc/sparc.h:591
msgid "Pointers are 32-bit"
msgstr ""
-#: config/sparc/sparc.h:578
+#: config/sparc/sparc.h:593
msgid "Use 32-bit ABI"
msgstr ""
-#: config/sparc/sparc.h:580
+#: config/sparc/sparc.h:595
msgid "Use 64-bit ABI"
msgstr ""
-#: config/sparc/sparc.h:582
+#: config/sparc/sparc.h:597
msgid "Use stack bias"
msgstr ""
-#: config/sparc/sparc.h:584
+#: config/sparc/sparc.h:599
msgid "Do not use stack bias"
msgstr ""
-#: config/sparc/sparc.h:586
+#: config/sparc/sparc.h:601
msgid "Use structs on stronger alignment for double-word copies"
msgstr ""
-#: config/sparc/sparc.h:588
+#: config/sparc/sparc.h:603
msgid "Do not use structs on stronger alignment for double-word copies"
msgstr ""
-#: config/sparc/sparc.h:590
+#: config/sparc/sparc.h:605
msgid "Optimize tail call instructions in assembler and linker"
msgstr ""
-#: config/sparc/sparc.h:592
+#: config/sparc/sparc.h:607
msgid "Do not optimize tail call instructions in assembler or linker"
msgstr ""
-#: config/sparc/sparc.h:637
+#: config/sparc/sparc.h:652
msgid "Use given SPARC code model"
msgstr ""
-#: config/stormy16/stormy16.c:1192
+#: config/stormy16/stormy16.c:526
+msgid "Constant halfword load operand out of range."
+msgstr ""
+
+#: config/stormy16/stormy16.c:536
+msgid "Constant arithmetic operand out of range."
+msgstr ""
+
+#: config/stormy16/stormy16.c:1027
+msgid "Local variable memory requirements exceed capacity."
+msgstr ""
+
+#: config/stormy16/stormy16.c:1193
+msgid "function_profiler support"
+msgstr ""
+
+#: config/stormy16/stormy16.c:1292
msgid "cannot use va_start in interrupt function"
msgstr ""
-#: config/stormy16/stormy16.c:1552
+#: config/stormy16/stormy16.c:1624
msgid "`B' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1558
+#: config/stormy16/stormy16.c:1630
msgid "`B' operand has multiple bits set"
msgstr ""
-#: config/stormy16/stormy16.c:1585
+#: config/stormy16/stormy16.c:1656
msgid "`o' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1600
+#: config/stormy16/stormy16.c:1670
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/stormy16/stormy16.c:1650
+#: config/stormy16/stormy16.c:1716
#, c-format
msgid "switch statement of size %lu entries too large"
msgstr ""
@@ -13207,105 +12549,104 @@ msgstr ""
msgid "cannot set interrupt attribute: no such identifier"
msgstr ""
-#: config/v850/v850-c.c:148
+#: config/v850/v850-c.c:147
msgid "junk at end of #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:165
+#: config/v850/v850-c.c:164
#, c-format
msgid "unrecognized section name \"%s\""
msgstr ""
-#: config/v850/v850-c.c:180
+#: config/v850/v850-c.c:179
msgid "malformed #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:200
+#: config/v850/v850-c.c:198
msgid "junk at end of #pragma ghs interrupt"
msgstr ""
-#: config/v850/v850-c.c:212
+#: config/v850/v850-c.c:209
msgid "junk at end of #pragma ghs starttda"
msgstr ""
-#: config/v850/v850-c.c:224
+#: config/v850/v850-c.c:220
msgid "junk at end of #pragma ghs startsda"
msgstr ""
-#: config/v850/v850-c.c:236
+#: config/v850/v850-c.c:231
msgid "junk at end of #pragma ghs startzda"
msgstr ""
-#: config/v850/v850-c.c:248
+#: config/v850/v850-c.c:242
msgid "junk at end of #pragma ghs endtda"
msgstr ""
-#: config/v850/v850-c.c:260
+#: config/v850/v850-c.c:253
msgid "junk at end of #pragma ghs endsda"
msgstr ""
-#: config/v850/v850-c.c:272
+#: config/v850/v850-c.c:264
msgid "junk at end of #pragma ghs endzda"
msgstr ""
-#: config/v850/v850.c:129
+#: config/v850/v850.c:142
#, c-format
msgid "%s=%s is not numeric"
msgstr ""
-#: config/v850/v850.c:136
+#: config/v850/v850.c:149
#, c-format
msgid "%s=%s is too large"
msgstr ""
-#: config/v850/v850.c:302
+#: config/v850/v850.c:301
msgid "const_double_split got a bad insn:"
msgstr ""
-#: config/v850/v850.c:837
+#: config/v850/v850.c:866
msgid "output_move_single:"
msgstr ""
-#: config/v850/v850.c:2217
-msgid "a data area attribute cannot be specified for local variables"
-msgstr ""
+#: config/v850/v850.c:2209
+msgid "%Jdata area attributes cannot be specified for local variables"
+msgstr "%JDatenabschnittsattribute können nicht für lokale Variablen angegeben werden"
-#: config/v850/v850.c:2228
-#, c-format
-msgid "data area of '%s' conflicts with previous declaration"
-msgstr ""
+#: config/v850/v850.c:2220
+msgid "%Jdata area of '%D' conflicts with previous declaration"
+msgstr "%JDatenabschnitt von »%D« in Konflikt mit vorheriger Deklaration"
-#: config/v850/v850.c:2447
+#: config/v850/v850.c:2419
#, c-format
msgid "bogus JR construction: %d\n"
msgstr ""
-#: config/v850/v850.c:2468 config/v850/v850.c:2670
+#: config/v850/v850.c:2440 config/v850/v850.c:2643
#, c-format
msgid "bad amount of stack space removal: %d"
msgstr ""
-#: config/v850/v850.c:2646
+#: config/v850/v850.c:2619
#, c-format
msgid "bogus JARL construction: %d\n"
msgstr ""
-#: config/v850/v850.c:3026
+#: config/v850/v850.c:2989
#, c-format
msgid "Bogus DISPOSE construction: %d\n"
msgstr ""
-#: config/v850/v850.c:3048
+#: config/v850/v850.c:3011
#, c-format
msgid "Too much stack space to dispose of: %d"
msgstr ""
-#: config/v850/v850.c:3224
+#: config/v850/v850.c:3184
#, c-format
msgid "Bogus PREPEARE construction: %d\n"
msgstr ""
-#: config/v850/v850.c:3246
+#: config/v850/v850.c:3206
#, c-format
msgid "Too much stack space to prepare: %d"
msgstr ""
@@ -13315,796 +12656,738 @@ 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:158
+#: config/v850/v850.h:174
msgid "Support Green Hills ABI"
msgstr ""
-#: config/v850/v850.h:161
+#: config/v850/v850.h:177
msgid "Prohibit PC relative function calls"
msgstr ""
-#: config/v850/v850.h:164
+#: config/v850/v850.h:180
msgid "Reuse r30 on a per function basis"
msgstr ""
-#: config/v850/v850.h:167
+#: config/v850/v850.h:183
msgid "Use stubs for function prologues"
msgstr ""
-#: config/v850/v850.h:170
+#: config/v850/v850.h:186
msgid "Same as: -mep -mprolog-function"
msgstr ""
-#: config/v850/v850.h:171
+#: config/v850/v850.h:187
msgid "Enable backend debugging"
msgstr ""
-#: config/v850/v850.h:173
+#: config/v850/v850.h:189
msgid "Compile for the v850 processor"
msgstr ""
-#: config/v850/v850.h:175
+#: config/v850/v850.h:191
+msgid "Compile for v850e1 processor"
+msgstr ""
+
+#. Make sure that the other bits are cleared.
+#: config/v850/v850.h:193
msgid "Compile for v850e processor"
msgstr ""
#. Make sure that the other bits are cleared.
-#: config/v850/v850.h:177
+#: config/v850/v850.h:195
msgid "Enable the use of the short load instructions"
msgstr ""
-#: config/v850/v850.h:180
+#: config/v850/v850.h:198
msgid "Do not use the callt instruction"
msgstr ""
-#: config/v850/v850.h:187
+#: config/v850/v850.h:205
msgid "Do not use registers r2 and r5"
msgstr ""
-#: config/v850/v850.h:189
+#: config/v850/v850.h:207
msgid "Enforce strict alignment"
msgstr ""
-#: config/v850/v850.h:192
+#: config/v850/v850.h:210
msgid "Use 4 byte entries in switch tables"
msgstr ""
-#: config/v850/v850.h:218
+#: config/v850/v850.h:236
msgid "Set the max size of data eligible for the TDA area"
msgstr ""
-#: config/v850/v850.h:221
+#: config/v850/v850.h:239
msgid "Set the max size of data eligible for the SDA area"
msgstr ""
-#: config/v850/v850.h:224
+#: config/v850/v850.h:242
msgid "Set the max size of data eligible for the ZDA area"
msgstr ""
-#: config/xtensa/xtensa.c:1062 config/xtensa/xtensa.c:1096
-#: config/xtensa/xtensa.c:1105
-msgid "bad test"
-msgstr ""
-
-#: config/xtensa/xtensa.c:1824
+#: config/xtensa/xtensa.c:1814
msgid "boolean registers required for the floating-point option"
msgstr ""
-#: config/xtensa/xtensa.c:1991
-msgid "invalid mask"
-msgstr ""
-
-#: config/xtensa/xtensa.c:2038
-msgid "invalid address"
-msgstr ""
-
-#: config/xtensa/xtensa.c:2063
-msgid "no register in address"
-msgstr ""
-
-#: config/xtensa/xtensa.c:2071
-msgid "address offset not a constant"
-msgstr ""
-
-#: config/xtensa/xtensa.c:2794
-msgid "only uninitialized variables can be placed in a .bss section"
-msgstr ""
-
-#: config/xtensa/xtensa.h:114
-msgid "Use the Xtensa code density option"
-msgstr ""
-
-#: config/xtensa/xtensa.h:116
-msgid "Do not use the Xtensa code density option"
-msgstr ""
-
-#: config/xtensa/xtensa.h:118
-msgid "Use the Xtensa MAC16 option"
-msgstr ""
-
-#: config/xtensa/xtensa.h:120
-msgid "Do not use the Xtensa MAC16 option"
-msgstr ""
-
-#: config/xtensa/xtensa.h:122
-msgid "Use the Xtensa MUL16 option"
-msgstr ""
-
-#: config/xtensa/xtensa.h:124
-msgid "Do not use the Xtensa MUL16 option"
+#: config/xtensa/xtensa.c:1868
+#, c-format
+msgid "-f%s is not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.h:126
-msgid "Use the Xtensa MUL32 option"
+#: config/xtensa/xtensa.c:1873
+msgid "PIC is required but not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.h:128
-msgid "Do not use the Xtensa MUL32 option"
+#: config/xtensa/xtensa.c:1943
+#, c-format
+msgid "invalid %%D value"
msgstr ""
-#. undocumented
-#. undocumented
-#: config/xtensa/xtensa.h:134
-msgid "Use the Xtensa NSA option"
+#: config/xtensa/xtensa.c:1980
+msgid "invalid mask"
msgstr ""
-#: config/xtensa/xtensa.h:136
-msgid "Do not use the Xtensa NSA option"
-msgstr ""
+#: config/xtensa/xtensa.c:2006
+#, c-format
+msgid "invalid %%x value"
+msgstr "ungültiger %%x-Wert"
-#: config/xtensa/xtensa.h:138
-msgid "Use the Xtensa MIN/MAX option"
-msgstr ""
+#: config/xtensa/xtensa.c:2013
+#, c-format
+msgid "invalid %%d value"
+msgstr "ungültiger %%x-Wert"
-#: config/xtensa/xtensa.h:140
-msgid "Do not use the Xtensa MIN/MAX option"
-msgstr ""
+#: config/xtensa/xtensa.c:2034 config/xtensa/xtensa.c:2044
+#, c-format
+msgid "invalid %%t/%%b value"
+msgstr "ungültiger %%t/%%b-Wert"
-#: config/xtensa/xtensa.h:142
-msgid "Use the Xtensa SEXT option"
+#: config/xtensa/xtensa.c:2086
+msgid "invalid address"
msgstr ""
-#: config/xtensa/xtensa.h:144
-msgid "Do not use the Xtensa SEXT option"
+#: config/xtensa/xtensa.c:2111
+msgid "no register in address"
msgstr ""
-#: config/xtensa/xtensa.h:146
-msgid "Use the Xtensa boolean register option"
+#: config/xtensa/xtensa.c:2119
+msgid "address offset not a constant"
msgstr ""
-#: config/xtensa/xtensa.h:148
-msgid "Do not use the Xtensa boolean register option"
+#: config/xtensa/xtensa.c:2802
+msgid "only uninitialized variables can be placed in a .bss section"
msgstr ""
-#: config/xtensa/xtensa.h:150
-msgid "Use the Xtensa floating-point unit"
+#: config/xtensa/xtensa.h:79
+msgid "Use CONST16 instruction to load constants"
msgstr ""
-#: config/xtensa/xtensa.h:152
-msgid "Do not use the Xtensa floating-point unit"
+#: config/xtensa/xtensa.h:81
+msgid "Use PC-relative L32R instruction to load constants"
msgstr ""
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#: config/xtensa/xtensa.h:170
+#: config/xtensa/xtensa.h:83
msgid "Disable fused multiply/add and multiply/subtract FP instructions"
msgstr ""
-#: config/xtensa/xtensa.h:172
+#: config/xtensa/xtensa.h:85
msgid "Enable fused multiply/add and multiply/subtract FP instructions"
msgstr ""
-#: config/xtensa/xtensa.h:174
-msgid "Serialize volatile memory references with MEMW instructions"
-msgstr ""
-
-#: config/xtensa/xtensa.h:176
-msgid "Do not serialize volatile memory references with MEMW instructions"
-msgstr ""
-
-#: config/xtensa/xtensa.h:178
+#: config/xtensa/xtensa.h:87
msgid "Intersperse literal pools with code in the text section"
msgstr ""
-#: config/xtensa/xtensa.h:180
+#: config/xtensa/xtensa.h:89
msgid "Put literal pools in a separate literal section"
msgstr ""
-#: config/xtensa/xtensa.h:182
+#: config/xtensa/xtensa.h:91
msgid "Automatically align branch targets to reduce branch penalties"
msgstr ""
-#: config/xtensa/xtensa.h:184
+#: config/xtensa/xtensa.h:93
msgid "Do not automatically align branch targets"
msgstr ""
-#: config/xtensa/xtensa.h:186
+#: config/xtensa/xtensa.h:95
msgid "Use indirect CALLXn instructions for large programs"
msgstr ""
-#: config/xtensa/xtensa.h:188
+#: config/xtensa/xtensa.h:97
msgid "Use direct CALLn instructions for fast calls"
msgstr ""
-#: ada/misc.c:233
-msgid "`-gnat' misspelled as `-gant'"
-msgstr ""
-
-#: cp/call.c:261 cp/init.c:1594
-msgid "qualified type `%T' does not match destructor name `~%T'"
-msgstr ""
-
-#: cp/call.c:270
-msgid "type of `%E' does not match destructor type `%T' (type was `%T')"
-msgstr ""
-
-#: cp/call.c:279
-msgid "`%D' is a namespace"
-msgstr ""
+#: ada/misc.c:240
+#, c-format
+msgid "missing argument to \"-%s\""
+msgstr "fehlendes Argument für »-%s«"
-#: cp/call.c:287
-msgid "base object `%E' of scoped method call is of non-aggregate type `%T'"
+#: ada/misc.c:281
+msgid "`-gnat' misspelled as `-gant'"
msgstr ""
-#: cp/call.c:369
+#: cp/call.c:217
msgid "unable to call pointer to member function here"
msgstr ""
-#: cp/call.c:518
-msgid "destructors take no parameters"
-msgstr ""
-
-#: cp/call.c:522
-msgid "destructor name `~%T' does not match type `%T' of expression"
-msgstr ""
-
-#: cp/call.c:543 cp/call.c:5000
-msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
-msgstr ""
-
-#: cp/call.c:567
-msgid "request for member `%D' is ambiguous"
-msgstr ""
-
-#: cp/call.c:2537
+#: cp/call.c:2228
msgid "%s %D(%T, %T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2542
+#: cp/call.c:2233
msgid "%s %D(%T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2546
+#: cp/call.c:2237
msgid "%s %D(%T) <built-in>"
msgstr ""
-#: cp/call.c:2550
+#: cp/call.c:2241
msgid "%s %T <conversion>"
msgstr ""
-#: cp/call.c:2552
-msgid "%s %+#D%s"
+#: cp/call.c:2243
+msgid "%J%s %+#D <near match>"
msgstr ""
-#: cp/call.c:2726
-msgid "conversion from `%T' to `%T' is ambiguous"
+#: cp/call.c:2245
+msgid "%J%s %+#D"
msgstr ""
-#: cp/call.c:2803
-#, fuzzy
-msgid "`%T' is not a class type"
-msgstr "»%s« ist kein gültiger Klassenname"
-
-#: cp/call.c:2811
-msgid "incomplete type '%T' cannot be used to name a scope"
+#: cp/call.c:2280
+msgid "candidates are:"
msgstr ""
-#: cp/call.c:2831 cp/typeck.c:2188 cp/typeck.c:2217
-msgid "'%D' has no member named '%E'"
+#: cp/call.c:2468
+msgid "conversion from `%T' to `%T' is ambiguous"
msgstr ""
-#: cp/call.c:2933
+#: cp/call.c:2619 cp/call.c:2663
msgid "no matching function for call to `%D(%A)'"
msgstr ""
-#: cp/call.c:2944 cp/call.c:5087
+#: cp/call.c:2622 cp/call.c:2666
msgid "call of overloaded `%D(%A)' is ambiguous"
msgstr ""
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
-#: cp/call.c:2971
+#: cp/call.c:2732
#, c-format
msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*"
msgstr ""
-#: cp/call.c:3036
+#: cp/call.c:2798
msgid "no match for call to `(%T) (%A)'"
msgstr ""
-#: cp/call.c:3046
+#: cp/call.c:2806
msgid "call of `(%T) (%A)' is ambiguous"
msgstr ""
-#: cp/call.c:3081
+#: cp/call.c:2839
#, c-format
msgid "%s for ternary 'operator?:' in '%E ? %E : %E'"
msgstr ""
-#: cp/call.c:3087
+#: cp/call.c:2845
#, c-format
msgid "%s for 'operator%s' in '%E%s'"
msgstr ""
-#: cp/call.c:3091
+#: cp/call.c:2849
#, c-format
msgid "%s for 'operator[]' in '%E[%E]'"
msgstr ""
-#: cp/call.c:3096
+#: cp/call.c:2854
+#, c-format
+msgid "%s for '%s' in '%s %E'"
+msgstr "%s vor »%s« in »%s %E«"
+
+#: cp/call.c:2859
#, c-format
msgid "%s for 'operator%s' in '%E %s %E'"
msgstr ""
-#: cp/call.c:3099
+#: cp/call.c:2862
#, c-format
msgid "%s for 'operator%s' in '%s%E'"
msgstr ""
-#: cp/call.c:3191
+#: cp/call.c:2957
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/call.c:3250
+#: cp/call.c:3018
#, c-format
msgid "`%E' has type `void' and is not a throw-expression"
msgstr ""
-#: cp/call.c:3283 cp/call.c:3475
+#: cp/call.c:3051 cp/call.c:3242
msgid "operands to ?: have different types"
msgstr ""
-#: cp/call.c:3428
+#: cp/call.c:3196
msgid "enumeral mismatch in conditional expression: `%T' vs `%T'"
msgstr ""
-#: cp/call.c:3435
+#: cp/call.c:3203
msgid "enumeral and non-enumeral type in conditional expression"
msgstr ""
-#: cp/call.c:3516
-msgid "`%D' must be declared before use"
-msgstr ""
-
-#: cp/call.c:3706
+#: cp/call.c:3487
msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead"
msgstr ""
-#: cp/call.c:3753
+#: cp/call.c:3532
msgid "using synthesized `%#D' for copy assignment"
msgstr ""
-#: cp/call.c:3755
+#: cp/call.c:3534
msgid " where cfront would use `%#D'"
msgstr ""
-#: cp/call.c:3782
+#: cp/call.c:3557
msgid "comparison between `%#T' and `%#T'"
msgstr ""
-#: cp/call.c:4021
-msgid "no suitable `operator delete' for `%T'"
-msgstr ""
+#: cp/call.c:3803
+msgid "no suitable `operator %s' for `%T'"
+msgstr "kein geeigneter »operator %s« für »%T«"
-#: cp/call.c:4040
+#: cp/call.c:3820
msgid "`%+#D' is private"
msgstr ""
-#: cp/call.c:4042
+#: cp/call.c:3822
msgid "`%+#D' is protected"
msgstr ""
-#: cp/call.c:4044
+#: cp/call.c:3824
msgid "`%+#D' is inaccessible"
msgstr ""
-#: cp/call.c:4045
+#: cp/call.c:3825
msgid "within this context"
msgstr ""
-#: cp/call.c:4088
+#: cp/call.c:3895
msgid "invalid conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:4090 cp/call.c:4229 cp/call.c:4231
+#: cp/call.c:3897
msgid " initializing argument %P of `%D'"
msgstr ""
-#: cp/call.c:4152 cp/call.c:4156
-msgid " initializing argument %P of `%D' from result of `%D'"
-msgstr ""
+#: cp/call.c:4050
+msgid "cannot bind bitfield `%E' to `%T'"
+msgstr "das Bitfeld »%E« kann nicht mit »%T« verbunden werden"
-#: cp/call.c:4162 cp/call.c:4165
-msgid " initializing temporary from result of `%D'"
-msgstr ""
+#: cp/call.c:4053
+msgid "cannot bind packed field `%E' to `%T'"
+msgstr "das gepackte Feld »%E« kann nicht mit »%T« verbunden werden"
+
+#: cp/call.c:4056
+msgid "cannot bind rvalue `%E' to `%T'"
+msgstr "der R-Wert »%E« kann nicht mit »%T« verbunden werden"
-#. Undefined behavior [expr.call] 5.2.2/7. We used to just warn
-#. here and do a bitwise copy, but now cp_expr_size will abort if we
-#. try to do that.
-#: cp/call.c:4316
+#: cp/call.c:4144
msgid "cannot pass objects of non-POD type `%#T' through `...'; call will abort at runtime"
msgstr ""
#. Undefined behavior [expr.call] 5.2.2/7.
-#: cp/call.c:4343
-msgid "cannot receive objects of non-POD type `%#T' through `...'"
+#: cp/call.c:4168
+msgid "cannot receive objects of non-POD type `%#T' through `...'; call will abort at runtime"
msgstr ""
-#: cp/call.c:4523
+#: cp/call.c:4208
+msgid "the default argument for parameter %d of `%D' has not yet been parsed"
+msgstr ""
+
+#: cp/call.c:4403
msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
msgstr ""
-#: cp/call.c:4542
+#: cp/call.c:4422
msgid "`%T' is not an accessible base of `%T'"
msgstr ""
-#: cp/call.c:4786
+#: cp/call.c:4696
msgid "could not find class$ field in java interface type `%T'"
msgstr ""
-#: cp/call.c:4974
+#: cp/call.c:4951
msgid "call to non-function `%D'"
msgstr ""
-#: cp/call.c:5076
-msgid "no matching function for call to `%T::%D(%A)%#V'"
+#: cp/call.c:4977
+msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+msgstr ""
+
+#: cp/call.c:5055
+msgid "no matching function for call to `%T::%s(%A)%#V'"
msgstr ""
-#: cp/call.c:5106
+#: cp/call.c:5072
+#, c-format
+msgid "call of overloaded `%s(%A)' is ambiguous"
+msgstr ""
+
+#: cp/call.c:5093
msgid "cannot call member function `%D' without object"
msgstr ""
-#: cp/call.c:5704
+#: cp/call.c:5678
msgid "passing `%T' chooses `%T' over `%T'"
msgstr ""
-#: cp/call.c:5706 cp/decl2.c:4154
+#: cp/call.c:5680 cp/name-lookup.c:4057
msgid " in call to `%D'"
msgstr ""
-#: cp/call.c:5755
+#: cp/call.c:5737
msgid "choosing `%D' over `%D'"
msgstr ""
-#: cp/call.c:5756
+#: cp/call.c:5738
msgid " for conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:5758
+#: cp/call.c:5740
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:5879
-msgid "ISO C++ says that `%D' and `%D' are ambiguous even though the worst conversion for the former is better than the worst conversion for the latter"
+#: cp/call.c:5860
+msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
+msgstr ""
+
+#: cp/call.c:5864
+msgid "candidate 1:"
+msgstr ""
+
+#: cp/call.c:5865
+msgid "candidate 2:"
msgstr ""
-#: cp/call.c:5996
+#: cp/call.c:5974
msgid "could not convert `%E' to `%T'"
msgstr ""
-#: cp/call.c:6105
+#: cp/call.c:6079
msgid "invalid initialization of non-const reference of type '%T' from a temporary of type '%T'"
msgstr ""
-#: cp/call.c:6109
+#: cp/call.c:6083
msgid "invalid initialization of reference of type '%T' from expression of type '%T'"
msgstr ""
-#: cp/class.c:287
+#: cp/class.c:281
msgid "cannot convert from base `%T' to derived type `%T' via virtual base `%T'"
msgstr ""
-#: cp/class.c:992
+#: cp/class.c:764
+msgid "Java class '%T' cannot have an implicit non-trivial destructor"
+msgstr ""
+
+#: cp/class.c:765
+msgid "Java class '%T' cannot have a destructor"
+msgstr ""
+
+#: cp/class.c:933
msgid "`%#D' and `%#D' cannot be overloaded"
msgstr ""
-#: cp/class.c:1076
+#: cp/class.c:1016
msgid "duplicate enum value `%D'"
msgstr ""
-#: cp/class.c:1079
+#: cp/class.c:1019
msgid "duplicate field `%D' (as enum and non-enum)"
msgstr ""
-#: cp/class.c:1086
+#: cp/class.c:1026
msgid "duplicate nested type `%D'"
msgstr ""
-#: cp/class.c:1097
+#: cp/class.c:1037
msgid "duplicate field `%D' (as type and non-type)"
msgstr ""
-#: cp/class.c:1101
+#: cp/class.c:1041
msgid "duplicate member `%D'"
msgstr ""
-#: cp/class.c:1144
+#: cp/class.c:1079
msgid "conflicting access specifications for method `%D', ignored"
msgstr ""
-#: cp/class.c:1146
+#: cp/class.c:1081
#, c-format
msgid "conflicting access specifications for field `%s', ignored"
msgstr ""
-#: cp/class.c:1194
+#: cp/class.c:1131
msgid "`%D' names constructor"
msgstr ""
-#: cp/class.c:1199
+#: cp/class.c:1136
msgid "`%D' invalid in `%T'"
msgstr ""
-#: cp/class.c:1207
+#: cp/class.c:1144
msgid "no members matching `%D' in `%#T'"
msgstr ""
-#: cp/class.c:1239 cp/class.c:1247
+#: cp/class.c:1176 cp/class.c:1184
msgid "`%D' invalid in `%#T'"
msgstr ""
-#: cp/class.c:1240
+#: cp/class.c:1177
msgid " because of local method `%#D' with same name"
msgstr ""
-#: cp/class.c:1248
+#: cp/class.c:1185
msgid " because of local member `%#D' with same name"
msgstr ""
-#: cp/class.c:1320
+#: cp/class.c:1255
msgid "base class `%#T' has a non-virtual destructor"
msgstr ""
-#: cp/class.c:1340
+#: cp/class.c:1275
msgid "base `%T' with only non-default constructor in class without a constructor"
msgstr ""
-#: cp/class.c:1912
+#: cp/class.c:1659
msgid "all member functions in class `%T' are private"
msgstr ""
-#: cp/class.c:1926
+#: cp/class.c:1670
msgid "`%#T' only defines a private destructor and has no friends"
msgstr ""
-#: cp/class.c:1969
+#: cp/class.c:1712
msgid "`%#T' only defines private constructors and has no friends"
msgstr ""
-#: cp/class.c:2090 cp/class.c:5276
-msgid "redefinition of `%#T'"
-msgstr ""
-
-#: cp/class.c:2091
-msgid "previous definition of `%#T'"
-msgstr ""
-
-#: cp/class.c:2365
+#: cp/class.c:2097
msgid "no unique final overrider for `%D' in `%T'"
msgstr ""
#. Here we know it is a hider, and no overrider exists.
-#: cp/class.c:2712
+#: cp/class.c:2542
msgid "`%D' was hidden"
msgstr ""
-#: cp/class.c:2713
+#: cp/class.c:2543
msgid " by `%D'"
msgstr ""
-#: cp/class.c:2755
+#: cp/class.c:2584
msgid "ISO C++ forbids member `%D' with same name as enclosing class"
msgstr ""
-#: cp/class.c:2760 cp/decl2.c:1331
+#: cp/class.c:2589 cp/decl2.c:1167
msgid "`%#D' invalid; an anonymous union can only have non-static data members"
msgstr ""
-#: cp/class.c:2766 cp/decl2.c:1337
+#: cp/class.c:2595 cp/decl2.c:1174
msgid "private member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:2769 cp/decl2.c:1339
+#: cp/class.c:2598 cp/decl2.c:1176
msgid "protected member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:2894
+#: cp/class.c:2717
msgid "vtable layout for class `%T' may not be ABI-compliant and may change in a future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/class.c:2958
+#: cp/class.c:2777
msgid "bit-field `%#D' with non-integral type"
msgstr ""
-#: cp/class.c:2978
+#: cp/class.c:2797
msgid "bit-field `%D' width not an integer constant"
msgstr ""
-#: cp/class.c:2984
+#: cp/class.c:2803
msgid "negative width in bit-field `%D'"
msgstr ""
-#: cp/class.c:2989
+#: cp/class.c:2808
msgid "zero width for bit-field `%D'"
msgstr ""
-#: cp/class.c:2995
+#: cp/class.c:2814
msgid "width of `%D' exceeds its type"
msgstr ""
-#: cp/class.c:3004
+#: cp/class.c:2823
msgid "`%D' is too small to hold all values of `%#T'"
msgstr ""
-#: cp/class.c:3088
+#: cp/class.c:2885
msgid "member `%#D' with constructor not allowed in union"
msgstr ""
-#: cp/class.c:3091
+#: cp/class.c:2888
msgid "member `%#D' with destructor not allowed in union"
msgstr ""
-#: cp/class.c:3094
+#: cp/class.c:2891
msgid "member `%#D' with copy assignment operator not allowed in union"
msgstr ""
-#: cp/class.c:3121
+#: cp/class.c:2918
msgid "multiple fields in union `%T' initialized"
msgstr ""
-#: cp/class.c:3234
+#: cp/class.c:2987
+msgid "ignoring packed attribute on unpacked non-POD field `%#D'"
+msgstr ""
+
+#: cp/class.c:3039
msgid "field `%D' in local class cannot be static"
msgstr ""
-#: cp/class.c:3240
+#: cp/class.c:3045
msgid "field `%D' invalidly declared function type"
msgstr ""
-#: cp/class.c:3247
+#: cp/class.c:3052
msgid "field `%D' invalidly declared method type"
msgstr ""
-#: cp/class.c:3253
-msgid "field `%D' invalidly declared offset type"
-msgstr ""
-
#. Unions cannot have static members.
-#: cp/class.c:3271
+#: cp/class.c:3070
msgid "field `%D' declared static in union"
msgstr ""
-#: cp/class.c:3298
+#: cp/class.c:3097
msgid "non-static reference `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3333
+#: cp/class.c:3132
msgid "non-static const member `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3349
+#: cp/class.c:3147
msgid "field `%#D' with same name as class"
msgstr ""
-#: cp/class.c:3367
+#: cp/class.c:3165
msgid "`%#T' has pointer data members"
msgstr ""
-#: cp/class.c:3371
+#: cp/class.c:3169
msgid " but does not override `%T(const %T&)'"
msgstr ""
-#: cp/class.c:3373
+#: cp/class.c:3171
msgid " or `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3376
+#: cp/class.c:3174
msgid " but does not override `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3826
+#: cp/class.c:3604
msgid "offset of empty base `%T' may not be ABI-compliant and maychange in a future version of GCC"
msgstr ""
-#: cp/class.c:3935
+#: cp/class.c:3714
msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:4025
+#: cp/class.c:3801
msgid "initializer specified for non-virtual method `%D'"
msgstr ""
-#: cp/class.c:4761
+#: cp/class.c:4489
msgid "offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:4861
+#: cp/class.c:4579
msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgstr ""
-#: cp/class.c:4874
+#: cp/class.c:4592
msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
msgstr ""
-#: cp/class.c:5030
+#: cp/class.c:4766
msgid "size assigned to `%T' may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
#. Versions of G++ before G++ 3.4 did not reset the
#. DECL_MODE.
-#: cp/class.c:5053
+#: cp/class.c:4805
msgid "the offset of `%D' may not be ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5079
+#: cp/class.c:4828
msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5088
+#: cp/class.c:4837
msgid "`%D' contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:5147
+#: cp/class.c:4896
msgid "layout of classes derived from empty class `%T' may change in a future version of GCC"
msgstr ""
-#: cp/class.c:5432
+#: cp/class.c:5026 cp/semantics.c:2029
+msgid "redefinition of `%#T'"
+msgstr ""
+
+#: cp/class.c:5196
msgid "`%#T' has virtual functions but non-virtual destructor"
msgstr ""
-#: cp/class.c:5516
+#: cp/class.c:5275
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:5982
+#: cp/class.c:5717
#, c-format
msgid "language string `\"%s\"' not recognized"
msgstr ""
-#: cp/class.c:6078
+#: cp/class.c:5805
msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgstr ""
-#: cp/class.c:6203
+#: cp/class.c:5930
msgid "no matches converting function `%D' to type `%#T'"
msgstr ""
-#: cp/class.c:6226
+#: cp/class.c:5953
msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
msgstr ""
-#: cp/class.c:6252
+#: cp/class.c:5979
msgid "assuming pointer to member `%D'"
msgstr ""
-#: cp/class.c:6255
+#: cp/class.c:5982
#, c-format
msgid "(a pointer to member can only be formed with `&%E')"
msgstr ""
-#: cp/class.c:6306 cp/class.c:6477 cp/class.c:6484
+#: cp/class.c:6027 cp/class.c:6209 cp/class.c:6216
msgid "not enough type information"
msgstr ""
-#: cp/class.c:6315
+#: cp/class.c:6044
msgid "argument of type `%T' does not match `%T'"
msgstr ""
-#: cp/class.c:6461
+#: cp/class.c:6193
msgid "invalid operation on uninstantiated type"
msgstr ""
@@ -14113,14 +13396,18 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:6745 cp/decl.c:1254 cp/decl.c:3379 cp/pt.c:2004
+#: cp/class.c:6451 cp/decl.c:1225 cp/name-lookup.c:495 cp/pt.c:2093
msgid "declaration of `%#D'"
msgstr ""
-#: cp/class.c:6746
+#: cp/class.c:6452
msgid "changes meaning of `%D' from `%+#D'"
msgstr ""
+#: cp/cp-lang.c:398
+msgid "inter-module optimisations not implemented yet"
+msgstr ""
+
#: cp/cvt.c:88
msgid "can't convert from incomplete type `%T' to `%T'"
msgstr ""
@@ -14129,246 +13416,227 @@ msgstr ""
msgid "conversion of `%E' from `%T' to `%T' is ambiguous"
msgstr ""
-#: cp/cvt.c:126
+#: cp/cvt.c:113 cp/cvt.c:127
msgid "converting from `%T' to `%T'"
msgstr ""
-#: cp/cvt.c:203 cp/cvt.c:207
-msgid "pointer to member cast from `%T' to `%T' is via virtual base"
+#: cp/cvt.c:185 cp/cvt.c:253 cp/cvt.c:297
+msgid "cannot convert `%E' from type `%T' to type `%T'"
msgstr ""
-#: cp/cvt.c:225 cp/cvt.c:236 cp/cvt.c:283
-msgid "cannot convert `%E' from type `%T' to type `%T'"
+#: cp/cvt.c:214 cp/cvt.c:218
+msgid "pointer to member cast from `%T' to `%T' is via virtual base"
msgstr ""
-#: cp/cvt.c:262
+#: cp/cvt.c:276
msgid "invalid conversion from '%T' to '%T'"
msgstr ""
-#: cp/cvt.c:504
+#: cp/cvt.c:508
msgid "conversion from `%T' to `%T' discards qualifiers"
msgstr ""
-#: cp/cvt.c:522
+#: cp/cvt.c:526
msgid "casting `%T' to `%T' does not dereference pointer"
msgstr ""
-#: cp/cvt.c:551
+#: cp/cvt.c:553
msgid "cannot convert type `%T' to type `%T'"
msgstr ""
-#: cp/cvt.c:683
+#: cp/cvt.c:679
msgid "conversion from `%#T' to `%#T'"
msgstr ""
-#: cp/cvt.c:695
+#: cp/cvt.c:691
msgid "`%#T' used where a `%T' was expected"
msgstr ""
-#: cp/cvt.c:712
-msgid "the address of `%D', will always be `true'"
-msgstr ""
-
-#: cp/cvt.c:732
+#: cp/cvt.c:715
msgid "`%#T' used where a floating point value was expected"
msgstr ""
-#: cp/cvt.c:779
+#: cp/cvt.c:762
msgid "conversion from `%T' to non-scalar type `%T' requested"
msgstr ""
-#: cp/cvt.c:865
+#: cp/cvt.c:850
msgid "object of incomplete type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:868
+#: cp/cvt.c:853
msgid "object of type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:884
+#: cp/cvt.c:869
msgid "object `%E' of incomplete type `%T' will not be accessed in %s"
msgstr ""
#. [over.over] enumerates the places where we can take the address
#. of an overloaded function, and this is not one of them.
-#: cp/cvt.c:904
+#: cp/cvt.c:885
#, c-format
msgid "%s cannot resolve address of overloaded function"
msgstr ""
#. Only warn when there is no &.
-#: cp/cvt.c:909
+#: cp/cvt.c:891
#, c-format
msgid "%s is a reference, not call, to function `%E'"
msgstr ""
-#: cp/cvt.c:1039
+#: cp/cvt.c:898
+#, c-format
+msgid "%s has no effect"
+msgstr "%s hat keinen Effekt"
+
+#: cp/cvt.c:1009
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1115
+#: cp/cvt.c:1081
msgid "ambiguous default type conversion from `%T'"
msgstr ""
-#: cp/cvt.c:1117
+#: cp/cvt.c:1083
msgid " candidate conversions include `%D' and `%D'"
msgstr ""
-#: cp/decl.c:736
-#, c-format
-msgid "push %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:770
-#, c-format
-msgid "pop %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:776 cp/decl.c:814
-msgid "XXX is_class_level != (current_binding_level == class_binding_level)\n"
-msgstr ""
-
-#: cp/decl.c:808
-#, c-format
-msgid "suspend %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:837
-#, c-format
-msgid "resume %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:1255 cp/decl.c:3490
-msgid "conflicts with previous declaration `%#D'"
-msgstr ""
-
-#: cp/decl.c:1467
+#: cp/decl.c:374
msgid "label `%D' used but not defined"
msgstr ""
-#: cp/decl.c:1472
+#: cp/decl.c:381
msgid "label `%D' defined but not used"
msgstr ""
-#: cp/decl.c:2489
-msgid "namespace alias `%D' not allowed here, assuming `%D'"
+#: cp/decl.c:1133 cp/decl.c:1559
+msgid "previous declaration of `%D'"
msgstr ""
-#: cp/decl.c:2825
-msgid "XXX entering pop_everything ()\n"
-msgstr ""
+#: cp/decl.c:1181
+msgid "%Jfunction '%D' redeclared as inline"
+msgstr "%JFunktion »%D« als inline redeklariert"
-#: cp/decl.c:2834
-msgid "XXX leaving pop_everything ()\n"
-msgstr ""
+#: cp/decl.c:1182
+msgid "%Jprevious declaration of '%D' with attribute noinline"
+msgstr "%Jvorherige Deklaration von »%D« mit Attribut noinline"
-#: cp/decl.c:3285 cp/decl.c:3700
-msgid "previous declaration of `%D'"
-msgstr ""
+#: cp/decl.c:1189
+msgid "%Jfunction '%D' redeclared with attribute noinline"
+msgstr "%JFunktion »%D« redeklariert mit Attribut noinline"
+
+#: cp/decl.c:1191
+msgid "%Jprevious declaration of '%D' was inline"
+msgstr "%Jvorherige Deklaration von »%D« war inline"
-#: cp/decl.c:3366 cp/decl.c:3404
+#: cp/decl.c:1212 cp/decl.c:1250
msgid "shadowing %s function `%#D'"
msgstr ""
-#: cp/decl.c:3375
+#: cp/decl.c:1221
msgid "library function `%#D' redeclared as non-function `%#D'"
msgstr ""
-#: cp/decl.c:3380
+#: cp/decl.c:1226
msgid "conflicts with built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:3399 cp/decl.c:3504 cp/decl.c:3520
+#: cp/decl.c:1245 cp/decl.c:1357 cp/decl.c:1373
msgid "new declaration `%#D'"
msgstr ""
-#: cp/decl.c:3400
+#: cp/decl.c:1246
msgid "ambiguates built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:3464
+#: cp/decl.c:1317
msgid "`%#D' redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:3467
+#: cp/decl.c:1320
msgid "previous declaration of `%#D'"
msgstr ""
-#: cp/decl.c:3489
+#: cp/decl.c:1342
msgid "declaration of template `%#D'"
msgstr ""
-#: cp/decl.c:3505 cp/decl.c:3521
+#: cp/decl.c:1343 cp/name-lookup.c:496
+msgid "conflicts with previous declaration `%#D'"
+msgstr ""
+
+#: cp/decl.c:1358 cp/decl.c:1374
msgid "ambiguates old declaration `%#D'"
msgstr ""
-#: cp/decl.c:3513
+#: cp/decl.c:1366
msgid "declaration of C function `%#D' conflicts with"
msgstr ""
-#: cp/decl.c:3515
+#: cp/decl.c:1368
msgid "previous declaration `%#D' here"
msgstr ""
-#: cp/decl.c:3533
-msgid "conflicting types for `%#D'"
-msgstr ""
+#: cp/decl.c:1384
+msgid "conflicting declaration '%#D'"
+msgstr "in Konflikt stehende Deklaration »%#D«"
-#: cp/decl.c:3534
-msgid "previous declaration as `%#D'"
-msgstr ""
+#: cp/decl.c:1385
+msgid "'%D' has a previous declaration as `%#D'"
+msgstr "»%D« hat eine vorherige Deklaration als »%#Ds«"
-#: cp/decl.c:3577
+#: cp/decl.c:1438
msgid "`%#D' previously defined here"
msgstr ""
-#: cp/decl.c:3578
+#: cp/decl.c:1439
msgid "`%#D' previously declared here"
msgstr ""
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:3587
+#: cp/decl.c:1448
msgid "prototype for `%#D'"
msgstr ""
-#: cp/decl.c:3588
-msgid "follows non-prototype definition here"
-msgstr ""
+#: cp/decl.c:1449
+msgid "%Jfollows non-prototype definition here"
+msgstr "%Jfolgt Nicht-Prototyp-Definition hier"
-#: cp/decl.c:3600
+#: cp/decl.c:1461
msgid "previous declaration of `%#D' with %L linkage"
msgstr ""
-#: cp/decl.c:3602
+#: cp/decl.c:1463
msgid "conflicts with new declaration with %L linkage"
msgstr ""
-#: cp/decl.c:3625 cp/decl.c:3632
+#: cp/decl.c:1486 cp/decl.c:1493
msgid "default argument given for parameter %d of `%#D'"
msgstr ""
-#: cp/decl.c:3627 cp/decl.c:3634
+#: cp/decl.c:1488 cp/decl.c:1495
msgid "after previous specification in `%#D'"
msgstr ""
-#: cp/decl.c:3643
+#: cp/decl.c:1504
msgid "`%#D' was used before it was declared inline"
msgstr ""
-#: cp/decl.c:3645
-msgid "previous non-inline declaration here"
-msgstr ""
+#: cp/decl.c:1505
+msgid "%Jprevious non-inline declaration here"
+msgstr "%Jvorherige nicht-inline-Deklaration hier"
-#: cp/decl.c:3699
+#: cp/decl.c:1558
msgid "redundant redeclaration of `%D' in same scope"
msgstr ""
-#: cp/decl.c:3780
+#: cp/decl.c:1649
#, c-format
msgid "declaration of `%F' throws different exceptions"
msgstr ""
-#: cp/decl.c:3782
+#: cp/decl.c:1651
#, c-format
msgid "than previous declaration `%F'"
msgstr ""
@@ -14381,612 +13649,492 @@ msgstr ""
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
-#: cp/decl.c:3922
+#: cp/decl.c:1798
msgid "explicit specialization of %D after first use"
msgstr ""
-#: cp/decl.c:4187
-msgid "`%#D' used prior to declaration"
-msgstr ""
-
-#: cp/decl.c:4218
-msgid "redeclaration of `wchar_t' as `%T'"
-msgstr ""
-
-#. A redeclaration of main, but not a duplicate of the
-#. previous one.
-#.
-#. [basic.start.main]
-#.
-#. This function shall not be overloaded.
-#: cp/decl.c:4246
-msgid "invalid redeclaration of `%D'"
-msgstr ""
-
-#: cp/decl.c:4247
-msgid "as `%D'"
-msgstr ""
-
-#: cp/decl.c:4337
-msgid "previous external decl of `%#D'"
-msgstr ""
-
-#: cp/decl.c:4378
-msgid "`%D' was previously implicitly declared to return `int'"
-msgstr ""
-
-#: cp/decl.c:4438
-msgid "extern declaration of `%#D' doesn't match"
-msgstr ""
-
-#: cp/decl.c:4439
-msgid "global declaration `%#D'"
-msgstr ""
-
-#: cp/decl.c:4472
-msgid "declaration of `%#D' shadows a parameter"
-msgstr ""
-
-#: cp/decl.c:4492
-#, c-format
-msgid "declaration of `%s' shadows a member of `this'"
-msgstr ""
-
-#: cp/decl.c:4889
-msgid "`%#D' hides constructor for `%#T'"
-msgstr ""
-
-#: cp/decl.c:4904
-msgid "`%#D' conflicts with previous using declaration `%#D'"
-msgstr ""
-
-#: cp/decl.c:4916
-msgid "previous non-function declaration `%#D'"
+#: cp/decl.c:1880
+msgid "%J'%D': visibility attribute ignored because it"
msgstr ""
-#: cp/decl.c:4917
-msgid "conflicts with function declaration `%#D'"
-msgstr ""
+#: cp/decl.c:1882
+msgid "%Jconflicts with previous declaration here"
+msgstr "%Jin Konflikt mit vorheriger Deklaration hier"
-#: cp/decl.c:5007
+#: cp/decl.c:1976
msgid "implicit declaration of function `%#D'"
msgstr ""
-#: cp/decl.c:5167
+#: cp/decl.c:2124
#, c-format
msgid "label `%s' referenced outside of any function"
msgstr ""
-#: cp/decl.c:5270 cp/decl.c:5294 cp/decl.c:5387
+#: cp/decl.c:2221 cp/decl.c:2245 cp/decl.c:2333
msgid "jump to label `%D'"
msgstr ""
-#: cp/decl.c:5272 cp/decl.c:5296
+#: cp/decl.c:2223 cp/decl.c:2247
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:5280
+#: cp/decl.c:2226 cp/decl.c:2250
+msgid "%H from here"
+msgstr "%H von hier"
+
+#: cp/decl.c:2231
msgid " crosses initialization of `%#D'"
msgstr ""
-#: cp/decl.c:5283 cp/decl.c:5403
+#: cp/decl.c:2234 cp/decl.c:2349
msgid " enters scope of non-POD `%#D'"
msgstr ""
-#: cp/decl.c:5303 cp/decl.c:5407
+#: cp/decl.c:2254 cp/decl.c:2353
msgid " enters try block"
msgstr ""
-#. Can't skip init of __exception_info.
-#: cp/decl.c:5305 cp/decl.c:5399 cp/decl.c:5409
+#: cp/decl.c:2256 cp/decl.c:2355
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:5388
+#: cp/decl.c:2334
msgid " from here"
msgstr ""
-#: cp/decl.c:5401
+#. Can't skip init of __exception_info.
+#: cp/decl.c:2345
+msgid "%J enters catch block"
+msgstr ""
+
+#: cp/decl.c:2347
msgid " skips initialization of `%#D'"
msgstr ""
-#: cp/decl.c:5437
+#: cp/decl.c:2381
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:5440
+#: cp/decl.c:2384
msgid "duplicate label `%D'"
msgstr ""
-#: cp/decl.c:5525
-#, c-format
-msgid "case label `%E' not within a switch statement"
-msgstr ""
-
-#. Definition isn't the kind we were looking for.
-#: cp/decl.c:5704 cp/decl.c:5723
-msgid "`%#D' redeclared as %C"
-msgstr ""
-
-#. This happens for A::B where B is a template, and there are no
-#. template arguments.
-#: cp/decl.c:5811 cp/typeck.c:2069 cp/typeck.c:2229
-msgid "invalid use of `%D'"
-msgstr ""
-
-#: cp/decl.c:5852
-msgid "`%D::%D' is not a template"
-msgstr ""
-
-#: cp/decl.c:5869
-msgid "`%D' undeclared in namespace `%D'"
-msgstr ""
-
-#: cp/decl.c:6002
+#: cp/decl.c:2612 cp/parser.c:3178
msgid "`%D' used without template parameters"
msgstr ""
-#: cp/decl.c:6013 cp/decl.c:6029 cp/decl.c:6139
+#: cp/decl.c:2622 cp/decl.c:2638 cp/decl.c:2726
msgid "no class template named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:6055 cp/decl.c:6065 cp/decl.c:6100
+#: cp/decl.c:2659 cp/decl.c:2669 cp/decl.c:2689
msgid "no type named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:6329
-msgid "lookup of `%D' finds `%#D'"
-msgstr ""
-
-#: cp/decl.c:6331
-msgid " instead of `%D' from dependent base class"
-msgstr ""
-
-#: cp/decl.c:6333
-msgid " (use `typename %T::%D' if that's what you meant)"
-msgstr ""
-
-#: cp/decl.c:6364
-msgid "name lookup of `%D' changed"
-msgstr ""
-
-#: cp/decl.c:6366
-msgid " matches this `%D' under ISO standard rules"
-msgstr ""
-
-#: cp/decl.c:6368
-msgid " matches this `%D' under old rules"
-msgstr ""
-
-#: cp/decl.c:6382 cp/decl.c:6389
-msgid "name lookup of `%D' changed for new ISO `for' scoping"
-msgstr ""
-
-#: cp/decl.c:6384
-msgid " cannot use obsolete binding at `%D' because it has a destructor"
-msgstr ""
-
-#: cp/decl.c:6391
-msgid " using obsolete binding at `%D'"
+#: cp/decl.c:3416
+msgid "%Jan anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:6609
-msgid "lookup of `%D' in the scope of `%#T' (`%#D') does not match lookup in the current scope (`%#D')"
-msgstr ""
-
-#: cp/decl.c:7432
-msgid "an anonymous union cannot have function members"
-msgstr ""
-
-#: cp/decl.c:7449
+#: cp/decl.c:3434
msgid "member %#D' with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7452
+#: cp/decl.c:3437
msgid "member %#D' with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7455
+#: cp/decl.c:3440
msgid "member %#D' with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7493
+#: cp/decl.c:3480
msgid "redeclaration of C++ built-in type `%T'"
msgstr ""
-#: cp/decl.c:7529
+#: cp/decl.c:3518
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:7556
+#: cp/decl.c:3544
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:7563
+#: cp/decl.c:3552
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:7570
+#: cp/decl.c:3559
msgid "`%D' can only be specified for functions"
msgstr ""
-#: cp/decl.c:7572
+#: cp/decl.c:3561
msgid "`%D' can only be specified inside a class"
msgstr ""
-#: cp/decl.c:7574
+#: cp/decl.c:3563
msgid "`%D' can only be specified for constructors"
msgstr ""
-#: cp/decl.c:7577
+#: cp/decl.c:3566
msgid "`%D' can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:7719 cp/decl2.c:936
+#: cp/decl.c:3708 cp/decl2.c:861
msgid "typedef `%D' is initialized (use __typeof__ instead)"
msgstr ""
-#: cp/decl.c:7724
+#: cp/decl.c:3713
msgid "function `%#D' is initialized like a variable"
msgstr ""
-#: cp/decl.c:7736
+#: cp/decl.c:3725
msgid "declaration of `%#D' has `extern' and is initialized"
msgstr ""
-#: cp/decl.c:7770
+#: cp/decl.c:3758
msgid "`%#D' is not a static member of `%#T'"
msgstr ""
-#: cp/decl.c:7775
+#: cp/decl.c:3764
msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
msgstr ""
-#: cp/decl.c:7786
+#: cp/decl.c:3775
msgid "duplicate initialization of %D"
msgstr ""
-#: cp/decl.c:7815
+#: cp/decl.c:3806
msgid "declaration of `%#D' outside of class is not definition"
msgstr ""
-#: cp/decl.c:7865
+#: cp/decl.c:3857
msgid "variable `%#D' has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:7873 cp/decl.c:8432
+#: cp/decl.c:3865 cp/decl.c:4426
msgid "elements of array `%#D' have incomplete type"
msgstr ""
-#: cp/decl.c:7889
+#: cp/decl.c:3881
msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:7931
+#: cp/decl.c:3923
msgid "`%D' declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:7940
+#: cp/decl.c:3929
msgid "ISO C++ forbids use of initializer list to initialize reference `%D'"
msgstr ""
-#: cp/decl.c:7970
+#: cp/decl.c:3957
msgid "cannot initialize `%T' from `%T'"
msgstr ""
-#: cp/decl.c:8004
+#: cp/decl.c:3989
msgid "initializer fails to determine size of `%D'"
msgstr ""
-#: cp/decl.c:8009
+#: cp/decl.c:3994
msgid "array size missing in `%D'"
msgstr ""
-#: cp/decl.c:8021
+#: cp/decl.c:4006
msgid "zero-size array `%D'"
msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:8059
+#: cp/decl.c:4043
msgid "storage size of `%D' isn't known"
msgstr ""
-#: cp/decl.c:8081
+#: cp/decl.c:4065
msgid "storage size of `%D' isn't constant"
msgstr ""
-#: cp/decl.c:8137
+#: cp/decl.c:4120
msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
msgstr ""
-#: cp/decl.c:8138
-msgid " you can work around this by removing the initializer"
+#: cp/decl.c:4121
+msgid "%J you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:8164
+#: cp/decl.c:4147
msgid "uninitialized const `%D'"
msgstr ""
-#: cp/decl.c:8249
+#: cp/decl.c:4226
msgid "brace-enclosed initializer used to initialize `%T'"
msgstr ""
-#: cp/decl.c:8313
+#: cp/decl.c:4290
msgid "initializer for `%T' must be brace-enclosed"
msgstr ""
-#: cp/decl.c:8328
+#: cp/decl.c:4307
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/decl.c:8332
+#: cp/decl.c:4311
msgid "`%T' has no non-static data member named `%D'"
msgstr ""
-#: cp/decl.c:8389
-#, fuzzy
+#: cp/decl.c:4359
+msgid "name `%D' used in a GNU-style designated initializer for an array"
+msgstr ""
+
+#: cp/decl.c:4382
msgid "too many initializers for `%T'"
-msgstr "zu viele Eingabedateien"
+msgstr "zu viele Initialisierer für »%T«"
-#: cp/decl.c:8426
+#: cp/decl.c:4420
msgid "variable-sized object `%D' may not be initialized"
msgstr ""
-#: cp/decl.c:8437
+#: cp/decl.c:4431
msgid "`%D' has incomplete type"
msgstr ""
-#: cp/decl.c:8486
+#: cp/decl.c:4486
msgid "`%D' must be initialized by constructor, not by `{...}'"
msgstr ""
-#: cp/decl.c:8527
+#: cp/decl.c:4530
msgid "structure `%D' with uninitialized const members"
msgstr ""
-#: cp/decl.c:8529
+#: cp/decl.c:4532
msgid "structure `%D' with uninitialized reference members"
msgstr ""
-#: cp/decl.c:8770
+#: cp/decl.c:4713
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:8785
+#: cp/decl.c:4730
msgid "cannot initialize `%D' to namespace `%D'"
msgstr ""
-#: cp/decl.c:8836
+#: cp/decl.c:4780
msgid "shadowing previous type declaration of `%#D'"
msgstr ""
-#: cp/decl.c:8883
+#: cp/decl.c:4816
msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
msgstr ""
-#: cp/decl.c:8898
+#: cp/decl.c:4831
msgid "`%D' is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:9298 cp/init.c:562
-msgid "multiple initializations given for `%D'"
-msgstr ""
-
-#: cp/decl.c:9390
+#: cp/decl.c:5313
msgid "invalid catch parameter"
msgstr ""
-#: cp/decl.c:9508
+#: cp/decl.c:5427
msgid "destructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:9511
+#: cp/decl.c:5430
msgid "constructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:9530
+#: cp/decl.c:5452
msgid "`%D' declared as a `virtual' %s"
msgstr ""
-#: cp/decl.c:9532
+#: cp/decl.c:5454
msgid "`%D' declared as an `inline' %s"
msgstr ""
-#: cp/decl.c:9534
+#: cp/decl.c:5456
msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgstr ""
-#: cp/decl.c:9537
+#: cp/decl.c:5459
msgid "`%D' declared as a friend"
msgstr ""
-#: cp/decl.c:9543
+#: cp/decl.c:5465
msgid "`%D' declared with an exception specification"
msgstr ""
-#: cp/decl.c:9618
+#: cp/decl.c:5544
msgid "cannot declare `::main' to be a template"
msgstr ""
-#: cp/decl.c:9620
+#: cp/decl.c:5546
msgid "cannot declare `::main' to be inline"
msgstr ""
-#: cp/decl.c:9622
+#: cp/decl.c:5548
msgid "cannot declare `::main' to be static"
msgstr ""
-#: cp/decl.c:9625
+#: cp/decl.c:5551
msgid "`main' must return `int'"
msgstr ""
-#: cp/decl.c:9653
+#: cp/decl.c:5579
msgid "non-local function `%#D' uses anonymous type"
msgstr ""
-#: cp/decl.c:9656
+#: cp/decl.c:5582
msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:9662
+#: cp/decl.c:5588
msgid "non-local function `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:9691
+#: cp/decl.c:5612
msgid "%smember function `%D' cannot have `%T' method qualifier"
msgstr ""
-#: cp/decl.c:9715
+#: cp/decl.c:5636
msgid "defining explicit specialization `%D' in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:9725
+#: cp/decl.c:5646
msgid "invalid use of template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/decl.c:9753
+#: cp/decl.c:5673
msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
msgstr ""
-#: cp/decl.c:9760
+#: cp/decl.c:5680
msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
msgstr ""
-#: cp/decl.c:9822
+#: cp/decl.c:5741
msgid "definition of implicitly-declared `%D'"
msgstr ""
-#: cp/decl.c:9834 cp/decl2.c:785
+#: cp/decl.c:5759 cp/decl2.c:744
msgid "no `%#D' member function declared in class `%T'"
msgstr ""
-#: cp/decl.c:9967
+#: cp/decl.c:5893
msgid "non-local variable `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:10064
+#: cp/decl.c:6008
msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgstr ""
-#: cp/decl.c:10073
+#: cp/decl.c:6017
msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgstr ""
-#: cp/decl.c:10076
+#: cp/decl.c:6020
msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
msgstr ""
-#: cp/decl.c:10126
-msgid "size of array `%D' has non-integer type"
-msgstr ""
+#: cp/decl.c:6039
+msgid "size of array `%D' has non-integral type `%T'"
+msgstr "Feldgröße von »%D« hat Nicht-Ganzzahltyp »%T«"
-#: cp/decl.c:10128
-msgid "size of array has non-integer type"
-msgstr ""
+#: cp/decl.c:6041
+msgid "size of array has non-integral type `%T'"
+msgstr "Feldgröße hat Nicht-Ganzzahltyp »%T«"
-#: cp/decl.c:10148
+#: cp/decl.c:6077
msgid "size of array `%D' is negative"
msgstr ""
-#: cp/decl.c:10150
+#: cp/decl.c:6079
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:10159
+#: cp/decl.c:6087
msgid "ISO C++ forbids zero-size array `%D'"
msgstr ""
-#: cp/decl.c:10161
+#: cp/decl.c:6089
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:10168
+#: cp/decl.c:6096
msgid "size of array `%D' is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:10171
+#: cp/decl.c:6099
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:10189
+#: cp/decl.c:6104
msgid "ISO C++ forbids variable-size array `%D'"
msgstr ""
-#: cp/decl.c:10192
+#: cp/decl.c:6106
msgid "ISO C++ forbids variable-size array"
msgstr ""
-#: cp/decl.c:10203
+#: cp/decl.c:6128
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:10262
+#: cp/decl.c:6222
msgid "declaration of `%D' as %s"
msgstr "Deklaration von »%D« als %s"
-#: cp/decl.c:10264
+#: cp/decl.c:6224
#, c-format
msgid "creating %s"
msgstr "Erzeugen von %s"
-#: cp/decl.c:10276
+#: cp/decl.c:6236
msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:10279
+#: cp/decl.c:6239
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:10308
+#: cp/decl.c:6267
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:10315
+#: cp/decl.c:6274
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:10321
+#: cp/decl.c:6280
msgid "operator `%T' declared to return `%T'"
msgstr ""
-#: cp/decl.c:10323
+#: cp/decl.c:6282
msgid "return type specified for `operator %T'"
msgstr ""
-#: cp/decl.c:10491
+#: cp/decl.c:6425
msgid "destructors must be member functions"
msgstr ""
-#: cp/decl.c:10510
+#: cp/decl.c:6444
msgid "destructor `%T' must match class name `%T'"
msgstr ""
-#: cp/decl.c:10539
-msgid "variable declaration is not allowed here"
-msgstr ""
-
-#: cp/decl.c:10566
-msgid "invalid declarator"
-msgstr ""
-
-#: cp/decl.c:10617
+#: cp/decl.c:6507
msgid "declarator-id missing; using reserved word `%D'"
msgstr ""
-#: cp/decl.c:10674
+#: cp/decl.c:6561
msgid "type `%T' is not derived from type `%T'"
msgstr ""
#. Parse error puts this typespec where
#. a declarator should go.
-#: cp/decl.c:10726
+#: cp/decl.c:6624
msgid "`%T' specified as declarator-id"
msgstr ""
-#: cp/decl.c:10728
+#: cp/decl.c:6626
msgid " perhaps you want `%T' for a constructor"
msgstr ""
@@ -14994,301 +14142,300 @@ msgstr ""
#. decl-specifier like in
#. std::allocator alloc;
#. Handle that gracefully.
-#: cp/decl.c:10750
+#: cp/decl.c:6648
#, c-format
msgid "invalid use of template-name '%E' in a declarator"
msgstr ""
-#: cp/decl.c:10770
+#: cp/decl.c:6668
msgid "declaration of `%D' as non-function"
msgstr ""
-#: cp/decl.c:10847
+#: cp/decl.c:6745
msgid "`bool' is now a keyword"
msgstr ""
-#: cp/decl.c:10849
+#: cp/decl.c:6747
msgid "extraneous `%T' ignored"
msgstr ""
-#: cp/decl.c:10865 cp/decl.c:10910
+#: cp/decl.c:6763 cp/decl.c:6807
msgid "multiple declarations `%T' and `%T'"
msgstr ""
-#: cp/decl.c:10878
+#: cp/decl.c:6776
msgid "ISO C++ does not support `long long'"
msgstr ""
-#: cp/decl.c:10983 cp/decl.c:10986
+#: cp/decl.c:6880 cp/decl.c:6883
#, c-format
msgid "ISO C++ forbids declaration of `%s' with no type"
msgstr ""
-#. The implicit typename extension is deprecated and will be
-#. removed. Warn about its use now.
-#: cp/decl.c:10996
-msgid "`%T' is implicitly a typename"
-msgstr ""
-
-#: cp/decl.c:11032
+#: cp/decl.c:6914
#, c-format
msgid "short, signed or unsigned invalid for `%s'"
msgstr ""
-#: cp/decl.c:11037
+#: cp/decl.c:6919
#, c-format
msgid "long and short specified together for `%s'"
msgstr ""
-#: cp/decl.c:11048
+#: cp/decl.c:6930
#, c-format
msgid "signed and unsigned given together for `%s'"
msgstr ""
-#: cp/decl.c:11157
+#: cp/decl.c:7039
msgid "qualifiers are not allowed on declaration of `operator %T'"
msgstr ""
-#: cp/decl.c:11179
+#: cp/decl.c:7061
msgid "member `%D' cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:11188
+#: cp/decl.c:7070
msgid "`%T::%D' is not a valid declarator"
msgstr ""
-#: cp/decl.c:11200
+#: cp/decl.c:7082
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:11204
+#: cp/decl.c:7086
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:11217
+#: cp/decl.c:7099
msgid "virtual outside class declaration"
msgstr ""
-#: cp/decl.c:11278
+#: cp/decl.c:7158
#, c-format
msgid "storage class specified for %s `%s'"
msgstr ""
-#: cp/decl.c:11325
+#: cp/decl.c:7193
+#, c-format
+msgid "top-level declaration of `%s' specifies `auto'"
+msgstr "Deklaration höchster Ebene von »%s« spezifiziert »auto«"
+
+#: cp/decl.c:7205
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:11495
+#: cp/decl.c:7370
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:11498
+#: cp/decl.c:7373
#, c-format
msgid "destructors may not be `%s'"
msgstr ""
-#: cp/decl.c:11519
+#: cp/decl.c:7394
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:11522
+#: cp/decl.c:7397
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:11527
+#: cp/decl.c:7402
#, c-format
msgid "constructors may not be `%s'"
msgstr ""
-#: cp/decl.c:11537
+#: cp/decl.c:7412
msgid "return value type specifier for constructor ignored"
msgstr ""
-#: cp/decl.c:11556
+#: cp/decl.c:7431
#, c-format
msgid "can't initialize friend function `%s'"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:11560
+#: cp/decl.c:7435
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:11565
+#: cp/decl.c:7440
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:11567
+#: cp/decl.c:7442
#, c-format
msgid "can't define friend function `%s' in a local class definition"
msgstr ""
-#: cp/decl.c:11591
+#: cp/decl.c:7463
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:11622 cp/decl.c:11629
+#: cp/decl.c:7483 cp/decl.c:7490
msgid "cannot declare reference to `%#T'"
msgstr ""
-#: cp/decl.c:11623
+#: cp/decl.c:7484
msgid "cannot declare pointer to `%#T'"
msgstr ""
-#: cp/decl.c:11628
+#: cp/decl.c:7489
msgid "cannot declare pointer to `%#T' member"
msgstr ""
-#: cp/decl.c:11804
+#: cp/decl.c:7627
msgid "extra qualification `%T::' on member `%s' ignored"
msgstr ""
-#: cp/decl.c:11814
+#: cp/decl.c:7639
msgid "cannot declare member function `%T::%s' within `%T'"
msgstr ""
-#: cp/decl.c:11829
+#: cp/decl.c:7654
msgid "cannot declare member `%T::%s' within `%T'"
msgstr ""
-#: cp/decl.c:11908
+#: cp/decl.c:7734
msgid "data member may not have variably modified type `%T'"
msgstr ""
-#: cp/decl.c:11910
+#: cp/decl.c:7736
msgid "parameter may not have variably modified type `%T'"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:11918
+#: cp/decl.c:7744
msgid "only declarations of constructors can be `explicit'"
msgstr ""
-#: cp/decl.c:11926
+#: cp/decl.c:7752
#, c-format
msgid "non-member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11931
+#: cp/decl.c:7757
#, c-format
msgid "non-object member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11937
+#: cp/decl.c:7763
#, c-format
msgid "function `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11942
+#: cp/decl.c:7768
#, c-format
msgid "static `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11947
+#: cp/decl.c:7773
#, c-format
msgid "const `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11960
+#: cp/decl.c:7786
msgid "template-id `%D' used as a declarator"
msgstr ""
-#: cp/decl.c:11981
+#: cp/decl.c:7807
msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:12030
-msgid "typedef name may not be class-qualified"
+#: cp/decl.c:7815
+msgid "%Jtypedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:12038
-msgid "invalid type qualifier for non-member function type"
-msgstr ""
+#: cp/decl.c:7861
+msgid "%Jinvalid type qualifier for non-member function type"
+msgstr "%Jungültiger Typkennzeichner für Nicht-Element-Funktionstyp"
-#: cp/decl.c:12101
+#: cp/decl.c:7925
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:12106
+#: cp/decl.c:7930
msgid "`inline' specified for friend class declaration"
msgstr ""
-#: cp/decl.c:12114
+#: cp/decl.c:7938
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:12116
+#: cp/decl.c:7940
msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
msgstr ""
-#: cp/decl.c:12120
+#: cp/decl.c:7944
msgid "friend declaration requires class-key, i.e. `friend %#T'"
msgstr ""
-#: cp/decl.c:12134
+#: cp/decl.c:7957
msgid "trying to make class `%T' a friend of global scope"
msgstr ""
-#: cp/decl.c:12145
+#: cp/decl.c:7968
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:12164
+#: cp/decl.c:7987
msgid "abstract declarator `%T' used as declaration"
msgstr ""
-#: cp/decl.c:12176
+#: cp/decl.c:7999
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:12185
+#: cp/decl.c:8008
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:12195
+#: cp/decl.c:8018
msgid "cannot use `::' in parameter declaration"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:12234
+#: cp/decl.c:8063
msgid "invalid use of `::'"
msgstr ""
-#: cp/decl.c:12246
+#: cp/decl.c:8075
msgid "function `%D' cannot be declared friend"
msgstr ""
-#: cp/decl.c:12258
+#: cp/decl.c:8087
msgid "can't make `%D' into a method -- not in a class"
msgstr ""
-#: cp/decl.c:12267
+#: cp/decl.c:8096
msgid "function `%D' declared virtual inside a union"
msgstr ""
-#: cp/decl.c:12279
+#: cp/decl.c:8108
msgid "`%D' cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:12355
+#: cp/decl.c:8185
msgid "field `%D' has incomplete type"
msgstr ""
-#: cp/decl.c:12357
+#: cp/decl.c:8187
msgid "name `%T' has incomplete type"
msgstr ""
-#: cp/decl.c:12366
+#: cp/decl.c:8196
msgid " in instantiation of template `%T'"
msgstr ""
-#: cp/decl.c:12376
+#: cp/decl.c:8206
#, c-format
msgid "`%s' is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:12387
+#: cp/decl.c:8217
msgid "member functions are implicitly friends of their class"
msgstr ""
@@ -15304,99 +14451,95 @@ msgstr ""
#. the rest of the compiler does not correctly
#. handle the initialization unless the member is
#. static so we make it static below.
-#: cp/decl.c:12434
+#: cp/decl.c:8258
msgid "ISO C++ forbids initialization of member `%D'"
msgstr ""
-#: cp/decl.c:12436
+#: cp/decl.c:8260
msgid "making `%D' static"
msgstr ""
-#: cp/decl.c:12460
+#: cp/decl.c:8283
msgid "ISO C++ forbids static data member `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:12501
+#: cp/decl.c:8323
#, c-format
msgid "storage class `auto' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:12503
+#: cp/decl.c:8325
#, c-format
msgid "storage class `register' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:12505
+#: cp/decl.c:8327
#, c-format
msgid "storage class `__thread' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:12516
+#: cp/decl.c:8338
#, c-format
msgid "storage class `static' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:12518
+#: cp/decl.c:8340
#, c-format
msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:12525
+#: cp/decl.c:8347
#, c-format
msgid "virtual non-class function `%s'"
msgstr ""
-#: cp/decl.c:12554
+#: cp/decl.c:8377
msgid "cannot declare member function `%D' to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:12560
+#: cp/decl.c:8383
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:12588
+#: cp/decl.c:8411
msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
msgstr ""
-#: cp/decl.c:12594
+#: cp/decl.c:8417
msgid "static member `%D' declared `register'"
msgstr ""
-#: cp/decl.c:12599
+#: cp/decl.c:8422
msgid "cannot explicitly declare member `%#D' to have extern linkage"
msgstr ""
-#: cp/decl.c:12774
+#: cp/decl.c:8564
msgid "default argument for `%#D' has type `%T'"
msgstr ""
-#: cp/decl.c:12777
+#: cp/decl.c:8567
msgid "default argument for parameter of type `%T' has type `%T'"
msgstr ""
-#: cp/decl.c:12794
+#: cp/decl.c:8584
msgid "default argument `%E' uses local variable `%D'"
msgstr ""
-#: cp/decl.c:12839
+#: cp/decl.c:8628
#, c-format
msgid "invalid string constant `%E'"
msgstr ""
-#: cp/decl.c:12841
+#: cp/decl.c:8630
msgid "invalid integer constant in parameter list, did you forget to give parameter name?"
msgstr ""
-#: cp/decl.c:12879
+#: cp/decl.c:8668
msgid "parameter `%D' invalidly declared method type"
msgstr ""
-#: cp/decl.c:12885
-msgid "parameter `%D' invalidly declared offset type"
-msgstr ""
-
-#: cp/decl.c:12909
+#: cp/decl.c:8692
msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgstr ""
@@ -15415,510 +14558,345 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:13071
+#: cp/decl.c:8851
msgid "invalid constructor; you probably meant `%T (const %T&)'"
msgstr ""
-#: cp/decl.c:13222
+#: cp/decl.c:8991
msgid "`%D' must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:13228
+#: cp/decl.c:8997
msgid "`%D' must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:13245
+#: cp/decl.c:9014
msgid "`%D' must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:13277
+#: cp/decl.c:9049
#, c-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:13284
+#: cp/decl.c:9056
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:13334
+#: cp/decl.c:9106
msgid "postfix `%D' must take `int' as its argument"
msgstr ""
-#: cp/decl.c:13338
+#: cp/decl.c:9110
msgid "postfix `%D' must take `int' as its second argument"
msgstr ""
-#: cp/decl.c:13345
+#: cp/decl.c:9117
msgid "`%D' must take either zero or one argument"
msgstr ""
-#: cp/decl.c:13347
+#: cp/decl.c:9119
msgid "`%D' must take either one or two arguments"
msgstr ""
-#: cp/decl.c:13368
+#: cp/decl.c:9140
msgid "prefix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:13374
+#: cp/decl.c:9146
msgid "postfix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:13383
+#: cp/decl.c:9155
msgid "`%D' must take `void'"
msgstr ""
-#: cp/decl.c:13385 cp/decl.c:13393
+#: cp/decl.c:9157 cp/decl.c:9165
msgid "`%D' must take exactly one argument"
msgstr ""
-#: cp/decl.c:13395
+#: cp/decl.c:9167
msgid "`%D' must take exactly two arguments"
msgstr ""
-#: cp/decl.c:13403
+#: cp/decl.c:9175
msgid "user-defined `%D' always evaluates both arguments"
msgstr ""
-#: cp/decl.c:13417
+#: cp/decl.c:9189
msgid "`%D' should return by value"
msgstr ""
-#: cp/decl.c:13429 cp/decl.c:13432
+#: cp/decl.c:9201 cp/decl.c:9204
msgid "`%D' cannot have default arguments"
msgstr ""
-#: cp/decl.c:13475
+#: cp/decl.c:9264
msgid "using typedef-name `%D' after `%s'"
msgstr ""
-#: cp/decl.c:13481
+#: cp/decl.c:9270
msgid "using template type parameter `%T' after `%s'"
msgstr ""
-#: cp/decl.c:13542
-msgid "`%s %T' declares a new type at namespace scope"
+#: cp/decl.c:9278
+msgid "`%T' referred to as `%s'"
+msgstr ""
+
+#: cp/decl.c:9284
+msgid "`%T' referred to as enum"
msgstr ""
-#: cp/decl.c:13545
-msgid " names from dependent base classes are not visible to unqualified name lookup - to refer to the inherited type, say `%s %T::%T'"
+#. If a class template appears as elaborated type specifier
+#. without a template header such as:
+#.
+#. template <class T> class C {};
+#. void f(class C); // No template header here
+#.
+#. then the required template argument is missing.
+#: cp/decl.c:9299
+msgid "template argument required for `%s %T'"
msgstr ""
-#: cp/decl.c:13663
+#: cp/decl.c:9445
msgid "use of enum `%#D' without previous declaration"
msgstr ""
-#: cp/decl.c:13749
+#: cp/decl.c:9530
msgid "derived union `%T' invalid"
msgstr ""
-#: cp/decl.c:13795
+#: cp/decl.c:9583
msgid "base type `%T' fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:13805
-msgid "base class `%T' has incomplete type"
-msgstr ""
-
-#: cp/decl.c:13813
+#: cp/decl.c:9591
msgid "recursive type `%T' undefined"
msgstr ""
-#: cp/decl.c:13815
+#: cp/decl.c:9593
msgid "duplicate base type `%T' invalid"
msgstr ""
-#: cp/decl.c:13926
-msgid "multiple definition of `%#T'"
+#: cp/decl.c:9671
+msgid "Java class '%T' cannot have multiple bases"
msgstr ""
-#: cp/decl.c:13927
-msgid "previous definition here"
+#: cp/decl.c:9673
+msgid "Java class '%T' cannot have virtual bases"
msgstr ""
-#: cp/decl.c:14030
+#: cp/decl.c:9713
+msgid "multiple definition of `%#T'"
+msgstr ""
+
+#: cp/decl.c:9714
+msgid "%Jprevious definition here"
+msgstr "%Jvorherige Definition hier"
+
+#. DR 377
+#.
+#. IF no integral type can represent all the enumerator values, the
+#. enumeration is ill-formed.
+#: cp/decl.c:9849
msgid "no integral type can represent all of the enumerator values for `%T'"
msgstr ""
-#: cp/decl.c:14106
+#: cp/decl.c:9939
msgid "enumerator value for `%D' not integer constant"
msgstr ""
-#: cp/decl.c:14126
+#: cp/decl.c:9959
msgid "overflow in enumeration values at `%D'"
msgstr ""
-#: cp/decl.c:14195
+#: cp/decl.c:10028
msgid "return type `%#T' is incomplete"
msgstr ""
-#: cp/decl.c:14309
-msgid "semicolon missing after declaration of `%#T'"
-msgstr ""
-
-#: cp/decl.c:14330
+#: cp/decl.c:10148
msgid "return type for `main' changed to `int'"
msgstr ""
-#: cp/decl.c:14361
+#: cp/decl.c:10178
msgid "`%D' implicitly declared before its definition"
msgstr ""
-#: cp/decl.c:14383 cp/typeck.c:6314
+#: cp/decl.c:10200 cp/typeck.c:6011
msgid "`operator=' should return a reference to `*this'"
msgstr ""
-#: cp/decl.c:14643
+#: cp/decl.c:10472
msgid "parameter `%D' declared void"
msgstr ""
-#: cp/decl.c:15130
+#: cp/decl.c:10938
+msgid "invalid member function declaration"
+msgstr "ungültige Elementfunktionsdeklaration"
+
+#: cp/decl.c:10955
msgid "`%D' is already defined in class `%T'"
msgstr ""
-#: cp/decl.c:15348
+#: cp/decl.c:11168
msgid "static member function `%#D' declared with type qualifiers"
msgstr ""
-#: cp/decl2.c:153
+#: cp/decl2.c:143
#, c-format
msgid "duplicate type qualifiers in %s declaration"
msgstr ""
-#: cp/decl2.c:192
-msgid "template `%#D' instantiated in file without #pragma interface"
-msgstr ""
-
-#: cp/decl2.c:198
-msgid "template `%#D' defined in file without #pragma interface"
-msgstr ""
-
-#: cp/decl2.c:365
+#: cp/decl2.c:316
msgid "name missing for member function"
msgstr ""
-#. Something has gone very wrong. Assume we are mistakenly reducing
-#. an expression instead of a declaration.
-#: cp/decl2.c:428
-msgid "parser may be lost: is there a '{' missing somewhere?"
-msgstr ""
-
-#: cp/decl2.c:459 cp/decl2.c:473
+#: cp/decl2.c:408 cp/decl2.c:422
msgid "ambiguous conversion for array subscript"
msgstr ""
-#: cp/decl2.c:467
+#: cp/decl2.c:416
msgid "invalid types `%T[%T]' for array subscript"
msgstr ""
-#: cp/decl2.c:515
+#: cp/decl2.c:464
msgid "type `%#T' argument given to `delete', expected pointer"
msgstr ""
-#: cp/decl2.c:523
+#: cp/decl2.c:472
msgid "anachronistic use of array size in vector delete"
msgstr ""
-#: cp/decl2.c:533
+#: cp/decl2.c:482
msgid "cannot delete a function. Only pointer-to-objects are valid arguments to `delete'"
msgstr ""
-#: cp/decl2.c:540
+#: cp/decl2.c:489
msgid "deleting `%T' is undefined"
msgstr ""
-#: cp/decl2.c:548
+#: cp/decl2.c:497
msgid "deleting array `%#D'"
msgstr ""
#. 14.5.2.2 [temp.mem]
#.
#. A local class shall not have member templates.
-#: cp/decl2.c:582
+#: cp/decl2.c:530
msgid "invalid declaration of member template `%#D' in local class"
msgstr ""
-#: cp/decl2.c:591
+#: cp/decl2.c:539
msgid "invalid use of `virtual' in template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:601 cp/pt.c:2745
+#: cp/decl2.c:549 cp/pt.c:2830
msgid "template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:651
+#: cp/decl2.c:598
msgid "Java method '%D' has non-Java return type `%T'"
msgstr ""
-#: cp/decl2.c:660
+#: cp/decl2.c:614
msgid "Java method '%D' has non-Java parameter type `%T'"
msgstr ""
-#: cp/decl2.c:746
+#: cp/decl2.c:705
msgid "prototype for `%#D' does not match any in class `%T'"
msgstr ""
-#: cp/decl2.c:828
+#: cp/decl2.c:784
msgid "local class `%#T' shall not have static data member `%#D'"
msgstr ""
-#: cp/decl2.c:836
+#: cp/decl2.c:792
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl2.c:839
+#: cp/decl2.c:795
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl2.c:898
-msgid "invalid data member initialization"
-msgstr ""
-
-#: cp/decl2.c:901
-msgid "(use `=' to initialize static data members)"
-msgstr ""
-
-#: cp/decl2.c:947
+#: cp/decl2.c:878
msgid "member `%D' conflicts with virtual function table field name"
msgstr ""
-#: cp/decl2.c:967
+#: cp/decl2.c:895
msgid "`%D' is already defined in `%T'"
msgstr ""
-#: cp/decl2.c:1014
+#: cp/decl2.c:942
msgid "field initializer is not constant"
msgstr ""
-#: cp/decl2.c:1038
+#: cp/decl2.c:970
msgid "`asm' specifiers are not permitted on non-static data members"
msgstr ""
-#: cp/decl2.c:1090
+#: cp/decl2.c:1020
msgid "cannot declare `%D' to be a bit-field type"
msgstr ""
-#: cp/decl2.c:1100
+#: cp/decl2.c:1030
msgid "cannot declare bit-field `%D' with function type"
msgstr ""
-#: cp/decl2.c:1107
+#: cp/decl2.c:1037
msgid "`%D' is already defined in the class %T"
msgstr ""
-#: cp/decl2.c:1114
+#: cp/decl2.c:1044
msgid "static member `%D' cannot be a bit-field"
msgstr ""
-#: cp/decl2.c:1201
+#: cp/decl2.c:1103
msgid "initializer specified for non-member function `%D'"
msgstr ""
-#: cp/decl2.c:1205
+#: cp/decl2.c:1107
msgid "invalid initializer for virtual method `%D'"
msgstr ""
-#: cp/decl2.c:1319
+#: cp/decl2.c:1154
msgid "anonymous struct not inside named type"
msgstr ""
-#: cp/decl2.c:1415
+#: cp/decl2.c:1224
msgid "namespace-scope anonymous aggregates must be static"
msgstr ""
-#: cp/decl2.c:1428
-msgid "anonymous aggregate with no members"
-msgstr ""
+#: cp/decl2.c:1231
+msgid "anonymous union with no members"
+msgstr "anonymes union ohne Element"
-#: cp/decl2.c:1497
+#: cp/decl2.c:1265
msgid "`operator new' must return type `%T'"
msgstr ""
-#: cp/decl2.c:1505
+#: cp/decl2.c:1273
msgid "`operator new' takes type `size_t' (`%T') as first parameter"
msgstr ""
-#: cp/decl2.c:1532
+#: cp/decl2.c:1299
msgid "`operator delete' must return type `%T'"
msgstr ""
-#: cp/decl2.c:1540
+#: cp/decl2.c:1307
msgid "`operator delete' takes type `%T' as first parameter"
msgstr ""
-#. Overflow occurred. That means there are at least 4 billion
-#. initialization functions.
-#: cp/decl2.c:2282
-msgid "too many initialization functions required"
-msgstr ""
-
-#: cp/decl2.c:3006
-#, fuzzy
+#: cp/decl2.c:2814
msgid "inline function `%D' used but never defined"
-msgstr "»%s« verwendet, aber nirgendwo definiert"
-
-#: cp/decl2.c:3135
-msgid "use of old-style cast"
-msgstr ""
-
-#: cp/decl2.c:3860
-msgid "use of `%D' is ambiguous"
-msgstr ""
-
-#: cp/decl2.c:3861
-msgid " first declared as `%#D' here"
-msgstr ""
-
-#: cp/decl2.c:3864
-msgid " also declared as `%#D' here"
-msgstr ""
-
-#: cp/decl2.c:3879
-msgid "`%D' denotes an ambiguous type"
-msgstr ""
-
-#: cp/decl2.c:3880
-msgid " first type here"
-msgstr ""
-
-#: cp/decl2.c:3881
-msgid " other type here"
-msgstr ""
-
-#: cp/decl2.c:3982
-msgid "declaration of `%D' not in a namespace surrounding `%D'"
-msgstr ""
-
-#: cp/decl2.c:4016
-msgid "`%D' should have been declared inside `%D'"
-msgstr ""
-
-#: cp/decl2.c:4152
-msgid "`%D' is not a function,"
-msgstr ""
-
-#: cp/decl2.c:4153
-msgid " conflict with `%D'"
-msgstr ""
-
-#. The parser did not find it, so it's not there.
-#: cp/decl2.c:4473
-msgid "unknown namespace `%D'"
-msgstr ""
-
-#: cp/decl2.c:4507 cp/decl2.c:4794
-msgid "`%T' is not a namespace"
-msgstr ""
-
-#: cp/decl2.c:4509
-msgid "`%D' is not a namespace"
-msgstr ""
-
-#: cp/decl2.c:4518
-msgid "a using-declaration cannot specify a template-id. Try `using %D'"
-msgstr ""
-
-#: cp/decl2.c:4532
-msgid "namespace `%D' not allowed in using-declaration"
-msgstr ""
-
-#: cp/decl2.c:4561
-msgid "`%D' not declared"
-msgstr ""
+msgstr "inline-Funktion »%D«, aber nirgendwo definiert"
-#. If the OLD_FN was really declared, the
-#. declarations don't match.
-#: cp/decl2.c:4573 cp/decl2.c:4615 cp/decl2.c:4640
-msgid "`%D' is already declared in this scope"
-msgstr ""
-
-#: cp/decl2.c:4646
-msgid "using declaration `%D' introduced ambiguous type `%T'"
-msgstr ""
-
-#: cp/decl2.c:4740
-msgid "using-declaration for non-member at class scope"
-msgstr ""
-
-#: cp/decl2.c:4746
-msgid "using-declaration for destructor"
-msgstr ""
-
-#: cp/decl2.c:4752
-msgid "a using-declaration cannot specify a template-id. Try `using %T::%D'"
-msgstr ""
-
-#: cp/decl2.c:4788
-msgid "namespace `%T' undeclared"
-msgstr ""
-
-#: cp/decl2.c:4817
+#: cp/decl2.c:2960
msgid "default argument missing for parameter %P of `%+#D'"
msgstr ""
-#: cp/decl2.c:4941
-msgid "extra qualification `%T::' on member `%D' ignored"
-msgstr ""
-
-#: cp/decl2.c:4945
-msgid "`%T' does not have a class or union named `%D'"
-msgstr ""
-
-#: cp/decl2.c:4963
-msgid "`%T' is not a class or union type"
-msgstr ""
-
-#: cp/decl2.c:4977
-msgid "template argument is required for `%T'"
-msgstr ""
-
-#: cp/decl2.c:4995
-msgid "declaration of `%D' in `%D' which does not enclose `%D'"
-msgstr ""
-
-#: cp/error.c:35
-#, c-format
-msgid "`%s' not supported by %s"
-msgstr ""
-
-#: cp/error.c:571
-#, c-format
-msgid "<anonymous %s>"
-msgstr ""
-
-#: cp/error.c:810
-#, c-format
-msgid "(static %s for %s)"
-msgstr ""
-
-#: cp/error.c:1503
-#, c-format
-msgid "\\x%x"
-msgstr ""
-
-#: cp/error.c:2473
-#, c-format
-msgid "In %s `%s':"
-msgstr ""
-
-#: cp/error.c:2530
-#, c-format
-msgid "%s: In instantiation of `%s':\n"
-msgstr ""
-
-#: cp/error.c:2554
-#, c-format
-msgid "%s:%d: instantiated from `%s'\n"
-msgstr ""
-
-#: cp/error.c:2559
-#, c-format
-msgid "%s:%d: instantiated from here\n"
-msgstr ""
-
#. damn ICE suppression
-#: cp/error.c:2713
+#: cp/error.c:2374
#, c-format
msgid "unexpected letter `%c' in locate_error\n"
msgstr ""
@@ -15937,158 +14915,174 @@ msgstr ""
msgid "type `%T' is not derived from `java::lang::Throwable'"
msgstr ""
-#: cp/except.c:322
+#: cp/except.c:321
msgid "mixing C++ and Java catches in a single translation unit"
msgstr ""
-#: cp/except.c:639
+#: cp/except.c:630
msgid "throwing NULL, which has integral, not pointer type"
msgstr ""
-#: cp/except.c:730
+#: cp/except.c:653 cp/init.c:2029
+msgid "`%D' should never be overloaded"
+msgstr ""
+
+#: cp/except.c:722
msgid " in thrown expression"
msgstr ""
-#: cp/except.c:856
+#: cp/except.c:843
msgid "expression '%E' of abstract class type '%T' cannot be used in throw-expression"
msgstr ""
-#: cp/except.c:944
+#: cp/except.c:925
msgid "exception of type `%T' will be caught"
msgstr ""
-#: cp/except.c:947
+#: cp/except.c:928
msgid " by earlier handler for `%T'"
msgstr ""
-#: cp/except.c:968
+#: cp/except.c:949
msgid "`...' handler must be the last handler for its try block"
msgstr ""
-#: cp/friend.c:159
+#: cp/friend.c:151
msgid "`%D' is already a friend of class `%T'"
msgstr ""
-#: cp/friend.c:161
-msgid "previous friend declaration of `%D'"
-msgstr ""
-
-#: cp/friend.c:206
+#: cp/friend.c:202
msgid "invalid type `%T' declared `friend'"
msgstr ""
#. [temp.friend]
#. Friend declarations shall not declare partial
#. specializations.
-#: cp/friend.c:222
+#: cp/friend.c:218
msgid "partial specialization `%T' declared `friend'"
msgstr ""
-#: cp/friend.c:231
+#: cp/friend.c:228
msgid "class `%T' is implicitly friends with itself"
msgstr ""
#. template <class T> friend typename S<T>::X;
-#: cp/friend.c:249
+#: cp/friend.c:246
msgid "typename type `%#T' declared `friend'"
msgstr ""
#. template <class T> friend class T;
-#: cp/friend.c:255
+#: cp/friend.c:252
msgid "template parameter type `%T' declared `friend'"
msgstr ""
#. template <class T> friend class A; where A is not a template
-#: cp/friend.c:261
+#: cp/friend.c:258
msgid "`%#T' is not a template"
msgstr ""
-#: cp/friend.c:276
+#: cp/friend.c:277
+msgid "`%D' is already a friend of `%T'"
+msgstr ""
+
+#: cp/friend.c:287
msgid "`%T' is already a friend of `%T'"
msgstr ""
-#: cp/friend.c:376
+#: cp/friend.c:413
msgid "member `%D' declared as friend before type `%T' defined"
msgstr ""
-#: cp/friend.c:431
+#: cp/friend.c:470
msgid "friend declaration `%#D' declares a non-template function"
msgstr ""
-#: cp/friend.c:434
+#: cp/friend.c:473
msgid "(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:211 java/jvspec.c:423
+#: cp/g++spec.c:229 java/jvspec.c:415
#, c-format
msgid "argument to `%s' missing\n"
msgstr ""
-#: cp/init.c:334
+#: cp/init.c:318
msgid "`%D' should be initialized in the member initialization list"
msgstr ""
-#: cp/init.c:384
+#: cp/init.c:368
msgid "default-initialization of `%#D', which has reference type"
msgstr ""
-#: cp/init.c:389
+#: cp/init.c:373
msgid "uninitialized reference member `%D'"
msgstr ""
-#: cp/init.c:397
-msgid "initializer list treated as compound expression"
-msgstr ""
-
-#: cp/init.c:538
+#: cp/init.c:511
msgid "`%D' will be initialized after"
msgstr ""
-#: cp/init.c:541
+#: cp/init.c:514
msgid "base `%T' will be initialized after"
msgstr ""
-#: cp/init.c:544
+#: cp/init.c:517
msgid " `%#D'"
msgstr ""
-#: cp/init.c:546
+#: cp/init.c:519
msgid " base `%T'"
msgstr ""
-#: cp/init.c:564
+#: cp/init.c:520
+msgid " when initialized here"
+msgstr " während es hier initialisiert wurde"
+
+#: cp/init.c:536
+msgid "multiple initializations given for `%D'"
+msgstr ""
+
+#: cp/init.c:538
msgid "multiple initializations given for base `%T'"
msgstr ""
-#: cp/init.c:631
+#: cp/init.c:605
msgid "initializations for multiple members of `%T'"
msgstr ""
-#: cp/init.c:688
+#: cp/init.c:662
msgid "base class `%#T' should be explicitly initialized in the copy constructor"
msgstr ""
-#: cp/init.c:926
+#: cp/init.c:892 cp/init.c:911
msgid "class `%T' does not have any field named `%D'"
msgstr ""
-#: cp/init.c:932
-msgid "field `%#D' is static; the only point of initialization is its definition"
+#: cp/init.c:898
+msgid "`%#D' is a static data member; it can only be initialized at its definition"
msgstr ""
-#: cp/init.c:965
+#: cp/init.c:905
+msgid "`%#D' is not a non-static data member of `%T'"
+msgstr "»%#D« ist kein Nicht-static-Datenelement von »%T«"
+
+#: cp/init.c:944
msgid "unnamed initializer for `%T', which has no base classes"
msgstr ""
-#: cp/init.c:972
+#: cp/init.c:951
msgid "unnamed initializer for `%T', which uses multiple inheritance"
msgstr ""
-#: cp/init.c:1007
+#: cp/init.c:1006
+msgid "'%D' is both a direct base and an indirect virtual base"
+msgstr ""
+
+#: cp/init.c:1014
msgid "type `%D' is not a direct or virtual base of `%T'"
msgstr ""
-#: cp/init.c:1010
+#: cp/init.c:1017
msgid "type `%D' is not a direct base of `%T'"
msgstr ""
@@ -16104,532 +15098,811 @@ msgstr ""
#. COMPLEX zees(1.0, 0.0)[10];
#. }
#.
-#: cp/init.c:1104
+#: cp/init.c:1109
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1311
+#: cp/init.c:1303
msgid "`%T' is not an aggregate type"
msgstr ""
-#: cp/init.c:1334
+#: cp/init.c:1324
msgid "`%T' fails to be an aggregate typedef"
msgstr ""
-#: cp/init.c:1343
+#: cp/init.c:1333
msgid "type `%T' is of non-aggregate type"
msgstr ""
-#: cp/init.c:1446
-msgid "cannot call destructor `%T::~%T' without object"
-msgstr ""
-
-#: cp/init.c:1490
-msgid "invalid use of non-static field `%D'"
-msgstr ""
-
-#. We can get here when processing a bad default
-#. argument, like:
-#. struct S { int a; void f(int i = a); }
-#: cp/init.c:1499 cp/method.c:160
-msgid "invalid use of member `%D'"
-msgstr ""
-
-#: cp/init.c:1509
-msgid "no method `%T::%D'"
+#: cp/init.c:1425 cp/typeck.c:1798
+msgid "qualified type `%T' does not match destructor name `~%T'"
msgstr ""
-#: cp/init.c:1602
+#: cp/init.c:1433
msgid "incomplete type `%T' does not have member `%D'"
msgstr ""
-#: cp/init.c:1676
+#: cp/init.c:1452
msgid "`%D' is not a member of type `%T'"
msgstr ""
-#: cp/init.c:1695
+#: cp/init.c:1471
msgid "invalid pointer to bit-field `%D'"
msgstr ""
-#: cp/init.c:1734
-msgid "object missing in use of pointer-to-member construct"
-msgstr ""
-
-#: cp/init.c:1774
-msgid "member `%D' is non-static but referenced as a static member"
-msgstr ""
+#: cp/init.c:1573
+msgid "invalid use of non-static member function `%D'"
+msgstr "ungültige Verwendung der Nicht-static-Elementfunktion »%D«"
-#: cp/init.c:1776 cp/typeck.c:2826 cp/typeck.c:2930
-msgid "at this point in file"
-msgstr ""
+#: cp/init.c:1579 cp/semantics.c:1236
+msgid "invalid use of non-static data member `%D'"
+msgstr "ungültige Verwendung des Nicht-static-Datenelementes »%D«"
-#: cp/init.c:1813
-#, c-format
-msgid "object missing in `%E'"
-msgstr ""
-
-#: cp/init.c:1944
+#: cp/init.c:1718
msgid "new of array type fails to specify size"
msgstr ""
-#: cp/init.c:1955
+#: cp/init.c:1729
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:1961
+#: cp/init.c:1735
msgid "zero size array reserves no space"
msgstr ""
-#: cp/init.c:2026
+#: cp/init.c:1801
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2032
+#: cp/init.c:1807
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2079
+#: cp/init.c:1853
msgid "call to Java constructor, while `jclass' undefined"
msgstr ""
-#: cp/init.c:2095
+#: cp/init.c:1869
msgid "can't find class$"
msgstr ""
-#: cp/init.c:2209
+#: cp/init.c:1995
msgid "invalid type `void' for new"
msgstr ""
-#: cp/init.c:2261
+#: cp/init.c:2005
+msgid "uninitialized const in `new' of `%#T'"
+msgstr ""
+
+#: cp/init.c:2024
#, c-format
msgid "call to Java constructor with `%s' undefined"
msgstr ""
-#: cp/init.c:2369
-msgid "ISO C++ forbids initialization in array new"
+#: cp/init.c:2065
+msgid "request for member `%D' is ambiguous"
msgstr ""
-#: cp/init.c:2391 cp/typeck2.c:367 cp/typeck2.c:1208
-msgid "initializer list being treated as compound expression"
+#: cp/init.c:2189
+msgid "ISO C++ forbids initialization in array new"
msgstr ""
-#: cp/init.c:2397
+#: cp/init.c:2213
msgid "ISO C++ forbids aggregate initializer to new"
msgstr ""
-#: cp/init.c:2485
-msgid "uninitialized const in `new' of `%#T'"
-msgstr ""
-
-#: cp/init.c:2864
+#: cp/init.c:2658
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:2934
+#: cp/init.c:2715
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3124
-msgid "unknown array size in delete"
-msgstr ""
-
-#: cp/init.c:3389
-msgid "type to vector delete is neither pointer or array type"
-msgstr ""
-
-#: cp/lex.c:136
-msgid "type name expected before `*'"
-msgstr ""
-
-#: cp/lex.c:158
-msgid "cannot declare references to references"
+#: cp/init.c:2876
+msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/lex.c:163
-msgid "cannot declare pointers to references"
+#: cp/init.c:2879
+msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
msgstr ""
-#: cp/lex.c:167
-msgid "type name expected before `&'"
+#: cp/init.c:2900
+msgid "unknown array size in delete"
msgstr ""
-#: cp/lex.c:894
-#, c-format
-msgid "semicolon missing after %s declaration"
+#: cp/init.c:3165
+msgid "type to vector delete is neither pointer or array type"
msgstr ""
-#: cp/lex.c:897
-msgid "semicolon missing after declaration of `%T'"
+#: cp/lex.c:99
+msgid "type name expected before `*'"
msgstr ""
-#: cp/lex.c:945
+#: cp/lex.c:501
#, c-format
msgid "junk at end of #pragma %s"
msgstr ""
-#: cp/lex.c:952
+#: cp/lex.c:508
#, c-format
msgid "invalid #pragma %s"
msgstr ""
-#: cp/lex.c:961
+#: cp/lex.c:516
msgid "#pragma vtable no longer supported"
msgstr ""
-#: cp/lex.c:1038
+#: cp/lex.c:590
#, c-format
msgid "#pragma implementation for %s appears after file is included"
msgstr ""
-#: cp/lex.c:1063
+#: cp/lex.c:614
msgid "junk at end of #pragma GCC java_exceptions"
msgstr ""
-#: cp/lex.c:1107
+#: cp/lex.c:628
msgid "`%D' not defined"
msgstr ""
-#: cp/lex.c:1110
+#: cp/lex.c:631
msgid "`%D' was not declared in this scope"
msgstr ""
-#: cp/lex.c:1118
+#: cp/lex.c:639
msgid "`%D' undeclared (first use this function)"
msgstr ""
-#: cp/lex.c:1122
+#: cp/lex.c:643
msgid "(Each undeclared identifier is reported only once for each function it appears in.)"
msgstr ""
-#: cp/lex.c:1242
-msgid "`::%D' undeclared (first use here)"
+#. In a template, it is invalid to write "f()" or "f(3)" if no
+#. declaration of "f" is available. Historically, G++ and most
+#. other compilers accepted that usage since they deferred all name
+#. lookup until instantiation time rather than doing unqualified
+#. name lookup at template definition time; explain to the user what
+#. is going wrong.
+#.
+#. Note that we have the exact wording of the following message in
+#. the manual (trouble.texi, node "Name lookup"), so they need to
+#. be kept in synch.
+#: cp/lex.c:674
+msgid "there are no arguments to `%D' that depend on a template parameter, so a declaration of `%D' must be available"
+msgstr ""
+
+#: cp/lex.c:683
+msgid "(if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2051
+#: cp/mangle.c:2036
msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
msgstr ""
-#: cp/mangle.c:2363
+#: cp/mangle.c:2089
+msgid "omitted middle operand to `?:' operand cannot be mangled"
+msgstr ""
+
+#: cp/mangle.c:2388
msgid "the mangled name of `%D' will change in a future version of GCC"
msgstr ""
-#: cp/method.c:154
-msgid "invalid use of member `%D' in static member function"
+#: cp/method.c:456
+msgid "generic thunk code fails for method `%#D' which uses `...'"
msgstr ""
-#: cp/method.c:216
-msgid "use of namespace `%D' as expression"
+#: cp/method.c:681
+msgid "non-static const member `%#D', can't use default assignment operator"
msgstr ""
-#: cp/method.c:221
-msgid "use of class template `%T' as expression"
+#: cp/method.c:686
+msgid "non-static reference member `%#D', can't use default assignment operator"
msgstr ""
-#: cp/method.c:234
-#, c-format
-msgid "use of %s from containing function"
+#: cp/name-lookup.c:649
+msgid "`%#D' used prior to declaration"
msgstr ""
-#: cp/method.c:237
-msgid " `%#D' declared here"
+#: cp/name-lookup.c:680
+msgid "redeclaration of `wchar_t' as `%T'"
msgstr ""
-#: cp/method.c:255
-msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
+#. A redeclaration of main, but not a duplicate of the
+#. previous one.
+#.
+#. [basic.start.main]
+#.
+#. This function shall not be overloaded.
+#: cp/name-lookup.c:712
+msgid "invalid redeclaration of `%D'"
msgstr ""
-#: cp/method.c:458
-msgid "generic thunk code fails for method `%#D' which uses `...'"
+#: cp/name-lookup.c:713
+msgid "as `%D'"
msgstr ""
-#: cp/method.c:697
-msgid "non-static const member `%#D', can't use default assignment operator"
+#: cp/name-lookup.c:801
+msgid "type mismatch with previous external decl of `%#D'"
+msgstr "Typen passen nicht zu vorheriger externer Deklaration von »%#D«"
+
+#: cp/name-lookup.c:802
+msgid "previous external decl of `%#D'"
msgstr ""
-#: cp/method.c:702
-msgid "non-static reference member `%#D', can't use default assignment operator"
+#: cp/name-lookup.c:844
+msgid "`%D' was previously implicitly declared to return `int'"
msgstr ""
-#: parse.y:262
-msgid "`%s' tag used in naming `%#T'"
+#: cp/name-lookup.c:902
+msgid "extern declaration of `%#D' doesn't match"
msgstr ""
-#: parse.y:542
-msgid "keyword `export' not implemented, and will be ignored"
+#: cp/name-lookup.c:903
+msgid "global declaration `%#D'"
+msgstr ""
+
+#: cp/name-lookup.c:939
+msgid "declaration of `%#D' shadows a parameter"
+msgstr ""
+
+#: cp/name-lookup.c:960
+#, c-format
+msgid "declaration of `%s' shadows a member of `this'"
+msgstr ""
+
+#: cp/name-lookup.c:1136
+msgid "name lookup of `%D' changed"
+msgstr ""
+
+#: cp/name-lookup.c:1138
+msgid " matches this `%D' under ISO standard rules"
msgstr ""
-#: parse.y:646
-msgid "use of linkage spec `%D' is different from previous spec `%D'"
+#: cp/name-lookup.c:1140
+msgid " matches this `%D' under old rules"
msgstr ""
-#: parse.y:943
-msgid "no base or member initializers given following ':'"
+#: cp/name-lookup.c:1154 cp/name-lookup.c:1161
+msgid "name lookup of `%D' changed for new ISO `for' scoping"
msgstr ""
-#: parse.y:984
-msgid "anachronistic old style base class initializer"
+#: cp/name-lookup.c:1156
+msgid " cannot use obsolete binding at `%D' because it has a destructor"
msgstr ""
-#. Handle `Class<Class<Type>>' without space in the `>>'
-#: parse.y:1117
-msgid "`>>' should be `> >' in template class name"
+#: cp/name-lookup.c:1163
+msgid " using obsolete binding at `%D'"
msgstr ""
-#: parse.y:1164
-msgid "use of template qualifier outside template"
+#: cp/name-lookup.c:1216
+#, c-format
+msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: parse.y:1193 parse.y:1202
+#: cp/name-lookup.c:1219
#, c-format
-msgid "ISO C++ forbids an empty condition for `%s'"
+msgid "%s %s %p %d\n"
+msgstr "%s %s %p %d\n"
+
+#: cp/name-lookup.c:1338
+msgid "XXX is_class_level != (current_scope == class_scope)\n"
msgstr ""
-#: parse.y:1225
-msgid "definition of class `%T' in condition"
+#: cp/name-lookup.c:1975
+msgid "`%#D' hides constructor for `%#T'"
msgstr ""
-#: parse.y:1227
-msgid "definition of enum `%T' in condition"
+#: cp/name-lookup.c:1990
+msgid "`%#D' conflicts with previous using declaration `%#D'"
msgstr ""
-#: parse.y:1238
-msgid "definition of array `%#D' in condition"
+#: cp/name-lookup.c:2002
+msgid "previous non-function declaration `%#D'"
msgstr ""
-#: parse.y:1351
-msgid "old style placement syntax, use () instead"
+#: cp/name-lookup.c:2003
+msgid "conflicts with function declaration `%#D'"
msgstr ""
-#: parse.y:1362
-msgid "`%T' is not a valid expression"
+#. 7.3.3/5
+#. A using-declaration shall not name a template-id.
+#: cp/name-lookup.c:2080
+msgid "a using-declaration cannot specify a template-id. Try `using %D'"
msgstr ""
-#. This was previously allowed as an extension, but
-#. was removed in G++ 3.3.
-#: parse.y:1369
-msgid "initialization of new expression with `='"
+#: cp/name-lookup.c:2086
+msgid "namespace `%D' not allowed in using-declaration"
msgstr ""
-#: parse.y:1395
-msgid "ISO C++ forbids compound literals"
+#. It's a nested name with template parameter dependent scope.
+#. This can only be using-declaration for class member.
+#: cp/name-lookup.c:2094 cp/name-lookup.c:2108 cp/name-lookup.c:3283
+msgid "`%T' is not a namespace"
msgstr ""
-#: parse.y:1642
-msgid "ISO C++ forbids braced-groups within expressions"
+#: cp/name-lookup.c:2132
+msgid "`%D' not declared"
msgstr ""
-#: parse.y:1721
-#, fuzzy
-msgid "invalid use of template `%D'"
-msgstr "ungültige Option »%s«"
+#. If the OLD_FN was really declared, the
+#. declarations don't match.
+#: cp/name-lookup.c:2144 cp/name-lookup.c:2186 cp/name-lookup.c:2211
+msgid "`%D' is already declared in this scope"
+msgstr ""
-#: parse.y:2053 parse.y:2068
-msgid "sigof type specifier"
+#: cp/name-lookup.c:2217
+msgid "using declaration `%D' introduced ambiguous type `%T'"
msgstr ""
-#: parse.y:2058
-msgid "`sigof' applied to non-aggregate expression"
+#. Definition isn't the kind we were looking for.
+#: cp/name-lookup.c:2376 cp/name-lookup.c:2395
+msgid "`%#D' redeclared as %C"
msgstr ""
-#: parse.y:2073
-msgid "`sigof' applied to non-aggregate type"
+#: cp/name-lookup.c:2805
+msgid "using-declaration for non-member at class scope"
msgstr ""
-#: parse.y:2339
-msgid "using `typename' outside of template"
+#: cp/name-lookup.c:2812
+msgid "using-declaration cannot name destructor"
msgstr ""
-#: parse.y:2356
-msgid "qualified name does not name a class"
+#: cp/name-lookup.c:2908
+msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgstr ""
-#: parse.y:2417
-#, c-format
-msgid "storage class specifier `%s' not allowed after struct or class"
+#: cp/name-lookup.c:2948
+msgid "`%D' should have been declared inside `%D'"
msgstr ""
-#: parse.y:2419
-#, c-format
-msgid "type specifier `%s' not allowed after struct or class"
+#: cp/name-lookup.c:3012
+msgid "namespace alias `%D' not allowed here, assuming `%D'"
msgstr ""
-#: parse.y:2421
-#, c-format
-msgid "type qualifier `%s' not allowed after struct or class"
+#. The parser did not find it, so it's not there.
+#: cp/name-lookup.c:3127
+msgid "unknown namespace `%D'"
msgstr ""
-#: parse.y:2423
-msgid "no body nor ';' separates two class, struct or union declarations"
+#: cp/name-lookup.c:3277
+msgid "namespace `%T' undeclared"
msgstr ""
-#: parse.y:2553
-msgid "no bases given following `:'"
+#: cp/name-lookup.c:3310
+msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: parse.y:2584 parse.y:2599
-msgid "`%D' access"
+#: cp/name-lookup.c:3317
+msgid "`%D' attribute directive ignored"
+msgstr "Attribut-Anweisung »%D« wird ignoriert"
+
+#: cp/name-lookup.c:3450
+msgid "use of `%D' is ambiguous"
msgstr ""
-#: parse.y:2589
-msgid "multiple access specifiers"
+#: cp/name-lookup.c:3451
+msgid " first declared as `%#D' here"
msgstr ""
-#: parse.y:2607
-msgid "multiple `virtual' specifiers"
+#: cp/name-lookup.c:3454
+msgid " also declared as `%#D' here"
msgstr ""
-#: parse.y:2644
-msgid "missing ';' before right brace"
+#: cp/name-lookup.c:3469
+msgid "`%D' denotes an ambiguous type"
msgstr ""
-#: parse.y:2865
-msgid "ISO C++ forbids array dimensions with parenthesized type in new"
+#: cp/name-lookup.c:3470
+msgid "%J first type here"
msgstr ""
-#: parse.y:3152 parse.y:3172 parse.y:3181 parse.y:3210
-msgid "`%T' is not a class or namespace"
+#: cp/name-lookup.c:3471
+msgid "%J other type here"
msgstr ""
-#: parse.y:3377
-msgid "ISO C++ forbids label declarations"
+#. This happens for A::B where B is a template, and there are no
+#. template arguments.
+#: cp/name-lookup.c:3536 cp/typeck.c:1773
+msgid "invalid use of `%D'"
msgstr ""
-#: parse.y:3537
-msgid "ISO C++ forbids computed gotos"
+#: cp/name-lookup.c:3577
+msgid "`%D::%D' is not a template"
+msgstr ""
+
+#: cp/name-lookup.c:3594
+msgid "`%D' undeclared in namespace `%D'"
+msgstr ""
+
+#: cp/name-lookup.c:4055
+msgid "`%D' is not a function,"
+msgstr ""
+
+#: cp/name-lookup.c:4056
+msgid " conflict with `%D'"
+msgstr ""
+
+#: cp/name-lookup.c:4794
+msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: parse.y:3545
-msgid "label must be followed by statement"
+#: cp/name-lookup.c:4803
+msgid "XXX leaving pop_everything ()\n"
msgstr ""
-#: parse.y:3590
-msgid "must have at least one catch per try block"
+#: cp/parser.c:609
+msgid "invalid token"
+msgstr "ungültiges Token"
+
+#: cp/parser.c:1806
+msgid "`%D::%D' has not been declared"
+msgstr "»%D::%D« wurde nicht deklariert"
+
+#: cp/parser.c:1809 cp/semantics.c:2284
+msgid "`::%D' has not been declared"
+msgstr "»::%D« wurde nicht deklariert"
+
+#: cp/parser.c:1811
+msgid "`%D' has not been declared"
+msgstr "»%D« wurde nicht deklariert"
+
+#: cp/parser.c:1814
+msgid "`%D::%D' %s"
msgstr ""
-#: parse.y:3650
-msgid "ISO C++ forbids compound statements inside for initializations"
+#: cp/parser.c:1816
+msgid "`::%D' %s"
msgstr ""
-#. This helps us recover from really nasty
-#. parse errors, for example, a missing right
-#. parenthesis.
-#: parse.y:3737 parse.y:3747
-msgid "possibly missing ')'"
+#: cp/parser.c:1818
+msgid "`%D' %s"
+msgstr "»%D« %s"
+
+#: cp/parser.c:1870
+msgid "new types may not be defined in a return type"
msgstr ""
-#: parse.y:3840
-msgid "type specifier omitted for parameter"
+#: cp/parser.c:1888 cp/pt.c:4185
+msgid "`%T' is not a template"
msgstr ""
-#: parse.y:3849
+#: cp/parser.c:1890
+#, c-format
+msgid "`%s' is not a template"
+msgstr "»%s« ist kein Template"
+
+#: cp/parser.c:1892
+msgid "invalid template-id"
+msgstr "ungültige Template-ID"
+
+#: cp/parser.c:1927
+#, c-format
+msgid "%s cannot appear in a constant-expression"
+msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten"
+
+#. Issue an error message.
+#: cp/parser.c:1954
#, c-format
-msgid "`%E' is not a type, use `typename %E' to make it one"
+msgid "`%s' does not name a type"
+msgstr "»%s« bezeichnet keinen Typ"
+
+#: cp/parser.c:1985
+msgid "(perhaps `typename %T::%s' was intended)"
+msgstr ""
+
+#: cp/parser.c:2407
+msgid "ISO C++ forbids braced-groups within expressions"
+msgstr ""
+
+#: cp/parser.c:2416
+msgid "statement-expressions are allowed only inside functions"
+msgstr "Anweisungs-Ausdrücke sind nur innerhalb von Funktionen erlaubt"
+
+#: cp/parser.c:2467
+msgid "`this' may not be used in this context"
+msgstr ""
+
+#: cp/parser.c:2617
+msgid "local variable `%D' may not appear in this context"
+msgstr ""
+
+#: cp/parser.c:2982
+msgid "typedef-name `%D' used as destructor declarator"
msgstr ""
-#: parse.y:3851
-msgid "no type `%D' in `%T'"
+#: cp/parser.c:3627
+msgid "ISO C++ forbids compound-literals"
+msgstr "ISO-C++ verbietet zusammengesetzte Literale"
+
+#: cp/parser.c:4599
+msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: parse.y:3854
+#: cp/parser.c:4775
+msgid "use of old-style cast"
+msgstr ""
+
+#: cp/parser.c:5528
#, c-format
-msgid "type specifier omitted for parameter `%E'"
+msgid "case label `%E' not within a switch statement"
+msgstr ""
+
+#: cp/parser.c:6070
+msgid "ISO C++ forbids computed gotos"
+msgstr ""
+
+#: cp/parser.c:6190
+msgid "extra `;'"
+msgstr ""
+
+#: cp/parser.c:6485
+msgid "mixing declarations and function-definitions is forbidden"
+msgstr ""
+
+#: cp/parser.c:6623
+msgid "duplicate `friend'"
+msgstr "doppeltes »friend«"
+
+#: cp/parser.c:6772
+msgid "class definition may not be declared a friend"
+msgstr ""
+
+#: cp/parser.c:7086
+msgid "only constructors take base initializers"
+msgstr ""
+
+#: cp/parser.c:7137
+msgid "anachronistic old-style base class initializer"
+msgstr ""
+
+#. Warn that we do not support `export'.
+#: cp/parser.c:7530
+msgid "keyword `export' not implemented, and will be ignored"
+msgstr ""
+
+#. Otherwise, emit an error about the invalid digraph, but continue
+#. parsing because we got our argument list.
+#: cp/parser.c:7890
+msgid "`<::' cannot begin a template-argument list"
+msgstr ""
+
+#: cp/parser.c:7891
+msgid "`<:' is an alternate spelling for `['. Insert whitespace between `<' and `::'"
+msgstr ""
+
+#: cp/parser.c:7898
+msgid "(if you use `-fpermissive' G++ will accept your code)"
+msgstr ""
+
+#. Explain what went wrong.
+#: cp/parser.c:8070
+msgid "non-template `%D' used as template"
+msgstr ""
+
+#: cp/parser.c:8071
+msgid "(use `%T::template %D' to indicate that it is a template)"
+msgstr ""
+
+#: cp/parser.c:9000
+msgid "using `typename' outside of template"
+msgstr ""
+
+#: cp/parser.c:9122
+msgid "expected type-name"
+msgstr ""
+
+#: cp/parser.c:9181
+msgid "type attributes are honored only at type definition"
+msgstr ""
+
+#. [namespace.udecl]
+#.
+#. A using declaration shall not name a template-id.
+#: cp/parser.c:9565
+msgid "a template-id may not appear in a using-declaration"
+msgstr ""
+
+#: cp/parser.c:9891
+msgid "an asm-specification is not allowed on a function-definition"
+msgstr ""
+
+#: cp/parser.c:9893
+msgid "attributes are not allowed on a function-definition"
+msgstr "bei einer Funktionsdefinition sind keine Attribute erlaubt"
+
+#: cp/parser.c:10026
+msgid "attributes after parenthesized initializer ignored"
+msgstr "Attribute hinter geklammerter Initialisierung werden ignoriert"
+
+#: cp/parser.c:11223
+msgid "file ends in default argument"
+msgstr ""
+
+#: cp/parser.c:11279
+msgid "deprecated use of default argument for parameter of non-function"
+msgstr ""
+
+#: cp/parser.c:11282
+msgid "default arguments are only permitted for function parameters"
+msgstr ""
+
+#: cp/parser.c:12007
+msgid "declaration of `%D' in `%D' which does not enclose `%D'"
+msgstr ""
+
+#: cp/parser.c:12020
+msgid "extra qualification ignored"
+msgstr ""
+
+#: cp/parser.c:12031
+msgid "an explicit specialization must be preceded by 'template <>'"
+msgstr ""
+
+#: cp/parser.c:12311
+msgid "extra semicolon"
+msgstr ""
+
+#: cp/parser.c:12329
+msgid "a class-key must be used when declaring a friend"
+msgstr ""
+
+#: cp/parser.c:12360
+msgid "friend declaration does not name a class or function"
+msgstr "»friend«-Deklaration benennt keine Klasse oder Funktion"
+
+#: cp/parser.c:12531
+msgid "pure-specifier on function-definition"
+msgstr ""
+
+#: cp/parser.c:12804
+msgid "keyword `typename' not allowed outside of templates"
+msgstr ""
+
+#: cp/parser.c:12806
+msgid "keyword `typename' not allowed in this context (the base class is implicitly a type)"
+msgstr ""
+
+#: cp/parser.c:13624
+msgid "reference to `%D' is ambiguous"
+msgstr ""
+
+#: cp/parser.c:13798
+msgid "too few template-parameter-lists"
+msgstr ""
+
+#. Otherwise, there are too many template parameter lists. We have
+#. something like:
+#.
+#. template <class T> template <class U> void S::f();
+#: cp/parser.c:13813
+msgid "too many template-parameter-lists"
+msgstr ""
+
+#. If begin_function_definition didn't like the definition, skip
+#. the entire function.
+#: cp/parser.c:14090
+msgid "invalid function declaration"
+msgstr "ungültige Funktionsdeklaration"
+
+#. Issue an error message.
+#: cp/parser.c:14127
+msgid "named return values are no longer supported"
+msgstr "benannte Rückgabewerte werden nicht mehr unterstützt"
+
+#: cp/parser.c:14455
+msgid "`>>' should be `> >' within a nested template argument list"
+msgstr ""
+
+#. If this is not a nested template argument list, the '>>' is
+#. a typo for '>'. Emit an error message and continue.
+#: cp/parser.c:14463
+msgid "spurious `>>', use `>' to terminate a template argument list"
+msgstr ""
+
+#: cp/parser.c:14950
+msgid "`%s' tag used in naming `%#T'"
msgstr ""
-#: parse.y:3862
-msgid "'%D' is used as a type, but is not defined as a type."
+#: cp/parser.c:14970
+msgid "%D redeclared with different access"
+msgstr "%D mit anderem Zugriff redeklariert"
+
+#: cp/parser.c:14987
+msgid "`template' (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/pt.c:284
+#: cp/pt.c:243
msgid "data member `%D' cannot be a member template"
msgstr ""
-#: cp/pt.c:296
+#: cp/pt.c:255
msgid "invalid member template declaration `%D'"
msgstr ""
-#: cp/pt.c:691
+#: cp/pt.c:637
msgid "explicit specialization in non-namespace scope `%D'"
msgstr ""
-#: cp/pt.c:703
+#: cp/pt.c:649
msgid "enclosing class templates are not explicitly specialized"
msgstr ""
-#: cp/pt.c:792 cp/pt.c:833
+#: cp/pt.c:739 cp/pt.c:780
msgid "specializing `%#T' in different namespace"
msgstr ""
-#: cp/pt.c:793 cp/pt.c:834
+#: cp/pt.c:740 cp/pt.c:781
msgid " from definition of `%#D'"
msgstr ""
-#: cp/pt.c:801
+#: cp/pt.c:748
msgid "specialization of `%T' after instantiation"
msgstr ""
-#: cp/pt.c:848
+#: cp/pt.c:795
msgid "specialization `%T' after instantiation `%T'"
msgstr ""
-#: cp/pt.c:860
+#: cp/pt.c:807
msgid "explicit specialization of non-template `%T'"
msgstr ""
-#: cp/pt.c:992
+#: cp/pt.c:1067
msgid "specialization of %D after instantiation"
msgstr ""
-#: cp/pt.c:1096
+#: cp/pt.c:1192
msgid "%s %+#D"
msgstr ""
-#: cp/pt.c:1147
+#: cp/pt.c:1241
msgid "`%D' is not a function template"
msgstr ""
-#: cp/pt.c:1286
+#: cp/pt.c:1380
msgid "template-id `%D' for `%+D' does not match any template declaration"
msgstr ""
-#: cp/pt.c:1294
+#: cp/pt.c:1388
msgid "ambiguous template specialization `%D' for `%+D'"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:1521 cp/pt.c:1595
+#: cp/pt.c:1611 cp/pt.c:1685
msgid "template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/pt.c:1534
+#: cp/pt.c:1624
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:1540
+#: cp/pt.c:1630
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:1546
+#: cp/pt.c:1636
msgid "too many template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1562
+#: cp/pt.c:1652
msgid "too few template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1579
+#: cp/pt.c:1669
msgid "explicit specialization not preceded by `template <>'"
msgstr ""
-#: cp/pt.c:1592
+#: cp/pt.c:1682
msgid "partial specialization `%D' of function template"
msgstr ""
-#: cp/pt.c:1624
+#: cp/pt.c:1714
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:1628
+#: cp/pt.c:1718
msgid "template specialization with C linkage"
msgstr ""
@@ -16641,99 +15914,106 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:1715
+#: cp/pt.c:1802
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:1759
+#: cp/pt.c:1846
msgid "no member function `%D' declared in `%T'"
msgstr ""
#. There are two many template parameter lists.
-#: cp/pt.c:1909
+#: cp/pt.c:2001
msgid "too many template parameter lists in declaration of `%T'"
msgstr ""
-#: cp/pt.c:2005
+#: cp/pt.c:2094
msgid " shadows template parm `%#D'"
msgstr ""
-#: cp/pt.c:2409
+#: cp/pt.c:2491
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:2413
+#: cp/pt.c:2495
msgid " `%D'"
msgstr ""
-#: cp/pt.c:2425
+#: cp/pt.c:2507
msgid "partial specialization `%T' does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:2450
+#: cp/pt.c:2532
#, c-format
msgid "template argument `%E' involves template parameter(s)"
msgstr ""
-#: cp/pt.c:2494
+#: cp/pt.c:2576
msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgstr ""
-#: cp/pt.c:2582
+#: cp/pt.c:2661
msgid "no default argument for `%D'"
msgstr ""
-#: cp/pt.c:2735
+#: cp/pt.c:2810
msgid "template with C linkage"
msgstr ""
-#: cp/pt.c:2738
+#: cp/pt.c:2813
msgid "template class without a name"
msgstr ""
-#: cp/pt.c:2815
+#. [temp.mem]
+#.
+#. A destructor shall not be a member template.
+#: cp/pt.c:2820
+msgid "destructor `%D' declared as member template"
+msgstr "Destruktor »%D« als Element-Template deklariert"
+
+#: cp/pt.c:2900
msgid "`%D' does not declare a template type"
msgstr ""
-#: cp/pt.c:2821
+#: cp/pt.c:2906
msgid "template definition of non-template `%#D'"
msgstr ""
-#: cp/pt.c:2862
+#: cp/pt.c:2947
msgid "expected %d levels of template parms for `%#D', got %d"
msgstr ""
-#: cp/pt.c:2874
+#: cp/pt.c:2959
msgid "got %d template parameters for `%#D'"
msgstr ""
-#: cp/pt.c:2877
+#: cp/pt.c:2962
msgid "got %d template parameters for `%#T'"
msgstr ""
-#: cp/pt.c:2879
+#: cp/pt.c:2964
#, c-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:2962
+#: cp/pt.c:3042
msgid "`%T' is not a template type"
msgstr ""
-#: cp/pt.c:2978
+#: cp/pt.c:3058
msgid "previous declaration `%D'"
msgstr ""
-#: cp/pt.c:2979
+#: cp/pt.c:3059
#, c-format
msgid "used %d template parameter%s instead of %d"
msgstr ""
-#: cp/pt.c:2995
+#: cp/pt.c:3075
msgid "template parameter `%#D'"
msgstr ""
-#: cp/pt.c:2996
+#: cp/pt.c:3076
msgid "redeclared here as `%#D'"
msgstr ""
@@ -16741,713 +16021,722 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:3006
+#: cp/pt.c:3086
msgid "redefinition of default argument for `%#D'"
msgstr ""
-#: cp/pt.c:3007
-msgid " original definition appeared here"
-msgstr ""
+#: cp/pt.c:3087
+msgid "%J original definition appeared here"
+msgstr "%J ursprüngliche Definition trat hier auf"
-#: cp/pt.c:3100
+#: cp/pt.c:3235
#, c-format
msgid "`%E' is not a valid template argument"
msgstr ""
-#: cp/pt.c:3104
+#: cp/pt.c:3239
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:3106
+#: cp/pt.c:3241
msgid "it must be the address of an object with external linkage"
msgstr ""
-#: cp/pt.c:3110
+#: cp/pt.c:3244
msgid "it must be a pointer-to-member of the form `&X::Y'"
msgstr ""
-#: cp/pt.c:3121
+#: cp/pt.c:3255
#, c-format
msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
msgstr ""
-#: cp/pt.c:3133
+#: cp/pt.c:3270
#, c-format
msgid "address of non-extern `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:3144
+#: cp/pt.c:3279
#, c-format
msgid "non-constant `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:3151
+#: cp/pt.c:3287
+msgid "type '%T' cannot be used as a value for a non-type template-parameter"
+msgstr ""
+
+#: cp/pt.c:3290
+msgid "invalid use of '%D' as a non-type template-argument"
+msgstr ""
+
+#: cp/pt.c:3292
#, c-format
-msgid "object `%E' cannot be used as template argument"
+msgid "invalid use of '%E' as a non-type template-argument"
msgstr ""
-#: cp/pt.c:3526
+#: cp/pt.c:3657
#, c-format
msgid "to refer to a type member of a template parameter, use `typename %E'"
msgstr ""
-#: cp/pt.c:3539 cp/pt.c:3555 cp/pt.c:3594
+#: cp/pt.c:3670 cp/pt.c:3688 cp/pt.c:3727
msgid "type/value mismatch at argument %d in template parameter list for `%D'"
msgstr ""
-#: cp/pt.c:3542
+#: cp/pt.c:3673
msgid " expected a constant of type `%T', got `%T'"
msgstr ""
-#: cp/pt.c:3546
+#: cp/pt.c:3677
+#, c-format
+msgid " expected a class template, got `%E'"
+msgstr ""
+
+#: cp/pt.c:3679
#, c-format
msgid " expected a type, got `%E'"
msgstr ""
-#: cp/pt.c:3558
+#: cp/pt.c:3691
msgid " expected a type, got `%T'"
msgstr ""
-#: cp/pt.c:3560
+#: cp/pt.c:3693
msgid " expected a class template, got `%T'"
msgstr ""
-#: cp/pt.c:3596
+#: cp/pt.c:3729
msgid " expected a template of type `%D', got `%D'"
msgstr ""
-#: cp/pt.c:3618
-msgid "template-argument `%T' uses anonymous type"
-msgstr ""
-
-#: cp/pt.c:3621
-msgid "template-argument `%T' uses local type `%T'"
-msgstr ""
-
-#: cp/pt.c:3631
-msgid "template-argument `%T' is a variably modified type"
-msgstr ""
-
-#: cp/pt.c:3666
+#: cp/pt.c:3764
msgid "could not convert template argument `%E' to `%T'"
msgstr ""
-#: cp/pt.c:3710
+#: cp/pt.c:3804
#, c-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:3714
+#: cp/pt.c:3808
msgid "provided for `%D'"
msgstr ""
-#: cp/pt.c:3761
+#: cp/pt.c:3836
#, c-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:3997
+#: cp/pt.c:4057
msgid "non-template used as template"
msgstr ""
-#: cp/pt.c:4139
-msgid "`%T' is not a template"
-msgstr ""
-
-#: cp/pt.c:4152
+#: cp/pt.c:4197
msgid "non-template type `%T' used as a template"
msgstr ""
-#: cp/pt.c:4154
+#: cp/pt.c:4199
msgid "for template declaration `%D'"
msgstr ""
-#: cp/pt.c:4770
+#: cp/pt.c:4846
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
msgstr ""
-#: cp/pt.c:5247
+#: cp/pt.c:5286
msgid "ambiguous class template instantiation for `%#T'"
msgstr ""
-#: cp/pt.c:5254
+#: cp/pt.c:5292
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:6284 cp/pt.c:6396
+#: cp/pt.c:6291 cp/pt.c:6411
msgid "instantiation of `%D' as type `%T'"
msgstr ""
-#: cp/pt.c:6440
+#: cp/pt.c:6453
msgid "invalid parameter type `%T'"
msgstr ""
-#: cp/pt.c:6442
+#: cp/pt.c:6455
msgid "in declaration `%D'"
msgstr ""
-#: cp/pt.c:6517
+#: cp/pt.c:6529
msgid "creating pointer to member function of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6680
+#: cp/pt.c:6668
msgid "creating array with size zero"
msgstr ""
-#: cp/pt.c:6694
+#: cp/pt.c:6682
#, c-format
msgid "creating array with size zero (`%E')"
msgstr ""
-#: cp/pt.c:6933
+#: cp/pt.c:6921
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:6935
+#: cp/pt.c:6923
msgid "forming %s to reference type `%T'"
msgstr ""
-#: cp/pt.c:6973
+#: cp/pt.c:6960
msgid "creating pointer to member of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6979
+#: cp/pt.c:6966
msgid "creating pointer to member reference type `%T'"
msgstr ""
-#: cp/pt.c:7057
+#: cp/pt.c:7052
msgid "creating array of `%T'"
msgstr ""
-#: cp/pt.c:7100
+#: cp/pt.c:7058
+msgid "creating array of `%T', which is an abstract class type"
+msgstr ""
+
+#: cp/pt.c:7102
msgid "`%T' is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:7213
+#: cp/pt.c:7215
#, c-format
msgid "use of `%s' in template"
msgstr ""
-#: cp/pt.c:7975
-msgid "type `%T' composed from a local class is not a valid template-argument"
+#: cp/pt.c:7327
+#, c-format
+msgid "dependent-name `%E' is parsed as a non-type, but instantiation yields a type"
+msgstr ""
+
+#: cp/pt.c:7329
+#, c-format
+msgid "say `typename %E' if a type is meant"
+msgstr ""
+
+#: cp/pt.c:8586
+msgid "`%T' uses anonymous type"
+msgstr "»%T« verwendet anonymen Typen"
+
+#: cp/pt.c:8588
+msgid "`%T' uses local type `%T'"
+msgstr "»%T« verwendet lokalen Typen »%T«"
+
+#: cp/pt.c:8596
+msgid "`%T' is a variably modified type"
msgstr ""
-#: cp/pt.c:7976
+#: cp/pt.c:8607
+#, c-format
+msgid "integral expression `%E' is not constant"
+msgstr "Integralausdruck »%E« ist nicht konstant"
+
+#: cp/pt.c:8612
msgid " trying to instantiate `%D'"
msgstr ""
-#: cp/pt.c:8421
+#: cp/pt.c:9125
msgid "incomplete type unification"
msgstr ""
-#: cp/pt.c:9387
+#: cp/pt.c:10072
#, c-format
msgid "use of `%s' in template type unification"
msgstr ""
-#: cp/pt.c:9821 cp/pt.c:9893
+#: cp/pt.c:10506 cp/pt.c:10578
msgid "explicit instantiation of non-template `%#D'"
msgstr ""
-#: cp/pt.c:9837 cp/pt.c:9888
+#: cp/pt.c:10522 cp/pt.c:10573
msgid "no matching template for `%D' found"
msgstr ""
-#: cp/pt.c:9843
+#: cp/pt.c:10528
msgid "explicit instantiation of `%#D'"
msgstr ""
-#: cp/pt.c:9880
+#: cp/pt.c:10565
msgid "duplicate explicit instantiation of `%#D'"
msgstr ""
-#: cp/pt.c:9905
+#: cp/pt.c:10587
msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
msgstr ""
-#: cp/pt.c:9909 cp/pt.c:9999
+#: cp/pt.c:10591 cp/pt.c:10672
msgid "storage class `%D' applied to template instantiation"
msgstr ""
-#: cp/pt.c:9966
+#: cp/pt.c:10644
msgid "explicit instantiation of non-template type `%T'"
msgstr ""
-#: cp/pt.c:9980
+#: cp/pt.c:10653
msgid "explicit instantiation of `%#T' before definition of template"
msgstr ""
-#: cp/pt.c:9988
+#: cp/pt.c:10661
#, c-format
msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
msgstr ""
-#: cp/pt.c:10032
+#: cp/pt.c:10705
msgid "duplicate explicit instantiation of `%#T'"
msgstr ""
-#: cp/pt.c:10412
+#: cp/pt.c:11086
msgid "explicit instantiation of `%D' but no definition available"
msgstr ""
-#: cp/pt.c:10815
+#: cp/pt.c:11520
msgid "`%#T' is not a valid type for a template constant parameter"
msgstr ""
-#: cp/repo.c:271
+#: cp/repo.c:259
msgid "-frepo must be used with -c"
msgstr ""
-#: cp/repo.c:361
+#: cp/repo.c:346
#, c-format
msgid "mysterious repository information in %s"
msgstr ""
-#: cp/repo.c:376
+#: cp/repo.c:361
#, c-format
msgid "can't create repository information file `%s'"
msgstr ""
-#: cp/rtti.c:240
+#: cp/rtti.c:248
msgid "cannot use typeid with -fno-rtti"
msgstr ""
-#: cp/rtti.c:246
+#: cp/rtti.c:254
msgid "must #include <typeinfo> before using typeid"
msgstr ""
-#: cp/rtti.c:320
+#: cp/rtti.c:326
msgid "cannot create type information for type `%T' because its size is variable"
msgstr ""
-#: cp/rtti.c:584 cp/rtti.c:598
+#: cp/rtti.c:580 cp/rtti.c:594
msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
msgstr ""
-#: cp/rtti.c:674
+#: cp/rtti.c:675
msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
msgstr ""
-#: cp/search.c:332
+#: cp/search.c:306
msgid "`%T' is an ambiguous base of `%T'"
msgstr ""
-#: cp/search.c:350
+#: cp/search.c:324
msgid "`%T' is an inaccessible base of `%T'"
msgstr ""
-#. At parse time, we don't want to give this error, since
-#. we won't have enough state to make this kind of
-#. decision properly. But there are times (e.g., with
-#. enums in nested classes) when we do need to call
-#. this fn at parse time. So, in those cases, we pass
-#. complain as a 0 and just return a NULL_TREE.
-#: cp/search.c:1638
-msgid "assignment to non-static member `%D' of enclosing class `%T'"
-msgstr ""
-
-#: cp/search.c:2050
-msgid "adjusting pointers for covariant returns"
-msgstr ""
-
-#: cp/search.c:2054 cp/search.c:2061
+#: cp/search.c:1756
msgid "invalid covariant return type for `%#D'"
msgstr ""
-#: cp/search.c:2055
-msgid " overriding `%#D' (must be pointer or reference to class)"
-msgstr ""
-
-#: cp/search.c:2062
-msgid " overriding `%#D' (must use pointer or reference)"
+#: cp/search.c:1757 cp/search.c:1763
+msgid " overriding `%#D'"
msgstr ""
-#: cp/search.c:2067
+#: cp/search.c:1761
msgid "conflicting return type specified for `%#D'"
msgstr ""
-#: cp/search.c:2068
-msgid " overriding `%#D'"
-msgstr ""
-
-#: cp/search.c:2077
+#: cp/search.c:1775
#, c-format
msgid "looser throw specifier for `%#F'"
msgstr ""
-#: cp/search.c:2078
+#: cp/search.c:1776
#, c-format
msgid " overriding `%#F'"
msgstr ""
#. A static member function cannot match an inherited
#. virtual member function.
-#: cp/search.c:2167
+#: cp/search.c:1866
msgid "`%#D' cannot be declared"
msgstr ""
-#: cp/search.c:2168
+#: cp/search.c:1867
msgid " since `%#D' declared in base class"
msgstr ""
-#: cp/search.c:2309
+#: cp/search.c:1944
msgid "`%#D' needs a final overrider"
msgstr ""
-#: cp/semantics.c:919
+#: cp/semantics.c:1092
#, c-format
msgid "type of asm operand `%E' could not be determined"
msgstr ""
-#: cp/semantics.c:1051
-msgid "ISO C++ does not permit named return values"
+#: cp/semantics.c:1233
+msgid "invalid use of member `%D' in static member function"
msgstr ""
-#: cp/semantics.c:1060
-msgid "return identifier `%D' already in place"
+#: cp/semantics.c:1237 cp/semantics.c:1276
+msgid "from this location"
msgstr ""
-#: cp/semantics.c:1068
-msgid "can't redefine default return value for constructors"
-msgstr ""
+#: cp/semantics.c:1275
+msgid "object missing in reference to `%D'"
+msgstr "Objekt fehlt in Referenz auf »%D«"
-#: cp/semantics.c:1100
-msgid "only constructors take base initializers"
+#: cp/semantics.c:1721
+msgid "arguments to destructor are not allowed"
msgstr ""
-#: cp/semantics.c:1343
+#: cp/semantics.c:1769
msgid "`this' is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:1349
+#: cp/semantics.c:1775
msgid "invalid use of `this' in non-member function"
msgstr ""
-#: cp/semantics.c:1351
+#: cp/semantics.c:1777
msgid "invalid use of `this' at top level"
msgstr ""
-#: cp/semantics.c:1381
-msgid "calling type `%T' like a method"
-msgstr ""
-
-#: cp/semantics.c:1419
-msgid "destructor specifier `%T::~%T()' must have matching names"
+#: cp/semantics.c:1801
+msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:1425
+#: cp/semantics.c:1807
msgid "`%E' is not of type `%T'"
msgstr ""
-#: cp/semantics.c:1613
+#: cp/semantics.c:1918
msgid "template type parameters must use the keyword `class' or `typename'"
msgstr ""
-#: cp/semantics.c:1652
-msgid "invalid default template argument"
+#: cp/semantics.c:1962
+msgid "invalid use of type `%T' as a default value for a template template-parameter"
msgstr ""
-#: cp/semantics.c:1694
-msgid "definition of `%#T' inside template parameter list"
+#: cp/semantics.c:1965
+msgid "invalid use of `%D' as a default value for a template template-parameter"
msgstr ""
-#: cp/semantics.c:1710
-msgid "invalid definition of qualified type `%T'"
+#: cp/semantics.c:1969
+msgid "invalid default argument for a template template parameter"
msgstr ""
-#: cp/semantics.c:2053
-msgid "invalid base-class specification"
+#: cp/semantics.c:2004
+msgid "definition of `%#T' inside template parameter list"
msgstr ""
-#: cp/semantics.c:2062
-msgid "base class `%T' has cv qualifiers"
+#: cp/semantics.c:2015
+msgid "invalid definition of qualified type `%T'"
msgstr ""
-#: cp/semantics.c:2093
-msgid "multiple declarators in template declaration"
+#: cp/semantics.c:2030
+msgid "previous definition of `%#T'"
msgstr ""
-#: cp/semantics.c:2120
-#, c-format
-msgid "type of `%E' is unknown"
+#: cp/semantics.c:2225
+msgid "invalid base-class specification"
msgstr ""
-#: cp/spew.c:225
-#, c-format
-msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
+#: cp/semantics.c:2234
+msgid "base class `%T' has cv qualifiers"
msgstr ""
-#: cp/spew.c:1002 cp/spew.c:1340
-msgid "parse error at end of saved function text"
+#: cp/semantics.c:2266
+msgid "multiple declarators in template declaration"
msgstr ""
-#: cp/spew.c:1090 cp/spew.c:1178
-msgid "%Hend of file read inside definition"
+#: cp/semantics.c:2277
+msgid "incomplete type `%T' used in nested name specifier"
msgstr ""
-#: cp/spew.c:1121
-msgid "parse error in method specification"
+#: cp/semantics.c:2279 cp/typeck.c:1616
+msgid "`%D' is not a member of `%T'"
msgstr ""
-#: cp/spew.c:1161
-msgid "function body for constructor missing"
-msgstr ""
+#: cp/semantics.c:2282
+msgid "`%D' is not a member of `%D'"
+msgstr "»%D« ist kein Element von »%D«"
-#: cp/spew.c:1262
-msgid "%Hend of file read inside default argument"
+#: cp/semantics.c:2400
+msgid "template parameter `%D' of type `%T' is not allowed in an integral constant expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/spew.c:1419
-msgid "circular dependency in default args of `%#D'"
+#: cp/semantics.c:2553
+msgid "`%D' cannot appear in a constant-expression"
+msgstr "»%D« kann nicht in Konstanten-Ausdruck auftreten"
+
+#: cp/semantics.c:2562
+msgid "use of namespace `%D' as expression"
msgstr ""
-#: cp/spew.c:1483
-msgid "invalid type `%T' for default argument to `%T'"
+#: cp/semantics.c:2567
+msgid "use of class template `%T' as expression"
msgstr ""
-#: cp/spew.c:1548
-#, c-format
-msgid "%s before `%s'"
+#. Ambiguous reference to base members.
+#: cp/semantics.c:2573
+msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/spew.c:1550
+#: cp/semantics.c:2633
#, c-format
-msgid "%s before `%c'"
+msgid "use of %s from containing function"
msgstr ""
-#: cp/spew.c:1552
-#, c-format
-msgid "%s before `\\%o'"
+#: cp/semantics.c:2636
+msgid " `%#D' declared here"
msgstr ""
-#: cp/spew.c:1555
+#: cp/semantics.c:2687
#, c-format
-msgid "%s before `%s' token"
+msgid "type of `%E' is unknown"
msgstr ""
-#: cp/tree.c:263 cp/tree.c:275
+#: cp/tree.c:222
#, c-format
msgid "non-lvalue in %s"
msgstr ""
-#: cp/tree.c:562
+#: cp/tree.c:539
msgid "`%V' qualifiers cannot be applied to `%T'"
msgstr ""
-#: cp/tree.c:1941
+#: cp/tree.c:1830
#, c-format
msgid "`%s' attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:1971
+#: cp/tree.c:1859
#, c-format
msgid "`%s' attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:1977
+#: cp/tree.c:1865
#, c-format
msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2002
+#: cp/tree.c:1889
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2023
+#: cp/tree.c:1910
#, c-format
msgid "can only use `%s' attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2031
+#: cp/tree.c:1918
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2041
+#: cp/tree.c:1928
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2051
+#: cp/tree.c:1938
#, c-format
msgid "`%s' attribute is not supported on this platform"
msgstr ""
-#: cp/tree.c:2588
+#: cp/tree.c:2459
#, c-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
-#: cp/typeck.c:524
-#, c-format
-msgid "ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
-msgstr ""
-
-#: cp/typeck.c:545
+#: cp/typeck.c:438 cp/typeck.c:453 cp/typeck.c:543
msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
msgstr ""
-#: cp/typeck.c:1436
-msgid "ISO C++ prohibits conversion from `%#T' to `(...)'"
+#: cp/typeck.c:513
+#, c-format
+msgid "ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
msgstr ""
-#: cp/typeck.c:1514
+#: cp/typeck.c:563
+msgid "%s between distinct pointer-to-member types `%T' and `%T' lacks a cast"
+msgstr "%s zwischen verschiedenen Zeiger-auf-Element-Typen »%T« und »%T« fehlt eine Typkonvertierung"
+
+#: cp/typeck.c:1235
#, c-format
msgid "invalid application of `%s' to a member function"
msgstr ""
-#: cp/typeck.c:1520
+#: cp/typeck.c:1268
#, c-format
-msgid "invalid application of `%s' to non-static member"
-msgstr ""
+msgid "invalid application of `%s' to a bit-field"
+msgstr "ungültige Anwendung von »%s« auf ein Bitfeld"
-#: cp/typeck.c:1538
-msgid "sizeof applied to a bit-field"
-msgstr ""
+#: cp/typeck.c:1273
+#, c-format
+msgid "ISO C++ forbids applying `%s' to an expression of function type"
+msgstr "ISO-C++ verbietet Anwendung von »%s« auf einen Ausdruck mit Funktionstyp"
-#: cp/typeck.c:1541
-msgid "ISO C++ forbids applying `sizeof' to an expression of function type"
-msgstr ""
+#: cp/typeck.c:1342
+msgid "invalid use of non-static member function"
+msgstr "falsche Benutzung einer nicht-statischen Elementfunktion"
-#: cp/typeck.c:1759
+#: cp/typeck.c:1476
msgid "deprecated conversion from string constant to `%T'"
msgstr ""
-#: cp/typeck.c:1890 cp/typeck.c:2122
+#: cp/typeck.c:1587 cp/typeck.c:1874
msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgstr ""
-#: cp/typeck.c:1916
-msgid "`%D' is not a member of `%T'"
-msgstr ""
+#: cp/typeck.c:1614
+#, c-format
+msgid "invalid use of nonstatic data member '%E'"
+msgstr "ungültige Benutzung des nicht-statischen Datenelements »%E«"
-#: cp/typeck.c:1957 cp/typeck.c:1978
+#: cp/typeck.c:1666 cp/typeck.c:1688
msgid "invalid access to non-static data member `%D' of NULL object"
msgstr ""
-#: cp/typeck.c:1959 cp/typeck.c:1980
+#: cp/typeck.c:1668 cp/typeck.c:1690
msgid "(perhaps the `offsetof' macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2168
-msgid "`%D::%D' is not a member of `%T'"
+#: cp/typeck.c:1804
+msgid "the type being destroyed is '%T', but the destructor refers to `%T'"
msgstr ""
-#: cp/typeck.c:2179
-msgid "`%T' is not a base of `%T'"
+#: cp/typeck.c:1924
+msgid "`%D::%D' is not a member of `%T'"
msgstr ""
-#: cp/typeck.c:2199
-msgid "destructor specifier `%T::~%T' must have matching names"
+#: cp/typeck.c:1935
+msgid "`%T' is not a base of `%T'"
msgstr ""
-#: cp/typeck.c:2205
-msgid "type `%T' has no destructor"
+#: cp/typeck.c:1954
+msgid "'%D' has no member named '%E'"
msgstr ""
-#: cp/typeck.c:2244
+#: cp/typeck.c:1969
msgid "`%D' is not a member template function"
msgstr ""
#. A pointer to incomplete type (other than cv void) can be
#. dereferenced [expr.unary.op]/1
-#: cp/typeck.c:2338
+#: cp/typeck.c:2075
msgid "`%T' is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2365
+#: cp/typeck.c:2100
#, c-format
msgid "invalid use of `%s' on pointer to member"
msgstr ""
-#: cp/typeck.c:2371
+#: cp/typeck.c:2106
msgid "invalid type argument"
msgstr ""
-#: cp/typeck.c:2474
+#: cp/typeck.c:2212
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2485
+#: cp/typeck.c:2223
msgid "subscripting array declared `register'"
msgstr ""
-#: cp/typeck.c:2570
+#: cp/typeck.c:2306
#, c-format
msgid "object missing in use of `%E'"
msgstr ""
-#: cp/typeck.c:2674
+#: cp/typeck.c:2408
msgid "ISO C++ forbids calling `::main' from within program"
msgstr ""
-#: cp/typeck.c:2699
+#: cp/typeck.c:2433
#, c-format
msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgstr ""
-#: cp/typeck.c:2712
+#: cp/typeck.c:2446
#, c-format
msgid "`%E' cannot be used as a function"
msgstr ""
-#: cp/typeck.c:2824
+#: cp/typeck.c:2539
msgid "too many arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:2865
-msgid "parameter type of called function is incomplete"
+#: cp/typeck.c:2541 cp/typeck.c:2647
+msgid "at this point in file"
msgstr ""
-#: cp/typeck.c:2928
+#: cp/typeck.c:2578
+msgid "parameter %P of `%D' has incomplete type `%T'"
+msgstr "Parameter %P von »%D« hat unvollständigen Typen »%T«"
+
+#: cp/typeck.c:2581
+msgid "parameter %P has incomplete type `%T'"
+msgstr "Parameter %P hat unvollständigen Typen »%T«"
+
+#: cp/typeck.c:2645
msgid "too few arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:3056 cp/typeck.c:3066
+#: cp/typeck.c:2790 cp/typeck.c:2800
msgid "assuming cast to type `%T' from overloaded function"
msgstr ""
-#: cp/typeck.c:3126
+#: cp/typeck.c:2861
#, c-format
msgid "division by zero in `%E / 0'"
msgstr ""
-#: cp/typeck.c:3128
+#: cp/typeck.c:2863
#, c-format
msgid "division by zero in `%E / 0.'"
msgstr ""
-#: cp/typeck.c:3158
+#: cp/typeck.c:2892
#, c-format
msgid "division by zero in `%E %% 0'"
msgstr ""
-#: cp/typeck.c:3160
+#: cp/typeck.c:2894
#, c-format
msgid "division by zero in `%E %% 0.'"
msgstr ""
-#: cp/typeck.c:3240
+#: cp/typeck.c:2974
#, c-format
msgid "%s rotate count is negative"
msgstr ""
-#: cp/typeck.c:3243
+#: cp/typeck.c:2977
#, c-format
msgid "%s rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3274 cp/typeck.c:3279 cp/typeck.c:3370 cp/typeck.c:3375
+#: cp/typeck.c:3011 cp/typeck.c:3016 cp/typeck.c:3107 cp/typeck.c:3112
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:3553
+#: cp/typeck.c:3293
msgid "comparison between types `%#T' and `%#T'"
msgstr ""
-#: cp/typeck.c:3589
+#: cp/typeck.c:3329
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: cp/typeck.c:3654
+#: cp/typeck.c:3394
msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgstr ""
@@ -17455,753 +16744,578 @@ msgstr ""
#. performed. Note that pointer-difference and pointer-addition
#. have already been handled above, and so we don't end up here in
#. that case.
-#: cp/typeck.c:3676
+#: cp/typeck.c:3416
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:3743
+#: cp/typeck.c:3479
msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgstr ""
-#: cp/typeck.c:3745
+#: cp/typeck.c:3481
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:3747
+#: cp/typeck.c:3483
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:3749
-msgid "ISO C++ forbids using pointer to a member in subtraction"
-msgstr ""
-
-#: cp/typeck.c:3761
+#: cp/typeck.c:3495
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:3821
+#: cp/typeck.c:3550
#, c-format
msgid "invalid use of '%E' to form a pointer-to-member-function. Use a qualified-id."
msgstr ""
-#: cp/typeck.c:3827
+#: cp/typeck.c:3556
#, c-format
msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:3850
+#: cp/typeck.c:3578
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4091
+#: cp/typeck.c:3813
#, c-format
msgid "ISO C++ forbids %sing an enum"
msgstr ""
-#: cp/typeck.c:4103
+#: cp/typeck.c:3824
msgid "cannot %s a pointer to incomplete type `%T'"
msgstr ""
-#: cp/typeck.c:4110
+#: cp/typeck.c:3830
msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgstr ""
-#: cp/typeck.c:4135
+#: cp/typeck.c:3855
msgid "cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:4169
+#: cp/typeck.c:3889
msgid "invalid use of `--' on bool variable `%D'"
msgstr ""
#. ARM $3.4
-#: cp/typeck.c:4202
+#: cp/typeck.c:3920
msgid "ISO C++ forbids taking address of function `::main'"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4269
-msgid "ISO C++ forbids taking the address of an unqualified non-static member function to form a pointer to member function. Say `&%T::%D'"
+#: cp/typeck.c:3991
+msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:4271
+#: cp/typeck.c:3996
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:4295
+#: cp/typeck.c:4024
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4324
+#: cp/typeck.c:4040
+msgid "unary `&'"
+msgstr ""
+
+#: cp/typeck.c:4069
msgid "attempt to take address of bit-field structure member `%D'"
msgstr ""
-#: cp/typeck.c:4444
+#: cp/typeck.c:4183
msgid "taking address of destructor"
msgstr ""
-#: cp/typeck.c:4457
+#: cp/typeck.c:4196
msgid "taking address of bound pointer-to-member expression"
msgstr ""
-#: cp/typeck.c:4473
+#: cp/typeck.c:4204
msgid "cannot create pointer to reference member `%D'"
msgstr ""
-#: cp/typeck.c:4536
+#: cp/typeck.c:4266
msgid "cannot take the address of `this', which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:4555
+#: cp/typeck.c:4285
msgid "address requested for `%D', which is declared `register'"
msgstr ""
-#: cp/typeck.c:4682
-msgid "static_cast from type `%T' to type `%T' casts away constness"
+#: cp/typeck.c:4353
+#, c-format
+msgid "%s expression list treated as compound expression"
+msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
+
+#: cp/typeck.c:4426
+msgid "%s from type `%T' to type `%T' casts away constness"
msgstr ""
-#: cp/typeck.c:4871
+#: cp/typeck.c:4618
msgid "invalid static_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4910
+#: cp/typeck.c:4658
msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4930
+#: cp/typeck.c:4678
msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgstr ""
-#: cp/typeck.c:4943
-msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
-msgstr ""
-
-#: cp/typeck.c:4952
+#: cp/typeck.c:4697
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:4958
+#: cp/typeck.c:4703
msgid "invalid reinterpret_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4985
+#: cp/typeck.c:4731
msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:4988
+#: cp/typeck.c:4734
msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
msgstr ""
-#: cp/typeck.c:5011
+#: cp/typeck.c:4757
msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5027
+#: cp/typeck.c:4774
msgid "invalid const_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5069 cp/typeck.c:5074
+#: cp/typeck.c:4814 cp/typeck.c:4819
msgid "ISO C++ forbids casting to an array type `%T'"
msgstr ""
-#: cp/typeck.c:5082
+#: cp/typeck.c:4827
msgid "invalid cast to function type `%T'"
msgstr ""
-#: cp/typeck.c:5138
+#: cp/typeck.c:4883
msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgstr ""
-#: cp/typeck.c:5184
+#: cp/typeck.c:4929
msgid "cast from `%T' to `%T' increases required alignment of target type"
msgstr ""
-#: cp/typeck.c:5357
+#: cp/typeck.c:5093
msgid " in evaluation of `%Q(%#T, %#T)'"
msgstr ""
-#: cp/typeck.c:5399
+#: cp/typeck.c:5135
msgid "ISO C++ forbids cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:5463
+#: cp/typeck.c:5208
msgid "incompatible types in assignment of `%T' to `%T'"
msgstr ""
-#: cp/typeck.c:5470
+#: cp/typeck.c:5215
msgid "ISO C++ forbids assignment of arrays"
msgstr ""
-#: cp/typeck.c:5577
+#: cp/typeck.c:5314
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:5585
+#: cp/typeck.c:5322
msgid " in pointer to member conversion"
msgstr ""
#. This is a reinterpret cast, we choose to do nothing.
-#: cp/typeck.c:5596 cp/typeck.c:5615
-msgid "pointer to member cast via virtual base `%T' of `%T'"
-msgstr ""
+#: cp/typeck.c:5332 cp/typeck.c:5347
+msgid "pointer to member cast via virtual base `%T'"
+msgstr "Typumwandlung von Zeiger in Element über virtuelle Basis »%T«"
-#: cp/typeck.c:5619
-msgid "pointer to member conversion via virtual base `%T' of `%T'"
-msgstr ""
+#: cp/typeck.c:5350
+msgid "pointer to member conversion via virtual base `%T'"
+msgstr "Konvertierung von Zeiger in Element über virtuelle Basis »%T«"
-#: cp/typeck.c:5695
+#: cp/typeck.c:5420
msgid "invalid conversion to type `%T' from type `%T'"
msgstr ""
-#: cp/typeck.c:5860
+#: cp/typeck.c:5576
msgid "passing NULL used for non-pointer %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5863
+#: cp/typeck.c:5579
msgid "%s to non-pointer type `%T' from NULL"
msgstr ""
-#: cp/typeck.c:5871
+#: cp/typeck.c:5587
msgid "passing `%T' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5874
+#: cp/typeck.c:5590
msgid "%s to `%T' from `%T'"
msgstr ""
-#: cp/typeck.c:5884
+#: cp/typeck.c:5600
msgid "passing negative value `%E' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5887
+#: cp/typeck.c:5603
msgid "%s of negative value `%E' to `%T'"
msgstr ""
-#: cp/typeck.c:5982
+#: cp/typeck.c:5691
msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgstr ""
-#: cp/typeck.c:5985
+#: cp/typeck.c:5694
msgid "cannot convert `%T' to `%T' in %s"
msgstr ""
-#: cp/typeck.c:6073 cp/typeck.c:6075
+#: cp/typeck.c:5771 cp/typeck.c:5773
msgid "in passing argument %P of `%+D'"
msgstr ""
-#: cp/typeck.c:6190
+#: cp/typeck.c:5880
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:6197
+#: cp/typeck.c:5887
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:6209
+#: cp/typeck.c:5899
msgid "reference to local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:6212
+#: cp/typeck.c:5902
msgid "address of local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:6243
+#: cp/typeck.c:5932
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:6251
+#: cp/typeck.c:5940
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:6254
+#: cp/typeck.c:5943
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:6271
-msgid "return-statement with no value, in function declared with a non-void return type"
-msgstr ""
+#: cp/typeck.c:5966
+msgid "return-statement with no value, in function returning '%T'"
+msgstr "Return-Anweisung ohne Wert, in »%T« zurückgebender Funktion"
-#: cp/typeck.c:6287
-msgid "return-statement with a value, in function declared with a void return type"
-msgstr ""
+#: cp/typeck.c:5983
+msgid "return-statement with a value, in function returning 'void'"
+msgstr "Return-Anweisung mit Wert in »void« zurückgebender Funktion"
-#: cp/typeck.c:6308
+#: cp/typeck.c:6005
msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
msgstr ""
-#: cp/typeck2.c:54
+#: cp/typeck2.c:55
msgid "type `%T' is not a base type for type `%T'"
msgstr ""
-#: cp/typeck2.c:157
+#: cp/typeck2.c:151
msgid "cannot declare variable `%D' to be of type `%T'"
msgstr ""
-#: cp/typeck2.c:160
+#: cp/typeck2.c:154
msgid "cannot declare parameter `%D' to be of type `%T'"
msgstr ""
-#: cp/typeck2.c:163
+#: cp/typeck2.c:157
msgid "cannot declare field `%D' to be of type `%T'"
msgstr ""
-#: cp/typeck2.c:167
+#: cp/typeck2.c:161
msgid "invalid return type for member function `%#D'"
msgstr ""
-#: cp/typeck2.c:169
+#: cp/typeck2.c:163
msgid "invalid return type for function `%#D'"
msgstr ""
-#: cp/typeck2.c:172
+#: cp/typeck2.c:166
msgid "cannot allocate an object of type `%T'"
msgstr ""
-#: cp/typeck2.c:179
+#: cp/typeck2.c:173
msgid " because the following virtual functions are abstract:"
msgstr ""
-#: cp/typeck2.c:181
+#: cp/typeck2.c:175
msgid "\t%#D"
msgstr ""
-#: cp/typeck2.c:184
+#: cp/typeck2.c:178
msgid " since type `%T' has abstract virtual functions"
msgstr ""
-#: cp/typeck2.c:338
+#: cp/typeck2.c:426
msgid "constructor syntax used, but no constructor declared for type `%T'"
msgstr ""
-#: cp/typeck2.c:349
-msgid "comma expression used to initialize return value"
-msgstr ""
-
-#: cp/typeck2.c:358
+#: cp/typeck2.c:439
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:473
+#: cp/typeck2.c:544
msgid "initializing array with parameter list"
msgstr ""
-#: cp/typeck2.c:529
+#: cp/typeck2.c:599
msgid "initializer for scalar variable requires one element"
msgstr ""
-#: cp/typeck2.c:536
+#: cp/typeck2.c:606
msgid "braces around scalar initializer for `%T'"
msgstr ""
-#: cp/typeck2.c:539
+#: cp/typeck2.c:609
msgid "ignoring extra initializers for `%T'"
msgstr ""
-#: cp/typeck2.c:551
+#: cp/typeck2.c:621
msgid "variable-sized object of type `%T' may not be initialized"
msgstr ""
-#: cp/typeck2.c:561
+#: cp/typeck2.c:631
msgid "subobject of type `%T' must be initialized by constructor, not by `%E'"
msgstr ""
-#: cp/typeck2.c:627
+#: cp/typeck2.c:696
msgid "aggregate has a partly bracketed initializer"
msgstr ""
-#: cp/typeck2.c:665 cp/typeck2.c:770
+#: cp/typeck2.c:734 cp/typeck2.c:839
msgid "non-trivial labeled initializers"
msgstr ""
-#: cp/typeck2.c:682
+#: cp/typeck2.c:751
msgid "non-empty initializer for array of empty elements"
msgstr ""
-#: cp/typeck2.c:736
+#: cp/typeck2.c:805
msgid "initializer list for object of class with virtual base classes"
msgstr ""
-#: cp/typeck2.c:742
+#: cp/typeck2.c:811
msgid "initializer list for object of class with base classes"
msgstr ""
-#: cp/typeck2.c:748
+#: cp/typeck2.c:817
msgid "initializer list for object using virtual functions"
msgstr ""
-#: cp/typeck2.c:811 cp/typeck2.c:827
+#: cp/typeck2.c:879 cp/typeck2.c:895
msgid "missing initializer for member `%D'"
msgstr ""
-#: cp/typeck2.c:816
+#: cp/typeck2.c:884
msgid "uninitialized const member `%D'"
msgstr ""
-#: cp/typeck2.c:818
+#: cp/typeck2.c:886
msgid "member `%D' with uninitialized const fields"
msgstr ""
-#: cp/typeck2.c:821
+#: cp/typeck2.c:889
msgid "member `%D' is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:868
+#: cp/typeck2.c:936
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:880
+#: cp/typeck2.c:948
msgid "no field `%D' in union being initialized"
msgstr ""
-#: cp/typeck2.c:888
+#: cp/typeck2.c:956
msgid "union `%T' with no named members cannot be initialized"
msgstr ""
-#: cp/typeck2.c:924
+#: cp/typeck2.c:992
msgid "excess elements in aggregate initializer"
msgstr ""
-#: cp/typeck2.c:1038
+#: cp/typeck2.c:1100
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1051
+#: cp/typeck2.c:1113
msgid "base operand of `->' has non-pointer type `%T'"
msgstr ""
-#: cp/typeck2.c:1065
+#: cp/typeck2.c:1137
msgid "result of `operator->()' yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1067
+#: cp/typeck2.c:1139
msgid "base operand of `->' is not a pointer"
msgstr ""
-#: cp/typeck2.c:1133
+#: cp/typeck2.c:1162
msgid "`%E' cannot be used as a member pointer, since it is of type `%T'"
msgstr ""
-#: cp/typeck2.c:1140
+#: cp/typeck2.c:1170
msgid "cannot apply member pointer `%E' to `%E', which is of non-aggregate type `%T'"
msgstr ""
-#: cp/typeck2.c:1149
+#: cp/typeck2.c:1180
msgid "member type `%T::' incompatible with object type `%T'"
msgstr ""
-#: cp/typeck2.c:1186
-msgid "`%T' fails to be a typedef or built-in type"
-msgstr ""
-
-#: cp/typeck2.c:1259
-#, c-format
-msgid "ISO C++ forbids defining types within %s"
-msgstr ""
-
-#: cp/typeck2.c:1384
+#: cp/typeck2.c:1396
msgid "call to function `%D' which throws incomplete type `%#T'"
msgstr ""
-#: cp/typeck2.c:1387
+#: cp/typeck2.c:1399
msgid "call to function which throws incomplete type `%#T'"
msgstr ""
#. XXX Not i18n clean.
-#: cp/cp-tree.h:3936
+#: cp/cp-tree.h:3756
#, c-format
msgid "%s is deprecated, please see the documentation for details"
msgstr ""
-#: cp/lang-options.h:29
-msgid "Do not obey access control semantics"
-msgstr ""
-
-#: cp/lang-options.h:31
-msgid "Change when template instances are emitted"
-msgstr ""
-
-#: cp/lang-options.h:36
-msgid "Check the return value of new"
-msgstr ""
-
-#: cp/lang-options.h:39
-msgid "Reduce size of object files"
-msgstr ""
-
-#: cp/lang-options.h:43
-msgid "Make string literals `char[]' instead of `const char[]'"
-msgstr ""
-
-#: cp/lang-options.h:46
-msgid "Dump the entire translation unit to a file"
-msgstr ""
-
-#: cp/lang-options.h:48
-msgid "Do not inline member functions by default"
-msgstr ""
-
-#: cp/lang-options.h:51
-msgid "Do not generate run time type descriptor information"
-msgstr ""
-
-#: cp/lang-options.h:56
-msgid "Do not generate code to check exception specifications"
-msgstr ""
-
-#: cp/lang-options.h:61
-msgid "Scope of for-init-statement vars extends outside"
-msgstr ""
-
-#: cp/lang-options.h:64
-msgid "Do not recognize GNU defined keywords"
-msgstr ""
-
-#: cp/lang-options.h:68
-msgid "Enable support for huge objects"
-msgstr ""
-
-#: cp/lang-options.h:72
-msgid "Export functions even if they can be inlined"
-msgstr ""
-
-#: cp/lang-options.h:75
-msgid "Only emit explicit template instantiations"
-msgstr ""
-
-#: cp/lang-options.h:78
-msgid "Only emit explicit instantiations of inline templates"
-msgstr ""
-
-#: cp/lang-options.h:84
-msgid "Don't pedwarn about uses of Microsoft extensions"
-msgstr ""
-
-#: cp/lang-options.h:87
-msgid "Recognize and/bitand/bitor/compl/not/or/xor"
-msgstr ""
-
-#: cp/lang-options.h:91
-msgid "Disable optional diagnostics"
-msgstr ""
-
-#: cp/lang-options.h:93
-msgid "Downgrade conformance errors to warnings"
-msgstr ""
-
-#: cp/lang-options.h:96
-msgid "Enable automatic template instantiation"
-msgstr ""
-
-#: cp/lang-options.h:101
-msgid "Display statistics accumulated during compilation"
-msgstr ""
-
-#: cp/lang-options.h:104
-msgid "Specify maximum template instantiation depth"
-msgstr ""
-
-#: cp/lang-options.h:106
-msgid "Use __cxa_atexit to register destructors"
-msgstr ""
-
-#: cp/lang-options.h:109
-msgid "Discard unused virtual functions"
-msgstr ""
-
-#: cp/lang-options.h:112
-msgid "Implement vtables using thunks"
-msgstr ""
-
-#: cp/lang-options.h:115
-msgid "Emit common-like symbols as weak symbols"
-msgstr ""
-
-#: cp/lang-options.h:118
-msgid "Emit cross referencing information"
-msgstr ""
-
-#: cp/lang-options.h:122
-msgid "Warn about inconsistent return types"
-msgstr ""
-
-#: cp/lang-options.h:125
-msgid "Warn about overloaded virtual function names"
-msgstr ""
-
-#: cp/lang-options.h:129
-msgid "Don't warn when all ctors/dtors are private"
-msgstr ""
-
-#: cp/lang-options.h:131
-msgid "Warn about non virtual destructors"
-msgstr ""
-
-#: cp/lang-options.h:134
-msgid "Warn when a function is declared extern, then inline"
-msgstr ""
-
-#: cp/lang-options.h:137
-msgid "Warn when the compiler reorders code"
-msgstr ""
-
-#: cp/lang-options.h:140
-msgid "Warn when synthesis behavior differs from Cfront"
-msgstr ""
-
-#: cp/lang-options.h:144
-msgid "Don't warn when type converting pointers to member functions"
-msgstr ""
-
-#: cp/lang-options.h:146
-msgid "Warn about violations of Effective C++ style rules"
-msgstr ""
-
-#: cp/lang-options.h:149
-msgid "Warn when overload promotes from unsigned to signed"
-msgstr ""
-
-#: cp/lang-options.h:152
-msgid "Warn if a C style cast is used in a program"
-msgstr ""
-
-#: cp/lang-options.h:156
-msgid "Don't warn when non-templatized friend functions are declared within a template"
-msgstr ""
-
-#: cp/lang-options.h:159
-msgid "Don't announce deprecation of compiler features"
-msgstr ""
-
-#: f/bad.c:387
+#: f/bad.c:388
msgid "note:"
msgstr ""
-#: f/bad.c:391
+#: f/bad.c:392
msgid "warning:"
msgstr ""
-#: f/bad.c:395
+#: f/bad.c:396
msgid "fatal:"
msgstr ""
-#: f/bad.c:437
+#: f/bad.c:438
msgid "(continued):"
msgstr ""
-#: f/bad.c:487 f/bad.c:505
+#: f/bad.c:488 f/bad.c:506
msgid "[REPORT BUG!!] %"
msgstr ""
-#: f/bad.c:494 f/bad.c:526
+#: f/bad.c:495 f/bad.c:527
msgid "[REPORT BUG!!]"
msgstr ""
-#: f/com.c:3132
+#: f/com.c:3125
#, no-c-format
msgid "ASSIGN'ed label cannot fit into `%A' at %0 -- using wider sibling"
msgstr ""
-#: f/com.c:11623
+#: f/com.c:11565
msgid "no INTEGER type can hold a pointer on this configuration"
msgstr ""
-#: f/com.c:11844
+#: f/com.c:11839
#, c-format
msgid "configuration: REAL, INTEGER, and LOGICAL are %d bits wide,"
msgstr ""
-#: f/com.c:11846
+#: f/com.c:11841
#, c-format
msgid "and pointers are %d bits wide, but g77 doesn't yet work"
msgstr ""
-#: f/com.c:11848
+#: f/com.c:11843
msgid "properly unless they all are 32 bits wide"
msgstr ""
-#: f/com.c:11849
+#: f/com.c:11844
msgid "Please keep this in mind before you report bugs."
msgstr "Bitte bedenken Sie dies, wenn Sie einen Fehlerbericht einsenden."
#. I/O will probably crash.
-#: f/com.c:11857
+#: f/com.c:11852
#, c-format
msgid "configuration: char * holds %d bits, but ftnlen only %d"
msgstr ""
#. ASSIGN 10 TO I will crash.
-#: f/com.c:11866
+#: f/com.c:11861
#, c-format
msgid ""
"configuration: char * holds %d bits, but INTEGER only %d --\n"
" ASSIGN statement might fail"
msgstr ""
-#: f/com.c:13681
+#: f/com.c:13677
msgid "In statement function"
msgstr ""
-#: f/com.c:13691
+#: f/com.c:13687
+#, c-format
msgid "Outside of any program unit:\n"
msgstr ""
-#: f/com.c:15320
+#: f/com.c:15283
#, no-c-format
msgid "%A from %B at %0%C"
msgstr ""
-#: f/com.c:15497
-msgid "directory name must immediately follow -I"
-msgstr ""
-
-#: f/com.c:15640
+#: f/com.c:15593
#, no-c-format
msgid "At %0, INCLUDE file %A exists, but is not readable"
msgstr ""
-#: f/com.c:15675
+#: f/com.c:15628
#, no-c-format
msgid "At %0, INCLUDE nesting too deep"
msgstr ""
-#: f/expr.c:9614
+#: f/expr.c:8706
#, no-c-format
msgid "Two arithmetic operators in a row at %0 and %1 -- use parentheses"
msgstr ""
-#: f/expr.c:9664
+#: f/expr.c:8756
#, no-c-format
msgid "Operator at %0 has lower precedence than that at %1 -- use parentheses"
msgstr ""
-#: f/expr.c:10525
+#: f/expr.c:9639
#, no-c-format
msgid "Use .EQV./.NEQV. instead of .EQ./.NE. at %0 for LOGICAL operands at %1 and %2"
msgstr ""
-#: f/expr.c:10896
+#: f/expr.c:10010
#, no-c-format
msgid "Unsupported operand for ** at %1 -- converting to default INTEGER"
msgstr ""
-#: f/g77spec.c:234
+#: f/g77spec.c:230
#, c-format
msgid "overflowed output arg list for `%s'"
msgstr ""
-#: f/g77spec.c:373
+#: f/g77spec.c:367
msgid "--driver no longer supported"
msgstr ""
-#: f/g77spec.c:386
+#: f/g77spec.c:380
#, c-format
msgid "argument to `%s' missing"
msgstr ""
-#: f/g77spec.c:390
+#: f/g77spec.c:384
msgid "no input files; unwilling to write output files"
msgstr ""
@@ -18210,131 +17324,126 @@ msgstr ""
msgid "Implicit declaration of `%A' at %0"
msgstr ""
-#: f/lex.c:326
+#: f/lex.c:321
#, no-c-format
msgid "Non-ISO-C-standard escape sequence `\\%A' at %0"
msgstr ""
-#: f/lex.c:345
+#: f/lex.c:340
#, no-c-format
msgid "Unknown escape sequence `\\%A' at %0"
msgstr ""
-#: f/lex.c:354
+#: f/lex.c:349
#, no-c-format
msgid "Unterminated escape sequence `\\' at %0"
msgstr ""
-#: f/lex.c:365
+#: f/lex.c:360
#, no-c-format
msgid "Unknown escape sequence `\\' followed by char code 0x%A at %0"
msgstr ""
-#: f/lex.c:393
+#: f/lex.c:388
#, no-c-format
msgid "\\x used at %0 with no following hex digits"
msgstr ""
-#: f/lex.c:407
+#: f/lex.c:402
#, no-c-format
msgid "Hex escape at %0 out of range"
msgstr ""
-#: f/lex.c:441
+#: f/lex.c:436
#, no-c-format
msgid "Escape sequence at %0 out of range for character"
msgstr ""
-#: f/lex.c:595
+#: f/lex.c:590
msgid "hex escape out of range"
msgstr ""
-#: f/lex.c:648
+#: f/lex.c:643
#, c-format
msgid "non-ANSI-standard escape sequence, `\\%c'"
msgstr ""
-#: f/lex.c:661
+#: f/lex.c:656
#, c-format
msgid "non-ISO escape sequence `\\%c'"
msgstr ""
-#: f/lex.c:665
+#: f/lex.c:660
#, c-format
msgid "unknown escape sequence `\\%c'"
msgstr ""
-#: f/lex.c:667
+#: f/lex.c:662
#, c-format
msgid "unknown escape sequence: `\\' followed by char code 0x%x"
msgstr ""
-#: f/lex.c:744
+#: f/lex.c:739
msgid "badly formed directive -- no closing quote"
msgstr ""
-#: f/lex.c:802
+#: f/lex.c:797
msgid "#-lines for entering and leaving files don't match"
msgstr ""
-#: f/lex.c:964
+#: f/lex.c:957
msgid "bad directive -- missing close-quote"
msgstr ""
-#: f/lex.c:1078
-#, c-format
-msgid "ignoring pragma: %s"
-msgstr ""
-
-#: f/lex.c:1156
+#: f/lex.c:1096
msgid "invalid #ident"
msgstr ""
-#: f/lex.c:1173
+#: f/lex.c:1113
msgid "undefined or invalid # directive"
msgstr ""
-#: f/lex.c:1229
+#: f/lex.c:1168
msgid "invalid #line"
msgstr ""
-#: f/lex.c:1285 f/lex.c:1329
+#: f/lex.c:1224 f/lex.c:1268
msgid "use `#line ...' instead of `# ...' in first line"
msgstr ""
-#: f/lex.c:1339
+#: f/lex.c:1278
msgid "invalid #-line"
msgstr ""
-#: f/lex.c:1432
+#: f/lex.c:1371
#, no-c-format
msgid "Null character at %0 -- line ignored"
msgstr ""
-#: f/stb.c:12078
+#: f/stb.c:9177
#, no-c-format
msgid "INCLUDE at %0 not the only statement on the source line"
msgstr ""
-#: f/ste.c:1400 f/ste.c:1747
+#: f/ste.c:1397 f/ste.c:1744
msgid "ASSIGNed FORMAT specifier is too small"
msgstr ""
#. ~~~Someday handle CHARACTER*1, CHARACTER*N
-#: f/ste.c:2624
+#: f/ste.c:2621
#, no-c-format
msgid "SELECT CASE on CHARACTER type (at %0) not supported -- sorry"
msgstr ""
-#: f/ste.c:2729
+#: f/ste.c:2725
msgid "SELECT (at %0) has duplicate cases -- check integer overflow of CASE(s)"
msgstr ""
-#: f/ste.c:2959
+#: f/ste.c:2957
msgid "ASSIGN to variable that is too small"
msgstr ""
-#: f/ste.c:2987
+#: f/ste.c:2989
msgid "ASSIGNed GOTO target variable is too small"
msgstr ""
@@ -18343,331 +17452,20 @@ msgstr ""
msgid "Local adjustable symbol `%A' at %0"
msgstr ""
-#: f/target.c:2550
+#: f/target.c:2545
msgid "data initializer on host with different endianness"
msgstr ""
-#: f/top.c:237
-#, c-format
-msgid "%s no longer supported -- try -fvxt"
-msgstr ""
-
-#: f/top.c:239
-#, c-format
-msgid "%s no longer supported -- try -fno-vxt -ff90"
-msgstr ""
-
-#: f/top.c:307 f/top.c:309
-#, c-format
-msgid "%s disabled, use normal debugging flags"
-msgstr ""
-
-#: f/lang-options.h:33
-msgid "Print g77-specific compiler version info, run internal tests"
-msgstr ""
-
-#: f/lang-options.h:37
-msgid "Program is written in typical FORTRAN 66 dialect"
-msgstr ""
-
-#: f/lang-options.h:40
-msgid "Program is written in typical Unix f77 dialect"
-msgstr ""
-
-#: f/lang-options.h:42
-msgid "Program does not use Unix-f77 dialectal features"
-msgstr ""
-
-#: f/lang-options.h:44
-msgid "Program is written in Fortran-90-ish dialect"
-msgstr ""
-
-#: f/lang-options.h:48
-msgid "Treat local vars and COMMON blocks as if they were named in SAVE statements"
-msgstr ""
-
-#: f/lang-options.h:50
-msgid "Allow $ in symbol names"
-msgstr ""
-
-#: f/lang-options.h:54
-msgid "f2c-compatible code need not be generated"
-msgstr ""
-
-#: f/lang-options.h:57
-msgid "Unsupported; do not generate libf2c-calling code"
-msgstr ""
-
-#: f/lang-options.h:59
-msgid "Unsupported; affects code-generation of arrays"
-msgstr ""
-
-#: f/lang-options.h:62
-msgid "Program is written in Fortran-90-ish free form"
-msgstr ""
-
-#: f/lang-options.h:67
-msgid "Warn about use of (only a few for now) Fortran extensions"
-msgstr ""
-
-#: f/lang-options.h:70
-msgid "Program is written in VXT (Digital-like) FORTRAN"
-msgstr ""
-
-#: f/lang-options.h:73
-msgid "Disallow all ugly features"
-msgstr ""
-
-#: f/lang-options.h:76
-msgid "Hollerith and typeless constants not passed as arguments"
-msgstr ""
-
-#: f/lang-options.h:78
-msgid "Allow ordinary copying of ASSIGN'ed vars"
-msgstr ""
-
-#: f/lang-options.h:81
-msgid "Dummy array dimensioned to (1) is assumed-size"
-msgstr ""
-
-#: f/lang-options.h:84
-msgid "Trailing comma in procedure call denotes null argument"
-msgstr ""
-
-#: f/lang-options.h:87
-msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
-msgstr ""
-
-#: f/lang-options.h:91
-msgid "Initialization via DATA and PARAMETER is type-compatible"
-msgstr ""
-
-#: f/lang-options.h:93
-msgid "Allow INTEGER and LOGICAL interchangeability"
-msgstr ""
-
-#: f/lang-options.h:96
-msgid "Print internal debugging-related info"
-msgstr ""
-
-#: f/lang-options.h:99
-msgid "Initialize local vars and arrays to zero"
-msgstr ""
-
-#: f/lang-options.h:103
-msgid "Backslashes in character/hollerith constants not special (C-style)"
-msgstr ""
-
-#: f/lang-options.h:105
-msgid "Have front end emulate COMPLEX arithmetic to avoid bugs"
-msgstr ""
-
-#: f/lang-options.h:109
-msgid "Disable the appending of underscores to externals"
-msgstr ""
-
-#: f/lang-options.h:112
-msgid "Never append a second underscore to externals"
-msgstr ""
-
-#: f/lang-options.h:114
-msgid "Intrinsics spelled as e.g. SqRt"
-msgstr ""
-
-#: f/lang-options.h:116
-msgid "Intrinsics in uppercase"
-msgstr ""
-
-#: f/lang-options.h:119
-msgid "Intrinsics letters in arbitrary cases"
-msgstr ""
-
-#: f/lang-options.h:121
-msgid "Language keywords spelled as e.g. IOStat"
-msgstr ""
-
-#: f/lang-options.h:123
-msgid "Language keywords in uppercase"
-msgstr ""
-
-#: f/lang-options.h:126
-msgid "Language keyword letters in arbitrary cases"
-msgstr ""
-
-#: f/lang-options.h:128
-msgid "Internally convert most source to uppercase"
-msgstr ""
-
-#: f/lang-options.h:131
-msgid "Internally preserve source case"
-msgstr ""
-
-#: f/lang-options.h:133
-msgid "Symbol names spelled in mixed case"
-msgstr ""
-
-#: f/lang-options.h:135
-msgid "Symbol names in uppercase"
-msgstr ""
-
-#: f/lang-options.h:137
-msgid "Symbol names in lowercase"
-msgstr ""
-
-#: f/lang-options.h:140
-msgid "Program written in uppercase"
-msgstr ""
-
-#: f/lang-options.h:142
-msgid "Program written in lowercase"
-msgstr ""
-
-#: f/lang-options.h:144
-msgid "Program written in strict mixed-case"
-msgstr ""
-
-#: f/lang-options.h:146
-msgid "Compile as if program written in uppercase"
-msgstr ""
-
-#: f/lang-options.h:148
-msgid "Compile as if program written in lowercase"
-msgstr ""
-
-#: f/lang-options.h:150
-msgid "Preserve all spelling (case) used in program"
-msgstr ""
-
-#: f/lang-options.h:152
-msgid "Delete libU77 intrinsics with bad interfaces"
-msgstr ""
-
-#: f/lang-options.h:154
-msgid "Disable libU77 intrinsics with bad interfaces"
-msgstr ""
-
-#: f/lang-options.h:157
-msgid "Hide libU77 intrinsics with bad interfaces"
-msgstr ""
-
-#: f/lang-options.h:159
-msgid "Delete non-FORTRAN-77 intrinsics f2c supports"
-msgstr ""
-
-#: f/lang-options.h:161
-msgid "Disable non-FORTRAN-77 intrinsics f2c supports"
-msgstr ""
-
-#: f/lang-options.h:164
-msgid "Hide non-FORTRAN-77 intrinsics f2c supports"
-msgstr ""
-
-#: f/lang-options.h:166
-msgid "Delete non-FORTRAN-77 intrinsics F90 supports"
-msgstr ""
-
-#: f/lang-options.h:168
-msgid "Disable non-FORTRAN-77 intrinsics F90 supports"
-msgstr ""
-
-#: f/lang-options.h:171
-msgid "Hide non-FORTRAN-77 intrinsics F90 supports"
-msgstr ""
-
-#: f/lang-options.h:173
-msgid "Delete non-FORTRAN-77 intrinsics g77 supports"
-msgstr ""
-
-#: f/lang-options.h:175
-msgid "Disable non-FORTRAN 77 intrinsics F90 supports"
-msgstr ""
-
-#: f/lang-options.h:178
-msgid "Hide non-FORTRAN 77 intrinsics F90 supports"
-msgstr ""
-
-#: f/lang-options.h:180
-msgid "Delete MIL-STD 1753 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:182
-msgid "Disable MIL-STD 1753 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:185
-msgid "Hide MIL-STD 1753 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:187
-msgid "Delete libU77 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:189
-msgid "Disable libU77 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:192
-msgid "Hide libU77 intrinsics"
-msgstr ""
-
-#: f/lang-options.h:194
-msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr ""
-
-#: f/lang-options.h:196
-msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr ""
-
-#: f/lang-options.h:199
-msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr ""
-
-#: f/lang-options.h:201
-msgid "Treat initial values of 0 like non-zero values"
-msgstr ""
-
-#: f/lang-options.h:204
-msgid "Emit special debugging information for COMMON and EQUIVALENCE (disabled)"
-msgstr ""
-
-#: f/lang-options.h:207
-msgid "Take at least one trip through each iterative DO loop"
-msgstr ""
-
-#: f/lang-options.h:211
-msgid "Print names of program units as they are compiled"
+#: f/top.c:244
+msgid "-fvxt-not-f90 no longer supported -- try -fvxt"
msgstr ""
-#: f/lang-options.h:214
-msgid "Disable fatal diagnostics about inter-procedural problems"
+#: f/top.c:248
+msgid "-ff90-not-vxt no longer supported -- try -fno-vxt -ff90"
msgstr ""
-#: f/lang-options.h:216
-msgid "Make prefix-radix non-decimal constants be typeless"
-msgstr ""
-
-#: f/lang-options.h:219
-msgid "Generate code to check subscript and substring bounds"
-msgstr ""
-
-#: f/lang-options.h:222
-msgid "Fortran-specific form of -fbounds-check"
-msgstr ""
-
-#: f/lang-options.h:226
-msgid "Disable warnings about inter-procedural problems"
-msgstr ""
-
-#: f/lang-options.h:230
-msgid "Warn about constructs with surprising meanings"
-msgstr ""
-
-#: f/lang-options.h:235
-msgid "Add a directory for INCLUDE searching"
-msgstr ""
-
-#: f/lang-options.h:237
-msgid "Set the maximum line length"
+#: f/top.c:318
+msgid "-fdebug-kludge is disabled, use normal debugging flags"
msgstr ""
#: f/bad.def:39
@@ -19572,320 +18370,338 @@ msgstr ""
msgid "In anything"
msgstr ""
-#: java/check-init.c:917
+#: java/check-init.c:905
#, c-format
msgid "internal error in check-init: tree code not implemented: %s"
msgstr ""
-#: java/check-init.c:990
-#, c-format
-msgid "final field '%s' may not have been initialized"
-msgstr ""
+#: java/check-init.c:977
+msgid "%Jfinal field '%D' may not have been initialized"
+msgstr "%Jletztes Feld »%D« könnte nicht initialisiert worden sein"
-#: java/class.c:539 java/class.c:564
+#: java/class.c:592 java/class.c:616
msgid "internal error - too many interface type"
msgstr ""
-#: java/class.c:677
+#: java/class.c:715
msgid "bad method signature"
msgstr ""
-#: java/class.c:726
+#: java/class.c:759
msgid "misplaced ConstantValue attribute (not in any field)"
msgstr ""
-#: java/class.c:728
+#: java/class.c:761
#, c-format
msgid "duplicate ConstantValue attribute for field '%s'"
msgstr ""
-#: java/class.c:739
+#: java/class.c:772
#, c-format
msgid "ConstantValue attribute of field '%s' has wrong type"
msgstr ""
-#: java/class.c:1103
+#: java/class.c:1067
#, c-format
msgid "field '%s' not found in class"
msgstr ""
-#: java/class.c:1365
-msgid "abstract method in non-abstract class"
+#: java/class.c:1324
+msgid "%Jabstract method in non-abstract class"
msgstr ""
-#: java/class.c:2078
-#, c-format
-msgid "non-static method '%s' overrides static method"
+#: java/class.c:2140
+msgid "%Jnon-static method '%D' overrides static method"
msgstr ""
-#: java/decl.c:1541
+#: java/decl.c:1018
+msgid "%J'%D' used prior to declaration"
+msgstr "%J»%D« bereits vor Deklaration benutzt"
+
+#: java/decl.c:1059
+#, c-format
+msgid "declaration of `%s' shadows a parameter"
+msgstr "Deklaration von »%s« überdeckt einen Parameter"
+
+#: java/decl.c:1062
#, c-format
-msgid "In %s: overlapped variable and exception ranges at %d"
+msgid "declaration of `%s' shadows a symbol from the parameter list"
+msgstr "Deklaration von »%s« überdeckt ein Symbol aus der Parameterliste"
+
+#: java/decl.c:1361
+msgid "%Jlabel '%D' used but not defined"
+msgstr "%JMarke »%D« verwendet, aber nicht definiert"
+
+#: java/decl.c:1366
+msgid "%Jlabel '%D' defined but not used"
+msgstr "%JMarke »%D« definiert, aber nicht verwendet"
+
+#: java/decl.c:1494
+msgid "%JIn %D: overlapped variable and exception ranges at %d"
msgstr ""
-#: java/decl.c:1622
+#: java/decl.c:1572
msgid "bad type in parameter debug info"
msgstr ""
-#: java/decl.c:1632
-#, c-format
-msgid "bad PC range for debug info for local `%s'"
+#: java/decl.c:1581
+msgid "%Jbad PC range for debug info for local '%D'"
msgstr ""
-#: java/expr.c:530
+#: java/expr.c:519
msgid "stack underflow - dup* operation"
msgstr ""
-#: java/expr.c:1534
+#: java/expr.c:1469
#, c-format
msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
msgstr ""
-#: java/expr.c:1563
+#: java/expr.c:1497
#, c-format
msgid "field `%s' not found"
msgstr ""
-#: java/expr.c:1715
+#: java/expr.c:1658
msgid "ret instruction not implemented"
msgstr ""
-#: java/expr.c:1857
+#: java/expr.c:1815
#, c-format
msgid "method '%s' not found in class"
msgstr ""
-#: java/expr.c:2060
+#: java/expr.c:2020
#, c-format
msgid "failed to find class '%s'"
msgstr ""
-#: java/expr.c:2070
+#: java/expr.c:2030
#, c-format
msgid "class '%s' has no method named '%s' matching signature '%s'"
msgstr ""
-#: java/expr.c:2080
+#: java/expr.c:2040
msgid "invokestatic on non static method"
msgstr ""
-#: java/expr.c:2085
+#: java/expr.c:2045
msgid "invokestatic on abstract method"
msgstr ""
-#: java/expr.c:2093
+#: java/expr.c:2053
msgid "invoke[non-static] on static method"
msgstr ""
-#: java/expr.c:2396
+#: java/expr.c:2352
#, c-format
msgid "missing field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2402
+#: java/expr.c:2358
#, c-format
msgid "mismatching signature for field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2425
-#, c-format
-msgid "assignment to final field `%s' not in field's class"
+#: java/expr.c:2380
+msgid "%Jassignment to final field '%D' not in field's class"
msgstr ""
-#: java/expr.c:2430
-#, c-format
-msgid "assignment to final static field `%s' not in class initializer"
+#: java/expr.c:2385
+msgid "%Jassignment to final static field `%D' not in class initializer"
msgstr ""
-#: java/expr.c:2437
-#, c-format
-msgid "assignment to final field `%s' not in constructor"
+#: java/expr.c:2393
+msgid "%Jassignment to final field '%D' not in constructor"
msgstr ""
-#: java/expr.c:2684
+#: java/expr.c:2636
#, c-format
msgid "can't expand %s"
msgstr ""
-#: java/expr.c:2861
+#: java/expr.c:2808
msgid "invalid PC in line number table"
msgstr ""
-#. We've just reached the end of a region of dead code.
-#: java/expr.c:2906
+#: java/expr.c:2854
#, c-format
msgid "unreachable bytecode from %d to before %d"
msgstr ""
-#. We've just reached the end of a region of dead code.
-#: java/expr.c:2943
+#: java/expr.c:2892
#, c-format
msgid "unreachable bytecode from %d to the end of the method"
msgstr ""
#. duplicate code from LOAD macro
-#: java/expr.c:3261
+#: java/expr.c:3206
msgid "unrecogized wide sub-instruction"
msgstr ""
-#: java/jcf-io.c:543
+#: java/jcf-io.c:534
#, c-format
msgid "source file for class `%s' is newer than its matching class file. Source file `%s' used instead"
msgstr ""
-#: java/jcf-parse.c:338
+#: java/jcf-parse.c:330
msgid "bad string constant"
msgstr ""
-#: java/jcf-parse.c:356
+#: java/jcf-parse.c:348
#, c-format
msgid "bad value constant type %d, index %d"
msgstr ""
-#: java/jcf-parse.c:528
+#: java/jcf-parse.c:514
#, c-format
-msgid "can't reopen %s"
-msgstr ""
+msgid "can't reopen %s: %m"
+msgstr "Es ist nicht möglich, »%s« erneut zu öffnen: %m"
-#: java/jcf-parse.c:533
+#: java/jcf-parse.c:519
#, c-format
-msgid "can't close %s"
-msgstr ""
+msgid "can't close %s: %m"
+msgstr "Es ist nicht möglich, »%s« zu schließen: %m"
-#: java/jcf-parse.c:619
+#: java/jcf-parse.c:604
#, c-format
msgid "cannot find file for class %s"
msgstr ""
-#: java/jcf-parse.c:631
+#: java/jcf-parse.c:615
msgid "not a valid Java .class file"
msgstr ""
-#: java/jcf-parse.c:634
+#: java/jcf-parse.c:618
msgid "error while parsing constant pool"
msgstr ""
-#: java/jcf-parse.c:637
+#: java/jcf-parse.c:621
#, c-format
msgid "error in constant pool entry #%d\n"
msgstr ""
#. FIXME - where was first time
-#: java/jcf-parse.c:649
+#: java/jcf-parse.c:633
#, c-format
msgid "reading class %s for the second time from %s"
msgstr ""
-#: java/jcf-parse.c:667
+#: java/jcf-parse.c:651
msgid "error while parsing fields"
msgstr ""
-#: java/jcf-parse.c:670
+#: java/jcf-parse.c:654
msgid "error while parsing methods"
msgstr ""
-#: java/jcf-parse.c:673
+#: java/jcf-parse.c:657
msgid "error while parsing final attributes"
msgstr ""
-#: java/jcf-parse.c:687
+#: java/jcf-parse.c:671
#, c-format
msgid "the `java.lang.Object' that was found in `%s' didn't have the special zero-length `gnu.gcj.gcj-compiled' attribute. This generally means that your classpath is incorrectly set. Use `info gcj \"Input Options\"' to see the info page describing how to set the classpath"
msgstr ""
-#: java/jcf-parse.c:777
+#: java/jcf-parse.c:749
msgid "missing Code attribute"
msgstr ""
-#: java/jcf-parse.c:1014
-msgid "source file seen twice on command line and will be compiled only once"
+#: java/jcf-parse.c:981
+msgid "%Hsource file seen twice on command line and will be compiled only once"
msgstr ""
-#: java/jcf-parse.c:1030
+#: java/jcf-parse.c:997
msgid "no input file specified"
msgstr ""
-#: java/jcf-parse.c:1059
+#: java/jcf-parse.c:1026
#, c-format
-msgid "can't close input file %s"
-msgstr ""
+msgid "can't close input file %s: %m"
+msgstr "die Eingabedatei »%s« kann nicht geschlossen werden: %m"
-#: java/jcf-parse.c:1096
+#: java/jcf-parse.c:1064
#, c-format
msgid "bad zip/jar file %s"
msgstr ""
-#: java/jcf-write.c:2650
+#: java/jcf-parse.c:1236
+#, c-format
+msgid "error while reading %s from zip file"
+msgstr ""
+
+#: java/jcf-write.c:2602
#, c-format
msgid "internal error in generate_bytecode_insn - tree code not implemented: %s"
msgstr ""
-#: java/jcf-write.c:2988
+#: java/jcf-write.c:2934
msgid "field initializer type mismatch"
msgstr ""
-#: java/jcf-write.c:3419
+#: java/jcf-write.c:3389
#, c-format
-msgid "can't create directory %s"
-msgstr ""
+msgid "can't create directory %s: %m"
+msgstr "das Verzeichnis %s kann nicht erzeugt werden: %m"
-#: java/jcf-write.c:3473
+#: java/jcf-write.c:3442
#, c-format
-msgid "can't create %s"
-msgstr "Es ist nicht möglich %s zu erzeugen"
+msgid "can't create %s: %m"
+msgstr "Es ist nicht möglich, %s zu erzeugen: %m"
-#: java/jv-scan.c:187
+#: java/jv-scan.c:185
msgid "only one of `--print-main', `--list-class', and `--complexity' allowed"
msgstr ""
-#: java/jv-scan.c:190
+#: java/jv-scan.c:188
#, c-format
msgid "can't open output file `%s'"
msgstr ""
-#: java/jv-scan.c:224
+#: java/jv-scan.c:222
#, c-format
msgid "file not found `%s'"
msgstr ""
-#: java/jvspec.c:426
+#: java/jvspec.c:418
msgid "can't specify `-D' without `--main'\n"
msgstr ""
-#: java/jvspec.c:429
+#: java/jvspec.c:421
#, c-format
msgid "`%s' is not a valid class name"
msgstr "»%s« ist kein gültiger Klassenname"
-#: java/jvspec.c:435
+#: java/jvspec.c:427
msgid "--resource requires -o"
msgstr "--resource erfordert -o"
-#: java/jvspec.c:442
+#: java/jvspec.c:434
msgid "warning: already-compiled .class files ignored with -C"
msgstr ""
-#: java/jvspec.c:449
+#: java/jvspec.c:441
msgid "cannot specify both -C and -o"
msgstr "-C und -o können nicht zusammen angegeben werden"
-#: java/jvspec.c:461
+#: java/jvspec.c:453
msgid "cannot create temporary file"
msgstr "temporäre Datei konnte nicht angelegt werden"
-#: java/jvspec.c:489
+#: java/jvspec.c:481
msgid "using both @FILE with multiple files not implemented"
msgstr ""
-#: java/jvspec.c:538
+#: java/jvspec.c:530
msgid "cannot specify `main' class when not linking"
msgstr ""
-#: java/lang.c:548
+#: java/lang.c:740
msgid "can't do dependency tracking with input from stdin"
msgstr ""
-#: java/lang.c:564
+#: java/lang.c:756
msgid "couldn't determine target name for dependency tracking"
msgstr ""
@@ -19899,544 +18715,435 @@ msgid ""
"`--encoding=UTF-8' option"
msgstr ""
-#: java/mangle.c:85
+#: java/mangle.c:89
#, c-format
msgid "can't mangle %s"
msgstr ""
-#: java/mangle_name.c:144 java/mangle_name.c:216
+#: java/mangle_name.c:140 java/mangle_name.c:210
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:881
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:962
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1303
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1364
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1574
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1796
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1805
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1816
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1827
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1839
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1854
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1871
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1873
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1945
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2116
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2178
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2330
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2342
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2349
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2356
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2367
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2369
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2407
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2409
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2411
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2432
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2434
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2436
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2452
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2454
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2475
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2477
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2479
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2507
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2509
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2511
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2513
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2531
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2533
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2544
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2555
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2566
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2577
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2588
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2601
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2605
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2607
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2620
+#: java/parse-scan.y:880 java/parse.y:949 java/parse.y:1290 java/parse.y:1351
+#: java/parse.y:1555 java/parse.y:1777 java/parse.y:1786 java/parse.y:1797
+#: java/parse.y:1808 java/parse.y:1820 java/parse.y:1835 java/parse.y:1852
+#: java/parse.y:1854 java/parse.y:1935 java/parse.y:2106 java/parse.y:2168
+#: java/parse.y:2320 java/parse.y:2332 java/parse.y:2339 java/parse.y:2346
+#: java/parse.y:2357 java/parse.y:2359 java/parse.y:2397 java/parse.y:2399
+#: java/parse.y:2401 java/parse.y:2422 java/parse.y:2424 java/parse.y:2426
+#: java/parse.y:2442 java/parse.y:2444 java/parse.y:2465 java/parse.y:2467
+#: java/parse.y:2469 java/parse.y:2497 java/parse.y:2499 java/parse.y:2501
+#: java/parse.y:2503 java/parse.y:2521 java/parse.y:2523 java/parse.y:2534
+#: java/parse.y:2545 java/parse.y:2556 java/parse.y:2567 java/parse.y:2578
+#: java/parse.y:2591 java/parse.y:2595 java/parse.y:2597 java/parse.y:2610
msgid "Missing term"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:883
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:734
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:772
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:797
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:983
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1338
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1550
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1552
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1781
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1807
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1818
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1829
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1841
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1856
+#: java/parse-scan.y:882 java/parse.y:721 java/parse.y:759 java/parse.y:784
+#: java/parse.y:970 java/parse.y:1325 java/parse.y:1531 java/parse.y:1533
+#: java/parse.y:1762 java/parse.y:1788 java/parse.y:1799 java/parse.y:1810
+#: java/parse.y:1822 java/parse.y:1837
msgid "';' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:732
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:770
+#: java/parse.y:719 java/parse.y:757
msgid "Missing name"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:795
+#: java/parse.y:782
msgid "'*' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:809
+#: java/parse.y:796
msgid "Class or interface declaration expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:846
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:848
+#: java/parse.y:833 java/parse.y:835
msgid "Missing class name"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:851
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:855
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:863
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1023
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1284
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1286
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1616
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1867
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1899
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1952
+#: java/parse.y:838 java/parse.y:842 java/parse.y:850 java/parse.y:1010
+#: java/parse.y:1271 java/parse.y:1273 java/parse.y:1597 java/parse.y:1848
+#: java/parse.y:1880 java/parse.y:1942
msgid "'{' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:865
+#: java/parse.y:852
msgid "Missing super class name"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:875
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:891
+#: java/parse.y:862 java/parse.y:878
msgid "Missing interface name"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:977
+#: java/parse.y:964
msgid "Missing variable initializer"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:994
+#: java/parse.y:981
msgid "Invalid declaration"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:997
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1082
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2153
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2175
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2179
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2214
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2291
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2301
+#: java/parse.y:984 java/parse.y:1069 java/parse.y:2143 java/parse.y:2165
+#: java/parse.y:2169 java/parse.y:2204 java/parse.y:2281 java/parse.y:2291
msgid "']' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1001
+#: java/parse.y:988
msgid "Unbalanced ']'"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1037
+#: java/parse.y:1024
msgid "Invalid method declaration, method name required"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1042
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1047
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1052
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2036
+#: java/parse.y:1029 java/parse.y:1034 java/parse.y:1039 java/parse.y:2026
msgid "Identifier expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1057
+#: java/parse.y:1044
msgid "Invalid method declaration, return type required"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1080
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1530
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1537
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1546
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1548
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1576
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1684
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1981
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2034
+#: java/parse.y:1067 java/parse.y:1511 java/parse.y:1518 java/parse.y:1527
+#: java/parse.y:1529 java/parse.y:1557 java/parse.y:1665 java/parse.y:1971
+#: java/parse.y:2024
msgid "')' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1096
+#: java/parse.y:1083
msgid "Missing formal parameter term"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1111
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1116
+#: java/parse.y:1098 java/parse.y:1103
msgid "Missing identifier"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1136
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1145
+#: java/parse.y:1123 java/parse.y:1132
msgid "Missing class type term"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1301
+#: java/parse.y:1288
msgid "Invalid interface type"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1494
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1663
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1665
+#: java/parse.y:1475 java/parse.y:1644 java/parse.y:1646
msgid "':' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1516
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1521
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1526
+#: java/parse.y:1497 java/parse.y:1502 java/parse.y:1507
msgid "Invalid expression statement"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1544
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1572
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1612
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1680
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1748
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1869
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1938
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2028
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2030
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2038
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2274
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2276
+#: java/parse.y:1525 java/parse.y:1553 java/parse.y:1593 java/parse.y:1661
+#: java/parse.y:1729 java/parse.y:1850 java/parse.y:1928 java/parse.y:2018
+#: java/parse.y:2020 java/parse.y:2028 java/parse.y:2264 java/parse.y:2266
msgid "'(' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1614
+#: java/parse.y:1595
msgid "Missing term or ')'"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1661
+#: java/parse.y:1642
msgid "Missing or invalid constant expression"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1682
+#: java/parse.y:1663
msgid "Missing term and ')' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1721
+#: java/parse.y:1702
msgid "Invalid control expression"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1723
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1725
+#: java/parse.y:1704 java/parse.y:1706
msgid "Invalid update expression"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1750
+#: java/parse.y:1731
msgid "Invalid init statement"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1941
+#: java/parse.y:1931
msgid "Missing term or ')' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1983
+#: java/parse.y:1973
msgid "'class' or 'this' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1985
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1987
+#: java/parse.y:1975 java/parse.y:1977
msgid "'class' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2032
+#: java/parse.y:2022
msgid "')' or term expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2151
+#: java/parse.y:2141
msgid "'[' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2229
+#: java/parse.y:2219
msgid "Field expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2286
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2296
+#: java/parse.y:2276 java/parse.y:2286
msgid "Missing term and ']' expected"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2400
+#: java/parse.y:2390
msgid "']' expected, invalid type expression"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2403
+#: java/parse.y:2393
msgid "Invalid type expression"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2515
+#: java/parse.y:2505
msgid "Invalid reference type"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2993
+#: java/parse.y:2977
msgid "Constructor invocation must be first thing in a constructor"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2995
+#: java/parse.y:2979
msgid "Only constructors can invoke constructors"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3004
+#: java/parse.y:2987
#, c-format
msgid ": `%s' JDK1.1(TM) feature"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3064
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3066
+#: java/parse.y:3046 java/parse.y:3048
#, c-format
msgid ""
"%s.\n"
"%s"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6879
+#: java/parse.y:6908
#, c-format
msgid "malformed .zip archive in CLASSPATH: %s"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6950
+#: java/parse.y:6979
#, c-format
msgid "Can't find default package `%s'. Check the CLASSPATH environment variable and the access to the archives"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12352
+#: java/parse.y:12192
#, c-format
msgid "missing static field `%s'"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12357
+#: java/parse.y:12197
#, c-format
msgid "not a static field `%s'"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12400
+#: java/parse.y:12240
#, c-format
msgid "No case for %s"
msgstr ""
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:13365
+#: java/parse.y:13172
#, c-format
msgid "unregistered operator %s"
msgstr ""
-#: java/typeck.c:553
+#: java/typeck.c:530
msgid "junk at end of signature string"
msgstr ""
-#: java/verify.c:479
+#: java/verify.c:471
msgid "bad pc in exception_table"
msgstr ""
-#: java/verify.c:485
-msgid "exception handler inside code that is being protected"
-msgstr ""
-
-#: java/verify.c:1395
+#: java/verify.c:1384
#, c-format
msgid "unknown opcode %d@pc=%d during verification"
msgstr ""
-#: java/verify.c:1465 java/verify.c:1478 java/verify.c:1482
+#: java/verify.c:1454 java/verify.c:1467 java/verify.c:1471
#, c-format
msgid "verification error at PC=%d"
msgstr ""
-#: java/lang-options.h:32
-msgid "Disable automatic array bounds checking"
-msgstr ""
-
-#: java/lang-options.h:34
-msgid "Disable assignability checks for stores into object arrays"
-msgstr ""
-
-#: java/lang-options.h:36
-msgid "Assume native functions are implemented using JNI"
-msgstr ""
-
-#: java/lang-options.h:38
-msgid "Replace system path"
-msgstr ""
-
-#: java/lang-options.h:40
-msgid "Set class path"
-msgstr ""
-
-#: java/lang-options.h:42
-msgid "Set class path (deprecated: use --classpath instead)"
-msgstr ""
-
-#: java/lang-options.h:44
-msgid "Choose class whose main method should be used"
-msgstr ""
-
-#: java/lang-options.h:46
-msgid "Choose input encoding (default comes from locale)"
-msgstr ""
-
-#: java/lang-options.h:48
-msgid "Add directory to class path"
-msgstr ""
-
-#: java/lang-options.h:50
-msgid "Directory where class files should be written"
-msgstr ""
-
-#: java/lang-options.h:52
-msgid "Warn if modifiers are specified when not necessary"
-msgstr ""
-
-#: java/lang-options.h:54
-msgid "Warn if deprecated empty statements are found"
-msgstr ""
-
-#: java/lang-options.h:56
-msgid "Warn if .class files are out of date"
-msgstr ""
-
-#: java/lang-options.h:58
-msgid "Always check for non gcj generated classes archives"
-msgstr ""
-
-#: java/lang-options.h:60
-msgid "Never optimize static class initialization code"
-msgstr ""
-
-#: java/lang-options.h:62
-msgid "Use offset tables for virtual method calls"
-msgstr ""
-
-#: objc/objc-act.c:651
+#: objc/objc-act.c:689
#, c-format
msgid "object does not conform to the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:737 objc/objc-act.c:810
+#: objc/objc-act.c:775 objc/objc-act.c:848
#, c-format
msgid "class `%s' does not implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:914
+#: objc/objc-act.c:951
#, c-format
-msgid "`%s' cannot be statically allocated"
+msgid "statically allocated instance of Objective-C class `%s'"
msgstr ""
-#: objc/objc-act.c:963
+#: objc/objc-act.c:998
#, c-format
msgid "unexpected type for `id' (%s)"
msgstr ""
-#: objc/objc-act.c:968
+#: objc/objc-act.c:1003
msgid "undefined type `id', please import <objc/objc.h>"
msgstr ""
-#: objc/objc-act.c:1019
+#: objc/objc-act.c:1052
#, c-format
msgid "protocol `%s' has circular dependency"
msgstr ""
-#: objc/objc-act.c:1041 objc/objc-act.c:5301
+#: objc/objc-act.c:1074 objc/objc-act.c:5982
#, c-format
msgid "cannot find protocol declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:1289 objc/objc-act.c:5877 objc/objc-act.c:6195
-#: objc/objc-act.c:6244 objc/objc-act.c:6280 objc-parse.y:1799
+#: objc/objc-act.c:1408 objc/objc-act.c:2645 objc/objc-act.c:6513
+#: objc/objc-act.c:6822 objc/objc-act.c:6875 objc/objc-act.c:6900
#, c-format
msgid "cannot find interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:1328
+#: objc/objc-act.c:1423
+#, c-format
+msgid "interface `%s' does not have valid constant string layout"
+msgstr "die Schnittstelle »%s« hat nicht die Form einer konstanten Zeichenkette"
+
+#: objc/objc-act.c:1439
#, c-format
msgid "cannot find reference tag for class `%s'"
msgstr ""
-#: objc/objc-act.c:2050
+#: objc/objc-act.c:2179
#, c-format
msgid "creating selector for non existant method %s"
msgstr ""
-#: objc/objc-act.c:2364
+#: objc/objc-act.c:2389
+#, c-format
+msgid "`%s' is not an Objective-C class name or alias"
+msgstr "»%s« ist kein Klassenname oder Alias in Objective-C"
+
+#: objc/objc-act.c:2500 objc/objc-act.c:2518 objc/objc-act.c:6769
+#: objc/objc-act.c:7059 objc/objc-act.c:7088
+msgid "Objective-C declarations may only appear in global scope"
+msgstr ""
+
+#: objc/objc-act.c:2505
#, c-format
msgid "cannot find class `%s'"
msgstr ""
-#: objc/objc-act.c:2366
+#: objc/objc-act.c:2507
#, c-format
msgid "class `%s' already exists"
msgstr ""
+#: objc/objc-act.c:2532 objc/objc-act.c:6791
+#, c-format
+msgid "`%s' redeclared as different kind of symbol"
+msgstr "»%s« redeklariert als andere Symbolart"
+
#. fatal did not work with 2 args...should fix
-#: objc/objc-act.c:2473
+#: objc/objc-act.c:2680
#, c-format
msgid "cannot find interface declaration for `%s', superclass of `%s'"
msgstr ""
-#: objc/objc-act.c:2480
+#: objc/objc-act.c:2687
#, c-format
msgid "circular inheritance in interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:3566 objc/objc-act.c:3583
-msgid "inconsistent instance variable specification"
+#: objc/objc-act.c:2780 objc/objc-act.c:2924 objc/objc-act.c:3024
+#: objc/objc-act.c:3200 objc/objc-act.c:3240
+msgid "Use `-fobjc-exceptions' to enable Objective-C exception syntax"
msgstr ""
-#: objc/objc-act.c:4580
-msgid "can not use an object as parameter to a method\n"
+#: objc/objc-act.c:2787
+msgid "`@throw;' (rethrow) used outside of a `@catch' block"
msgstr ""
-#: objc/objc-act.c:4780
-#, c-format
-msgid "multiple declarations for method `%s'"
+#: objc/objc-act.c:3027
+msgid "`@catch' parameter is not a known Objective-C class type"
msgstr ""
-#: objc/objc-act.c:4946
-#, c-format
-msgid "invalid receiver type `%s'"
+#: objc/objc-act.c:3036
+msgid "Exception already handled by preceding `@catch(id)'"
msgstr ""
-#: objc/objc-act.c:4977 objc/objc-act.c:5003 objc/objc-act.c:5051
+#: objc/objc-act.c:3041
#, c-format
-msgid "`%s' does not respond to `%s'"
+msgid "Exception of type `%s *' already handled by `@catch (%s *)'"
msgstr ""
-#: objc/objc-act.c:4983 objc/objc-act.c:7318
-#, c-format
-msgid "no super class declared in interface for `%s'"
+#: objc/objc-act.c:3206
+msgid "`@try' without `@catch' or `@finally'"
msgstr ""
-#: objc/objc-act.c:5081
-msgid "cannot find class (factory) method"
+#: objc/objc-act.c:3647
+msgid "%Jtype '%D' does not have a known size"
msgstr ""
-#: objc/objc-act.c:5082 objc/objc-act.c:5126
-#, c-format
-msgid "return type for `%s' defaults to id"
+#: objc/objc-act.c:4256
+msgid "%J%s `%s'"
+msgstr "%J%s: »%s«"
+
+#: objc/objc-act.c:4281 objc/objc-act.c:4300
+msgid "inconsistent instance variable specification"
msgstr ""
-#: objc/objc-act.c:5099
+#: objc/objc-act.c:5303
+msgid "can not use an object as parameter to a method\n"
+msgstr ""
+
+#: objc/objc-act.c:5504
#, c-format
-msgid "method `%s' not implemented by protocol"
+msgid "multiple %s named `%c%s' found"
+msgstr "mehrere %s namens »%c%s« gefunden"
+
+#: objc/objc-act.c:5721
+#, c-format
+msgid "no super class declared in @interface for `%s'"
+msgstr "keine Superklasse im @interface für »%s« deklariert"
+
+#: objc/objc-act.c:5809
+#, c-format
+msgid "invalid receiver type `%s'"
msgstr ""
-#: objc/objc-act.c:5108
-msgid "return type defaults to id"
+#: objc/objc-act.c:5820
+#, c-format
+msgid "`%s' may not respond to `%c%s'"
+msgstr "»%s« antwortet möglicherweise nicht auf »%c%s«"
+
+#: objc/objc-act.c:5825
+#, c-format
+msgid "`%c%s' not implemented by protocol(s)"
+msgstr "»%c%s« nicht von Protokoll(en) implementiert"
+
+#: objc/objc-act.c:5830
+msgid "(Messages without a matching method signature"
msgstr ""
-#: objc/objc-act.c:5125
-msgid "cannot find method"
+#: objc/objc-act.c:5831
+msgid "will be assumed to return `id' and accept"
msgstr ""
-#: objc/objc-act.c:5399
+#: objc/objc-act.c:5832
+msgid "`...' as arguments.)"
+msgstr "»...« als Argumente.)"
+
+#: objc/objc-act.c:6079
#, c-format
msgid "undeclared selector `%s'"
msgstr ""
@@ -20450,310 +19157,2653 @@ 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:5443
+#: objc/objc-act.c:6121
#, c-format
msgid "instance variable `%s' accessed in class method"
msgstr ""
-#: objc/objc-act.c:5678
+#: objc/objc-act.c:6327
#, c-format
-msgid "duplicate definition of class method `%s'"
-msgstr ""
+msgid "duplicate declaration of method `%c%s'"
+msgstr "doppelte Deklaration der Methode »%c%s«"
-#: objc/objc-act.c:5684
+#: objc/objc-act.c:6368
#, c-format
-msgid "duplicate declaration of class method `%s'"
+msgid "duplicate interface declaration for category `%s(%s)'"
msgstr ""
-#: objc/objc-act.c:5720
+#: objc/objc-act.c:6398
#, c-format
-msgid "duplicate definition of instance method `%s'"
-msgstr ""
+msgid "illegal reference type specified for instance variable `%s'"
+msgstr "unzulässiger Referenztyp für Instanzvariable »%s« angegeben"
+
+#: objc/objc-act.c:6414
+#, c-format
+msgid "instance variable `%s' has unknown size"
+msgstr "Instanzvariable »%s« hat unbekannte Größe"
+
+#. vtable pointers are Real Bad(tm), since Obj-C cannot initialize them
+#: objc/objc-act.c:6428
+#, c-format
+msgid "type `%s' has virtual member functions"
+msgstr "der Typ »%s« hat virtuelle Elementfunktionen"
+
+#: objc/objc-act.c:6429
+#, c-format
+msgid "illegal aggregate type `%s' specified for instance variable `%s'"
+msgstr "unzulässiger Aggregattyp »%s« für Instanzvariable »%s« angegeben"
-#: objc/objc-act.c:5726
+#: objc/objc-act.c:6437
#, c-format
-msgid "duplicate declaration of instance method `%s'"
+msgid "type `%s' has a user-defined constructor"
msgstr ""
-#: objc/objc-act.c:5766
+#: objc/objc-act.c:6439
#, c-format
-msgid "duplicate interface declaration for category `%s(%s)'"
+msgid "type `%s' has a user-defined destructor"
+msgstr ""
+
+#: objc/objc-act.c:6440
+msgid "C++ constructors and destructors will not be invoked for Objective-C fields"
msgstr ""
-#: objc/objc-act.c:5852
+#: objc/objc-act.c:6490
#, c-format
msgid "instance variable `%s' is declared private"
msgstr ""
-#: objc/objc-act.c:5899
+#: objc/objc-act.c:6539
+#, c-format
+msgid "instance variable `%s' is %s; this will be a hard error in the future"
+msgstr ""
+
+#: objc/objc-act.c:6546
#, c-format
msgid "instance variable `%s' is declared %s"
msgstr ""
-#: objc/objc-act.c:5909
+#: objc/objc-act.c:6556
msgid "static access to object of type `id'"
msgstr ""
-#: objc/objc-act.c:5934 objc/objc-act.c:6027
+#: objc/objc-act.c:6578 objc/objc-act.c:6666
#, c-format
msgid "incomplete implementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:5938 objc/objc-act.c:6032
+#: objc/objc-act.c:6582 objc/objc-act.c:6671
#, c-format
msgid "incomplete implementation of category `%s'"
msgstr ""
-#: objc/objc-act.c:5943 objc/objc-act.c:6037
+#: objc/objc-act.c:6587 objc/objc-act.c:6676
#, c-format
msgid "method definition for `%c%s' not found"
msgstr ""
-#: objc/objc-act.c:6081
+#: objc/objc-act.c:6717
#, c-format
msgid "%s `%s' does not fully implement the `%s' protocol"
msgstr "%s »%s« implementiert das »%s«-Protokoll nicht vollständig"
-#: objc/objc-act.c:6139 objc/objc-act.c:8249
+#: objc/objc-act.c:6775 objc/objc-act.c:8803
msgid "`@end' missing in implementation context"
msgstr ""
-#: objc/objc-act.c:6167
+#: objc/objc-act.c:6805
#, c-format
msgid "reimplementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:6209
+#: objc/objc-act.c:6836
#, c-format
msgid "conflicting super class name `%s'"
msgstr ""
-#: objc/objc-act.c:6224
+#: objc/objc-act.c:6838
+#, c-format
+msgid "previous declaration of `%s'"
+msgstr "vorherige Deklaration von »%s«"
+
+#: objc/objc-act.c:6852 objc/objc-act.c:6854
#, c-format
msgid "duplicate interface declaration for class `%s'"
msgstr ""
-#: objc/objc-act.c:6506
+#: objc/objc-act.c:7121
#, c-format
msgid "duplicate declaration for protocol `%s'"
msgstr ""
-#: objc/objc-act.c:7363
-msgid "[super ...] must appear in a method context"
+#. Add a readable method name to the warning.
+#: objc/objc-act.c:7613
+msgid "%J%s `%c%s'"
msgstr ""
-#: objc/objc-act.c:8354 objc/objc-act.c:8370
+#: objc/objc-act.c:7908
#, c-format
-msgid "potential selector conflict for method `%s'"
+msgid "no super class declared in interface for `%s'"
msgstr ""
-#: objc-parse.y:2655
+#: objc/objc-act.c:7956
+msgid "[super ...] must appear in a method context"
+msgstr ""
+
+#: objc/objc-parse.y:2700
msgid "`@end' must appear in an implementation context"
msgstr ""
-#: objc-parse.y:2931
+#: objc/objc-parse.y:2913
msgid "method definition not in class context"
msgstr ""
-#: objc/lang-options.h:27
-msgid "Dump decls to a .decl file"
+#: options.c:24
+msgid "Display this information"
+msgstr "Diese Informationen anzeigen"
+
+#: options.c:30
+msgid "--param <param>=<value>\tSet paramter <param> to value. See below for a complete list of parameters"
+msgstr ""
+
+#: options.c:39
+msgid "-A<question>=<answer>\tAssert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>"
+msgstr ""
+
+#: options.c:42
+msgid "Do not discard comments"
+msgstr "Kommentare nicht verwerfen"
+
+#: options.c:45
+msgid "Do not discard comments in macro expansions"
+msgstr ""
+
+#: options.c:48
+msgid "-D<macro>[=<val>]\tDefine a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1"
+msgstr ""
+
+#: options.c:54
+msgid "-G<number>\tPut global and static data smaller than <number> bytes into a special section (on some targets)"
+msgstr ""
+
+#: options.c:57
+msgid "Print the name of header files as they are used"
+msgstr ""
+
+#: options.c:66
+msgid "Generate make dependencies and compile"
+msgstr ""
+
+#: options.c:75
+msgid "Treat missing header files as generated files"
+msgstr ""
+
+#: options.c:81
+msgid "Like -MD but ignore system header files"
+msgstr ""
+
+#: options.c:90
+msgid "-MQ <target>\tAdd a MAKE-quoted target"
+msgstr ""
+
+#: options.c:96
+msgid "-O<number>\tSet optimization level to <number>"
+msgstr ""
+
+#: options.c:99
+msgid "Optimize for space rather than speed"
+msgstr ""
+
+#: options.c:102
+msgid "Do not generate #line directives"
+msgstr ""
+
+#: options.c:105
+msgid "-U<macro>\tUndefine <macro>"
+msgstr ""
+
+#: options.c:108
+msgid "This switch is deprecated; use -Wextra instead"
+msgstr ""
+
+#: options.c:114
+msgid "Warn about returning structures, unions or arrays"
+msgstr ""
+
+#: options.c:120
+msgid "Warn about casting functions to incompatible types"
+msgstr ""
+
+#: options.c:123
+msgid "Warn about pointer casts which increase alignment"
+msgstr ""
+
+#: options.c:126
+msgid "Warn about casts which discard qualifiers"
+msgstr ""
+
+#: options.c:129
+msgid "Warn about subscripts whose type is \"char\""
+msgstr "Vor Indizes mit Typ \"char\" warnen"
+
+#: options.c:138
+msgid "Warn about possibly confusing type conversions"
+msgstr ""
+
+#: options.c:141
+msgid "Warn when all constructors and destructors are private"
+msgstr ""
+
+#: options.c:144
+msgid "Warn when a declaration is found after a statement"
+msgstr ""
+
+#: options.c:147
+msgid "Warn if deprecated class, method, or field is used"
+msgstr ""
+
+#: options.c:150
+msgid "Warn about uses of __attribute__((deprecated)) declarations"
+msgstr ""
+
+#: options.c:153
+msgid "Warn when an optimization pass is disabled"
+msgstr ""
+
+#: options.c:156
+msgid "Warn about compile-time integer division by zero"
+msgstr ""
+
+#: options.c:159
+msgid "Warn about violations of Effective C++ style rules"
+msgstr ""
+
+#: options.c:162
+msgid "Warn about stray tokens after #elif and #endif"
+msgstr ""
+
+#: options.c:165
+msgid "Treat all warnings as errors"
+msgstr ""
+
+#: options.c:168
+msgid "Make implicit function declarations an error"
+msgstr "Fehler bei impliziten Funktionsdeklaration erzeugen"
+
+#: options.c:171
+msgid "Print extra (possibly unwanted) warnings"
+msgstr ""
+
+#: options.c:174
+msgid "Warn if deprecated empty statements are found"
+msgstr ""
+
+#: options.c:177
+msgid "Warn if testing floating point numbers for equality"
+msgstr ""
+
+#: options.c:180
+msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
+msgstr ""
+
+#: options.c:183
+msgid "Warn if passing too many arguments to a function for its format string"
+msgstr "Bei zu vielen Argumenten für eine Funktion (anhand Formatzeichenkette) warnen"
+
+#: options.c:186
+msgid "Warn about format strings that are not literals"
+msgstr ""
+
+#: options.c:189
+msgid "Warn about possible security problems with format functions"
+msgstr ""
+
+#: options.c:192
+msgid "Warn about strftime formats yielding 2-digit years"
+msgstr ""
+
+#: options.c:201
+msgid "Enable warnings about inter-procedural problems"
+msgstr ""
+
+#: options.c:207
+msgid "Warn about implicit function declarations"
+msgstr ""
+
+#: options.c:210
+msgid "Warn when a declaration does not specify a type"
+msgstr ""
+
+#: options.c:216
+msgid "Warn about variables which are initialized to themselves."
+msgstr ""
+
+#: options.c:219
+msgid "Warn when an inlined function cannot be inlined"
+msgstr ""
+
+#: options.c:222
+msgid "Warn about invalid uses of the \"offsetof\" macro"
+msgstr ""
+
+#: options.c:225
+msgid "Warn about PCH files that are found but not used"
+msgstr ""
+
+#: options.c:228
+msgid "-Wlarger-than-<number>\tWarn if an object is larger than <number> bytes"
+msgstr ""
+
+#: options.c:231
+msgid "Do not warn about using \"long long\" when -pedantic"
+msgstr ""
+
+#: options.c:234
+msgid "Warn about suspicious declarations of \"main\""
+msgstr "Vor verdächtigen Deklarationen von \"main\" warnen"
+
+#: options.c:237
+msgid "Warn about possibly missing braces around initializers"
+msgstr ""
+
+#: options.c:240
+msgid "Warn about global functions without previous declarations"
+msgstr "Vor globalen Funktionen ohne vorherige Deklaration warnen"
+
+#: options.c:243
+msgid "Warn about functions which might be candidates for format attributes"
+msgstr ""
+
+#: options.c:246
+msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
+msgstr "Vor Funktionen, die Kandidaten für __attribute__((noreturn)) sind, warnen"
+
+#: options.c:249
+msgid "Warn about global functions without prototypes"
+msgstr ""
+
+#: options.c:252
+msgid "Warn about use of multi-character character constants"
+msgstr "Bei Verwendung von Zeichenkonstanten mit mehreren Zeichen warnen"
+
+#: options.c:255
+msgid "Warn about \"extern\" declarations not at file scope"
+msgstr "Vor \"extern\"-Deklarationen außerhalb des Dateisichtbarkeitsbereiches warnen"
+
+#: options.c:258
+msgid "Warn when non-templatized friend functions are declared within a template"
+msgstr ""
+
+#: options.c:261
+msgid "Warn about non-virtual destructors"
+msgstr ""
+
+#: options.c:267
+msgid "Warn if a C-style cast is used in a program"
+msgstr ""
+
+#: options.c:270
+msgid "Warn if an old-style parameter definition is used"
+msgstr ""
+
+#: options.c:273
+msgid "Warn if .class files are out of date"
+msgstr ""
+
+#: options.c:276
+msgid "Warn about overloaded virtual function names"
+msgstr ""
+
+#: options.c:279
+msgid "Warn when the packed attribute has no effect on struct layout"
+msgstr ""
+
+#: options.c:282
+msgid "Warn when padding is required to align structure members"
+msgstr ""
+
+#: options.c:285
+msgid "Warn about possibly missing parentheses"
+msgstr ""
+
+#: options.c:288
+msgid "Warn when converting the type of pointers to member functions"
+msgstr ""
+
+#: options.c:291
+msgid "Warn about function pointer arithmetic"
+msgstr ""
+
+#: options.c:294
+msgid "Warn if inherited methods are unimplemented"
+msgstr ""
+
+#: options.c:297
+msgid "Warn about multiple declarations of the same object"
+msgstr ""
+
+#: options.c:300
+msgid "Warn if modifiers are specified when not necessary"
+msgstr ""
+
+#: options.c:303
+msgid "Warn when the compiler reorders code"
+msgstr ""
+
+#: options.c:306
+msgid "Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)"
+msgstr ""
+
+#: options.c:309
+msgid "Warn if a selector has multiple methods"
+msgstr ""
+
+#: options.c:312
+msgid "Warn about possible violations of sequence point rules"
+msgstr ""
+
+#: options.c:315
+msgid "Warn when one local variable shadows another"
+msgstr ""
+
+#: options.c:318
+msgid "Warn about signed-unsigned comparisons"
+msgstr ""
+
+#: options.c:321
+msgid "Warn when overload promotes from unsigned to signed"
+msgstr ""
+
+#: options.c:324
+msgid "Warn about code which might break strict aliasing rules"
+msgstr "Vor Code warnen, der strict-aliasing-Regeln verletzen könnte"
+
+#: options.c:327
+msgid "Warn about unprototyped function declarations"
+msgstr "Vor Funktionsdeklarationen ohne Prototyp warnen"
+
+#: options.c:330
+msgid "Warn about constructs with surprising meanings"
+msgstr ""
+
+#: options.c:333
+msgid "Warn about enumerated switches, with no default, missing a case"
+msgstr ""
+
+#: options.c:336
+msgid "Warn about enumerated switches missing a \"default:\" statement"
+msgstr ""
+
+#: options.c:339
+msgid "Warn about all enumerated switches missing a specific case"
+msgstr ""
+
+#: options.c:342
+msgid "Warn when synthesis behavior differs from Cfront"
+msgstr ""
+
+#: options.c:345
+msgid "Do not suppress warnings from system headers"
+msgstr ""
+
+#: options.c:348
+msgid "Warn about features not present in traditional C"
+msgstr "Vor Sprachmerkmalen, die in traditionellem C nicht verfügbar sind, warnen"
+
+#: options.c:357
+msgid "Warn if an undefined macro is used in an #if directive"
+msgstr ""
+
+#: options.c:360
+msgid "Warn about uninitialized automatic variables"
+msgstr ""
+
+#: options.c:363
+msgid "Warn about unrecognized pragmas"
+msgstr ""
+
+#: options.c:366
+msgid "Warn about code that will never be executed"
+msgstr ""
+
+#: options.c:369
+msgid "Enable all -Wunused- warnings"
+msgstr ""
+
+#: options.c:372
+msgid "Warn when a function is unused"
+msgstr ""
+
+#: options.c:375
+msgid "Warn when a label is unused"
+msgstr ""
+
+#: options.c:378
+msgid "Warn about macros defined in the main file that are not used"
+msgstr ""
+
+#: options.c:381
+msgid "Warn when a function parameter is unused"
+msgstr ""
+
+#: options.c:384
+msgid "Warn when an expression value is unused"
+msgstr ""
+
+#: options.c:387
+msgid "Warn when a variable is unused"
+msgstr ""
+
+#: options.c:390
+msgid "Give strings the type \"array of char\""
+msgstr ""
+
+#: options.c:393
+msgid "A synonym for -std=c89. In a future version of GCC it will become synonymous with -std=c99 instead"
+msgstr ""
+
+#: options.c:396
+msgid "-aux-info <file>\tEmit declaration information into <file>"
+msgstr ""
+
+#: options.c:408
+msgid "-d<letters>\tEnable dumps from specific passes of the compiler"
+msgstr ""
+
+#: options.c:411
+msgid "-dumpbase <file>\tSet the file basename to be used for dumps"
+msgstr ""
+
+#: options.c:414
+msgid "--CLASSPATH\tDeprecated; use --classpath instead"
+msgstr ""
+
+#: options.c:429
+msgid "Enforce class member access control semantics"
+msgstr ""
+
+#: options.c:432
+msgid "Align the start of functions"
+msgstr ""
+
+#: options.c:438
+msgid "Align labels which are only reached by jumping"
+msgstr ""
+
+#: options.c:444
+msgid "Align all labels"
+msgstr ""
+
+#: options.c:450
+msgid "Align the start of loops"
+msgstr ""
+
+#: options.c:459
+msgid "Change when template instances are emitted"
+msgstr ""
+
+#: options.c:462
+msgid "Specify that arguments may alias each other and globals"
+msgstr ""
+
+#: options.c:465
+msgid "Assume arguments may alias globals but not each other"
+msgstr ""
+
+#: options.c:468
+msgid "Assume arguments alias neither each other nor globals"
+msgstr ""
+
+#: options.c:471
+msgid "Recognize the \"asm\" keyword"
+msgstr ""
+
+#: options.c:483
+msgid "Generate unwind tables that are exact at each instruction boundary"
+msgstr ""
+
+#: options.c:486
+msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements"
+msgstr ""
+
+#: options.c:489
+msgid "Backslashes in character and hollerith constants are special (not C-style)"
+msgstr ""
+
+#: options.c:492
+msgid "Delete libU77 intrinsics with bad interfaces"
+msgstr ""
+
+#: options.c:495
+msgid "Disable libU77 intrinsics with bad interfaces"
+msgstr ""
+
+#: options.c:498
+msgid "Enable libU77 intrinsics with bad interfaces"
+msgstr ""
+
+#: options.c:501
+msgid "Hide libU77 intrinsics with bad interfaces"
+msgstr ""
+
+#: options.c:504
+msgid "--bootclasspath=<path>\tReplace system path"
+msgstr ""
+
+#: options.c:507
+msgid "Generate code to check bounds before indexing arrays"
+msgstr ""
+
+#: options.c:510
+msgid "Replace add, compare, branch with branch on count register"
+msgstr ""
+
+#: options.c:513
+msgid "Use profiling information for branch probabilities"
+msgstr ""
+
+#: options.c:516
+msgid "Perform branch target load optimization before prologue / epilogue threading"
+msgstr ""
+
+#: options.c:519
+msgid "Perform branch target load optimization after prologue / epilogue threading"
+msgstr ""
+
+#: options.c:522
+msgid "Recognize built-in functions"
+msgstr "Eingebaute Funktionen erkennen"
+
+#: options.c:528
+msgid "-fcall-saved-<register>\tMark <register> as being preserved across functions"
+msgstr ""
+
+#: options.c:531
+msgid "-fcall-used-<register>\tMark <register> as being corrupted by function calls"
+msgstr ""
+
+#: options.c:534
+msgid "Save registers around function calls"
+msgstr ""
+
+#: options.c:537
+msgid "Program written in strict mixed-case"
+msgstr ""
+
+#: options.c:540
+msgid "Compile as if program written in lowercase"
+msgstr ""
+
+#: options.c:543
+msgid "Preserve case used in program"
+msgstr "Im Programm verwendete Groß-/Kleinschreibung beibehalten"
+
+#: options.c:546
+msgid "Program written in lowercase"
+msgstr ""
+
+#: options.c:549
+msgid "Program written in uppercase"
+msgstr ""
+
+#: options.c:552
+msgid "Compile as if program written in uppercase"
+msgstr ""
+
+#: options.c:555
+msgid "Check the return value of new"
+msgstr ""
+
+#: options.c:561
+msgid "--classpath=<path>\tSet class path"
+msgstr ""
+
+#: options.c:564
+msgid "Do not put uninitialized globals in the common section"
+msgstr ""
+
+#: options.c:570
+msgid "Allow the arguments of the '?' operator to have different types"
+msgstr ""
+
+#: options.c:573
+msgid "Reduce the size of object files"
+msgstr ""
+
+#: options.c:576
+msgid "Make string literals \"const char[]\" not \"char[]\""
+msgstr ""
+
+#: options.c:579
+msgid "-fconst-string-class=<name>\tUse class <name> for constant strings"
+msgstr ""
+
+#: options.c:582
+msgid "Perform a register copy-propagation optimization pass"
+msgstr ""
+
+#: options.c:585
+msgid "Perform cross-jumping optimization"
+msgstr ""
+
+#: options.c:588
+msgid "When running CSE, follow jumps to their targets"
+msgstr ""
+
+#: options.c:591
+msgid "When running CSE, follow conditional jumps"
+msgstr ""
+
+#: options.c:594
+msgid "Place data items into their own section"
+msgstr ""
+
+#: options.c:597
+msgid "Emit special debugging information for COMMON and EQUIVALENCE (disabled)"
+msgstr ""
+
+#: options.c:600
+msgid "Inline member functions by default"
+msgstr "Standardmäßig »inline«-Elementfunktionen"
+
+#: options.c:603
+msgid "Defer popping functions args from stack until later"
+msgstr ""
+
+#: options.c:606
+msgid "Attempt to fill delay slots of branch instructions"
+msgstr ""
+
+#: options.c:609
+msgid "Delete useless null pointer checks"
+msgstr ""
+
+#: options.c:612
+msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
+msgstr ""
+
+#: options.c:615
+msgid "Allow '$' in symbol names"
+msgstr ""
+
+#: options.c:618
+msgid "Permit '$' as an identifier character"
+msgstr "'$' als Bezeichnerzeichen zulassen"
+
+#: options.c:624
+msgid "Suppress output of instruction numbers and line number notes in debugging dumps"
+msgstr ""
+
+#: options.c:630
+msgid "Perform DWARF2 duplicate elimination"
+msgstr ""
+
+#: options.c:633 options.c:636
+msgid "Perform unused type elimination in debug info"
+msgstr ""
+
+#: options.c:645
+msgid "Have front end emulate COMPLEX arithmetic to avoid bugs"
+msgstr ""
+
+#: options.c:648
+msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)"
+msgstr ""
+
+#: options.c:651
+msgid "Generate code to check exception specifications"
+msgstr "Code zur Überprüfung von Exception-Spezifikationen erzeugen"
+
+#: options.c:657
+msgid "Enable exception handling"
+msgstr ""
+
+#: options.c:660
+msgid "-fexec-charset=<cset>\tConvert all strings and character constants to character set <cset>"
+msgstr ""
+
+#: options.c:663
+msgid "Perform a number of minor, expensive optimizations"
+msgstr ""
+
+#: options.c:672
+msgid "f2c-compatible code can be generated"
+msgstr ""
+
+#: options.c:675
+msgid "Delete non-FORTRAN-77 intrinsics f2c supports"
+msgstr ""
+
+#: options.c:678
+msgid "Disable non-FORTRAN-77 intrinsics f2c supports"
+msgstr ""
+
+#: options.c:681
+msgid "Enable non-FORTRAN-77 intrinsics f2c supports"
+msgstr ""
+
+#: options.c:684
+msgid "Hide non-FORTRAN-77 intrinsics f2c supports"
+msgstr ""
+
+#: options.c:687
+msgid "Unsupported; generate libf2c-calling code"
+msgstr ""
+
+#: options.c:690
+msgid "Program is written in typical FORTRAN 66 dialect"
+msgstr ""
+
+#: options.c:693
+msgid "Program is written in typical Unix-f77 dialect"
+msgstr ""
+
+#: options.c:696
+msgid "Program is written in Fortran-90-ish dialect"
+msgstr ""
+
+#: options.c:699
+msgid "Delete non-FORTRAN-77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:702
+msgid "Disable non-FORTRAN-77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:705
+msgid "Enable non-FORTRAN-77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:708
+msgid "Hide non-FORTRAN-77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:720
+msgid "Assume no NaNs or infinities are generated"
+msgstr ""
+
+#: options.c:723
+msgid "-ffixed-<register>\tMark <register> as being unavailable to the compiler"
+msgstr ""
+
+#: options.c:729
+msgid "ffixed-line-length-<number>\tSet the maximum line length to <number>"
+msgstr ""
+
+#: options.c:732
+msgid "Unsupported; affects code generation of arrays"
+msgstr ""
+
+#: options.c:735
+msgid "Do not store floats in registers"
+msgstr ""
+
+#: options.c:738
+msgid "Scope of for-init-statement variables is local to the loop"
+msgstr ""
+
+#: options.c:741
+msgid "Copy memory address constants into registers before use"
+msgstr ""
+
+#: options.c:744
+msgid "Always check for non gcj generated classes archives"
+msgstr ""
+
+#: options.c:747
+msgid "Copy memory operands into registers before use"
+msgstr ""
+
+#: options.c:750
+msgid "Generate code to check subscript and substring bounds"
+msgstr ""
+
+#: options.c:753
+msgid "Program is written in Fortran-90-ish free form"
+msgstr ""
+
+#: options.c:756
+msgid "Do not assume that standard C libraries and \"main\" exist"
+msgstr ""
+
+#: options.c:759
+msgid "Allow function addresses to be held in registers"
+msgstr ""
+
+#: options.c:762
+msgid "Place each function into its own section"
+msgstr "Jede Funktion in ihren eigenen Abschnitt platzieren"
+
+#: options.c:765
+msgid "Perform global common subexpression elimination"
+msgstr ""
+
+#: options.c:768
+msgid "Perform redundant load after store elimination in global common subexpression elimination"
+msgstr ""
+
+#: options.c:771
+msgid "Perform enhanced load motion during global common subexpression elimination"
+msgstr ""
+
+#: options.c:774
+msgid "Perform store motion after global common subexpression elimination"
+msgstr ""
+
+#: options.c:777
+msgid "Enable fatal diagnostics about inter-procedural problems"
+msgstr ""
+
+#: options.c:780
+msgid "Delete non-FORTRAN-77 intrinsics g77 supports"
+msgstr ""
+
+#: options.c:783
+msgid "Disable non-FORTRAN 77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:786
+msgid "Enable non-FORTRAN 77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:789
+msgid "Hide non-FORTRAN 77 intrinsics F90 supports"
+msgstr ""
+
+#: options.c:792
+msgid "Recognize GNU-defined keywords"
msgstr ""
-#: objc/lang-options.h:29
+#: options.c:795
msgid "Generate code for GNU runtime environment"
msgstr "Code für die GNU-Laufzeitumgebung erzeugen"
-#: objc/lang-options.h:32
-msgid "Generate code for NeXT runtime environment"
+#: options.c:798
+msgid "Enable guessing of branch probabilities"
msgstr ""
-#: objc/lang-options.h:35
-msgid "Warn if a selector has multiple methods"
+#: options.c:813
+msgid "Assume normal C execution environment"
msgstr ""
-#: objc/lang-options.h:39
-msgid "Do not warn if inherited methods are unimplemented"
+#: options.c:816
+msgid "Enable support for huge objects"
msgstr ""
-#: objc/lang-options.h:41
-msgid "Generate C header of platform specific features"
-msgstr "C-Header mit Plattform-spezifischen Merkmalen erzeugen"
+#: options.c:819
+msgid "Process #ident directives"
+msgstr ""
-#: objc/lang-options.h:43
-msgid "Specify the name of the class for constant strings"
+#: options.c:822
+msgid "Perform conversion of conditional jumps to branchless equivalents"
msgstr ""
-#. This is the contribution to the `lang_options' array in gcc.c for
-#. treelang.
-#: treelang/lang-options.h:26
-msgid "(debug) trace parsing process"
+#: options.c:825
+msgid "Perform conversion of conditional jumps to conditional execution"
msgstr ""
-#: treelang/lang-options.h:27
-msgid "(debug) trace lexical analysis"
+#: options.c:828
+msgid "Export functions even if they can be inlined"
msgstr ""
-#: config/rs6000/darwin.h:62
-msgid " conflicting code gen style switches are used"
+#: options.c:831
+msgid "Emit implicit instantiations of inline templates"
msgstr ""
-#: config/i386/mingw32.h:85 config/i386/cygwin.h:171
-msgid "shared and mdll are not compatible"
+#: options.c:834
+msgid "Emit implicit instantiations of templates"
msgstr ""
-#: java/lang-specs.h:33
-msgid "-fjni and -femit-class-files are incompatible"
+#: options.c:837
+msgid "Use offset tables for virtual method calls"
msgstr ""
-#: java/lang-specs.h:34
-msgid "-fjni and -femit-class-file are incompatible"
+#: options.c:840
+msgid "Do not generate .size directives"
msgstr ""
-#: java/lang-specs.h:35 java/lang-specs.h:36
-msgid "-femit-class-file should used along with -fsyntax-only"
+#: options.c:843
+msgid "Initialize local vars and arrays to zero"
msgstr ""
-#: ada/lang-specs.h:38 java/jvspec.c:77 gcc.c:716
-msgid "-pg and -fomit-frame-pointer are incompatible"
+#: options.c:846
+msgid "Pay attention to the \"inline\" keyword"
msgstr ""
-#: ada/lang-specs.h:41
-msgid "-c or -S required for Ada"
+#: options.c:855
+msgid "-finline-limit=<number>\tLimit the size of inlined functions to <number>"
msgstr ""
-#: config/darwin.h:212
-msgid "-current_version only allowed with -dynamiclib"
+#: options.c:858
+msgid "-finput-charset=<cset> Specify the default character set for source files."
msgstr ""
-#: config/darwin.h:215
-msgid "-install_name only allowed with -dynamiclib"
+#: options.c:861
+msgid "Instrument function entry and exit with profiling calls"
msgstr ""
-#: config/darwin.h:220
-msgid "-bundle not allowed with -dynamiclib"
+#: options.c:864
+msgid "Intrinsics letters in arbitrary cases"
msgstr ""
-#: config/darwin.h:221
-msgid "-bundle_loader not allowed with -dynamiclib"
+#: options.c:867
+msgid "Intrinsics spelled as e.g. SqRt"
msgstr ""
-#: config/darwin.h:222
-msgid "-client_name not allowed with -dynamiclib"
+#: options.c:870
+msgid "Intrinsics in lowercase"
msgstr ""
-#: config/darwin.h:225
-msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
+#: options.c:873
+msgid "Intrinsics in uppercase"
msgstr ""
-#: config/darwin.h:226
-msgid "-force_flat_namespace not allowed with -dynamiclib"
+#: options.c:876
+msgid "Assume native functions are implemented using JNI"
msgstr ""
-#: config/darwin.h:228
-msgid "-keep_private_externs not allowed with -dynamiclib"
-msgstr "-keep_private_externs ist mit -dynamiclib nicht erlaubt"
+#: options.c:879
+msgid "Generate code for functions even if they are fully inlined"
+msgstr ""
-#: config/darwin.h:229
-msgid "-private_bundle not allowed with -dynamiclib"
-msgstr "-private_bundle ist mit -dynamiclib nicht erlaubt"
+#: options.c:882
+msgid "Emit static const variables even if they are not used"
+msgstr ""
-#: config/sparc/freebsd.h:34 config/ia64/freebsd.h:23
-#: config/alpha/freebsd.h:44 config/rs6000/sysv4.h:1107
-#: config/i386/freebsd-aout.h:213
-msgid "`-p' not supported; use `-pg' and gprof(1)"
-msgstr "»-p« wird nicht unterstützt; verwenden Sie »-pg« und gprof(1)"
+#: options.c:888
+msgid "Give external symbols a leading underscore"
+msgstr ""
-#: config/sparc/linux64.h:197 config/sparc/linux64.h:208
-#: config/sparc/netbsd-elf.h:163 config/sparc/netbsd-elf.h:182
-#: config/sparc/sol2-bi.h:168 config/sparc/sol2-bi.h:178
-msgid "may not use both -m32 and -m64"
-msgstr "-m32 und -m64 können nicht zusammen angegeben werden"
+#: options.c:891
+msgid "Perform loop optimizations"
+msgstr ""
+
+#: options.c:894
+msgid "Language keyword letters in arbitrary cases"
+msgstr ""
+
+#: options.c:897
+msgid "Language keywords spelled as e.g. IOStat"
+msgstr ""
+
+#: options.c:900
+msgid "Language keywords in lowercase"
+msgstr ""
+
+#: options.c:903
+msgid "Language keywords in uppercase"
+msgstr ""
+
+#: options.c:906
+msgid "Set errno after built-in math functions"
+msgstr ""
+
+#: options.c:909
+msgid "Report on permanent memory allocation"
+msgstr ""
+
+#: options.c:912
+msgid "Attempt to merge identical constants and constant variables"
+msgstr ""
+
+#: options.c:915
+msgid "Attempt to merge identical constants across compilation units"
+msgstr ""
+
+#: options.c:918
+msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line. 0 suppresses line-wrapping"
+msgstr ""
+
+#: options.c:921
+msgid "Delete MIL-STD 1753 intrinsics"
+msgstr ""
-#: config/arm/arm.h:178
+#: options.c:924
+msgid "Disable MIL-STD 1753 intrinsics"
+msgstr ""
+
+#: options.c:927
+msgid "Enable MIL-STD 1753 intrinsics"
+msgstr ""
+
+#: options.c:930
+msgid "Hide MIL-STD 1753 intrinsics"
+msgstr ""
+
+#: options.c:933
+msgid "Force all loop invariant computations out of loops"
+msgstr ""
+
+#: options.c:936
+msgid "Don't warn about uses of Microsoft extensions"
+msgstr ""
+
+#: options.c:945
+msgid "Use graph-coloring register allocation"
+msgstr ""
+
+#: options.c:948
+msgid "Generate code for NeXT (Apple Mac OS X) runtime environment"
+msgstr "Code für die NeXT (Apple Mac OS X) Laufzeitumgebung erzeugen"
+
+#: options.c:951
+msgid "Assume that receivers of Objective-C messages may be nil"
+msgstr ""
+
+#: options.c:954
+msgid "Support synchronous non-call exceptions"
+msgstr ""
+
+#: options.c:963
+msgid "Enable Objective-C exception and synchronization syntax"
+msgstr ""
+
+#: options.c:966 options.c:1290
+msgid "Perform loop unrolling for all loops"
+msgstr ""
+
+#: options.c:969 options.c:1293
+msgid "Perform loop unrolling when iteration count is known"
+msgstr ""
+
+#: options.c:972
+msgid "When possible do not generate stack frames"
+msgstr ""
+
+#: options.c:975
+msgid "Take at least one trip through each iterative DO loop"
+msgstr ""
+
+#: options.c:978
+msgid "Recognize C++ kewords like \"compl\" and \"xor\""
+msgstr ""
+
+#: options.c:981
+msgid "Do the full register move optimization pass"
+msgstr ""
+
+#: options.c:984
+msgid "Optimize sibling and tail recursive calls"
+msgstr ""
+
+#: options.c:987
+msgid "Enable optimization of static class initialization code"
+msgstr ""
+
+#: options.c:990
+msgid "Enable optional diagnostics"
+msgstr ""
+
+#: options.c:996
+msgid "Pack structure members together without holes"
+msgstr ""
+
+#: options.c:999
+msgid "Return small aggregates in memory, not registers"
+msgstr ""
+
+#: options.c:1005
+msgid "Warn about use of (only a few for now) Fortran extensions"
+msgstr ""
+
+#: options.c:1008
+msgid "Perform loop peeling"
+msgstr ""
+
+#: options.c:1011
+msgid "Enable machine specific peephole optimizations"
+msgstr ""
+
+#: options.c:1014
+msgid "Enable an RTL peephole pass before sched2"
+msgstr ""
+
+#: options.c:1017
+msgid "Downgrade conformance errors to warnings"
+msgstr ""
+
+#: options.c:1020
+msgid "Generate position-independent code if possible"
+msgstr ""
+
+#: options.c:1023
+msgid "Generate position-independent code for executables if possible"
+msgstr ""
+
+#: options.c:1026
+msgid "Generate prefetch instructions, if available, for arrays in loops"
+msgstr ""
+
+#: options.c:1032
+msgid "Enable basic program profiling code"
+msgstr ""
+
+#: options.c:1035
+msgid "Insert arc-based program profiling code"
+msgstr ""
+
+#: options.c:1038
+msgid "Enable common options for generating profile info for profile feedback directed optimizations"
+msgstr ""
+
+#: options.c:1041
+msgid "Enable common options for performing profile feedback directed optimizations"
+msgstr ""
+
+#: options.c:1044
+msgid "Insert code to profile values of expressions"
+msgstr ""
+
+#: options.c:1050
+msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
+msgstr ""
+
+#: options.c:1053
+msgid "Strength reduce all loop general induction variables"
+msgstr ""
+
+#: options.c:1056
+msgid "Return small aggregates in registers"
+msgstr ""
+
+#: options.c:1059
+msgid "Enables a register move optimization"
+msgstr ""
+
+#: options.c:1062
+msgid "Perform a register renaming optimization pass"
+msgstr ""
+
+#: options.c:1065
+msgid "Reorder basic blocks to improve code placement"
+msgstr ""
+
+#: options.c:1068
+msgid "Reorder functions to improve code placement"
+msgstr ""
+
+#: options.c:1071
+msgid "Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime"
+msgstr ""
+
+#: options.c:1074
+msgid "Enable automatic template instantiation"
+msgstr ""
+
+#: options.c:1077
+msgid "Add a common subexpression elimination pass after loop optimizations"
+msgstr ""
+
+#: options.c:1080
+msgid "Run the loop optimizer twice"
+msgstr ""
+
+#: options.c:1083
+msgid "Disable optimizations that assume default FP rounding behavior"
+msgstr ""
+
+#: options.c:1086
+msgid "Generate run time type descriptor information"
+msgstr ""
+
+#: options.c:1089
+msgid "Enable scheduling across basic blocks"
+msgstr ""
+
+#: options.c:1092
+msgid "Allow speculative motion of non-loads"
+msgstr ""
+
+#: options.c:1095
+msgid "Allow speculative motion of some loads"
+msgstr ""
+
+#: options.c:1098
+msgid "Allow speculative motion of more loads"
+msgstr ""
+
+#: options.c:1101
+msgid "Allow premature scheduling of queued insns"
+msgstr ""
+
+#: options.c:1104
+msgid "Set dependence distance checking in premature scheduling of queued insns"
+msgstr ""
+
+#: options.c:1107
+msgid "-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns"
+msgstr ""
+
+#: options.c:1110
+msgid "-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled"
+msgstr ""
+
+#: options.c:1113
+msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler"
+msgstr ""
+
+#: options.c:1116
+msgid "If scheduling post reload, do superblock scheduling"
+msgstr ""
+
+#: options.c:1119
+msgid "If scheduling post reload, do trace scheduling"
+msgstr ""
+
+#: options.c:1122
+msgid "Reschedule instructions before register allocation"
+msgstr ""
+
+#: options.c:1125
+msgid "Reschedule instructions after register allocation"
+msgstr ""
+
+#: options.c:1128
+msgid "Allow appending a second underscore to externals"
+msgstr ""
+
+#: options.c:1131
+msgid "Mark data as shared rather than private"
+msgstr ""
+
+#: options.c:1134
+msgid "Use the same size for double as for float"
+msgstr ""
+
+#: options.c:1137
+msgid "Use the narrowest integer type possible for enumeration types"
+msgstr ""
+
+#: options.c:1140
+msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
+msgstr ""
+
+#: options.c:1146
+msgid "Disable optimizations observable by IEEE signaling NaNs"
+msgstr ""
+
+#: options.c:1149
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
+msgstr ""
+
+#: options.c:1152
+msgid "Make \"char\" signed by default"
+msgstr ""
+
+#: options.c:1155
+msgid "Do not print names of program units as they are compiled"
+msgstr ""
+
+#: options.c:1158
+msgid "Convert floating point constants to single precision constants"
+msgstr "Fließkommakonstanten in Konstanten einfacher Genauigkeit konvertieren"
+
+#: options.c:1161
+msgid "Internally convert most source to lowercase"
+msgstr ""
+
+#: options.c:1164
+msgid "Internally preserve source case"
+msgstr ""
+
+#: options.c:1167
+msgid "Internally convert most source to uppercase"
+msgstr ""
+
+#: options.c:1173
+msgid "Insert stack checking code into the program"
+msgstr ""
+
+#: options.c:1179
+msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>"
+msgstr ""
+
+#: options.c:1182
+msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>"
+msgstr ""
+
+#: options.c:1185
+msgid "Display statistics accumulated during compilation"
+msgstr ""
+
+#: options.c:1188
+msgid "Enable assignability checks for stores into object arrays"
+msgstr ""
+
+#: options.c:1191
+msgid "Perform strength reduction optimizations"
+msgstr ""
+
+#: options.c:1194
+msgid "Assume strict aliasing rules apply"
+msgstr ""
+
+#: options.c:1203
+msgid "Symbol names spelled in mixed case"
+msgstr ""
+
+#: options.c:1206
+msgid "Symbol names in lowercase"
+msgstr ""
+
+#: options.c:1209
+msgid "Symbol names in uppercase"
+msgstr ""
+
+#: options.c:1212
+msgid "Check for syntax errors, then stop"
+msgstr ""
+
+#: options.c:1215
+msgid "-ftabstop=<number>\tDistance between tab stops for column reporting"
+msgstr ""
+
+#: options.c:1218
+msgid "-ftemplate-depth-<number>\tSpecify maximum template instantiation depth"
+msgstr ""
+
+#: options.c:1221
+msgid "Create data files needed by \"gcov\""
+msgstr ""
+
+#: options.c:1227
+msgid "Perform jump threading optimizations"
+msgstr ""
+
+#: options.c:1230
+msgid "Report the time taken by each compiler pass"
+msgstr ""
+
+#: options.c:1233
+msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model"
+msgstr ""
+
+#: options.c:1236
+msgid "Perform superblock formation via tail duplication"
+msgstr ""
+
+#: options.c:1239
+msgid "Assume floating-point operations can trap"
+msgstr ""
+
+#: options.c:1242
+msgid "Trap for signed overflow in addition, subtraction and multiplication"
+msgstr ""
+
+#: options.c:1245
+msgid "Make prefix-radix non-decimal constants be typeless"
+msgstr ""
+
+#: options.c:1248
+msgid "Allow all ugly features"
+msgstr ""
+
+#: options.c:1251
+msgid "Hollerith and typeless can be passed as arguments"
+msgstr ""
+
+#: options.c:1254
+msgid "Allow ordinary copying of ASSIGN'ed vars"
+msgstr ""
+
+#: options.c:1257
+msgid "Dummy array dimensioned to (1) is assumed-size"
+msgstr ""
+
+#: options.c:1260
+msgid "Trailing comma in procedure call denotes null argument"
+msgstr ""
+
+#: options.c:1263
+msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
+msgstr ""
+
+#: options.c:1266
+msgid "Initialization via DATA and PARAMETER is not type-compatible"
+msgstr ""
+
+#: options.c:1269
+msgid "Allow INTEGER and LOGICAL interchangeability"
+msgstr ""
+
+#: options.c:1272
+msgid "Append underscores to externals"
+msgstr ""
+
+#: options.c:1275
+msgid "Compile whole compilation unit at a time"
+msgstr ""
+
+#: options.c:1278
+msgid "Delete libU77 intrinsics"
+msgstr ""
+
+#: options.c:1281
+msgid "Disable libU77 intrinsics"
+msgstr ""
+
+#: options.c:1284
+msgid "Enable libU77 intrinsics"
+msgstr ""
+
+#: options.c:1287
+msgid "Hide libU77 intrinsics"
+msgstr ""
+
+#: options.c:1296
+msgid "Allow math optimizations that may violate IEEE or ISO standards"
+msgstr ""
+
+#: options.c:1299
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
+msgstr ""
+
+#: options.c:1302
+msgid "Make \"char\" unsigned by default"
+msgstr ""
+
+#: options.c:1305
+msgid "Perform loop unswitching"
+msgstr ""
+
+#: options.c:1308
+msgid "Just generate unwind tables for exception handling"
+msgstr ""
+
+#: options.c:1314
+msgid "Use __cxa_atexit to register destructors"
+msgstr ""
+
+#: options.c:1320
+msgid "Add extra commentary to assembler output"
+msgstr ""
+
+#: options.c:1323
+msgid "Print g77-specific version information and run internal tests"
+msgstr ""
+
+#: options.c:1326
+msgid "Use expression value profiles in optimizations"
+msgstr ""
+
+#: options.c:1329
+msgid "Discard unused virtual functions"
+msgstr ""
+
+#: options.c:1332
+msgid "Implement vtables using thunks"
+msgstr ""
+
+#: options.c:1335
+msgid "Program is written in VXT (Digital-like) FORTRAN"
+msgstr ""
+
+#: options.c:1338
+msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr ""
+
+#: options.c:1341
+msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr ""
+
+#: options.c:1344
+msgid "Enable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr ""
+
+#: options.c:1347
+msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr ""
+
+#: options.c:1353
+msgid "Emit common-like symbols as weak symbols"
+msgstr ""
+
+#: options.c:1356
+msgid "Construct webs and split unrelated uses of single variable"
+msgstr ""
+
+#: options.c:1359
+msgid "-fwide-exec-charset=<cset>\tConvert all wide strings and character constants to character set <cset>"
+msgstr ""
+
+#: options.c:1362
+msgid "Generate a #line directive pointing at the current working directory"
+msgstr ""
+
+#: options.c:1365
+msgid "Assume signed arithmetic overflow wraps around"
+msgstr ""
+
+#: options.c:1368
+msgid "Store strings in writable data section"
+msgstr ""
+
+#: options.c:1371
+msgid "Emit cross referencing information"
+msgstr ""
+
+#: options.c:1374
+msgid "Print internal debugging-related information"
+msgstr "Interne Testinformationen ausgeben"
+
+#: options.c:1377
+msgid "Put zero initialized data in the bss section"
+msgstr ""
+
+#: options.c:1380
+msgid "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
+msgstr ""
+
+#: options.c:1383
+msgid "Treat initial values of 0 like non-zero values"
+msgstr ""
+
+#: options.c:1386
+msgid "Generate debug information in default format"
+msgstr ""
+
+#: options.c:1392
+msgid "Generate debug information in COFF format"
+msgstr ""
+
+#: options.c:1395
+msgid "Generate debug information in DWARF v2 format"
+msgstr ""
+
+#: options.c:1398
+msgid "Dump declarations to a .decl file"
+msgstr "Deklaration in .decl-Datei ausgeben"
+
+#: options.c:1401
+msgid "Generate debug information in default extended format"
+msgstr ""
+
+#: options.c:1404
+msgid "-gnat<options>\tSpecify options to GNAT"
+msgstr ""
+
+#: options.c:1407
+msgid "Generate debug information in STABS format"
+msgstr ""
+
+#: options.c:1410
+msgid "Generate debug information in extended STABS format"
+msgstr ""
+
+#: options.c:1413
+msgid "Generate debug information in VMS format"
+msgstr ""
+
+#: options.c:1416
+msgid "Generate debug information in XCOFF format"
+msgstr ""
+
+#: options.c:1419
+msgid "Generate debug information in extended XCOFF format"
+msgstr ""
+
+#: options.c:1422
+msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path"
+msgstr ""
+
+#: options.c:1425
+msgid "-imacros <file>\tAccept definition of macros in <file>"
+msgstr ""
+
+#: options.c:1428
+msgid "-include <file>\tInclude the contents of <file> before other files"
+msgstr ""
+
+#: options.c:1431
+msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options"
+msgstr ""
+
+#: options.c:1434
+msgid "-isysroot <dir>\tSet <dir> to be the system root directory"
+msgstr ""
+
+#: options.c:1437
+msgid "-isystem <dir>\tAdd <dir> to the start of the system include path"
+msgstr ""
+
+#: options.c:1440
+msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path"
+msgstr ""
+
+#: options.c:1443
+msgid "-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path"
+msgstr ""
+
+#: options.c:1455
+msgid "Do not search standard system include directories (those specified with -isystem will still be used)"
+msgstr ""
+
+#: options.c:1458
+msgid "Do not search standard system include directories for C++"
+msgstr ""
+
+#: options.c:1464
+msgid "-o <file>\tPlace output into <file>"
+msgstr "-o <Datei>\tAusgabe in <Datei> schreiben"
+
+#: options.c:1467
+msgid "Enable function profiling"
+msgstr ""
+
+#: options.c:1470
+msgid "Issue warnings needed for strict compliance to the standard"
+msgstr ""
+
+#: options.c:1473
+msgid "Like -pedantic but issue them as errors"
+msgstr ""
+
+#: options.c:1476
+msgid "Generate C header of platform-specific features"
+msgstr "C-Header mit Plattform-spezifischen Merkmalen erzeugen"
+
+#: options.c:1479
+msgid "Do not display functions compiled or elapsed time"
+msgstr ""
+
+#: options.c:1482
+msgid "Remap file names when including files"
+msgstr "Dateinamen beim Einfügen von Dateien neu abbilden"
+
+#: options.c:1485
+msgid "Conform to the ISO 1998 C++ standard"
+msgstr ""
+
+#: options.c:1488
+msgid "Conform to the ISO 1990 C standard"
+msgstr ""
+
+#: options.c:1491
+msgid "Conform to the ISO 1999 C standard"
+msgstr ""
+
+#: options.c:1494 options.c:1515 options.c:1518
+msgid "Deprecated in favor of -std=c99"
+msgstr ""
+
+#: options.c:1497
+msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
+msgstr ""
+
+#: options.c:1500
+msgid "Conform to the ISO 1990 C standard with GNU extensions"
+msgstr ""
+
+#: options.c:1503
+msgid "Conform to the ISO 1999 C standard with GNU extensions"
+msgstr ""
+
+#: options.c:1506
+msgid "Deprecated in favor of -std=gnu99"
+msgstr ""
+
+#: options.c:1509
+msgid "Deprecated in favor of -std=c89"
+msgstr ""
+
+#: options.c:1512
+msgid "Conform to the ISO 1990 C standard as amended in 1994"
+msgstr ""
+
+#: options.c:1521
+msgid "Enable traditional preprocessing"
+msgstr ""
+
+#: options.c:1524
+msgid "-trigraphs\tSupport ISO C trigraphs"
+msgstr ""
+
+#: options.c:1527
+msgid "Do not predefine system-specific and GCC-specific macros"
+msgstr ""
+
+#: options.c:1530
+msgid "Enable verbose output"
+msgstr ""
+
+#: options.c:1536
+msgid "Suppress warnings"
+msgstr ""
+
+#: config/rs6000/darwin.h:98
+msgid " conflicting code gen style switches are used"
+msgstr ""
+
+#: gcc.c:743
+msgid "GCC does not support -C or -CC without -E"
+msgstr "GCC unterstützt nicht -C oder -CC ohne -E"
+
+#: gcc.c:767 java/jvspec.c:80 ada/lang-specs.h:34
+msgid "-pg and -fomit-frame-pointer are incompatible"
+msgstr ""
+
+#: gcc.c:915
+msgid "-E required when input is from standard input"
+msgstr ""
+
+#: config/arm/arm.h:197
msgid "-mapcs-26 and -mapcs-32 may not be used together"
msgstr ""
-#: config/arm/arm.h:180
+#: config/arm/arm.h:199
msgid "-msoft-float and -mhard_float may not be used together"
msgstr ""
-#: config/arm/arm.h:182
+#: config/arm/arm.h:201
msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr ""
-#: config/i386/sco5.h:195
-#, fuzzy
-msgid "-pg not supported on this platform"
-msgstr "Profiling wird mit -mg nicht unterstützt\n"
+#: config/i386/mingw32.h:58 config/i386/cygwin.h:70
+msgid "shared and mdll are not compatible"
+msgstr ""
-#: config/i386/sco5.h:196
-msgid "-p and -pp specified - pick one"
+#: config/mips/mips.h:975
+msgid "-pipe is not supported"
+msgstr "-pipe wird nicht unterstützt"
+
+#: config/mips/mips.h:1130 config/arc/arc.h:63
+msgid "may not use both -EB and -EL"
msgstr ""
-#: config/i386/sco5.h:271
-msgid "-G and -static are mutually exclusive"
+#: config/darwin.h:215
+msgid "-current_version only allowed with -dynamiclib"
msgstr ""
-#: f/lang-specs.h:38 gcc.c:689
-msgid "GNU C does not support -C without using -E"
-msgstr "GNU C unterstützt nicht -C ohne -E"
+#: config/darwin.h:218
+msgid "-install_name only allowed with -dynamiclib"
+msgstr ""
-#: f/lang-specs.h:39 gcc.c:690
-msgid "GNU C does not support -CC without using -E"
-msgstr "GNU C unterstützt nicht -CC ohne -E"
+#: config/darwin.h:223
+msgid "-bundle not allowed with -dynamiclib"
+msgstr ""
-#: config/mcore/mcore.h:60
-msgid "choose either big or little endian, not both"
+#: config/darwin.h:224
+msgid "-bundle_loader not allowed with -dynamiclib"
msgstr ""
-#: config/mcore/mcore.h:63
-msgid "choose either m340 or m210 not both"
+#: config/darwin.h:225
+msgid "-client_name not allowed with -dynamiclib"
msgstr ""
-#: config/mcore/mcore.h:64
-msgid "the m210 does not have little endian support"
+#: config/darwin.h:228
+msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
msgstr ""
-#: config/i386/cygwin.h:115
-msgid "mno-cygwin and mno-win32 are not compatible"
+#: config/darwin.h:229
+msgid "-force_flat_namespace not allowed with -dynamiclib"
msgstr ""
+#: config/darwin.h:231
+msgid "-keep_private_externs not allowed with -dynamiclib"
+msgstr "-keep_private_externs ist mit -dynamiclib nicht erlaubt"
+
+#: config/darwin.h:232
+msgid "-private_bundle not allowed with -dynamiclib"
+msgstr "-private_bundle ist mit -dynamiclib nicht erlaubt"
+
#: config/vax/netbsd-elf.h:42
msgid "The -shared option is not currently supported for VAX ELF."
msgstr ""
+#: config/i386/sco5.h:191
+msgid "-pg not supported on this platform"
+msgstr "-pg wird auf dieser Plattform nicht unterstützt"
+
+#: config/i386/sco5.h:192
+msgid "-p and -pp specified - pick one"
+msgstr ""
+
+#: config/i386/sco5.h:266
+msgid "-G and -static are mutually exclusive"
+msgstr ""
+
#: treelang/lang-specs.h:52
msgid "-pg or -p and -fomit-frame-pointer are incompatible"
msgstr ""
-#: gcc.c:847
-msgid "-E required when input is from standard input"
+#: f/lang-specs.h:38
+msgid "GCC does not support -C without using -E"
+msgstr "GCC unterstützt nicht -C ohne -E"
+
+#: f/lang-specs.h:39
+msgid "GCC does not support -CC without using -E"
+msgstr "GCC unterstützt nicht -CC ohne -E"
+
+#: config/mips/r3900.h:35
+msgid "-mhard-float not supported"
msgstr ""
-#: gcc.c:851
-msgid "compilation of header file requested"
+#: config/mips/r3900.h:37
+msgid "-msingle-float and -msoft-float can not both be specified"
msgstr ""
+#: config/rs6000/sysv4.h:1094 config/i386/freebsd-aout.h:215
+msgid "`-p' not supported; use `-pg' and gprof(1)"
+msgstr "»-p« wird nicht unterstützt; verwenden Sie »-pg« und gprof(1)"
+
+#: config/sparc/linux64.h:208 config/sparc/linux64.h:219
+#: config/sparc/netbsd-elf.h:140 config/sparc/netbsd-elf.h:159
+#: config/sparc/sol2-bi.h:195 config/sparc/sol2-bi.h:205
+msgid "may not use both -m32 and -m64"
+msgstr "-m32 und -m64 können nicht zusammen angegeben werden"
+
#: config/vax/vax.h:50 config/vax/vax.h:51
msgid "profiling not supported with -mg\n"
msgstr "Profiling wird mit -mg nicht unterstützt\n"
-#: config/mips/mips.h:954
-msgid "-pipe is not supported"
-msgstr "-pipe wird nicht unterstützt"
+#: config/i386/cygwin.h:29
+msgid "mno-cygwin and mno-win32 are not compatible"
+msgstr ""
-#: config/mips/mips.h:1156 config/arc/arc.h:63
-msgid "may not use both -EB and -EL"
+#: ada/lang-specs.h:36
+msgid "one of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada"
msgstr ""
-#: config/mips/r3900.h:35
-msgid "-mhard-float not supported"
+#: config/sparc/sol2-bi.h:167 config/sparc/sol2-bi.h:172
+#: config/sparc/sol2-gld-bi.h:17 config/sparc/sol2-gld-bi.h:22
+msgid "does not support multilib"
+msgstr "unterstützt nicht multilib"
+
+#: java/lang-specs.h:34
+msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
-#: config/mips/r3900.h:37
-msgid "-msingle-float and -msoft-float can not both be specified"
+#: java/lang-specs.h:35
+msgid "-fjni and -femit-class-file are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:36 java/lang-specs.h:37
+msgid "-femit-class-file should used along with -fsyntax-only"
+msgstr ""
+
+#: config/mcore/mcore.h:65
+msgid "the m210 does not have little endian support"
msgstr ""
+#~ msgid "concatenation of string literals with __FUNCTION__ is deprecated"
+#~ msgstr "Verkettung von Zeichenkettenliteralen mit __FUNCTION__ ist veraltet"
+
+#~ msgid "ISO C++ forbids range expressions in switch statements"
+#~ msgstr "ISO-C++ verbietet Wertebereichsausdrücke in switch-Anweisungen"
+
+#~ msgid "ISO C++ forbids taking the address of a label"
+#~ msgstr "ISO-C++ verbietet die Adresse einer Marke"
+
+#~ msgid "declaration of `%s' shadows %s"
+#~ msgstr "Deklaration von »%s« verdeckt %s"
+
+#~ msgid "`struct %s' incomplete in scope ending here"
+#~ msgstr "»struct %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+
+#~ msgid "`union %s' incomplete in scope ending here"
+#~ msgstr "»union %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+
+#~ msgid "`enum %s' incomplete in scope ending here"
+#~ msgstr "»enum %s« im Gültigkeitsbereich, der hier endet, unvollständig"
+
+#~ msgid "shadowing library function `%s'"
+#~ msgstr "Bibliotheksfunktion »%s« überdeckt"
+
+#~ msgid "library function `%s' declared as non-function"
+#~ msgstr "Bibliotheksfunktion »%s« als Nicht-Funktion deklariert"
+
+#~ msgid "redeclaration of `%s'"
+#~ msgstr "Redeklaration von »%s«"
+
+#~ msgid "prototype for `%s' follows and number of arguments doesn't match"
+#~ msgstr "Prototyp für »%s« folgt und Anzahl der Argumente passt nicht"
+
+#~ msgid "prototype for `%s' follows and argument %d doesn't match"
+#~ msgstr "Prototyp für »%s« folgt und Argument %d passt nicht"
+
+#~ msgid "type qualifiers for `%s' conflict with previous decl"
+#~ msgstr "Typ-Kennzeichner für »%s« stehen in Konflikt mit vorheriger Deklaration"
+
+#~ msgid "a parameter"
+#~ msgstr "ein Parameter"
+
+#~ msgid "a previous local"
+#~ msgstr "ein vorheriges »local«"
+
+#~ msgid "a global declaration"
+#~ msgstr "eine globale Deklaration"
+
+#~ msgid "`%s' was declared implicitly `extern' and later `static'"
+#~ msgstr "»%s« wurde implizit als »extern« und später als »static« deklariert"
+
+#~ msgid "previous external decl of `%s'"
+#~ msgstr "vorherige externe Deklaration von »%s«"
+
+#~ msgid "type mismatch with previous implicit declaration"
+#~ msgstr "Typen passen nicht zu vorheriger impliziter Deklaration"
+
+#~ msgid "`%s' was previously implicitly declared to return `int'"
+#~ msgstr "»%s« wurde bereits implizit deklariert, »int« zurückzugeben"
+
+#~ msgid "`%s' was declared `extern' and later `static'"
+#~ msgstr "»%s« wurde »extern« deklariert und später »static«"
+
+#~ msgid "`%s' locally external but globally static"
+#~ msgstr "»%s« ist lokal extern, aber global »static«"
+
+#~ msgid "function `%s' was previously declared within a block"
+#~ msgstr "Funktion »%s« wurde bereits innerhalb eines Blockes deklariert"
+
+#~ msgid "declaration of `%s' has `extern' and is initialized"
+#~ msgstr "Deklaration von »%s« hat »extern« und ist initialisiert"
+
+#~ msgid "ISO C forbids parameter `%s' shadowing typedef"
+#~ msgstr "ISO-C verbietet typedef verdeckenden Parameter »%s«"
+
+#~ msgid "parameter `%s' points to incomplete type"
+#~ msgstr "Parameter »%s« zeigt auf unvollständigen Typen"
+
+#~ msgid "parameter points to incomplete type"
+#~ msgstr "Parameter zeigt auf unvollständigen Typen"
+
+#~ msgid "`void' in parameter list must be the entire list"
+#~ msgstr "»void« in Parameterliste muss die gesamte Liste sein"
+
+#~ msgid "`union %s' declared inside parameter list"
+#~ msgstr "»union %s« innerhalb Parameterliste deklariert"
+
+#~ msgid "`enum %s' declared inside parameter list"
+#~ msgstr "»enum %s« innerhalb Parameterliste deklariert"
+
+#~ msgid "anonymous enum declared inside parameter list"
+#~ msgstr "anonymes »enum« innerhalb Parameterliste deklariert"
+
+#~ msgid "bit-field `%s' type invalid in ISO C"
+#~ msgstr "Typ des Bitfeldes »%s« ist ungültig in ISO-C"
+
+#~ msgid "parm types given both in parmlist and separately"
+#~ msgstr "Parametertypen sowohl in Parameterliste als auch separat angegeben"
+
+#~ msgid "universal-character-name '\\u%04x' not valid in identifier"
+#~ msgstr "universeller Zeichenname »\\u%04x« nicht gültig in Bezeichner"
+
+#~ msgid "ignoring invalid multibyte character"
+#~ msgstr "ungültiges Multibyte-Zeichen wird ignoriert"
+
+#~ msgid "options array incorrectly sorted: %s is before %s"
+#~ msgstr "Optionenliste falsch sortiert: %s kommt vor %s"
+
+#~ msgid "-Wno-strict-prototypes is not supported in C++"
+#~ msgstr "-Wno-strict-prototypes wird in C++ nicht unterstützt"
+
+#~ msgid ""
+#~ "Switches:\n"
+#~ " -include <file> Include the contents of <file> before other files\n"
+#~ " -imacros <file> Accept definition of macros in <file>\n"
+#~ " -iprefix <path> Specify <path> as a prefix for next two options\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"
+#~ msgstr ""
+#~ "Optionen:\n"
+#~ " -include <Datei> Inhalt von <Datei> vor anderen Dateien einfügen\n"
+#~ " -imacros <Datei> die Definition von Makros in <Datei> akzeptieren\n"
+#~ " -iprefix <Pfad> <Pfad> als Präfix für die nächsten beiden Optionen\n"
+#~ " angeben\n"
+#~ " -iwithprefix <Verz> <Verz> zum Ende des System-Einfüge-Pfades\n"
+#~ " hinzufügen\n"
+#~ " -iwithprefixbefore <Verz> <Verz> zum das Ende des Haupt-Einfüge-Pfades\n"
+#~ " hinzufügen\n"
+#~ " -isystem <Verz> <Verz> zum Anfang des System-Einfüge-Pfades\n"
+#~ " hinzufügen\n"
+
+#~ 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 docs\n"
+#~ " -nostdinc Do not search system include directories\n"
+#~ " (dirs specified with -isystem will still be used)\n"
+#~ " -nostdinc++ Do not search system include directories for C++\n"
+#~ " -o <file> Put output into <file>\n"
+#~ msgstr ""
+#~ " -idirafter <Verz> <Verz> zum Ende des System-Einfüge-Pfades\n"
+#~ " hinzufügen\n"
+#~ " -I <Verz> <Verz> zum Anfang des Haupt-Einfüge-Pfades\n"
+#~ " hinzufügen\n"
+#~ " -I- Feineinstellung des Einfügepfades; siehe info-\n"
+#~ " Seiten\n"
+#~ " -nostdinc keine System-Einfüge-Verzeichnisse durchsuchen\n"
+#~ " (-isystem Verzeichnisse werden aber verwendet)\n"
+#~ " -nostdinc++ keine System-Einfüge-Verzeichnisse nach C++\n"
+#~ " durchsuchen\n"
+#~ " -o <Datei> Ausgabe in <Datei> leiten\n"
+
+#~ msgid ""
+#~ " -trigraphs Support ISO C trigraphs\n"
+#~ " -std=<std name> Specify the conformance standard; one of:\n"
+#~ " gnu89, gnu99, c89, c99, iso9899:1990,\n"
+#~ " iso9899:199409, iso9899:1999, c++98\n"
+#~ " -w Inhibit warning messages\n"
+#~ " -W[no-]trigraphs Warn if trigraphs are encountered\n"
+#~ " -W[no-]comment{s} Warn if one comment starts inside another\n"
+#~ msgstr ""
+#~ " -trigraphs ISO-C-»Trigraphs« unterstützen\n"
+#~ " -std=<Name> Standardkonformität angeben; eines von:\n"
+#~ " gnu89, gnu99, c89, c99, iso9899:1990,\n"
+#~ " iso9899:199409, iso9899:1999, c++98\n"
+#~ " -w Warnungen unterdrücken\n"
+#~ " -W[no-]trigraphs Warnungen bei »Trigraphs«\n"
+#~ " -W[no-]comment{s} Warnungen bei geschachtelten Kommentaren\n"
+
+#~ msgid ""
+#~ " -W[no-]traditional Warn about features not present in traditional C\n"
+#~ " -W[no-]undef Warn if an undefined macro is used by #if\n"
+#~ " -W[no-]import Warn about the use of the #import directive\n"
+#~ msgstr ""
+#~ " -W[no-]traditional Warnungen bei Merkmalen von traditionellem C\n"
+#~ " -W[no-]undef Warnungen bei Verwendung undefinierter Makros\n"
+#~ " mit #if\n"
+#~ " -W[no-]import Warnungen über die Verwendung der Direktive\n"
+#~ " #import\n"
+
+#~ msgid ""
+#~ " -W[no-]error Treat all warnings as errors\n"
+#~ " -W[no-]system-headers Do not suppress warnings from system headers\n"
+#~ " -W[no-]all Enable most preprocessor warnings\n"
+#~ msgstr ""
+#~ " -W[no-]error alle Warnungen als Fehler behandeln\n"
+#~ " -W[no-]system-headers keine Warnungen von System-Headern unterdrücken\n"
+#~ " -W[no-]all die meisten Präprozessorwarnungen einschalten\n"
+
+#~ msgid ""
+#~ " -M Generate make dependencies\n"
+#~ " -MM As -M, but ignore system header files\n"
+#~ " -MD Generate make dependencies and compile\n"
+#~ " -MMD As -MD, but ignore system header files\n"
+#~ " -MF <file> Write dependency output to the given file\n"
+#~ " -MG Treat missing header file as generated files\n"
+#~ msgstr ""
+#~ " -M make-Abhängigkeiten generieren\n"
+#~ " -MM wie -M, aber System-Header ignorieren\n"
+#~ " -MD make-Abhängigkeiten generieren und kompilieren\n"
+#~ " -MMD wie -MD, aber System-Header ignorieren\n"
+#~ " -MF <Datei> Abhängigkeiten-Ausgabe in die angegebene Datei\n"
+#~ " schreiben\n"
+#~ " -MG fehlende Header-Dateien als generierte Dateien\n"
+#~ " behandeln\n"
+
+#~ msgid ""
+#~ " -MP\t\t\t Generate phony targets for all headers\n"
+#~ " -MQ <target> Add a MAKE-quoted target\n"
+#~ " -MT <target> Add an unquoted target\n"
+#~ msgstr ""
+#~ " -MP\t\t\t Generiere falsche (phony) Ziele für Header\n"
+#~ " -MQ <Ziel> MAKE-zitiertes Ziel hinzufügen\n"
+#~ " -MT <Ziel> ein unzitiertes Ziel hinzufügen\n"
+
+#~ msgid ""
+#~ " -D<macro> Define a <macro> with string '1' as its value\n"
+#~ " -D<macro>=<val> Define a <macro> with <val> as its value\n"
+#~ " -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"
+#~ msgstr ""
+#~ " -D<Makro> <Makro> mit Wert \"1\" definieren\n"
+#~ " -D<Makro>=<Wert> <Makro> mit Wert <Wert> definieren\n"
+#~ " -A<Frage>=<Antwort> die <Antwort> auf <Frage> annehmen\n"
+#~ " -A-<Frage>=<Antwort> die <Antwort> auf <Frage> abschalten\n"
+#~ " -U<Makro> <Makro> löschen\n"
+#~ " -v Version anzeigen\n"
+
+#~ msgid ""
+#~ " -H Print the name of header files as they are used\n"
+#~ " -C Do not discard comments\n"
+#~ " -dM Display a list of macro definitions active at end\n"
+#~ " -dD Preserve macro definitions in output\n"
+#~ " -dN As -dD except that only the names are preserved\n"
+#~ " -dI Include #include directives in the output\n"
+#~ msgstr ""
+#~ " -H Namen von Header-Dateien anzeigen wenn sie\n"
+#~ " verwendet werden\n"
+#~ " -C Kommentare nicht streichen\n"
+#~ " -dM am Ende eine Liste von Makrodefinitionen anzeigen\n"
+#~ " -dD Makrodefinitionen in der Ausgabe bewahren\n"
+#~ " -dN wie -dD nur dass die Namen bewahrt werden\n"
+#~ " -dI #include-Anweisungen in die Ausgabe einfügen\n"
+
+#~ msgid ""
+#~ " -f[no-]preprocessed Treat the input file as already preprocessed\n"
+#~ " -ftabstop=<number> Distance between tab stops for column reporting\n"
+#~ " -P Do not generate #line directives\n"
+#~ " -remap Remap file names when including files\n"
+#~ " --help Display this information\n"
+#~ msgstr ""
+#~ " -f[no-]preprocessed Eingabedatei als bereits vorverarbeitet behandeln\n"
+#~ " -ftabstop=<Zahl> Tabulatorenabstand für Spaltenmeldungen\n"
+#~ " -P keine #line-Direktiven generieren\n"
+#~ " -remap Dateinamen beim Einfügen neu abbilden\n"
+#~ " --help diese Information anzeigen\n"
+
+#~ msgid "parse error"
+#~ msgstr "Fehler beim Parsen"
+
+#~ msgid "ISO C forbids the address of a cast expression"
+#~ msgstr "ISO-C verbietet die Adresse eines cast-Ausdruckes"
+
+#~ msgid "initializer for static variable is not constant"
+#~ msgstr "Initialisierer für statische Variable ist nicht konstant"
+
+#~ msgid "initializer for static variable uses complicated arithmetic"
+#~ msgstr "Initialisierer für statische Variable verwendet komplizierte Arithmetik"
+
+#~ msgid "aggregate initializer is not constant"
+#~ msgstr "Gesamt-Initialisierer ist nicht konstant"
+
+#~ msgid "aggregate initializer uses complicated arithmetic"
+#~ msgstr "Gesamt-Initialisierer verwendet komplizierte Arithmetik"
+
+#~ msgid "open %s"
+#~ msgstr "öffne %s"
+
+#~ msgid "incompatibilities between object file & expected values"
+#~ msgstr "Inkompatibilitäten zwischen Objektdatei und erwarteten Werten"
+
+#~ msgid ""
+#~ "\n"
+#~ "Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Verarbeite Symboltabelle #%d, Versatz = 0x%.8lx, Art = %s\n"
+
+#~ msgid "string section missing"
+#~ msgstr "Zeichenkettenabschnitt fehlt"
+
+#~ msgid "section pointer missing"
+#~ msgstr "Abschnittszeiger fehlt"
+
+#~ msgid "no symbol table found"
+#~ msgstr "keine Symboltabelle gefunden"
+
+#~ msgid ""
+#~ "\n"
+#~ "Updating header and load commands.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Aktualisiere Kopf und lokale Befehle.\n"
+#~ "\n"
+
+#~ msgid "load command map, %d cmds, new size %ld.\n"
+#~ msgstr "lade Befehlstabelle, %d Befehle, neue Größe: %ld.\n"
+
+#~ msgid ""
+#~ "writing load commands.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "schreibe Ladebefehle.\n"
+#~ "\n"
+
+#~ msgid "close %s"
+#~ msgstr "schließe %s"
+
+#~ msgid "could not convert 0x%l.8x into a region"
+#~ msgstr "konnte 0x%l.8x nicht in eine Region konvertieren"
+
+#~ msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
+#~ msgstr "Funktion %s, Region %d, Versatz = %ld (0x%.8lx)\n"
+
+#~ msgid "bad magic number"
+#~ msgstr "falsche magische Zahl"
+
+#~ msgid "bad header version"
+#~ msgstr "falsche Kopf-Version"
+
+#~ msgid "bad raw header version"
+#~ msgstr "falsche Version des Original-Kopfes"
+
+#~ msgid "raw header buffer too small"
+#~ msgstr "Original-Kopf-Puffer zu klein"
+
+#~ msgid "old raw header file"
+#~ msgstr "alte Original-Kopf-Datei"
+
+#~ msgid "unsupported version"
+#~ msgstr "nicht unterstützte Version"
+
+#~ msgid "unknown {de,en}code_mach_o_hdr return value %d"
+#~ msgstr "unbekannter Rückgabewert %d für {de,en}code_mach_o_hdr"
+
+#~ msgid "fstat %s"
+#~ msgstr "fstat %s"
+
+#~ msgid "lseek %s 0"
+#~ msgstr "lseek %s 0"
+
+#~ msgid "read %s"
+#~ msgstr "Lese %s"
+
+#~ msgid "read %ld bytes, expected %ld, from %s"
+#~ msgstr "%ld Bytes gelesen, %ld erwartet, von %s"
+
+#~ msgid "msync %s"
+#~ msgstr "msync %s"
+
+#~ msgid "munmap %s"
+#~ msgstr "munmap %s"
+
+#~ msgid "write %s"
+#~ msgstr "schreibe %s"
+
+#~ msgid "wrote %ld bytes, expected %ld, to %s"
+#~ msgstr "%ld Bytes geschrieben, %ld erwartet, nach %s"
+
+#~ msgid "ISO C++ does not permit \"%s\" in #if"
+#~ msgstr "ISO-C++ lässt nicht »%s« in #if zu"
+
+#~ msgid "invalid character '%c' in #if"
+#~ msgstr "ungültiges Zeichen '%c' in #if"
+
+#~ msgid "invalid character '\\%03o' in #if"
+#~ msgstr "ungültiges Zeichen '\\%03o' in #if"
+
+#~ msgid "absolute file name in remap_filename"
+#~ msgstr "absoluter Dateiname in remap_filename"
+
+#~ msgid "%s: Not a directory"
+#~ msgstr "%s: Kein Verzeichnis"
+
+#~ msgid "directory name missing after %s"
+#~ msgstr "Verzeichnisname fehlt hinter %s"
+
+#~ msgid "file name missing after %s"
+#~ msgstr "Dateiname fehlt hinter %s"
+
+#~ msgid "path name missing after %s"
+#~ msgstr "Pfadname fehlt hinter %s"
+
+#~ msgid "trigraph ??%c converted to %c"
+#~ msgstr "Trigraph ??%c in %c konvertiert"
+
+#~ msgid "trigraph ??%c ignored"
+#~ msgstr "Trigraph ??%c ignoriert"
+
+#~ msgid "backslash and newline separated by space"
+#~ msgstr "Backslash und Newline durch Leerzeichen getrennt"
+
+#~ msgid "backslash-newline at end of file"
+#~ msgstr "Backslash-Newline am Dateiende"
+
+#~ msgid "\"/*\" within comment"
+#~ msgstr "»/*« innerhalb des Kommentars"
+
+#~ msgid "%s in preprocessing directive"
+#~ msgstr "%s in Präprozessordirektive"
+
+#~ msgid "no newline at end of file"
+#~ msgstr "Kein Newline am Dateiende"
+
+#~ msgid "unknown string token %s\n"
+#~ msgstr "Unbekanntes Zeichenketten-Token %s\n"
+
+#~ msgid "non-hex digit '%c' in universal-character-name"
+#~ msgstr "Nicht-Hex-Ziffer '%c' in Universal-Zeichen-Name"
+
+#~ msgid "universal-character-name on EBCDIC target"
+#~ msgstr "Universal-Zeichen-Name auf EBCDIC Ziel"
+
+#~ msgid "universal-character-name out of range"
+#~ msgstr "Universal-Zeichen-Name außerhalb des Wertebereiches"
+
+#~ msgid "escape sequence out of range for its type"
+#~ msgstr "Fluchtsequenz außerhalb des Wertebereiches seines Typs"
+
+#~ msgid "#import is obsolete, use an #ifndef wrapper in the header file"
+#~ msgstr "#import ist veraltet, benutzen Sie einen #ifndef-Wrapper in der Header-Datei"
+
+#~ msgid "#pragma once is obsolete"
+#~ msgstr "#pragma once ist veraltet"
+
+#~ msgid "the conditional began here"
+#~ msgstr "die Bedingung begann hier"
+
+#~ msgid "unterminated #%s"
+#~ msgstr "unbeendetes #%s"
+
+#~ msgid "macro \"%s\" is not used"
+#~ msgstr "Makro »%s« wird nicht benutzt"
+
+#~ msgid "\"%s\" redefined"
+#~ msgstr "»%s« redefiniert"
+
+#~ msgid "this is the location of the previous definition"
+#~ msgstr "dies ist die Stelle der vorherigen Definition"
+
+#~ msgid "%s: warnings being treated as errors\n"
+#~ msgstr "%s: Warnungen als Fehler behandelt\n"
+
+#~ msgid "At top level:"
+#~ msgstr "Auf höchster Ebene:"
+
+#~ msgid "In function `%s':"
+#~ msgstr "In Funktion »%s«:"
+
+#~ msgid ""
+#~ "Please submit a full bug report,\n"
+#~ "with preprocessed source if appropriate.\n"
+#~ "See %s for instructions.\n"
+#~ msgstr ""
+#~ "Bitte senden Sie einen vollständigen Fehlerbericht auf Englisch ein;\n"
+#~ "bearbeiten Sie die Quellen zunächst mit einem Präprozessor, wenn es\n"
+#~ "dienlich ist.\n"
+#~ "Fehler in der deutschen Ãœbersetzung sind an de@li.org zu melden.\n"
+#~ "\n"
+#~ "Gehen Sie gemäß den Hinweisen in %s vor.\n"
+
+#~ msgid "In file included from %s:%d"
+#~ msgstr "In von %s:%d eingefügter Datei"
+
+#~ msgid ""
+#~ ",\n"
+#~ " from %s:%d"
+#~ msgstr ""
+#~ ",\n"
+#~ " von %s:%d"
+
+#~ msgid "internal regno botch: `%s' has regno = %d\n"
+#~ msgstr "interner RegNr-Fehler: »%s« hat RegNr = %d\n"
+
+#~ msgid "support for the DWARF1 debugging format is deprecated"
+#~ msgstr "Unterstützung für das DWARF1-Debugging-Format ist veraltet"
+
+#~ msgid "unsupported wide integer operation"
+#~ msgstr "breite Ganzzahloperation nicht unterstützt"
+
+#~ msgid "mismatched braces in specs"
+#~ msgstr "unpassende geschweifte Klammern in Spezifikation"
+
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid "Could not open basic block file %s.\n"
+#~ msgstr "Konnte einfache Blockdatei %s nicht öffnen.\n"
+
+#~ msgid "Could not open program flow graph file %s.\n"
+#~ msgstr "Konnte Programmflussgraphdatei %s nicht öffnen.\n"
+
+#~ msgid "Could not open data file %s.\n"
+#~ msgstr "Konnte Datei %s nicht öffnen.\n"
+
+#~ msgid "Assuming that all execution counts are zero.\n"
+#~ msgstr "Angenommen, dass alle Ausführungszähler null sind.\n"
+
+#~ msgid "No executable code associated with file %s.\n"
+#~ msgstr "Kein ausführbarer Code mit Datei %s verbunden.\n"
+
+#~ msgid "didn't use all bb entries of graph, function %s\n"
+#~ msgstr "nicht alle bb-Einträge des Graphen wurden benutzt, Funktion %s\n"
+
+#~ msgid "block_num = %ld, num_blocks = %d\n"
+#~ msgstr "block_num = %ld, num_blocks = %d\n"
+
+#~ msgid "ERROR: unexpected line number %ld\n"
+#~ msgstr "FEHLER: nicht erwartete Zeilennummer %ld\n"
+
+#~ msgid "ERROR: too many basic blocks in function %s\n"
+#~ msgstr "FEHLER: zu viele Basis-Blöcke in Funktion %s\n"
+
+#~ msgid "ERROR: out of range line number in function %s\n"
+#~ msgstr "FEHLER: Zeilennummer außerhalb des Wertebereiches in Funktion %s\n"
+
+#~ msgid "Could not open source file %s.\n"
+#~ msgstr "Konnte Quelldatei %s nicht öffnen.\n"
+
+#~ msgid "Unexpected EOF while reading source file %s.\n"
+#~ msgstr "Unerwartetes Dateiende beim Lesen der Quelldatei %s.\n"
+
+#~ msgid "Creating %s.\n"
+#~ msgstr "Erzeuge %s.\n"
+
+#~ msgid "Name `%s' contains quotes"
+#~ msgstr "Name »%s« enthält Anführungszeichen"
+
+#~ msgid "invalid string `%s' in define_cpu_unit"
+#~ msgstr "ungültige Zeichenkette »%s« in define_cpu_unit"
+
+#~ msgid "invalid string `%s' in define_query_cpu_unit"
+#~ msgstr "ungültige Zeichenkette »%s« in define_query_cpu_unit"
+
+#~ msgid "invalid string `%s' in define_bypass"
+#~ msgstr "ungültige Zeichenkette »%s« in define_bypass"
+
+#~ msgid "invalid second string `%s' in exclusion_set"
+#~ msgstr "ungültige zweite Zeichenkette »%s« in exclusion_set"
+
+#~ msgid "invalid first string `%s' in presence_set"
+#~ msgstr "ungültige erste Zeichenkette »%s« in presence_set"
+
+#~ msgid "invalid second string `%s' in presence_set"
+#~ msgstr "ungültige zweite Zeichenkette »%s« in presence_set"
+
+#~ msgid "invalid first string `%s' in absence_set"
+#~ msgstr "ungültige erste Zeichenkette »%s« in absence_set"
+
+#~ msgid "invalid second string `%s' in absence_set"
+#~ msgstr "ungültige zweite Zeichenkette »%s« in absence_set"
+
+#~ msgid "invalid string `%s' in define_automaton"
+#~ msgstr "ungültige Zeichenkette »%s« in define_automaton"
+
+#~ msgid "invalid option `%s' in automata_option"
+#~ msgstr "ungültige Option »%s« in automata_option"
+
+#~ msgid "garbage after ) in reservation `%s'"
+#~ msgstr "Müll hinter ) in Reservierung »%s«"
+
+#~ msgid "invalid `%s' in reservation `%s'"
+#~ msgstr "ungültiges »%s« in Reservierung »%s«"
+
+#~ msgid "repetition `%s' <= 1 in reservation `%s'"
+#~ msgstr "Wiederholung »%s« <= 1 in Reservierung »%s«"
+
+#~ msgid "unit `%s' in exclusion is not declared"
+#~ msgstr "Einheit »%s« ist nicht im Ausschluss deklariert"
+
+#~ msgid "`%s' in exclusion is not unit"
+#~ msgstr "»%s« im Ausschluss ist keine Einheit"
+
+#~ msgid "unit `%s' excludes itself"
+#~ msgstr "Einheit »%s« schließt sich selbst aus"
+
+#~ msgid "units `%s' and `%s' in exclusion set belong to different automata"
+#~ msgstr "Einheiten »%s« und »%s« in Ausschlussmenge gehören zu verschiedenen Automaten"
+
+#~ msgid "unit `%s' excludes and requires presence of `%s'"
+#~ msgstr "Einheit »%s« schließt »%s« aus und erfordert dessen Anwesenheit"
+
+#~ msgid "unit `%s' requires absence and presence of `%s'"
+#~ msgstr "Einheit »%s« erfordert die An- und Abwesenheit von »%s«"
+
+#~ msgid "repeated declaration of automaton `%s'"
+#~ msgstr "wiederholte Deklaration des Automaten %s"
+
+#~ msgid "define_insn_reservation `%s' has negative latency time"
+#~ msgstr "define_insn_reservation »%s« hat negative Latenzzeit"
+
+#~ msgid "`%s' is already used as insn reservation name"
+#~ msgstr "»%s« wurde bereits als insn Reservierungsname verwendet"
+
+#~ msgid "define_bypass `%s - %s' has negative latency time"
+#~ msgstr "define_bypass »%s - %s« hat negative Latenzzeit"
+
+#~ msgid "define_unit `%s' without automaton when one defined"
+#~ msgstr "define_unit »%s« ohne Automat trotz Automatendefinition"
+
+#~ msgid "`%s' is declared as cpu unit"
+#~ msgstr "»%s« wurde als CPU-Einheit deklariert"
+
+#~ msgid "`%s' is declared as cpu reservation"
+#~ msgstr "»%s« wurde als CPU-Reservierung deklariert"
+
+#~ msgid "repeated declaration of unit `%s'"
+#~ msgstr "wiederholte Deklaration der Einheit »%s«"
+
+#~ msgid "repeated declaration of reservation `%s'"
+#~ msgstr "wiederholte Deklaration der Reservierung »%s«"
+
+#~ msgid "there is no insn reservation `%s'"
+#~ msgstr "es gibt keine insn-Reservierung »%s«"
+
+#~ msgid "the same bypass `%s - %s' is already defined"
+#~ msgstr "die selbe Überbrückung »%s - %s« wurde bereits definiert"
+
+#~ msgid "bypass `%s - %s' is already defined"
+#~ msgstr "Überbrückung »%s - %s« wurde bereits definiert"
+
+#~ msgid "undeclared unit or reservation `%s'"
+#~ msgstr "nicht deklarierte Einheit oder Reservierung »%s«"
+
+#~ msgid "unit `%s' is not used"
+#~ msgstr "Einheit »%s« wird nicht verwendet"
+
+#~ msgid "reservation `%s' is not used"
+#~ msgstr "Reservierung »%s« ist unbenutzt"
+
+#~ msgid "cycle in definition of reservation `%s'"
+#~ msgstr "Zyklus in Definition der Reservierung »%s«"
+
+#~ msgid "Units `%s' and `%s' should be in the same automaton"
+#~ msgstr "Einheiten »%s« und »%s« sollten im selben Automat sein"
+
+#~ msgid "-split has no argument."
+#~ msgstr "-split hat kein Argument."
+
+#~ msgid "option `-split' has not been implemented yet\n"
+#~ msgstr "Option »-split« wurde noch nicht implementiert\n"
+
+#~ msgid "Automaton `%s': Insn `%s' will never be issued"
+#~ msgstr "Automat »%s«: Insn »%s« wird nie verwendet"
+
+#~ msgid "Insn `%s' will never be issued"
+#~ msgstr "Insn »%s« wird nie verwendet"
+
+#~ msgid "Errors in DFA description"
+#~ msgstr "Fehler in DFA-Beschreibung"
+
+#~ msgid "Error in writing DFA description file %s"
+#~ msgstr "Fehler beim Schreiben der DFA-Definitionsdatei %s"
+
+#~ msgid "No input file name."
+#~ msgstr "Kein Eingabedateiname."
+
+#~ msgid "Profile does not match flowgraph of function %s (out of date?)"
+#~ msgstr "Profil passt nicht zum Flussgraphen der Funktion %s (veraltet?)"
+
+#~ msgid ".da file corrupted"
+#~ msgstr ".da-Datei beschädigt"
+
+#~ msgid "#`%s' not supported by %s#"
+#~ msgstr "#»%s« wird von %s# nicht unterstützt"
+
#~ msgid "Copyright (C) 2002 Free Software Foundation, Inc.\n"
#~ msgstr "Copyright © 2002 Free Software Foundation, Inc.\n"
diff --git a/gcc/po/fr.po b/gcc/po/fr.po
index fdaa5e68374..a63b8717e29 100644
--- a/gcc/po/fr.po
+++ b/gcc/po/fr.po
@@ -25,9 +25,12 @@
# thread
#
# J'ai des doutes pour :
-# inline = en-ligne (pas systématiquement)
-# section attribute attribut de section
-# wide char caractère long
+# inline = enligne (pas systématiquement)
+# oui dans le contexte du langage C par exemple MR
+# non autrement ...de manière générale MR
+# section attribute attribut de section OK MR
+# wide char caractère long ...non mieux caractère large MR
+# plus conforme à l'esprit.
#
# ------
# literals littéral, ou mot composé ?
@@ -63,7 +66,7 @@
# poisoning empoisonnement
# msgid "poisoning existing macro \"%s\""
# msgstr "empoisonnement de la macro existente « %s »"
-#
+# MR 9-jan 2004: poisoning etc... transformé par corruption corrompu etc..
#
# Autres règles:
# - j'ai ajouté un adjectif par rapport à l'anglais si le message est
@@ -74,8 +77,9 @@
# librairies, assumer
#
# A faire:
-# - s/en ligne/en-ligne/
-# - hors gamme
+# - s/en ligne/en-ligne/ modifié 9-janv-2004 MR
+# - s/en-ligne/enligne/ modifié 18-février-2004 MR pcq expression ou terme enlignage vs inlining
+# - hors gamme a été changé pour hors limite ...MR 09-jan-2004
# - literal
# - chaine de format => formatage
# - scope
@@ -111,1057 +115,1081 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU gcc 3.3-b20021230\n"
-"POT-Creation-Date: 2003-10-24 13:20+0200\n"
-"PO-Revision-Date: 2003-03-05 23:20+0100\n"
+"Project-Id-Version: GNU gcc 3.4-b20040206\n"
+"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
+"POT-Creation-Date: 2004-02-06 01:40+0000\n"
+"PO-Revision-Date: 2004-02-20 21:00-0500\n"
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
"Language-Team: French <traduc@traduc.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
-#: attribs.c:185
+#: attribs.c:178
#, c-format
msgid "`%s' attribute directive ignored"
msgstr "attribut de directive « %s » ignoré"
-#: attribs.c:193
+#: attribs.c:186
#, c-format
msgid "wrong number of arguments specified for `%s' attribute"
msgstr "nombre erroné d'arguments spécifié pour l'attribut « %s »"
-#: attribs.c:210
+#: attribs.c:203
#, c-format
msgid "`%s' attribute does not apply to types"
msgstr "l'attribut « %s » ne s'applique pas aux types"
-#: attribs.c:247
+#: attribs.c:249
#, c-format
msgid "`%s' attribute only applies to function types"
msgstr "l'attribut « %s » ne s'applique qu'à des types de fonction"
-#: attribs.c:404 c-common.c:5275 c-common.c:5297 c-common.c:5319
-#: c-common.c:5350 c-common.c:5372 c-common.c:5397 c-common.c:5423
-#: c-common.c:5453 c-common.c:5491 c-common.c:5538 c-common.c:5568
-#: c-common.c:5598 c-common.c:5621 c-common.c:5878 c-common.c:5900
-#: c-common.c:5943 c-common.c:6020 c-common.c:6076 c-common.c:6103
-#: c-common.c:6186 c-common.c:6220 c-common.c:6574 config/arm/arm.c:2101
-#: config/arm/arm.c:2128 config/avr/avr.c:4774 config/h8300/h8300.c:3693
-#: config/h8300/h8300.c:3718 config/i386/i386.c:1403 config/i386/winnt.c:78
-#: config/ip2k/ip2k.c:3204
+#: attribs.c:416 c-common.c:4344 c-common.c:4363 c-common.c:4381
+#: c-common.c:4408 c-common.c:4427 c-common.c:4450 c-common.c:4473
+#: c-common.c:4499 c-common.c:4533 c-common.c:4577 c-common.c:4605
+#: c-common.c:4633 c-common.c:4652 c-common.c:4907 c-common.c:4929
+#: c-common.c:4964 c-common.c:5031 c-common.c:5077 c-common.c:5135
+#: c-common.c:5166 c-common.c:5512 c-common.c:5535 c-common.c:5574
+#: config/arm/arm.c:2278 config/arm/arm.c:2305 config/avr/avr.c:4539
+#: config/h8300/h8300.c:4281 config/h8300/h8300.c:4304 config/i386/i386.c:1599
+#: config/i386/i386.c:15299 config/i386/winnt.c:86 config/ia64/ia64.c:1053
+#: config/ip2k/ip2k.c:3151
#, c-format
msgid "`%s' attribute ignored"
msgstr "attribut « %s » ignoré"
-#: builtins.c:285
+#: builtins.c:318
msgid "offset outside bounds of constant string"
msgstr "décalage hors des limites d'une chaîne de constante"
-#: builtins.c:765
+#: builtins.c:786
msgid "second arg to `__builtin_prefetch' must be a constant"
msgstr "second argument de « __builtin_prefetch » doit être une constante"
-#: builtins.c:772
+#: builtins.c:793
msgid "invalid second arg to __builtin_prefetch; using zero"
msgstr "second argument invalide de « __builtin_prefetch »; utilisation de zéro"
-#: builtins.c:779
+#: builtins.c:800
msgid "third arg to `__builtin_prefetch' must be a constant"
msgstr "troisième argument de « __builtin_prefetch » doit être une constante"
-#: builtins.c:786
+#: builtins.c:807
msgid "invalid third arg to __builtin_prefetch; using zero"
msgstr "troisième argument invalide de « __builtin_prefetch »; utilisation de zéro"
-#. ??? 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:2875
-msgid "__builtin_saveregs not supported by this target"
-msgstr "« __builtin_saveregs » n'est pas supporté par cette cible"
-
-#: builtins.c:2917
+#: builtins.c:3828
msgid "argument of `__builtin_args_info' must be constant"
msgstr "argument de « __builtin_args_info » doit être une constante"
-#: builtins.c:2923
+#: builtins.c:3834
msgid "argument of `__builtin_args_info' out of range"
msgstr "argument de « __builtin_args_info » hors des limites"
-#: builtins.c:2929
+#: builtins.c:3840
msgid "missing argument in `__builtin_args_info'"
msgstr "argument manquant dans « __builtin_args_info »"
-#: builtins.c:2960
+#: builtins.c:3856
msgid "`va_start' used in function with fixed args"
msgstr "« va_start » utilisé dans une fonction ayant des arguments fixes"
-#: builtins.c:2979
+#: builtins.c:3875
msgid "second parameter of `va_start' not last named argument"
msgstr "second paramètre de « va_start » n'est pas le dernier argument nommé"
#. 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:2984
+#: builtins.c:3880
msgid "`__builtin_next_arg' called without an argument"
msgstr "« __builtin_next_arg » appelé sans argument"
-#: builtins.c:3070
+#: builtins.c:3969
msgid "too many arguments to function `va_start'"
msgstr "trop d'arguments pour la function « va_start »"
-#: builtins.c:3172
+#: builtins.c:4091
msgid "first argument to `va_arg' not of type `va_list'"
msgstr "premier argument de « va_arg » n'est pas de type « va_list »"
#. Unfortunately, this is merely undefined, rather than a constraint
#. violation, so we cannot make this an error. If this call is never
#. executed, the program is still strictly conforming.
-#: builtins.c:3204
+#: builtins.c:4123
#, c-format
msgid "`%s' is promoted to `%s' when passed through `...'"
msgstr "« %s » a été promu à « %s » lors du passage à travers « ... »"
-#: builtins.c:3209
+#: builtins.c:4128
#, c-format
msgid "(so you should pass `%s' not `%s' to `va_arg')"
msgstr "(vous devriez donc passer « %s » et non « %s » à « va_arg »)"
-#: builtins.c:3340
+#: builtins.c:4240
msgid "invalid arg to `__builtin_frame_address'"
msgstr "argument de « __builtin_frame_address » invalide"
-#: builtins.c:3342
+#: builtins.c:4242
msgid "invalid arg to `__builtin_return_address'"
msgstr "argument de « __builtin_return_address » invalide"
-#: builtins.c:3356
+#: builtins.c:4256
msgid "unsupported arg to `__builtin_frame_address'"
msgstr "argument de « __builtin_frame_address » non supporté"
-#: builtins.c:3358
+#: builtins.c:4258
msgid "unsupported arg to `__builtin_return_address'"
msgstr "argument de « __builtin_return_address » non supporté"
-#: builtins.c:3530
+#: builtins.c:4418
msgid "second arg to `__builtin_expect' must be a constant"
msgstr "le second argument de « __builtin_expect » doit être une constante"
-#: builtins.c:4028
+#: builtins.c:5359
msgid "__builtin_longjmp second argument must be 1"
msgstr "le second argument de « __builtin_longjmp » doit être 1"
-#. just do library call, if unknown builtin
-#: builtins.c:4092 c-common.c:4459
+#: builtins.c:5454
#, c-format
msgid "built-in function `%s' not currently supported"
msgstr "fonction interne « %s » n'est pas actuellement supportée"
-#: builtins.c:4165
+#: builtins.c:5594
msgid "target format does not support infinity"
msgstr "le format cible ne supporte pas l'infini"
-#: c-common.c:1168
-#, c-format
-msgid "`%s' is not defined outside of function scope"
-msgstr "« %s » n'est pas défini à l'extérieur de la portée de la fonction"
+#: c-common.c:934
+msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
+msgstr "%Hon vous suggère des accolades explicitement pour éviter des « else » ambiguës"
+
+#: c-common.c:1158
+msgid "%J'%D' is not defined outside of function scope"
+msgstr "%J« %D » n'est pas défini à l'extérieur de la portée de la fonction"
-#: c-common.c:1189
+#: c-common.c:1178
#, c-format
msgid "string length `%d' is greater than the length `%d' ISO C%d compilers are required to support"
-msgstr "longueur de la chaîne « %d » plus grande que la longueur « %d » que les compilateurs C%d ISO doivent supporter"
-
-#: c-common.c:1247
-msgid "concatenation of string literals with __FUNCTION__ is deprecated"
-msgstr "la concaténation de chaînes de litéraux avec « __FUNCTION__ » est obsolète"
+msgstr "longueur de la chaîne « %d » plus grande que la longueur « %d » que les compilateurs ISO C%d doivent supporter"
-#: c-common.c:1343
+#: c-common.c:1218
msgid "overflow in constant expression"
msgstr "débordement dans l'expression de la constante"
-#: c-common.c:1364
+#: c-common.c:1238
msgid "integer overflow in expression"
msgstr "débordement d'entier dans l'expression"
-#: c-common.c:1373
+#: c-common.c:1247
msgid "floating point overflow in expression"
msgstr "débordement d'un nombre en virgule flottante dans l'expression"
-#: c-common.c:1379
+#: c-common.c:1253
msgid "vector overflow in expression"
msgstr "débordement du vecteur dans l'expression"
#. This detects cases like converting -129 or 256 to unsigned char.
-#: c-common.c:1402
+#: c-common.c:1275
msgid "large integer implicitly truncated to unsigned type"
msgstr "grand entier implicitement tronqué pour un type non signé"
-#: c-common.c:1404
+#: c-common.c:1277
msgid "negative integer implicitly converted to unsigned type"
msgstr "entier négatif implicitement converti en un type non signé"
-#: c-common.c:1452
+#: c-common.c:1323
msgid "overflow in implicit constant conversion"
msgstr "débordement dans la conversion implicte de la constante"
-#: c-common.c:1600
+#: c-common.c:1459
#, c-format
msgid "operation on `%s' may be undefined"
msgstr "l'opération portant sur « %s » est peut être indéfinie"
-#: c-common.c:1891
+#: c-common.c:1743
msgid "expression statement has incomplete type"
msgstr "la déclaration de l'expression a un type incomplet"
-#: c-common.c:1924
+#: c-common.c:1775
msgid "case label does not reduce to an integer constant"
msgstr "l'étiquette du « case » ne se réduit pas en une constante entière"
-#: c-common.c:2228
+#: c-common.c:2105
msgid "invalid truth-value expression"
msgstr "expression valeur de vérité invalide"
-#: c-common.c:2279
+#: c-common.c:2156
#, c-format
msgid "invalid operands to binary %s"
msgstr "opérandes invalides pour le binaire %s"
-#: c-common.c:2513
+#: c-common.c:2390
msgid "comparison is always false due to limited range of data type"
msgstr "comparaison est toujours fausse en raison d'une gamme limitée de type de données"
-#: c-common.c:2515
+#: c-common.c:2392
msgid "comparison is always true due to limited range of data type"
msgstr "comparaison est toujours vraie en raison d'une gamme limitée de type de données"
-#: c-common.c:2585
+#: c-common.c:2462
msgid "comparison of unsigned expression >= 0 is always true"
msgstr "comparaison d'une expression non signée >=0 est toujours vraie"
-#: c-common.c:2594
+#: c-common.c:2471
msgid "comparison of unsigned expression < 0 is always false"
msgstr "comparaison d'une expression non signée < 0 est toujours fausse"
-#: c-common.c:2641
+#: c-common.c:2516
msgid "pointer of type `void *' used in arithmetic"
msgstr "usage en arithmétique d'un pointeur de type « void * »"
-#: c-common.c:2647
+#: c-common.c:2522
msgid "pointer to a function used in arithmetic"
msgstr "usage en arithmétique d'un pointeur vers une fonction"
-#: c-common.c:2653
+#: c-common.c:2528
msgid "pointer to member function used in arithmetic"
msgstr "usage en arithmétique d'un pointeur vers une fonction membre"
-#: c-common.c:2659
+#: c-common.c:2534
msgid "pointer to a member used in arithmetic"
msgstr "usage en arithmétique d'un pointeur vers un membre"
-#: c-common.c:2746 f/com.c:14762
+#: c-common.c:2623 f/com.c:14734
msgid "struct type value used where scalar is required"
msgstr "valeur de type « struct » utilisé là où un scalaire est attendu"
-#: c-common.c:2750 f/com.c:14766
+#: c-common.c:2627 f/com.c:14738
msgid "union type value used where scalar is required"
msgstr "valeur de type « union » utilisé là où un scalaire est attendu"
-#: c-common.c:2754 f/com.c:14770
+#: c-common.c:2631 f/com.c:14742
msgid "array type value used where scalar is required"
msgstr "valeur de type « array » utilisé là où un scalaire est attendu"
-#: c-common.c:2874 f/com.c:14903
+#. Common Ada/Pascal programmer's mistake. We always warn
+#. about this since it is so bad.
+#: c-common.c:2668
+msgid "the address of `%D', will always evaluate as `true'"
+msgstr "l'adresse de « %D » sera toujours évaluée comme étant « true »"
+
+#: c-common.c:2762 f/com.c:14874
msgid "suggest parentheses around assignment used as truth value"
msgstr "parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité"
-#: c-common.c:2918 c-common.c:2950
+#: c-common.c:2808 c-common.c:2848
msgid "invalid use of `restrict'"
msgstr "usage de « restrict » invalide"
-#: c-common.c:3064
+#: c-common.c:2958
msgid "invalid application of `sizeof' to a function type"
msgstr "application de « sizeof » sur un type de fonction invalide"
-#: c-common.c:3074
+#: c-common.c:2968
#, c-format
msgid "invalid application of `%s' to a void type"
msgstr "application invalide de « %s » sur un type void"
-#: c-common.c:3080
+#: c-common.c:2974
#, c-format
msgid "invalid application of `%s' to an incomplete type"
msgstr "application invalide de « %s » sur un type incomplet"
-#: c-common.c:3121
+#: c-common.c:3014
msgid "`__alignof' applied to a bit-field"
msgstr "« __alignof » appliqué sur un champ de bits"
-#: c-common.c:3618
+#: c-common.c:3506
#, c-format
msgid "cannot disable built-in function `%s'"
msgstr "ne peut désactiver la fonction interne « %s »"
-#: c-common.c:3787 c-typeck.c:1748
+#: c-common.c:3667 c-typeck.c:1941
#, c-format
msgid "too few arguments to function `%s'"
msgstr "pas assez d'arguments pour la fonction « %s »"
-#: c-common.c:3793 c-typeck.c:1601
+#: c-common.c:3673 c-typeck.c:1802
#, c-format
msgid "too many arguments to function `%s'"
msgstr "trop d'arguments pour la fonction « %s »"
-#: c-common.c:3812
+#: c-common.c:3692
#, c-format
msgid "non-floating-point argument to function `%s'"
msgstr "argument pour la fonction « %s » n'étant pas en virgule flottante"
-#: c-common.c:4081
+#: c-common.c:3919
msgid "pointers are not permitted as case values"
msgstr "les pointeurs ne sont pas permis comme valeurs de « case »"
-#: c-common.c:4087
-msgid "ISO C++ forbids range expressions in switch statements"
-msgstr "le C++ ISO interdit les intervalles dans les déclarations de « switch »"
-
-#: c-common.c:4089
-msgid "ISO C forbids range expressions in switch statements"
-msgstr "le C ISO interdit les intervalles dans les « switch »"
+#: c-common.c:3923
+msgid "range expressions in switch statements are non-standard"
+msgstr "l'étendue des expressions dans les déclarations switch ne sont pas standard"
-#: c-common.c:4119
+#: c-common.c:3952
msgid "empty range specified"
msgstr "intervalle vide spécifié"
-#: c-common.c:4170
+#: c-common.c:4003
msgid "duplicate (or overlapping) case value"
msgstr "valeur du « case » duppliquée (ou en chevauchant une autre)"
-#: c-common.c:4172
-msgid "this is the first entry overlapping that value"
-msgstr "ceci est la première entrée chevauchant cette valeur"
+#: c-common.c:4004
+msgid "%Jthis is the first entry overlapping that value"
+msgstr "%Jest la première entrée chevauchant cette valeur"
-#: c-common.c:4176
+#: c-common.c:4008
msgid "duplicate case value"
msgstr "valeur du « case » duppliquée"
-#: c-common.c:4177
-msgid "previously used here"
-msgstr "précédemment utilisé ici"
+#: c-common.c:4009
+msgid "%Jpreviously used here"
+msgstr "%Jprécédemment utilisé ici"
-#: c-common.c:4181
+#: c-common.c:4013
msgid "multiple default labels in one switch"
msgstr "plusieurs étiquettes par défaut dans un « switch »"
-#: c-common.c:4182
-msgid "this is the first default label"
-msgstr "ceci est la première étiquette de défaut"
+#: c-common.c:4014
+msgid "%Jthis is the first default label"
+msgstr "%Jest la première étiquette par défaut"
+
+#: c-common.c:4039
+msgid "taking the address of a label is non-standard"
+msgstr "prendre l'adresse d'une étiquette n'est pas standard"
+
+#: c-common.c:4085
+msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
+msgstr "%Hvaleur à retourner « %D » ignorée, déclarée avec l'attribut warn_unused_result"
-#: c-common.c:4210
-msgid "ISO C++ forbids taking the address of a label"
-msgstr "le C++ ISO interdit de prendre l'adresse d'une étiquette"
+#: c-common.c:4090
+msgid "%Hignoring return value of function declared with attribute warn_unused_result"
+msgstr "%Hvaleur à retourner ignorée de la fonction déclarée avec l'attribut warn_unused_result"
-#: c-common.c:4212
-msgid "ISO C forbids taking the address of a label"
-msgstr "le C ISO interdit de prendre l'adresse d'une étiquette"
+#. SW_PARAM
+#: c-common.c:4297
+#, c-format
+msgid "declaration of \"%s\" shadows a parameter"
+msgstr "la déclaration de « %s » masque un paramètre"
-#: c-common.c:5235
+#. SW_LOCAL
+#: c-common.c:4298
#, c-format
-msgid "declaration of `%s' shadows %s"
-msgstr "la déclaration de « %s » masque %s"
+msgid "declaration of \"%s\" shadows a previous local"
+msgstr "la déclaration de « %s » masque la déclaration d'un local précédent"
+
+#. SW_GLOBAL
+#: c-common.c:4299
+#, c-format
+msgid "declaration of \"%s\" shadows a global declaration"
+msgstr "la déclaration de « %s » masque une déclaration globale"
+
+#: c-common.c:4303
+msgid "%Jshadowed declaration is here"
+msgstr "%Jdéclaration est masquée ici"
-#: c-common.c:5654
+#: c-common.c:4686
#, c-format
msgid "unknown machine mode `%s'"
msgstr "mode machine « %s » inconnu"
-#: c-common.c:5657
+#: c-common.c:4689
#, c-format
msgid "no data type for mode `%s'"
msgstr "aucun type de données pour le mode « %s »"
-#: c-common.c:5666 c-common.c:6316
+#: c-common.c:4693
+#, c-format
+msgid "invalid pointer mode `%s'"
+msgstr "mode pointeur invalide « %s »"
+
+#: c-common.c:4700 c-common.c:5263
#, c-format
msgid "unable to emulate '%s'"
msgstr "impossible d'émuler « %s »"
-#: c-common.c:5702
-msgid "section attribute cannot be specified for local variables"
-msgstr "l'attribut de section ne peut être spécifié pour des variables locales"
+#: c-common.c:4744
+msgid "%Jsection attribute cannot be specified for local variables"
+msgstr "%Jl'attribut de section ne peut être spécifié pour des variables locales"
-#: c-common.c:5713
-#, c-format
-msgid "section of `%s' conflicts with previous declaration"
-msgstr "section de « %s » en conflit avec une déclaration précédente"
+#: c-common.c:4755
+msgid "%Jsection of '%D' conflicts with previous declaration"
+msgstr "%Jsection de « %D » en conflit avec une déclaration précédente"
-#: c-common.c:5722
-#, c-format
-msgid "section attribute not allowed for `%s'"
-msgstr "attribut de section n'est pas permis pour « %s »"
+#: c-common.c:4764
+msgid "%Jsection attribute not allowed for '%D'"
+msgstr "%Jattribut de section n'est pas permis pour « %D »"
-#: c-common.c:5729
-msgid "section attributes are not supported for this target"
-msgstr "attribut de section ne sont pas supportés pour la cible"
+#: c-common.c:4770
+msgid "%Jsection attributes are not supported for this target"
+msgstr "%Jattributs de section ne sont pas supportés pour la cible"
-#: c-common.c:5771
+#: c-common.c:4808
msgid "requested alignment is not a constant"
msgstr "l'alignement demandé n'est pas une constante"
-#: c-common.c:5776
+#: c-common.c:4813
msgid "requested alignment is not a power of 2"
msgstr "l'alignement demandé n'est pas une puissance de 2"
-#: c-common.c:5781
+#: c-common.c:4818
msgid "requested alignment is too large"
msgstr "l'alignement demandé est trop grand"
-#: c-common.c:5808
-#, c-format
-msgid "alignment may not be specified for `%s'"
-msgstr "l'alignement ne peut pas être spécifié pour « %s »"
+#: c-common.c:4844
+msgid "%Jalignment may not be specified for '%D'"
+msgstr "%Jl'alignement ne peut pas être spécifié pour « %D »"
-#: c-common.c:5853
-#, c-format
-msgid "`%s' defined both normally and as an alias"
-msgstr "« %s » défini à la fois normalement et en tant qu'alias"
+#: c-common.c:4882
+msgid "%J'%D' defined both normally and as an alias"
+msgstr "%J'%D défini à la fois normalement et en tant qu'alias"
-#: c-common.c:5863
+#: c-common.c:4892
msgid "alias arg not a string"
msgstr "l'argument d'alias n'est pas une chaîne"
-#: c-common.c:5910
+#: c-common.c:4935
msgid "visibility arg not a string"
msgstr "l'argument de visibilité n'est pas une chaîne"
-#: c-common.c:5919
+#: c-common.c:4948
msgid "visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""
msgstr "l'argument de visibilité doit être l'un de « default » (par défaut), « hidden » (masqué), « protected » (protégé) ou « internal » (interne)"
-#: c-common.c:5953
+#: c-common.c:4974
msgid "tls_model arg not a string"
msgstr "l'argument de tls_model n'est pas une chaîne"
-#: c-common.c:5962
+#: c-common.c:4983
msgid "tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
msgstr "l'argument de tls_model doit être l'un de « local-exec », « initial-exec », « local-dynamic » or « global-dynamic »"
-#: c-common.c:5987 c-common.c:6043
-#, c-format
-msgid "`%s' attribute applies only to functions"
-msgstr "l'attribut « %s » ne s'applique seulement qu'à des fonctions"
+#: c-common.c:5005 c-common.c:5051
+msgid "%J'%E' attribute applies only to functions"
+msgstr "%J'%E l'attribut ne s'applique seulement qu'à des fonctions"
-#: c-common.c:5994 c-common.c:6050
-#, c-format
-msgid "can't set `%s' attribute after definition"
-msgstr "ne peut initialiser l'attribut « %s » après définition"
-
-#: c-common.c:6114
-#, fuzzy
-msgid "cleanup arg not an identifier"
-msgstr "tranche de la longueur n'est pas un entier"
+#: c-common.c:5010 c-common.c:5056
+msgid "%Jcan't set '%E' attribute after definition"
+msgstr "%Jne peut initialiser l'attribut « %E » après définition"
-#: c-common.c:6121
-#, fuzzy
-msgid "cleanup arg not a function"
-msgstr "l'objet appelé n'est pas une fonction"
-
-#: c-common.c:6183
+#: c-common.c:5132
#, c-format
msgid "`%s' attribute ignored for `%s'"
msgstr "attribut « %s » ignoré pour « %s »"
-#: c-common.c:6248
+#: c-common.c:5195
#, c-format
msgid "invalid vector type for attribute `%s'"
msgstr "type de vecteur invalide pour l'attribut « %s »"
-#: c-common.c:6272 c-common.c:6304
+#: c-common.c:5219 c-common.c:5251
msgid "no vector mode with the size and type specified could be found"
msgstr "aucun mode vecteur avec la taille et le type spécifié n'a été trouvé"
-#: c-common.c:6403
+#: c-common.c:5353
msgid "nonnull attribute without arguments on a non-prototype"
msgstr "attribut non nul sans argument sur un non-prototype"
-#: c-common.c:6418
+#: c-common.c:5368
#, c-format
msgid "nonnull argument has invalid operand number (arg %lu)"
msgstr "un argument non nul a un nombre d'opérande invalide (argument %lu)"
-#: c-common.c:6437
+#: c-common.c:5387
#, c-format
msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
msgstr "un argument non nul a un nombre d'opérande hors des bornes (arg %lu, opérande %lu)"
-#: c-common.c:6445
+#: c-common.c:5395
#, c-format
msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
msgstr "un argument non nul référence une opérande qui n'est pas un pointeur (arg %lu, opérande %lu)"
-#: c-common.c:6531
+#: c-common.c:5475
#, c-format
msgid "null argument where non-null required (arg %lu)"
msgstr "argument nul là où un non-nul est requis (arg %lu)"
-#: c-convert.c:80 c-typeck.c:988 c-typeck.c:4059 cp/typeck.c:1615
-#: cp/typeck.c:5939
-msgid "void value not ignored as it ought to be"
-msgstr "valeur void n'a pas été ignorée comme elle aurait dû l'être"
-
-#: c-convert.c:112 java/typeck.c:150
-msgid "conversion to non-scalar type requested"
-msgstr "conversion vers un type non scalaire demandée"
-
-#: c-decl.c:340
-#, c-format
-msgid "array `%s' assumed to have one element"
-msgstr "il est supposé que le tableau « %s » a un élément"
-
-#: c-decl.c:526
-#, c-format
-msgid "`struct %s' incomplete in scope ending here"
-msgstr "« struct %s » incomplète dans le champ terminant ici"
+#: c-common.c:5546
+msgid "cleanup arg not an identifier"
+msgstr "argument de nettoyage n'est pas un identificateur"
-#: c-decl.c:529
-#, c-format
-msgid "`union %s' incomplete in scope ending here"
-msgstr "« union %s » incomplète dans le champ terminant ici"
+#: c-common.c:5553
+msgid "cleanup arg not a function"
+msgstr "argument de nettoyage n'est pas une fonction"
-#: c-decl.c:532
+#: c-common.c:5914
#, c-format
-msgid "`enum %s' incomplete in scope ending here"
-msgstr "« enum %s » incomplète dans le champ terminant ici"
+msgid "%s at end of input"
+msgstr "%s à la fin de l'entrée"
-#: c-decl.c:646 c-decl.c:771 java/decl.c:1403
+#: c-common.c:5920
#, c-format
-msgid "label `%s' used but not defined"
-msgstr "étiquette « %s » utilisée mais non définie"
+msgid "%s before %s'%c'"
+msgstr "%s avant %s« %c »"
-#: c-decl.c:652 c-decl.c:778 java/decl.c:1409
+#: c-common.c:5922
#, c-format
-msgid "label `%s' defined but not used"
-msgstr "étiquette « %s » définie mais pas utilisée"
+msgid "%s before %s'\\x%x'"
+msgstr "%s avant %s'\\x%x'"
-#: c-decl.c:893 cp/decl.c:3335
+#: c-common.c:5926
#, c-format
-msgid "function `%s' redeclared as inline"
-msgstr "fonction « %s » redéclarée comme étant inline"
+msgid "%s before string constant"
+msgstr "%s avant une chaîne constante"
-#: c-decl.c:895 cp/decl.c:3337
+#: c-common.c:5928
#, c-format
-msgid "previous declaration of function `%s' with attribute noinline"
-msgstr "déclaration précédente de la fonction « %s » avec l'attribut noinline"
+msgid "%s before numeric constant"
+msgstr "%s avant une constante numérique"
-#: c-decl.c:902 cp/decl.c:3344
+#: c-common.c:5930
#, c-format
-msgid "function `%s' redeclared with attribute noinline"
-msgstr "fonction « %s » redéclarée avec l'attribut noinline"
+msgid "%s before \"%s\""
+msgstr "%s avant « %s »"
-#: c-decl.c:904 cp/decl.c:3346
+#: c-common.c:5932
#, c-format
-msgid "previous declaration of function `%s' was inline"
-msgstr "la déclaration précédente de la fonction « %s » était inline"
+msgid "%s before '%s' token"
+msgstr "%s avant un élément lexical « %s »"
-#: c-decl.c:933 c-decl.c:979
+#. Use `%s' to print the string in case there are any escape
+#. characters in the message.
+#: c-common.c:5934 c-typeck.c:2578 c-typeck.c:3970 c-typeck.c:3985
+#: c-typeck.c:4000 final.c:2776 final.c:2778 gcc.c:4574 rtl-error.c:109
+#: toplev.c:1340 config/cris/cris.c:545 cp/parser.c:1848 cp/typeck.c:4111
+#: java/expr.c:356 java/verify.c:1456 java/verify.c:1457 java/verify.c:1472
#, c-format
-msgid "shadowing built-in function `%s'"
-msgstr "masquage de la fonction interne « %s »"
+msgid "%s"
+msgstr "%s"
-#: c-decl.c:935
-#, c-format
-msgid "shadowing library function `%s'"
-msgstr "masquage de la fonction « %s » de la bibliothèque"
+#: c-convert.c:82 c-typeck.c:1193 c-typeck.c:3410 cp/typeck.c:1337
+#: cp/typeck.c:5648 treelang/tree-convert.c:79
+msgid "void value not ignored as it ought to be"
+msgstr "valeur void n'a pas été ignorée comme elle aurait dû l'être"
-#: c-decl.c:941
-#, c-format
-msgid "library function `%s' declared as non-function"
-msgstr "fonction « %s » de la bibliothèque déclarée comme n'étant pas une fonction"
+#: c-convert.c:114 java/typeck.c:148 treelang/tree-convert.c:105
+msgid "conversion to non-scalar type requested"
+msgstr "conversion vers un type non scalaire demandée"
-#: c-decl.c:945 c-decl.c:948
-#, c-format
-msgid "built-in function `%s' declared as non-function"
-msgstr "fonction interne « %s » n'est pas déclarée comme une fonction"
+#: c-decl.c:371
+msgid "%Jarray '%D' assumed to have one element"
+msgstr "%Jon assume que le tableau « %D » n'a qu'un seul élément"
-#: c-decl.c:952 objc/objc-act.c:2384 objc/objc-act.c:6154
-#, c-format
-msgid "`%s' redeclared as different kind of symbol"
-msgstr "« %s » redéclaré comme une autre sorte de symbole"
+#: c-decl.c:580
+msgid "%Jlabel `%D' used but not defined"
+msgstr "%Jétiquette « %D » utilisée mais non définie"
-#: c-decl.c:953 c-decl.c:1144 c-decl.c:1158 c-decl.c:1165 c-decl.c:1310
-#: objc/objc-act.c:2386 objc/objc-act.c:6156 objc/objc-act.c:6211
-#, c-format
-msgid "previous declaration of `%s'"
-msgstr "déclaration précédente de « %s »"
+#: c-decl.c:586
+msgid "%Jlabel `%D' defined but not used"
+msgstr "%Jétiquette « %D » définie mais non utilisée"
-#. If types don't match for a built-in, throw away the built-in.
-#: c-decl.c:1048
-#, c-format
-msgid "conflicting types for built-in function `%s'"
-msgstr "types conflictuels pour la fonction interne « %s »"
+#: c-decl.c:588
+msgid "%Jlabel `%D' declared but not defined"
+msgstr "%Jétiquette « %D » utilisée mais non définie"
-#: c-decl.c:1091 c-decl.c:1110
-#, c-format
-msgid "conflicting types for `%s'"
-msgstr "types conflictuels pour « %s »"
+#: c-decl.c:613
+msgid "%Junused variable `%D'"
+msgstr "%Jvariable inutilisée « %D »"
-#: c-decl.c:1133
+#: c-decl.c:821
msgid "a parameter list with an ellipsis can't match an empty parameter name list declaration"
msgstr "un paramètre de la liste avec une ellipse ne peut concorder une déclaration vide de liste de noms de paramètres"
-#: c-decl.c:1139
+#: c-decl.c:828
msgid "an argument type that has a default promotion can't match an empty parameter name list declaration"
msgstr "un type d'argument ayant une promotion par défaut ne peut concorder avec une déclaration vide de noms de paramètres"
-#: c-decl.c:1157
-#, c-format
-msgid "thread-local declaration of `%s' follows non thread-local declaration"
-msgstr "déclaration locale au thread de « %s » après une déclaration non locale au thread"
+#: c-decl.c:864
+msgid "%Jprototype for '%D' declares more arguments than previous old-style definition"
+msgstr "%Jprototype pour « %D » déclare plus d'arguments que la définition précédente de style ancien"
+
+#: c-decl.c:870
+msgid "%Jprototype for '%D' declares fewer arguments than previous old-style definition"
+msgstr "%Jprototype pour « %D » déclare moins d'arguments que la définition précédente de style ancien"
+
+#: c-decl.c:879
+msgid "%Jprototype for '%D' declares arg %d with incompatible type"
+msgstr "%Jprototype pour « %D » déclare l'arguments %d avec un type incompatible"
+
+#. If we get here, no errors were found, but do issue a warning
+#. for this poor-style construct.
+#: c-decl.c:891
+msgid "%Jprototype for '%D' follows non-prototype definition"
+msgstr "%Jprototype pour « %D » suit la définition d'un non prototype"
-#: c-decl.c:1164
-#, c-format
-msgid "non thread-local declaration of `%s' follows thread-local declaration"
-msgstr "déclaration non locale au thread de « %s » après une déclaration locale au thread"
+#: c-decl.c:906
+msgid "%Jprevious definition of '%D' was here"
+msgstr "%Jdéfinition précédente de « %D » était ici"
-#: c-decl.c:1175 c-decl.c:1198
-#, c-format
-msgid "redefinition of `%s'"
-msgstr "redéfinition de « %s »"
+#: c-decl.c:908
+msgid "%Jprevious implicit declaration of '%D' was here"
+msgstr "%Jdéclaration précédente implicite de « %D » était ici"
-#: c-decl.c:1178
-#, c-format
-msgid "redeclaration of `%s'"
-msgstr "redéclaration de « %s »"
+#: c-decl.c:910
+msgid "%Jprevious declaration of '%D' was here"
+msgstr "%Jdéclaration précédente de « %D » était ici"
-#: c-decl.c:1181
-#, c-format
-msgid "conflicting declarations of `%s'"
-msgstr "déclarations conflictuelles de « %s »"
+#: c-decl.c:944
+msgid "%J'%D' redeclared as different kind of symbol"
+msgstr "%J« %D » redéclaré comme une sorte différente de symbole"
-#: c-decl.c:1225
-#, c-format
-msgid "prototype for `%s' follows"
-msgstr "le prototype de « %s » suit"
+#: c-decl.c:949
+msgid "%Jbuilt-in function '%D' declared as non-function"
+msgstr "%Jfonction interne « %D » n'est pas déclarée comme une fonction"
-#: c-decl.c:1226 c-decl.c:1234 c-decl.c:1245
-msgid "non-prototype definition here"
-msgstr "définition d'un non prototype ici"
+#: c-decl.c:952 c-decl.c:1042
+msgid "%Jshadowing built-in function '%D'"
+msgstr "%Jmasquage de la fonction interne « %D »"
-#: c-decl.c:1233
-#, c-format
-msgid "prototype for `%s' follows and number of arguments doesn't match"
-msgstr "le prototype de « %s » suit mais le nombre d'arguments ne concorde pas"
+#. If types don't match for a built-in, throw away the
+#. built-in. No point in calling locate_old_decl here, it
+#. won't print anything.
+#: c-decl.c:972
+msgid "%Jconflicting types for built-in function '%D'"
+msgstr "%Jtypes conflictuels pour la fonction interne « %D »"
-#: c-decl.c:1243
-#, c-format
-msgid "prototype for `%s' follows and argument %d doesn't match"
-msgstr "le prototype de « %s » suit mais le nombre d'arguments %d ne concorde pas"
+#: c-decl.c:996 c-decl.c:1004
+msgid "%Jconflicting types for '%D'"
+msgstr "%Jtypes conflictuels pour « %D »"
-#: c-decl.c:1261
-#, c-format
-msgid "`%s' declared inline after being called"
-msgstr "« %s » déclaré en-ligne après avoir été appelé"
+#. allow OLDDECL to continue in use
+#: c-decl.c:1019
+msgid "%Jredefinition of typedef '%D'"
+msgstr "%Jredéfinition de « %D »"
-#: c-decl.c:1267
-#, c-format
-msgid "`%s' declared inline after its definition"
-msgstr "« %s » déclaré en-ligne après sa définition"
+#: c-decl.c:1055 c-decl.c:1119
+msgid "%Jredefinition of '%D'"
+msgstr "%Jredéfinition de « %D »"
-#: c-decl.c:1274
-#, c-format
-msgid "static declaration for `%s' follows non-static"
-msgstr "la déclaration de « %s » comme statique après une déclaration comme non statique"
+#: c-decl.c:1086 c-decl.c:1136
+msgid "%Jstatic declaration of '%D' follows non-static declaration"
+msgstr "%Jdéclaration statique de « %D » suit une déclaration non statique"
-#: c-decl.c:1282
-#, c-format
-msgid "non-static declaration for `%s' follows static"
-msgstr "la déclaration de « %s » comme non statique après une déclaration comme statique"
+#: c-decl.c:1094 c-decl.c:1133
+msgid "%Jnon-static declaration of '%D' follows static declaration"
+msgstr "%Jdéclaration non statique de « %D » suite une déclaration statique"
-#: c-decl.c:1289
-#, c-format
-msgid "const declaration for `%s' follows non-const"
-msgstr "la déclaration de « %s » comme constante après une déclaration comme non constante"
+#: c-decl.c:1106
+msgid "%Jthread-local declaration of '%D' follows non-thread-local declaration"
+msgstr "%Jdéclaration de thread local de « %D » suit une déclaration non thread-local"
-#: c-decl.c:1296
-#, c-format
-msgid "type qualifiers for `%s' conflict with previous decl"
-msgstr "le qualificateur du type de « %s » est en conflit avec une déclaration précédente"
+#: c-decl.c:1109
+msgid "%Jnon-thread-local declaration of '%D' follows thread-local declaration"
+msgstr "%Jdéclaration non thread local de « %D » suit une déclaration de thread local"
-#: c-decl.c:1309
-#, c-format
-msgid "redundant redeclaration of `%s' in same scope"
-msgstr "redéclaration redondante de « %s » dans le même champ"
+#: c-decl.c:1149
+msgid "%Jextern declaration of '%D' follows declaration with no linkage"
+msgstr "%Jdéclaration externe de « %D » suit une déclaraion sans lien"
-#: c-decl.c:1619 java/decl.c:1102
-#, c-format
-msgid "declaration of `%s' shadows a parameter"
-msgstr "la déclaration de « %s » masque un paramètre"
+#: c-decl.c:1152
+msgid "%Jdeclaration of '%D' with no linkage follows extern declaration"
+msgstr "%Jdéclaration de « %D » sasn lien suivant une déclaration externe"
-#: c-decl.c:1622 java/decl.c:1105
-#, c-format
-msgid "declaration of `%s' shadows a symbol from the parameter list"
-msgstr "la déclaration de « %s » masque un symbole de la liste des paramètres"
+#: c-decl.c:1155
+msgid "%Jredeclaration of '%D' with no linkage"
+msgstr "%Jredéclaration de « %D » sans lien"
-#: c-decl.c:1643 cp/decl.c:4479
-msgid "a parameter"
-msgstr "un paramètre"
+#: c-decl.c:1169
+msgid "%Jredeclaration of '%D' with different visibility (old visibility preserved)"
+msgstr "%Jredéclaration de « %D » avec une visibilité différente (visibilité précédente conservée)"
-#: c-decl.c:1645 cp/decl.c:4496
-msgid "a previous local"
-msgstr "une locale précédente"
+#: c-decl.c:1180
+msgid "%Jinline declaration of '%D' follows declaration with attribute noinline"
+msgstr "%Jdéclaration enligne de « %D » suit la déclaration avec un attribut non enligne"
-#. XXX shadow warnings in outer-more namespaces
-#: c-decl.c:1649 cp/decl.c:4500
-msgid "a global declaration"
-msgstr "une déclaration globale"
+#: c-decl.c:1187
+msgid "%Jdeclaration of '%D' with attribute noinline follows inline declaration "
+msgstr "%Jéclaration de « %D » avec un attribut non enligne suit une déclaration enligne"
-#: c-decl.c:1693
-#, c-format
-msgid "nested extern declaration of `%s'"
-msgstr "déclaration de « %s » externe imbriquée"
+#: c-decl.c:1199
+msgid "%J'%D' declared inline after being called"
+msgstr "%J« %D » déclaré enligne après avoir été appelé"
-#: c-decl.c:1712 java/decl.c:1055
-#, c-format
-msgid "`%s' used prior to declaration"
-msgstr "« %s » utilisé avant sa déclaration"
+#: c-decl.c:1205
+msgid "%J'%D' declared inline after its definition"
+msgstr "%J« %D » déclaré enligne après sa définition"
-#: c-decl.c:1726 c-decl.c:1901
-#, c-format
-msgid "`%s' was declared implicitly `extern' and later `static'"
-msgstr "« %s » a été déclaré implicitement « extern » et plus loin « static »"
+#: c-decl.c:1217
+msgid "%Jvolatile declaration of '%D' follows non-volatile declaration"
+msgstr "%Jdéclaration volatile de « %D » suit une déclaration non volatile"
-#: c-decl.c:1829 cp/decl.c:4336
-msgid "type mismatch with previous external decl"
-msgstr "non concordance de type avec la déclaration externe précédente"
+#: c-decl.c:1220
+msgid "%Jnon-volatile declaration of '%D' follows volatile declaration"
+msgstr "%Jdéclaration non volatile de « %D » suit une déclaration volatile"
-#: c-decl.c:1830
-#, c-format
-msgid "previous external decl of `%s'"
-msgstr "déclaration externe précédente de « %s »"
+#: c-decl.c:1227
+msgid "%Jconst declaration of '%D' follows non-const declaration"
+msgstr "%Jdéclaration de constante de « %D » suit une déclaration de non constante"
-#: c-decl.c:1843
-msgid "type mismatch with previous implicit declaration"
-msgstr "non concordance de type avec la déclaration implicite précédente"
+#: c-decl.c:1230
+msgid "%Jnon-const declaration of '%D' follows const declaration"
+msgstr "%Jdéclaration de non constante de « %D » suit une déclaration de constante"
-#: c-decl.c:1845
-#, c-format
-msgid "previous implicit declaration of `%s'"
-msgstr "déclaration précédente implicite de « %s »"
+#: c-decl.c:1246
+msgid "%Jredundant redeclaration of '%D'"
+msgstr "%Jdéclaration redondante de « %D »"
-#: c-decl.c:1880
+#: c-decl.c:1690
#, c-format
-msgid "`%s' was previously implicitly declared to return `int'"
-msgstr "« %s » a été précédemment déclaré implicitement comme retournant un « int »"
+msgid "nested extern declaration of `%s'"
+msgstr "déclaration de « %s » externe imbriquée"
-#: c-decl.c:1905
-#, c-format
-msgid "`%s' was declared `extern' and later `static'"
-msgstr "« %s » a été déclaré « extern » et plus loin « static »"
+#: c-decl.c:1829 objc/objc-act.c:2534 objc/objc-act.c:6793
+msgid "%Jprevious declaration of '%D'"
+msgstr "%Jdéclaration précédente de « %D »"
-#: c-decl.c:1929
+#: c-decl.c:1870 c-decl.c:1872
#, c-format
-msgid "extern declaration of `%s' doesn't match global one"
-msgstr "déclaration externe de « %s » ne concorde pas avec la globale"
+msgid "implicit declaration of function `%s'"
+msgstr "déclaration implicite de la fonction « %s »"
-#: c-decl.c:1971
+#: c-decl.c:1888
#, c-format
-msgid "`%s' locally external but globally static"
-msgstr "« %s » localement externe mais globalement statique"
+msgid "`%s' undeclared here (not in a function)"
+msgstr "« %s » non déclaré ici (hors de toute fonction)"
-#: c-decl.c:2095
+#: c-decl.c:1894
#, c-format
-msgid "function `%s' was previously declared within a block"
-msgstr "la fonction « %s » a été précédemment déclarée à l'intérieur d'un bloc"
+msgid "`%s' undeclared (first use in this function)"
+msgstr "« %s » non déclaré (première utilisation dans cette fonction)"
-#: c-decl.c:2115 c-decl.c:2117
-#, c-format
-msgid "implicit declaration of function `%s'"
-msgstr "déclaration implicite de la fonction « %s »"
+#: c-decl.c:1899
+msgid "(Each undeclared identifier is reported only once"
+msgstr "(Chaque identificateur non déclaré est rapporté une seule fois"
-#: c-decl.c:2196
+#: c-decl.c:1900
+msgid "for each function it appears in.)"
+msgstr "pour chaque fonction dans laquelle il apparaît.)"
+
+#: c-decl.c:1953
#, c-format
msgid "label %s referenced outside of any function"
msgstr "étiquette %s référencée à l'extérieur de toute fonction"
-#: c-decl.c:2253
+#: c-decl.c:2000
#, c-format
msgid "duplicate label declaration `%s'"
msgstr "déclaration de l'étiquette « %s » en double"
-#: c-decl.c:2256
-msgid "this is a previous declaration"
-msgstr "ceci est une déclaration précédente"
+#: c-decl.c:2001
+msgid "%Jthis is a previous declaration"
+msgstr "%Jest la déclaration précédente"
+
+#: c-decl.c:2036
+msgid "%Hduplicate label `%D'"
+msgstr "%Hétiquette « %D » apparaît en double"
-#: c-decl.c:2679
+#: c-decl.c:2038
+msgid "%J`%D' previously defined here"
+msgstr "%J« %D » précédemment défini ici"
+
+#: c-decl.c:2040
+msgid "%J`%D' previously declared here"
+msgstr "%J« %D » précédemment déclaré ici"
+
+#: c-decl.c:2060
+msgid "%Htraditional C lacks a separate namespace for labels, identifier `%s' conflicts"
+msgstr "%HC traditionnel manque d'un espace nom séparé pour les étiquettes, identificateur « %D » est en conflit"
+
+#: c-decl.c:2131
+msgid "%H`%s' defined as wrong kind of tag"
+msgstr "%H« %s » défini incorrectement comme une mauvais sorte d'étiquette"
+
+#: c-decl.c:2369
msgid "unnamed struct/union that defines no instances"
msgstr "struct/union sans nom ne définissant aucune instance"
-#: c-decl.c:2698
+#: c-decl.c:2388
msgid "useless keyword or type name in empty declaration"
msgstr "mot clé ou nom de type inutile dans une déclaration vide"
-#: c-decl.c:2705
+#: c-decl.c:2395
msgid "two types specified in one empty declaration"
msgstr "deux types spécifiés dans une déclaration vide"
-#: c-decl.c:2710 c-parse.y:753 c-parse.y:755 parse.y:766 parse.y:1853
-#: objc-parse.y:799 objc-parse.y:801 objc-parse.y:3042
+#: c-decl.c:2400 c-parse.y:735 c-parse.y:737 objc/objc-parse.y:776
+#: objc/objc-parse.y:778 objc/objc-parse.y:3016
msgid "empty declaration"
msgstr "déclaration vide"
-#: c-decl.c:2740
+#: c-decl.c:2426
msgid "ISO C90 does not support `static' or type qualifiers in parameter array declarators"
-msgstr "le C90 ISO ne supporte pas « static » ou les qualificateurs de type dans les déclarateurs de tableau de paramètres"
+msgstr "ISO C90 ne supporte pas « static » ou les qualificateurs de type dans les déclarateurs de tableau de paramètres"
-#: c-decl.c:2742
+#: c-decl.c:2428
msgid "ISO C90 does not support `[*]' array declarators"
-msgstr "le C90 ISO ne supporte pas « [*] » dans les déclarateurs de tableau"
+msgstr "ISO C90 ne supporte pas « [*] » dans les déclarateurs de tableau"
-#: c-decl.c:2745
+#: c-decl.c:2431
msgid "GCC does not yet properly implement `[*]' array declarators"
msgstr "GCC n'implémente pas encore correctement les déclarateurs de tableau « [*] »"
-#: c-decl.c:2764
+#: c-decl.c:2447
msgid "static or type qualifiers in abstract declarator"
msgstr "static ou qualificateurs de type dans un déclarateur abstrait"
-#: c-decl.c:2838
-#, c-format
-msgid "`%s' is usually a function"
-msgstr "« %s » est habituellement une fonction"
+#: c-decl.c:2517
+msgid "%J'%D' is usually a function"
+msgstr "%J« %D » est habituellement une fonction"
-#: c-decl.c:2847
+#: c-decl.c:2526
#, c-format
msgid "typedef `%s' is initialized (use __typeof__ instead)"
msgstr "typedef « %s » est initialisé (utilisez __typeof__ à la place)"
-#: c-decl.c:2853
+#: c-decl.c:2532
#, c-format
msgid "function `%s' is initialized like a variable"
msgstr "la fonction « %s » est initialisée comme une variable"
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:2860
+#: c-decl.c:2539
#, c-format
msgid "parameter `%s' is initialized"
msgstr "le paramètre « %s » est initialisé"
-#: c-decl.c:2880 c-typeck.c:4895
+#: c-decl.c:2559 c-typeck.c:4220
msgid "variable-sized object may not be initialized"
msgstr "un objet de taille variable peut ne pas être initialisé"
-#: c-decl.c:2886
+#: c-decl.c:2565
#, c-format
msgid "variable `%s' has initializer but incomplete type"
msgstr "la variable « %s » est initialisée alors qu'elle est de type incomplet"
-#: c-decl.c:2892
+#: c-decl.c:2571
#, c-format
msgid "elements of array `%s' have incomplete type"
msgstr "les éléments du tableau « %s » ont des types incomplets"
-#: c-decl.c:2905
-#, c-format
-msgid "declaration of `%s' has `extern' and is initialized"
-msgstr "« %s » initialisé et déclaré « extern »"
+#: c-decl.c:2640 c-decl.c:5426 cp/decl.c:3748 cp/decl.c:10156
+msgid "%Jinline function '%D' given attribute noinline"
+msgstr "%J fonction enligne « %D » a reçu l'attribut non enligne"
-#: c-decl.c:2954 c-decl.c:5828 cp/decl.c:7760 cp/decl.c:14339
-#, c-format
-msgid "inline function `%s' given attribute noinline"
-msgstr "la fonction inline « %s » a reçu l'attribut noinline"
+#: c-decl.c:2716
+msgid "%Jinitializer fails to determine size of '%D'"
+msgstr "%Jinitialisateur a échoué à déterminer la taille de « %D »"
+
+#: c-decl.c:2721
+msgid "%Jarray size missing in '%D'"
+msgstr "%Jtaille du tableau est manquante dans « %D »"
+
+#: c-decl.c:2737
+msgid "%Jzero or negative size array '%D'"
+msgstr "%Jtableau « %D » de taille zéro ou négative"
+
+#: c-decl.c:2765
+msgid "%Jstorage size of '%D' isn't known"
+msgstr "%Jtaille de stockage de « %D » n'est pas connue"
+
+#: c-decl.c:2775
+msgid "%Jstorage size of '%D' isn't constant"
+msgstr "%Jtaille de stockage de « %D » n'est pas une constante"
+
+#: c-decl.c:2858
+msgid "%Jignoring asm-specifier for non-static local variable '%D'"
+msgstr "%Jspécificateur asm ignoré pour la variable locale non statique « %D »"
+
+#: c-decl.c:2969
+msgid "ISO C forbids forward parameter declarations"
+msgstr "ISO C interdit la déclaration anticipée de paramètres"
-#: c-decl.c:3028
+#: c-decl.c:3151
+msgid "<anonymous>"
+msgstr "<anonymous>"
+
+#: c-decl.c:3160
#, c-format
-msgid "initializer fails to determine size of `%s'"
-msgstr "l'initialisation n'a pas pu déterminer la taille de « %s »"
+msgid "bit-field `%s' width not an integer constant"
+msgstr "la largeur du champ de bits « %s » n'est pas une constante entière"
-#: c-decl.c:3033
+#: c-decl.c:3168
#, c-format
-msgid "array size missing in `%s'"
-msgstr "taille du tableau manquante dans « %s »"
+msgid "negative width in bit-field `%s'"
+msgstr "largeur négative du champ de bits « %s »"
-#: c-decl.c:3049
+#: c-decl.c:3173
#, c-format
-msgid "zero or negative size array `%s'"
-msgstr "tableau « %s » de taille zéro ou négative"
+msgid "zero width for bit-field `%s'"
+msgstr "largeur nulle pour le champ de bits « %s »"
-#: c-decl.c:3077
+#: c-decl.c:3183
#, c-format
-msgid "storage size of `%s' isn't known"
-msgstr "taille de stockage de « %s » inconnue"
+msgid "bit-field `%s' has invalid type"
+msgstr "le champ de bits « %s » a un type invalide"
-#: c-decl.c:3087
+#: c-decl.c:3192
#, c-format
-msgid "storage size of `%s' isn't constant"
-msgstr "la taille de stockage de « %s » n'est pas une constante"
+msgid "type of bit-field `%s' is a GCC extension"
+msgstr "le type de champ de bit « %s » est une extension GCC"
-#: c-decl.c:3147
+#: c-decl.c:3201
#, c-format
-msgid "ignoring asm-specifier for non-static local variable `%s'"
-msgstr "spécificateur asm ignorés pour la variable locale non statique « %s »"
+msgid "width of `%s' exceeds its type"
+msgstr "la largeur de « %s » excède son type"
-#: c-decl.c:3247
+#: c-decl.c:3211
#, c-format
-msgid "ISO C forbids parameter `%s' shadowing typedef"
-msgstr "le C ISO interdit que le paramètre « %s » masque un typedef"
+msgid "`%s' is narrower than values of its type"
+msgstr "« %s » est plus étroit que les valeurs de son type"
-#: c-decl.c:3592 cp/decl.c:10880
+#: c-decl.c:3361 cp/decl.c:6778
msgid "`long long long' is too long for GCC"
msgstr "« long long long » est trop long pour GCC"
-#: c-decl.c:3597
+#: c-decl.c:3366
msgid "ISO C90 does not support `long long'"
-msgstr "le C90 ISO ne permet pas « long long »"
+msgstr "ISO C90 ne permet pas « long long »"
-#: c-decl.c:3606 c-decl.c:3609 cp/decl.c:10885
+#: c-decl.c:3375 c-decl.c:3378 cp/decl.c:6783
#, c-format
msgid "duplicate `%s'"
msgstr "« %s » apparaît en double"
-#: c-decl.c:3619 cp/decl.c:10892
+#: c-decl.c:3388 cp/decl.c:6789
msgid "`__thread' before `extern'"
msgstr "« __thread » avant « extern »"
-#: c-decl.c:3621 cp/decl.c:10894
+#: c-decl.c:3390 cp/decl.c:6791
msgid "`__thread' before `static'"
msgstr "« __thread » avant « static »"
-#: c-decl.c:3629 cp/decl.c:10921
+#: c-decl.c:3398 cp/decl.c:6818
#, c-format
msgid "two or more data types in declaration of `%s'"
msgstr "deux types de données ou plus dans la déclaration de « %s »"
-#: c-decl.c:3649 cp/decl.c:10926
+#: c-decl.c:3418 cp/decl.c:6823
#, c-format
msgid "`%s' fails to be a typedef or built in type"
msgstr "« %s » n'a pu devenir un typedef ou un type construit"
-#: c-decl.c:3688
+#: c-decl.c:3457
#, c-format
msgid "type defaults to `int' in declaration of `%s'"
msgstr "dans la déclaration de « %s », utilisation de « int » par défaut pour le type"
-#: c-decl.c:3717
+#: c-decl.c:3486
#, c-format
msgid "both long and short specified for `%s'"
msgstr "« long » et « short » spécifiés à la fois pour « %s »"
-#: c-decl.c:3721 cp/decl.c:11041
+#: c-decl.c:3490 cp/decl.c:6923
#, c-format
msgid "long or short specified with char for `%s'"
msgstr "« long » ou « short » spécifié avec « char » pour « %s »"
-#: c-decl.c:3728 cp/decl.c:11045
+#: c-decl.c:3497 cp/decl.c:6927
#, c-format
msgid "long or short specified with floating type for `%s'"
msgstr "« long » ou « short » spécifié avec un type flottant pour « %s »"
-#: c-decl.c:3731
+#: c-decl.c:3500
msgid "the only valid combination is `long double'"
msgstr "la seule combinaison valide est « long double »"
-#: c-decl.c:3737
+#: c-decl.c:3506
#, c-format
msgid "both signed and unsigned specified for `%s'"
msgstr "« %s » est à la fois signé et non signé"
-#: c-decl.c:3739 cp/decl.c:11034
+#: c-decl.c:3508 cp/decl.c:6916
#, c-format
msgid "long, short, signed or unsigned invalid for `%s'"
msgstr "« long », « short », « signed » ou « unsigned » invalide pour « %s »"
-#: c-decl.c:3745 cp/decl.c:11054
+#: c-decl.c:3514 cp/decl.c:6936
#, c-format
msgid "long, short, signed or unsigned used invalidly for `%s'"
msgstr "« long », « short », « signed » ou « unsigned » utilisé incorrectement pour « %s »"
-#: c-decl.c:3763 cp/decl.c:11075
+#: c-decl.c:3532 cp/decl.c:6957
#, c-format
msgid "complex invalid for `%s'"
msgstr "« complex » invalide pour « %s »"
-#: c-decl.c:3805
+#: c-decl.c:3574
msgid "ISO C90 does not support complex types"
-msgstr "le C90 ISO ne permet pas les types « complex »"
+msgstr "ISO C90 ne permet pas les types « complex »"
-#: c-decl.c:3817
+#: c-decl.c:3586
msgid "ISO C does not support plain `complex' meaning `double complex'"
-msgstr "le C ISO ne permet pas d'utiliser « complex » à la place de « double complex »"
+msgstr "ISO C ne permet pas d'utiliser « complex » à la place de « double complex »"
-#: c-decl.c:3823 c-decl.c:3835
+#: c-decl.c:3592 c-decl.c:3604
msgid "ISO C does not support complex integer types"
-msgstr "le C ISO interdit le type d'entiers complexes"
+msgstr "ISO C interdit le type d'entiers complexes"
-#: c-decl.c:3850 c-decl.c:4316 cp/decl.c:11688
+#: c-decl.c:3632 c-decl.c:4090 cp/decl.c:7549
msgid "duplicate `const'"
msgstr "« const » apparaît en double"
-#: c-decl.c:3852 c-decl.c:4320 cp/decl.c:11692
+#: c-decl.c:3634 c-decl.c:4094 cp/decl.c:7553
msgid "duplicate `restrict'"
msgstr "« restrict » apparaît en double"
-#: c-decl.c:3854 c-decl.c:4318 cp/decl.c:11690
+#: c-decl.c:3636 c-decl.c:4092 cp/decl.c:7551
msgid "duplicate `volatile'"
msgstr "« volatile » apparaît en double"
-#: c-decl.c:3882 cp/decl.c:11238
+#: c-decl.c:3664 cp/decl.c:7120
#, c-format
msgid "multiple storage classes in declaration of `%s'"
msgstr "multiples classes de stockage dans la déclaration de « %s »"
-#: c-decl.c:3892
+#: c-decl.c:3674
msgid "function definition declared `auto'"
msgstr "définition de fonction déclaré « auto »"
-#: c-decl.c:3894
+#: c-decl.c:3676
msgid "function definition declared `register'"
msgstr "définition de fonction déclarée « register »"
-#: c-decl.c:3896
+#: c-decl.c:3678
msgid "function definition declared `typedef'"
msgstr "définition de fonction déclarée « typedef »"
-#: c-decl.c:3898
+#: c-decl.c:3680
msgid "function definition declared `__thread'"
msgstr "définition de fonction déclarée « __thread »"
-#: c-decl.c:3911
+#: c-decl.c:3693
#, c-format
msgid "storage class specified for structure field `%s'"
msgstr "classe de stockage spécifiée pour le champ de structure « %s »"
-#: c-decl.c:3915 cp/decl.c:11285
+#: c-decl.c:3697 cp/decl.c:7165
#, c-format
msgid "storage class specified for parameter `%s'"
msgstr "classe de stockage spécifiée pour le paramètre « %s »"
-#: c-decl.c:3918 cp/decl.c:11287
+#: c-decl.c:3700 cp/decl.c:7167
msgid "storage class specified for typename"
msgstr "classe de stockage spécifié pour un typename"
-#: c-decl.c:3930 cp/decl.c:11302
+#: c-decl.c:3712 cp/decl.c:7182
#, c-format
msgid "`%s' initialized and declared `extern'"
msgstr "« %s » initialisé et déclaré « extern »"
-#: c-decl.c:3932 cp/decl.c:11305
+#: c-decl.c:3714 cp/decl.c:7185
#, c-format
msgid "`%s' has both `extern' and initializer"
-msgstr "« %s » initialisé et marqué « extern »"
+msgstr "« %s » a les deux « extern » et initialisateur"
-#: c-decl.c:3937 cp/decl.c:11313
+#: c-decl.c:3719
#, c-format
-msgid "top-level declaration of `%s' specifies `auto'"
-msgstr "la déclaration hors de toute fonction de « %s » a spécifié « auto »"
+msgid "file-scope declaration of `%s' specifies `auto'"
+msgstr "la déclaration de l'étendue de fichier « %s » spécifie « auto »"
-#: c-decl.c:3942 cp/decl.c:11309
+#: c-decl.c:3724 cp/decl.c:7189
#, c-format
msgid "nested function `%s' declared `extern'"
msgstr "fonction imbriquée « %s » déclarée « extern »"
-#: c-decl.c:3948 cp/decl.c:11319
+#: c-decl.c:3730 cp/decl.c:7199
#, c-format
msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgstr "« %s » dans le champ de la fonction est implicitement déclaré auto, et déclaré « __thread »"
@@ -1169,1457 +1197,1325 @@ msgstr "« %s » dans le champ de la fonction est implicitement déclaré auto, et d
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
-#: c-decl.c:3987 c-decl.c:4188
+#: c-decl.c:3769 c-decl.c:3962
msgid "static or type qualifiers in non-parameter array declarator"
msgstr "static ou qualificateurs de type dans un déclarateur de tableau n'étant pas un paramètre"
-#: c-decl.c:4031
+#: c-decl.c:3813
#, c-format
msgid "declaration of `%s' as array of voids"
msgstr "déclaration de « %s » comme un tableau de « void »"
-#: c-decl.c:4037
+#: c-decl.c:3819
#, c-format
msgid "declaration of `%s' as array of functions"
msgstr "déclaration de « %s » comme un tableau de fonctions"
-#: c-decl.c:4042 c-decl.c:5332
+#: c-decl.c:3824
msgid "invalid use of structure with flexible array member"
msgstr "utilisation invalide d'une structure ayant un membre flexible"
-#: c-decl.c:4061
+#: c-decl.c:3843
#, c-format
msgid "size of array `%s' has non-integer type"
msgstr "la taille du tableau « %s » n'est pas de type entier"
-#: c-decl.c:4066
+#: c-decl.c:3848
#, c-format
msgid "ISO C forbids zero-size array `%s'"
-msgstr "le C ISO interdit le tableau de taille zéro « %s »"
+msgstr "ISO C interdit le tableau de taille zéro « %s »"
-#: c-decl.c:4073
+#: c-decl.c:3855
#, c-format
msgid "size of array `%s' is negative"
msgstr "la taille du tableau « %s » est négative"
-#: c-decl.c:4086
+#: c-decl.c:3868
#, c-format
msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
-msgstr "le C90 ISO interdit le tableau « %s » dont la taille ne peut être évaluée"
+msgstr "ISO C90 interdit le tableau « %s » dont la taille ne peut être évaluée"
-#: c-decl.c:4089
+#: c-decl.c:3871
#, c-format
msgid "ISO C90 forbids variable-size array `%s'"
-msgstr "le C90 ISO interdit le tableau « %s » de taille variable"
+msgstr "ISO C90 interdit le tableau « %s » de taille variable"
-#: c-decl.c:4119 c-decl.c:4342 cp/decl.c:11897
+#: c-decl.c:3901 c-decl.c:4116 cp/decl.c:7723
#, c-format
msgid "size of array `%s' is too large"
msgstr "la taille du tableau « %s » est trop grande"
-#: c-decl.c:4145
+#: c-decl.c:3927
msgid "ISO C90 does not support flexible array members"
-msgstr "le C90 ISO interdit les tableaux ayant des membres flexibles"
+msgstr "ISO C90 interdit les tableaux ayant des membres flexibles"
-#: c-decl.c:4155
+#: c-decl.c:3937
msgid "array type has incomplete element type"
msgstr "les éléments du tableau sont de type incomplet"
-#: c-decl.c:4162 c-decl.c:4392
-msgid "ISO C forbids const or volatile function types"
-msgstr "le C ISO interdit les fonction de type volatile ou constante"
-
-#: c-decl.c:4208 cp/decl.c:11445
+#: c-decl.c:3982 cp/decl.c:7320
#, c-format
msgid "`%s' declared as function returning a function"
msgstr "« %s » déclaré comme une fonction retournant une fonction"
-#: c-decl.c:4213 cp/decl.c:11450
+#: c-decl.c:3987 cp/decl.c:7325
#, c-format
msgid "`%s' declared as function returning an array"
msgstr "« %s » déclaré comme une fonction retournant un tableau"
-#: c-decl.c:4241
+#: c-decl.c:4015
msgid "ISO C forbids qualified void function return type"
-msgstr "le C ISO interdit d'utiliser un void qualifié en valeur de retour de fonction"
+msgstr "ISO C interdit d'utiliser un void qualifié en valeur à retourner par la fonction"
-#: c-decl.c:4245
+#: c-decl.c:4019
msgid "type qualifiers ignored on function return type"
-msgstr "qualificateurs de type ignorés pour le type retourné par la fonction"
+msgstr "qualificateurs de type ignorés pour le type à retourner par la fonction"
-#: c-decl.c:4274 c-decl.c:4357 c-decl.c:4481 c-decl.c:4573
+#: c-decl.c:4048 c-decl.c:4131 c-decl.c:4255 c-decl.c:4341
msgid "ISO C forbids qualified function types"
-msgstr "le C ISO interdit les types de fonction qualifiés"
+msgstr "ISO C interdit les types de fonction qualifiés"
-#: c-decl.c:4314 cp/decl.c:11684
+#: c-decl.c:4088 cp/decl.c:7545
msgid "invalid type modifier within pointer declarator"
msgstr "modificateur de type invalide dans la déclaration de pointeur"
-#: c-decl.c:4412 cp/decl.c:12182
+#: c-decl.c:4166
+msgid "ISO C forbids const or volatile function types"
+msgstr "ISO C interdit les fonction de type volatile ou constante"
+
+#: c-decl.c:4186 cp/decl.c:8005
#, c-format
msgid "variable or field `%s' declared void"
msgstr "variable ou champ « %s » déclaré « void »"
-#: c-decl.c:4445
+#: c-decl.c:4219
msgid "attributes in parameter array declarator ignored"
msgstr "les attributs dans un déclarateur de tableau de paramètres sont ignorés"
-#: c-decl.c:4470
+#: c-decl.c:4244
msgid "invalid type modifier within array declarator"
msgstr "modificateur invalide de type à l'intérieur d'un déclarateur de tableau"
-#: c-decl.c:4515
+#: c-decl.c:4289
#, c-format
msgid "field `%s' declared as a function"
msgstr "champ « %s » déclaré comme une fonction"
-#: c-decl.c:4521
+#: c-decl.c:4295
#, c-format
msgid "field `%s' has incomplete type"
msgstr "champ « %s » est de type incomplet"
-#: c-decl.c:4553 c-decl.c:4555 c-decl.c:4557 c-decl.c:4564
+#: c-decl.c:4321 c-decl.c:4323 c-decl.c:4325 c-decl.c:4332
#, c-format
msgid "invalid storage class for function `%s'"
msgstr "classe de stockage invalide pour la fonction « %s »"
-#: c-decl.c:4579
+#: c-decl.c:4347
msgid "`noreturn' function returns non-void value"
msgstr "fonction marquée « noreturn » retourne une valeur n'étant pas de type « void »"
-#: c-decl.c:4594
+#: c-decl.c:4362
msgid "cannot inline function `main'"
-msgstr "ne peut transformer « main » en fonction en ligne"
+msgstr "ne peut transformer « main » en fonction enligne"
-#: c-decl.c:4649
-#, c-format
-msgid "variable `%s' declared `inline'"
-msgstr "variable « %s » déclarée « inline »"
+#: c-decl.c:4415
+msgid "variable previously declared `static' redeclared `extern'"
+msgstr "variable précédemment déclarée « static » redéclarée « extern »"
+
+#: c-decl.c:4424
+msgid "%Jvariable '%D' declared `inline'"
+msgstr "%Jvariable « %D » déclarée « inline »"
#. A mere warning is sure to result in improper semantics
#. at runtime. Don't bother to allow this to compile.
-#: c-decl.c:4677 cp/decl.c:9951
+#: c-decl.c:4452 cp/decl.c:5877
msgid "thread-local storage not supported for this target"
msgstr "cette cible ne permet pas le stockage en local au thread"
-#: c-decl.c:4732 c-decl.c:5880
+#: c-decl.c:4513 c-decl.c:5470
msgid "function declaration isn't a prototype"
msgstr "la déclaration de fonction n'est pas un prototype valide"
-#: c-decl.c:4738
+#: c-decl.c:4519
msgid "parameter names (without types) in function declaration"
msgstr "noms de paramètres (sans type) dans la déclaration de fonction"
-#: c-decl.c:4770 c-decl.c:6250
+#: c-decl.c:4547
#, c-format
msgid "parameter `%s' has incomplete type"
msgstr "le paramètre « %s » a un type incomplet"
-#: c-decl.c:4773
+#: c-decl.c:4550
msgid "parameter has incomplete type"
msgstr "le paramètre a un type incomplet"
-#: c-decl.c:4794
-#, c-format
-msgid "parameter `%s' points to incomplete type"
-msgstr "le paramètre « %s » pointe vers un type incomplet"
-
-#: c-decl.c:4797
-msgid "parameter points to incomplete type"
-msgstr "le paramètre pointe vers un type incomplet"
-
-#: c-decl.c:4862
-#, c-format
-msgid "parameter `%s' has just a forward declaration"
-msgstr "le paramètre « %s » n'a qu'une déclaration anticipée"
+#: c-decl.c:4599
+msgid "\"void\" as only parameter may not be qualified"
+msgstr "\"void\" comme seul paramètre ne peut être qualifié"
-#: c-decl.c:4903
-msgid "`void' in parameter list must be the entire list"
-msgstr "si « void » est dans une liste de paramètres, toute la liste doit l'être"
+#: c-decl.c:4620
+msgid "\"void\" must be the only parameter"
+msgstr "\"void\" doit être le seul paramètre"
-#: c-decl.c:4934
-#, c-format
-msgid "`struct %s' declared inside parameter list"
-msgstr "« struct %s » déclarée à l'intérieur de la liste de paramètres"
+#: c-decl.c:4637
+msgid "%Jparameter \"%D\" has just a forward declaration"
+msgstr "%Jparamètre « %D » n'a qu'une déclaration anticipée"
-#: c-decl.c:4937
+#. The first %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:4665
#, c-format
-msgid "`union %s' declared inside parameter list"
-msgstr "« union %s » déclarée à l'intérieur de la liste de paramètres"
+msgid "\"%s %s\" declared inside parameter list"
+msgstr "\"%s %s\" déclarée à l'intérieur de la liste de paramètres"
-#: c-decl.c:4940
+#. The %s will be one of 'struct', 'union', or 'enum'.
+#: c-decl.c:4669
#, c-format
-msgid "`enum %s' declared inside parameter list"
-msgstr "« enum %s » déclarée à l'intérieur de la liste de paramètres"
-
-#: c-decl.c:4947
-msgid "anonymous struct declared inside parameter list"
-msgstr "structure anonyme déclarée à l'intérieur de la liste des paramètres"
-
-#: c-decl.c:4949
-msgid "anonymous union declared inside parameter list"
-msgstr "union anonyme déclarée à l'intérieur de la liste des paramètres"
+msgid "anonymous %s declared inside parameter list"
+msgstr "structure anonyme %s déclarée à l'intérieur de la liste des paramètres"
-#: c-decl.c:4951
-msgid "anonymous enum declared inside parameter list"
-msgstr "énumération anonyme déclarée à l'intérieur de la liste des paramètres"
-
-#: c-decl.c:4955
+#: c-decl.c:4673
msgid "its scope is only this definition or declaration, which is probably not what you want"
msgstr "visible uniquement depuis cette définition ou déclaration, ce qui n'est probablement pas ce que vous désirez"
-#: c-decl.c:5032
+#: c-decl.c:4758
#, c-format
msgid "redefinition of `union %s'"
msgstr "redéfinition de « union %s »"
-#: c-decl.c:5034
+#: c-decl.c:4760
#, c-format
msgid "redefinition of `struct %s'"
msgstr "redéfinition de « struct %s »"
-#: c-decl.c:5105 cp/decl.c:7532
+#: c-decl.c:4828 cp/decl.c:3521
msgid "declaration does not declare anything"
msgstr "déclaration ne déclarant rien du tout"
-#: c-decl.c:5169 c-decl.c:5172
+#: c-decl.c:4873 c-decl.c:4889
+msgid "%Jduplicate member '%D'"
+msgstr "%Jmembre « %D » est double"
+
+#: c-decl.c:4923 c-decl.c:4926
#, c-format
msgid "%s defined inside parms"
msgstr "%s défini à l'intérieur des paramètres"
-#: c-decl.c:5170 c-decl.c:5173 c-decl.c:5184
+#: c-decl.c:4924 c-decl.c:4927 c-decl.c:4938
msgid "union"
msgstr "union"
-#: c-decl.c:5170 c-decl.c:5173
+#: c-decl.c:4924 c-decl.c:4927
msgid "structure"
msgstr "structure"
-#: c-decl.c:5183
+#: c-decl.c:4937
#, c-format
msgid "%s has no %s"
msgstr "%s n'a pas de %s"
-#: c-decl.c:5184
+#: c-decl.c:4938
msgid "struct"
msgstr "struct"
-#: c-decl.c:5185
+#: c-decl.c:4939
msgid "named members"
msgstr "membres nommés"
-#: c-decl.c:5185
+#: c-decl.c:4939
msgid "members"
msgstr "membres"
-#: c-decl.c:5224
+#: c-decl.c:4978
#, c-format
msgid "nested redefinition of `%s'"
msgstr "redéfinition imbriquée de « %s »"
-#: c-decl.c:5237
-#, c-format
-msgid "bit-field `%s' width not an integer constant"
-msgstr "la largeur du champ de bits « %s » n'est pas une constante entière"
-
-#: c-decl.c:5248
-#, c-format
-msgid "bit-field `%s' has invalid type"
-msgstr "le champ de bits « %s » a un type invalide"
-
-#: c-decl.c:5260
-#, c-format
-msgid "bit-field `%s' type invalid in ISO C"
-msgstr "le champ de bits « %s » a un type invalide en C ISO"
-
-#: c-decl.c:5271
-#, c-format
-msgid "negative width in bit-field `%s'"
-msgstr "largeur négative du champ de bits « %s »"
-
-#: c-decl.c:5273
-#, c-format
-msgid "width of `%s' exceeds its type"
-msgstr "la largeur de « %s » excède son type"
-
-#: c-decl.c:5275
-#, c-format
-msgid "zero width for bit-field `%s'"
-msgstr "largeur nulle pour le champ de bits « %s »"
-
-#: c-decl.c:5289
-#, c-format
-msgid "`%s' is narrower than values of its type"
-msgstr "« %s » est plus étroit que les valeurs de son type"
-
-#: c-decl.c:5323
-msgid "flexible array member in union"
-msgstr "membre flexible de tableau dans l'union"
+#: c-decl.c:4998
+msgid "%Jflexible array member in union"
+msgstr "%Jmembre flexible de tableau dans l'union"
-#: c-decl.c:5325
-msgid "flexible array member not at end of struct"
-msgstr "le membre flexible de tableau n'est pas à la fin de la structure"
+#: c-decl.c:5000
+msgid "%Jflexible array member not at end of struct"
+msgstr "%Jle membre flexible de tableau n'est pas à la fin de la structure"
-#: c-decl.c:5327
-msgid "flexible array member in otherwise empty struct"
-msgstr "membre flexible de tableau dans une structure vide par ailleurs"
+#: c-decl.c:5002
+msgid "%Jflexible array member in otherwise empty struct"
+msgstr "%Jmembre flexible de tableau dans une structure vide par ailleurs"
-#: c-decl.c:5357
-#, c-format
-msgid "duplicate member `%s'"
-msgstr "membre « %s » apparaît en double"
+#: c-decl.c:5007
+msgid "%Jinvalid use of structure with flexible array member"
+msgstr "%Jutilisation invalide d'une structure ayant un membre flexible"
-#: c-decl.c:5448
+#: c-decl.c:5102
msgid "union cannot be made transparent"
msgstr "union ne peut pas être rendu transparente"
#. This enum is a named one that has been declared already.
-#: c-decl.c:5558
+#: c-decl.c:5171
#, c-format
msgid "redeclaration of `enum %s'"
msgstr "redéclaration de « enum %s »"
-#: c-decl.c:5592
+#: c-decl.c:5202
msgid "enum defined inside parms"
msgstr "enum défini à l'intérieur des paramètres"
-#: c-decl.c:5625
+#: c-decl.c:5235
msgid "enumeration values exceed range of largest integer"
msgstr "valeurs d'énumération excède les bornes du plus grand entier"
-#: c-decl.c:5734
+#: c-decl.c:5338
#, c-format
msgid "enumerator value for `%s' not integer constant"
msgstr "valeur de l'énumérateur pour « %s » n'est pas une constante entière"
-#: c-decl.c:5747
+#: c-decl.c:5351
msgid "overflow in enumeration values"
msgstr "débordement dans les valeurs de l'énumération"
-#: c-decl.c:5752
+#: c-decl.c:5356
msgid "ISO C restricts enumerator values to range of `int'"
-msgstr "le C ISO restreint les valeurs de l'énumérateur aux bornes d'un « int »"
+msgstr "ISO C restreint les valeurs de l'énumérateur aux bornes d'un « int »"
-#: c-decl.c:5834
+#: c-decl.c:5432
msgid "return type is an incomplete type"
msgstr "le type du retour est incomplet"
-#: c-decl.c:5842
+#: c-decl.c:5440
msgid "return type defaults to `int'"
msgstr "le type du retour est « int » par défaut"
-#: c-decl.c:5889
-#, c-format
-msgid "no previous prototype for `%s'"
-msgstr "aucun prototype anticipé pour « %s »"
+#: c-decl.c:5476
+msgid "%Jno previous prototype for '%D'"
+msgstr "%Jaucun prototype précédent pour « %D »"
-#: c-decl.c:5896
-#, c-format
-msgid "`%s' was used with no prototype before its definition"
-msgstr "« %s » a été utilisé sans prototype avant sa définition"
+#: c-decl.c:5482
+msgid "%J'%D' was used with no prototype before its definition"
+msgstr "%J« %D » a été utilisé sans prototype avant sa définition"
-#: c-decl.c:5902
-#, c-format
-msgid "no previous declaration for `%s'"
-msgstr "aucune déclaration anticipée pour « %s »"
+#: c-decl.c:5489
+msgid "%Jno previous declaration for '%D'"
+msgstr "%Jaucune déclaration précédente pour « %D »"
-#: c-decl.c:5909
-#, c-format
-msgid "`%s' was used with no declaration before its definition"
-msgstr "« %s » a été utilisé sans déclaration avant sa définition"
+#: c-decl.c:5495
+msgid "%J`%D' was used with no declaration before its definition"
+msgstr "%J« %D » a été utilisé sans déclaration avant sa définition"
-#: c-decl.c:5933 c-decl.c:6486
-#, c-format
-msgid "return type of `%s' is not `int'"
-msgstr "le type de retour de « %s » n'est pas « int »"
+#: c-decl.c:5531 c-decl.c:6037
+msgid "%Jreturn type of '%D' is not `int'"
+msgstr "%Jle type de retour de « %D » n'est pas « int »"
-#: c-decl.c:5949
-#, c-format
-msgid "first argument of `%s' should be `int'"
-msgstr "le premier argument de « %s » devrait être « int »"
+#: c-decl.c:5546
+msgid "%Jfirst argument of '%D' should be `int'"
+msgstr "%Jle premier argument de « %D » devrait être « int »"
-#: c-decl.c:5958
-#, c-format
-msgid "second argument of `%s' should be `char **'"
-msgstr "le second argument de « %s » devrait être « char ** »"
+#: c-decl.c:5555
+msgid "%Jsecond argument of '%D' should be 'char **'"
+msgstr "%Jle second argument de « %D » devrait être « char ** »"
-#: c-decl.c:5967
-#, c-format
-msgid "third argument of `%s' should probably be `char **'"
-msgstr "le troisième argument de « %s » devrait probablement être « char ** »"
+#: c-decl.c:5564
+msgid "%Jthird argument of '%D' should probably be 'char **'"
+msgstr "%Jle troisième argument de « %D » devrait probablement être « char ** »"
-#: c-decl.c:5976
-#, c-format
-msgid "`%s' takes only zero or two arguments"
-msgstr "« %s » prend soit aucun argument soit deux arguments"
+#: c-decl.c:5574
+msgid "%J'%D' takes only zero or two arguments"
+msgstr "%J« %D » prend soit aucun argument ou soit deux arguments"
-#: c-decl.c:5979
-#, c-format
-msgid "`%s' is normally a non-static function"
-msgstr "« %s » n'est normalement pas une fonction statique"
+#: c-decl.c:5577
+msgid "%J'%D' is normally a non-static function"
+msgstr "%J« %D » n'est pas normalement une fonction statique"
-#: c-decl.c:6077
-msgid "parm types given both in parmlist and separately"
-msgstr "types des paramètres à la fois donnés dans la liste et séparément"
+#: c-decl.c:5633
+msgid "%Jold-style parameter declarations in prototyped function definition"
+msgstr "%Jdéclaration de paramètre d'ancien style dans la définition prototypée de fonction"
-#: c-decl.c:6098
-msgid "parameter name omitted"
-msgstr "nom de paramètre omis"
+#: c-decl.c:5647
+msgid "%Jparameter name omitted"
+msgstr "%Jnom de paramètre omis"
-#: c-decl.c:6102 c-decl.c:6204
-#, c-format
-msgid "parameter `%s' declared void"
-msgstr "paramètre « %s » déclaré « void »"
+#: c-decl.c:5722
+msgid "%Jparameter name missing from parameter list"
+msgstr "%Jnom du paramètre manquant dans la liste des paramètres"
-#: c-decl.c:6178
-msgid "parameter name missing from parameter list"
-msgstr "nom du paramètre manquant dans la liste des paramètres"
+#: c-decl.c:5732
+msgid "%J\"%D\" declared as a non-parameter"
+msgstr "%J\"%D\" déclaré comme un non paramètre"
-#: c-decl.c:6197
-#, c-format
-msgid "multiple parameters named `%s'"
-msgstr "plusieurs paramètres nommés « %s »"
+#: c-decl.c:5737
+msgid "%Jmultiple parameters named \"%D\""
+msgstr "%Jplusieurs paramètres nommés « %D »"
-#: c-decl.c:6219 c-decl.c:6221
-#, c-format
-msgid "type of `%s' defaults to `int'"
-msgstr "le type de « %s » est « int » par défaut"
+#: c-decl.c:5745
+msgid "%Jparameter \"%D\" declared void"
+msgstr "%Jparamètre \"%D\" déclaré «void »"
-#: c-decl.c:6257
-#, c-format
-msgid "declaration for parameter `%s' but no such parameter"
-msgstr "déclaration du paramètre « %s » mais pas de tel paramètre"
+#: c-decl.c:5760 c-decl.c:5762
+msgid "%Jtype of \"%D\" defaults to \"int\""
+msgstr "%Jtype de « %D » est « int » par défaut"
+
+#: c-decl.c:5776
+msgid "%Jparameter \"%D\" has incomplete type"
+msgstr "%Jparamètre \"%D\" a un type incomplet"
+
+#: c-decl.c:5782
+msgid "%Jdeclaration for parameter \"%D\" but no such parameter"
+msgstr "%Jdéclaration du paramètre « %D » mais pas de tel paramètre"
-#: c-decl.c:6305
+#: c-decl.c:5834
msgid "number of arguments doesn't match prototype"
msgstr "le nombre d'arguments ne concorde pas avec celui du prototype"
-#: c-decl.c:6335
-#, c-format
-msgid "promoted argument `%s' doesn't match prototype"
-msgstr "argument promu « %s » ne concorde pas avec le prototype"
+#: c-decl.c:5835 c-decl.c:5866 c-decl.c:5873
+msgid "%Hprototype declaration"
+msgstr "%Hdéclaration de prototype"
-#: c-decl.c:6345
-#, c-format
-msgid "argument `%s' doesn't match prototype"
-msgstr "argument « %s » ne concorde pas avec le prototype"
+#: c-decl.c:5864
+msgid "promoted argument \"%D\" doesn't match prototype"
+msgstr "argument promu \"%D\" ne concorde pas avec le prototype"
+
+#: c-decl.c:5872
+msgid "argument \"%D\" doesn't match prototype"
+msgstr "argument \"%D\" ne concorde pas avec le prototype"
-#: c-decl.c:6518 cp/decl.c:15049
+#: c-decl.c:6069 cp/decl.c:10876
msgid "no return statement in function returning non-void"
msgstr "« return » manquant dans une fonction devant retourner une valeur"
-#: c-decl.c:6525
+#: c-decl.c:6076
msgid "this function may return with or without a value"
msgstr "cette fonction devrait finir en retournant ou non une valeur"
-#: c-decl.c:6729
-#, c-format
-msgid "size of return value of `%s' is %u bytes"
-msgstr "la taille de la valeur retournée par « %s » est %u octets"
-
-#: c-decl.c:6733
-#, c-format
-msgid "size of return value of `%s' is larger than %d bytes"
-msgstr "la taille de la valeur retournée par « %s » supérieure à %d octets"
-
#. If we get here, declarations have been used in a for loop without
#. the C99 for loop scope. This doesn't make much sense, so don't
#. allow it.
-#: c-decl.c:6791
-msgid "`for' loop initial declaration used outside C99 mode"
+#: c-decl.c:6175
+msgid "'for' loop initial declaration used outside C99 mode"
msgstr "déclaration initiale de la boucle « for » utilisée en dehors du mode C99"
-#: c-decl.c:6815
+#: c-decl.c:6199
#, c-format
-msgid "`struct %s' declared in `for' loop initial declaration"
+msgid "'struct %s' declared in 'for' loop initial declaration"
msgstr "« struct %s » déclarée dans la déclaration initiale de la boucle « for »"
-#: c-decl.c:6818
+#: c-decl.c:6202
#, c-format
-msgid "`union %s' declared in `for' loop initial declaration"
+msgid "'union %s' declared in 'for' loop initial declaration"
msgstr "« union %s » déclarée dans la déclaration initiale de la boucle « for »"
-#: c-decl.c:6821
+#: c-decl.c:6205
#, c-format
-msgid "`enum %s' declared in `for' loop initial declaration"
+msgid "'enum %s' declared in 'for' loop initial declaration"
msgstr "« enum %s » déclarée dans la déclaration initiale de la boucle « for »"
-#: c-decl.c:6829
-#, c-format
-msgid "declaration of non-variable `%s' in `for' loop initial declaration"
-msgstr "déclaration de « %s » (qui n'est pas une variable) dans la déclaration initiale de « for »"
+#: c-decl.c:6213
+msgid "%Jdeclaration of non-variable '%D' in 'for' loop initial declaration"
+msgstr "%Jdéclaration de « %D » (qui n'est pas une variable) dans la déclaration initiale de « for »"
-#: c-decl.c:6831
-#, c-format
-msgid "declaration of static variable `%s' in `for' loop initial declaration"
-msgstr "déclaration de la variable statique « %s » dans la déclaration initiale de la boucle « for »"
+#: c-decl.c:6216
+msgid "%Jdeclaration of static variable '%D' in 'for' loop initial declaration"
+msgstr "%Jdéclaration de la variable statique « %D » dans la déclaration initiale de la boucle « for »"
-#: c-decl.c:6833
-#, c-format
-msgid "declaration of `extern' variable `%s' in `for' loop initial declaration"
-msgstr "déclaration de la variable externe « %s » dans la déclaration initiale « for »"
+#: c-decl.c:6219
+msgid "%Jdeclaration of 'extern' variable '%D' in 'for' loop initial declaration"
+msgstr "%Jdéclaration de la variable externe « %D » dans la déclaration initiale « for »"
-#: c-format.c:109 c-format.c:191
-msgid "format string arg not a string type"
-msgstr "l'argument de la chaîne de format n'est pas de type « string »"
+#: c-decl.c:6532
+msgid "%Jredefinition of global '%D'"
+msgstr "%Jredéfinition globale de « %D »"
-#: c-format.c:124
-msgid "args to be formatted is not '...'"
-msgstr "les arguments devant être formatés ne sont pas « ... »"
+#: c-decl.c:6533
+msgid "%J'%D' previously defined here"
+msgstr "%J« %D » précédemment défini ici"
-#: c-format.c:133
-msgid "strftime formats cannot format arguments"
-msgstr "Les formats de strftime ne peuvent pas formater d'argument"
-
-#: c-format.c:168 c-format.c:270
+#: c-format.c:94 c-format.c:210
msgid "format string has invalid operand number"
msgstr "la chaîne de format a un nombre invalide d'opérandes"
-#: c-format.c:202
+#: c-format.c:111
msgid "function does not return string type"
msgstr "fonction ne retourne pas un type « string »"
-#: c-format.c:233
+#: c-format.c:140
+msgid "format string arg not a string type"
+msgstr "l'argument de la chaîne de format n'est pas de type « string »"
+
+#: c-format.c:190
msgid "unrecognized format specifier"
msgstr "spécificateur de format non reconnu"
-#: c-format.c:246
+#: c-format.c:203
#, c-format
msgid "`%s' is an unrecognized format function type"
msgstr "« %s » a un format de type de fonction non reconnu"
-#: c-format.c:280
+#: c-format.c:216
+msgid "'...' has invalid operand number"
+msgstr "« ... » a un nombre invalide d'opérandes"
+
+#: c-format.c:224
msgid "format string arg follows the args to be formatted"
msgstr "l'argument de la chaîne de format suit les arguments devant être formatés"
-#: c-format.c:601
+#: c-format.c:565 c-format.c:589
msgid "` ' flag"
msgstr "fanion « »"
-#: c-format.c:601
+#: c-format.c:565 c-format.c:589
msgid "the ` ' printf flag"
msgstr "le fanion « » de printf"
-#: c-format.c:602 c-format.c:673
+#: c-format.c:566 c-format.c:590 c-format.c:627 c-format.c:683
msgid "`+' flag"
msgstr "fanion « + »"
-#: c-format.c:602
+#: c-format.c:566 c-format.c:590 c-format.c:627
msgid "the `+' printf flag"
msgstr "le fanion « + » de printf"
-#: c-format.c:603 c-format.c:649
+#: c-format.c:567 c-format.c:591 c-format.c:628 c-format.c:659
msgid "`#' flag"
msgstr "fanion « # »"
-#: c-format.c:603
+#: c-format.c:567 c-format.c:591 c-format.c:628
msgid "the `#' printf flag"
msgstr "le fanion « # » de printf"
-#: c-format.c:604 c-format.c:647
+#: c-format.c:568 c-format.c:592 c-format.c:657
msgid "`0' flag"
msgstr "fanion « 0 »"
-#: c-format.c:604
+#: c-format.c:568 c-format.c:592
msgid "the `0' printf flag"
msgstr "le fanion « 0 » de printf"
-#: c-format.c:605 c-format.c:646 c-format.c:676
+#: c-format.c:569 c-format.c:593 c-format.c:656 c-format.c:686
msgid "`-' flag"
msgstr "fanion « - »"
-#: c-format.c:605
+#: c-format.c:569 c-format.c:593
msgid "the `-' printf flag"
msgstr "le fanion « - » de printf"
-#: c-format.c:606 c-format.c:630
+#: c-format.c:570 c-format.c:640
msgid "`'' flag"
msgstr "fanion « ' »"
-#: c-format.c:606
+#: c-format.c:570
msgid "the `'' printf flag"
msgstr "le fanion « ' » de printf"
-#: c-format.c:607 c-format.c:631
+#: c-format.c:571 c-format.c:641
msgid "`I' flag"
msgstr "fanion « I »"
-#: c-format.c:607
+#: c-format.c:571
msgid "the `I' printf flag"
msgstr "le fanion « I » de printf"
-#: c-format.c:608 c-format.c:628 c-format.c:650 c-format.c:677 c-format.c:1702
+#: c-format.c:572 c-format.c:594 c-format.c:638 c-format.c:660 c-format.c:687
+#: c-format.c:1802
msgid "field width"
msgstr "largeur de champ"
-#: c-format.c:608
+#: c-format.c:572 c-format.c:594
msgid "field width in printf format"
msgstr "largeur de champ dans le format de printf"
-#: c-format.c:609
+#: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
msgid "precision"
msgstr "précision"
-#: c-format.c:609
+#: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
msgid "precision in printf format"
msgstr "précision dans le format de printf"
-#: c-format.c:610 c-format.c:629 c-format.c:680
+#: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630 c-format.c:639
+#: c-format.c:690
msgid "length modifier"
msgstr "modificateur de longueur"
-#: c-format.c:610
+#: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630
msgid "length modifier in printf format"
msgstr "modificateur de longueur dans le format printf"
-#: c-format.c:626
+#: c-format.c:636
msgid "assignment suppression"
msgstr "suppression d'affectation"
-#: c-format.c:626
+#: c-format.c:636
msgid "the assignment suppression scanf feature"
msgstr "options de scanf pour la suppression d'affectation"
-#: c-format.c:627
+#: c-format.c:637
msgid "`a' flag"
msgstr "fanion « a »"
-#: c-format.c:627
+#: c-format.c:637
msgid "the `a' scanf flag"
msgstr "le fanion « a » de scanf"
-#: c-format.c:628
+#: c-format.c:638
msgid "field width in scanf format"
msgstr "largeur de champ dans le format de scanf"
-#: c-format.c:629
+#: c-format.c:639
msgid "length modifier in scanf format"
msgstr "modificateur de longueur dans le format de scanf"
-#: c-format.c:630
+#: c-format.c:640
msgid "the `'' scanf flag"
msgstr "la fanion « ' » de scanf"
-#: c-format.c:631
+#: c-format.c:641
msgid "the `I' scanf flag"
msgstr "le fanion « I » de scanf"
-#: c-format.c:645
+#: c-format.c:655
msgid "`_' flag"
msgstr "fanion « _ »"
-#: c-format.c:645
+#: c-format.c:655
msgid "the `_' strftime flag"
msgstr "le fanion « _ » de strftime"
-#: c-format.c:646
+#: c-format.c:656
msgid "the `-' strftime flag"
msgstr "le fanion « - » de strftime"
-#: c-format.c:647
+#: c-format.c:657
msgid "the `0' strftime flag"
msgstr "le fanion « 0 » de strftime"
-#: c-format.c:648 c-format.c:672
+#: c-format.c:658 c-format.c:682
msgid "`^' flag"
msgstr "fanion « ^ »"
-#: c-format.c:648
+#: c-format.c:658
msgid "the `^' strftime flag"
msgstr "la fanion « ^ » de strftime"
-#: c-format.c:649
+#: c-format.c:659
msgid "the `#' strftime flag"
msgstr "le fanion « # » de strftime"
-#: c-format.c:650
+#: c-format.c:660
msgid "field width in strftime format"
msgstr "largeur de champ dans le format de strftime"
-#: c-format.c:651
+#: c-format.c:661
msgid "`E' modifier"
msgstr "modificateur « E »"
-#: c-format.c:651
+#: c-format.c:661
msgid "the `E' strftime modifier"
msgstr "le modificateur « E » de strftime"
-#: c-format.c:652
+#: c-format.c:662
msgid "`O' modifier"
msgstr "modificateur « O »"
-#: c-format.c:652
+#: c-format.c:662
msgid "the `O' strftime modifier"
msgstr "le modificateur « O » de strftime"
-#: c-format.c:653
+#: c-format.c:663
msgid "the `O' modifier"
msgstr "le modificateur « O »"
-#: c-format.c:671
+#: c-format.c:681
msgid "fill character"
msgstr "caractère de remplissage"
-#: c-format.c:671
+#: c-format.c:681
msgid "fill character in strfmon format"
msgstr "caractère de remplissage dans le format de strfmon"
-#: c-format.c:672
+#: c-format.c:682
msgid "the `^' strfmon flag"
msgstr "le fanion « ^ » de strfmon"
-#: c-format.c:673
+#: c-format.c:683
msgid "the `+' strfmon flag"
msgstr "le fanion « + » de strfmon"
-#: c-format.c:674
+#: c-format.c:684
msgid "`(' flag"
msgstr "fanion « ( »"
-#: c-format.c:674
+#: c-format.c:684
msgid "the `(' strfmon flag"
msgstr "le fanion « ( » de strfmon"
-#: c-format.c:675
+#: c-format.c:685
msgid "`!' flag"
msgstr "fanion « ! »"
-#: c-format.c:675
+#: c-format.c:685
msgid "the `!' strfmon flag"
msgstr "le fanion « ! » de strfmon"
-#: c-format.c:676
+#: c-format.c:686
msgid "the `-' strfmon flag"
msgstr "le fanion « - » de strfmon"
-#: c-format.c:677
+#: c-format.c:687
msgid "field width in strfmon format"
msgstr "largeur de champ dans le format de strfmon"
-#: c-format.c:678
+#: c-format.c:688
msgid "left precision"
msgstr "précision de gauche"
-#: c-format.c:678
+#: c-format.c:688
msgid "left precision in strfmon format"
msgstr "précision de gauche dans le format de strfmon"
-#: c-format.c:679
+#: c-format.c:689
msgid "right precision"
msgstr "précision de droite"
-#: c-format.c:679
+#: c-format.c:689
msgid "right precision in strfmon format"
msgstr "précision de droite dans le format de strfmon"
-#: c-format.c:680
+#: c-format.c:690
msgid "length modifier in strfmon format"
msgstr "modificateur de longueur dans le format de strfmon"
-#: c-format.c:983
+#: c-format.c:1107
#, c-format
msgid "function might be possible candidate for `%s' format attribute"
msgstr "la fonction est peut être candidate pour l'attribut de format de « %s »"
-#: c-format.c:1107 c-format.c:1128 c-format.c:2112
+#: c-format.c:1223 c-format.c:1244 c-format.c:2212
msgid "missing $ operand number in format"
-msgstr "nombre manquant dans le format pour l'opérande $"
+msgstr "$ manquant dans le format pour l'opérande du nombre"
-#: c-format.c:1138
+#: c-format.c:1254
#, c-format
msgid "%s does not support %%n$ operand number formats"
msgstr "%s ne permet pas le format d'opérande de nombre %%n$"
-#: c-format.c:1145
+#: c-format.c:1261
msgid "operand number out of range in format"
msgstr "opérande de nombre au delà de la limite dans le format"
-#: c-format.c:1168
+#: c-format.c:1284
#, c-format
msgid "format argument %d used more than once in %s format"
msgstr "argument de format %d utilisé plus d'une fois dans le format %s"
-#: c-format.c:1218
+#: c-format.c:1331
#, c-format
msgid "format argument %d unused before used argument %d in $-style format"
msgstr "argument de format %d inutilisé avant l'utilisation de l'argument %d dans le format de style $"
-#: c-format.c:1322
+#: c-format.c:1429
msgid "format not a string literal, format string not checked"
msgstr "le format n'est pas une chaîne littérale, le format n'est pas vérifé"
-#: c-format.c:1336
+#: c-format.c:1443
msgid "format not a string literal and no format arguments"
msgstr "le format n'est pas une chaîne littérale et pas d'argument de format"
-#: c-format.c:1338
+#: c-format.c:1445
msgid "format not a string literal, argument types not checked"
msgstr "le format n'est pas une chaîne littérale, le type des arguments n'est pas vérifié"
-#: c-format.c:1351
+#: c-format.c:1458
msgid "too many arguments for format"
msgstr "trop d'arguments pour le format"
-#: c-format.c:1354
+#: c-format.c:1461
msgid "unused arguments in $-style format"
msgstr "arguments inutilisés dans le format de style $"
-#: c-format.c:1357
+#: c-format.c:1464
#, c-format
msgid "zero-length %s format string"
msgstr "chaîne de format de longueur nulle %s"
-#: c-format.c:1361
+#: c-format.c:1468
msgid "format is a wide character string"
-msgstr "le format est chaîne de caractères longs (wide characters)"
+msgstr "le format est une chaîne large de caractères"
-#: c-format.c:1364
+#: c-format.c:1471
msgid "unterminated format string"
msgstr "chaîne de format non terminée"
-#: c-format.c:1581
+#: c-format.c:1681
msgid "embedded `\\0' in format"
msgstr "« \\0 » inclu dans le format"
-#: c-format.c:1596
+#: c-format.c:1696
#, c-format
msgid "spurious trailing `%%' in format"
msgstr "des caractères « %% » douteux traînent dans le format"
-#: c-format.c:1635 c-format.c:1872
+#: c-format.c:1735 c-format.c:1972
#, c-format
msgid "repeated %s in format"
msgstr "%s répété dans le format"
-#: c-format.c:1648
+#: c-format.c:1748
msgid "missing fill character at end of strfmon format"
msgstr "caractère de remplissage manquant à la fin du format pour strfmon"
-#: c-format.c:1687 c-format.c:1786 c-format.c:2066 c-format.c:2119
+#: c-format.c:1787 c-format.c:1886 c-format.c:2166 c-format.c:2219
msgid "too few arguments for format"
msgstr "trop peu d'arguments dans le format"
-#: c-format.c:1728
+#: c-format.c:1828
#, c-format
msgid "zero width in %s format"
msgstr "largeur zéro dans le format %s"
-#: c-format.c:1747
+#: c-format.c:1847
#, c-format
msgid "empty left precision in %s format"
msgstr "précision de gauche vide dans le format %s"
-#: c-format.c:1801
+#: c-format.c:1901
msgid "field precision"
msgstr "champ de précision"
-#: c-format.c:1816
+#: c-format.c:1916
#, c-format
msgid "empty precision in %s format"
msgstr "précision vide dans le format %s"
-#: c-format.c:1856
+#: c-format.c:1956
#, c-format
msgid "%s does not support the `%s' %s length modifier"
msgstr "%s ne supporte pas « %s » %s comme modificateur de longueur"
-#: c-format.c:1906
+#: c-format.c:2006
msgid "conversion lacks type at end of format"
msgstr "il manque un type pour la conversion à la fin du format"
-#: c-format.c:1917
+#: c-format.c:2017
#, c-format
msgid "unknown conversion type character `%c' in format"
msgstr "type de caractère de conversion inconnu « %c » dans le format"
-#: c-format.c:1920
+#: c-format.c:2020
#, c-format
msgid "unknown conversion type character 0x%x in format"
msgstr "type de caractère de conversion inconnu 0x%x dans le format"
-#: c-format.c:1927
+#: c-format.c:2027
#, c-format
msgid "%s does not support the `%%%c' %s format"
msgstr "%s ne supporte pas le format « %%%c » %s"
-#: c-format.c:1943
+#: c-format.c:2043
#, c-format
msgid "%s used with `%%%c' %s format"
msgstr "%s utilisé avec le format « %%%c » %s"
-#: c-format.c:1952
+#: c-format.c:2052
#, c-format
msgid "%s does not support %s"
msgstr "%s ne supporte pas %s"
-#: c-format.c:1961
+#: c-format.c:2061
#, c-format
msgid "%s does not support %s with the `%%%c' %s format"
msgstr "%s ne supporte pas %s avec le format « %%%c » %s "
-#: c-format.c:1994
+#: c-format.c:2094
#, c-format
msgid "%s ignored with %s and `%%%c' %s format"
-msgstr "%s ignoré avec %s et le format «%%%c» %s"
+msgstr "%s ignoré avec %s et le format « %%%c » %s"
-#: c-format.c:1998
+#: c-format.c:2098
#, c-format
msgid "%s ignored with %s in %s format"
msgstr "%s ignoré avec %s dans le format %s"
-#: c-format.c:2004
+#: c-format.c:2104
#, c-format
msgid "use of %s and %s together with `%%%c' %s format"
msgstr "utilisation de %s et de %s ensemble dans le format « %%%c » %s"
-#: c-format.c:2008
+#: c-format.c:2108
#, c-format
msgid "use of %s and %s together in %s format"
msgstr "utilisation de %s et de %s ensemble dans le format %s"
-#: c-format.c:2027
+#: c-format.c:2127
#, c-format
msgid "`%%%c' yields only last 2 digits of year in some locales"
msgstr "« %%%c » laisse seulement les 2 derniers chiffres de l'année avec certaines locales"
-#: c-format.c:2030
+#: c-format.c:2130
#, c-format
msgid "`%%%c' yields only last 2 digits of year"
msgstr "« %%%c » laisse seulement les 2 derniers chiffres de l'année"
#. The end of the format string was reached.
-#: c-format.c:2046
+#: c-format.c:2146
#, c-format
msgid "no closing `]' for `%%[' format"
msgstr "pas de « ] » fermant pour le format « %%[ »"
-#: c-format.c:2059
+#: c-format.c:2159
#, c-format
msgid "use of `%s' length modifier with `%c' type character"
msgstr "utilisation du modificateur de longueur « %s » avec le type de caractère « %c »"
-#: c-format.c:2080
+#: c-format.c:2180
#, c-format
msgid "%s does not support the `%%%s%c' %s format"
-msgstr "%s ne supporte par le format «%%%s%c» %s"
+msgstr "%s ne supporte par le format « %%%s%c » %s"
-#: c-format.c:2095
+#: c-format.c:2195
msgid "operand number specified with suppressed assignment"
msgstr "nombre d'opérandes spécifié avec des affectations suprimées"
-#: c-format.c:2097
+#: c-format.c:2197
msgid "operand number specified for format taking no argument"
msgstr "nombre d'opérandes spécifié pour un format n'acceptant aucun argument"
-#: c-format.c:2211
+#: c-format.c:2309
#, c-format
msgid "writing through null pointer (arg %d)"
msgstr "écriture à travers un pointeur nul (arg %d)"
-#: c-format.c:2220
+#: c-format.c:2318
#, c-format
msgid "reading through null pointer (arg %d)"
msgstr "lecture à l'aide d'un pointeur nul (arg %d)"
-#: c-format.c:2240
+#: c-format.c:2338
#, c-format
msgid "writing into constant object (arg %d)"
msgstr "écriture dans un objet constant (arg %d)"
-#: c-format.c:2250
+#: c-format.c:2348
#, c-format
msgid "extra type qualifiers in format argument (arg %d)"
msgstr "qualificateur de type additionnel dans l'argument du format (arg %d)"
-#: c-format.c:2257
+#: c-format.c:2355
#, c-format
msgid "format argument is not a pointer (arg %d)"
msgstr "l'argument de format n'est pas un pointeur (arg %d)"
-#: c-format.c:2259
+#: c-format.c:2357
#, c-format
msgid "format argument is not a pointer to a pointer (arg %d)"
msgstr "l'argument de format n'est pas un pointeur de pointeur (arg %d)"
-#: c-format.c:2330
+#: c-format.c:2433
msgid "pointer"
msgstr "pointeur"
-#: c-format.c:2332
+#: c-format.c:2435
msgid "different type"
msgstr "type différent"
-#: c-format.c:2353
+#: c-format.c:2456
#, c-format
msgid "%s is not type %s (arg %d)"
msgstr "%s n'est pas de type %s (arg %d)"
-#: c-format.c:2356
+#: c-format.c:2459
#, c-format
msgid "%s format, %s arg (arg %d)"
msgstr "format %s, arg %s (arg %d)"
-#: c-lex.c:153
-msgid "YYDEBUG not defined"
-msgstr "YYDEBUG n'est pas défini"
+#: c-format.c:2704
+msgid "args to be formatted is not '...'"
+msgstr "les arguments devant être formatés ne sont pas « ... »"
+
+#: c-format.c:2713
+msgid "strftime formats cannot format arguments"
+msgstr "Les formats de strftime ne peuvent pas formater d'argument"
-#: c-lex.c:293
+#: c-incpath.c:68
+#, c-format
+msgid "ignoring duplicate directory \"%s\"\n"
+msgstr "le répertoire « %s » est ignoré car présent deux fois\n"
+
+#: c-incpath.c:71
+#, c-format
+msgid " as it is a non-system directory that duplicates a system directory\n"
+msgstr " car il s'agit d'un répertoire non système dupliquant un répertoire système\n"
+
+#: c-incpath.c:75
+#, c-format
+msgid "ignoring nonexistent directory \"%s\"\n"
+msgstr "le répertoire « %s » est ignoré car inexistant\n"
+
+#: c-incpath.c:273
+#, c-format
+msgid "#include \"...\" search starts here:\n"
+msgstr "la recherche pour #include \"...\" débute ici :\n"
+
+#: c-incpath.c:277
+#, c-format
+msgid "#include <...> search starts here:\n"
+msgstr "la recherche pour #include <...> débute ici:\n"
+
+#: c-incpath.c:282
+#, c-format
+msgid "End of search list.\n"
+msgstr "Fin de la liste de recherche.\n"
+
+#: c-lex.c:240
msgid "badly nested C headers from preprocessor"
msgstr "en-têtes C du préprocesseur incorrectement imbriqués"
-#: c-lex.c:336
+#: c-lex.c:281
#, c-format
msgid "ignoring #pragma %s %s"
msgstr "#pragma %s %s ignoré"
-#: c-lex.c:386
-#, c-format
-msgid "universal-character-name '\\U%08x' not valid in identifier"
-msgstr "nom-de-caractère-universel « \\U%08x » invalide dans l'identificcateur"
+#. ... or not.
+#: c-lex.c:385
+msgid "%Hstray '@' in program"
+msgstr "%H« @ » perdu dans le programme"
-#: c-lex.c:632
+#: c-lex.c:393
#, c-format
-msgid "universal-character-name '\\u%04x' not valid in identifier"
-msgstr "nom-de-caractère-universel « \\U%04x » invalide dans l'identificcateur"
+msgid "missing terminating %c character"
+msgstr "caractère %c de terminaison manquant"
-#: c-lex.c:695
+#: c-lex.c:395
#, c-format
msgid "stray '%c' in program"
msgstr "« %c » perdu dans le programme"
-#: c-lex.c:697
+#: c-lex.c:397
#, c-format
msgid "stray '\\%o' in program"
msgstr "« \\%o » perdu dans le programme"
-#: c-lex.c:854
+#: c-lex.c:535
msgid "this decimal constant is unsigned only in ISO C90"
msgstr "cette constante décimale est « unsigned » seulement en C90 ISO"
-#: c-lex.c:857
+#: c-lex.c:538
msgid "this decimal constant would be unsigned in ISO C90"
msgstr "cette constante décimale serait « unsigned » en C90 ISO"
-#: c-lex.c:873
+#: c-lex.c:554
#, c-format
msgid "integer constant is too large for \"%s\" type"
msgstr "constante entière trop grande pour le type « %s »"
-#: c-lex.c:941
+#: c-lex.c:620
#, c-format
msgid "floating constant exceeds range of \"%s\""
msgstr "constante en nombre flottant excédant les limites de « %s »"
-#: c-lex.c:977 cpplex.c:330 cpplex.c:668 cpplex.c:1942
-msgid "ignoring invalid multibyte character"
-msgstr "caractère multioctet invalide ignoré"
+#: c-lex.c:696
+msgid "traditional C rejects string constant concatenation"
+msgstr "le C traditionel rejette la concaténation de chaînes de constantes"
+
+#: c-objc-common.c:82
+msgid "%Jfunction '%F' can never be inlined because it is supressed using -fno-inline"
+msgstr "%Jfonction « %F » ne jamais être enlignée en raison de l'option -fno-inline qui en supprime la possibilité"
+
+#: c-objc-common.c:92
+msgid "%Jfunction '%F' can never be inlined because it might not be bound within this unit of translation"
+msgstr "%Jfonction « %F » ne jamais être enlignée parce qu'elle ne peut être lié dans cette unité de traduction"
-#: c-opts.c:355
+#: c-objc-common.c:100
+msgid "%Jfunction '%F' can never be inlined because it uses attributes conflicting with inlining"
+msgstr "%Jfonction « %F » ne jamais être enlignée parce qu'elle utilise un attribut en conflit avec l'enlignage"
+
+#: c-objc-common.c:115
+msgid "%Jfunction '%F' can never be inlined because it has pending sizes"
+msgstr "%Jfonction « %F » ne jamais être enlignée parce qu'elle a des tailles en attente"
+
+#: c-objc-common.c:128
+msgid "%Jnested function '%F' can never be inlined because it has possibly saved pending sizes"
+msgstr "%Jfonction imbriqué « %F » ne peut jamais être enlignée parce qu'ella possiblement sauvegardé des tailles en attente"
+
+#: c-opts.c:141
#, c-format
-msgid "missing argument to \"-%s\""
-msgstr "argument manquant à « -%s »"
+msgid "no class name specified with \"%s\""
+msgstr "aucun nom de classe spécifié avec \"%s\""
-#: c-opts.c:359
+#: c-opts.c:145
#, c-format
-msgid "no class name specified with \"-%s\""
-msgstr "aucun nom de classe spécifié avec « -%s »"
+msgid "assertion missing after \"%s\""
+msgstr "assertion manquante après \"%s\""
-#: c-opts.c:366
+#: c-opts.c:150
#, c-format
-msgid "missing filename after \"-%s\""
-msgstr "nom de fichier manquant après « -%s »"
+msgid "macro name missing after \"%s\""
+msgstr "nom de macro manquant après \"%s\""
-#: c-opts.c:371
+#: c-opts.c:157
#, c-format
-msgid "missing target after \"-%s\""
-msgstr "cible manquante après « -%s »"
+msgid "missing path after \"%s\""
+msgstr "cible manquante après \"%s\""
-#: c-opts.c:505
+#: c-opts.c:166
#, c-format
-msgid "options array incorrectly sorted: %s is before %s"
-msgstr "tableau des options mal trié : %s est avant %s"
+msgid "missing filename after \"%s\""
+msgstr "nom de fichier manquant après \"%s\""
-#: c-opts.c:550
+#: c-opts.c:171
#, c-format
-msgid "too many filenames given. Type %s --help for usage"
-msgstr "trop de noms de fichiers. Taper %s --help pour en connaître l'usage"
+msgid "missing makefile target after \"%s\""
+msgstr "cible manquante dans le makefile après \"%s\""
-#: c-opts.c:937
-msgid "-Wno-strict-prototypes is not supported in C++"
-msgstr "-Wno-strict-prototypes n'est pas permis en C++"
+#: c-opts.c:291
+msgid "-I- specified twice"
+msgstr "-I- spécifié deux fois"
-#: c-opts.c:1017
+#: c-opts.c:692
#, c-format
msgid "switch \"%s\" is no longer supported"
msgstr "l'option « %s » n'est plus supportée"
-#: c-opts.c:1033
-#, c-format
-msgid "switch \"%s\" is deprecated, please see documentation for details"
-msgstr "l'option %s est obsolète, reportez-vous à la documentation pour les détails"
-
-#: c-opts.c:1153
-msgid "-fhandle-exceptions has been renamed to -fexceptions (and is now on by default)"
+#: c-opts.c:816
+msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr "-fhandle-exceptions a été renommé -fexceptions (et est maintenant utilisé par défaut)"
-#: c-opts.c:1273
+#: c-opts.c:982
msgid "output filename specified twice"
msgstr "nom du fichier de sortie spécifié deux fois"
-#: c-opts.c:1387
+#: c-opts.c:1106
msgid "-Wformat-y2k ignored without -Wformat"
msgstr "-Wformat-y2k ignorée sans -Wformat"
-#: c-opts.c:1389
+#: c-opts.c:1108
msgid "-Wformat-extra-args ignored without -Wformat"
msgstr "-Wformat-extra-args ignorée sans -Wformat"
-#: c-opts.c:1391
+#: c-opts.c:1110
msgid "-Wformat-zero-length ignored without -Wformat"
msgstr "-Wformat-zero-length ignorée sans -Wformat"
-#: c-opts.c:1393
+#: c-opts.c:1112
msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr "-Wformat-nonliteral ignorée sans -Wformat"
-#: c-opts.c:1395
+#: c-opts.c:1114
msgid "-Wformat-security ignored without -Wformat"
msgstr "-Wformat-security ignorée sans -Wformat"
-#: c-opts.c:1397
+#: c-opts.c:1116
msgid "-Wmissing-format-attribute ignored without -Wformat"
msgstr "-Wmissing-format-attribute ignorée sans -Wformat"
-#: c-opts.c:1419
+#: c-opts.c:1130
#, c-format
-msgid "opening output file %s"
-msgstr "ouverture du fichier de sortie %s"
+msgid "opening output file %s: %m"
+msgstr "ouverture du fichier de sortie %s: %m"
+
+#: c-opts.c:1135
+#, c-format
+msgid "too many filenames given. Type %s --help for usage"
+msgstr "trop de noms de fichiers. Taper %s --help pour en connaître l'usage"
+
+#: c-opts.c:1213
+msgid "YYDEBUG not defined"
+msgstr "YYDEBUG n'est pas défini"
-#: c-opts.c:1474
+#: c-opts.c:1260
#, c-format
-msgid "opening dependency file %s"
-msgstr "ouverture du fichier de dépendances %s"
+msgid "opening dependency file %s: %m"
+msgstr "ouverture du fichier de dépendances %s: %m"
-#: c-opts.c:1484
+#: c-opts.c:1270
#, c-format
-msgid "closing dependency file %s"
-msgstr "fermeture du fichier de dépendances %s"
+msgid "closing dependency file %s: %m"
+msgstr "fermeture du fichier de dépendances %s: %m"
-#: c-opts.c:1487
+#: c-opts.c:1273
#, c-format
-msgid "when writing output to %s"
-msgstr "lors de l'écriture de la sortie dans %s"
+msgid "when writing output to %s: %m"
+msgstr "lors de l'écriture de la sortie dans %s: %m"
-#: c-opts.c:1567
+#: c-opts.c:1343
msgid "to generate dependencies you must specify either -M or -MM"
msgstr "pour générer les dépendances, vous devez spécifier -M ou -MM"
-#: c-opts.c:1715
-#, fuzzy, c-format
-msgid "\"-%c%s%s\" is valid for %s but not for %s"
-msgstr "« -%s » est valide pour %s mais pas pour %s"
-
-#. To keep the lines from getting too long for some compilers, limit
-#. to about 500 characters (6 lines) per chunk.
-#: c-opts.c:1726
-msgid ""
-"Switches:\n"
-" -include <file> Include the contents of <file> before other files\n"
-" -imacros <file> Accept definition of macros in <file>\n"
-" -iprefix <path> Specify <path> as a prefix for next two options\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"
-msgstr ""
-"Options:\n"
-" -include <fichier> Inclure le contenu du <fichier> avant d'autres fichiers\n"
-" -imacros <fichier> Accepter la définition de macros dans le <fichier>\n"
-" -iprefix <chemin> Spécifier le <chemin> comme un préfixe aux prochaines deux options\n"
-" -iwithprefix <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion système\n"
-" -iwithprefixbefore <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion principal\n"
-" -isystem <rép> Ajouter le <rép>ertoire au début du chemin d'inclusion système\n"
-
-#: c-opts.c:1735
-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 docs\n"
-" -nostdinc Do not search system include directories\n"
-" (dirs specified with -isystem will still be used)\n"
-" -nostdinc++ Do not search system include directories for C++\n"
-" -o <file> Put output into <file>\n"
-msgstr ""
-" -idirafter <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion système\n"
-" -I <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion principal\n"
-" -I- Raffiner le contrôle du chemin d'inclusion; consulter la doc\n"
-" -nostdinc Ne pas rechercher dans les répertoires d'inclusion système\n"
-" (les rép spécifiés avec -isystem seront encore utilisés)\n"
-" -nostdinc++ Ne pas rechercher dans les répertoires d'inclusion système pour C++\n"
-" -o <fichier> Produire la sortie dans le <fichier>\n"
-
-#: c-opts.c:1744
-msgid ""
-" -trigraphs Support ISO C trigraphs\n"
-" -std=<std name> Specify the conformance standard; one of:\n"
-" gnu89, gnu99, c89, c99, iso9899:1990,\n"
-" iso9899:199409, iso9899:1999, c++98\n"
-" -w Inhibit warning messages\n"
-" -W[no-]trigraphs Warn if trigraphs are encountered\n"
-" -W[no-]comment{s} Warn if one comment starts inside another\n"
-msgstr ""
-" -trigraphs Permettre les trigraphes C ISO\n"
-" -std=<standard> Spécifier le <standard> de conformité à utiliser; soit:\n"
-" gnu89, gnu99, c89, c99, iso9899:1990,\n"
-" iso9899:199409, iso9899:1999, c++98\n"
-" -w Inhiber les messages d'avertissement\n"
-" -W[no-]trigraphs Avertir [ou non] si des trigraphes sont rencontrés\n"
-" -W[no-]comment{s} Avertir [ou non] si un commentaire débute à l'intérieur \n"
-" d'un autre\n"
-
-#: c-opts.c:1753
-msgid ""
-" -W[no-]traditional Warn about features not present in traditional C\n"
-" -W[no-]undef Warn if an undefined macro is used by #if\n"
-" -W[no-]import Warn about the use of the #import directive\n"
-msgstr ""
-" -W[no-]traditional Avertir [ou non] à propos des fonctionnalités absentes\n"
-" en C traditionnel\n"
-" -W[no-]undef Avertir [ou non] à propos des macros utilisées dans des\n"
-" #if sans être définies\n"
-" -W[no-]import Avertir [ou non] de l'utilisation de la directive #import\n"
-
-#: c-opts.c:1758
-msgid ""
-" -W[no-]error Treat all warnings as errors\n"
-" -W[no-]system-headers Do not suppress warnings from system headers\n"
-" -W[no-]all Enable most preprocessor warnings\n"
-msgstr ""
-" -W[no-]error Changer [ou non] les avertissements en erreurs\n"
-" -W[no-]system-headers Supprimer [ou non] les avertissements à propos des \n"
-" en-têtes système\n"
-" -W[no-]all Générer [ou non] la plupart des avertissements du\n"
-" préprocesseur\n"
+#: c-opts.c:1403
+msgid "<built-in>"
+msgstr "<interne>"
-#: c-opts.c:1763
-msgid ""
-" -M Generate make dependencies\n"
-" -MM As -M, but ignore system header files\n"
-" -MD Generate make dependencies and compile\n"
-" -MMD As -MD, but ignore system header files\n"
-" -MF <file> Write dependency output to the given file\n"
-" -MG Treat missing header file as generated files\n"
-msgstr ""
-" -M Générer les dépendances pour make\n"
-" -MM Comme -M, en ignorant les fichiers d'en-têtes système\n"
-" -MD Générer les dépendances pour make et compiler\n"
-" -MMD Comme -MD, en ignorant les fichiers d'en-têtes système\n"
-" -MF <fichier> Écrire les dépendances dans le <fichier>\n"
-" -MG Traiter les en-têtes manquants comme des fichiers générés\n"
-
-#: c-opts.c:1771
-msgid ""
-" -MP\t\t\t Generate phony targets for all headers\n"
-" -MQ <target> Add a MAKE-quoted target\n"
-" -MT <target> Add an unquoted target\n"
-msgstr ""
-" -MP\t\t\t Générer des cibles factices pour tous les en-têtes\n"
-" -MQ <target> Ajouter une cible protégée pour MAKE\n"
-" -MT <target> Ajouter une cible non protégée\n"
+#: c-opts.c:1418
+msgid "<command line>"
+msgstr "<ligne de commande>"
-#: c-opts.c:1776
-msgid ""
-" -D<macro> Define a <macro> with string '1' as its value\n"
-" -D<macro>=<val> Define a <macro> with <val> as its value\n"
-" -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"
-msgstr ""
-" -D<macro> Définir une <macro> avec la chaîne « 1 » pour valeur\n"
-" -D<macro>=<valeur> Définir une <macro> de <valeur>\n"
-" -A<question>=(<réponse>) Créer une assertion <question>=<réponse>\n"
-" -A-<question>=(<réponse>) Dissocier la <réponse> à la <question>\n"
-" -U<macro> Oublier la définition de la <macro> \n"
-" -v Afficher le numéro de version\n"
-
-#: c-opts.c:1784
-msgid ""
-" -H Print the name of header files as they are used\n"
-" -C Do not discard comments\n"
-" -dM Display a list of macro definitions active at end\n"
-" -dD Preserve macro definitions in output\n"
-" -dN As -dD except that only the names are preserved\n"
-" -dI Include #include directives in the output\n"
-msgstr ""
-" -H Afficher le nom des fichiers en-tête tel qu'utilisés\n"
-" -C Ne pas mettre de côté les commantaires\n"
-" -dM Afficher la liste des définitions de macro actives à la fin\n"
-" -dD Préserver les définitions de macros dans la sortie\n"
-" -dN Comme -dD, mais seuls les noms sont préservés\n"
-" -dI Inclure la directive #include dans la sortie\n"
-
-#: c-opts.c:1792
-msgid ""
-" -f[no-]preprocessed Treat the input file as already preprocessed\n"
-" -ftabstop=<number> Distance between tab stops for column reporting\n"
-" -P Do not generate #line directives\n"
-" -remap Remap file names when including files\n"
-" --help Display this information\n"
-msgstr ""
-" -f[no-]preprocessed Considérer [ou non] que le fichier d'entrée est \n"
-" déjà pré-traité\n"
-" -ftabstop=<nombre> Largeur des tabulations pour indiquer la colonne\n"
-" -P Ne pas générer des directives #line\n"
-" -remap Refaire la table des noms de fichiers lors de\n"
-" l'inclusion de fichiers\n"
-" --help Afficher cet l'aide-mémoire\n"
+#: c-opts.c:1502
+msgid "too late for # directive to set debug directory"
+msgstr "il est trop tard pour la directive # pour fixer un répertoire de mise au point"
#. Like YYERROR but do call yyerror.
-#: c-parse.y:55 parse.y:48 objc-parse.y:55
+#: c-parse.y:54 c-parse.c:5381 gengtype-yacc.c:1514 java/parse-scan.c:3063
+#: java/parse.c:6067 objc/objc-parse.y:54 objc/objc-parse.c:6644
msgid "syntax error"
msgstr "erreur de syntaxe"
# FIXME
-#: /usr/share/bison/bison.simple:179
+#: c-parse.c:2118 gengtype-yacc.c:545 java/parse-scan.c:1932 java/parse.c:2875
+#: objc/objc-parse.c:2717
msgid "syntax error: cannot back up"
msgstr "erreur de syntaxe : impossible de reculer"
-#: c-parse.y:325 objc-parse.y:346
+#: c-parse.y:320 objc/objc-parse.y:344
msgid "ISO C forbids an empty source file"
-msgstr "le C ISO interdit un fichier source vide"
+msgstr "ISO C interdit un fichier source vide"
-#: c-parse.y:366 c-typeck.c:6916 objc-parse.y:388
+#: c-parse.y:349 c-typeck.c:6217 objc/objc-parse.y:374
msgid "argument of `asm' is not a constant string"
msgstr "l'argument de « asm » n'est pas une chaîne de constante"
-#: c-parse.y:374 objc-parse.y:396
+#: c-parse.y:357 objc/objc-parse.y:382
msgid "ISO C forbids data definition with no type or storage class"
-msgstr "le C ISO interdit la définition de données sans type ni classe de stockage"
+msgstr "ISO C interdit la définition de données sans type ni classe de stockage"
-#: c-parse.y:376 objc-parse.y:398
+#: c-parse.y:359 objc/objc-parse.y:384
msgid "data definition has no type or storage class"
msgstr "la définition de données n'a pas de type ni de classe de stockage"
-#: c-parse.y:389 objc-parse.y:411
+#: c-parse.y:372 objc/objc-parse.y:397
msgid "ISO C does not allow extra `;' outside of a function"
-msgstr "le C ISO ne permet pas de « ; » additionnel en dehors d'une fonction"
+msgstr "ISO C ne permet pas de « ; » additionnel en dehors d'une fonction"
-#: c-parse.y:449 cppexp.c:1312
+#: c-parse.y:429 cppexp.c:1253
msgid "traditional C rejects the unary plus operator"
msgstr "le C traditionnel rejette le plus unaire"
-#: c-parse.y:496 objc-parse.y:518
+#: c-parse.y:476 objc/objc-parse.y:501
msgid "`sizeof' applied to a bit-field"
msgstr "« sizeof » appliqué à un champ de bits"
-#: c-parse.y:583 objc-parse.y:605
+#: c-parse.y:563 objc/objc-parse.y:588
msgid "ISO C forbids omitting the middle term of a ?: expression"
-msgstr "le C ISO interdit l'omission du terme central de l'expression ?:"
+msgstr "ISO C interdit l'omission du terme central de l'expression ?:"
# FIXME
-#: c-parse.y:632 objc-parse.y:654
+#: c-parse.y:611 objc/objc-parse.y:636
msgid "ISO C89 forbids compound literals"
-msgstr "le C89 ISO interdit les mots composés"
+msgstr "ISO C89 interdit les mots composés"
-#: c-parse.y:646 objc-parse.y:668
+#: c-parse.y:625 objc/objc-parse.y:650
msgid "ISO C forbids braced-groups within expressions"
-msgstr "le C ISO interdit les groupes d'accolades à l'intérieur d'expressions"
+msgstr "ISO C interdit les groupes d'accolades à l'intérieur d'expressions"
-#: c-parse.y:677 objc-parse.y:699
+#: c-parse.y:653 objc/objc-parse.y:678
msgid "first argument to __builtin_choose_expr not a constant"
msgstr "le premier argument de « __builtin_choose_expr » n'est pas une constante"
-#: c-parse.y:721 objc-parse.y:767
+#: c-parse.y:696 objc/objc-parse.y:737
msgid "traditional C rejects ISO C style function definitions"
-msgstr "le C traditionel rejette les définitions de fonction au style C ISO"
-
-#: c-parse.y:985 c-parse.y:991 c-parse.y:997 c-parse.y:1003 c-parse.y:1024
-#: c-parse.y:1030 c-parse.y:1036 c-parse.y:1042 c-parse.y:1075 c-parse.y:1081
-#: c-parse.y:1087 c-parse.y:1093 c-parse.y:1138 c-parse.y:1144 c-parse.y:1150
-#: c-parse.y:1156 parse.y:1933 parse.y:1940 parse.y:1975 objc-parse.y:1031
-#: objc-parse.y:1037 objc-parse.y:1043 objc-parse.y:1049 objc-parse.y:1070
-#: objc-parse.y:1076 objc-parse.y:1082 objc-parse.y:1088 objc-parse.y:1121
-#: objc-parse.y:1127 objc-parse.y:1133 objc-parse.y:1139 objc-parse.y:1184
-#: objc-parse.y:1190 objc-parse.y:1196 objc-parse.y:1202
+msgstr "le C traditionel rejette les définitions de fonction de style ISO C"
+
+#: c-parse.y:699 c-parse.y:705 objc/objc-parse.y:740 objc/objc-parse.y:746
+msgid "old-style parameter declaration"
+msgstr "déclaration de paramètre d'un style désuet"
+
+#: c-parse.y:967 c-parse.y:973 c-parse.y:979 c-parse.y:985 c-parse.y:1006
+#: c-parse.y:1012 c-parse.y:1018 c-parse.y:1024 c-parse.y:1057 c-parse.y:1063
+#: c-parse.y:1069 c-parse.y:1075 c-parse.y:1120 c-parse.y:1126 c-parse.y:1132
+#: c-parse.y:1138 objc/objc-parse.y:1008 objc/objc-parse.y:1014
+#: objc/objc-parse.y:1020 objc/objc-parse.y:1026 objc/objc-parse.y:1047
+#: objc/objc-parse.y:1053 objc/objc-parse.y:1059 objc/objc-parse.y:1065
+#: objc/objc-parse.y:1098 objc/objc-parse.y:1104 objc/objc-parse.y:1110
+#: objc/objc-parse.y:1116 objc/objc-parse.y:1161 objc/objc-parse.y:1167
+#: objc/objc-parse.y:1173 objc/objc-parse.y:1179
#, c-format
msgid "`%s' is not at beginning of declaration"
msgstr "« %s » n'est pas au début de la déclaration"
-#: c-parse.y:1441 objc-parse.y:1496
+#: c-parse.y:1300 objc/objc-parse.y:1350
+msgid "`typeof' applied to a bit-field"
+msgstr "« typeof » appliqué à un champ de bits"
+
+#: c-parse.y:1427 objc/objc-parse.y:1477
msgid "ISO C forbids empty initializer braces"
-msgstr "le C ISO interdit d'initialiser avec des accolades vides"
+msgstr "ISO C interdit d'initialiser avec des accolades vides"
-#: c-parse.y:1455 objc-parse.y:1510
+#: c-parse.y:1441 objc/objc-parse.y:1491
msgid "ISO C89 forbids specifying subobject to initialize"
-msgstr "le C89 ISO interdit de spécifier des sous-objets à initialiser"
+msgstr "ISO C89 interdit de spécifier des sous-objets à initialiser"
-#: c-parse.y:1458 objc-parse.y:1513
+#: c-parse.y:1444 objc/objc-parse.y:1494
msgid "obsolete use of designated initializer without `='"
msgstr "utilisation obsolète d'une initialisation désignée sans « = »"
-#: c-parse.y:1462 objc-parse.y:1517
+#: c-parse.y:1448 objc/objc-parse.y:1498
msgid "obsolete use of designated initializer with `:'"
msgstr "utilisation obsolète d'une initialisation désignée avec « : »"
-#: c-parse.y:1489 objc-parse.y:1544
+#: c-parse.y:1475 objc/objc-parse.y:1525
msgid "ISO C forbids specifying range of elements to initialize"
-msgstr "le C ISO interdit de spécifier les bornes des éléments à initaliser"
+msgstr "ISO C interdit de spécifier les bornes des éléments à initaliser"
-#: c-parse.y:1497 c-parse.y:1528 objc-parse.y:1552 objc-parse.y:1583
+#: c-parse.y:1483 c-parse.y:1514 objc/objc-parse.y:1533 objc/objc-parse.y:1564
msgid "ISO C forbids nested functions"
-msgstr "le C ISO interdit les fonctions imbriquées"
+msgstr "ISO C interdit les fonctions imbriquées"
-#: c-parse.y:1703 objc-parse.y:1760
+#: c-parse.y:1691 objc/objc-parse.y:1743
msgid "ISO C forbids forward references to `enum' types"
-msgstr "le C ISO interdit les références anticipée vers un type « enum »"
+msgstr "ISO C interdit les références anticipée vers un type « enum »"
-#: c-parse.y:1715 parse.y:2411 objc-parse.y:1772
+#: c-parse.y:1703 cp/parser.c:9282 objc/objc-parse.y:1755
msgid "comma at end of enumerator list"
msgstr "virgule à la fin de liste d'énumerateurs"
-#: c-parse.y:1723 objc-parse.y:1780
+#: c-parse.y:1723 objc/objc-parse.y:1775
msgid "no semicolon at end of struct or union"
msgstr "pas de point virgule à la fin de la structure ou de l'union"
-#: c-parse.y:1732 objc-parse.y:1789 objc-parse.y:2864
+#: c-parse.y:1732 objc/objc-parse.y:1784 objc/objc-parse.y:2846
msgid "extra semicolon in struct or union specified"
msgstr "point virgule superflu dans la structure ou dans l'union"
-#: c-parse.y:1745 objc-parse.y:1816
+#: c-parse.y:1745 objc/objc-parse.y:1800
msgid "ISO C doesn't support unnamed structs/unions"
-msgstr "le C ISO ne permet pas les structures et unions sans nom"
+msgstr "ISO C ne permet pas les structures et unions sans nom"
-#: c-parse.y:1754 objc-parse.y:1825
+#: c-parse.y:1754 objc/objc-parse.y:1809
msgid "ISO C forbids member declarations with no members"
-msgstr "le C ISO interdit les déclarations de membre sans aucun membre"
+msgstr "ISO C interdit les déclarations de membre sans aucun membre"
-#: c-parse.y:1913 objc-parse.y:1984
-msgid "deprecated use of label at end of compound statement"
-msgstr "utilisation obsolète d'étiquette à la fin d'une déclaration composée"
+#: c-parse.y:1915 objc/objc-parse.y:1970
+msgid "label at end of compound statement"
+msgstr "étiquette à la fin d'une déclaration composée"
-#: c-parse.y:1930 objc-parse.y:2001
-msgid "ISO C89 forbids mixed declarations and code"
-msgstr "le C89 ISO interdit les déclarations mélangés au code"
+#: c-parse.y:1934 objc/objc-parse.y:1989
+msgid "ISO C90 forbids mixed declarations and code"
+msgstr "ISO C89 interdit les mélanges de déclarations et de code"
-#: c-parse.y:2005 objc-parse.y:2080
+#: c-parse.y:2012 objc/objc-parse.y:2069
msgid "ISO C forbids label declarations"
-msgstr "le C ISO interdit la déclaration d'étiquette"
+msgstr "ISO C interdit la déclaration d'étiquette"
-#: c-parse.y:2055 parse.y:1638 objc-parse.y:2130
+#: c-parse.y:2062 objc/objc-parse.y:2119
msgid "braced-group within expression allowed only inside a function"
msgstr "groupe entre accolades à l'intérieur d'expression permis seulement à l'intérieur d'une fonction"
-#: c-parse.y:2182 objc-parse.y:2257
+#: c-parse.y:2184 objc/objc-parse.y:2241
msgid "empty body in an else-statement"
msgstr "le corps du else est vide"
-#: c-parse.y:2303 objc-parse.y:2378
-msgid "ISO C forbids `goto *expr;'"
-msgstr "le C ISO interdit « goto *expr; »"
+#: c-parse.y:2192 objc/objc-parse.y:2249
+msgid "%Hempty body in an if-statement"
+msgstr "%Hle corps de la déclaration du if est vide"
-#: c-parse.y:2403 objc-parse.y:2478
-msgid "ISO C forbids forward parameter declarations"
-msgstr "le C ISO interdit la déclaration anticipée de paramètres"
+#: c-parse.y:2272 cp/parser.c:6028 objc/objc-parse.y:2329
+msgid "break statement not within loop or switch"
+msgstr "mot-clé « break » à l'extérieur de toute boucle ou « switch »"
+
+#: c-parse.y:2281 cp/parser.c:6039 objc/objc-parse.y:2338
+msgid "continue statement not within a loop"
+msgstr "mot-clé « continue » à l'extérieur de toute boucle"
+
+#: c-parse.y:2323 objc/objc-parse.y:2380
+msgid "ISO C forbids `goto *expr;'"
+msgstr "ISO C interdit « goto *expr; »"
#. Gcc used to allow this as an extension. However, it does
#. not work for all targets, and thus has been disabled.
@@ -2627,1296 +2523,1388 @@ msgstr "le C ISO interdit la déclaration anticipée de paramètres"
#. 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:2429 objc-parse.y:2504
+#: c-parse.y:2440 objc/objc-parse.y:2548
msgid "ISO C requires a named argument before `...'"
-msgstr "le C ISO requiert un argument nommé devant « ... »"
+msgstr "ISO C requiert un argument nommé devant « ... »"
-#: c-parse.y:2526 objc-parse.y:2601
+#: c-parse.y:2538 objc/objc-parse.y:2646
msgid "`...' in old-style identifier list"
msgstr "« ... » dans une liste d'identificateurs de style ancien"
-#: /usr/share/bison/bison.simple:795
-msgid "parse error; also virtual memory exhausted"
+#: c-parse.c:5377 gengtype-yacc.c:1510 java/parse-scan.c:3059
+#: java/parse.c:6063 objc/objc-parse.c:6640
+msgid "syntax error; also virtual memory exhausted"
msgstr "erreur d'analyse syntaxique; de plus la mémoire virtuelle est épuisée"
-#: /usr/share/bison/bison.simple:799 cp/spew.c:364
-msgid "parse error"
-msgstr "erreur d'analyse syntaxique"
-
-#: /usr/share/bison/bison.simple:924
+#: c-parse.c:5495 gengtype-yacc.c:1628 java/parse-scan.c:3177
+#: java/parse.c:6181 objc/objc-parse.c:6758
msgid "parser stack overflow"
msgstr "débordement de la pile de l'analyseur syntaxique"
-#: c-parse.y:2838 cp/spew.c:1525 objc-parse.y:3537
+#: c-parse.y:2968 objc/objc-parse.y:3663
#, c-format
-msgid "%s at end of input"
-msgstr "%s à la fin de l'entrée"
+msgid "syntax error at '%s' token"
+msgstr "erreur de syntaxe à l'élément lexical « %s »"
-#: c-parse.y:2844 cp/spew.c:1533 objc-parse.y:3543
+#: c-pch.c:112
#, c-format
-msgid "%s before %s'%c'"
-msgstr "%s avant %s« %c »"
+msgid "can't create precompiled header %s: %m"
+msgstr "ne peut créer une en-tête précompilée %s: %m"
-#: c-parse.y:2846 cp/spew.c:1535 objc-parse.y:3545
+#: c-pch.c:132
#, c-format
-msgid "%s before %s'\\x%x'"
-msgstr "%s avant %s'\\x%x'"
+msgid "can't write to %s: %m"
+msgstr "ne peut écrire dans %s: %m"
-#: c-parse.y:2850 cp/spew.c:1542 objc-parse.y:3549
+#: c-pch.c:138
#, c-format
-msgid "%s before string constant"
-msgstr "%s avant une chaîne constante"
+msgid "`%s' is not a valid output file"
+msgstr "« %s » n'est pas un nom de fichier valide"
-#: c-parse.y:2852 cp/spew.c:1544 objc-parse.y:3551
+#: c-pch.c:167 c-pch.c:183 c-pch.c:195
#, c-format
-msgid "%s before numeric constant"
-msgstr "%s avant une constante numérique"
+msgid "can't write %s: %m"
+msgstr "ne peut écrire dans %s: %m"
-#: c-parse.y:2854 objc-parse.y:3553
+#: c-pch.c:173
#, c-format
-msgid "%s before \"%s\""
-msgstr "%s avant « %s »"
+msgid "can't seek in %s: %m"
+msgstr "ne peut se positionner dans %s: %m"
-#: c-parse.y:2856 objc-parse.y:3555
+#: c-pch.c:181 c-pch.c:221 c-pch.c:249 c-pch.c:254 c-pch.c:324
#, c-format
-msgid "%s before '%s' token"
-msgstr "%s avant un élément lexical « %s »"
+msgid "can't read %s: %m"
+msgstr "ne peut lire %s: %m"
-#: c-parse.y:2921
-msgid "traditional C rejects string concatenation"
-msgstr "le C traditionel rejette la concaténation de chaînes"
+#: c-pch.c:234
+#, c-format
+msgid "%s: not compatible with this GCC version"
+msgstr "%s: n'est pas compatible avec cette version de GCC"
-#: c-parse.y:3047 objc-parse.y:3779
+#. It's a PCH for the wrong language.
+#: c-pch.c:237
#, c-format
-msgid "syntax error at '%s' token"
-msgstr "erreur de syntaxe à l'élément lexical « %s »"
+msgid "%s: not for %s"
+msgstr "%s: non pour %s"
+
+#. Not any kind of PCH.
+#: c-pch.c:241
+#, c-format
+msgid "%s: not a PCH file"
+msgstr "%s: n'est pas un fichier PCH"
+
+#: c-pch.c:260
+#, c-format
+msgid "%s: created on host `%.*s', but used on host `%s'"
+msgstr "%s: créé sur l'hôte « %.*s », mais utilisé sur l'hôte « %s »"
+
+#: c-pch.c:270
+#, c-format
+msgid "%s: created for target `%.*s', but used for target `%s'"
+msgstr "%s: créé pour la cible « %.*s », mais utilisé pour la cible « %s »"
+
+#: c-pch.c:283
+#, c-format
+msgid "%s: created by version `%.*s', but this is version `%s'"
+msgstr "%s: créé pour la version « %.*s », mais utilisé avec la version « %s »"
+
+#: c-pch.c:299
+#, c-format
+msgid "%s: created with -g%s, but used with -g%s"
+msgstr "%s: créé avec -g%s, mais utilisé avec -g%s"
+
+#: c-pch.c:313
+#, c-format
+msgid "%s: had text segment at different address"
+msgstr "%s: a un segment texte à une adresse différente"
+
+#: c-pch.c:330 cpperror.c:176 gcc.c:6547
+#, c-format
+msgid "%s: %s"
+msgstr "%s : %s"
+
+# I18N
+#: c-pch.c:361
+msgid "calling fdopen"
+msgstr "appel de fdopen()"
+
+#: c-pch.c:369 c-pch.c:381
+msgid "reading"
+msgstr "en lecture"
-#: c-pragma.c:107
+#: c-pragma.c:106
msgid "#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
msgstr "#pragma pack (pop) rencontré sans #pragma pack (push, <n>) correspondant"
-#: c-pragma.c:125
+#: c-pragma.c:124
#, c-format
msgid "#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, <n>)"
msgstr "#pragma pack(pop, %s) rencontré sans #pragma pack(push, %s, <n>) correspondant"
-#: c-pragma.c:145
+#: c-pragma.c:144
msgid "#pragma pack(push[, id], <n>) is not supported on this target"
msgstr "#pragma pack(push[, id], <n>) n'est pas permis sur cette cible"
-#: c-pragma.c:147
+#: c-pragma.c:146
msgid "#pragma pack(pop[, id], <n>) is not supported on this target"
msgstr "#pragma pack(pop[, id], <n>) n'est pas permis sur cette cible"
-#: c-pragma.c:167
+#: c-pragma.c:165
msgid "missing '(' after '#pragma pack' - ignored"
msgstr "« ( » manquante après « #pragma pack » - ignoré"
-#: c-pragma.c:180 c-pragma.c:230
+#: c-pragma.c:178 c-pragma.c:228
msgid "malformed '#pragma pack' - ignored"
msgstr "« #pragma pack » mal composée - ignoré"
-#: c-pragma.c:185
+#: c-pragma.c:183
msgid "malformed '#pragma pack(push[, id], <n>)' - ignored"
msgstr "« #pragma pack(push[, id], <n>) » mal composée - ignoré"
-#: c-pragma.c:187
+#: c-pragma.c:185
msgid "malformed '#pragma pack(pop[, id])' - ignored"
msgstr "« #pragma pack(pop[, id]) » mal composée, ignoré"
-#: c-pragma.c:196
+#: c-pragma.c:194
#, c-format
msgid "unknown action '%s' for '#pragma pack' - ignored"
msgstr "action « %s » inconnue pour « #pragma pack » - ignoré"
-#: c-pragma.c:233
+#: c-pragma.c:231
msgid "junk at end of '#pragma pack'"
msgstr "rebut à la fin de « #pragma pack »"
-#: c-pragma.c:247
+#: c-pragma.c:245
#, c-format
msgid "alignment must be a small power of two, not %d"
msgstr "l'alignement doit être une petite puissance de 2, pas %d"
-#: c-pragma.c:280
-#, c-format
-msgid "applying #pragma weak `%s' after first use results in unspecified behavior"
-msgstr "application de la #pragma weak « %s » après la première utilisation conduit à un comportement non spécifié"
+#: c-pragma.c:278
+msgid "%Japplying #pragma weak '%D' after first use results in unspecified behavior"
+msgstr "%Japplication de la #pragma weak « %D » après la première utilisation conduit à un comportement non spécifié"
-#: c-pragma.c:328 c-pragma.c:333
+#: c-pragma.c:325 c-pragma.c:330
msgid "malformed #pragma weak, ignored"
msgstr "#pragma weak mal composée, ignoré"
-#: c-pragma.c:337
+#: c-pragma.c:334
msgid "junk at end of #pragma weak"
msgstr "rebut à la fin de #pragma weak"
-#: c-pragma.c:372 c-pragma.c:377
+#: c-pragma.c:367 c-pragma.c:372
msgid "malformed #pragma redefine_extname, ignored"
msgstr "#pragma redefine_extname mal composée, ignoré"
-#: c-pragma.c:382
+#: c-pragma.c:377
msgid "junk at end of #pragma redefine_extname"
msgstr "rebut à la fin de #pragma redefine_extname"
-#: c-pragma.c:389 c-pragma.c:470
+#: c-pragma.c:384 c-pragma.c:462
msgid "#pragma redefine_extname conflicts with declaration"
msgstr "#pragma redefine_extname en conflit avec la déclaration"
-#: c-pragma.c:420
+#: c-pragma.c:413
msgid "malformed #pragma extern_prefix, ignored"
msgstr "#pragma extern_prefix mal composée, ignoré"
-#: c-pragma.c:425
+#: c-pragma.c:418
msgid "junk at end of #pragma extern_prefix"
msgstr "rebut à la fin de #pragma extern_prefix"
-#: c-pragma.c:457
-#, fuzzy
+#: c-pragma.c:449
msgid "asm declaration conflicts with previous rename"
-msgstr "déclaration asm en conflit avec le précédent changement de nom"
-
-#: c-semantics.c:565
-msgid "break statement not within loop or switch"
-msgstr "mot-clé « break » à l'extérieur de toute boucle ou « switch »"
-
-#: c-semantics.c:583
-msgid "continue statement not within a loop"
-msgstr "mot-clé « continue » à l'extérieur de toute boucle"
+msgstr "déclaration asm en conflit avec le changement de nom précédent"
-#: c-semantics.c:678
-msgid "destructor needed for `%#D'"
-msgstr "destructeur requis pour « %#D »"
+#: c-semantics.c:697
+msgid "destructor needed for `%D'"
+msgstr "destructeur requis pour « %D »"
-#: c-semantics.c:679
+#: c-semantics.c:698
msgid "where case label appears here"
msgstr "où les étiquettes de « case » apparaissent ici"
# FIXME
-#: c-semantics.c:682
+#: c-semantics.c:701
msgid "(enclose actions of previous case statements requiring destructors in their own scope.)"
msgstr "(les actions dans les « case » précédents requierent des destructeurs dans leur propre champ.)"
-#: c-semantics.c:725 c-typeck.c:6942 cp/semantics.c:897
+#: c-semantics.c:737 c-typeck.c:6239 cp/semantics.c:1070
#, c-format
msgid "%s qualifier ignored on asm"
msgstr "%s qualificateur ignoré avec asm"
-#: c-typeck.c:123
+# FIXME: c'est de l'assembleur ?
+#: c-semantics.c:991
+msgid "will never be executed"
+msgstr "ne sera jamais exécuté"
+
+#: c-typeck.c:120
#, c-format
msgid "`%s' has an incomplete type"
msgstr "« %s » a un type incomplet"
-#: c-typeck.c:145 cp/call.c:2865
+#: c-typeck.c:142 cp/call.c:2532
msgid "invalid use of void expression"
msgstr "utilisation invalide d'expression void"
-#: c-typeck.c:153
+#: c-typeck.c:150
msgid "invalid use of flexible array member"
msgstr "utilisation invalide d'un membre flexible de tableau"
-#: c-typeck.c:159
+#: c-typeck.c:156
msgid "invalid use of array with unspecified bounds"
msgstr "utilisation invalide d'un tableau sans borne spécifiée"
-#: c-typeck.c:167
+#: c-typeck.c:164
#, c-format
msgid "invalid use of undefined type `%s %s'"
msgstr "utilisation invalide d'un type indéfini « %s %s »"
#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
-#: c-typeck.c:171
+#: c-typeck.c:168
#, c-format
msgid "invalid use of incomplete typedef `%s'"
msgstr "utilisation invalide d'un typedef incomplet « %s »"
-#: c-typeck.c:424 c-typeck.c:438
+#: c-typeck.c:415 c-typeck.c:430
msgid "function types not truly compatible in ISO C"
msgstr "types de fonction pas vraiment compatibles en C ISO"
-#: c-typeck.c:603
+#: c-typeck.c:611
msgid "types are not quite compatible"
msgstr "les types ne sont pas vraiment compatibles"
-#: c-typeck.c:757 c-typeck.c:2687
+#: c-typeck.c:820
+msgid "function return types not compatible due to `volatile'"
+msgstr "les types retournés d'une fonction ne sont pas compatibles en raison de « volatile »"
+
+#: c-typeck.c:966 c-typeck.c:2143
msgid "arithmetic on pointer to an incomplete type"
msgstr "arithmétique sur un pointeur vers un type incomplet"
-#: c-typeck.c:1136
+#: c-typeck.c:1339
#, c-format
msgid "%s has no member named `%s'"
msgstr "%s n'a pas de membre nommé « %s »"
-#: c-typeck.c:1172
+#: c-typeck.c:1375
#, c-format
msgid "request for member `%s' in something not a structure or union"
msgstr "requête du membre « %s » dans quelque chose n'étant ni une structure ni une union"
-#: c-typeck.c:1204
+#: c-typeck.c:1404
msgid "dereferencing pointer to incomplete type"
msgstr "déréférencement d'un pointeur de type incomplet"
-#: c-typeck.c:1208
+#: c-typeck.c:1408
msgid "dereferencing `void *' pointer"
msgstr "déréférencement d'un pointeur « void * »"
-#: c-typeck.c:1225 cp/typeck.c:2369
+#: c-typeck.c:1425 cp/typeck.c:2104
#, c-format
msgid "invalid type argument of `%s'"
msgstr "type d'argument invalide pour « %s »"
-#: c-typeck.c:1244 cp/typeck.c:2395
+#: c-typeck.c:1443 cp/typeck.c:2129
msgid "subscript missing in array reference"
msgstr "indice manquant dans la référence du tableau"
-#: c-typeck.c:1265 cp/typeck.c:2437
+#: c-typeck.c:1464 cp/typeck.c:2171
msgid "array subscript has type `char'"
msgstr "l'indice du tableau est de type « char »"
-#: c-typeck.c:1273 c-typeck.c:1362 cp/typeck.c:2444 cp/typeck.c:2523
+#: c-typeck.c:1472 c-typeck.c:1561 cp/typeck.c:2175 cp/typeck.c:2261
msgid "array subscript is not an integer"
msgstr "l'indice du tableau n'est pas un entier"
-#: c-typeck.c:1306
+#: c-typeck.c:1505
msgid "ISO C forbids subscripting `register' array"
-msgstr "le C ISO interdit d'indicer des tableaux marqués « register »"
+msgstr "ISO C interdit de sous-indicer des tableaux « register »"
-#: c-typeck.c:1308
+#: c-typeck.c:1507
msgid "ISO C90 forbids subscripting non-lvalue array"
-msgstr "le C90 ISO interdit d'indicer de tableau n'étant pas membre gauche"
+msgstr "ISO C90 interdit d'indicer de tableau n'étant pas membre gauche"
-#: c-typeck.c:1341
+#: c-typeck.c:1540
msgid "subscript has type `char'"
msgstr "indice de type « char »"
-#: c-typeck.c:1357 cp/typeck.c:2518
+#: c-typeck.c:1556 cp/typeck.c:2256
msgid "subscripted value is neither array nor pointer"
msgstr "la valeur indicée n'est ni un tableau ni un pointeur"
-#: c-typeck.c:1411
-#, c-format
-msgid "`%s' undeclared here (not in a function)"
-msgstr "« %s » non déclaré ici (hors de toute fonction)"
-
-#: c-typeck.c:1418
-#, c-format
-msgid "`%s' undeclared (first use in this function)"
-msgstr "« %s » non déclaré (première utilisation dans cette fonction)"
-
-#: c-typeck.c:1423
-msgid "(Each undeclared identifier is reported only once"
-msgstr "(Chaque identificateur non déclaré est rapporté une seule fois"
-
-#: c-typeck.c:1424
-msgid "for each function it appears in.)"
-msgstr "pour chaque fonction dans laquelle il apparaît.)"
-
-#: c-typeck.c:1441
+#: c-typeck.c:1586
#, c-format
msgid "local declaration of `%s' hides instance variable"
msgstr "la déclaration locale de « %s » masque l'instance d'une variable"
-#: c-typeck.c:1518
+#: c-typeck.c:1679
msgid "called object is not a function"
msgstr "l'objet appelé n'est pas une fonction"
-#: c-typeck.c:1604 cp/typeck.c:2829
+#. This situation leads to run-time undefined behavior. We can't,
+#. therefore, simply error unless we can prove that all possible
+#. executions of the program must execute the code.
+#: c-typeck.c:1711
+msgid "function called through a non-compatible type"
+msgstr "fonction appellée à travers un type non compatible"
+
+#: c-typeck.c:1805 cp/typeck.c:2544
msgid "too many arguments to function"
msgstr "trop d'arguments pour la fonction"
-#: c-typeck.c:1625
+#: c-typeck.c:1826
#, c-format
msgid "type of formal parameter %d is incomplete"
msgstr "le type du paramètre formel %d est incomplet"
-#: c-typeck.c:1638
+#: c-typeck.c:1839
#, c-format
msgid "%s as integer rather than floating due to prototype"
msgstr "%s est entier plutôt que flottant en raison du prototype"
-#: c-typeck.c:1641
+#: c-typeck.c:1842
#, c-format
msgid "%s as integer rather than complex due to prototype"
msgstr "%s est entier plutôt que complexe en raison du prototype"
-#: c-typeck.c:1644
+#: c-typeck.c:1845
#, c-format
msgid "%s as complex rather than floating due to prototype"
msgstr "%s est complexe plutôt que flottant en raison du prototype"
-#: c-typeck.c:1647
+#: c-typeck.c:1848
#, c-format
msgid "%s as floating rather than integer due to prototype"
msgstr "%s est flottant plutôt qu'entier en raison du prototype"
-#: c-typeck.c:1650
+#: c-typeck.c:1851
#, c-format
msgid "%s as complex rather than integer due to prototype"
msgstr "%s est complexe plutôt qu'entier en raison du prototype"
-#: c-typeck.c:1653
+#: c-typeck.c:1854
#, c-format
msgid "%s as floating rather than complex due to prototype"
msgstr "%s est flottant plutôt que complexe en raison du prototype"
-#: c-typeck.c:1663
+#: c-typeck.c:1864
#, c-format
msgid "%s as `float' rather than `double' due to prototype"
-msgstr "%s est « float » plutôt que « double » en raison du prototype"
+msgstr "%s est « float » plutôt qu'un « double » en raison du prototype"
-#: c-typeck.c:1681
+#: c-typeck.c:1882
#, c-format
msgid "%s with different width due to prototype"
msgstr "%s a une largeur différente en raison du prototype"
-#: c-typeck.c:1715
+#: c-typeck.c:1908
#, c-format
msgid "%s as unsigned due to prototype"
msgstr "%s est non signé en raison du prototype"
-#: c-typeck.c:1717
+#: c-typeck.c:1910
#, c-format
msgid "%s as signed due to prototype"
msgstr "%s est signé en raison du prototype"
-#: c-typeck.c:1751 cp/typeck.c:2933
+#: c-typeck.c:1944 cp/typeck.c:2650
msgid "too few arguments to function"
msgstr "trop peu d'arguments pour la fonction"
-#: c-typeck.c:1793
+#: c-typeck.c:1984
msgid "suggest parentheses around + or - inside shift"
msgstr "parenthèses suggérées autour de + ou - à l'intérieur du décalage"
-#: c-typeck.c:1800
+#: c-typeck.c:1991
msgid "suggest parentheses around && within ||"
msgstr "parenthèses suggérées autour de && à l'intérieur de ||"
-#: c-typeck.c:1809
+#: c-typeck.c:2000
msgid "suggest parentheses around arithmetic in operand of |"
msgstr "parenthèses suggérées autour de l'arithmétique dans l'opérande de |"
-#: c-typeck.c:1812
+#: c-typeck.c:2003
msgid "suggest parentheses around comparison in operand of |"
msgstr "parenthèses suggérées autour de la comparaison dans l'opérande de |"
-#: c-typeck.c:1821
+#: c-typeck.c:2012
msgid "suggest parentheses around arithmetic in operand of ^"
msgstr "parenthèses suggérées autour de l'arithmétique dans l'opérande de ^"
-#: c-typeck.c:1824
+#: c-typeck.c:2015
msgid "suggest parentheses around comparison in operand of ^"
msgstr "parenthèses suggérées autour de la comparaison dans l'opérande de ^"
-#: c-typeck.c:1831
+#: c-typeck.c:2022
msgid "suggest parentheses around + or - in operand of &"
msgstr "parenthèses suggérées autour de + ou - dans l'opérande de &"
-#: c-typeck.c:1834
+#: c-typeck.c:2025
msgid "suggest parentheses around comparison in operand of &"
msgstr "parenthèses suggérées autour de la comparaison dans l'opérande de &"
-#: c-typeck.c:1841
+#: c-typeck.c:2032
msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
msgstr "les comparaisons telles que X<=Y<=Z n'ont pas de signification mathématique"
-#: c-typeck.c:2001 c-typeck.c:2036
-msgid "division by zero"
-msgstr "division par zéro"
-
-#: c-typeck.c:2081 cp/typeck.c:3194
-msgid "right shift count is negative"
-msgstr "le compteur de décalage vers la droite est négatif"
-
-#: c-typeck.c:2088 cp/typeck.c:3200
-msgid "right shift count >= width of type"
-msgstr "compteur de décalage vers la droite >= à la largeur du type"
-
-#: c-typeck.c:2109 cp/typeck.c:3219
-msgid "left shift count is negative"
-msgstr "le compteur de décalage vers la gauche est négatif"
-
-#: c-typeck.c:2112 cp/typeck.c:3221
-msgid "left shift count >= width of type"
-msgstr "compteur de décalage vers la gauche >= à la largeur du type"
-
-#: c-typeck.c:2133
-msgid "shift count is negative"
-msgstr "le compteur de décalage est négatif"
-
-#: c-typeck.c:2135
-msgid "shift count >= width of type"
-msgstr "compteur de décalage >= à la largeur du type"
-
-#: c-typeck.c:2152 cp/typeck.c:3256
-msgid "comparing floating point with == or != is unsafe"
-msgstr "comparer des nombres flottants à l'aide de == ou != n'est pas sûr"
-
-#: c-typeck.c:2178 c-typeck.c:2184
-msgid "ISO C forbids comparison of `void *' with function pointer"
-msgstr "le C ISO interdit la comparaison de « void * » avec un pointeur de fonction"
-
-#: c-typeck.c:2187 c-typeck.c:2227 c-typeck.c:2255
-msgid "comparison of distinct pointer types lacks a cast"
-msgstr "il manque un transtypage pour comparer des types distincts de pointeur"
-
-#: c-typeck.c:2201 c-typeck.c:2206 c-typeck.c:2275 c-typeck.c:2280
-msgid "comparison between pointer and integer"
-msgstr "comparaison entre un pointeur et un entier"
-
-#: c-typeck.c:2222 c-typeck.c:2250
-msgid "ISO C forbids ordered comparisons of pointers to functions"
-msgstr "le C ISO interdit les comparaisons ordonnées de pointeurs vers des fonctions"
-
-#: c-typeck.c:2247
-msgid "comparison of complete and incomplete pointers"
-msgstr "comparaison de pointeurs complet et incomplet"
-
-#: c-typeck.c:2263 c-typeck.c:2270
-msgid "ordered comparison of pointer with integer zero"
-msgstr "comparaison ordonnée de pointeur avec le zéro entier"
-
-#: c-typeck.c:2294 cp/typeck.c:3389
-msgid "unordered comparison on non-floating point argument"
-msgstr "comparaison non ordonnée sur un argument n'étant pas en virgule flottante"
-
-#: c-typeck.c:2505
-msgid "comparison between signed and unsigned"
-msgstr "comparaison entre élément signé et élément non signé"
-
-#: c-typeck.c:2551 cp/typeck.c:3633
-msgid "comparison of promoted ~unsigned with constant"
-msgstr "comparaison entre élément promu ~unsigned et une constante"
-
-#: c-typeck.c:2559 cp/typeck.c:3641
-msgid "comparison of promoted ~unsigned with unsigned"
-msgstr "comparaison entre élément promu ~unsigned et un élément non signé"
-
-#: c-typeck.c:2639
+#: c-typeck.c:2095
msgid "pointer of type `void *' used in subtraction"
msgstr "pointeur de type « void * » utilisé dans une soustraction"
-#: c-typeck.c:2641
+#: c-typeck.c:2097
msgid "pointer to a function used in subtraction"
msgstr "pointeur vers un fonction utilisé dans une soustraction"
-#: c-typeck.c:2738
+#: c-typeck.c:2191
msgid "wrong type argument to unary plus"
msgstr "type d'argument erroné pour le plus unaire"
-#: c-typeck.c:2751
+#: c-typeck.c:2204
msgid "wrong type argument to unary minus"
msgstr "type d'argument erroné pour le moins unaire"
-#: c-typeck.c:2768
+#: c-typeck.c:2221
msgid "ISO C does not support `~' for complex conjugation"
-msgstr "le C ISO ne permet pas d'utiliser « ~ » pour le complexe conjugué"
+msgstr "ISO C ne permet pas d'utiliser « ~ » pour le complexe conjugué"
-#: c-typeck.c:2774
+#: c-typeck.c:2227
msgid "wrong type argument to bit-complement"
msgstr "type d'argument erroné pour un complément de bit"
-#: c-typeck.c:2783
+#: c-typeck.c:2235
msgid "wrong type argument to abs"
msgstr "type d'argument erroné pour abs"
-#: c-typeck.c:2795
+#: c-typeck.c:2247
msgid "wrong type argument to conjugation"
msgstr "type d'argument erroné pour la conjugaison"
-#: c-typeck.c:2809
+#: c-typeck.c:2261
msgid "wrong type argument to unary exclamation mark"
msgstr "type d'argument erroné pour le point d'exclamation unaire"
-#: c-typeck.c:2852
+#: c-typeck.c:2304
msgid "ISO C does not support `++' and `--' on complex types"
-msgstr "le C ISO ne permet pas «++» ni «--» sur les types complexes"
+msgstr "ISO C ne permet pas « ++ » ni « -- » sur les types complexes"
-#: c-typeck.c:2867 c-typeck.c:2899
+#: c-typeck.c:2319 c-typeck.c:2351
msgid "wrong type argument to increment"
msgstr "type d'argument erroné pour un incrément"
-#: c-typeck.c:2869 c-typeck.c:2901
+#: c-typeck.c:2321 c-typeck.c:2353
msgid "wrong type argument to decrement"
msgstr "type d'argument erroné pour un décrément"
-#: c-typeck.c:2890
+#: c-typeck.c:2342
msgid "increment of pointer to unknown structure"
msgstr "incrément d'un pointeur vers une structure inconnue"
-#: c-typeck.c:2892
+#: c-typeck.c:2344
msgid "decrement of pointer to unknown structure"
msgstr "décrément d'un pointeur vers une structure inconnue"
-# FIXME
-#: c-typeck.c:3029
-msgid "ISO C forbids the address of a cast expression"
-msgstr "le C ISO interdit l'adresse d'une expression transtypée"
-
-#: c-typeck.c:3039
+#: c-typeck.c:2469
msgid "invalid lvalue in unary `&'"
msgstr "membre gauche invalide pour le « & » unaire"
-#: c-typeck.c:3071
+#: c-typeck.c:2501
#, c-format
msgid "attempt to take address of bit-field structure member `%s'"
msgstr "tentative pour prendre l'adresse du membre « %s » d'une structure de champ de bits"
-#: c-typeck.c:3180 c-typeck.c:4651 c-typeck.c:4667 c-typeck.c:4683
-#: final.c:3146 final.c:3148 gcc.c:4381 rtl-error.c:122 toplev.c:1694
-#: config/cris/cris.c:545 cp/spew.c:1538 cp/typeck.c:4367 java/expr.c:364
-#: java/verify.c:1467 java/verify.c:1468 java/verify.c:1483
-#, c-format
-msgid "%s"
-msgstr "%s"
+#: c-typeck.c:2634
+msgid "use of conditional expressions as lvalues is deprecated"
+msgstr "utilisation d'expressions conditionnelles comme lvalues est déprécié"
-#: c-typeck.c:3241
-msgid "ISO C forbids use of conditional expressions as lvalues"
-msgstr "le C ISO interdit l'utilisation d'expressions conditionnelles comme membre gauche"
+#: c-typeck.c:2637
+msgid "use of compound expressions as lvalues is deprecated"
+msgstr "utilisation d'expressions composées comme lvalues est déprécié"
-#: c-typeck.c:3244
-msgid "ISO C forbids use of compound expressions as lvalues"
-msgstr "le C ISO interdit l'utilisation d'expressions composées comme membre gauche"
+#: c-typeck.c:2640
+msgid "use of cast expressions as lvalues is deprecated"
+msgstr "utilisation de transtypage d'expressions comme lvalues est déprécié"
-#: c-typeck.c:3247
-msgid "ISO C forbids use of cast expressions as lvalues"
-msgstr "le C ISO interdit l'utilisation de transtypage d'expression comme membre gauche"
-
-#: c-typeck.c:3264
+#: c-typeck.c:2655
#, c-format
msgid "%s of read-only member `%s'"
msgstr "%s d'un membre en lecture seule « %s »"
-#: c-typeck.c:3268
+#: c-typeck.c:2659
#, c-format
msgid "%s of read-only variable `%s'"
msgstr "%s d'une variable en lecture seule « %s »"
-#: c-typeck.c:3271
+#: c-typeck.c:2662
#, c-format
msgid "%s of read-only location"
msgstr "%s d'une position en lecture seule"
-#: c-typeck.c:3290
+#: c-typeck.c:2680
#, c-format
msgid "cannot take address of bit-field `%s'"
msgstr "ne peut prendre l'adresse du champ de bits « %s »"
-#: c-typeck.c:3318
+#: c-typeck.c:2708 treelang/treetree.c:946
#, c-format
msgid "global register variable `%s' used in nested function"
msgstr "variable globale de registre « %s » utilisée dans une fonction imbriquée"
-#: c-typeck.c:3322
+#: c-typeck.c:2712 treelang/treetree.c:950
#, c-format
msgid "register variable `%s' used in nested function"
msgstr "variable de registre « %s » utilisée dans une fonction imbriquée"
-#: c-typeck.c:3329
+#: c-typeck.c:2719 treelang/treetree.c:957
#, c-format
msgid "address of global register variable `%s' requested"
msgstr "adresse d'une variable registre globale « %s » requise"
-#: c-typeck.c:3341
+#: c-typeck.c:2731
msgid "cannot put object with volatile field into register"
msgstr "impossible de mettre un objet avec un champ volatile dans un registre"
-#: c-typeck.c:3345
+#: c-typeck.c:2735 treelang/treetree.c:962
#, c-format
msgid "address of register variable `%s' requested"
msgstr "adresse d'une variable registre « %s » requise"
-#: c-typeck.c:3453
+#: c-typeck.c:2820
msgid "signed and unsigned type in conditional expression"
msgstr "type signé et non signé dans une expression conditionnelle"
-#: c-typeck.c:3460
+#: c-typeck.c:2827
msgid "ISO C forbids conditional expr with only one void side"
-msgstr "le C ISO interdit une expression conditionnelle dont un seul côté est « void »"
+msgstr "ISO C interdit une expression conditionnelle dont un seul côté est « void »"
-#: c-typeck.c:3476 c-typeck.c:3483
+#: c-typeck.c:2843 c-typeck.c:2850
msgid "ISO C forbids conditional expr between `void *' and function pointer"
-msgstr "le C ISO interdit une expression conditionnelle entre « void * » et un pointeur de fonction"
+msgstr "ISO C interdit une expression conditionnelle entre « void * » et un pointeur de fonction"
-#: c-typeck.c:3489
+#: c-typeck.c:2856
msgid "pointer type mismatch in conditional expression"
msgstr "non concordance de type de pointeurs dans un expression conditionnelle"
-#: c-typeck.c:3496 c-typeck.c:3506
+#: c-typeck.c:2863 c-typeck.c:2873
msgid "pointer/integer type mismatch in conditional expression"
msgstr "non concordance entre pointeur et entier dans une expression conditionnelle"
-#: c-typeck.c:3520
+#: c-typeck.c:2887
msgid "type mismatch in conditional expression"
msgstr "non concordance de type dans une expression conditionnelle"
-#: c-typeck.c:3591 cp/typeck.c:4623
+#: c-typeck.c:2947
msgid "left-hand operand of comma expression has no effect"
msgstr "l'opérande à gauche de la virgule n'a pas d'effet"
-#: c-typeck.c:3635
+#: c-typeck.c:2978
msgid "cast specifies array type"
msgstr "le transtypage spécifie un type de tableau"
-#: c-typeck.c:3641
+#: c-typeck.c:2984
msgid "cast specifies function type"
msgstr "le transtypage spécifie un type de fonction"
-#: c-typeck.c:3651
+#: c-typeck.c:2994
msgid "ISO C forbids casting nonscalar to the same type"
-msgstr "le C ISO interdit le transtypage d'un type non scalaire vers lui-même"
+msgstr "ISO C interdit le transtypage d'un type non scalaire vers lui-même"
-#: c-typeck.c:3670
+#: c-typeck.c:3012
msgid "ISO C forbids casts to union type"
-msgstr "le C ISO interdit le transtypage vers un type union"
+msgstr "ISO C interdit le transtypage vers un type union"
-#: c-typeck.c:3685
+#: c-typeck.c:3020
msgid "cast to union type from type not present in union"
msgstr "transtypage vers un type union depuis un type absent de l'union"
-#: c-typeck.c:3736
+#: c-typeck.c:3071
msgid "cast adds new qualifiers to function type"
msgstr "le transtypage ajoute un nouveau qualificateur au type de la fonction"
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:3741
+#: c-typeck.c:3076
msgid "cast discards qualifiers from pointer target type"
msgstr "le transtypage annule des qualificateurs du type pointeur ciblé"
-#: c-typeck.c:3756
+#: c-typeck.c:3091
msgid "cast increases required alignment of target type"
msgstr "le transtypage augmente l'alignement requis pour le type ciblé"
-#: c-typeck.c:3762 cp/typeck.c:5144
+#: c-typeck.c:3097 cp/typeck.c:4889
msgid "cast from pointer to integer of different size"
msgstr "transtypage d'un pointeur vers un entier de taille différente"
-#: c-typeck.c:3767
+#: c-typeck.c:3102
msgid "cast does not match function type"
msgstr "le transtypage ne concorde pas avec le type de la fonction"
-#: c-typeck.c:3774 cp/typeck.c:5151
+#: c-typeck.c:3109 cp/typeck.c:4896
msgid "cast to pointer from integer of different size"
msgstr "transtypage vers un pointeur depuis un entier de taille différente"
# FIXME
-#: c-typeck.c:3786
+#: c-typeck.c:3121
msgid "type-punning to incomplete type might break strict-aliasing rules"
-msgstr ""
+msgstr "type-punning vers un type incomplet peut briser les règles stricte d'aliases"
# FIXME
-#: c-typeck.c:3790
+#: c-typeck.c:3125
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
-msgstr ""
+msgstr "déréférencement du pointeur type-punned brisera les strictes d'aliases"
+
+#: c-typeck.c:3136
+msgid "ISO C forbids conversion of function pointer to object pointer type"
+msgstr "ISO C interdit la conversion d'un pointeur de fonction en un type pointeur d'objet"
+
+#: c-typeck.c:3145
+msgid "ISO C forbids conversion of object pointer to function pointer type"
+msgstr "ISO C interdit la conversion d'un pointeur d'objet vers un type de pointeur à une fonction"
#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
#. Reject anything strange now.
-#: c-typeck.c:3949
+#: c-typeck.c:3303
msgid "invalid lvalue in assignment"
msgstr "membre gauche de l'affectation invalide"
#. Convert new value to destination type.
-#: c-typeck.c:3958 c-typeck.c:3983 c-typeck.c:4000 cp/typeck.c:5266
-#: cp/typeck.c:5416
+#. Check this here to avoid odd errors when trying to convert
+#. a throw to the type of the COND_EXPR.
+#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
+#. Reject anything strange now.
+#: c-typeck.c:3312 c-typeck.c:3337 c-typeck.c:3354 cp/typeck.c:5008
+#: cp/typeck.c:5152
msgid "assignment"
msgstr "affectation"
-#: c-typeck.c:4070
+#: c-typeck.c:3421
msgid "cannot pass rvalue to reference parameter"
msgstr "impossible de passer un membre droit en paramètre par référence"
-#: c-typeck.c:4174 c-typeck.c:4241
+#: c-typeck.c:3530 c-typeck.c:3606
#, c-format
msgid "%s makes qualified function pointer from unqualified"
msgstr "%s qualifie un pointeur de fonction non qualifié"
-#: c-typeck.c:4178 c-typeck.c:4221
+#: c-typeck.c:3534 c-typeck.c:3586
#, c-format
msgid "%s discards qualifiers from pointer target type"
msgstr "%s annule des qualificateurs du type du pointeur cible"
-#: c-typeck.c:4184
+#: c-typeck.c:3540
msgid "ISO C prohibits argument conversion to union type"
-msgstr "le C ISO interdit la conversion d'argument en type union"
+msgstr "ISO C interdit la conversion d'argument en type union"
-#: c-typeck.c:4213
+#: c-typeck.c:3578
#, c-format
msgid "ISO C forbids %s between function pointer and `void *'"
-msgstr "le C ISO interdit %s entre pointeur de fonction et « void * »"
+msgstr "ISO C interdit %s entre pointeur de fonction et « void * »"
-#: c-typeck.c:4230
+#: c-typeck.c:3595
#, c-format
msgid "pointer targets in %s differ in signedness"
msgstr "les cibles des pointeurs dans %s n'ont pas toutes de signe"
-#: c-typeck.c:4246
+#: c-typeck.c:3611
#, c-format
msgid "%s from incompatible pointer type"
msgstr "%s d'un type pointeur incompatible"
-#: c-typeck.c:4252 c-typeck.c:4804 cp/typeck.c:1653
+#: c-typeck.c:3617 c-typeck.c:4124 cp/typeck.c:1366
msgid "invalid use of non-lvalue array"
msgstr "utilisation invalide d'un tableau n'étant pas membre gauche"
-#: c-typeck.c:4267
+#: c-typeck.c:3631
#, c-format
msgid "%s makes pointer from integer without a cast"
msgstr "%s transforme un entier en pointeur sans transtypage"
-#: c-typeck.c:4275
+#: c-typeck.c:3638
#, c-format
msgid "%s makes integer from pointer without a cast"
msgstr "%s transforme un pointeur en entier sans transtypage"
-#: c-typeck.c:4289 c-typeck.c:4292
+#: c-typeck.c:3652 c-typeck.c:3655
#, c-format
msgid "incompatible type for argument %d of `%s'"
msgstr "type incompatible pour l'argument n°%d de « %s »"
-#: c-typeck.c:4296
+#: c-typeck.c:3659
#, c-format
msgid "incompatible type for argument %d of indirect function call"
msgstr "type incompatible pour l'argument n°%d de l'appel indirect de fonction"
-#: c-typeck.c:4300
+#: c-typeck.c:3663
#, c-format
msgid "incompatible types in %s"
msgstr "type incompatibles dans %s"
#. Function name is known; supply it.
-#: c-typeck.c:4358
+#: c-typeck.c:3719
#, c-format
msgid "passing arg of `%s'"
msgstr "passage des arguments de « %s »"
#. Function name unknown (call through ptr).
-#: c-typeck.c:4368
+#: c-typeck.c:3728
msgid "passing arg of pointer to function"
msgstr "passage des arguments au pointeur de fonction"
#. Function name is known; supply it.
-#: c-typeck.c:4376
+#: c-typeck.c:3736
#, c-format
msgid "passing arg %d of `%s'"
msgstr "passage de l'argument n°%d de « %s »"
#. Function name unknown (call through ptr); just give arg number.
-#: c-typeck.c:4386
+#: c-typeck.c:3745
#, c-format
msgid "passing arg %d of pointer to function"
msgstr "passage de l'argument n°%d au pointeur de fonction"
-#: c-typeck.c:4452
-msgid "initializer for static variable is not constant"
-msgstr "l'initialisation d'une variable statique n'est pas une constante"
-
-#: c-typeck.c:4458
-msgid "initializer for static variable uses complicated arithmetic"
-msgstr "l'initialisation d'une variable statique utilise une artihmétique compliquée"
-
-# FIXME
-#: c-typeck.c:4466
-msgid "aggregate initializer is not constant"
-msgstr "l'initialisation d'aggrégat n'est pas une constante"
-
-# FIXME
-#: c-typeck.c:4468
-msgid "aggregate initializer uses complicated arithmetic"
-msgstr "l'initialisation d'un aggrégat utilise une arithmétique compliquée"
-
-#: c-typeck.c:4475
+#: c-typeck.c:3802
msgid "traditional C rejects automatic aggregate initialization"
msgstr "le C traditionel rejette l'initialisation automatique d'aggrégats"
-#: c-typeck.c:4654 c-typeck.c:4670 c-typeck.c:4686
+#: c-typeck.c:3973 c-typeck.c:3988 c-typeck.c:4003
#, c-format
msgid "(near initialization for `%s')"
msgstr "(près de l'initialisation de « %s »)"
-#: c-typeck.c:4737 cp/typeck2.c:488
+#: c-typeck.c:4052 cp/typeck2.c:559
msgid "char-array initialized from wide string"
-msgstr "tableau de caractères initialisé à l'aide d'une chaîne de caractères longs"
+msgstr "tableau de caractères initialisé à l'aide d'une chaîne large de caractères"
-#: c-typeck.c:4744 cp/typeck2.c:495
+#: c-typeck.c:4059 cp/typeck2.c:566
msgid "int-array initialized from non-wide string"
-msgstr "tableau d'entier initialisé à l'aide d'un chaîne de caractères courts"
+msgstr "tableau d'entier initialisé à l'aide d'une chaîne non-large"
-#: c-typeck.c:4762 cp/typeck2.c:511
+#: c-typeck.c:4077 cp/typeck2.c:581
msgid "initializer-string for array of chars is too long"
msgstr "la chaîne d'initialisation est trop longue pour le tableau de caractères"
-#: c-typeck.c:4822
+#: c-typeck.c:4147
msgid "array initialized from non-constant array expression"
msgstr "tableau initialisé à l'aide de l'expression de tableau non constante"
-#: c-typeck.c:4839 c-typeck.c:4841 c-typeck.c:4857 c-typeck.c:4878
-#: c-typeck.c:6281
+#: c-typeck.c:4164 c-typeck.c:4166 c-typeck.c:4182 c-typeck.c:4203
+#: c-typeck.c:5585
msgid "initializer element is not constant"
msgstr "un élément de l'initialisation n'est pas une constante"
-#: c-typeck.c:4873
+#: c-typeck.c:4198
msgid "initialization"
msgstr "initialisation"
-#: c-typeck.c:4884 c-typeck.c:6286
+#: c-typeck.c:4209 c-typeck.c:5590
msgid "initializer element is not computable at load time"
msgstr "un élément de l'initialisation n'est pas évaluable lors du chargement"
-#: c-typeck.c:4899 cp/typeck2.c:588
+#: c-typeck.c:4224 cp/typeck2.c:658
msgid "invalid initializer"
msgstr "initialisation invalide"
-#: c-typeck.c:5393
+#: c-typeck.c:4509 cp/decl.c:4465
+msgid "opaque vector types cannot be initialized"
+msgstr "type de vecteur opaque ne peut être initialisé"
+
+#: c-typeck.c:4703
msgid "extra brace group at end of initializer"
msgstr "groupe d'accolades superflu à la fin de l'initialisation"
-#: c-typeck.c:5413
+#: c-typeck.c:4723
msgid "missing braces around initializer"
msgstr "accolades manquantes autour de l'initialisation"
-#: c-typeck.c:5473
+#: c-typeck.c:4783
msgid "braces around scalar initializer"
msgstr "accolades autour d'une initialisation de scalaire"
-#: c-typeck.c:5521
+#: c-typeck.c:4830
msgid "initialization of flexible array member in a nested context"
msgstr "initialisation d'un membre de tableau flexible dans un contexte imbriqué"
-#: c-typeck.c:5523
+#: c-typeck.c:4832
msgid "initialization of a flexible array member"
msgstr "initialisation d'un membre de tableau flexible"
-#: c-typeck.c:5554
+#: c-typeck.c:4863
msgid "missing initializer"
msgstr "initialisation manquante"
-#: c-typeck.c:5580
+#: c-typeck.c:4889
msgid "empty scalar initializer"
msgstr "initialisation vide de scalaire"
-#: c-typeck.c:5585
+#: c-typeck.c:4894
msgid "extra elements in scalar initializer"
msgstr "éléments superflus dans l'initialisation de scalaire"
-#: c-typeck.c:5671
+#: c-typeck.c:4979
msgid "initialization designators may not nest"
msgstr "l'initialisation des désignateurs ne doit pas être imbriquée"
-#: c-typeck.c:5692 c-typeck.c:5763
+#: c-typeck.c:5000 c-typeck.c:5068
msgid "array index in non-array initializer"
msgstr "index de tableau dans l'initialisation de quelque chose n'étant pas un tableau"
-#: c-typeck.c:5697 c-typeck.c:5817
+#: c-typeck.c:5005 c-typeck.c:5121
msgid "field name not in record or union initializer"
msgstr "nom de champ dans l'initialisation de quelque chose n'étant ni un enregistrement ni une union"
-#: c-typeck.c:5759 c-typeck.c:5761
+#: c-typeck.c:5064 c-typeck.c:5066
msgid "nonconstant array index in initializer"
msgstr "index de tableau non constant dans l'initialisation"
-#: c-typeck.c:5765 c-typeck.c:5768
+#: c-typeck.c:5070 c-typeck.c:5073
msgid "array index in initializer exceeds array bounds"
msgstr "index de tableau hors limites lors de l'initialisation"
-#: c-typeck.c:5779
+#: c-typeck.c:5084
msgid "empty index range in initializer"
msgstr "borne d'index vide lors de l'initialisation"
-#: c-typeck.c:5788
+#: c-typeck.c:5093
msgid "array index range in initializer exceeds array bounds"
msgstr "plage d'index du tableau excédant les bornes lors de l'initialisation"
-#: c-typeck.c:5829
+#: c-typeck.c:5133
#, c-format
msgid "unknown field `%s' specified in initializer"
msgstr "champ inconnu « %s » spécifié lors de l'initialisation"
-#: c-typeck.c:5866 c-typeck.c:5887 c-typeck.c:6348
+#: c-typeck.c:5169 c-typeck.c:5190 c-typeck.c:5652
msgid "initialized field with side-effects overwritten"
msgstr "le champ initialisé par effet de bord a été écrasé"
-#: c-typeck.c:6558
+#: c-typeck.c:5860
msgid "excess elements in char array initializer"
msgstr "éléments en excès dans l'initialisation de tableau de caractères"
-#: c-typeck.c:6565 c-typeck.c:6611
+#: c-typeck.c:5867 c-typeck.c:5913
msgid "excess elements in struct initializer"
msgstr "éléments en excès dans l'initialisation de la structure"
-#: c-typeck.c:6626
+#: c-typeck.c:5928
msgid "non-static initialization of a flexible array member"
msgstr "initialisation non statique d'un membre de tableau flexible"
-#: c-typeck.c:6693
+#: c-typeck.c:5995
msgid "excess elements in union initializer"
msgstr "éléments en excès dans l'initialisation d'union"
-#: c-typeck.c:6714
+#: c-typeck.c:6016
msgid "traditional C rejects initialization of unions"
msgstr "le C traditionel rejette l'initialisation d'union"
-#: c-typeck.c:6777
+#: c-typeck.c:6079
msgid "excess elements in array initializer"
msgstr "éléments en excès dans l'initialisation de tableau"
-#: c-typeck.c:6806
+#: c-typeck.c:6108
msgid "excess elements in vector initializer"
msgstr "éléments en excès dans l'initialisation du vecteur"
-#: c-typeck.c:6828
+#: c-typeck.c:6130
msgid "excess elements in scalar initializer"
msgstr "éléments en excès dans l'initialisation d'un scalaire"
-#: c-typeck.c:6935
+#: c-typeck.c:6232
msgid "asm template is not a string constant"
-msgstr "le patron asm n'est pas une chaîne de constante"
+msgstr "le canevas asm n'est pas une chaîne de constante"
-#: c-typeck.c:6967
+#: c-typeck.c:6264
msgid "invalid lvalue in asm statement"
msgstr "membre gauche invalide avec asm"
-#: c-typeck.c:7042
+#: c-typeck.c:6336
msgid "modification by `asm'"
msgstr "modification par « asm »"
-#: c-typeck.c:7061 cp/typeck.c:6237
+#: c-typeck.c:6354 cp/typeck.c:5926
msgid "function declared `noreturn' has a `return' statement"
msgstr "fonction déclarée avec « noreturn» utilisant le mot-clé « return »"
-#: c-typeck.c:7068
+#: c-typeck.c:6361
msgid "`return' with no value, in function returning non-void"
msgstr "« return » sans valeur dans une fonction retournant autre chose que void"
-#: c-typeck.c:7074
+#: c-typeck.c:6367
msgid "`return' with a value, in function returning void"
msgstr "« return » avec une valeur dans une fonction retournant un void"
-#: c-typeck.c:7078
+#: c-typeck.c:6371
msgid "return"
msgstr "return"
-#: c-typeck.c:7130
+#: c-typeck.c:6423
msgid "function returns address of local variable"
msgstr "cette fonction retourne l'adresse d'une variable locale"
-#: c-typeck.c:7186 cp/semantics.c:555
+#: c-typeck.c:6478 cp/semantics.c:749
msgid "switch quantity not an integer"
msgstr "quantité du switch n'est pas un entier"
-#: c-typeck.c:7196
+#: c-typeck.c:6488
msgid "`long' switch expression not converted to `int' in ISO C"
-msgstr "expression « long » du switch non convertie en « int » par le C ISO"
+msgstr "expression « long » du switch non convertie en « int » par ISO C"
-#: c-typeck.c:7231 cp/decl.c:5523
+#: c-typeck.c:6529 cp/parser.c:5538
msgid "case label not within a switch statement"
msgstr "étiquette de « case » en dehors de tout switch"
-#: c-typeck.c:7233 cp/decl.c:5528
+#: c-typeck.c:6531
msgid "`default' label not within a switch statement"
msgstr "étiquette « default » en dehors de tout switch"
-#: calls.c:1934 tree-inline.c:1177
-#, c-format
-msgid "inlining failed in call to `%s'"
-msgstr "l'enlignage de l'appel à « %s » a échoué"
+#: c-typeck.c:6683 c-typeck.c:6717
+msgid "division by zero"
+msgstr "division par zéro"
+
+#: c-typeck.c:6762 cp/typeck.c:2928
+msgid "right shift count is negative"
+msgstr "le compteur de décalage vers la droite est négatif"
+
+#: c-typeck.c:6769 cp/typeck.c:2934
+msgid "right shift count >= width of type"
+msgstr "compteur de décalage vers la droite >= à la largeur du type"
+
+#: c-typeck.c:6790 cp/typeck.c:2953
+msgid "left shift count is negative"
+msgstr "le compteur de décalage vers la gauche est négatif"
+
+#: c-typeck.c:6793 cp/typeck.c:2955
+msgid "left shift count >= width of type"
+msgstr "compteur de décalage vers la gauche >= à la largeur du type"
+
+#: c-typeck.c:6814
+msgid "shift count is negative"
+msgstr "le compteur de décalage est négatif"
+
+#: c-typeck.c:6816
+msgid "shift count >= width of type"
+msgstr "compteur de décalage >= à la largeur du type"
+
+#: c-typeck.c:6833 cp/typeck.c:2990
+msgid "comparing floating point with == or != is unsafe"
+msgstr "comparer des nombres flottants à l'aide de == ou != n'est pas sûr"
+
+#: c-typeck.c:6859 c-typeck.c:6865
+msgid "ISO C forbids comparison of `void *' with function pointer"
+msgstr "ISO C interdit la comparaison de « void * » avec un pointeur de fonction"
+
+#: c-typeck.c:6868 c-typeck.c:6908 c-typeck.c:6936
+msgid "comparison of distinct pointer types lacks a cast"
+msgstr "il manque un transtypage pour comparer des types distincts de pointeur"
-#: calls.c:1935 calls.c:2271 tree-inline.c:1178
+#: c-typeck.c:6882 c-typeck.c:6887 c-typeck.c:6956 c-typeck.c:6961
+msgid "comparison between pointer and integer"
+msgstr "comparaison entre un pointeur et un entier"
+
+#: c-typeck.c:6903 c-typeck.c:6931
+msgid "ISO C forbids ordered comparisons of pointers to functions"
+msgstr "ISO C interdit les comparaisons ordonnées de pointeurs vers des fonctions"
+
+#: c-typeck.c:6928
+msgid "comparison of complete and incomplete pointers"
+msgstr "comparaison de pointeurs complet et incomplet"
+
+#: c-typeck.c:6944 c-typeck.c:6951
+msgid "ordered comparison of pointer with integer zero"
+msgstr "comparaison ordonnée de pointeur avec le zéro entier"
+
+#: c-typeck.c:6975 cp/typeck.c:3126
+msgid "unordered comparison on non-floating point argument"
+msgstr "comparaison non ordonnée sur un argument n'étant pas en virgule flottante"
+
+#: c-typeck.c:7185
+msgid "comparison between signed and unsigned"
+msgstr "comparaison entre élément signé et élément non signé"
+
+#: c-typeck.c:7231 cp/typeck.c:3373
+msgid "comparison of promoted ~unsigned with constant"
+msgstr "comparaison entre élément promu ~unsigned et une constante"
+
+#: c-typeck.c:7239 cp/typeck.c:3381
+msgid "comparison of promoted ~unsigned with unsigned"
+msgstr "comparaison entre élément promu ~unsigned et un élément non signé"
+
+#: calls.c:1838
+msgid "%Jinlining failed in call to '%F'"
+msgstr "%Jenlignage a échoué dans l'appel à « %F »"
+
+#: calls.c:1839 calls.c:2208 tree-inline.c:1339 tree-inline.c:1346
msgid "called from here"
msgstr "appelé d'ici"
-#: calls.c:2270
-#, c-format
-msgid "can't inline call to `%s'"
-msgstr "impossible d'enligner l'appel à « %s »"
+#: calls.c:2207
+msgid "%Jcan't inline call to '%F'"
+msgstr "%Jimpossible d'enligner l'appel à « %F »"
-#: calls.c:2300
+#: calls.c:2216
+msgid "ignoring return value of `%D', declared with attribute warn_unused_result"
+msgstr "valeur à retourner « %D » ignorée, déclaré avec l'attribut warn_unused_result"
+
+#: calls.c:2229
+msgid "ignoring return value of function declared with attribute warn_unused_result"
+msgstr "valeur à retourner d'une fonction ignorée, déclaré avec l'attribut warn_unused_result"
+
+#: calls.c:2239
msgid "function call has aggregate value"
msgstr "l'appel de fonction a une valeur d'aggrégat"
-#: cfgloop.c:1107
+#: cfg.c:835
#, c-format
-msgid "Size of loop %d should be %d, not %d."
-msgstr "La taille de la boucle %d devrait être %d, et non %d."
+msgid "bb %d on wrong place"
+msgstr "bb %d au mauvais endroit"
-# FIXME
-#: cfgloop.c:1126
+#: cfg.c:841
#, c-format
-msgid "Bb %d do not belong to loop %d."
-msgstr "Bb %d n'appartient pas à la boucle %d."
+msgid "prev_bb of %d should be %d, not %d"
+msgstr "prev_bb de %d devrait être %d, pas %d"
-#: cfgloop.c:1144
+#: cfg.c:857
#, c-format
-msgid "Loop %d's header does not have exactly 2 entries."
-msgstr "L'en-tête de la boucle %d n'a pas exactement 2 entrées."
+msgid "verify_flow_info: Wrong count of block %i %i"
+msgstr "verify_flow_info: Nombre de blocs erroné %i %i"
-#: cfgloop.c:1152
+#: cfg.c:863
#, c-format
-msgid "Loop %d's latch does not have exactly 1 successor."
-msgstr ""
+msgid "verify_flow_info: Wrong frequency of block %i %i"
+msgstr "verify_flow_info: Fréquence de blocs erronée %i %i"
-#: cfgloop.c:1157
+#: cfg.c:871
#, c-format
-msgid "Loop %d's latch does not have header as successor."
-msgstr ""
+msgid "verify_flow_info: Duplicate edge %i->%i"
+msgstr "verify_flow_info: arrête dupliquée %i->%i"
-#: cfgloop.c:1162
+#: cfg.c:877
#, c-format
-msgid "Loop %d's latch does not belong directly to it."
-msgstr ""
+msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
+msgstr "verify_flow_info: probabilité de l'arrête %i->%i %i erronée"
-#: cfgloop.c:1168
+#: cfg.c:883
#, c-format
-msgid "Loop %d's header does not belong directly to it."
-msgstr "L'entête de la boucle %d ne lui appartient pas directement."
+msgid "verify_flow_info: Wrong count of edge %i->%i %i"
+msgstr "verify_flow_info: Mauvais nombre d'arrête %i->%i %i"
-#: cfgrtl.c:1774
+#: cfg.c:895
#, c-format
-msgid "bb %d on wrong place"
-msgstr "bb %d au mauvais endroit"
+msgid "verify_flow_info: Basic block %d succ edge is corrupted"
+msgstr "verify_flow_info: l'arrête succ du bloc de base %d est corrompue"
-#: cfgrtl.c:1780
+#: cfg.c:909 cfgrtl.c:1971
#, c-format
-msgid "prev_bb of %d should be %d, not %d"
-msgstr "prev_bb de %d devrait être %d, pas %d"
+msgid "Wrong amount of branch edges after unconditional jump %i"
+msgstr "Mauvais nombre d'arrêtes de branchement après le branchement inconditionnel %i"
-#: cfgrtl.c:1800
+#: cfg.c:917
#, c-format
-msgid "end insn %d for block %d not found in the insn stream"
-msgstr "fin insn %d du bloc %d n'a pas été repéré dans le flot insn"
+msgid "basic block %d pred edge is corrupted"
+msgstr "arrête pred du bloc de base %d corrompue"
-#: cfgrtl.c:1814
+#: cfg.c:943
#, c-format
-msgid "insn %d is in multiple basic blocks (%d and %d)"
-msgstr "insn %d est dans de multiples blocs de base (%d et %d)"
+msgid "basic block %i edge lists are corrupted"
+msgstr "les listes d'arrêtes du bloc de base %i sont corrompues"
-#: cfgrtl.c:1826
+#: cfg.c:955
+msgid "verify_flow_info failed"
+msgstr "verify_flow_info a échoué"
+
+#: cfgloop.c:1134
#, c-format
-msgid "head insn %d for block %d not found in the insn stream"
-msgstr "en-tête insn %d du bloc %d n'a pas été repérée dans le flot insn"
+msgid "Size of loop %d should be %d, not %d."
+msgstr "La taille de la boucle %d devrait être %d, et non %d."
-#: cfgrtl.c:1848
+# FIXME
+#: cfgloop.c:1153
#, c-format
-msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i"
-msgstr "verify_flow_info: REG_BR_PROB ne correspond pas à la config %i %i"
+msgid "Bb %d do not belong to loop %d."
+msgstr "Bb %d n'appartient pas à la boucle %d."
-#: cfgrtl.c:1855
+#: cfgloop.c:1171
#, c-format
-msgid "verify_flow_info: Wrong count of block %i %i"
-msgstr "verify_flow_info: Nombre de blocs erroné %i %i"
+msgid "Loop %d's header does not have exactly 2 entries."
+msgstr "L'en-tête de la boucle %d n'a pas exactement 2 entrées."
-#: cfgrtl.c:1861
+#: cfgloop.c:1179
#, c-format
-msgid "verify_flow_info: Wrong frequency of block %i %i"
-msgstr "verify_flow_info: Fréquence de blocs erronée %i %i"
+msgid "Loop %d's latch does not have exactly 1 successor."
+msgstr "Le verrou %d de la boucle n'a pas exactement 1 successeur."
-#: cfgrtl.c:1869
+#: cfgloop.c:1184
#, c-format
-msgid "verify_flow_info: Duplicate edge %i->%i"
-msgstr "verify_flow_info: arrête dupliquée %i->%i"
+msgid "Loop %d's latch does not have header as successor."
+msgstr "Le verrou %d de la boucle n'a pas une en-tête comme successeur."
-#: cfgrtl.c:1875
+#: cfgloop.c:1189
#, c-format
-msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
-msgstr "verify_flow_info: probabilité de l'arrête %i->%i %i erronée"
+msgid "Loop %d's latch does not belong directly to it."
+msgstr "Le verrou %d de la boucle ne lui appartient pas directement."
-#: cfgrtl.c:1881
+#: cfgloop.c:1195
#, c-format
-msgid "verify_flow_info: Wrong count of edge %i->%i %i"
-msgstr "verify_flow_info: Mauvais nombre d'arrête %i->%i %i"
+msgid "Loop %d's header does not belong directly to it."
+msgstr "L'entête de la boucle %d ne lui appartient pas directement."
-#: cfgrtl.c:1911
+#: cfgloop.c:1201
#, c-format
-msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
-msgstr "verify_flow_info: blocs incorrects pour le fallthru %i->%i"
+msgid "Loop %d's latch is marked as part of irreducible region."
+msgstr "Le verrou %d de la boucle est défini comme faisant partie d'une zone irréductible"
-#: cfgrtl.c:1926
+#: cfgloop.c:1231
#, c-format
-msgid "verify_flow_info: Incorrect fallthru %i->%i"
-msgstr "verify_flow_info: fallthru incorrect %i->%i"
+msgid "Basic block %d should be marked irreducible."
+msgstr "bloc de base %d devrait être marqué irréductible."
-#: cfgrtl.c:1928
-msgid "wrong insn in the fallthru edge"
-msgstr "insn erronée dans l'arrête fallthru"
+#: cfgloop.c:1237
+#, c-format
+msgid "Basic block %d should not be marked irreducible."
+msgstr "bloc de base %d ne devrait pas être marqué irréductible."
-#: cfgrtl.c:1935
+#: cfgloop.c:1245
#, c-format
-msgid "verify_flow_info: Basic block %d succ edge is corrupted"
-msgstr "verify_flow_info: l'arrête succ du bloc de base %d est corrompue"
+msgid "Edge from %d to %d should be marked irreducible."
+msgstr "Bordures à partir de %d à %d devraient être marqués irréductibles."
+
+#: cfgloop.c:1252
+#, c-format
+msgid "Edge from %d to %d should not be marked irreducible."
+msgstr "Bordures à partir de %d à %d ne devraient être marquées irréductibles."
-#: cfgrtl.c:1951
+#: cfgrtl.c:1877
+#, c-format
+msgid "end insn %d for block %d not found in the insn stream"
+msgstr "fin insn %d du bloc %d n'a pas été repéré dans le flot insn"
+
+#: cfgrtl.c:1891
+#, c-format
+msgid "insn %d is in multiple basic blocks (%d and %d)"
+msgstr "insn %d est dans de multiples blocs de base (%d et %d)"
+
+#: cfgrtl.c:1903
+#, c-format
+msgid "head insn %d for block %d not found in the insn stream"
+msgstr "en-tête insn %d du bloc %d n'a pas été repérée dans le flot insn"
+
+#: cfgrtl.c:1925
+msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
+msgstr "verify_flow_info: REG_BR_PROB ne correspond pas à la config %wi %i"
+
+#: cfgrtl.c:1953
#, c-format
msgid "Missing REG_EH_REGION note in the end of bb %i"
msgstr "REG_EH_REGION note manquante à la fin du bb %i"
-#: cfgrtl.c:1959
+#: cfgrtl.c:1961
#, c-format
msgid "Too many outgoing branch edges from bb %i"
msgstr "Trop d'arrêtes de branchement sortantes dans le bb %i"
-#: cfgrtl.c:1964
+#: cfgrtl.c:1966
#, c-format
msgid "Fallthru edge after unconditional jump %i"
msgstr "Arrête fallthru après le branchement inconditionnel %i"
-#: cfgrtl.c:1969
-#, c-format
-msgid "Wrong amount of branch edges after unconditional jump %i"
-msgstr "Mauvais nombre d'arrêtes de branchement après le branchement inconditionnel %i"
-
-#: cfgrtl.c:1975
+#: cfgrtl.c:1977
#, c-format
msgid "Wrong amount of branch edges after conditional jump %i"
msgstr "Mauvais nombre d'arrêtes de branchement après le branchement conditionnel %i"
-#: cfgrtl.c:1980
+#: cfgrtl.c:1982
#, c-format
msgid "Call edges for non-call insn in bb %i"
msgstr "Arrêtes d'appel pour un insn n'étant pas d'appel dans le bb %i"
-#: cfgrtl.c:1989
+#: cfgrtl.c:1991
#, c-format
msgid "Abnormal edges for no purpose in bb %i"
msgstr "Arrête anormale sans but dans le bb %i"
-#: cfgrtl.c:2004
-#, c-format
-msgid "missing barrier after block %i"
-msgstr "barrière manquante après le boc %i"
-
-#: cfgrtl.c:2014
-#, c-format
-msgid "basic block %d pred edge is corrupted"
-msgstr "arrête pred du bloc de base %d corrompue"
-
-#: cfgrtl.c:2031
+#: cfgrtl.c:2001
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
msgstr "insn %d à l'intérieur du bloc de base %d mais block_for_insn est NULL"
-#: cfgrtl.c:2035
+#: cfgrtl.c:2005
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
msgstr "insn %d à l'intérieur du bloc de base %d mais block_for_insn est %i"
-#: cfgrtl.c:2049 cfgrtl.c:2059
+#: cfgrtl.c:2019 cfgrtl.c:2029
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr "NOTE_INSN_BASIC_BLOCK manquant pour le bloc %d"
-#: cfgrtl.c:2072
+#: cfgrtl.c:2042
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
msgstr "NOTE_INSN_BASIC_BLOCK %d au milieu du bloc de base %d"
-#: cfgrtl.c:2084
+#: cfgrtl.c:2052
#, c-format
msgid "in basic block %d:"
msgstr "dans le bloc de base %d :"
-#: cfgrtl.c:2085
+#: cfgrtl.c:2053
msgid "flow control insn inside a basic block"
msgstr "insn de contrôle de flot à l'intérieur d'un bloc de base"
-#: cfgrtl.c:2104
+#: cfgrtl.c:2099
#, c-format
-msgid "basic block %i edge lists are corrupted"
-msgstr "les listes d'arrêtes du bloc de base %i sont corrompues"
+msgid "missing barrier after block %i"
+msgstr "barrière manquante après le boc %i"
+
+#: cfgrtl.c:2112
+#, c-format
+msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
+msgstr "verify_flow_info: blocs incorrects pour le fallthru %i->%i"
-#: cfgrtl.c:2119
-msgid "basic blocks not numbered consecutively"
-msgstr "les blocs de base ne sont pas numérotés consécutivement"
+#: cfgrtl.c:2127
+#, c-format
+msgid "verify_flow_info: Incorrect fallthru %i->%i"
+msgstr "verify_flow_info: fallthru incorrect %i->%i"
-#: cfgrtl.c:2144
+#: cfgrtl.c:2129
+msgid "wrong insn in the fallthru edge"
+msgstr "insn erronée dans l'arrête fallthru"
+
+#: cfgrtl.c:2146
+msgid "basic blocks not laid down consecutively"
+msgstr "les blocs de base ne se suivent pas consécutivement"
+
+#: cfgrtl.c:2171
msgid "insn outside basic block"
msgstr "insn à l'extérieur de tout bloc de base"
-#: cfgrtl.c:2152
+#: cfgrtl.c:2179
msgid "return not followed by barrier"
msgstr "return n'est pas suivi d'une barrière"
# FIXME
# bb est une abréviation courante dans cette partie du fichier pour « basic block »
-#: cfgrtl.c:2157
+#: cfgrtl.c:2186
#, c-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr "nombre de bb noté dans la chaîne d'insn (%d) != n_basic_blocks (%d)"
-#: cfgrtl.c:2161
-msgid "verify_flow_info failed"
-msgstr "verify_flow_info a échoué"
+#: cgraph.c:161
+msgid "function body not available"
+msgstr "corps de la fonction n'est pas disponible"
+
+#: cgraph.c:163 cgraphunit.c:341
+msgid "redefined extern inline functions are not considered for inlining"
+msgstr "fonctions externes enlignes redéfinies n'ont pas été retenues pour l'enlignage"
+
+#: cgraph.c:166 cgraphunit.c:346
+msgid "function not considered for inlining"
+msgstr "fonction n'a pas été retenue pour l'enlignage"
+
+#: cgraph.c:168 cgraphunit.c:344
+msgid "function not inlinable"
+msgstr "fonction ne peut être enligne"
-#: collect2.c:425
+#: cgraph.c:476
+msgid "%D renamed after being referenced in assembly"
+msgstr "« %D » renommé après avoir été référencé durant l'assemblage"
+
+#: cgraphunit.c:1042
+msgid "--param large-function-growth limit reached"
+msgstr "--param large-function-growth limite atteinte"
+
+#: cgraphunit.c:1055
+msgid "--param large-function-growth limit reached while inlining the caller"
+msgstr "--param large-function-growth limite atteinte lors de l'enlignage de l'appelant"
+
+#: cgraphunit.c:1120
+msgid "--param max-inline-insns-single limit reached"
+msgstr "--param max-inline-insns-single limite atteinte"
+
+#: cgraphunit.c:1144
+msgid "--param max-inline-insns-single limit reached after inlining into the callee"
+msgstr "--param max-inline-insns-single limite atteinte après l'enlignage dans l'appellé"
+
+#: cgraphunit.c:1221
+msgid "--param inline-unit-growth limit reached"
+msgstr "--param inline-unit-growth limite atteinte"
+
+#: cgraphunit.c:1293 cgraphunit.c:1437
+msgid "recursive inlining"
+msgstr "enlignage récursif"
+
+#: collect2.c:406
msgid "internal error"
msgstr "erreur interne"
-#: collect2.c:934
+#: collect2.c:894
msgid "no arguments"
msgstr "pas d'argument"
# I18N
-#: collect2.c:1263 collect2.c:1411 collect2.c:1444
+#: collect2.c:1226 collect2.c:1374 collect2.c:1407
#, c-format
msgid "fopen %s"
msgstr "fopen() %s"
# I18N
-#: collect2.c:1266 collect2.c:1416 collect2.c:1447
+#: collect2.c:1229 collect2.c:1379 collect2.c:1410
#, c-format
msgid "fclose %s"
msgstr "fclose() %s"
-#: collect2.c:1275
+#: collect2.c:1238
#, c-format
msgid "collect2 version %s"
msgstr "collect2 version %s"
-#: collect2.c:1365
+#: collect2.c:1328
#, c-format
msgid "%d constructor(s) found\n"
msgstr "%d constructeur(s) trouvé(s)\n"
-#: collect2.c:1366
+#: collect2.c:1329
#, c-format
msgid "%d destructor(s) found\n"
msgstr "%d destructeur(s) trouvé(s)\n"
-#: collect2.c:1367
+#: collect2.c:1330
#, c-format
msgid "%d frame table(s) found\n"
msgstr "%d table(s) de trame trouvée(s)\n"
-#: collect2.c:1508
+#: collect2.c:1470
#, c-format
msgid "%s terminated with signal %d [%s]%s"
msgstr "%s terminé par le signal %d [%s]%s"
-#: collect2.c:1527
+#: collect2.c:1488
#, c-format
msgid "%s returned %d exit status"
msgstr "%s a retourné %d comme valeur de sortie"
-#: collect2.c:1555
+#: collect2.c:1513
#, c-format
msgid "[cannot find %s]"
msgstr "[%s introuvable]"
-#: collect2.c:1570
+#: collect2.c:1528
#, c-format
msgid "cannot find `%s'"
msgstr "« %s » introuvable"
-#: collect2.c:1581 collect2.c:1584
+#: collect2.c:1539 collect2.c:1542
#, c-format
msgid "redirecting stdout: %s"
msgstr "redirection de stdout : %s"
# FIXME
-#: collect2.c:1627
+#: collect2.c:1581
#, c-format
msgid "[Leaving %s]\n"
msgstr "[Laissant %s]\n"
-#: collect2.c:1870
+#: collect2.c:1801
#, c-format
msgid ""
"\n"
@@ -3925,92 +3913,92 @@ msgstr ""
"\n"
"write_c_file - le nom de sortie est %s, le préfixe est %s\n"
-#: collect2.c:2082
+#: collect2.c:2005
msgid "cannot find `nm'"
msgstr "« nm » introuvable"
# I18N
-#: collect2.c:2092 collect2.c:2533
+#: collect2.c:2015 collect2.c:2444
msgid "pipe"
msgstr "pipe"
# I18N
-#: collect2.c:2096 collect2.c:2537
+#: collect2.c:2019 collect2.c:2448
msgid "fdopen"
msgstr "fdopen"
# I18N
-#: collect2.c:2122 collect2.c:2563
+#: collect2.c:2045 collect2.c:2474
#, c-format
msgid "dup2 %d 1"
msgstr "dup2 %d 1"
# I18N
-#: collect2.c:2125 collect2.c:2128 collect2.c:2141 collect2.c:2566
-#: collect2.c:2569 collect2.c:2582
+#: collect2.c:2048 collect2.c:2051 collect2.c:2064 collect2.c:2477
+#: collect2.c:2480 collect2.c:2493
#, c-format
msgid "close %d"
msgstr "close %d"
# I18N
-#: collect2.c:2131 collect2.c:2572
+#: collect2.c:2054 collect2.c:2483
#, c-format
msgid "execv %s"
msgstr "execv %s"
-#: collect2.c:2185
+#: collect2.c:2108
#, c-format
msgid "init function found in object %s"
msgstr "fonction init trouvée dans l'objet %s"
-#: collect2.c:2193
+#: collect2.c:2116
#, c-format
msgid "fini function found in object %s"
msgstr "fonction fini() trouvée dans l'objet %s"
# I18N
-#: collect2.c:2216 collect2.c:2621
+#: collect2.c:2139 collect2.c:2532
msgid "fclose"
msgstr "fclose"
-#: collect2.c:2261
+#: collect2.c:2181
#, c-format
msgid "unable to open file '%s'"
msgstr "impossible d'ouvrir le fichier « %s »"
-#: collect2.c:2263
+#: collect2.c:2183
#, c-format
msgid "unable to stat file '%s'"
msgstr "impossible d'analyser le fichier « %s » avec stat()"
-#: collect2.c:2269
+#: collect2.c:2189
#, c-format
msgid "unable to mmap file '%s'"
msgstr "incpable de projeter en mémoire le fichier « %s » avec nmap()"
-#: collect2.c:2422
+#: collect2.c:2335
msgid "not found\n"
msgstr "introuvable\n"
-#: collect2.c:2424 collect2.c:2600
+#: collect2.c:2337 collect2.c:2511
#, c-format
msgid "dynamic dependency %s not found"
msgstr "dépendance dynamique %s introuvable"
-#: collect2.c:2444
+#: collect2.c:2356
#, c-format
msgid "bad magic number in file '%s'"
msgstr "le nombre magique du fichier « %s » est erroné"
-#: collect2.c:2466
+#: collect2.c:2378
msgid "dynamic dependencies.\n"
msgstr "dépendances dynamiques.\n"
-#: collect2.c:2524
+#: collect2.c:2435
msgid "cannot find `ldd'"
msgstr "« ldd » introuvable"
-#: collect2.c:2585
+#: collect2.c:2496
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
@@ -4018,1405 +4006,1123 @@ msgstr ""
"\n"
"sortie de ldd avec constructeurs/destructeurs.\n"
-#: collect2.c:2612
+#: collect2.c:2523
#, c-format
msgid "unable to open dynamic dependency '%s'"
msgstr "incapable d'ouvrir la dépendance dynamique « %s »"
-#: collect2.c:2726
+#: collect2.c:2683
#, c-format
msgid "%s: not a COFF file"
msgstr "%s : n'est pas un fichier COFF"
-#: collect2.c:2845
+#: collect2.c:2802
#, c-format
msgid "%s: cannot open as COFF file"
msgstr "%s : ne peut ouvrir en tant que fichier COFF"
# I18N
-#: collect2.c:2901
+#: collect2.c:2857
#, c-format
msgid "library lib%s not found"
msgstr "bibliothèque lib%s introuvable"
-# I18N
-#: collect2.c:3028
+#: combine.c:13027
#, c-format
-msgid "open %s"
-msgstr "open %s"
-
-#: collect2.c:3051
-msgid "incompatibilities between object file & expected values"
-msgstr "incompatibilités entre le fichier objet et les valeurs attendues"
+msgid ""
+";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
+"\n"
+msgstr ""
+";; Statistiques du combinateur : %d tentatives, %d substitutions (%d requérant un nouvel espace),\n"
+";; %d succès.\n"
+"\n"
-#: collect2.c:3124
+#: combine.c:13036
#, c-format
msgid ""
"\n"
-"Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
+";; %d successes.\n"
msgstr ""
"\n"
-"Traitement de la table des symboles #%d, décalage = 0x%.8lx, sorte = %s\n"
+";; Totaux du combinateur : %d tentatives, %d substitutions (%d requérant un nouvel espace),\n"
+";; %d succès.\n"
+"\n"
-# FIXME
-#: collect2.c:3133
-msgid "string section missing"
-msgstr "chaîne de section manquante"
+#: convert.c:70
+msgid "cannot convert to a pointer type"
+msgstr "ne peut convertir en un type pointeur"
-#: collect2.c:3136
-msgid "section pointer missing"
-msgstr "pointeur de section manquant"
+#: convert.c:267
+msgid "pointer value used where a floating point value was expected"
+msgstr "valeur de pointeur utilisée là où une valeur à virgule flottante était attendue"
-#: collect2.c:3184
-msgid "no symbol table found"
-msgstr "aucune table des symboles trouvée"
+#: convert.c:271
+msgid "aggregate value used where a float was expected"
+msgstr "valeur d'aggrégat utilisée là où un flottant était attendu"
-#: collect2.c:3197
-msgid "no cmd_strings found"
-msgstr "aucun cmd_strings trouvé"
+#: convert.c:296
+msgid "conversion to incomplete type"
+msgstr "conversion vers un type incomplet"
-#: collect2.c:3209
-msgid ""
-"\n"
-"Updating header and load commands.\n"
-"\n"
-msgstr ""
-"\n"
-"Mise à jour des en-têtes et des commandes de chargement.\n"
-"\n"
+#: convert.c:600 convert.c:678
+msgid "can't convert between vector values of different size"
+msgstr "ne peut convertir entre des valeurs de vecteurs de tailles différentes"
-# FIXME
-#: collect2.c:3216
-#, c-format
-msgid "load command map, %d cmds, new size %ld.\n"
-msgstr "Chargement de la carte des commandes, %d commandes, nouvelle taille %ld.\n"
+#: convert.c:606
+msgid "aggregate value used where an integer was expected"
+msgstr "valeur d'aggrégat utilisée là où un entier était attendu"
-#: collect2.c:3247
-msgid ""
-"writing load commands.\n"
-"\n"
-msgstr ""
-"écriture des commandes de chargement.\n"
-"\n"
+#: convert.c:657 f/com.c:1101
+msgid "pointer value used where a complex was expected"
+msgstr "valeur de pointeur utilisée là où un complexe était attendu"
-# I18N
-#: collect2.c:3267
+#: convert.c:661 f/com.c:1103
+msgid "aggregate value used where a complex was expected"
+msgstr "valeur d'aggrégat utilisée là où un complexe était attendu"
+
+#: convert.c:684
+msgid "can't convert value to a vector"
+msgstr "ne peut convertir une valeur en vecteur"
+
+#: coverage.c:164
#, c-format
-msgid "close %s"
-msgstr "close %s"
+msgid "`%s' is not a gcov data file"
+msgstr "« %s » n'est pas un fichier de données gcov"
-#: collect2.c:3341
-msgid "could not convert 0x%l.8x into a region"
-msgstr "ne peut convertir 0x%l.8x en région"
+#: coverage.c:175
+#, c-format
+msgid "`%s' is version `%.4s', expected version `%.4s'"
+msgstr "« %s » est de version « %.4s », version « %.4s » attendue"
-#: collect2.c:3345
+#: coverage.c:255 coverage.c:263
#, c-format
-msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
-msgstr "fonction %s, région %d, décalage = %ld (0x%.8lx)\n"
+msgid "coverage mismatch for function %u while reading execution counters."
+msgstr "non concordance de la couverture pour la fonction %u lors de la lecture des compteurs d'exécution"
-#: collect2.c:3472
-msgid "bad magic number"
-msgstr "nombre magique erroné"
+#: coverage.c:257 coverage.c:340
+#, c-format
+msgid "checksum is %x instead of %x"
+msgstr "somme de contrôle est %x au lieu de %x"
-#: collect2.c:3473
-msgid "bad header version"
-msgstr "version d'en-tête erronée"
+#: coverage.c:265 coverage.c:348
+#, c-format
+msgid "number of counters is %d instead of %d"
+msgstr "nombre de compteurs est %d au lieu de %d"
-# FIXME: ou version d'en-tête brut erronée
-#: collect2.c:3474
-msgid "bad raw header version"
-msgstr "version brute d'en-tête erronée"
+#: coverage.c:271
+#, c-format
+msgid "cannot merge separate %s counters for function %u"
+msgstr "ne peut faire la fusion séparée des compteurs %s pour la fonction %u"
-# FIXME: ou tampon d'en-tête brut trop petit
-#: collect2.c:3475
-msgid "raw header buffer too small"
-msgstr "tampon brut d'en-tête trop petit"
+#: coverage.c:296
+#, c-format
+msgid "`%s' has overflowed"
+msgstr "« %s » a déborbé"
-#: collect2.c:3476
-msgid "old raw header file"
-msgstr "ancien fichier d'en-tête brute"
+#: coverage.c:296
+#, c-format
+msgid "`%s' is corrupted"
+msgstr "« %s » est corrompu"
-#: collect2.c:3477
-msgid "unsupported version"
-msgstr "version non reconnue"
+#: coverage.c:319
+#, c-format
+msgid "file %s not found, execution counts assumed to be zero"
+msgstr "fichier %s non repéré, compteur d'exécution assumé être à zéro"
-#: collect2.c:3479
+#: coverage.c:329
#, c-format
-msgid "unknown {de,en}code_mach_o_hdr return value %d"
-msgstr "mauvaise valeur de retour (%d) de {de,en}code_mach_o_hdr"
+msgid "no coverage for function '%s' found."
+msgstr "pas de couverture repérée pour la fonction « %s »"
-# I18N
-#: collect2.c:3499
+#: coverage.c:337 coverage.c:345
#, c-format
-msgid "fstat %s"
-msgstr "fstat %s"
+msgid "coverage mismatch for function '%s' while reading counter '%s'."
+msgstr "non concordance de la couverture pour la fonction « %s » lors de la lecture des compteurs d'exécution « %s »"
-# I18N
-#: collect2.c:3536 collect2.c:3584
+#: coverage.c:492
#, c-format
-msgid "lseek %s 0"
-msgstr "lseek %s 0"
+msgid "cannot open %s"
+msgstr "ne peut ouvrir %s"
-# I18N
-#: collect2.c:3540
+#: coverage.c:527
#, c-format
-msgid "read %s"
-msgstr "read %s"
+msgid "error writing `%s'"
+msgstr "erreur d'écriture dans %s"
-#: collect2.c:3543
+#. XXX should be DL_SORRY
+#: cppcharset.c:653
#, c-format
-msgid "read %ld bytes, expected %ld, from %s"
-msgstr "lu %ld octets, attendu %ld, de %s"
+msgid "conversion from %s to %s not supported by iconv"
+msgstr "conversion de %s vers %s n'est pas supporté par iconv"
-# I18N
-#: collect2.c:3564
+#: cppcharset.c:656
+msgid "iconv_open"
+msgstr "iconv_open"
+
+#. XXX should be DL_SORRY
+#: cppcharset.c:664
#, c-format
-msgid "msync %s"
-msgstr "msync %s"
+msgid "no iconv implementation, cannot convert from %s to %s"
+msgstr "pas d'implantation iconv, ne peut convertir de %s vers %s"
-# I18N
-#: collect2.c:3571
+#: cppcharset.c:808
+msgid "universal character names are only valid in C++ and C99"
+msgstr "noms de caractère universel sont seulement valides en C++ et C89"
+
+#: cppcharset.c:811
#, c-format
-msgid "munmap %s"
-msgstr "munmap %s"
+msgid "the meaning of '\\%c' is different in traditional C"
+msgstr "la signification de « \\%c » est différente en C traditionel"
-# I18N
-#: collect2.c:3588
+# FIXME
+#: cppcharset.c:837
#, c-format
-msgid "write %s"
-msgstr "write %s"
+msgid "incomplete universal character name %.*s"
+msgstr "nom de caractère universel incomplet %.*s"
-#: collect2.c:3591
+#: cppcharset.c:849
#, c-format
-msgid "wrote %ld bytes, expected %ld, to %s"
-msgstr "écrit %ld octets, attendu %ld, vers %s"
+msgid "%.*s is not a valid universal character"
+msgstr "%.*s n'est pas un caractère universel valide"
-#: combine.c:13222
+#: cppcharset.c:859
#, c-format
-msgid ""
-";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n"
-";; %d successes.\n"
-"\n"
-msgstr ""
-";; Statistiques du combinateur : %d tentatives, %d substitutions (%d requérant un nouvel espace),\n"
-";; %d succès.\n"
-"\n"
+msgid "universal character %.*s is not valid in an identifier"
+msgstr "caractère universel %.*s n'est pas valide dans un identificcateur"
-#: combine.c:13232
+#: cppcharset.c:863
#, c-format
-msgid ""
-"\n"
-";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
-";; %d successes.\n"
-msgstr ""
-"\n"
-";; Totaux du combinateur : %d tentatives, %d substitutions (%d requérant un nouvel espace),\n"
-";; %d succès.\n"
-"\n"
+msgid "universal character %.*s is not valid at the start of an identifier"
+msgstr "caractère universel %.*s n'est pas valide au début d'un identificcateur"
-#: convert.c:69
-msgid "cannot convert to a pointer type"
-msgstr "ne peut convertir en un type pointeur"
+#: cppcharset.c:898
+msgid "converting UCN to source character set"
+msgstr "conversion UCN vers le jeu source de caractères"
-#: convert.c:102
-msgid "pointer value used where a floating point value was expected"
-msgstr "valeur de pointeur utilisée là où une valeur à virgule flottante était attendue"
+#: cppcharset.c:902
+msgid "converting UCN to execution character set"
+msgstr "conversion UCN vers le jeu d'exécution de caractères"
-#: convert.c:106
-msgid "aggregate value used where a float was expected"
-msgstr "valeur d'aggrégat utilisée là où un flottant était attendu"
+#: cppcharset.c:967
+msgid "the meaning of '\\x' is different in traditional C"
+msgstr "la signification de « \\x » est différente en C traditionel"
-#: convert.c:132
-msgid "conversion to incomplete type"
-msgstr "conversion vers un type incomplet"
+#: cppcharset.c:984 f/lex.c:580
+msgid "\\x used with no following hex digits"
+msgstr "\\x utilisé sans être suivi de chiffres en hexdécimal"
-#: convert.c:414 convert.c:494
-msgid "can't convert between vector values of different size"
-msgstr "ne peut convertir entre des valeurs de vecteurs de tailles différentes"
+#: cppcharset.c:991
+msgid "hex escape sequence out of range"
+msgstr "séquence d'échappement hexadécimale hors limite"
-#: convert.c:420
-msgid "aggregate value used where an integer was expected"
-msgstr "valeur d'aggrégat utilisée là où un entier était attendu"
+#: cppcharset.c:1030
+msgid "octal escape sequence out of range"
+msgstr "séquence d'échappement octale hors limite"
-#: convert.c:472 f/com.c:1100
-msgid "pointer value used where a complex was expected"
-msgstr "valeur de pointeur utilisée là où un complexe était attendu"
+#: cppcharset.c:1098
+msgid "the meaning of '\\a' is different in traditional C"
+msgstr "la signification de « \\a » est différente en C traditionel"
-#: convert.c:476 f/com.c:1102
-msgid "aggregate value used where a complex was expected"
-msgstr "valeur d'aggrégat utilisée là où un complexe était attendu"
+#: cppcharset.c:1105
+#, c-format
+msgid "non-ISO-standard escape sequence, '\\%c'"
+msgstr "séquence d'échappement « \\%c » non conforme au standard ISO"
-#: convert.c:500
-msgid "can't convert value to a vector"
-msgstr "ne peut convertir une valeur en vecteur"
+#: cppcharset.c:1113
+#, c-format
+msgid "unknown escape sequence '\\%c'"
+msgstr "séquence d'échappement « \\%c » inconnue"
+
+#: cppcharset.c:1116
+#, c-format
+msgid "unknown escape sequence: '\\%03o'"
+msgstr "séquence d'échappement « \\%03o » inconnue"
+
+#: cppcharset.c:1122
+msgid "converting escape sequence to execution character set"
+msgstr "conversion d'une séquence d'échappement vers un jeu d'exécution de caractères"
+
+#: cppcharset.c:1181
+msgid "converting to execution character set"
+msgstr "conversion vers un jeu d'exécution de caractères"
-#: cpperror.c:113
+#: cppcharset.c:1244 cppcharset.c:1307
+msgid "character constant too long for its type"
+msgstr "constante caractère trop longue pour son type"
+
+#: cppcharset.c:1247
+msgid "multi-character character constant"
+msgstr "constante caractère multi-caractères"
+
+#: cppcharset.c:1339
+msgid "empty character constant"
+msgstr "constante caractère vide"
+
+#: cppcharset.c:1378
+#, c-format
+msgid "failure to convert %s to %s"
+msgstr "échec de conversion de %s vers %s"
+
+#: cpperror.c:110 diagnostic.def:5
msgid "warning: "
msgstr "attention : "
-#: cpperror.c:115
+#: cpperror.c:112
msgid "internal error: "
msgstr "erreur interne : "
-#: cpperror.c:189
+#: cpperror.c:174
msgid "stdout"
msgstr "stdout"
-#: cpperror.c:191 gcc.c:6428
-#, c-format
-msgid "%s: %s"
-msgstr "%s : %s"
-
-#: cppexp.c:199
+#: cppexp.c:192
msgid "too many decimal points in number"
msgstr "trop de points décimaux dans le nombre"
-#: cppexp.c:219
+#: cppexp.c:212
#, c-format
msgid "invalid digit \"%c\" in octal constant"
msgstr "chiffre « %c » invalide dans la constante en base 8"
-#: cppexp.c:225
+#: cppexp.c:218
msgid "use of C99 hexadecimal floating constant"
msgstr "usage d'une constante hexadécimale constante à la C99"
-#: cppexp.c:234
+#: cppexp.c:227
msgid "exponent has no digits"
msgstr "l'exposant n'a pas de chiffre"
-#: cppexp.c:241
+#: cppexp.c:234
msgid "hexadecimal floating constants require an exponent"
msgstr "la contante hexadécimale flottante requière un exposant"
-#: cppexp.c:247
+#: cppexp.c:240
#, c-format
msgid "invalid suffix \"%.*s\" on floating constant"
msgstr "suffixe « %.*s » invalide pour une constante flottante"
-#: cppexp.c:257 cppexp.c:282
+#: cppexp.c:250 cppexp.c:275
#, c-format
msgid "traditional C rejects the \"%.*s\" suffix"
msgstr "le C traditionnel interdit le suffixe « %.*s »"
-#: cppexp.c:268
+#: cppexp.c:261
#, c-format
msgid "invalid suffix \"%.*s\" on integer constant"
msgstr "suffixe « %.*s » invalide pour une constante entière"
-#: cppexp.c:289
+#: cppexp.c:283
msgid "use of C99 long long integer constant"
msgstr "usage d'une constante entière « long long » à la C99"
-#: cppexp.c:295
+#: cppexp.c:290
msgid "imaginary constants are a GCC extension"
msgstr "les constantes imaginaires sont une extension GCC"
-#: cppexp.c:383
+#: cppexp.c:376
msgid "integer constant is too large for its type"
msgstr "constante entière trop grande pour tenir dans son type"
-#: cppexp.c:395
+#: cppexp.c:388
msgid "integer constant is so large that it is unsigned"
msgstr "cette constante entière est si grande qu'elle ne peut être signée"
-#: cppexp.c:482
+#: cppexp.c:470
msgid "missing ')' after \"defined\""
msgstr "« ) » manquant après « defined »"
-#: cppexp.c:489
+#: cppexp.c:477
msgid "operator \"defined\" requires an identifier"
msgstr "l'opérateur « defined » requiert un identificateur"
-#: cppexp.c:497
+#: cppexp.c:485
#, c-format
msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
msgstr "(« %s » est un élément lexical alternatif pour « %s » en C++)"
-#: cppexp.c:507
+#: cppexp.c:495
msgid "this use of \"defined\" may not be portable"
msgstr "cette utilisation de « defined » peut ne pas être portable"
-#: cppexp.c:545
+#: cppexp.c:531
msgid "floating constant in preprocessor expression"
msgstr "constante flottante dans une expresion pour le préprocesseur"
-#: cppexp.c:551
+#: cppexp.c:537
msgid "imaginary number in preprocessor expression"
msgstr "constante complexe dans une expresion pour le préprocesseur"
-#: cppexp.c:596
-#, c-format
-msgid "ISO C++ does not permit \"%s\" in #if"
-msgstr "le C++ ISO n'autorise pas « %s » dans #if"
-
-#: cppexp.c:604
+#: cppexp.c:582
#, c-format
msgid "\"%s\" is not defined"
msgstr "« %s » n'est pas défini"
-#: cppexp.c:737 cppexp.c:772
+#: cppexp.c:714 cppexp.c:743
#, c-format
msgid "missing binary operator before token \"%s\""
msgstr "opérateur binaire manquant avant l'élément lexical « %s »"
-#: cppexp.c:756
-#, c-format
-msgid "invalid character '%c' in #if"
-msgstr "caractère « %c » invalide dans #if"
-
-#: cppexp.c:758
-#, c-format
-msgid "invalid character '\\%03o' in #if"
-msgstr "caractère « \\%03o » invalide dans #if"
-
-#: cppexp.c:763
+#: cppexp.c:734
#, c-format
msgid "token \"%s\" is not valid in preprocessor expressions"
msgstr "l'élément lexical « %s » n'est pas valide dans les expressions pour le préprocesseur"
-#: cppexp.c:782
+#: cppexp.c:753
msgid "void expression between '(' and ')'"
msgstr "expression void entre parenthèses"
-#: cppexp.c:785
+#: cppexp.c:756
msgid "#if with no expression"
msgstr "#if sans expression"
-#: cppexp.c:787
+#: cppexp.c:758
#, c-format
msgid "operator '%s' has no right operand"
msgstr "l'opérateur « %s » n'a pas d'opérande droite"
-#: cppexp.c:813
+#: cppexp.c:784
msgid " ':' without preceding '?'"
msgstr "« : » n'est pas précédé de « ? »"
-#: cppexp.c:840
+#: cppexp.c:811
msgid "unbalanced stack in #if"
msgstr "pile non balancée dans #if"
-#: cppexp.c:862
+#: cppexp.c:830
#, c-format
msgid "impossible operator '%u'"
msgstr "opérateur impossible « %u »"
-#: cppexp.c:954
+#: cppexp.c:922
msgid "missing ')' in expression"
msgstr "« ) » manquante dans l'expresion"
-#: cppexp.c:975
+#: cppexp.c:943
msgid "'?' without following ':'"
msgstr "« ? » n'est pas suivi de « : »"
-#: cppexp.c:985
+#: cppexp.c:953
msgid "integer overflow in preprocessor expression"
msgstr "débordement d'entier dans l'expresion pour le préprocesseur"
-#: cppexp.c:990
+#: cppexp.c:958
msgid "missing '(' in expression"
msgstr "« ( » manquante dans l'expresion"
-#: cppexp.c:1026
+#: cppexp.c:990
#, c-format
msgid "the left operand of \"%s\" changes sign when promoted"
msgstr "L'opérande gauche de « %s » change de signe lors de sa promotion"
-#: cppexp.c:1031
+#: cppexp.c:995
#, c-format
msgid "the right operand of \"%s\" changes sign when promoted"
msgstr "L'opérande droite de « %s » change de signe lors de sa promotion"
-#: cppexp.c:1414
+#: cppexp.c:1352
msgid "comma operator in operand of #if"
msgstr "opérateur virgule dans l'opérande de #if"
-#: cppexp.c:1551
+#: cppexp.c:1483
msgid "division by zero in #if"
msgstr "division par zéro dans #if"
-#: cppfiles.c:411
-#, c-format
-msgid "%s is too large"
-msgstr "%s est trop grand"
+#: cppfiles.c:370
+msgid "NULL directory in find_file"
+msgstr "répertoire NUL dans find_file"
-#: cppfiles.c:447
-#, c-format
-msgid "%s is shorter than expected"
-msgstr "%s est plus petit que prévu"
+#: cppfiles.c:397
+msgid "one or more PCH files were found, but they were invalid"
+msgstr "un ou plusieurs fichiers PCH ont été repérés, mais ils étaient invalides"
+
+#: cppfiles.c:400
+msgid "use -Winvalid-pch for more information"
+msgstr "utiliser -Winvalid-pch pour plus d'informations"
# FIXME
-#: cppfiles.c:461
+#: cppfiles.c:458
#, c-format
msgid "%s is a block device"
msgstr "%s est un périphérique de blocs"
-#: cppfiles.c:594
+#: cppfiles.c:475
#, c-format
-msgid "no include path in which to find %s"
-msgstr "aucun chemin d'inclusion ne permet de trouver %s"
-
-# FIXME
-#: cppfiles.c:668
-msgid "Multiple include guards may be useful for:\n"
-msgstr "De multiples balises pour les inclusions peuvent être utiles pour:\n"
-
-#: cppfiles.c:1014
-msgid "absolute file name in remap_filename"
-msgstr "nom de fichier absolu dans remap_filename"
-
-#: cppinit.c:224
-#, c-format
-msgid "ignoring nonexistent directory \"%s\"\n"
-msgstr "le répertoire « %s » est ignoré car inexistant\n"
+msgid "%s is too large"
+msgstr "%s est trop grand"
-#: cppinit.c:231
+#: cppfiles.c:510
#, c-format
-msgid "%s: Not a directory"
-msgstr "%s : ce n'est pas un répertoire"
+msgid "%s is shorter than expected"
+msgstr "%s est plus petit que prévu"
-#: cppinit.c:287
+#: cppfiles.c:696
#, c-format
-msgid "ignoring duplicate directory \"%s\"\n"
-msgstr "le répertoire « %s » est ignoré car présent deux fois\n"
+msgid "no include path in which to search for %s"
+msgstr "aucun chemin d'inclusion dans lequel on pourrait repérer %s"
-#: cppinit.c:325
-msgid " as it is a non-system directory that duplicates a system directory\n"
-msgstr " car il s'agit d'un répertoire non système dupliquant un répertoire système\n"
+# FIXME
+#: cppfiles.c:956
+msgid "Multiple include guards may be useful for:\n"
+msgstr "De multiples balises pour les inclusions peuvent être utiles pour:\n"
-#: cppinit.c:891
+#: cppinit.c:387
msgid "cppchar_t must be an unsigned type"
msgstr "cppchar_t doit être d'un type non signé"
-#: cppinit.c:895
+#: cppinit.c:391
#, c-format
msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
msgstr "l'arithmétique du préprocesseur a une précision maximale de %lu bits ; la cible requière %lu bits"
-#: cppinit.c:901
+#: cppinit.c:398
msgid "CPP arithmetic must be at least as precise as a target int"
msgstr "l'arithmétique de CPP doit être au moins aussi précise que le type int de la cible"
-#: cppinit.c:904
+#: cppinit.c:401
msgid "target char is less than 8 bits wide"
msgstr "sur la cible, « char » fait moins de 8 bits"
-#: cppinit.c:908
+#: cppinit.c:405
msgid "target wchar_t is narrower than target char"
msgstr "sur la cible, « wchar_t » est plus petit que « char »"
-#: cppinit.c:912
+#: cppinit.c:409
msgid "target int is narrower than target char"
msgstr "sur la cible, « int » est plus petit que « char »"
-#: cppinit.c:916
+#: cppinit.c:414
msgid "CPP half-integer narrower than CPP character"
msgstr "les demi-entiers de CPP sont plus petit que les caractères de CPP"
-#: cppinit.c:920
+#: cppinit.c:418
#, c-format
msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
-msgstr "CPP sur cette machine ne peut gérer les caractères longs constants de plus de %lu bits, mais la cible requière %lu bits"
-
-#: cppinit.c:972
-msgid "#include \"...\" search starts here:\n"
-msgstr "la recherche pour #include \"...\" débute ici :\n"
-
-#: cppinit.c:976
-msgid "#include <...> search starts here:\n"
-msgstr "la recherche pour #include <...> débute ici:\n"
-
-#: cppinit.c:979
-msgid "End of search list.\n"
-msgstr "Fin de la liste de recherche.\n"
-
-#: cppinit.c:1057
-msgid "<built-in>"
-msgstr "<interne>"
-
-#: cppinit.c:1059
-msgid "<command line>"
-msgstr "<ligne de commande>"
-
-#. 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:1164
-#, c-format
-msgid "assertion missing after %s"
-msgstr "assertion manquante après %s"
-
-#: cppinit.c:1165
-#, c-format
-msgid "directory name missing after %s"
-msgstr "nom de répertoire manquant après %s"
-
-#: cppinit.c:1166
-#, c-format
-msgid "file name missing after %s"
-msgstr "nom de fichier manquant après %s"
-
-#: cppinit.c:1167
-#, c-format
-msgid "macro name missing after %s"
-msgstr "nom de macro manquant après %s"
-
-#: cppinit.c:1168
-#, c-format
-msgid "path name missing after %s"
-msgstr "nom de chemin manquant après %s"
-
-#: cppinit.c:1353
-msgid "-I- specified twice"
-msgstr "-I- spécifié deux fois"
-
-#: cpplex.c:149
-#, c-format
-msgid "trigraph ??%c converted to %c"
-msgstr "trigraphe ??%c converti en %c"
-
-#: cpplex.c:157
-#, c-format
-msgid "trigraph ??%c ignored"
-msgstr "trigraphe ??%c ignoré"
-
-#: cpplex.c:214
-msgid "backslash and newline separated by space"
-msgstr "« \\ » et retour de chariot séparés par un blanc"
-
-#: cpplex.c:221 cpptrad.c:158
-msgid "backslash-newline at end of file"
-msgstr "« \\ » en fin de ligne à la fin du fichier"
-
-#: cpplex.c:287 cpptrad.c:199
-msgid "\"/*\" within comment"
-msgstr "« /* » à l'intérieur d'un commentaire"
+msgstr "CPP sur cette machine ne peut gérer les constantes larges de caractères de plus de %lu bits, mais la cible requière %lu bits"
# I18N
-#: cpplex.c:395
+#: cpplex.c:410
msgid "null character(s) ignored"
msgstr "caractère(s) nul(s) ignoré(s)"
-#: cpplex.c:402
-#, c-format
-msgid "%s in preprocessing directive"
-msgstr "%s dans la directive du préprocesseur"
+#: cpplex.c:445
+msgid "'$' in identifier or number"
+msgstr "« $ » dans un identificateur ou un nombre"
# FIXME
-#: cpplex.c:475
+#: cpplex.c:492
#, c-format
msgid "attempt to use poisoned \"%s\""
-msgstr "tentative d'utilisation d'un « %s » empoisonné"
+msgstr "tentative d'utilisation d'un « %s » corrompu"
-#: cpplex.c:483
+#: cpplex.c:500
msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
msgstr "« __VA_ARGS__ » peut seulement appraître dans l'expansion des macros C99 à nombre variable d'arguments"
-#: cpplex.c:555
-msgid "'$' character(s) in identifier or number"
-msgstr "caractère(s) « $ » dans un identificateur ou un nombre"
-
-#: cpplex.c:698
-#, c-format
-msgid "missing terminating %c character"
-msgstr "caractère %c de terminaison manquant"
-
-#: cpplex.c:711
+#: cpplex.c:596
msgid "null character(s) preserved in literal"
msgstr "caractère(s) nul préservé(s) dans la chaîne"
-#: cpplex.c:915 cpptrad.c:487
-msgid "no newline at end of file"
-msgstr "pas de retour chariot à la fin du fichier"
-
-#: cpplex.c:1092 cpptrad.c:213
+#: cpplex.c:916
msgid "unterminated comment"
msgstr "commentaire non terminé"
-#: cpplex.c:1103
+#: cpplex.c:927
msgid "C++ style comments are not allowed in ISO C90"
msgstr "Les commentaires à la C++ ne sont pas permis en C89 ISO"
-#: cpplex.c:1105
+#: cpplex.c:929
msgid "(this will be reported only once per input file)"
msgstr "(ceci sera rapporté une seule fois seulement par fichier d'entrée)"
-#: cpplex.c:1110
+#: cpplex.c:934
msgid "multi-line comment"
msgstr "commentaire multi-lignes"
-#: cpplex.c:1425
-#, c-format
-msgid "unknown string token %s\n"
-msgstr "élément lexical %s inconnu\n"
-
-#: cpplex.c:1438
+#: cpplex.c:1198
#, c-format
msgid "unspellable token %s"
msgstr "l'élément lexical %s ne peut être épelé"
-#: cpplex.c:1695
-#, c-format
-msgid "the meaning of '\\%c' is different in traditional C"
-msgstr "la signification de « \\%c » est différente en C traditionel"
-
-# FIXME
-#: cpplex.c:1701
-msgid "incomplete universal-character-name"
-msgstr "nom-de-caractère-universel incomplet"
-
-#: cpplex.c:1715
-#, c-format
-msgid "non-hex digit '%c' in universal-character-name"
-msgstr "chiffre « %c » non hexadécimal dans le nom-de-caractère-universel"
-
-#: cpplex.c:1723
-msgid "universal-character-name on EBCDIC target"
-msgstr "nom-de-caractère-universel pour une cible EBCDIC"
-
-#: cpplex.c:1737
-msgid "universal-character-name out of range"
-msgstr "nom-de-caractère-universel est hors gamme"
-
-#: cpplex.c:1791
-msgid "the meaning of '\\a' is different in traditional C"
-msgstr "la signification de « \\a » est différente en C traditionel"
-
-#: cpplex.c:1798
-#, c-format
-msgid "non-ISO-standard escape sequence, '\\%c'"
-msgstr "séquence d'échappement « \\%c » non conforme au standard ISO"
-
-#: cpplex.c:1809
-msgid "the meaning of '\\x' is different in traditional C"
-msgstr "la signification de « \\x » est différente en C traditionel"
-
-#: cpplex.c:1828 f/lex.c:585
-msgid "\\x used with no following hex digits"
-msgstr "\\x utilisé sans être suivi de chiffres en hexdécimal"
-
-#: cpplex.c:1833
-msgid "hex escape sequence out of range"
-msgstr "séquence d'échappement hexadécimale hors gamme"
-
-#: cpplex.c:1858
-msgid "octal escape sequence out of range"
-msgstr "séquence d'échappement octale hors gamme"
-
-#: cpplex.c:1874
-#, c-format
-msgid "unknown escape sequence '\\%c'"
-msgstr "séquence d'échappement « \\%c » inconnue"
-
-#: cpplex.c:1877
-#, c-format
-msgid "unknown escape sequence: '\\%03o'"
-msgstr "séquence d'échappement « \\%03o » inconnue"
-
-#: cpplex.c:1882
-msgid "escape sequence out of range for its type"
-msgstr "séquence d'échappement hors gamme pour son type"
-
-#: cpplex.c:1973
-msgid "empty character constant"
-msgstr "constante caractère vide"
-
-#: cpplex.c:1983
-msgid "character constant too long for its type"
-msgstr "constante caractère trop longue pour son type"
-
-#: cpplex.c:1986
-msgid "multi-character character constant"
-msgstr "constante caractère multi-caractères"
-
-#: cpplib.c:225
+#: cpplib.c:218
#, c-format
msgid "extra tokens at end of #%s directive"
msgstr "éléments lexicaux superflus à la fin de la directive #%s"
-#: cpplib.c:315
+#: cpplib.c:304
#, c-format
msgid "#%s is a GCC extension"
msgstr "#%s est une extension GCC"
-#: cpplib.c:327
+#: cpplib.c:316
msgid "suggest not using #elif in traditional C"
msgstr "il est suggéré de ne pas utiliser #elif en C traditionnel"
-#: cpplib.c:330
+#: cpplib.c:319
#, c-format
msgid "traditional C ignores #%s with the # indented"
msgstr "le C traditionel ignore la directive #%s si le caractère # est indenté"
-#: cpplib.c:334
+#: cpplib.c:323
#, c-format
msgid "suggest hiding #%s from traditional C with an indented #"
msgstr "il est suggéré de cacher #%s au C traditionel en indentant le « # »"
-#: cpplib.c:358
+#: cpplib.c:345
msgid "embedding a directive within macro arguments is not portable"
msgstr "placer une directive dans les arguments d'une macro n'est pas portable"
-#: cpplib.c:378
+#: cpplib.c:365
msgid "style of line directive is a GCC extension"
msgstr "la directive de style de ligne est extension GCC"
-#: cpplib.c:428
+#: cpplib.c:415
#, c-format
msgid "invalid preprocessing directive #%s"
msgstr "directive de pré-traitement #%s invalide"
-#: cpplib.c:500
+#: cpplib.c:484
msgid "\"defined\" cannot be used as a macro name"
msgstr "« defined » ne peut être utilisé comme nom de macro"
-#: cpplib.c:506
+#: cpplib.c:490
#, c-format
msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
msgstr "« %s » ne peut être utilisé comme nom de macro car c'est un opérateur en C++"
-#: cpplib.c:509
+#: cpplib.c:493
#, c-format
msgid "no macro name given in #%s directive"
msgstr "aucun nom de macro donné dans la directive #%s"
-#: cpplib.c:512
+#: cpplib.c:496
msgid "macro names must be identifiers"
msgstr "les noms de macro doivent être des identificateurs"
-#: cpplib.c:552
+#: cpplib.c:537
#, c-format
msgid "undefining \"%s\""
msgstr "indéfinition de « %s »"
-#: cpplib.c:598
+#: cpplib.c:609
msgid "missing terminating > character"
msgstr "caractère > de terminaison manquant"
-#: cpplib.c:637
+#: cpplib.c:662
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr "#%s attend \"NOM_DE_FICHIER\" ou <NOM_DE_FICHIER>"
-#: cpplib.c:648
-#, c-format
-msgid "empty file name in #%s"
-msgstr "nom de fichier vide dans #%s"
+#: cpplib.c:685
+msgid "#include nested too deeply"
+msgstr "#include imbriqué trop profondément"
-#: cpplib.c:667
+#: cpplib.c:723
msgid "#include_next in primary source file"
msgstr "#include_next dans un fichier source primaire"
-#: cpplib.c:674
-msgid "#import is obsolete, use an #ifndef wrapper in the header file"
-msgstr "#import est obsolète, enveloppez le avec #ifndef dans le fichier d'en-tête"
-
-#: cpplib.c:682
-msgid "#include nested too deeply"
-msgstr "#include imbriqué trop profondément"
-
-#: cpplib.c:739
+#: cpplib.c:749
#, c-format
msgid "invalid flag \"%s\" in line directive"
msgstr "fanion « %s » invalide dans la ligne de directive"
-#: cpplib.c:814
+#: cpplib.c:794
#, c-format
msgid "\"%s\" after #line is not a positive integer"
msgstr "« %s » après #line n'est pas un nombre entier positif"
-#: cpplib.c:820
+#: cpplib.c:800
msgid "line number out of range"
-msgstr "numéro de ligne hors gamme"
+msgstr "numéro de ligne hors limite"
-#: cpplib.c:831 cpplib.c:902
+#: cpplib.c:812 cpplib.c:885
#, c-format
msgid "\"%s\" is not a valid filename"
msgstr "« %s » n'est pas un nom de fichier valide"
-#: cpplib.c:866
+#: cpplib.c:847
#, c-format
msgid "\"%s\" after # is not a positive integer"
msgstr "« %s » après # n'est pas un nombre entier positif"
-#: cpplib.c:973
+#: cpplib.c:947
msgid "invalid #ident directive"
msgstr "directive #ident invalide"
# FIXME
-#: cpplib.c:1061
+#: cpplib.c:1027
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr "enregistrement de \"%s\" à la fois comme une pragma un espace de nom de pragma"
-#: cpplib.c:1064
+#: cpplib.c:1030
#, c-format
msgid "#pragma %s %s is already registered"
msgstr "la #pragma %s %s est déjà enregistrée"
-#: cpplib.c:1067
+#: cpplib.c:1033
#, c-format
msgid "#pragma %s is already registered"
msgstr "la #pragma %s est déjà enregistrée"
# FIXME
-#: cpplib.c:1143
-msgid "#pragma once is obsolete"
-msgstr "utiliser #pragma une seule fois est obsolète"
-
-# FIXME
-#: cpplib.c:1146
+#: cpplib.c:1178
msgid "#pragma once in main file"
msgstr "#pragma utilisé une seule fois dans le fichier principal"
# FIXME
-#: cpplib.c:1170
+#: cpplib.c:1201
msgid "invalid #pragma GCC poison directive"
-msgstr "la directive empoisonée #pragma GCC est invalide"
+msgstr "la directive corrompue #pragma GCC est invalide"
# FIXME
-#: cpplib.c:1179
+#: cpplib.c:1210
#, c-format
msgid "poisoning existing macro \"%s\""
-msgstr "empoisonnement de la macro existente « %s »"
+msgstr "corruption de la macro existente « %s »"
-#: cpplib.c:1201
+#: cpplib.c:1231
msgid "#pragma system_header ignored outside include file"
msgstr "#pragma system_header ignorée en dehors du fichier d'inclusion"
-#: cpplib.c:1226
+#: cpplib.c:1255
#, c-format
-msgid "cannot find source %s"
-msgstr "impossible de trouver le source %s"
+msgid "cannot find source file %s"
+msgstr "impossible de trouver le fichier source %s"
-#: cpplib.c:1230
+#: cpplib.c:1259
#, c-format
msgid "current file is older than %s"
msgstr "le fichier courant est plus vieux que %s"
-#: cpplib.c:1346
+#: cpplib.c:1373
msgid "_Pragma takes a parenthesized string literal"
msgstr "_Pragma prend une chaîne entourée de parenthèrese"
-#: cpplib.c:1429
+#: cpplib.c:1451
msgid "#else without #if"
msgstr "#else sans #if"
-#: cpplib.c:1434
+#: cpplib.c:1456
msgid "#else after #else"
msgstr "#else après #else"
-#: cpplib.c:1436 cpplib.c:1470
-msgid "the conditional began here"
-msgstr "la condition débute ici"
-
-#: cpplib.c:1463
+#: cpplib.c:1484
msgid "#elif without #if"
msgstr "#elif sans #if"
-#: cpplib.c:1468
+#: cpplib.c:1489
msgid "#elif after #else"
msgstr "#elif après #else"
-#: cpplib.c:1499
+#: cpplib.c:1519
msgid "#endif without #if"
msgstr "#endif sans #if"
-#: cpplib.c:1582
+#: cpplib.c:1596
msgid "missing '(' after predicate"
msgstr "« ( » manquante après le prédicat"
-#: cpplib.c:1597
+#: cpplib.c:1611
msgid "missing ')' to complete answer"
msgstr "« ) » manquante pour completer la réponse"
-#: cpplib.c:1617
+#: cpplib.c:1631
msgid "predicate's answer is empty"
msgstr "la réponse du prédicat est vide"
-#: cpplib.c:1647
+#: cpplib.c:1658
msgid "assertion without predicate"
msgstr "assertion sans prédicat"
-#: cpplib.c:1649
+#: cpplib.c:1660
msgid "predicate must be an identifier"
msgstr "le prédicat doit être un identificateur"
# FIXME
-#: cpplib.c:1738
+#: cpplib.c:1744
#, c-format
msgid "\"%s\" re-asserted"
msgstr "« %s » re-asserti"
-#: cpplib.c:1968
-#, c-format
-msgid "unterminated #%s"
-msgstr "#%s non terminé"
-
-#: cppmacro.c:94
-#, c-format
-msgid "macro \"%s\" is not used"
-msgstr "la macro « %s » n'est pas utilisée"
-
-#: cppmacro.c:139 cppmacro.c:294
+#: cppmacro.c:125 cppmacro.c:280
#, c-format
msgid "invalid built-in macro \"%s\""
msgstr "macro interne invalide « %s »"
-#: cppmacro.c:234
+#: cppmacro.c:221
msgid "could not determine date and time"
msgstr "ne peut déterminer la date et l'heure"
-#: cppmacro.c:407
+#: cppmacro.c:393
msgid "invalid string literal, ignoring final '\\'"
msgstr "chaîne invalide, « \\ » final ignoré"
-#: cppmacro.c:504
+#: cppmacro.c:476
#, c-format
msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
msgstr "le collage de « %s » et de « %s » ne donne pas d'élément lexical de pré-traitement valide"
-#: cppmacro.c:546
+#: cppmacro.c:514
msgid "ISO C99 requires rest arguments to be used"
-msgstr "le C99 ISO requiert que tous les arguments soient utilisés"
+msgstr "ISO C99 requiert que tous les arguments soient utilisés"
-#: cppmacro.c:551
+#: cppmacro.c:519
#, c-format
msgid "macro \"%s\" requires %u arguments, but only %u given"
msgstr "macro « %s » requiert %u arguments, mais seulement %u ont été passés"
-#: cppmacro.c:556
+#: cppmacro.c:524
#, c-format
msgid "macro \"%s\" passed %u arguments, but takes just %u"
msgstr "la macro « %s » a reçu %u arguments, mais elle n'en prend que %u"
-#: cppmacro.c:669 cpptrad.c:774
+#: cppmacro.c:635
#, c-format
msgid "unterminated argument list invoking macro \"%s\""
msgstr "liste d'arguments non terminée invoquant la macro « %s »"
-#: cppmacro.c:776
+#: cppmacro.c:738
#, c-format
msgid "function-like macro \"%s\" must be used with arguments in traditional C"
msgstr "la macro « %s » ressemblant à une fonction doit utilisée avec des arguments en C traditionnel"
-#: cppmacro.c:1314
+#: cppmacro.c:1241
#, c-format
msgid "duplicate macro parameter \"%s\""
msgstr "paramètre de macro « %s » en double"
-#: cppmacro.c:1351
+#: cppmacro.c:1286
#, c-format
msgid "\"%s\" may not appear in macro parameter list"
msgstr "« %s » peut ne pas apparaître parmi les paramètres de macros"
-#: cppmacro.c:1359
+#: cppmacro.c:1294
msgid "macro parameters must be comma-separated"
msgstr "les paramètres de macro doivent être séparés par des virgules"
-#: cppmacro.c:1376
+#: cppmacro.c:1311
msgid "parameter name missing"
msgstr "nom de paramètre manquant"
-#: cppmacro.c:1391
+#: cppmacro.c:1326
msgid "anonymous variadic macros were introduced in C99"
msgstr "les macros anonymes à nombre variable d'arguments ont été introduites avec le C99"
-#: cppmacro.c:1395
+#: cppmacro.c:1330
msgid "ISO C does not permit named variadic macros"
-msgstr "le C ISO ne permet pas les macros nommées à nombre variable d'arguments"
+msgstr "ISO C ne permet pas les macros nommées à nombre variable d'arguments"
-#: cppmacro.c:1404
+#: cppmacro.c:1339
msgid "missing ')' in macro parameter list"
msgstr "« ) » manquante dans la liste des paramètres de macros"
-#: cppmacro.c:1472
+#: cppmacro.c:1402
msgid "ISO C requires whitespace after the macro name"
-msgstr "le C ISO requiert un blanc après le nom de la macro"
+msgstr "ISO C requiert un blanc après le nom de la macro"
-#: cppmacro.c:1500
+#: cppmacro.c:1430
msgid "'#' is not followed by a macro parameter"
msgstr "« # » n'est pas suivi d'un paramètre de macro"
# FIXME
-#: cppmacro.c:1519
+#: cppmacro.c:1449
msgid "'##' cannot appear at either end of a macro expansion"
msgstr "« ## » ne peut apparaître à chacune des fins de l'expansion de macros"
-#: cppmacro.c:1601
-#, c-format
-msgid "\"%s\" redefined"
-msgstr "« %s » redéfini"
-
-#: cppmacro.c:1606
-msgid "this is the location of the previous definition"
-msgstr "ceci est la localisation d'une précédente définition"
-
-#: cppmacro.c:1657
+#: cppmacro.c:1588
#, c-format
msgid "macro argument \"%s\" would be stringified in traditional C"
msgstr "l'argument macro « %s » serait changé en chaine en C traditionnel"
-#: cppmacro.c:1682
+#: cppmacro.c:1611
#, c-format
msgid "invalid hash type %d in cpp_macro_definition"
msgstr "type de hachage %d invalide dans cpp_macro_definition"
-#: cppspec.c:109
+#: cpppch.c:84 cpppch.c:332 cpppch.c:356 cpppch.c:365
+msgid "while writing precompiled header"
+msgstr "lors de l'écriture de l'en-tête pré-compilée"
+
+#: cpppch.c:463
+#, c-format
+msgid "%s: not used because `%.*s' not defined"
+msgstr "%s: n'est pas utilisé parce que « %.*s » n'est pas définie"
+
+#: cpppch.c:475
+#, c-format
+msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
+msgstr "%s: n'est pas utilisé parce que « %.*s » est défini en tant « %s » et non pas « %.*s »"
+
+#: cpppch.c:516
+#, c-format
+msgid "%s: not used because `%s' is defined"
+msgstr "%s: non utilisé parce que « %s » est défini"
+
+#: cpppch.c:529 cpppch.c:715
+msgid "while reading precompiled header"
+msgstr "lors de la lecture de l'en-tête pré-compilée"
+
+#: cppspec.c:106
#, c-format
msgid "\"%s\" is not a valid option to the preprocessor"
msgstr "« %s » n'est pas une option valide pour le préprocesseur"
-#: cppspec.c:133
+#: cppspec.c:128
msgid "too many input files"
msgstr "trop de fichiers d'entrée"
-#: cpptrad.c:841
+#: cpptrad.c:744
#, c-format
msgid "detected recursion whilst expanding macro \"%s\""
msgstr "récursion détectée lors de l'expansion de la macro « %s »"
+#: cpptrad.c:911
+msgid "syntax error in macro parameter list"
+msgstr "erreur de syntaxe dans la liste de paramètres macro"
+
# FIXME: Initialisé, ou ensembles?
-#: cse.c:7195
+#: cse.c:7040
#, c-format
msgid ";; Processing block from %d to %d, %d sets.\n"
msgstr ";; traitement du bloc de %d à %d, %d initialisés.\n"
-#: diagnostic.c:714
-msgid "((anonymous))"
-msgstr "((anonyme))"
-
-#: diagnostic.c:928
-#, c-format
-msgid "%s: warnings being treated as errors\n"
-msgstr "%s : les avertissements sont traités commes des erreurs\n"
-
-#: diagnostic.c:963
-#, c-format
-msgid "%s: %s: "
-msgstr "%s : %s : "
-
-# I18N
-#: diagnostic.c:1054
-#, c-format
-msgid "%s "
-msgstr "%s "
-
-# I18N
-#: diagnostic.c:1056
-#, c-format
-msgid " %s"
-msgstr " %s"
-
-#: diagnostic.c:1078
-msgid "At top level:"
-msgstr "Hors de toute fonction :"
-
-#: diagnostic.c:1083
-#, c-format
-msgid "In member function `%s':"
-msgstr "Dans la fonction membre « %s » :"
-
-#: diagnostic.c:1087
-#, c-format
-msgid "In function `%s':"
-msgstr "Dans la fonction « %s »:"
-
-#: diagnostic.c:1175
-msgid "compilation terminated.\n"
-msgstr "compilation terminée.\n"
-
-#: diagnostic.c:1193
+#: diagnostic.c:209
#, c-format
msgid "%s:%d: confused by earlier errors, bailing out\n"
msgstr "%s:%d: embrouillé par les erreurs précédentes, abandon\n"
-#: diagnostic.c:1208 diagnostic.c:1316
-#, c-format
-msgid ""
-"Please submit a full bug report,\n"
-"with preprocessed source if appropriate.\n"
-"See %s for instructions.\n"
-msgstr ""
-"Veuillez soumettre un rapport complet d'anomalies,\n"
-"avec le source pré-traité si nécessaire.\n"
-"Consultez %s pour plus de détail.\n"
+#: diagnostic.c:281
+msgid "compilation terminated.\n"
+msgstr "compilation terminée.\n"
# FIXME
-#: diagnostic.c:1314
+#: diagnostic.c:572
msgid "Internal compiler error: Error reporting routines re-entered.\n"
msgstr "erreur interne au compilateur : routine de rapport d'erreur préemptée.\n"
-#: diagnostic.c:1376
+#: diagnostic.c:584
#, c-format
msgid "in %s, at %s:%d"
msgstr "dans %s, à %s:%d"
-# FRONT
-#: diagnostic.c:1397
-#, c-format
-msgid "In file included from %s:%d"
-msgstr "Dans le fichier inclus depuis %s:%d"
-
-# I18N: This line should be indented with the previous entry
-#: diagnostic.c:1400
-#, c-format
-msgid ""
-",\n"
-" from %s:%d"
-msgstr ""
-",\n"
-" depuis %s:%d"
-
-# I18N
-#: diagnostic.c:1401
-msgid ":\n"
-msgstr ":\n"
-
-#: diagnostic.c:1445 diagnostic.c:1462
-#, c-format
-msgid "`%s' is deprecated (declared at %s:%d)"
-msgstr "« %s » est obsolète (déclaré à %s:%d)"
-
-#: diagnostic.c:1465
-#, c-format
-msgid "`%s' is deprecated"
-msgstr "« %s » est obsolète"
-
-#: diagnostic.c:1468
-#, c-format
-msgid "type is deprecated (declared at %s:%d)"
-msgstr "type est obsolète (déclaré à %s:%d)"
-
-#: diagnostic.c:1471
-msgid "type is deprecated"
-msgstr "type est obsolète"
-
# FIXME
-#: dominance.c:728
+#: dominance.c:763
#, c-format
msgid "dominator of %d should be %d, not %d"
msgstr "le dominateur de %d devrait être %d, et non %d"
-#: dwarf2out.c:3135
+#: dwarf2out.c:3228
#, c-format
msgid "DW_LOC_OP %s not implemented\n"
msgstr "DW_LOC_OP %s n'est pas implanté\n"
-#: dwarfout.c:2066
-#, c-format
-msgid "internal regno botch: `%s' has regno = %d\n"
-msgstr "regno interne mal fait : « %s » a regno = %d\n"
-
-#: dwarfout.c:6181
-msgid "support for the DWARF1 debugging format is deprecated"
-msgstr "le support du format de débogage DWARF1 est obsolète"
-
-#: dwarfout.c:6278
-msgid "can't get current directory"
-msgstr "ne peut repérer le répertoire courant"
-
#: emit-rtl.c:1155
msgid "can't access real part of complex value in hard register"
msgstr "ne peut accéder à la partie réelle d'une valeur complexe dans un registre matériel"
-#: emit-rtl.c:1177
+#: emit-rtl.c:1182
msgid "can't access imaginary part of complex value in hard register"
msgstr "ne peut accéder à la partie imaginaire d'une valeur complexe dans un registre matériel"
-#: emit-rtl.c:3402
+#: emit-rtl.c:2263
+msgid "Invalid rtl sharing found in the insn"
+msgstr "partage rtl invalide repéré dans l'insn"
+
+#: emit-rtl.c:2265
+msgid "Shared rtx"
+msgstr "rtx partagé"
+
+#: emit-rtl.c:3400
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr "ICE : emit_insn utilisé là où emit_jump_insn était attendu :\n"
-#: errors.c:136
+#: errors.c:129
#, c-format
msgid "abort in %s, at %s:%d"
msgstr "abandon dans %s, à %s:%d"
-#: except.c:369
+#: except.c:357
msgid "exception handling disabled, use -fexceptions to enable"
msgstr "traitement des exceptions désactivé, utiliser -fexceptions pour l'activer"
-#: except.c:2994
+#: except.c:2942
msgid "argument of `__builtin_eh_return_regno' must be constant"
msgstr "l'argument de « __builtin_eh_return_regno » doit être une constante"
-#: except.c:3137
+#: except.c:3073
msgid "__builtin_eh_return not supported on this target"
msgstr "« __builtin_eh_return » n'est pas possible sur cette cible"
# FIXME
-#: explow.c:1408
+#: explow.c:1327
msgid "stack limits not supported on this target"
msgstr "les limites de la pile ne sont pas supportées sur cette cible"
-#: expr.c:3355
+#: expr.c:2965
msgid "function using short complex types cannot be inline"
-msgstr "un foncton utilisant un type « complex short » ne peut être en ligne"
+msgstr "un foncton utilisant un type « complex short » ne peut être enligne"
-# FRONT
-#: expr.c:6272 expr.c:6281 expr.c:6290 expr.c:6295 expr.c:6604 expr.c:6620
-msgid "unsupported wide integer operation"
-msgstr "opération sur de large entier non supportée"
+#: expr.c:6311
+msgid "%Jprior parameter's size depends on '%D'"
+msgstr "%Jtaille du paramètre précédent dépend de « %D »"
-#: expr.c:6669
-#, c-format
-msgid "prior parameter's size depends on `%s'"
-msgstr "taille du paramètre précédent dépend de « %s »"
-
-#: expr.c:7005
+#: expr.c:6678
msgid "returned value in block_exit_expr"
msgstr "valeur retournée dans block_exit_expr"
#. We can't make a bitwise copy of this object, so fail.
-#: expr.c:9202
-#, fuzzy
+#: expr.c:8823
msgid "cannot take the address of an unaligned member"
-msgstr "ne peut prendre l'adresse de « ceci », laquelle est une expression rvalue"
+msgstr "ne peut prendre l'adresse d'un membre non aligné"
-#: final.c:1342
+#: final.c:1058
msgid "negative insn length"
msgstr "longueur négative insn"
-#: final.c:2793
+#: final.c:2429
msgid "could not split insn"
msgstr "n'a pu séparer insn"
-#: final.c:3141
+#: final.c:2771
msgid "invalid `asm': "
msgstr "« asm » invalide: "
-#: final.c:3328
+#: final.c:2954
msgid "nested assembly dialect alternatives"
msgstr "assemblage de dialectes alternatifs imbriqués"
-#: final.c:3345 final.c:3357
+#: final.c:2971 final.c:2983
msgid "unterminated assembly dialect alternative"
msgstr "assemblage de dialectes alternatifs non terminé"
-#: final.c:3401
+#: final.c:3027
#, c-format
msgid "operand number missing after %%-letter"
msgstr "numéro d'opérande manquant après %%-letter"
-#: final.c:3404 final.c:3443
+#: final.c:3030 final.c:3069
msgid "operand number out of range"
-msgstr "nombre d'opérandes hors gamme"
+msgstr "nombre d'opérandes hors limite"
-#: final.c:3462
+#: final.c:3088
#, c-format
msgid "invalid %%-code"
msgstr "%%-code est invalide"
-#: final.c:3493
+#: final.c:3118
#, c-format
msgid "`%%l' operand isn't a label"
-msgstr "opérande «%%l» n'est pas une étiquette"
+msgstr "opérande « %%l » n'est pas une étiquette"
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3600 vmsdbgout.c:466 config/i386/i386.c:6314
-#: config/pdp11/pdp11.c:1573
+#. We can't handle floating point constants; PRINT_OPERAND must
+#. handle them.
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#: final.c:3220 vmsdbgout.c:467 config/i386/i386.c:6739
+#: config/pdp11/pdp11.c:1646
msgid "floating constant misused"
msgstr "constante flottante mal utilisée"
-#: final.c:3656 vmsdbgout.c:523 config/i386/i386.c:6392
-#: config/pdp11/pdp11.c:1620
+#: final.c:3276 vmsdbgout.c:524 config/i386/i386.c:6817
+#: config/pdp11/pdp11.c:1693
msgid "invalid expression as operand"
msgstr "expression invalide comme opérande"
-#: flow.c:352
+#: flow.c:329
msgid "function might be possible candidate for attribute `noreturn'"
msgstr "fonction peut être une possible candidate pour l'attribut « norreturn »"
-#: flow.c:357
+#: flow.c:334
msgid "`noreturn' function does return"
msgstr "fonction avec « noreturn » effectue des retour"
-#: flow.c:378
+#: flow.c:355
msgid "control reaches end of non-void function"
msgstr "contrôle a atteint la fin non void de la fonction"
-#: flow.c:1642
+#: flow.c:1582
msgid "Attempt to delete prologue/epilogue insn:"
msgstr "Tentative pour détruire le prologue/épilogue insn:"
-#: fold-const.c:2546 fold-const.c:2559
+#: fold-const.c:2759 fold-const.c:2772
#, c-format
msgid "comparison is always %d due to width of bit-field"
msgstr "comparaison est toujours %d en raison de la largeur du champ de bits"
-#: fold-const.c:3753 fold-const.c:3770
+#: fold-const.c:3967 fold-const.c:3984
#, c-format
msgid "comparison is always %d"
msgstr "comparaison est toujours %d"
-#: fold-const.c:3901
+#: fold-const.c:4115
msgid "`or' of unmatched not-equal tests is always 1"
msgstr "« or » de tests non pairé de non égalité est troujours 1"
-#: fold-const.c:3906
+#: fold-const.c:4120
msgid "`and' of mutually exclusive equal-tests is always 0"
msgstr "« and » de tests d'égalité mutuellement exclusifs est toujours 0"
-#: function.c:884 varasm.c:1503
-#, c-format
-msgid "size of variable `%s' is too large"
-msgstr "taille de la variable « %s » est trop grande"
+#: fold-const.c:8340
+msgid "fold check: original tree changed by fold"
+msgstr "vérification fold: arbre originale modifié par fold"
+
+#: function.c:884 varasm.c:1408
+msgid "%Jsize of variable '%D' is too large"
+msgstr "%Jtaille de la variable « %D » est trop grande"
-#: function.c:3772
-#, fuzzy
+#: function.c:3737
msgid "impossible constraint in `asm'"
-msgstr "impossible de contraindre les registres en « asm »"
+msgstr "contrainte impossible dans « asm »"
-#: function.c:5527
-#, c-format
-msgid "`%s' might be used uninitialized in this function"
-msgstr "« %s » pourrait être utilisé sans être initialisé dans cette fonction"
+#: function.c:5697
+msgid "%J'%D' might be used uninitialized in this function"
+msgstr "%J« %D » pourrait être utilisé sans être initialisé dans cette fonction"
-#: function.c:5534
-#, c-format
-msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
-msgstr "variable « %s » pourrait être maltraitée par un «longjmp» ou un «vfork »"
+#: function.c:5704
+msgid "%Jvariable '%D' might be clobbered by `longjmp' or `vfork'"
+msgstr "%Jvariable « %D » pourrait être maltraitée par un «longjmp» ou un «vfork »"
-#: function.c:5553
-#, c-format
-msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
-msgstr "argument « %s » pourrait être maltraitée par un «longjmp» ou un «vfork »"
+#: function.c:5723
+msgid "%Jargument '%D' might be clobbered by `longjmp' or `vfork'"
+msgstr "%Jargument « %D » pourrait être maltraitée par un «longjmp» ou un «vfork »"
-#: function.c:6420
+#: function.c:6497
msgid "function returns an aggregate"
msgstr "fonction retourne un aggrégat"
-#: function.c:6925
-#, c-format
-msgid "unused parameter `%s'"
-msgstr "paramètre « %s » inutilisé"
+#: function.c:6980
+msgid "%Junused parameter '%D'"
+msgstr "%Jparamètre « %D » inutilisé"
-#: gcc.c:1107
+#: gcc.c:1191
#, c-format
msgid "ambiguous abbreviation %s"
msgstr "abréviation %s est ambiguë"
-#: gcc.c:1134
+#: gcc.c:1218
#, c-format
msgid "incomplete `%s' option"
msgstr "option « %s » est incomplète"
-#: gcc.c:1145
+#: gcc.c:1229
#, c-format
msgid "missing argument to `%s' option"
msgstr "argument manquant à l'option « %s »"
-#: gcc.c:1158
+#: gcc.c:1242
#, c-format
msgid "extraneous argument to `%s' option"
msgstr "argument superflu à l'option « %s »"
-#: gcc.c:1486
+#: gcc.c:1563
msgid "Using built-in specs.\n"
msgstr "Utilisation des specs internes.\n"
-#: gcc.c:1667
+#: gcc.c:1748
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
@@ -5425,42 +5131,42 @@ msgstr ""
"Initialisation des spec %s à « %s »\n"
"\n"
-#: gcc.c:1774
+#: gcc.c:1850
#, c-format
msgid "Reading specs from %s\n"
msgstr "Lecture des spécification à partir de %s\n"
-#: gcc.c:1872 gcc.c:1891
+#: gcc.c:1946 gcc.c:1965
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
msgstr "syntaxe des specs %%include mal composée après %ld caractères"
-#: gcc.c:1899
+#: gcc.c:1973
#, c-format
msgid "could not find specs file %s\n"
msgstr "ne peut repérer le fichiers des specs %s\n"
-#: gcc.c:1916 gcc.c:1924 gcc.c:1933 gcc.c:1942
+#: gcc.c:1990 gcc.c:1998 gcc.c:2007 gcc.c:2016
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
msgstr "specs de la syntaxe %%rename mal composées après %ld caractères"
-#: gcc.c:1951
+#: gcc.c:2025
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr "specs de la spécification %s n'a pas été trouvé pour être renommer"
-#: gcc.c:1958
+#: gcc.c:2032
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
-msgstr ""
+msgstr "%s: tentative pour renommner la spécification « %s » à un spécification « %s » déjà définie"
-#: gcc.c:1963
+#: gcc.c:2037
#, c-format
msgid "rename spec %s to %s\n"
msgstr "renommé les specs %s à %s\n"
-#: gcc.c:1965
+#: gcc.c:2039
#, c-format
msgid ""
"spec is '%s'\n"
@@ -5469,25 +5175,25 @@ msgstr ""
"spec est « %s »\n"
"\n"
-#: gcc.c:1978
+#: gcc.c:2052
#, c-format
msgid "specs unknown %% command after %ld characters"
msgstr "specs inconnus de la commande %% après %ld caractères"
-#: gcc.c:1989 gcc.c:2002
+#: gcc.c:2063 gcc.c:2076
#, c-format
msgid "specs file malformed after %ld characters"
msgstr "fichier de specs mal composé après %ld caractères"
-#: gcc.c:2056
+#: gcc.c:2129
msgid "spec file has no spec for linking"
msgstr "fichier de specs n'a pas de spécification pour l'édition de liens"
-#: gcc.c:2554
+#: gcc.c:2634
msgid "-pipe not supported"
msgstr "-pipe n'est pas supporté"
-#: gcc.c:2609
+#: gcc.c:2696
msgid ""
"\n"
"Go ahead? (y or n) "
@@ -5495,7 +5201,7 @@ msgstr ""
"\n"
"Aller de l'avant? (y ou n) "
-#: gcc.c:2735
+#: gcc.c:2822
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -5506,69 +5212,69 @@ msgstr ""
"SVP soumettre un rapport complet d'anomalies.\n"
"Consulter %s pour les instructions."
-#: gcc.c:2753
+#: gcc.c:2840
#, c-format
msgid "# %s %.2f %.2f\n"
msgstr "# %s %.2f %.2f\n"
-#: gcc.c:2883
+#: gcc.c:2973
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr "Usage: %s [options] fichier...\n"
-#: gcc.c:2884
+#: gcc.c:2974
msgid "Options:\n"
msgstr "Options:\n"
-#: gcc.c:2886
+#: gcc.c:2976
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
msgstr " -pass-exit-codes quitter avec le plus grand code d'erreur de la phase\n"
-#: gcc.c:2887
+#: gcc.c:2977
msgid " --help Display this information\n"
msgstr " --help afficher l'aide mémoire\n"
-#: gcc.c:2888
+#: gcc.c:2978
msgid " --target-help Display target specific command line options\n"
msgstr " --target-help afficher les options spécifiques de la ligne de commande\n"
-#: gcc.c:2890
+#: gcc.c:2980
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr " (Utiliser «-v --help» pour afficher les options de la ligne de commande des sous-processus)\n"
-#: gcc.c:2891
+#: gcc.c:2981
msgid " -dumpspecs Display all of the built in spec strings\n"
msgstr " -dumpspecs afficher tous les construits des chaînes de specs\n"
-#: gcc.c:2892
+#: gcc.c:2982
msgid " -dumpversion Display the version of the compiler\n"
msgstr " -dumpversion afficher la version du compilateur\n"
-#: gcc.c:2893
+#: gcc.c:2983
msgid " -dumpmachine Display the compiler's target processor\n"
msgstr " -dumpmachine afficher le processeur ciblé par le compilateur\n"
-#: gcc.c:2894
+#: gcc.c:2984
msgid " -print-search-dirs Display the directories in the compiler's search path\n"
msgstr " -print-search-dirs afficher les répertoires du chemin de recherche du compiltateur\n"
-#: gcc.c:2895
+#: gcc.c:2985
msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n"
msgstr " -print-libgcc-file-name afficher le nom de la bibliothèque compagne du compilateur\n"
-#: gcc.c:2896
+#: gcc.c:2986
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
msgstr " -print-file-name=<lib> afficher le chemin d'accès complet vers la bibliothèque <lib>\n"
-#: gcc.c:2897
+#: gcc.c:2987
msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n"
msgstr " -print-prog-name=<prog> afficher le chemin d'accès complet vers le composant du compilateur <prog>\n"
-#: gcc.c:2898
+#: gcc.c:2988
msgid " -print-multi-directory Display the root directory for versions of libgcc\n"
msgstr " -print-multi-directory afficher la racine du répertoire des version libgcc\n"
-#: gcc.c:2899
+#: gcc.c:2989
msgid ""
" -print-multi-lib Display the mapping between command line options and\n"
" multiple library search directories\n"
@@ -5577,97 +5283,103 @@ msgstr ""
" la ligne de commande et les multiples répertoires de\n"
" recherches des bibliothèques\n"
-#: gcc.c:2902
-#, fuzzy
+#: gcc.c:2992
msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
-msgstr " -print-multi-directory afficher la racine du répertoire des version libgcc\n"
+msgstr " -print-multi-os-directory afficher le chemin relatif du répertoire vers les librairies de l'OS\n"
-#: gcc.c:2903
+#: gcc.c:2993
msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n"
msgstr " -Wa,<options> passer les <options> séparées par des virgules à l'assembleur\n"
-#: gcc.c:2904
+#: gcc.c:2994
msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n"
msgstr " -Wp,<options> passer les <options> séparées par des virgules au préprocesseur\n"
-#: gcc.c:2905
+#: gcc.c:2995
msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n"
msgstr " -Wl,<options> passer les <options> séparées par des virgules à l'éditeur de liens\n"
-#: gcc.c:2906
+#: gcc.c:2996
+msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
+msgstr " -Xassembler <arg> passer l'<arg>ument à l'assembleur\n"
+
+#: gcc.c:2997
+msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
+msgstr " -Xpreprocessor <arg> passer l'<arg>ument au pré-processeur\n"
+
+#: gcc.c:2998
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
msgstr " -Xlinker <argument> passer l'<argument> à l'éditeur de liens\n"
-#: gcc.c:2907
+#: gcc.c:2999
msgid " -save-temps Do not delete intermediate files\n"
msgstr " -save-temps ne pas détruire les fichiers intermédiaires\n"
-#: gcc.c:2908
+#: gcc.c:3000
msgid " -pipe Use pipes rather than intermediate files\n"
msgstr " -pipe utiliser des pipes au lieu de fichiers intermédiares\n"
-#: gcc.c:2909
+#: gcc.c:3001
msgid " -time Time the execution of each subprocess\n"
msgstr " -time mesurer le temps d'exécution de chaque sous-processus\n"
-#: gcc.c:2910
+#: gcc.c:3002
msgid " -specs=<file> Override built-in specs with the contents of <file>\n"
msgstr " -specs=<fichier> écraser les specs internes à l'aide du contenu du <fichier>\n"
-#: gcc.c:2911
+#: gcc.c:3003
msgid " -std=<standard> Assume that the input sources are for <standard>\n"
msgstr " -std=<standard> Présumer que les fichiers sources respectent le <standard>\n"
-#: gcc.c:2912
+#: gcc.c:3004
msgid " -B <directory> Add <directory> to the compiler's search paths\n"
msgstr " -B <répertoire> ajouter le <répertoire> aux chemins de recherche du compilateur\n"
-#: gcc.c:2913
+#: gcc.c:3005
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr " -b <machine> exécuter gcc pour la <machine> cible, si installé\n"
-#: gcc.c:2914
+#: gcc.c:3006
msgid " -V <version> Run gcc version number <version>, if installed\n"
msgstr " -V <version> exécuter le numéro de <version> de gcc, si installée\n"
-#: gcc.c:2915
+#: gcc.c:3007
msgid " -v Display the programs invoked by the compiler\n"
msgstr " -v afficher les programmes invoqués par le compilateur\n"
-#: gcc.c:2916
+#: gcc.c:3008
msgid " -### Like -v but options quoted and commands not executed\n"
msgstr " -### identique à -v mais les options et les commandes entre guillemets ne sont pas exécutées\n"
-#: gcc.c:2917
+#: gcc.c:3009
msgid " -E Preprocess only; do not compile, assemble or link\n"
msgstr " -E pré-traiter seulement; ne pas compiler, assembler ou éditer les liens\n"
-#: gcc.c:2918
+#: gcc.c:3010
msgid " -S Compile only; do not assemble or link\n"
msgstr " -S compiler seulement; ne pas assembler ou éditer les liens\n"
-#: gcc.c:2919
+#: gcc.c:3011
msgid " -c Compile and assemble, but do not link\n"
msgstr " -S compiler et assembler, mais ne pas éditer les liens\n"
-#: gcc.c:2920
+#: gcc.c:3012
msgid " -o <file> Place the output into <file>\n"
msgstr " -o <fichier> placer la sortie dans le <fichier>\n"
-#: gcc.c:2921
-#, fuzzy
+#: gcc.c:3013
msgid ""
" -x <language> Specify the language of the following input files\n"
" Permissible languages include: c c++ assembler none\n"
" 'none' means revert to the default behavior of\n"
" guessing the language based on the file's extension\n"
msgstr ""
-" -x <langage> spécifier le langage des fichiers d'entrée parmi les\n"
-" langages permis: c c++ assembler none\n"
+" -x <langage> spécifier le langage des fichiers suivants d'entrée\n"
+" Les langages permis sont: c c++ assembler none\n"
" « none » signifiant d'utiliser le comportement par défaut\n"
" en tentant d'identifier le langage par l'extension du fichier\n"
-#: gcc.c:2928
+#: gcc.c:3020
#, c-format
msgid ""
"\n"
@@ -5680,28 +5392,23 @@ msgstr ""
" passés aux divers sous-processus invoqués par %s. Afin de passer\n"
" les autres options à ces processus l'option -W<lettre> doit être utilisé.\n"
-#: gcc.c:3063
+#: gcc.c:3141
#, c-format
msgid "`-%c' option must have argument"
msgstr "l'option « -%c » requière un argument"
-#: gcc.c:3085
+#: gcc.c:3163
#, c-format
msgid "couldn't run `%s': %s"
msgstr "impossible d'exécuter « %s » : %s"
#. translate_options () has turned --version into -fversion.
-#: gcc.c:3262
+#: gcc.c:3349
#, c-format
msgid "%s (GCC) %s\n"
msgstr "%s (GCC) %s\n"
-#: gcc.c:3263
-#, fuzzy
-msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
-msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
-
-#: gcc.c:3265 gcov.c:364
+#: gcc.c:3352
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -5711,62 +5418,66 @@ msgstr ""
"GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.\n"
"\n"
-#: gcc.c:3366
+#: gcc.c:3453
msgid "argument to `-Xlinker' is missing"
msgstr "argument de «-Xlinker» est manquant"
-#: gcc.c:3374
+#: gcc.c:3461
+msgid "argument to `-Xpreprocessor' is missing"
+msgstr "argument de « -Xpreprocessor » est manquant"
+
+#: gcc.c:3468
+msgid "argument to `-Xassembler' is missing"
+msgstr "argument de « -Xassembler » est manquant"
+
+#: gcc.c:3475
msgid "argument to `-l' is missing"
-msgstr "argument pour «-l» est manquant"
+msgstr "argument pour « -l » est manquant"
-#: gcc.c:3391
+#: gcc.c:3491
msgid "argument to `-specs' is missing"
-msgstr "argument de «-specs» est manquant"
+msgstr "argument de « -specs » est manquant"
-#: gcc.c:3406
+#: gcc.c:3505
msgid "argument to `-specs=' is missing"
msgstr "argument de «-specs=» est manquant"
-#: gcc.c:3436
+#: gcc.c:3542
#, c-format
msgid "`-%c' must come at the start of the command line"
-msgstr ""
+msgstr "« -%c » doit apparaître au début de la ligne de commande"
-#: gcc.c:3445
+#: gcc.c:3551
msgid "argument to `-B' is missing"
-msgstr "argument de «-B» est manquant"
-
-#: gcc.c:3618
-msgid "cannot specify -o with -c or -S and multiple compilations"
-msgstr "ne peut spécifier -o avec -c ou -S et de multiples compilations"
+msgstr "argument de « -B » est manquant"
-#: gcc.c:3791
+#: gcc.c:3728
msgid "warning: -pipe ignored because -save-temps specified"
msgstr "AVERTISSEMENT: -pipe ignoré parce que -save-temps a été spécifié"
-#: gcc.c:3795
+#: gcc.c:3732
msgid "warning: -pipe ignored because -time specified"
msgstr "AVERTISSEMENT: -pipe ignoré parce que -time a été spécifié"
-#: gcc.c:3807
+#: gcc.c:3944
msgid "argument to `-x' is missing"
-msgstr "argument pour «-x» est manquant"
+msgstr "argument pour « -x » est manquant"
-#: gcc.c:3835
+#: gcc.c:3972
#, c-format
msgid "argument to `-%s' is missing"
-msgstr "argument pour «-%s» est manquant"
+msgstr "argument pour « -%s » est manquant"
-#: gcc.c:3896
+#: gcc.c:4033
#, c-format
msgid "warning: `-x %s' after last input file has no effect"
-msgstr "AVERTISSEMENT: «-x %s» après le dernier fichier d'entrée n'a pas d'effet"
+msgstr "AVERTISSEMENT: « -x %s » après le dernier fichier d'entrée n'a pas d'effet"
-#: gcc.c:4241
+#: gcc.c:4434
msgid "invalid specification! Bug in cc"
msgstr "spécification invalide! Bug dans cc."
-#: gcc.c:4395
+#: gcc.c:4588
#, c-format
msgid "%s\n"
msgstr "%s\n"
@@ -5774,76 +5485,79 @@ msgstr "%s\n"
#. 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:4955
+#: gcc.c:5092
#, c-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
-msgstr "échec du spec: « %%* » n'a pas été initialisé par concordance du patron"
+msgstr "échec du spec: « %%* » n'a pas été initialisé par concordance du canevas"
-#: gcc.c:4964
+#: gcc.c:5101
#, c-format
msgid "warning: use of obsolete %%[ operator in specs"
msgstr "AVERTISSEMENT: utilisation obsolète de l'opérateur %%[ dans les specs"
-#: gcc.c:4982
+#: gcc.c:5119
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr "Traitement du spec %c%s%c, lequel est « %s »\n"
-#: gcc.c:5107
+#: gcc.c:5182
#, c-format
msgid "spec failure: unrecognized spec option '%c'"
msgstr "échec de spec: option « %c » de spec non reconnue"
-#: gcc.c:5188
-#, fuzzy, c-format
+#: gcc.c:5261
+#, c-format
msgid "unknown spec function `%s'"
-msgstr "Dans la fonction « %s »:"
+msgstr "spécification de fonction inconnue « %s »:"
-#: gcc.c:5207
-#, fuzzy, c-format
+#: gcc.c:5280
+#, c-format
msgid "error in args to spec function `%s'"
-msgstr "trop d'arguments pour la fonction « %s »"
+msgstr "ERREUR d'arguments pour la spécification de fonction « %s »"
-#: gcc.c:5256
-#, fuzzy
+#: gcc.c:5328
msgid "malformed spec function name"
-msgstr "le transtypage spécifie le type de fonction"
+msgstr "nom de spécification de fonction mal composé"
#. )
-#: gcc.c:5259
-#, fuzzy
+#: gcc.c:5331
msgid "no arguments for spec function"
-msgstr "trop peu d'arguments pour la fonction"
+msgstr "aucun argument pour la spécification de fonction"
-#: gcc.c:5278
+#: gcc.c:5350
msgid "malformed spec function arguments"
-msgstr ""
+msgstr "arguments de spécification de fonction mal composés"
-#: gcc.c:5386
-msgid "mismatched braces in specs"
-msgstr "accolades non concordantes dans les specs"
+#: gcc.c:6076
+msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC."
+msgstr "échec de spécification: plus d'un argument à SYSROOT_SUFFIX_SPEC."
-#: gcc.c:6081
+#: gcc.c:6086
+msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC."
+msgstr "échec de spécification: plus d'un argument à SYSROOT_HEADERS_SUFFIX_SPEC."
+
+#: gcc.c:6179
#, c-format
msgid "unrecognized option `-%s'"
-msgstr "option «-%s» non reconnue"
+msgstr "option « -%s » non reconnue"
-#: gcc.c:6087
+#: gcc.c:6185
#, c-format
msgid "install: %s%s\n"
msgstr "installés: %s%s\n"
-#: gcc.c:6088
+#: gcc.c:6186
#, c-format
msgid "programs: %s\n"
msgstr "programmes: %s\n"
-#: gcc.c:6089
+#: gcc.c:6187
#, c-format
msgid "libraries: %s\n"
msgstr "libraries: %s\n"
-#: gcc.c:6146
+#: gcc.c:6244
+#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
@@ -5851,54 +5565,58 @@ msgstr ""
"\n"
"Pour les instructons afin de rapporter des anomales, SVP consulter:\n"
-#: gcc.c:6162
+#: gcc.c:6260
#, c-format
msgid "Configured with: %s\n"
msgstr "Configuré avec: %s\n"
-#: gcc.c:6176
+#: gcc.c:6274
#, c-format
msgid "Thread model: %s\n"
msgstr "Modèle de thread: %s\n"
-#: gcc.c:6187
+#: gcc.c:6285
#, c-format
msgid "gcc version %s\n"
msgstr "version gcc %s\n"
-#: gcc.c:6189
+#: gcc.c:6287
#, c-format
msgid "gcc driver version %s executing gcc version %s\n"
msgstr "version du pilote gcc %s exécutant le version %s de gcc\n"
-#: gcc.c:6197
+#: gcc.c:6295
msgid "no input files"
msgstr "pas de fichier à l'entrée"
-#: gcc.c:6235
-#, c-format
-msgid "%s: %s compiler not installed on this system"
-msgstr "%s: %s compilateur n'est pas installé sur ce système"
-
-#: gcc.c:6310
+#: gcc.c:6317 gcc.c:6436
#, c-format
msgid "%s: linker input file unused because linking not done"
msgstr "%s: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite"
-#: gcc.c:6353
+#: gcc.c:6320
+msgid "cannot specify -o with -c or -S and multiple languages"
+msgstr "ne peut spécifier -o avec -c ou -S et de multiples langages"
+
+#: gcc.c:6355
+#, c-format
+msgid "%s: %s compiler not installed on this system"
+msgstr "%s: %s compilateur n'est pas installé sur ce système"
+
+#: gcc.c:6476
#, c-format
msgid "language %s not recognized"
msgstr "language %s n'est pas reconnu"
-#: gcc.c:6456
+#: gcc.c:6573
msgid "internal gcc abort"
msgstr "abandon interne de gcc"
-#: gcov.c:325
+#: gcov.c:384
msgid "Internal gcov abort.\n"
msgstr "Abandon interne de gcov.\n"
-#: gcov.c:338
+#: gcov.c:397
msgid ""
"Usage: gcov [OPTION]... SOURCEFILE\n"
"\n"
@@ -5906,7 +5624,7 @@ msgstr ""
"Usage: gcov [OPTION]... FICHIER-SOURCE\n"
"\n"
-#: gcov.c:339
+#: gcov.c:398
msgid ""
"Print code coverage information.\n"
"\n"
@@ -5914,19 +5632,23 @@ msgstr ""
"Produire les informations de la couverture du code.\n"
"\n"
-#: gcov.c:340
+#: gcov.c:399
msgid " -h, --help Print this help, then exit\n"
msgstr " -h, --help afficher l'aide mémoire\n"
-#: gcov.c:341
+#: gcov.c:400
msgid " -v, --version Print version number, then exit\n"
msgstr " -v, --version exécuter le numéro de <version> de gcc, si installée\n"
-#: gcov.c:342
+#: gcov.c:401
+msgid " -a, --all-blocks Show information for every basic block\n"
+msgstr " -a, --all-blocks afficher l'information pour chaque bloc de base\n"
+
+#: gcov.c:402
msgid " -b, --branch-probabilities Include branch probabilities in output\n"
msgstr " -b, --branch-probabilities inclure les probabilités de branchement dans la sortie\n"
-#: gcov.c:343
+#: gcov.c:403
msgid ""
" -c, --branch-counts Given counts of branches taken\n"
" rather than percentages\n"
@@ -5934,11 +5656,11 @@ msgstr ""
" -c, --branch-counts donner le décompte de branchements pris\n"
" plutôt que les pourcentages\n"
-#: gcov.c:345
+#: gcov.c:405
msgid " -n, --no-output Do not create an output file\n"
msgstr " -n, --no-output ne créer de fichier de sortie\n"
-#: gcov.c:346
+#: gcov.c:406
msgid ""
" -l, --long-file-names Use long output file names for included\n"
" source files\n"
@@ -5946,20 +5668,23 @@ msgstr ""
" -l, --long-file-names utiliser des longs noms de fichiers pour\n"
" les fichier sources d'inclusion\n"
-#: gcov.c:348
+#: gcov.c:408
msgid " -f, --function-summaries Output summaries for each function\n"
msgstr " -f, --function-summaries produire un sommaire pour chaque fonction\n"
-#: gcov.c:349
-#, fuzzy
+#: gcov.c:409
msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
-msgstr " -o, --object-directory RÉP rechercher les fichiers objets dans le RÉPertoire\n"
+msgstr " -o, --object-directory RÉP|FICHIERS rechercher les fichiers objets dans le RÉPertoire ou appellés FICHIERS\n"
-#: gcov.c:350
+#: gcov.c:410
msgid " -p, --preserve-paths Preserve all pathname components\n"
-msgstr ""
+msgstr " -p, --preserve-paths préserver tous les composants des chemins d'accès\n"
+
+#: gcov.c:411
+msgid " -u, --unconditional-branches Show unconditional branch counts too\n"
+msgstr " -u, --unconditional-branches afficher les compteurs de branchement inconditionnel aussi\n"
-#: gcov.c:351
+#: gcov.c:412
#, c-format
msgid ""
"\n"
@@ -5970,476 +5695,370 @@ msgstr ""
"Pour les instructons afin de rapporter des anomales, SVP consulter:\n"
"%s.\n"
-#: gcov.c:361
+#: gcov.c:422
#, c-format
msgid "gcov (GCC) %s\n"
msgstr "gcov (GCC) %s\n"
-#: gcov.c:362
-msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
-msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
-
-#: gcov.c:500
-#, c-format
-msgid "Could not open basic block file %s.\n"
-msgstr "Ne pourrait pas ouvrir le fichier de blocs de base %s.\n"
+#: gcov.c:423
+msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2003 Free Software Foundation, Inc.\n"
-#: gcov.c:507
-#, c-format
-msgid "Could not open program flow graph file %s.\n"
-msgstr "Ne pourrait pas ouvrir le fichier de flux du programm %s.\n"
+#: gcov.c:425
+msgid ""
+"This is free software; see the source for copying conditions.\n"
+"There is NO warranty; not even for MERCHANTABILITY or \n"
+"FITNESS FOR A PARTICULAR PURPOSE.\n"
+"\n"
+msgstr ""
+"Ce logiciel est libre; voir les sources pour les conditions de copie. \n"
+"Il n'y a PAS GARANTIE; ni implicite pour le MARCHANDAGE ou\n"
+"pour un BUT PARTICULIER.\n"
+"\n"
-#: gcov.c:524
+#: gcov.c:515
#, c-format
-msgid "Could not open data file %s.\n"
-msgstr "Ne pourrait pas ouvrir le fichier de données %s.\n"
+msgid "%s:no functions found\n"
+msgstr "%s: aucune fonction repérée\n"
-#: gcov.c:525
-msgid "Assuming that all execution counts are zero.\n"
-msgstr "Suppose que tous les compteurs d'exécution sont à zéro.\n"
+# I18N
+#: gcov.c:536 gcov.c:564
+msgid "\n"
+msgstr "\n"
-#: gcov.c:534
+#: gcov.c:551
#, c-format
-msgid "No executable code associated with file %s.\n"
-msgstr "Aucun code exécutable associé avec le fichier %s.\n"
-
-#: gcov.c:1186
-#, fuzzy, c-format
-msgid "%s of %d lines executed in %s %s\n"
-msgstr "%6.2f%% de lignes sources %d exécutés dans le fichier %s\n"
-
-#: gcov.c:1191
-#, fuzzy, c-format
-msgid "No executable lines in %s %s\n"
-msgstr "Pas de ligne exécutable dans le fichier %s\n"
-
-#: gcov.c:1198
-#, fuzzy, c-format
-msgid "%s of %d branches executed in %s %s\n"
-msgstr "%6.2f%% de branchements %d exécutés dans le fichier %s\n"
-
-#: gcov.c:1203
-#, fuzzy, c-format
-msgid "%s of %d branches taken at least once in %s %s\n"
-msgstr "%6.2f%% de branchements %d pris au moins une fois dans le fichier %s\n"
-
-#: gcov.c:1209
-#, fuzzy, c-format
-msgid "No branches in %s %s\n"
-msgstr "Pas de branchement dans le fichier %s\n"
+msgid "%s:creating `%s'\n"
+msgstr "%s: création de « %s »\n"
-#: gcov.c:1211
-#, fuzzy, c-format
-msgid "%s of %d calls executed in %s %s\n"
-msgstr "%6.2f%% d'appels %d exécutés dans le fichier %s\n"
-
-#: gcov.c:1216
-#, fuzzy, c-format
-msgid "No calls in %s %s\n"
-msgstr "Pas d'appel dans le fichier %s\n"
-
-#: gcov.c:1351
+#: gcov.c:555
#, c-format
-msgid "didn't use all bb entries of graph, function %s\n"
-msgstr "N'a pas utiliser toutes les entrées bb du graphe, fonction %s\n"
+msgid "%s:error writing output file `%s'\n"
+msgstr "%s: ERREUR d'écriture dans le fichier de sortie « %s ».\n"
-#: gcov.c:1353
+#: gcov.c:560
#, c-format
-msgid "block_num = %ld, num_blocks = %d\n"
-msgstr "block_num = %ld, num_blocks = %d\n"
+msgid "%s:could not open output file `%s'\n"
+msgstr "%s: ne peut ouvrir le fichier de sortie « %s ».\n"
-#: gcov.c:1367
+#: gcov.c:711
#, c-format
-msgid "ERROR: unexpected line number %ld\n"
-msgstr "ERREUR : ligne numéro %ld inattendue\n"
+msgid "%s:cannot open graph file\n"
+msgstr "%s: ne peut ouvrir le fichier de graphe\n"
-#: gcov.c:1383
+#: gcov.c:717
#, c-format
-msgid "ERROR: too many basic blocks in function %s\n"
-msgstr "ERREUR : trop de blocs de base dans la fonction %s\n"
-
-#: gcov.c:1398
-#, fuzzy, c-format
-msgid "ERROR: out of range line number in function %s\n"
-msgstr "Pas de lignes sources exécutables dans la fonction %s\n"
+msgid "%s:not a gcov graph file\n"
+msgstr "%s: n'est pas un fichier de graphe gcov\n"
-#: gcov.c:1470
+#: gcov.c:730
#, c-format
-msgid "Could not open source file %s.\n"
-msgstr "N'a pu ouvrir le fichier source %s.\n"
+msgid "%s:version `%.4s', prefer `%.4s'\n"
+msgstr "%s:version « %.4s », préfère « %.4s »\n"
-#: gcov.c:1480
+#: gcov.c:782
#, c-format
-msgid "Warning: source file %s is newer than %s\n"
-msgstr "Attention : le fichier source %s est plus récent que %s\n"
+msgid "%s:already seen blocks for `%s'\n"
+msgstr "%s:blocs déjà vus pour « %s »\n"
-#: gcov.c:1510
+#: gcov.c:903 gcov.c:1062
#, c-format
-msgid "Unexpected EOF while reading source file %s.\n"
-msgstr "EOF inattendue lors de la lecture du fichier source %s.\n"
+msgid "%s:corrupted\n"
+msgstr "%s:corrompu\n"
-# FIXME: c'est de l'assembleur ?
-#: gcov.c:1532
+#: gcov.c:976
#, c-format
-msgid "call %2d never executed\n"
-msgstr "call %2d n'est jamais été exécuté\n"
-
-#: gcov.c:1535
-#, fuzzy, c-format
-msgid "call %2d returns %s\n"
-msgstr "appel %d a retourné = %s\n"
-
-#: gcov.c:1543
-#, fuzzy, c-format
-msgid "branch %2d never executed\n"
-msgstr "branchement %d n'a jamais été exécuté\n"
-
-#: gcov.c:1546
-#, fuzzy, c-format
-msgid "branch %2d taken %s\n"
-msgstr "branchement %d a pris = %s\n"
+msgid "%s:cannot open data file\n"
+msgstr "%s: ne peut ouvrir le fichier de données\n"
-#: gcov.c:1610
+#: gcov.c:981
#, c-format
-msgid "Creating %s.\n"
-msgstr "Création de %s.\n"
+msgid "%s:not a gcov data file\n"
+msgstr "%s: n'est pas un fichier de données gcov\n"
-#: gcov.c:1613
-#, fuzzy, c-format
-msgid "Error writing output file %s.\n"
-msgstr "erreur d'écriture dans %s"
-
-#: gcov.c:1618
+#: gcov.c:994
#, c-format
-msgid "Could not open output file %s.\n"
-msgstr "N'a pu ouvrir le fichier d'entrée %s.\n"
+msgid "%s:version `%.4s', prefer version `%.4s'\n"
+msgstr "%s:version « %.4s », préfère la version « %.4s »\n"
-#: gcse.c:763
+#: gcov.c:1000
#, c-format
-msgid "GCSE disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block"
-msgstr "GCSE désactivé: %d > 1000 blocs de base et %d >= 20 blocs edges/basic"
+msgid "%s:stamp mismatch with graph file\n"
+msgstr "%s: estampille ne concorde par avec le fichier de graphe\n"
-#: gcse.c:775
+#: gcov.c:1026
#, c-format
-msgid "GCSE disabled: %d basic blocks and %d registers"
-msgstr "GCSE désactivé: %d vlocs de base et %d registres"
+msgid "%s:unknown function `%u'\n"
+msgstr "%s: fonction inconnue « %u »\n"
-#: genautomata.c:1490
+#: gcov.c:1039
#, c-format
-msgid "Name `%s' contains quotes"
-msgstr ""
-
-#: genautomata.c:1621
-#, fuzzy, c-format
-msgid "invalid string `%s' in define_cpu_unit"
-msgstr "ponctuation invalide « %c » dans la contrainte"
+msgid "%s:profile mismatch for `%s'\n"
+msgstr "%s: profile ne concorde pas pour « %s »\n"
-#: genautomata.c:1650
+#: gcov.c:1062
#, c-format
-msgid "invalid string `%s' in define_query_cpu_unit"
-msgstr ""
-
-#: genautomata.c:1682 genautomata.c:1685
-#, fuzzy, c-format
-msgid "invalid string `%s' in define_bypass"
-msgstr "utilisation invalide d'un type indéfini «%s %s»"
+msgid "%s:overflowed\n"
+msgstr "%s: débordement\n"
-#: genautomata.c:1720
-#, fuzzy, c-format
-msgid "invalid first string `%s' in exclusion_set"
-msgstr "ponctuation invalide « %c » dans la contrainte"
-
-#: genautomata.c:1724
-#, fuzzy, c-format
-msgid "invalid second string `%s' in exclusion_set"
-msgstr "ponctuation invalide « %c » dans la contrainte"
+#: gcov.c:1085
+#, c-format
+msgid "%s:`%s' lacks entry and/or exit blocks\n"
+msgstr "%s:« %s » manque de blocs d'entrée et/ou de sortie\n"
-#: genautomata.c:1760
+#: gcov.c:1090
#, c-format
-msgid "invalid first string `%s' in presence_set"
-msgstr ""
+msgid "%s:`%s' has arcs to entry block\n"
+msgstr "%s:« %s » possède des arcs vers un bloc d'entrée\n"
-#: genautomata.c:1764
-#, fuzzy, c-format
-msgid "invalid second string `%s' in presence_set"
-msgstr "séquence de contrôle invalide"
+#: gcov.c:1098
+#, c-format
+msgid "%s:`%s' has arcs from exit block\n"
+msgstr "%s:« %s » possèdes des arcs à partir du bloc de sortie\n"
-#: genautomata.c:1800
+#: gcov.c:1306
#, c-format
-msgid "invalid first string `%s' in absence_set"
-msgstr ""
+msgid "%s:graph is unsolvable for `%s'\n"
+msgstr "%s: graphe n'a pas de solution pour « %s »\n"
-#: genautomata.c:1804
+#: gcov.c:1386
#, c-format
-msgid "invalid second string `%s' in absence_set"
-msgstr ""
+msgid "%s `%s'\n"
+msgstr "%s « %s »\n"
-#: genautomata.c:1837
+#: gcov.c:1389
#, c-format
-msgid "invalid string `%s' in define_automaton"
-msgstr ""
+msgid "Lines executed:%s of %d\n"
+msgstr "Lignes exécutées: %s de %d\n"
-#: genautomata.c:1868
-#, fuzzy, c-format
-msgid "invalid option `%s' in automata_option"
-msgstr "ponctuation invalide « %c » dans la contrainte"
+#: gcov.c:1393
+msgid "No executable lines"
+msgstr "Auncue ligne exécutable"
-#: genautomata.c:1890
+#: gcov.c:1399
#, c-format
-msgid "garbage after ) in reservation `%s'"
-msgstr ""
-
-#: genautomata.c:1921 genautomata.c:1954 genautomata.c:1981
-#, fuzzy, c-format
-msgid "invalid `%s' in reservation `%s'"
-msgstr "redéclaration invalide de « %D »"
+msgid "Branches executed:%s of %d\n"
+msgstr "Branchements exécutés: %s de %d\n"
-#: genautomata.c:1932
+#: gcov.c:1403
#, c-format
-msgid "repetition `%s' <= 1 in reservation `%s'"
-msgstr ""
+msgid "Taken at least once:%s of %d\n"
+msgstr "Branchements pris au moins une fois: %s de %d\n"
-#: genautomata.c:2425
-#, fuzzy, c-format
-msgid "unit `%s' in exclusion is not declared"
-msgstr "« %s » n'est pas déclaré"
+#: gcov.c:1409
+msgid "No branches\n"
+msgstr "Pas de branchement\n"
-#: genautomata.c:2427
+#: gcov.c:1411
#, c-format
-msgid "`%s' in exclusion is not unit"
-msgstr ""
+msgid "Calls executed:%s of %d\n"
+msgstr "Appels exécutés: %s de %d\n"
-#: genautomata.c:2465
-#, fuzzy, c-format
-msgid "unit `%s' excludes itself"
-msgstr "largeur de « %s » excède son type"
+#: gcov.c:1415
+msgid "No calls\n"
+msgstr "Pas d'appel\n"
-#: genautomata.c:2473
+#: gcov.c:1556
#, c-format
-msgid "units `%s' and `%s' in exclusion set belong to different automata"
-msgstr ""
+msgid "%s:no lines for `%s'\n"
+msgstr "%s: pas de ligne pour « %s »\n"
-#: genautomata.c:2603 genautomata.c:2609
+#: gcov.c:1751
#, c-format
-msgid "unit `%s' excludes and requires presence of `%s'"
-msgstr ""
+msgid "call %2d returned %s\n"
+msgstr "appel %2d a retourné %s\n"
-#: genautomata.c:2623 genautomata.c:2629
+# FIXME: c'est de l'assembleur ?
+#: gcov.c:1756
#, c-format
-msgid "unit `%s' requires absence and presence of `%s'"
-msgstr ""
-
-#: genautomata.c:2692 genautomata.c:2695
-#, fuzzy, c-format
-msgid "repeated declaration of automaton `%s'"
-msgstr "duplication de déclaration de la méthode de classe « %s »"
+msgid "call %2d never executed\n"
+msgstr "call %2d n'est jamais été exécuté\n"
-#: genautomata.c:2711
+#: gcov.c:1761
#, c-format
-msgid "define_insn_reservation `%s' has negative latency time"
-msgstr ""
-
-#: genautomata.c:2717
-#, fuzzy, c-format
-msgid "`%s' is already used as insn reservation name"
-msgstr "« %D » est déjà déclaré dans cette portée"
+msgid "branch %2d taken %s%s\n"
+msgstr "branchement %2d a pris %s%s\n"
-#: genautomata.c:2723
+#: gcov.c:1765
#, c-format
-msgid "define_bypass `%s - %s' has negative latency time"
-msgstr ""
-
-#: genautomata.c:2737
-#, fuzzy, c-format
-msgid "automaton `%s' is not declared"
-msgstr "« %s » n'est pas déclaré"
+msgid "branch %2d never executed\n"
+msgstr "branchement %2d n'a jamais été exécuté\n"
-#: genautomata.c:2747
+#: gcov.c:1770
#, c-format
-msgid "define_unit `%s' without automaton when one defined"
-msgstr ""
-
-#: genautomata.c:2753
-#, fuzzy, c-format
-msgid "`%s' is declared as cpu unit"
-msgstr "champ « %s » déclaré comme une fonction"
-
-#: genautomata.c:2762
-#, fuzzy, c-format
-msgid "`%s' is declared as cpu reservation"
-msgstr "« %D » déclaré comme un ami"
-
-#: genautomata.c:2772
-#, fuzzy, c-format
-msgid "repeated declaration of unit `%s'"
-msgstr "redéclaration de « %s »"
-
-#: genautomata.c:2775
-#, fuzzy, c-format
-msgid "repeated declaration of reservation `%s'"
-msgstr "duplication de déclaration de la méthode de classe « %s »"
-
-#: genautomata.c:2790 genautomata.c:2793
-#, fuzzy, c-format
-msgid "there is no insn reservation `%s'"
-msgstr "qu'une précédente déclaratio « %F »"
+msgid "unconditional %2d taken %s\n"
+msgstr "inconditionnel %2d a pris %s\n"
-#: genautomata.c:2810 genautomata.c:2815
-#, fuzzy, c-format
-msgid "the same bypass `%s - %s' is already defined"
-msgstr "#pragma %s %s est déjà enregistré"
+# FIXME: c'est de l'assembleur ?
+#: gcov.c:1773
+#, c-format
+msgid "unconditional %2d never executed\n"
+msgstr "inconditionnel %2d n'a jamais été exécuté\n"
-#: genautomata.c:2820
-#, fuzzy, c-format
-msgid "bypass `%s - %s' is already defined"
-msgstr "#pragma %s %s est déjà enregistré"
+#: gcov.c:1805
+#, c-format
+msgid "%s:cannot open source file\n"
+msgstr "%s: ne peut ouvrir le fichier source\n"
-#: genautomata.c:2925 genautomata.c:2927
-#, fuzzy, c-format
-msgid "automaton `%s' is not used"
-msgstr "mode de %s n'est pas un mode"
+#: gcov.c:1815
+#, c-format
+msgid "%s:source file is newer than graph file `%s'\n"
+msgstr "%s: fichier source est plus récent que le fichier graphe « %s »\n"
-#: genautomata.c:2950
-#, fuzzy, c-format
-msgid "undeclared unit or reservation `%s'"
-msgstr "identificateur « %s » non déclaré"
+#. Return if there's nothing to do, or it is too expensive.
+#: gcse.c:747
+msgid "GCSE disabled"
+msgstr "GCSE désactivé"
-#: genautomata.c:3028 genautomata.c:3030
-#, fuzzy, c-format
-msgid "unit `%s' is not used"
-msgstr "« %s » défini mais n'a pas été utilisé"
+#: gcse.c:6108
+msgid "NULL pointer checks disabled"
+msgstr "vérification des pointeurs NULS désactivée"
-#: genautomata.c:3035 genautomata.c:3037
-#, fuzzy, c-format
-msgid "reservation `%s' is not used"
-msgstr "déclaration faible de « %s » n'est pas supportée"
+#. Return if there's nothing to do, or it is too expensive.
+#: gcse.c:7994
+msgid "jump bypassing disabled"
+msgstr "saut d'évitement désactivé"
-#: genautomata.c:3134
-#, fuzzy, c-format
-msgid "cycle in definition of reservation `%s'"
-msgstr "redéfinition de «union %s'"
+#: gcse.c:8055
+#, c-format
+msgid "%s: %d basic blocks and %d edges/basic block"
+msgstr "%s: %d blocs de base et %d blocs edges/basic"
-#: genautomata.c:5333
+#: gcse.c:8068
#, c-format
-msgid "Units `%s' and `%s' should be in the same automaton"
-msgstr ""
+msgid "%s: %d basic blocks and %d registers"
+msgstr "%s: %d blocs basic et %d registres"
-#: genautomata.c:9441
-#, fuzzy
-msgid "-split has no argument."
-msgstr "pas d'argument"
+#: ggc-common.c:398 ggc-common.c:406 ggc-common.c:487 ggc-common.c:507
+#: ggc-page.c:2030 ggc-page.c:2062 ggc-page.c:2069 ggc-zone.c:1361
+#: ggc-zone.c:1367 ggc-zone.c:1372 ggc-zone.c:1379
+#, c-format
+msgid "can't write PCH file: %m"
+msgstr "ne peut écrire le fichier PCH: %m"
-#: genautomata.c:9442
-#, fuzzy
-msgid "option `-split' has not been implemented yet\n"
-msgstr "profilage n'est pas implanté encore"
+#: ggc-common.c:500
+#, c-format
+msgid "can't get position in PCH file: %m"
+msgstr "ne peut obtenir la position dans le fichier PCH: %m"
-#: genautomata.c:9486 genautomata.c:9491
+#: ggc-common.c:510
#, c-format
-msgid "Automaton `%s': Insn `%s' will never be issued"
-msgstr ""
+msgid "can't write padding to PCH file: %m"
+msgstr "ne peut écrire de remplissage dans le fichier PCH: %m"
-#: genautomata.c:9498 genautomata.c:9501
+#: ggc-common.c:563 ggc-common.c:571 ggc-common.c:578 ggc-common.c:581
+#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2157 ggc-zone.c:1389
#, c-format
-msgid "Insn `%s' will never be issued"
-msgstr ""
+msgid "can't read PCH file: %m"
+msgstr "ne peut lire le fichier PCH: %m"
-#: genautomata.c:9649
-#, fuzzy
-msgid "Errors in DFA description"
-msgstr "aucune description encore"
+#: ggc-common.c:681
+msgid "had to relocate PCH"
+msgstr "a dû relocaliser PCH"
-#: genautomata.c:9732
-#, fuzzy, c-format
-msgid "Error in writing DFA description file %s"
-msgstr "erreur d'écriture dans %s"
+#: ggc-page.c:1325
+#, c-format
+msgid "open /dev/zero: %m"
+msgstr "ouverture de /dev/zero: %m"
-#: genconditions.c:196
-#, fuzzy
-msgid "No input file name."
-msgstr "pas de fichier à l'entrée"
+#: ggc-page.c:2047 ggc-page.c:2053
+msgid "can't write PCH file"
+msgstr "ne peut écrire dans le fichier PCH"
-#: ggc-page.c:1265
-msgid "open /dev/zero"
-msgstr ""
+#: ggc-simple.c:506
+msgid "Generating PCH files is not supported when using ggc-simple.c"
+msgstr "Génération des ficheirs PCH n'est pas supporté lors de l'utilisation de ggc-simple.c"
-#: graph.c:420 profile.c:1204 profile.c:1211 toplev.c:1836 toplev.c:5168
-#: f/com.c:14210 java/jcf-parse.c:917 java/jcf-parse.c:1063 java/lex.c:1776
-#: objc/objc-act.c:449
+#: global.c:356 global.c:369 global.c:383
#, c-format
-msgid "can't open %s"
-msgstr "ne peut ouvrir %s"
+msgid "%s cannot be used in asm here"
+msgstr "%s ne peut être utilisé dans asm ici"
+
+#: graph.c:403 toplev.c:1481 toplev.c:4408 f/com.c:14202 java/jcf-parse.c:883
+#: java/jcf-parse.c:1030 java/lex.c:1828 objc/objc-act.c:503
+#, c-format
+msgid "can't open %s: %m"
+msgstr "ne peut ouvrir %s: %m"
#: haifa-sched.c:196
#, c-format
msgid "fix_sched_param: unknown param: %s"
msgstr "fix_sched_param: paramètre inconnu: %s"
-#: integrate.c:174
+#: integrate.c:166
msgid "function cannot be inline"
-msgstr "fonction ne pas pas être en ligne"
+msgstr "fonction ne pas pas être enligne"
-#: integrate.c:178
+#: integrate.c:170
msgid "varargs function cannot be inline"
-msgstr "varargs de fonction ne peuvent par être en ligne"
+msgstr "varargs de fonction ne peuvent par être enligne"
-#: integrate.c:181
+#: integrate.c:173
msgid "function using alloca cannot be inline"
-msgstr "fonction utilisant alloca ne pas pas être en ligne"
+msgstr "fonction utilisant alloca ne pas pas être enligne"
-#: integrate.c:184
+#: integrate.c:176
+msgid "function using longjmp cannot be inline"
+msgstr "fonction utilisant longjmp ne peut pas être enligne"
+
+#: integrate.c:179
msgid "function using setjmp cannot be inline"
-msgstr "fonction utilisant setjmp ne pas pas être en ligne"
+msgstr "fonction utilisant setjmp ne peut pas être enligne"
-#: integrate.c:187
+#: integrate.c:182
msgid "function uses __builtin_eh_return"
msgstr "fonction utilise « __builtin_eh_return »"
-#: integrate.c:190
+#: integrate.c:185
msgid "function with nested functions cannot be inline"
-msgstr "fonction avec fonctions imbriquées ne peut pas être en ligne"
+msgstr "fonction avec fonctions imbriquées ne peut pas être enligne"
-#: integrate.c:194
+#: integrate.c:189
msgid "function with label addresses used in initializers cannot inline"
-msgstr "un fonction avec étiquette d'adresses utilisée pour l'initialisation ne peut pas être en-ligne (inline)"
+msgstr "un fonction avec étiquette d'adresses utilisée pour l'initialisation ne peut pas être enligne (inline)"
-#: integrate.c:201 integrate.c:245
+#: integrate.c:196 integrate.c:240
msgid "function too large to be inline"
-msgstr "fonction trop grande pour être en ligne"
+msgstr "fonction trop grande pour être enligne"
-#: integrate.c:211
+#: integrate.c:206
msgid "no prototype, and parameter address used; cannot be inline"
-msgstr "pas de prototpe, et de adresse de paramètre utilisée; ne peut pas être en ligne"
+msgstr "pas de prototpe, et de adresse de paramètre utilisée; ne peut pas être enligne"
-#: integrate.c:218 integrate.c:263
+#: integrate.c:213 integrate.c:258
msgid "inline functions not supported for this return value type"
-msgstr "fonctions en ligne ne peuvent pas être supportées pour ce type de valeur retournée"
+msgstr "fonctions enligne ne peuvent pas être supportées pour ce type de valeur retournée"
-#: integrate.c:223
+#: integrate.c:218
msgid "function with varying-size return value cannot be inline"
-msgstr "fonction avec une valeur retournée de taille variable ne peut pas être en ligne"
+msgstr "fonction avec une valeur retournée de taille variable ne peut pas être enligne"
-#: integrate.c:230
+#: integrate.c:225
msgid "function with varying-size parameter cannot be inline"
-msgstr "fonction avec un paramètre de taille variable ne peut pas être en ligne"
+msgstr "fonction avec un paramètre de taille variable ne peut pas être enligne"
-#: integrate.c:233
+#: integrate.c:228
msgid "function with transparent unit parameter cannot be inline"
-msgstr "fonction avec une unité transparente de paramètre ne peut pas être en ligne"
+msgstr "fonction avec une unité transparente de paramètre ne peut pas être enligne"
-#: integrate.c:252
+#: integrate.c:247
msgid "function with computed jump cannot inline"
-msgstr "fonction avec un saut calculé ne peut pas être en ligne"
+msgstr "fonction avec un saut calculé ne peut pas être enligne"
-#: integrate.c:256
+#: integrate.c:251
msgid "function with nonlocal goto cannot be inline"
-msgstr "fonction avec un goto non local ne peut pas être en ligne"
+msgstr "fonction avec un goto non local ne peut pas être enligne"
-#: integrate.c:270
+#: integrate.c:265
msgid "function with target specific attribute(s) cannot be inlined"
-msgstr "fonction avec des attributs spécifiques à la cible ne peut pas être en ligne"
+msgstr "fonction avec des attributs spécifiques à la cible ne peut pas être enligne"
+
+# FIXME: c'est de l'assembleur ?
+#: jump.c:1896
+msgid "%Hwill never be executed"
+msgstr "%Hne sera jamais exécuté"
-#: line-map.c:198
+#: line-map.c:202
#, c-format
msgid "In file included from %s:%u"
msgstr "Dans le fichier inclus à partir de %s:%u"
@@ -6456,7 +6075,7 @@ msgstr "Dans le fichier inclus à partir de %s:%u"
#. with all the "from"s lined up.
#. The trailing comma is at the beginning of this message,
#. and the trailing colon is not translated.
-#: line-map.c:216
+#: line-map.c:220
#, c-format
msgid ""
",\n"
@@ -6465,63 +6084,156 @@ msgstr ""
",\n"
" à partir de %s:%u"
+#. What to print when a switch has no documentation.
+#: opts.c:149
+msgid "This switch lacks documentation"
+msgstr "Cette option manque de documentation"
+
+#. Eventually this should become a hard error IMO.
+#: opts.c:318
+#, c-format
+msgid "command line option \"%s\" is valid for %s but not for %s"
+msgstr "l'option de la ligne de commande \"%s\" est valide pour %s mais pas pour %s"
+
+#: opts.c:406
+#, c-format
+msgid "missing argument to \"%s\""
+msgstr "argument manquant à \"%s\""
+
+#: opts.c:416
+#, c-format
+msgid "argument to \"%s\" should be a non-negative integer"
+msgstr "argument de \"%s\" doit être un entier non négatif"
+
+#: opts.c:463
+#, c-format
+msgid "unrecognized command line option \"%s\""
+msgstr "option \"%s\" de la ligne de commande non reconnue"
+
+#: opts.c:646
+msgid "-Wuninitialized is not supported without -O"
+msgstr "-Wuninitialized n'est pas supporté sans -O"
+
+#: opts.c:1350
+#, c-format
+msgid "unrecognized register name \"%s\""
+msgstr "nom de registre non reconnue \"%s\""
+
+#: opts.c:1394
+#, c-format
+msgid "unknown tls-model \"%s\""
+msgstr "tls-model \"%s\" inconnu"
+
+#: opts.c:1450
+msgid "-fwritable-strings is deprecated; see documentation for details"
+msgstr "-fwritable-strings est obsolète, voir la documentation pour les détails"
+
+#: opts.c:1534
+#, c-format
+msgid "%s: --param arguments should be of the form NAME=VALUE"
+msgstr "%s: arguments de --param devrait être de la forme NOM=VALEUR"
+
+#: opts.c:1539
+#, c-format
+msgid "invalid --param value `%s'"
+msgstr "valeur de --param invalide « %s »"
+
+#: opts.c:1635
+msgid "target system does not support debug output"
+msgstr "le ssytème cible ne supporte pas la sortie pour mise au point"
+
+#: opts.c:1642
+#, c-format
+msgid "debug format \"%s\" conflicts with prior selection"
+msgstr "le format de mise au point \"%s\" entre en conflit avec une sélection précédente"
+
+#: opts.c:1658
+#, c-format
+msgid "unrecognised debug output level \"%s\""
+msgstr "niveau de sortie de mise au point non reconnu \"%s\""
+
+#: opts.c:1660
+#, c-format
+msgid "debug output level %s is too high"
+msgstr "niveau de sortie de mise au point %s est trop élevé"
+
+#: opts.c:1679
+msgid "The following options are language-independent:\n"
+msgstr "Les options suivantes sont indépendantes du langage:\n"
+
+#: opts.c:1686
+#, c-format
+msgid ""
+"The %s front end recognizes the following options:\n"
+"\n"
+msgstr ""
+"L'interface %s reconnaît les options suivantes:\n"
+"\n"
+
+#: opts.c:1700
+msgid "The --param option recognizes the following as parameters:\n"
+msgstr "L'option --param reconnaît les paramètres suivant:\n"
+
#. If we didn't find this parameter, issue an error message.
-#: params.c:80
+#: params.c:76
#, c-format
msgid "invalid parameter `%s'"
msgstr "paramètre invalide « %s »"
-#: profile.c:397
-#, c-format
-msgid "Profile does not match flowgraph of function %s (out of date?)"
-msgstr ""
+#: profile.c:288
+msgid "corrupted profile info: run_max * runs < sum_max"
+msgstr "profile info corrompu: run_max * runs < sum_max"
-#: profile.c:400
-#, fuzzy
-msgid ".da file corrupted"
-msgstr "Le contenu du fichier .da n'a pas été épuisé"
+#: profile.c:294
+msgid "corrupted profile info: sum_all is smaller than sum_max"
+msgstr "info profile corrompu: sum_all est plus petit que sum_max"
-#: profile.c:634
+#: profile.c:336
#, c-format
-msgid "corrupted profile info: prob for %d-%d thought to be %d"
-msgstr "info de profilage corrompu: prob pour %d-%d pense être %d "
+msgid "corrupted profile info: edge from %i to %i exceeds maximal count"
+msgstr "info de profilage corrompu: bordure (edge) %i à %i excède le compte maximal"
-#: profile.c:1226
+#: profile.c:499
#, c-format
-msgid "file %s not found, execution counts assumed to be zero"
-msgstr "fichier %s non repéré, compteur d'exécution assumé être à zéro"
+msgid "corrupted profile info: number of iterations for basic block %d thought to be %i"
+msgstr "info de profilage corrompu: nombre d'itérations pour un bloc basic %d devrait être %i"
-#: protoize.c:542
+#: profile.c:526
+#, c-format
+msgid "corrupted profile info: number of executions for edge %d-%d thought to be %i"
+msgstr "info de profilage corrompu: nombre d'exécutions pour bordures (edge) %d-%d devrait être %i"
+
+#: protoize.c:534
#, c-format
msgid "%s: internal abort\n"
msgstr "%s: abandon interne\n"
-#: protoize.c:633
+#: protoize.c:592
#, c-format
msgid "%s: error writing file `%s': %s\n"
msgstr "%s: erreur d'écriture au fichier « %s »: %s\n"
-#: protoize.c:678
+#: protoize.c:636
#, c-format
msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
-msgstr "%s: usage «%s [ -VqfnkN ] [ -i <chaîne> ] [ nom-de-fichier ... ]»\n"
+msgstr "%s: usage « %s [ -VqfnkN ] [ -i <chaîne> ] [ nom-de-fichier ... ] »\n"
-#: protoize.c:681
+#: protoize.c:639
#, c-format
msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
-msgstr "%s: usage «%s [ -VqfnkNlgC ] [ -B <répertoire> ] [ nom-de-fichier ... ]»\n"
+msgstr "%s: usage « %s [ -VqfnkNlgC ] [ -B <répertoire> ] [ nom-de-fichier ... ] »\n"
-#: protoize.c:788
+#: protoize.c:745
#, c-format
msgid "%s: warning: no read access for file `%s'\n"
msgstr "%s: AVERTISSEMENT: aucun accès en lecture du fichier « %s »\n"
-#: protoize.c:796
+#: protoize.c:753
#, c-format
msgid "%s: warning: no write access for file `%s'\n"
msgstr "%s: AVERTISSEMENT: aucun accès en écriture du fichier « %s »\n"
-#: protoize.c:804
+#: protoize.c:761
#, c-format
msgid "%s: warning: no write access for dir containing `%s'\n"
msgstr "%s: AVERTISSEMENT: aucun accès en écriture du répertoire contenant « %s »\n"
@@ -6529,17 +6241,17 @@ msgstr "%s: AVERTISSEMENT: aucun accès en écriture du répertoire contenant « %s
#. Catch cases like /.. where we try to backup to a
#. point above the absolute root of the logical file
#. system.
-#: protoize.c:1222
+#: protoize.c:1148
#, c-format
msgid "%s: invalid file name: %s\n"
msgstr "%s: nom de fichier invalide: %s\n"
-#: protoize.c:1374
+#: protoize.c:1296
#, c-format
msgid "%s: %s: can't get status: %s\n"
msgstr "%s: %s: ne peut obtenir l'état: %s\n"
-#: protoize.c:1395
+#: protoize.c:1317
#, c-format
msgid ""
"\n"
@@ -6548,137 +6260,137 @@ msgstr ""
"\n"
"%s: erreur fatale: fichier auxiliaire d'infos à la ligne %d\n"
-#: protoize.c:1731
+#: protoize.c:1646
#, c-format
msgid "%s:%d: declaration of function `%s' takes different forms\n"
msgstr "%s:%d: déclaration de fonction « %s » prend différentes formes\n"
-#: protoize.c:1989
+#: protoize.c:1901
#, c-format
msgid "%s: compiling `%s'\n"
msgstr "%s: en compilation « %s »\n"
-#: protoize.c:2012
+#: protoize.c:1924
#, c-format
msgid "%s: wait: %s\n"
msgstr "%s: en attente: %s\n"
-#: protoize.c:2017
+#: protoize.c:1929
#, c-format
msgid "%s: subprocess got fatal signal %d\n"
msgstr "%s: sous-processus a reçu le signal fatal %d\n"
-#: protoize.c:2025
+#: protoize.c:1937
#, c-format
msgid "%s: %s exited with status %d\n"
msgstr "%s: %s a terminé avec le statut %d\n"
-#: protoize.c:2077
+#: protoize.c:1986
#, c-format
msgid "%s: warning: missing SYSCALLS file `%s'\n"
msgstr "%s: AVERTISSEMENT: fichier des SYSCALLS « %s » est manquant\n"
-#: protoize.c:2086 protoize.c:2115
+#: protoize.c:1995 protoize.c:2024
#, c-format
msgid "%s: can't read aux info file `%s': %s\n"
msgstr "%s: ne peut lire le fichier auxiliaire d'infos « %s »: %s\n"
-#: protoize.c:2131 protoize.c:2159
+#: protoize.c:2040 protoize.c:2068
#, c-format
msgid "%s: can't get status of aux info file `%s': %s\n"
msgstr "%s: ne peut obtenir l'état du fichier auxiliaire d'infos « %s »: %s\n"
-#: protoize.c:2187
+#: protoize.c:2096
#, c-format
msgid "%s: can't open aux info file `%s' for reading: %s\n"
msgstr "%s: ne peut ouvrir le fichier auxiliaire d'infos « %s » en lecture: %s\n"
-#: protoize.c:2205
+#: protoize.c:2114
#, c-format
msgid "%s: error reading aux info file `%s': %s\n"
msgstr "%s: erreur lors de la lecture du fichier auxilaire d'infos « %s »: %s\n"
-#: protoize.c:2218
+#: protoize.c:2127
#, c-format
msgid "%s: error closing aux info file `%s': %s\n"
msgstr "%s: erreur lors de la fermeture du fichier auxiliaire d'infos « %s »: %s\n"
-#: protoize.c:2234
+#: protoize.c:2143
#, c-format
msgid "%s: can't delete aux info file `%s': %s\n"
msgstr "%s: ne peut détruire le fichier auxiliaire d'infos « %s »: %s\n"
-#: protoize.c:2316 protoize.c:4318
+#: protoize.c:2225 protoize.c:4195
#, c-format
msgid "%s: can't delete file `%s': %s\n"
msgstr "%s: ne peut détruire le fichier « %s »: %s\n"
-#: protoize.c:2395
+#: protoize.c:2303
#, c-format
msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
msgstr "%s: AVERTISSEMENT: ne peut renommer le fichier « %s » à « %s »: %s\n"
-#: protoize.c:2520
+#: protoize.c:2425
#, c-format
msgid "%s: conflicting extern definitions of '%s'\n"
msgstr "%s: définitions externes conflictuelles de « %s »\n"
-#: protoize.c:2524
+#: protoize.c:2429
#, c-format
msgid "%s: declarations of '%s' will not be converted\n"
msgstr "%s: déclarations de « %s » ne seront pas converties\n"
-#: protoize.c:2526
+#: protoize.c:2431
#, c-format
msgid "%s: conflict list for '%s' follows:\n"
msgstr "%s: liste conflictuelle pour « %s » suit:\n"
-#: protoize.c:2559
+#: protoize.c:2464
#, c-format
msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
msgstr "%s: AVERTISSEMENT: using la liste des formels de %s(%d) pour la fonction « %s »\n"
-#: protoize.c:2599
+#: protoize.c:2504
#, c-format
msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
msgstr "%s: %d: « %s » utilisé mais manquant dans les SYSCALLS\n"
-#: protoize.c:2605
+#: protoize.c:2510
#, c-format
msgid "%s: %d: warning: no extern definition for `%s'\n"
msgstr "%s: %d: AVERTISSEMENT: pas de définition externe pour « %s »\n"
-#: protoize.c:2636
+#: protoize.c:2540
#, c-format
msgid "%s: warning: no static definition for `%s' in file `%s'\n"
msgstr "%s: AVERTISSEMENT: pas de définition statique pour « %s » dans le fichier« %s »\n"
-#: protoize.c:2642
+#: protoize.c:2546
#, c-format
msgid "%s: multiple static defs of `%s' in file `%s'\n"
msgstr "%s: multiples définitions statiques de « %s » dans le fichier « %s »\n"
-#: protoize.c:2815 protoize.c:2818
+#: protoize.c:2716 protoize.c:2719
#, c-format
msgid "%s: %d: warning: source too confusing\n"
msgstr "%s: %d: AVERTISSEMENT: trop de confusions dans le source\n"
-#: protoize.c:3024
+#: protoize.c:2915
#, c-format
msgid "%s: %d: warning: varargs function declaration not converted\n"
msgstr "%s: %d: AVERTISSEMENT: déclaration de varargs de fonction non convertis\n"
-#: protoize.c:3039
+#: protoize.c:2930
#, c-format
msgid "%s: declaration of function `%s' not converted\n"
msgstr "%s: déclaration de la fonction « %s » non convertie\n"
-#: protoize.c:3162
+#: protoize.c:3053
#, c-format
msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
msgstr "%s: AVERTISSEMENT: trop de paramètres de listes dans la déclaration de « %s »\n"
-#: protoize.c:3183
+#: protoize.c:3074
#, c-format
msgid ""
"\n"
@@ -6687,17 +6399,17 @@ msgstr ""
"\n"
"%s: AVERTISSEMENT: trop peu de paramètres de listes dans la déclaration de « %s »\n"
-#: protoize.c:3281
+#: protoize.c:3170
#, c-format
msgid "%s: %d: warning: found `%s' but expected `%s'\n"
msgstr "%s: %d: AVERTISSEMENT: a obtenu « %s » mais attendait « %s »\n"
-#: protoize.c:3459
+#: protoize.c:3345
#, c-format
msgid "%s: local declaration for function `%s' not inserted\n"
msgstr "%s: déclaration locale pour la fonction « %s » n'a pas été insérée\n"
-#: protoize.c:3486
+#: protoize.c:3372
#, c-format
msgid ""
"\n"
@@ -6706,64 +6418,64 @@ msgstr ""
"\n"
"%s: %d: AVERTISSEMENT: ne peut ajouter une déclaration de « %s » dans l'appel macro\n"
-#: protoize.c:3560
+#: protoize.c:3444
#, c-format
msgid "%s: global declarations for file `%s' not inserted\n"
msgstr "%s: déclarations globale du fichier « %s » n'ont pas été insérées\n"
-#: protoize.c:3651 protoize.c:3681
+#: protoize.c:3533 protoize.c:3563
#, c-format
msgid "%s: definition of function `%s' not converted\n"
msgstr "%s: définition de la fonction « %s » n'a pas été convertie\n"
-#: protoize.c:3670
+#: protoize.c:3552
#, c-format
msgid "%s: %d: warning: definition of %s not converted\n"
msgstr "%s: %d: AVERTISSEMENT: définition de %s n'a pas été convertie\n"
-#: protoize.c:4000
+#: protoize.c:3878
#, c-format
msgid "%s: found definition of `%s' at %s(%d)\n"
msgstr "%s: définition de « %s » trouvé à %s(%d)\n"
#. If we make it here, then we did not know about this
#. function definition.
-#: protoize.c:4016
+#: protoize.c:3894
#, c-format
msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
msgstr "%s: %d: AVERTISSEMENT: « %s » exclu par le préprocesseur\n"
-#: protoize.c:4019
+#: protoize.c:3897
#, c-format
msgid "%s: function definition not converted\n"
msgstr "%s: définition de fonction n'a pas été convertie\n"
-#: protoize.c:4078
+#: protoize.c:3955
#, c-format
msgid "%s: `%s' not converted\n"
msgstr "%s: « %s » n'a pas été converti\n"
-#: protoize.c:4086
+#: protoize.c:3963
#, c-format
msgid "%s: would convert file `%s'\n"
msgstr "%s: devrait convertir le fichier « %s »\n"
-#: protoize.c:4089
+#: protoize.c:3966
#, c-format
msgid "%s: converting file `%s'\n"
msgstr "%s: conversion du fichier « %s »\n"
-#: protoize.c:4099
+#: protoize.c:3976
#, c-format
msgid "%s: can't get status for file `%s': %s\n"
msgstr "%s: ne peut obtenur l'état du fichier « %s »: %s\n"
-#: protoize.c:4141
+#: protoize.c:4018
#, c-format
msgid "%s: can't open file `%s' for reading: %s\n"
msgstr "%s: ne peut ouvrir le fichier « %s » en lecture: %s\n"
-#: protoize.c:4156
+#: protoize.c:4033
#, c-format
msgid ""
"\n"
@@ -6772,401 +6484,430 @@ msgstr ""
"\n"
"%s: erreur de lecture du fichier d'entrée « %s »: %s\n"
-#: protoize.c:4190
+#: protoize.c:4067
#, c-format
msgid "%s: can't create/open clean file `%s': %s\n"
msgstr "%s: ne peut créer/ouvrir un fichier propre « %s »: %s\n"
-#: protoize.c:4295
+#: protoize.c:4172
#, c-format
msgid "%s: warning: file `%s' already saved in `%s'\n"
msgstr "%s: AVERTISSEMENT: fichier « %s » est déjà sauvegardé dans « %s »\n"
-#: protoize.c:4303
+#: protoize.c:4180
#, c-format
msgid "%s: can't link file `%s' to `%s': %s\n"
msgstr "%s: ne peut lier le fichier « %s » à « %s »: %s\n"
-#: protoize.c:4333
+#: protoize.c:4210
#, c-format
msgid "%s: can't create/open output file `%s': %s\n"
msgstr "%s: ne peut créer/ouvrier le fichier de sortie « %s »: %s\n"
-#: protoize.c:4366
+#: protoize.c:4243
#, c-format
msgid "%s: can't change mode of file `%s': %s\n"
msgstr "%s: ne peut changer le mode du fichier « %s »: %s\n"
-#: protoize.c:4541
+#: protoize.c:4416
#, c-format
msgid "%s: cannot get working directory: %s\n"
msgstr "%s: ne peut repérer le répertoire de travail: %s\n"
-#: protoize.c:4639
+#: protoize.c:4514
#, c-format
msgid "%s: input file names must have .c suffixes: %s\n"
msgstr "%s: noms de fichiers d'entrée doivent avoir le suffixe .c: %s\n"
#: ra.c:750
msgid "Didn't find a coloring.\n"
-msgstr ""
+msgstr "N'a pas repéré une coloration.\n"
-#: reg-stack.c:673
+#: reg-stack.c:665
#, c-format
msgid "output constraint %d must specify a single register"
msgstr "Contrainte de sortie %d doit spécifier un simple registre"
-#: reg-stack.c:683
+#: reg-stack.c:675
#, c-format
msgid "output constraint %d cannot be specified together with \"%s\" clobber"
msgstr "contrainte de sortie %d ne doit pas être spécifié avec « %s » clobber"
-#: reg-stack.c:706
+#: reg-stack.c:698
msgid "output regs must be grouped at top of stack"
msgstr "registres de sortie doivent être regroupés au haut de la pile"
-#: reg-stack.c:743
+#: reg-stack.c:735
msgid "implicitly popped regs must be grouped at top of stack"
msgstr "les registres implicitement dépilés doivent être groupés au haut de la pile"
-#: reg-stack.c:762
+#: reg-stack.c:754
#, c-format
msgid "output operand %d must use `&' constraint"
-msgstr "opérande de sortie %d doit utiliser la contrainte «&»"
+msgstr "opérande de sortie %d doit utiliser la contrainte « & »"
-#: regclass.c:756
+#: regclass.c:743
#, c-format
msgid "can't use '%s' as a %s register"
msgstr "ne peut utiliser « %s » comme le registre %s"
-#: regclass.c:771 config/ia64/ia64.c:4304 config/ia64/ia64.c:4311
+#: regclass.c:758 config/ia64/ia64.c:4640 config/ia64/ia64.c:4647
#, c-format
msgid "unknown register name: %s"
msgstr "nom de registre inconnu: %s"
-#: regclass.c:782
+#: regclass.c:768
msgid "global register variable follows a function definition"
msgstr "variable registre globale suit la définition d'une fonction"
-#: regclass.c:786
+#: regclass.c:772
msgid "register used for two global register variables"
msgstr "registre utilisé pour deux variables registres globales"
-#: regclass.c:791
+#: regclass.c:777
msgid "call-clobbered register used for global register variable"
msgstr "registre maltraité par un appel utilisé par un variable registre globale"
-#: regrename.c:1899
+#: regrename.c:1846
#, c-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr "validate_value_data: [%u] next_regno erroné pour une chaîne vide (%u)"
-#: regrename.c:1911
+#: regrename.c:1858
#, c-format
msgid "validate_value_data: Loop in regno chain (%u)"
msgstr "validate_value_data: boucle dans la chaîne regno (%u)"
-#: regrename.c:1914
+#: regrename.c:1861
#, c-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr "validate_value_data: [%u] oldest_regno erroné (%u)"
-#: regrename.c:1926
+#: regrename.c:1873
#, c-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr "validate_value_data: [%u] registre non vide dans la chaîne (%s %u %i)"
-#: reload.c:1229
+#: reload.c:1254
msgid "cannot reload integer constant operand in `asm'"
msgstr "ne peut recharger l'opérande de constante entière dans « asm »"
-#: reload.c:1251
+#: reload.c:1276
msgid "impossible register constraint in `asm'"
msgstr "impossible de contraindre les registres en « asm »"
-#: reload.c:3461
+#: reload.c:3489
msgid "`&' constraint used with no register class"
-msgstr "contrainte «&» utilisé sans classe registre"
+msgstr "contrainte « & » utilisé sans classe registre"
-#: reload.c:3629
+#: reload.c:3657
msgid "unable to generate reloads for:"
msgstr "incapable de générer des recharges pour:"
-#: reload.c:3630 reload.c:3844
+#: reload.c:3658 reload.c:3872
msgid "inconsistent operand constraints in an `asm'"
msgstr "contrainte d'opérande inconsistente en « asm »"
-#: reload1.c:1250
+#: reload1.c:1212
msgid "frame size too large for reliable stack checking"
msgstr "taille de trame trop grande pour une vérification fiable de la pile"
-#: reload1.c:1253
+#: reload1.c:1215
msgid "try reducing the number of local variables"
msgstr "essayer de réduire le nombre de variables locales"
-#: reload1.c:1909
+#: reload1.c:1868
#, c-format
msgid "can't find a register in class `%s' while reloading `asm'"
msgstr "ne peut repérer un registre dans la classe « %s » durant le rechargement «asm »"
-#: reload1.c:1913
+#: reload1.c:1872
#, c-format
msgid "unable to find a register to spill in class `%s'"
msgstr "incapable de trouver un registre de déversement dans la classe « %s »"
-#: reload1.c:1915
+#: reload1.c:1874
msgid "this is the insn:"
msgstr "ceci est le insn:"
-#: reload1.c:3938
+#: reload1.c:3871
msgid "`asm' operand requires impossible reload"
msgstr "opérande « asm » requiert une recharge impossible"
#. It's the compiler's fault.
-#: reload1.c:5052
+#: reload1.c:4963
msgid "could not find a spill register"
msgstr "ne peut repérer un registre de déversement"
-#: reload1.c:5057
+#: reload1.c:4968
msgid "`asm' operand constraint incompatible with operand size"
msgstr "contrainte de l'opérande « asm » incompatible avec la taille de l'opérande"
#. It's the compiler's fault.
-#: reload1.c:6679
+#: reload1.c:6590
msgid "VOIDmode on an output"
msgstr "mode VOID sur une sortie"
-#: reload1.c:6680
+#: reload1.c:6591
msgid "output operand is constant in `asm'"
msgstr "opérande de sortie est une constante dans « asm »"
-#: rtl-error.c:140
+#: rtl-error.c:124
msgid "unrecognizable insn:"
msgstr "insn non reconnaissable:"
-#: rtl-error.c:142
+#: rtl-error.c:126
msgid "insn does not satisfy its constraints:"
msgstr "insn ne satisfait pas à ses contraintes:"
-#: rtl.c:535
+#: rtl.c:477
#, c-format
msgid "RTL check: access of elt %d of `%s' with last elt %d in %s, at %s:%d"
msgstr "vérification RTL: accès de elt %d de « %s » avec le dernier elt %d dans %s, à %s:%d"
-#: rtl.c:550
+#: rtl.c:487
#, c-format
msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
msgstr "vérification RTL: attendu elt %d de type « %c », a « %c » (rtx %s) dans %s, à %s:%d"
-#: rtl.c:566
+#: rtl.c:497
#, c-format
msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d"
msgstr "vérification RTL: attendu elt %d de type « %c » ou « %c », a « %c » (rtx %s) dans %s, à %s:%d"
-#: rtl.c:579
+#: rtl.c:506
#, c-format
msgid "RTL check: expected code `%s', have `%s' in %s, at %s:%d"
msgstr "vérification RTL: code attendu « %s », a « %s » dans %s, à %s:%d"
-#: rtl.c:593
+#: rtl.c:516
#, c-format
msgid "RTL check: expected code `%s' or `%s', have `%s' in %s, at %s:%d"
msgstr "vérification RTL: code attendu « %s » ou « %s », a « %s » dans %s, à %s:%d"
-#: rtl.c:608
+#: rtl.c:527
#, c-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
msgstr "vérification RTL: accès de elt %d du vecteur avec le dernier elt %d dans %s, à %s:%d"
-#: rtl.c:623
-#, fuzzy, c-format
+#: rtl.c:538
+#, c-format
msgid "RTL flag check: %s used with unexpected rtx code `%s' in %s, at %s:%d"
-msgstr "vérification RTL: code attendu « %s », a « %s » dans %s, à %s:%d"
+msgstr "vérification du fanion RTL: %s utilisé avec un code rtx inattendu, « %s » dans %s, à %s:%d"
-#: stmt.c:766
+#: stmt.c:750
#, c-format
msgid "jump to `%s' invalidly jumps into binding contour"
-msgstr "saut vers « %s » saute de manière invalide dans un contour de binding"
+msgstr "saut vers « %s » saute de manière invalide dans un contour de liaison"
-#: stmt.c:1002 stmt.c:3766
-#, c-format
-msgid "label `%s' used before containing binding contour"
-msgstr "étiquette « %s » utilisé avant de contenir le contour de binding"
+#: stmt.c:977 stmt.c:3793
+msgid "%Jlabel '%D' used before containing binding contour"
+msgstr "%Jétiquette « %D » utilisé avant de contenir le contour de liaison"
-#: stmt.c:1190
+#: stmt.c:1156
msgid "output operand constraint lacks `='"
-msgstr "contrainte de sortie de l'opérande manque «=»"
+msgstr "contrainte de sortie de l'opérande manque « = »"
-#: stmt.c:1205
+#: stmt.c:1171
#, c-format
msgid "output constraint `%c' for operand %d is not at the beginning"
msgstr "contrainte de sortie « %c » pour l'opérande %d n'est pas au début"
-#: stmt.c:1227
+#: stmt.c:1193
msgid "operand constraint contains incorrectly positioned '+' or '='"
-msgstr "contrainte de l'opérande contient «+» ou «-» incorrectement positionné"
+msgstr "contrainte de l'opérande contient « + » ou « - » incorrectement positionné"
-#: stmt.c:1233 stmt.c:1337
+#: stmt.c:1199 stmt.c:1301
#, c-format
msgid "`%%' constraint used with last operand"
-msgstr "contrainte «%%» utilisée avec la dernière opérande"
+msgstr "contrainte « %% » utilisée avec la dernière opérande"
-#: stmt.c:1252
+#: stmt.c:1218
msgid "matching constraint not valid in output operand"
msgstr "contrainte concordante n'est pas valide dans une opérande de sortie"
-#: stmt.c:1328
+#: stmt.c:1260
+msgid "read-write constraint does not allow a register"
+msgstr "contrainte de lecture-éccriture ne permet pas de registre"
+
+#: stmt.c:1292
#, c-format
msgid "input operand constraint contains `%c'"
msgstr "contrainte d'entrée de l'opérande contient « %c »"
-#: stmt.c:1368
+#: stmt.c:1334
msgid "matching constraint references invalid operand number"
msgstr "nombre d'opérandes invalides pour références de containte concordantes"
-#: stmt.c:1400
+#: stmt.c:1372
#, c-format
msgid "invalid punctuation `%c' in constraint"
msgstr "ponctuation invalide « %c » dans la contrainte"
-#: stmt.c:1450
-#, fuzzy, c-format
+#: stmt.c:1396
+msgid "matching constraint does not allow a register"
+msgstr "contrainte de concordance ne permet pas de reigstre"
+
+#: stmt.c:1424
+#, c-format
msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
-msgstr "le qualificateur du type de « %s » est en conflit avec une déclaration précédente"
+msgstr "asm-specifier pour la variable « %s » est en conflit avec la liste asm clobber"
-#: stmt.c:1540
+#: stmt.c:1514
#, c-format
msgid "unknown register name `%s' in `asm'"
msgstr "nom de registre inconnu « %s » dans «asm »"
-#: stmt.c:1588
+#: stmt.c:1522
+#, c-format
+msgid "PIC register `%s' clobbered in `asm'"
+msgstr "registre PIC « %s » est maltraité dans «asm »"
+
+#: stmt.c:1571
#, c-format
msgid "more than %d operands in `asm'"
msgstr "plus que %d opérandes dans « asm »"
-#: stmt.c:1650
+#: stmt.c:1633
#, c-format
msgid "output number %d not directly addressable"
msgstr "nombre de sortie %d n,est pas directement adressable"
-#: stmt.c:1728
+#: stmt.c:1711
#, c-format
msgid "asm operand %d probably doesn't match constraints"
msgstr "opérande asm %d ne concorde pas probablement avec les contraintes"
-#: stmt.c:1738
+#: stmt.c:1721
#, c-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
-msgstr ""
+msgstr "utilisation de l'entré mémoire sans lvalue dans l'opérande asm %d est dépréciée"
-#: stmt.c:1889
-#, fuzzy
+#: stmt.c:1875
msgid "asm clobber conflict with output operand"
-msgstr "déclaration asm en conflit avec le changement de nom précédent"
+msgstr "asm clobber est en conflit sans opérande de sortie"
-#: stmt.c:1894
-#, fuzzy
+#: stmt.c:1880
msgid "asm clobber conflict with input operand"
-msgstr "déclaration asm en conflit avec le changement de nom précédent"
+msgstr "asm globber est en conflit avec l'opérande d'entrée"
-#: stmt.c:1929
+#: stmt.c:1914
msgid "too many alternatives in `asm'"
msgstr "trop d'alternatives dans « asm »"
-#: stmt.c:1941
+#: stmt.c:1926
msgid "operand constraints for `asm' differ in number of alternatives"
msgstr "contraintes de l'opérande pour « asm » diffèrent en nombre d'alternatives"
-#: stmt.c:1994
+#: stmt.c:1978
#, c-format
msgid "duplicate asm operand name '%s'"
msgstr "nom d'opérande asm « %s » apparaît en double"
-#: stmt.c:2081
+#: stmt.c:2076
msgid "missing close brace for named operand"
msgstr "accolade de fermeture manquante pour l'opérandé nommée"
-#: stmt.c:2109
+#: stmt.c:2104
#, c-format
msgid "undefined named operand '%s'"
msgstr "opérande nommée « %s » indéfinie"
-#: stmt.c:3703
-#, c-format
-msgid "unused variable `%s'"
-msgstr "variable inutilisée « %s »"
+#: stmt.c:2161
+msgid "%Hstatement with no effect"
+msgstr "%Hdéclaration sasn effet"
-#: stmt.c:5189
+#: stmt.c:2317
+msgid "%Hvalue computed is not used"
+msgstr "%Hvaleur calculée n'est pas utilisée"
+
+#: stmt.c:3733
+msgid "%Junused variable '%D'"
+msgstr "%Jvariable « %D » inutilisée"
+
+#: stmt.c:4508
+msgid "%Hunreachable code at beginning of %s"
+msgstr "%Hcode inatteignable au début de %s"
+
+#: stmt.c:5136
#, c-format
msgid "enumeration value `%s' not handled in switch"
msgstr "valeur d'énumération « %s » n'est pas traitée dans le switch"
-#: stmt.c:5214 stmt.c:5234
+#: stmt.c:5161 stmt.c:5181
#, c-format
msgid "case value `%ld' not in enumerated type"
-msgstr "valeur du case «%ld» n'est pas dans le type énuméré"
+msgstr "valeur du case « %ld » n'est pas dans le type énuméré"
-#: stmt.c:5217 stmt.c:5237
+#: stmt.c:5164 stmt.c:5184
#, c-format
msgid "case value `%ld' not in enumerated type `%s'"
-msgstr "valeur du case «%ld» n'est pas dans le type énuméré « %s »"
+msgstr "valeur du case « %ld » n'est pas dans le type énuméré « %s »"
-#: stmt.c:5310
-#, fuzzy
+#: stmt.c:5401
msgid "switch missing default case"
-msgstr "ceci est la première étiquette de défaut"
+msgstr "switch n'a pas de case par défaut"
-#: stor-layout.c:178
+#: stor-layout.c:183
msgid "type size can't be explicitly evaluated"
msgstr "taille du type ne peut être explicitement évaluée"
-#: stor-layout.c:180
+#: stor-layout.c:185
msgid "variable-size type declared outside of any function"
msgstr "type de taille variable déclaré à l'extérieur den'importe quelle fonction"
-#: stor-layout.c:487
-#, c-format
-msgid "size of `%s' is %d bytes"
-msgstr "taille de « %s » est de %d octets"
+#: stor-layout.c:515
+msgid "%Jsize of '%D' is %d bytes"
+msgstr "%Jtaille de « %D » est de %d octets"
-#: stor-layout.c:489
-#, c-format
-msgid "size of `%s' is larger than %d bytes"
-msgstr "taille de « %s » est plus grande que %d octets"
+#: stor-layout.c:517
+msgid "%Jsize of '%D' is larger than %d bytes"
+msgstr "%Jtaille de « %D » est plus grande que %d octets"
+
+#: stor-layout.c:883
+msgid "%Jpacked attribute causes inefficient alignment for '%D'"
+msgstr "%Jattribut empaqueté provoque un alignement inefficient pour « %D »"
+
+#: stor-layout.c:886
+msgid "%Jpacked attribute is unnecessary for '%D'"
+msgstr "%Jattribut empaqueté n'est pas nécessaire pour « %D »"
+
+#: stor-layout.c:902
+msgid "%Jpadding struct to align '%D'"
+msgstr "%Jremplissage du struct pour aligner « %D »"
+
+#: stor-layout.c:1245
+msgid "padding struct size to alignment boundary"
+msgstr "remplissage la taille du struct pour aligner les frontières"
-#: stor-layout.c:909 stor-layout.c:1325
+#: stor-layout.c:1275
#, c-format
msgid "packed attribute causes inefficient alignment for `%s'"
msgstr "attribut empaqueté provoque un alignement inefficient pour « %s »"
-#: stor-layout.c:911 stor-layout.c:1327
+#: stor-layout.c:1277
#, c-format
msgid "packed attribute is unnecessary for `%s'"
msgstr "attribut empaqueté n'est pas nécessaire pour « %s »"
-#: stor-layout.c:926
-#, c-format
-msgid "padding struct to align `%s'"
-msgstr "remplissage du struct pour aligner « %s »"
-
-#: stor-layout.c:1289
-msgid "padding struct size to alignment boundary"
-msgstr "remplissage la taille du struct pour aligner les frontières"
-
-#: stor-layout.c:1332
+#: stor-layout.c:1282
msgid "packed attribute causes inefficient alignment"
msgstr "attribut empaqueté provoque un alignement inefficient"
-#: stor-layout.c:1334
+#: stor-layout.c:1284
msgid "packed attribute is unnecessary"
msgstr "attribut empaqueté n'est pas nécessaire"
-#: timevar.c:322
+#: targhooks.c:154
+msgid "__builtin_saveregs not supported by this target"
+msgstr "« __builtin_saveregs » n'est pas supporté par cette cible"
+
+#: timevar.c:314
#, c-format
msgid "cannot timevar_pop '%s' when top of timevars stack is '%s'"
-msgstr ""
+msgstr "ne peut faire timevar_pop « %s » lorsque le haut de la pile timevars est « %s »"
-#: timevar.c:453
+#: timevar.c:440
msgid ""
"\n"
"Execution times (seconds)\n"
@@ -7175,977 +6916,109 @@ msgstr ""
"Temps d'exécution (secondes)\n"
#. Print total time.
-#: timevar.c:503
+#: timevar.c:490
msgid " TOTAL :"
msgstr " TOTAL :"
-#: timevar.c:539
+#: timevar.c:513
#, c-format
msgid "time in %s: %ld.%06ld (%ld%%)\n"
msgstr "temps passé dans %s: %ld.%06ld (%ld%%)\n"
-#: tlink.c:399
+#: tlink.c:377
#, c-format
msgid "collect: reading %s\n"
msgstr "collect: lecture de %s\n"
-#: tlink.c:502
+#: tlink.c:478
#, c-format
msgid "collect: recompiling %s\n"
msgstr "collect: recompilation de %s\n"
-#: tlink.c:674
+#: tlink.c:654
#, c-format
msgid "collect: tweaking %s in %s\n"
msgstr "collect: tordage de %s dans %s\n"
-#: tlink.c:721
+#: tlink.c:700
+#, c-format
msgid "collect: relinking\n"
msgstr "collect: ré-édition des liens\n"
-#: tlink.c:730
+#: tlink.c:709
#, c-format
msgid "ld returned %d exit status"
msgstr "ld a retourné %d code d'état d'exécution"
-#: toplev.c:920
-msgid "Generate debugging info in default format"
-msgstr "Générer les information de mise au point dans le format par défaut"
-
-#: toplev.c:921
-msgid "Generate debugging info in default extended format"
-msgstr "Générer les information de mise au point dans le format étendu"
-
-#: toplev.c:923
-msgid "Generate STABS format debug info"
-msgstr "Générer des infos de mise au point de format STABS"
-
-#: toplev.c:924
-msgid "Generate extended STABS format debug info"
-msgstr "Générer des infos de mise au point de format STABS étendu"
-
-#: toplev.c:927
-msgid "Generate DWARF-1 format debug info"
-msgstr "Générer les informations de mise au point du format DWARF-1"
-
-#: toplev.c:929
-msgid "Generate extended DWARF-1 format debug info"
-msgstr "Générer les extensions des informations de mise au point du format DWARF-1"
-
-#: toplev.c:932
-msgid "Generate DWARF-2 debug info"
-msgstr "Générer les informations de mise au point DWARF-2"
-
-#: toplev.c:935
-msgid "Generate XCOFF format debug info"
-msgstr "Générer les informations de mise au point du format XCOFF"
-
-#: toplev.c:936
-msgid "Generate extended XCOFF format debug info"
-msgstr "Générer les extensions de mise au point du format XCOFF"
-
-#: toplev.c:939
-msgid "Generate COFF format debug info"
-msgstr "Générer les informations de mise au point du format COFF"
-
-#: toplev.c:942
-msgid "Generate VMS format debug info"
-msgstr "Générer des infos de mise au point de format VMS"
-
-#: toplev.c:981
-msgid "Perform DWARF2 duplicate elimination"
-msgstr "Exécuter une élimination DAWRF2 des doublons"
-
-#: toplev.c:983
-msgid "Do not store floats in registers"
-msgstr "Ne pas stocker les flottants dans les registres"
-
-#: toplev.c:985
-msgid "Consider all mem refs through pointers as volatile"
-msgstr "Considérer toutes les référence en mémoire comme faite par des pointeurs volatiles"
-
-#: toplev.c:987
-msgid "Consider all mem refs to global data to be volatile"
-msgstr "Considérer toutes les références mémoire à des données globales comme volatiles"
-
-#: toplev.c:989
-msgid "Consider all mem refs to static data to be volatile"
-msgstr "Considérer toutes les références mémoire à des données statiques comme volatiles"
-
-#: toplev.c:991
-msgid "Defer popping functions args from stack until later"
-msgstr "Déférer le dépilage des arguments de fonction de la pile plus tard"
-
-#: toplev.c:993
-msgid "When possible do not generate stack frames"
-msgstr "Lorsque c'est possible ne pas générer des trames de pile"
-
-#: toplev.c:995
-msgid "Optimize sibling and tail recursive calls"
-msgstr "Optimiser sur mesure les appels enfants et récursif"
-
-#: toplev.c:997
-msgid "Perform superblock formation via tail duplication"
-msgstr ""
-
-#: toplev.c:999
-msgid "When running CSE, follow jumps to their targets"
-msgstr "Lorsque CSE s'exécute, suivre les sauts vers leurs cibles"
-
-#: toplev.c:1001
-msgid "When running CSE, follow conditional jumps"
-msgstr "Lorsque CSE s'exécute, suivre les sauts considitionnels vers leurs cibles"
-
-#: toplev.c:1003
-msgid "Perform a number of minor, expensive optimizations"
-msgstr "Effectuer un nombre mineur d'optimisations coûteuses"
-
-#: toplev.c:1005
-msgid "Perform jump threading optimizations"
-msgstr "Exécuter des optimisations de sauts de thread"
-
-#: toplev.c:1007
-msgid "Perform strength reduction optimizations"
-msgstr "Exécuter un réduction en force des optimisations"
-
-#: toplev.c:1009
-msgid "Perform loop unrolling when iteration count is known"
-msgstr "Exécuter un dé-roulement des boucles lorsque le compteur d'itération est connu"
-
-#: toplev.c:1011
-msgid "Perform loop unrolling for all loops"
-msgstr "Exécuter la boucle par désenroulement de toutes les boucles"
-
-#: toplev.c:1013
-msgid "Generate prefetch instructions, if available, for arrays in loops"
-msgstr "Générer des instructions prérecherchées, si disponible, pour les tableaux dans les boucles"
-
-#: toplev.c:1015
-msgid "Force all loop invariant computations out of loops"
-msgstr "Forcer pour toutes les boucles des calculs invariants en dehors des boucles"
-
-#: toplev.c:1017
-msgid "Strength reduce all loop general induction variables"
-msgstr "Renforcer la réduction de toutes les boucles par induction des variables"
-
-#: toplev.c:1019
-msgid "Store strings in writable data section"
-msgstr "Stocker les chaînes dans les sections d'écriture des données"
-
-#: toplev.c:1021
-msgid "Enable machine specific peephole optimizations"
-msgstr "Autoriser les optimisations des trous spécifiques à une machine"
-
-#: toplev.c:1023
-msgid "Copy memory operands into registers before using"
-msgstr "Copier les opérandes mémoire dans les registres avant de les utiliser"
-
-#: toplev.c:1025
-msgid "Copy memory address constants into regs before using"
-msgstr "Copier les constantes d'adresses mémoire dans les registres avant de les utiliser"
-
-#: toplev.c:1027
-msgid "Allow function addresses to be held in registers"
-msgstr "Autoriser le maintien des adresses de fonction dans les registres"
-
-#: toplev.c:1029
-msgid "Integrate simple functions into their callers"
-msgstr "Intégrer les fonctions simples à l'intérieur des appelants"
-
-#: toplev.c:1031
-msgid "Generate code for funcs even if they are fully inlined"
-msgstr "Générer le code pour les fonctions même si elles sont complètement en ligne"
-
-#: toplev.c:1033
-msgid "Pay attention to the 'inline' keyword"
-msgstr "Porter attention au mot clé « inline »"
-
-#: toplev.c:1035
-msgid "Emit static const variables even if they are not used"
-msgstr "Produire des variables constantes statiques même si elles ne sont pas utilisées"
-
-#: toplev.c:1037
-msgid "Check for syntax errors, then stop"
-msgstr "Vérifier les erreurs de syntaxes et puis stopper"
-
-#: toplev.c:1039
-msgid "Mark data as shared rather than private"
-msgstr "Marquer les données comme partagées au lieu de privées"
-
-#: toplev.c:1041
-msgid "Enable saving registers around function calls"
-msgstr "Autoriser la sauvegarde autour des appels de fonction"
-
-#: toplev.c:1043
-msgid "Return 'short' aggregates in memory, not registers"
-msgstr "Retourner des aggrégats de type « short » en mémoire, pas dans les registres"
-
-#: toplev.c:1045
-msgid "Return 'short' aggregates in registers"
-msgstr "Retourner des aggrégats de type « short » dans les registres"
-
-#: toplev.c:1047
-msgid "Attempt to fill delay slots of branch instructions"
-msgstr "Tented de remplir de délais les fentes des instructions de branchement"
-
-#: toplev.c:1049
-msgid "Perform the global common subexpression elimination"
-msgstr "Exécuter l'élimination de sous-expression du commun global"
-
-#: toplev.c:1051
-msgid "Perform enhanced load motion during global subexpression elimination"
-msgstr "Exécuter un chargement efficace lors de l'élimination de sous-expression globale"
-
-#: toplev.c:1053
-msgid "Perform store motion after global subexpression elimination"
-msgstr "Exécuter un stockage efficace lors de l'élimination de sous-expression globale"
-
-#: toplev.c:1055
-#, fuzzy
-msgid "Perform the loop optimizations"
-msgstr "Effectuer une optimisation sur mesure des appels"
-
-#: toplev.c:1057
-#, fuzzy
-msgid "Perform cross-jumping optimization"
-msgstr "Exécuter des optimisations de sauts de thread"
-
-#: toplev.c:1059
-msgid "Perform conversion of conditional jumps to branchless equivalents"
-msgstr ""
-
-#: toplev.c:1061
-#, fuzzy
-msgid "Perform conversion of conditional jumps to conditional execution"
-msgstr "Changer le seuil pour la conversion en une exécution conditionnelle"
-
-#: toplev.c:1063
-msgid "Run CSE pass after loop optimizations"
-msgstr "Exécuter une passe CSE après une optimisation des boucles"
-
-#: toplev.c:1065
-msgid "Run the loop optimizer twice"
-msgstr "Exécuter l'optimiseur de boucle deux fois"
-
-#: toplev.c:1067
-msgid "Delete useless null pointer checks"
-msgstr "Détruire les vérifications de pointeurs nul inutiles"
-
-#: toplev.c:1069
-msgid "Reschedule instructions before register allocation"
-msgstr "Réordonnancer les instructions avant l'allocation de registres"
-
-#: toplev.c:1071
-msgid "Reschedule instructions after register allocation"
-msgstr "Réordonnancer les instructions après l'allocation de registres"
-
-#: toplev.c:1073
-msgid "Enable scheduling across basic blocks"
-msgstr "Autoriser l'ordonnancement à travers les blocs de base"
-
-#: toplev.c:1075
-msgid "Allow speculative motion of non-loads"
-msgstr "Autoriser le mouvement spéculatif de non chargements"
-
-#: toplev.c:1077
-msgid "Allow speculative motion of some loads"
-msgstr "Autoriser le mouvement spéculatif de quelques chargements"
-
-#: toplev.c:1079
-msgid "Allow speculative motion of more loads"
-msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-
-#: toplev.c:1081
-msgid "Replace add,compare,branch with branch on count reg"
-msgstr "Remplacer add,compare,branch avec des branchements utilisant un compteur registre"
-
-#: toplev.c:1083
-msgid "Generate position independent code, if possible"
-msgstr "Générer du code indépendant de la position, si possible"
-
-#: toplev.c:1086
-msgid "Enable exception handling"
-msgstr "Autoriser le traitement des exceptions"
-
-#: toplev.c:1088
-msgid "Just generate unwind tables for exception handling"
-msgstr "Générer simplement des tables étendues pour le traitement des exceptions"
-
-#: toplev.c:1090
-msgid "Generate unwind tables exact at each instruction boundary"
-msgstr "Générer des tables étendues exactes pour chaque bornes d'instruction"
-
-#: toplev.c:1092
-msgid "Support synchronous non-call exceptions"
-msgstr "Supporter les exceptions synchrones des non appels"
-
-#: toplev.c:1094
-msgid "Insert arc based program profiling code"
-msgstr "Insérer le code de profilage du programme de base"
-
-#: toplev.c:1096
-msgid "Create data files needed by gcov"
-msgstr "Créer les fichiers de données nécessaires par gcov"
-
-#: toplev.c:1098
-msgid "Use profiling information for branch probabilities"
-msgstr "Utiliser les informations de profilage pour les probabilités de branchements"
-
-#: toplev.c:1100
-#, fuzzy
-msgid "Enable basic program profiling code"
-msgstr "Insérer le code de profilage du programme de base"
-
-#: toplev.c:1102
-msgid "Reorder basic blocks to improve code placement"
-msgstr "Ré-ordonner les blocs de base pour améliorer l'emplacement de code"
-
-#: toplev.c:1104
-#, fuzzy
-msgid "Reorder functions to improve code placement"
-msgstr "Ré-ordonner les blocs de base pour améliorer l'emplacement de code"
-
-#: toplev.c:1106
-msgid "Do the register renaming optimization pass"
-msgstr "Renommer les registres lors de la passe d'optimisation"
-
-#: toplev.c:1108
-msgid "Do the register copy-propagation optimization pass"
-msgstr "Effectuer la passe d'optimisation de la propagation-de-copie par registre"
-
-#: toplev.c:1110
-msgid "Do not put uninitialized globals in the common section"
-msgstr "Ne pas placer de globaux non initialisés dans la section commune"
-
-#: toplev.c:1112
-msgid "Do not generate .size directives"
-msgstr "Ne pas générer de directives .size"
-
-#: toplev.c:1114
-msgid "place each function into its own section"
-msgstr "placer chaque fonction dans sa propre section"
-
-#: toplev.c:1116
-msgid "place data items into their own section"
-msgstr "placer les items des données dans leur propre section"
-
-#: toplev.c:1118
-#, fuzzy
-msgid "Add extra commentary to assembler output"
-msgstr "Ajouter des commentaires additionnels à la sortie de l'assembleur"
-
-#: toplev.c:1120
-msgid "Output GNU ld formatted global initializers"
-msgstr "Produire des initialisations de globlales au format GNU ld"
-
-#: toplev.c:1122
-msgid "Enables a register move optimization"
-msgstr "Autoriser l'optimisation des déplacements par registre"
-
-#: toplev.c:1124
-msgid "Do the full regmove optimization pass"
-msgstr "Effectuer la passe d'optimisation complète des des déplacements par les registres"
-
-#: toplev.c:1126
-msgid "Pack structure members together without holes"
-msgstr "Empaqueter les membres des structures ensembles sans trous"
-
-#: toplev.c:1128
-msgid "Insert stack checking code into the program"
-msgstr "Insérer du code de vérificaion de la pile dans le programme"
-
-#: toplev.c:1130
-msgid "Specify that arguments may alias each other & globals"
-msgstr "Présumer que les arguments peuvent avoir des alias l'un vers l'autre et globaux"
-
-#: toplev.c:1132
-msgid "Assume arguments may alias globals but not each other"
-msgstr "Présumer que les arguments peuvent avoir des alias globaux mais pas l'un vers l'autre"
-
-#: toplev.c:1134
-msgid "Assume arguments do not alias each other or globals"
-msgstr "Présumer que les arguments n'ont pas d'alias l'un vers l'autre ou globaux"
-
-#: toplev.c:1136
-msgid "Assume strict aliasing rules apply"
-msgstr "Présumer que des règles stricts d'alias s'appliquent"
-
-#: toplev.c:1138
-msgid "Align the start of loops"
-msgstr "Aligner le début des boucles"
-
-#: toplev.c:1140
-msgid "Align labels which are only reached by jumping"
-msgstr "Aligner les étiquettes qui sont seulement atteintes par sauts"
-
-#: toplev.c:1142
-msgid "Align all labels"
-msgstr "Aligner toutes les étiquettes"
-
-#: toplev.c:1144
-msgid "Align the start of functions"
-msgstr "Aligner le début des fonctions"
-
-#: toplev.c:1146
-#, fuzzy
-msgid "Attempt to merge identical constants across compilation units"
-msgstr "Tentative de fusion de constantes identiques à travers des unités de compilation"
-
-#: toplev.c:1148
-msgid "Attempt to merge identical constants and constant variables"
-msgstr "Tentative de fusion de constantes identique et des variables constantes"
-
-#: toplev.c:1150
-msgid "Suppress output of instruction numbers and line number notes in debugging dumps"
-msgstr "Supprimer dans la sortie les numéros d'instructions et de notes de lignes dans les vidanges de mises au point"
-
-#: toplev.c:1152
-msgid "Instrument function entry/exit with profiling calls"
-msgstr "Traiter les entrées/sorties des fonctins avec appels de profilage"
-
-#: toplev.c:1154
-#, fuzzy
-msgid "Put zero initialized data in the bss section"
-msgstr "Ne pas placer de globaux non initialisés dans la section commune"
-
-#: toplev.c:1156
-msgid "Enable SSA optimizations"
-msgstr "Autoriser les optimisations SSA"
-
-#: toplev.c:1158
-msgid "Enable SSA conditional constant propagation"
-msgstr "Autoriser la propagation SSA de constante conditionnelle"
-
-#: toplev.c:1160
-msgid "Enable aggressive SSA dead code elimination"
-msgstr "Autoriser l'élimination agressive SSA du code mort"
-
-#: toplev.c:1162
-msgid "External symbols have a leading underscore"
-msgstr "Les symboles externes sont préfixés d'un caractère de soulignement"
-
-#: toplev.c:1164
-msgid "Process #ident directives"
-msgstr "Traiter les directive #ident"
-
-#: toplev.c:1166
-msgid "Enables an rtl peephole pass run before sched2"
-msgstr "Autoriser l'exécution de la passe rtl sur les trous avant sched2"
-
-#: toplev.c:1168
-msgid "Assume no NaNs or +-Infs are generated"
-msgstr ""
-
-#: toplev.c:1170
-msgid "Enables guessing of branch probabilities"
-msgstr "Autoriser l'estimation des probabilités de branchement"
-
-#: toplev.c:1172
-msgid "Set errno after built-in math functions"
-msgstr "Initialiser errno après les fonctions internes mathématiques"
-
-#: toplev.c:1174
-msgid "Floating-point operations can trap"
-msgstr "les opérations virgule flottante peuvent être attrappées"
-
-#: toplev.c:1176
-msgid "Allow math optimizations that may violate IEEE or ANSI standards"
-msgstr "Permettre l'optimisation des maths qui peut violer les standards IEEE ou ANSI"
-
-#: toplev.c:1178
-msgid "Disable optimizations observable by IEEE signaling NaNs"
-msgstr ""
-
-#: toplev.c:1180
-#, fuzzy
-msgid "Generate code to check bounds before indexing arrays"
-msgstr "Générer du code pour vérifier les bornes avant de dé-référencer les pointeurs et les tableaux"
-
-#: toplev.c:1182
-msgid "Convert floating point constant to single precision constant"
-msgstr "Convertir les constantes flottantes en constantes en simple précision"
-
-#: toplev.c:1184
-msgid "Report time taken by each compiler pass at end of run"
-msgstr "Rapporter le temps pris par chaque passe de compilation à la fin de l'exécution"
-
-#: toplev.c:1186
-msgid "Report on permanent memory allocation at end of run"
-msgstr "Rapporter toute allocation de mémoire permanente à la fin de l'exécution"
-
-#: toplev.c:1188
-msgid "Trap for signed overflow in addition / subtraction / multiplication"
-msgstr "Attrapper les débordements de signe dans addition/soustraction/multiplication"
-
-#: toplev.c:1190
-msgid "Use graph coloring register allocation."
-msgstr "Utiliser l'allocation des registres par coloriage de graphe"
-
-#: toplev.c:1207
-msgid "Compile just for ISO C90"
-msgstr "Compiler seulement pour le C90 ISO"
-
-#: toplev.c:1209
-msgid "Determine language standard"
-msgstr "Déterminer le standard du langage"
-
-#: toplev.c:1213
-msgid "Make bit-fields by unsigned by default"
-msgstr "Rendre les champs de bits non signés par défaut"
-
-#: toplev.c:1217
-msgid "Make 'char' be signed by default"
-msgstr "Rendre les « char » signés par défaut"
-
-#: toplev.c:1219
-msgid "Make 'char' be unsigned by default"
-msgstr "Rendre les « char » non signés par défaut"
-
-#: toplev.c:1225
-msgid "Do not recognize the 'asm' keyword"
-msgstr "Ne pas reconnaître le mot clé « asm »"
+# I18N
+#: toplev.c:1226
+#, c-format
+msgid "%s "
+msgstr "%s "
+# I18N
#: toplev.c:1228
-msgid "Do not recognize any built in functions"
-msgstr "Ne pas reocnnaître aucun construit dans les fonctions"
-
-#: toplev.c:1230
-msgid "Assume normal C execution environment"
-msgstr "Présumer que l'environnement d'exécution C est normal"
-
-#: toplev.c:1233
-msgid "Assume that standard libraries & main might not exist"
-msgstr "Présumer que les bibliothèques standards et main peuvent ne pas exister"
-
-#: toplev.c:1236
-msgid "Allow different types as args of ? operator"
-msgstr "Permettre des types différents pour les arguments de l'opérateur ?"
-
-#: toplev.c:1239
-msgid "Allow the use of $ inside identifiers"
-msgstr "Permettre l'utilisation de $ à l'intérieur d'identificateurs"
-
-#: toplev.c:1244
-msgid "Use the same size for double as for float"
-msgstr "Utiliser la même taille pour un double que pour un flottant"
-
-#: toplev.c:1247
-msgid "Use the smallest fitting integer to hold enums"
-msgstr "Utiliser le plus petit entier pour contenir l'énumération (enums)"
-
-#: toplev.c:1250
-msgid "Override the underlying type for wchar_t to `unsigned short'"
-msgstr "Écraser le type sous-jacent de wchar_t vers « unsigned short »"
-
-#: toplev.c:1254
-msgid "Enable most warning messages"
-msgstr "Autoriser la plupart des messages d'avertissement"
-
-#: toplev.c:1256
-msgid "Warn about casting functions to incompatible types"
-msgstr "Avertir à propos des fonctions de transtypage avec des types incompatibles"
-
-#: toplev.c:1259
-msgid "Warn about functions which might be candidates for format attributes"
-msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
-
-#: toplev.c:1262
-msgid "Warn about casts which discard qualifiers"
-msgstr "Avertir à propos des transtypage qui écartent les qualificateurs"
-
-#: toplev.c:1265
-msgid "Warn about subscripts whose type is 'char'"
-msgstr "Avertir à propose des souscripts dont le type est « char »"
-
-#: toplev.c:1268 toplev.c:1271
-msgid "Warn if nested comments are detected"
-msgstr "Avertir si des commentaires imbriqués sont détectés"
-
-#: toplev.c:1274
-msgid "Warn about possibly confusing type conversions"
-msgstr "Avertir à propos des type de conversions confuses"
-
-#: toplev.c:1278
-#, fuzzy
-msgid "Do not warn about compile-time integer division by zero"
-msgstr "Ne pas intercepter les divisions par zéros sur des entiers"
-
-#: toplev.c:1280
-msgid "Warn about testing equality of floating point numbers"
-msgstr "Avertir à propos des tests d'égalité sur des nombres flottants"
-
-#: toplev.c:1283
-msgid "Warn about printf/scanf/strftime/strfmon format anomalies"
-msgstr "Avertir à propos des anomalies de format de printf/scanf/strftime/strfmon"
-
-#: toplev.c:1287
-msgid "Don't warn about too many arguments to format functions"
-msgstr "Ne pas avertir à propos d'un surplus d'arguments pour des fonctions de format"
-
-#: toplev.c:1289
-msgid "Warn about non-string-literal format strings"
-msgstr "Avertir à propos des chaînes de format qui ne sont pas des chaînes"
-
-#: toplev.c:1292
-msgid "Warn about possible security problems with format functions"
-msgstr "Avertir à propos des problèmes possibles de sécurité avec les formats de fonction"
-
-#: toplev.c:1296
-msgid "Don't warn about strftime formats yielding 2 digit years"
-msgstr "Ne pas avertir à propos des formats de strftime ne laissant que 2 chiffres pour l'année"
-
-#: toplev.c:1298
-msgid "Warn about implicit function declarations"
-msgstr "Avertir à propos des déclarations de fonctions implicites"
-
-#: toplev.c:1302
-msgid "Warn when a declaration does not specify a type"
-msgstr "Avertir lorsqu'une déclaration ne spécifie pas le type"
-
-#: toplev.c:1307
-msgid "Warn about the use of the #import directive"
-msgstr "Avertir à propos de l'utilisation de la directive #import"
-
-#: toplev.c:1311
-msgid "Do not warn about using 'long long' when -pedantic"
-msgstr "Ne pas avertir à propos de l'utilisation de « long long » avec -pedantic"
-
-#: toplev.c:1313
-msgid "Warn about suspicious declarations of main"
-msgstr "Avertir à propos des déclarations douteuses de main"
-
-#: toplev.c:1316
-msgid "Warn about possibly missing braces around initializers"
-msgstr "Avertir à propos des possibles accolades manquantes autour des initialisations"
-
-#: toplev.c:1319
-msgid "Warn about global funcs without previous declarations"
-msgstr "Avertir à propos des fonctions globales sans déclaration précédente"
-
-#: toplev.c:1322
-msgid "Warn about global funcs without prototypes"
-msgstr "Avertir à propos des fonctions globales sans prototype"
-
-#: toplev.c:1325
-msgid "Warn about use of multicharacter literals"
-msgstr "Avertir à propose de l'utilisation des chaînes de multi-caractères"
-
-#: toplev.c:1328
-msgid "Warn about externs not at file scope level"
-msgstr "Avertir à propos des externes qui n'est pas au niveau dans le champ du fichier"
-
-#: toplev.c:1331
-msgid "Warn about possible missing parentheses"
-msgstr "Avertir à propos du manque possible de parenthèses"
-
-#: toplev.c:1334
-msgid "Warn about function pointer arithmetic"
-msgstr "Avertir à propos d'arithmétique portant sur un pointeur de fonction"
-
-#: toplev.c:1337
-msgid "Warn about multiple declarations of the same object"
-msgstr "Avertir à propos des déclarations multiples portant sur le même objet"
-
-#: toplev.c:1340
-#, fuzzy
-msgid "Warn whenever a function's return-type defaults to int"
-msgstr "le défaut choisi du type retourné est « int »"
-
-#: toplev.c:1343
-msgid "Warn about possible violations of sequence point rules"
-msgstr "Avertir à propos des violations possibles des règles de séquence de points"
-
-#: toplev.c:1346
-msgid "Warn about signed/unsigned comparisons"
-msgstr "Avertir à propos des comparaisons signés/non signés"
-
-#: toplev.c:1349
-msgid "Warn about non-prototyped function decls"
-msgstr "Avertir à propos des déclarations de fonction sans prototype"
-
-#: toplev.c:1352
-#, fuzzy
-msgid "Warn about constructs whose meanings change in ISO C"
-msgstr "Avertir à propos de construits dont le sens change en C ISO"
-
-#: toplev.c:1355
-msgid "Warn when trigraphs are encountered"
-msgstr "Avertir lorsque des trigraphes sont rencontrés"
-
-#: toplev.c:1360
-msgid "Warn about unrecognized pragmas"
-msgstr "Avertir à propos des pragmas non reconnus"
-
-#: toplev.c:1363
-msgid "Mark strings as 'const char *'"
-msgstr "Marque les chaînes comme étant 'const char *'"
-
-#: toplev.c:1508
-msgid "Warn when a function is unused"
-msgstr "Avertir lorsqu'une fonction est inutilisée"
-
-#: toplev.c:1510
-msgid "Warn when a label is unused"
-msgstr "Avertir lorsqu'une étiquette est inutilisée"
-
-#: toplev.c:1512
-msgid "Warn when a function parameter is unused"
-msgstr "Avertir lorsqu'un paramètre de fonction est inutilisé"
-
-#: toplev.c:1514
-msgid "Warn when a variable is unused"
-msgstr "Avertir lorsque 'une variable est inutilisée"
-
-#: toplev.c:1516
-msgid "Warn when an expression value is unused"
-msgstr "Avertir lorsque la valeur d'une expression n'est pas utilisée"
-
-#: toplev.c:1518
-msgid "Do not suppress warnings from system headers"
-msgstr "Ne pas supprimer les avertissements pour les en-têtes système"
-
-#: toplev.c:1520
-msgid "Treat all warnings as errors"
-msgstr "Traiter tous les avertissements commes des erreurs"
-
-#: toplev.c:1522
-msgid "Warn when one local variable shadows another"
-msgstr "Avertir lorsqu'une variable locale masque une autre"
-
-#: toplev.c:1524
-#, fuzzy
-msgid "Warn about enumerated switches, with no default, missing a case"
-msgstr "Avertir à propos d'un switch énuméré où un case spécific manque"
-
-#: toplev.c:1526
-#, fuzzy
-msgid "Warn about enumerated switches missing a default case"
-msgstr "Avertir à propos d'un switch énuméré où un case spécific manque"
-
-#: toplev.c:1528
-#, fuzzy
-msgid "Warn about all enumerated switches missing a specific case"
-msgstr "Avertir à propos d'un switch énuméré où un case spécific manque"
-
-#: toplev.c:1530
-msgid "Warn about returning structures, unions or arrays"
-msgstr "Avertir à propos de structures retournés, unions ou tableaux"
-
-#: toplev.c:1532
-msgid "Warn about pointer casts which increase alignment"
-msgstr "Avertir à propos des pointeurs convertis lesquels augment l'alignement"
-
-#: toplev.c:1534
-msgid "Warn about code that will never be executed"
-msgstr "Avertir à propos du code qui ne sera jamais exécuté"
-
-#: toplev.c:1536
-msgid "Warn about uninitialized automatic variables"
-msgstr "Avertir à propos des variables automatiques non initialisées"
-
-#: toplev.c:1538
-msgid "Warn when an inlined function cannot be inlined"
-msgstr "Avertir lorsque des fonctions en ligne ne peuvent être en ligne"
+#, c-format
+msgid " %s"
+msgstr " %s"
-#: toplev.c:1540
-msgid "Warn when the packed attribute has no effect on struct layout"
-msgstr "Avertir lorsque les attributs paquetés n'ont pas d'effet sur l'organtisation d'un struct"
+#: toplev.c:1293
+#, c-format
+msgid "invalid option argument `%s'"
+msgstr "argument de l'option invalide « %s »"
-#: toplev.c:1542
-msgid "Warn when padding is required to align struct members"
-msgstr "Avertir lorsque le remplissage est requis pour aligner les membres d'un struct"
+#: toplev.c:1356
+#, c-format
+msgid "getting core file size maximum limit: %m"
+msgstr "limite maximale obtenue de la taille du fichier de vidange (core file): %m"
-#: toplev.c:1544
-msgid "Warn when an optimization pass is disabled"
-msgstr "Avertir lorsque la passe d'optimisation est désactivée"
+#: toplev.c:1359
+#, c-format
+msgid "setting core file size limit to maximum: %m"
+msgstr "initialisation de la limite maximal de la taille du fichier de vidance (core file): %m"
-#: toplev.c:1546
-msgid "Warn about uses of __attribute__((deprecated)) declarations"
-msgstr "Avertir à propos de l'utilisation des déclarations « __attribute__ ((deprecated)) »"
+#: toplev.c:1678
+msgid "%J'%F' used but never defined"
+msgstr "%J« %F » utilisé mais n'a jamais été défini"
-#: toplev.c:1548
-msgid "Warn about functions which might be candidates for attribute noreturn"
-msgstr "Avertir à propos des fonctions qui seraient candidates pour des attributs non retournés"
+#: toplev.c:1680
+msgid "%J'%F' declared `static' but never defined"
+msgstr "%J« %F » déclaré « static » mais n'a jamais été définie"
-#: toplev.c:1550
-#, fuzzy
-msgid "Warn about code which might break the strict aliasing rules"
-msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
+#: toplev.c:1705
+msgid "%J'%D' defined but not used"
+msgstr "%J« %F » défini mais n'a pas été utilisé"
-#: toplev.c:1627 toplev.c:4548 config/rs6000/rs6000.c:680
+#: toplev.c:1726 toplev.c:1743
#, c-format
-msgid "invalid option `%s'"
-msgstr "option invalide « %s »"
+msgid "`%s' is deprecated (declared at %s:%d)"
+msgstr "« %s » est obsolète (déclaré à %s:%d)"
-#: toplev.c:2031
+#: toplev.c:1746
#, c-format
-msgid "`%s' used but never defined"
-msgstr "« %s » utilisé mais n'a jamais été défini"
+msgid "`%s' is deprecated"
+msgstr "« %s » est obsolète"
-#: toplev.c:2034
+#: toplev.c:1749
#, c-format
-msgid "`%s' declared `static' but never defined"
-msgstr "« %s » déclaré «static » mais n'a jamais été défiie"
+msgid "type is deprecated (declared at %s:%d)"
+msgstr "type est obsolète (déclaré à %s:%d)"
-#: toplev.c:2057
-#, c-format
-msgid "`%s' defined but not used"
-msgstr "« %s » défini mais n'a pas été utilisé"
+#: toplev.c:1752
+msgid "type is deprecated"
+msgstr "type est obsolète"
-#: toplev.c:2280
+#: toplev.c:1956
#, c-format
msgid "invalid register name `%s' for register variable"
msgstr "nom de registre invalide « %s » pour un variable registre"
-#: toplev.c:3697
-msgid " -ffixed-<register> Mark <register> as being unavailable to the compiler\n"
-msgstr " -ffixed-<registre> marque le <registre> qui est rendu indisponibles pour le compilateur\n"
-
-#: toplev.c:3698
-msgid " -fcall-used-<register> Mark <register> as being corrupted by function calls\n"
-msgstr " -fcall-used-<registre> marquer le <registre> qui est corrompu par les appels de fonctions\n"
-
-#: toplev.c:3699
-msgid " -fcall-saved-<register> Mark <register> as being preserved across functions\n"
-msgstr " -fcall-saved-<registre> marquer le <registre> qui est préservé à travers les fonctions\n"
-
-#: toplev.c:3700
-msgid " -finline-limit=<number> Limits the size of inlined functions to <number>\n"
-msgstr " -finline-limit=<nombre> limiter la taille des fonction en ligne à <nombre>\n"
-
-#: toplev.c:3701
-msgid " -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line. 0 suppresses line-wrapping\n"
-msgstr " -fmessage-length=<nombre> limiter la longueur des messages de diagnotiques à <nombre> de caractères par ligne. 0 supprime l'enroulement de ligne\n"
-
-#: toplev.c:3702
-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 " -fdiagnostics-show-location=[once | every-line] indiquer combien de fois les information de localisation des sources doivent être produites, comme préfixe, au début d'un diagnostique lorsque les lignes doivent s'enrouler sur d'autres\n"
-
-#: toplev.c:3703
-msgid " -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indicates the default thread-local storage code generation model\n"
-msgstr ""
-
-#: toplev.c:3704
-msgid " -fstack-limit-register=<register> Trap if the stack goes past <register>\n"
-msgstr ""
-
-#: toplev.c:3705
-msgid " -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>\n"
-msgstr ""
-
-#: toplev.c:3706
-msgid " -frandom-seed=<string> Make compile reproducible using <string>\n"
-msgstr ""
-
-#: toplev.c:3718
-msgid " -O[number] Set optimization level to [number]\n"
-msgstr " -O[NIVEAU] utiliser le NIVEAU d'optimisation\n"
-
-#: toplev.c:3719
-msgid " -Os Optimize for space rather than speed\n"
-msgstr " -Os optimiser l'utilisation de l'espace plutôt que la vitesse\n"
-
-#: toplev.c:3731
-msgid " -pedantic Issue warnings needed by strict compliance to ISO C\n"
-msgstr " -pedantic émettre les avertissements nécessaires pour être conforme de façon stricte au C ISO\n"
-
-#: toplev.c:3732
-msgid " -pedantic-errors Like -pedantic except that errors are produced\n"
-msgstr " -pedantic-errors identique à -pedantic sauf que les erreurs sont produites\n"
-
-#: toplev.c:3733
-msgid " -w Suppress warnings\n"
-msgstr " -w supprimer les avertissements\n"
-
-#: toplev.c:3734
-msgid " -W Enable extra warnings\n"
-msgstr " -W autoriser les avertissements additionnels\n"
-
-#: toplev.c:3745
-msgid " -Wunused Enable unused warnings\n"
-msgstr " -Wunused autoriser les avertissements pour signaler les non utilisés\n"
-
-#: toplev.c:3746
-msgid " -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"
-msgstr " -Wlarger-than-<nombre> avertir si un objet est plus grand que <nombre> d'octets\n"
-
-#: toplev.c:3747
-msgid " -p Enable function profiling\n"
-msgstr " -p autoriser le profilage des fonctions\n"
-
-#: toplev.c:3748
-msgid " -o <file> Place output into <file> \n"
-msgstr " -o <fichier> produire la sortie dans le <fichier> \n"
-
-#: toplev.c:3749
-msgid ""
-" -G <number> Put global and static data smaller than <number>\n"
-" bytes into a special section (on some targets)\n"
-msgstr ""
-" -G <numbre> placer les données globales et statiques plus\n"
-" petites que <nombre> d'octets dans une section\n"
-" spéciale (sur certaine cible)\n"
-
-#: toplev.c:3760
-msgid " -aux-info <file> Emit declaration info into <file>\n"
-msgstr " -aux-info <fichier> produire une info de déclaration dans le <fichier>\n"
-
-#: toplev.c:3761
-msgid " -quiet Do not display functions compiled or elapsed time\n"
-msgstr " -quiet ne pas afficher les fonctions compilées ou le temps écoulé\n"
-
-#: toplev.c:3762
-msgid " -version Display the compiler's version\n"
-msgstr " -version afficher la version du compilateur\n"
+#: toplev.c:3522
+msgid "branch target register load optimization is not intended to be run twice"
+msgstr "optimisation du chargement du registre cible de branchement est pas prévu pour être exécuté deux fois"
-#: toplev.c:3763
-msgid " -d[letters] Enable dumps from specific passes of the compiler\n"
-msgstr " -d[lettres] autoriser les vidanges pour des passes spécifiques du compilateur\n"
-
-#: toplev.c:3764
-msgid " -dumpbase <file> Base name to be used for dumps from specific passes\n"
-msgstr " -dumpbase <fichier> nom de base à utiliser pour les vidanges de passes spécifiques\n"
-
-#: toplev.c:3766
-msgid " -fsched-verbose=<number> Set the verbosity level of the scheduler\n"
-msgstr " -fsched-verbose=<numéro> initialiser le niveau de verbosité de l'ordonnanceur\n"
-
-#: toplev.c:3768
-msgid " --help Display this information\n"
-msgstr " --help afficher l'aide-mémoire\n"
-
-#: toplev.c:3783
-msgid ""
-"\n"
-"Language specific options:\n"
-msgstr ""
-"\n"
-"Options spécifiques au langage:\n"
-
-#: toplev.c:3795
+#: toplev.c:3689
#, c-format
-msgid " %-23.23s [undocumented]\n"
-msgstr " %-23.23s [non documenté]\n"
-
-#: toplev.c:3803 toplev.c:3817
-#, c-format
-msgid ""
-"\n"
-"There are undocumented %s specific options as well.\n"
-msgstr ""
-"\n"
-"Il y a des options spécifiques %s qui ne sont pas documentés aussi.\n"
-
-#: toplev.c:3807
-#, c-format
-msgid ""
-"\n"
-" Options for %s:\n"
-msgstr ""
-"\n"
-" Options pour %s:\n"
-
-#: toplev.c:3844
msgid ""
"\n"
"Target specific options:\n"
@@ -8153,12 +7026,13 @@ msgstr ""
"\n"
"Options spécifiques à la cible:\n"
-#: toplev.c:3858 toplev.c:3877
+#: toplev.c:3703 toplev.c:3722
#, c-format
-msgid " -m%-23.23s [undocumented]\n"
-msgstr " -m%-23.23s [non documenté]\n"
+msgid " -m%-23s [undocumented]\n"
+msgstr " -m%-23s [non documenté]\n"
-#: toplev.c:3886
+#: toplev.c:3731
+#, c-format
msgid ""
"\n"
"There are undocumented target specific options as well.\n"
@@ -8166,73 +7040,22 @@ msgstr ""
"\n"
"Il y a des options spécifiques à la cible qui ne sont pas documentés aussi.\n"
-#: toplev.c:3888
+#: toplev.c:3733
+#, c-format
msgid " They exist, but they are not documented.\n"
msgstr " Ils existent, mais ils ne sont pas documentés.\n"
-#: toplev.c:3941
+#: toplev.c:3788
#, c-format
msgid "unrecognized gcc debugging option: %c"
msgstr "option gcc de mise au point non reconnue: %c"
-#: toplev.c:4007
-#, fuzzy, c-format
-msgid "`%s': unknown tls-model option"
-msgstr "« %s »: inconnu ou non supporté option -g"
-
-#: toplev.c:4034
-#, c-format
-msgid "unrecognized register name `%s'"
-msgstr "nom de registre non reconnue « %s »"
-
-#: toplev.c:4059 toplev.c:5012
-#, c-format
-msgid "unrecognized option `%s'"
-msgstr "option « %s » non reconnue"
-
-#: toplev.c:4107
-msgid "-Wid-clash-LEN is no longer supported"
-msgstr "-Wid-clash-LEN n'est plus supportée"
-
-#: toplev.c:4184
-#, c-format
-msgid "use -gdwarf -g%d for DWARF v1, level %d"
-msgstr "utiliser -gdwarf -g%d pour DWARF v1, niveau %d"
-
-#: toplev.c:4187
-msgid "use -gdwarf-2 for DWARF v2"
-msgstr "utiliser -gdwarf-2 pour DWARF v2"
-
-#: toplev.c:4192
-#, c-format
-msgid "ignoring option `%s' due to invalid debug level specification"
-msgstr "option « %s » ignorée en raison de la spécification du niveau de mise au poitn invalide"
-
-#: toplev.c:4215 toplev.c:5010
-#, c-format
-msgid "`%s': unknown or unsupported -g option"
-msgstr "« %s »: inconnu ou non supporté option -g"
-
-#: toplev.c:4222
-#, c-format
-msgid "`%s' ignored, conflicts with `-g%s'"
-msgstr "« %s » ignoré, en conflit avec «-g%s»"
-
-#: toplev.c:4304
-msgid "-param option missing argument"
-msgstr "argument manquant pour l'option -param"
-
-#: toplev.c:4313
-#, c-format
-msgid "invalid --param option: %s"
-msgstr "option invalide --param: %s"
-
-#: toplev.c:4325
+#: toplev.c:3850 config/rs6000/rs6000.c:909
#, c-format
-msgid "invalid parameter value `%s'"
-msgstr "valeur du paramètre invalide « %s »"
+msgid "invalid option `%s'"
+msgstr "option invalide « %s »"
-#: toplev.c:4565
+#: toplev.c:3865
#, c-format
msgid ""
"%s%s%s version %s (%s)\n"
@@ -8243,622 +7066,760 @@ msgstr ""
"%s\tcompilé par GNU C version %s.\n"
"%s%s%s version %s (%s) compilé par CC.\n"
-#: toplev.c:4572
+#: toplev.c:3872
#, c-format
msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
-msgstr ""
+msgstr "heuristiques %s%sGGC: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
-#: toplev.c:4630
+#: toplev.c:3924
msgid "options passed: "
msgstr "options passées: "
-#: toplev.c:4659
+#: toplev.c:3953
msgid "options enabled: "
msgstr "options autorisées: "
-#: toplev.c:4718 java/jcf-write.c:3453
+#: toplev.c:4011 java/jcf-write.c:3422
#, c-format
-msgid "can't open %s for writing"
-msgstr "ne peut ouvrir %s en écriture"
+msgid "can't open %s for writing: %m"
+msgstr "ne peut ouvrir %s en écriture: %m"
-#: toplev.c:5002
-#, c-format
-msgid "ignoring command line option '%s'"
-msgstr "option « %s » de la ligne de commande est ignorée"
+#: toplev.c:4094 config/sh/sh.c:6883
+msgid "created and used with different settings of -fpic"
+msgstr "créé et utilisé avec des configurations différentes de -fpic"
-#: toplev.c:5005
+#: toplev.c:4096 config/sh/sh.c:6885
+msgid "created and used with different settings of -fpie"
+msgstr "créé et utilisé avec des configurations différentes de -fpie"
+
+#: toplev.c:4147 config/sh/sh.c:6935
#, c-format
-msgid "(it is valid for %s but not the selected language)"
-msgstr "(c'est valide pour %s mais pas pour le langage séclectionné)"
+msgid "created and used with differing settings of `-m%s'"
+msgstr "créé et utilisé avec des configurations différentes de « -m%s »"
-#: toplev.c:5039
-msgid "-Wuninitialized is not supported without -O"
-msgstr "-Wuninitialized n'est pas supporté sans -O"
+#: toplev.c:4150 config/sh/sh.c:6938
+msgid "out of memory"
+msgstr "mémoire épuisée"
-#: toplev.c:5094
+#: toplev.c:4331
msgid "instruction scheduling not supported on this target machine"
msgstr "instruction d'ordonnancement n'est pas supportée sur cette machine cible"
-#: toplev.c:5098
+#: toplev.c:4335
msgid "this target machine does not have delayed branches"
msgstr "cette machine cible n'a pas de branchments avec délais"
-#: toplev.c:5112
+#: toplev.c:4349
#, c-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr "-f%sleading-underscore n'est pas supporté sur cette machine cible"
-#: toplev.c:5175
+#: toplev.c:4398
+#, c-format
+msgid "target system does not support the \"%s\" debug format"
+msgstr "système cible ne supporte par le format \"%s\" de mise au point"
+
+#: toplev.c:4415
msgid "-ffunction-sections not supported for this target"
msgstr "-ffunction-sections n'est pas supporté pour cette cible"
-#: toplev.c:5180
+#: toplev.c:4420
msgid "-fdata-sections not supported for this target"
msgstr "-fdata-sections n'est pas supporté pour cette machine cible"
-#: toplev.c:5187
+#: toplev.c:4427
msgid "-ffunction-sections disabled; it makes profiling impossible"
msgstr "-ffunction-sections désactivé; cela rend le profilage impossible"
-#: toplev.c:5194
+#: toplev.c:4434
msgid "-fprefetch-loop-arrays not supported for this target"
msgstr "-fprefetch-loop-arrays n'est pas supporté pour cette machine cible"
-#: toplev.c:5200
+#: toplev.c:4440
msgid "-fprefetch-loop-arrays not supported for this target (try -march switches)"
msgstr "-fprefetch-loop-arrays n'est pas supporté sur cette machine cible (essayer -march options)"
-#: toplev.c:5209
+#: toplev.c:4449
msgid "-fprefetch-loop-arrays is not supported with -Os"
msgstr "-fprefetch-loop-arrays n'est pas supporté avec -Os"
-#: toplev.c:5215
+#: toplev.c:4455
msgid "-ffunction-sections may affect debugging on some targets"
msgstr "-ffunction-sections peut affecter la mise au point sur quelques machines cibles."
-#: toplev.c:5327
+#: toplev.c:4557
#, c-format
-msgid "error writing to %s"
-msgstr "erreur d'écriture dans %s"
+msgid "error writing to %s: %m"
+msgstr "erreur d'écriture dans %s: %m"
-#: toplev.c:5329 java/jcf-parse.c:936 java/jcf-write.c:3460
+#: toplev.c:4559 java/jcf-parse.c:902 java/jcf-write.c:3429
#, c-format
-msgid "error closing %s"
-msgstr "erreur de fermeture %s"
+msgid "error closing %s: %m"
+msgstr "erreur de fermeture %s: %m"
-#: tree-dump.c:702
+#: tree-dump.c:692
#, c-format
msgid "could not open dump file `%s'"
msgstr "ne peut ouvrir le fichier de vidange « %s »"
-#: tree-dump.c:778
+#: tree-dump.c:763
#, c-format
-msgid "ignoring unknown option `%.*s' in `-f%s'"
-msgstr "option inconnue «%.*s» ignorée dans «-f%s»"
+msgid "ignoring unknown option `%.*s' in `-fdump-%s'"
+msgstr "option inconnue « %.*s » ignorée dans « -fdump-%s »"
+
+#: tree-inline.c:1016
+msgid "%Jfunction '%F' can never be inlined because it uses alloca (override using the always_inline attribute)"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise alloca (écrasant l'utiliastion de l'attribut always_inline)"
+
+#: tree-inline.c:1029
+msgid "%Jfunction '%F' can never be inlined because it uses setjmp"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise setjmp"
+
+#: tree-inline.c:1044
+msgid "%Jfunction '%F' can never be inlined because it uses variable argument lists"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise une liste variable d'arguments"
+
+#: tree-inline.c:1060
+msgid "%Jfunction '%F' can never be inlined because it uses setjmp-longjmp exception handling"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise le traitement d'exception setjmp-longjmp"
-#: tree.c:3645
+#: tree-inline.c:1078
+msgid "%Jfunction '%F' can never be inlined because it contains a nested function"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient une fonction imbriquée"
+
+#: tree-inline.c:1095
+msgid "%Jfunction '%F' can never be inlined because it contains a computed goto"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient un goto calculé"
+
+#: tree-inline.c:1105
+msgid "%Jfunction '%F' can never be inlined because it contains a nonlocal goto"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle contient un goto qui n'est pas local"
+
+#: tree-inline.c:1128
+msgid "%Jfunction '%F' can never be inlined because it uses variable sized variables"
+msgstr "%Jfonction « %F » ne peut être enligne parce qu'elle utilise une taille variable de variables"
+
+#: tree-inline.c:1338 tree-inline.c:1345
+msgid "%Jinlining failed in call to '%F': %s"
+msgstr "%Jl'enlignage de l'appel à « %F »: %s a échoué"
+
+#: tree-optimize.c:190
+msgid "%Jsize of return value of '%D' is %u bytes"
+msgstr "%Jtaille de la valeur retournée par « %D » est %u octets"
+
+#: tree-optimize.c:193
+msgid "%Jsize of return value of '%D' is larger than %wd bytes"
+msgstr "%Jtaille de la valeur retournée par « %D » supérieure à %wd octets"
+
+#: tree.c:3800
msgid "arrays of functions are not meaningful"
msgstr "tableaux de fonctions n'a pas grand sens"
-#: tree.c:3702
+#: tree.c:3855
msgid "function return type cannot be function"
msgstr "Le type retourné d'une fonction ne peut être une fonction"
-#: tree.c:4557
+#: tree.c:4684
msgid "invalid initializer for bit string"
msgstr "initialisation invalide pour une chaîne de bits"
-#: tree.c:4616
+#: tree.c:4736
#, c-format
msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-#: tree.c:4633
+#: tree.c:4749
#, c-format
msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgstr "vérification de l'arbre: attendait classe « %c », obtenu « %c » (%s) dans %s, à %s:%d"
-#: tree.c:4650
-#, fuzzy, c-format
+#: tree.c:4762
+#, c-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
-msgstr "vérification RTL: accès de elt %d du vecteur avec le dernier elt %d dans %s, à %s:%d"
+msgstr "vérification de l'arbre: accès de elt %d de tree-vec avec %d elts dans %s, à %s:%d"
-#: varasm.c:455 config/i386/winnt.c:611
+#: tree.c:4774
#, c-format
-msgid "%s causes a section type conflict"
-msgstr "%s cause un conflit du type de section"
+msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
+msgstr "vérification de l'arbre: opérande accédé %d de %s avec %d opérandes dans %s, à %s:%d"
-#: varasm.c:841
-#, c-format
-msgid "register name not specified for `%s'"
-msgstr "nom de registre n'est pas spécifié pour « %s »"
+#: varasm.c:434
+msgid "%J%D causes a section type conflict"
+msgstr "%J%D cause un conflit du type de section"
-#: varasm.c:843
-#, c-format
-msgid "invalid register name for `%s'"
-msgstr "nom de registre invalide pour « %s »"
+#: varasm.c:796
+msgid "%Jregister name not specified for '%D'"
+msgstr "%Jnom de registre n'est pas spécifié pour « %D »"
-#: varasm.c:846
-#, c-format
-msgid "data type of `%s' isn't suitable for a register"
-msgstr "type de données de « %s » n'est pas applicable pour un registre"
+#: varasm.c:798
+msgid "%Jinvalid register name for '%D'"
+msgstr "%Jnom de registre invalide pour « %D »"
-#: varasm.c:849
-#, c-format
-msgid "register specified for `%s' isn't suitable for data type"
-msgstr "registre spécifié pour « %s » n'est applicable à un type de données"
+#: varasm.c:800
+msgid "%Jdata type of '%D' isn't suitable for a register"
+msgstr "%Jtype de données de « %D » n'est pas applicable pour un registre"
-#: varasm.c:858
+#: varasm.c:803
+msgid "%Jregister specified for '%D' isn't suitable for data type"
+msgstr "%Jregistre spécifié pour « %D » n'est applicable à un type de données"
+
+#: varasm.c:813
msgid "global register variable has initial value"
msgstr "variable globale registre a une valeur initiale"
-#: varasm.c:861
+#: varasm.c:816
msgid "volatile register variables don't work as you might wish"
msgstr "variables resgistres volatiles ne fonctionne pas comme vous le souhaiteriez"
-#: varasm.c:894
-#, c-format
-msgid "register name given for non-register variable `%s'"
-msgstr "nom de registre donné pour une variable non registre « %s »"
+#: varasm.c:848
+msgid "%Jregister name given for non-register variable '%D'"
+msgstr "%Jnom de registre donné pour une variable non registre « %D »"
-#: varasm.c:1542
-#, c-format
-msgid "alignment of `%s' is greater than maximum object file alignment. Using %d"
-msgstr "alignement de « %s » est plus grand que l'alignement maximal du fichier objet. %d est utilisé."
+#: varasm.c:1380
+msgid "%Jstorage size of `%D' isn't known"
+msgstr "%Jtaille de stockage de « %D » n'est pas connue"
+
+#: varasm.c:1434
+msgid "%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
+msgstr "%Jalignement de « %D » est plus grand que l'alignement maximal du fichier objet. %d est utilisé."
-#: varasm.c:1584
+#: varasm.c:1480
msgid "thread-local COMMON data not implemented"
-msgstr ""
+msgstr "thread-local COMMON data n'est pas implanté"
-#: varasm.c:1610
-#, c-format
-msgid "requested alignment for %s is greater than implemented alignment of %d"
-msgstr "alignement requis pour %s est plus grand que l'alignement implanté de %d"
+#: varasm.c:1505
+msgid "%Jrequested alignment for '%D' is greater than implemented alignment of %d"
+msgstr "%Jrequête d'alignement pour '%D' est plus grand que l'alignement implanté de %d"
-#: varasm.c:4048
+#: varasm.c:3787
msgid "initializer for integer value is too complicated"
msgstr "initialisation d'entier trop compliquée"
-#: varasm.c:4053
+#: varasm.c:3792
msgid "initializer for floating value is not a floating constant"
msgstr "l'initialisation d'une valeur à virgule flottante n'est pas une constante à virgule flottante"
-#: varasm.c:4120
+#: varasm.c:3858
msgid "unknown set constructor type"
msgstr "type de jeu de constructeurs inconnu"
-#: varasm.c:4334
+#: varasm.c:4077
#, c-format
msgid "invalid initial value for member `%s'"
msgstr "valeur initiale invalide pour le membre « %s »"
-#: varasm.c:4525 varasm.c:4568
-#, c-format
-msgid "weak declaration of `%s' must precede definition"
-msgstr "déclaraion faible de « %s » qui doit être précédée d'une définition"
+#: varasm.c:4264 varasm.c:4308
+msgid "%Jweak declaration of '%D' must precede definition"
+msgstr "%Jdéclaration faible de « %D » qui doit être précédée d'une définition"
-#: varasm.c:4532
-#, c-format
-msgid "weak declaration of `%s' after first use results in unspecified behavior"
-msgstr "déclaraion faible de « %s » après une première utilisation des résultats d'un comportement non spécifié"
+#: varasm.c:4272
+msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
+msgstr "%Jdéclaration faible de « %D » après une première utilisation des résultats d'un comportement non spécifié"
-#: varasm.c:4566
-#, c-format
-msgid "weak declaration of `%s' must be public"
-msgstr "déclaration faible de « %s » doit être publique"
+#: varasm.c:4306
+msgid "%Jweak declaration of '%D' must be public"
+msgstr "%Jdéclaration faible de « %D » doit être publique"
-#: varasm.c:4575
-#, c-format
-msgid "weak declaration of `%s' not supported"
-msgstr "déclaration faible de « %s » n'est pas supportée"
+#: varasm.c:4315
+msgid "%Jweak declaration of '%D' not supported"
+msgstr "%Jdéclaration faible de « %D » n'est pas supportée"
-#: varasm.c:4602 varasm.c:4677
+#: varasm.c:4344 varasm.c:4434
msgid "only weak aliases are supported in this configuration"
msgstr "seulement les alias faibles sont supportés dans cette configuration"
-#: varasm.c:4685
+#: varasm.c:4437
msgid "alias definitions not supported in this configuration; ignored"
msgstr "définitions d'alias ne sont pas supportés dans cette configuration; ignoré"
-#: varasm.c:4716
-#, fuzzy
+#: varasm.c:4466
msgid "visibility attribute not supported in this configuration; ignored"
-msgstr "définitions d'alias ne sont pas supportés dans cette configuration; ignoré"
+msgstr "visibilité de l'attribut n'est pas supporté dans cette configuration; ignoré"
-#: varray.c:134
+#: varray.c:194
#, c-format
msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
-msgstr "tableau virtuel %s[%lu]: élément %lu hors gamme dans %s, à %s:%d"
+msgstr "tableau virtuel %s[%lu]: élément %lu hors limite dans %s, à %s:%d"
+
+#: varray.c:204
+#, c-format
+msgid "underflowed virtual array %s in %s, at %s:%d"
+msgstr "sous débordement du tableau virtuele %s dans %s, à %s:%d"
#. Print an error message for unrecognized stab codes.
-#: xcoffout.c:175
+#: xcoffout.c:173
#, c-format
msgid "no sclass for %s stab (0x%x)\n"
msgstr "pas de sclass pour le stab %s (0x%x)\n"
-#: pretty-print.h:97
-#, fuzzy, c-format
-msgid "#`%s' not supported by %s#"
-msgstr "« %s » n'est pas supporté par %s"
+#.
+#. Local variables:
+#. mode:c
+#. End:
+#.
+#: diagnostic.def:1
+msgid "fatal error: "
+msgstr "erreur fatale: "
+
+#: diagnostic.def:2
+msgid "internal compiler error: "
+msgstr "erreur interne du compilateur: "
+
+#: diagnostic.def:3
+msgid "error: "
+msgstr "erreur: "
+
+#: diagnostic.def:4
+msgid "sorry, unimplemented: "
+msgstr "désolé, pas implanté: "
+
+#: diagnostic.def:6
+msgid "anachronism: "
+msgstr "anachronisme: "
+
+#: diagnostic.def:7
+msgid "note: "
+msgstr "note: "
+
+#: diagnostic.def:8
+msgid "debug: "
+msgstr "mise au point: "
#: params.def:53
-#, fuzzy
msgid "The maximum number of instructions in a single function eligible for inlining"
-msgstr "Le nombre maximum d'instructions dans une fonction qui est éligible au type enligne"
+msgstr "Le nombre maximum d'instructions dans une fonction simple éligible au type enligne"
#: params.def:65
-#, fuzzy
msgid "The maximum number of instructions when automatically inlining"
-msgstr "Le nombre maximum d'instructions dans une fonction qui est éligible au type enligne"
-
-#: params.def:84
-#, fuzzy
-msgid "The maximum number of instructions by repeated inlining before gcc starts to throttle inlining"
-msgstr "Le nombre maximum d'instructions dans une fonction qui est éligible au type enligne"
-
-#: params.def:97
-msgid "The slope of the linear function throttling inlining after the recursive inlining limit has been reached is given by the negative reciprocal value of this parameter"
-msgstr ""
-
-#: params.def:110
-#, fuzzy
-msgid "The number of instructions in a single functions still eligible to inlining after a lot recursive inlining"
-msgstr "Le nombre maximum d'instructions dans une fonction qui est éligible au type enligne"
+msgstr "Le nombre maximum d'instructions lorsqu'automatiquement de type enligne"
-#: params.def:120
-#, fuzzy
+#: params.def:75
msgid "The maximum number of instructions for the RTL inliner"
-msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
+msgstr "Le nombre maximum d'instructions pour la fonction d'enlignage RTL"
-#: params.def:131
+#: params.def:86
msgid "The maximum number of instructions to consider to fill a delay slot"
msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
-#: params.def:142
+#: params.def:97
msgid "The maximum number of instructions to consider to find accurate live register information"
msgstr "Le nombre maximum d'instructions à considérer pour repérer un registre d'information actif et précis"
-#: params.def:152
+#: params.def:107
msgid "The maximum length of scheduling's pending operations list"
msgstr "La longueur maximale de la liste des opération en attente d'ordonnancement"
-#: params.def:159
+#: params.def:112
+msgid "The size of function body to be considered large"
+msgstr "La taille du corps de la fonction est considéré comme étant grande"
+
+#: params.def:116
+msgid "Maximal growth due to inlining of large function (in percent)"
+msgstr "Croissance maximal en raison de l'enlignage d'une grande fonction (en pourcent)"
+
+#: params.def:120
+msgid "how much can given compilation unit grow because of the inlining (in percent)"
+msgstr "quelle croissance d'une unité de compilation peut être tolérée en raison de l'enlignage (en pourcent)"
+
+#: params.def:127
msgid "The maximum amount of memory to be allocated by GCSE"
msgstr "La taille maximale de mémoire à être alloué par GCSE"
-#: params.def:164
+#: params.def:132
msgid "The maximum number of passes to make when doing GCSE"
msgstr "Le nombre maxium de passes à effectuer lors de l'exécution de GCSE"
-#: params.def:171
-#, fuzzy
+#: params.def:139
msgid "The maximum number of instructions to consider to unroll in a loop"
-msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
+msgstr "Le nombre maximum d'instructions à considérer à inclure dans une boucle"
-#: params.def:176
-msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
-msgstr ""
+#: params.def:145
+msgid "The maximum number of instructions to consider to unroll in a loop on average"
+msgstr "Le nombre maximum d'instructions à considérer à inclure dans une boucle en moyenne"
+
+#: params.def:150
+msgid "The maximum number of unrollings of a single loop"
+msgstr "Le nombre maximum d'instructions à inclure dans une boucle simple"
+
+#: params.def:155
+msgid "The maximum number of insns of a peeled loop"
+msgstr "Le nombre maximum d'insns de boucle réduite"
+
+#: params.def:160
+msgid "The maximum number of peelings of a single loop"
+msgstr "Le nombre maxium de passes de réduction d'une boucle simple"
+
+#: params.def:165
+msgid "The maximum number of insns of a completely peeled loop"
+msgstr "Le nombre maximum d'insns d'une boucle complètement réduite"
+
+#: params.def:170
+msgid "The maximum number of peelings of a single loop that is peeled completely"
+msgstr "Le nombre maximum de réductions d'une boucle simple qui a été complètement réduite"
+
+#: params.def:175
+msgid "The maximum number of insns of a peeled loop that rolls only once"
+msgstr "Le nombre maximum d'insns d'une boucle réduite qui tourne une seule fois"
#: params.def:181
-msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot"
-msgstr ""
+msgid "The maximum number of insns of an unswitched loop"
+msgstr "Le nombre maximum d'insns d'une boucle sans branchement"
#: params.def:186
-msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
-msgstr ""
+msgid "The maximum number of unswitchings in a single loop"
+msgstr "Le nombre maximum de non branchement dans une boucle simple"
#: params.def:191
-msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
-msgstr ""
+msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
+msgstr "Sélectionner la fraction du décompte maximal de répétition du bloc de base dans le programme selon le bloc de bsae donné doit être considéré comme chaud « hot »"
#: params.def:196
-msgid "Maximal code growth caused by tail duplication (in percents)"
-msgstr ""
+msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot"
+msgstr "Sélectionner la fraction de la fréquence maximale d'exécutions du bloc de base dans la fonction selon le bloc de bsae donné doit être considéré comme chaud « hot »"
-#: params.def:200
-msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percents)"
-msgstr ""
+#: params.def:201
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
+msgstr "Le pourcentage de fonction, pondéré par la fréquence d'exécutions, qui doit être couvert la formation de la trace. Utilisé lorsque le feedback par profile est disponible"
-#: params.def:205
-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is available"
-msgstr ""
+#: params.def:206
+msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
+msgstr "Le pourcentage de fonction, pondéré par la fréquence d'exécutions, qui doit être couvert la formation de la trace. Utilisé lorsque le feedback par profilage n'est disponible"
-#: params.def:210
-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percents). Used when profile feedback is not available"
-msgstr ""
+#: params.def:211
+msgid "Maximal code growth caused by tail duplication (in percent)"
+msgstr "Croissance maximal du code en raison de duplication de queue (en pourcent)"
+
+#: params.def:215
+msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)"
+msgstr "Stopper la croissance renversée si la probabilité inverse des meilleures bordures est inférieure à ce seuil (en pourcent)"
+
+#: params.def:220
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available"
+msgstr "Stopper la croissance anticipée si la probabilité des meilleures bordures est inférieure à ce seuil (en pourcent). Utilisé lorsque le feedback par profilage est disponible"
-#: params.def:217
-#, fuzzy
+#: params.def:225
+msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available"
+msgstr "Stopper la croissance anticipée si la probabilité des meilleures bordures est inférieure à ce seuil (en pourcent). Utilisé lorsque le feedback par profilage n'est pas disponible"
+
+#: params.def:232
msgid "The maximum number of incoming edges to consider for crossjumping"
-msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
+msgstr "Le nombre maximum de bordures à considérer pour les sauts croisés"
-#: params.def:230
-msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap."
-msgstr ""
+#: params.def:238
+msgid "The maximum length of path considered in cse"
+msgstr "La longueur maximale des chemins considérés dans cse"
-#: params.def:236
-msgid "Minimum heap size before we start collecting garbage, in kilobytes."
-msgstr ""
+#: params.def:243
+msgid "The maximum memory locations recorded by cselib"
+msgstr "Le nombre maximum de localisations mémoire enregistrées par cselib"
+
+#: params.def:256
+msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap"
+msgstr "L'expansion minimale des tas pour lancer la collecte des rebuts, en pourcentage de la taille totale du tas."
+
+#: params.def:262
+msgid "Minimum heap size before we start collecting garbage, in kilobytes"
+msgstr "La taille minimale du tas avant de lancer la collecte des rebuts, en kilo-octets."
+
+#: params.def:270
+msgid "The maximum number of instructions to search backward when looking for equivalent reload"
+msgstr "Le nombre maximum d'instructions à rechercher antérieurement lors d'une recherche d'une recharge équivalente"
#: config/darwin-c.c:75
msgid "too many #pragma options align=reset"
msgstr "trop d'options pour #pragma pour align=reset"
-#: config/darwin-c.c:97 config/darwin-c.c:100 config/darwin-c.c:102
-#: config/darwin-c.c:104
+#: config/darwin-c.c:95 config/darwin-c.c:98 config/darwin-c.c:100
+#: config/darwin-c.c:102
msgid "malformed '#pragma options', ignoring"
msgstr "'#pragma options» mal composé, ignoré"
-#: config/darwin-c.c:107
+#: config/darwin-c.c:105
msgid "junk at end of '#pragma options'"
msgstr "rebut à la fin de '#pragma options'"
-#: config/darwin-c.c:117
+#: config/darwin-c.c:115
msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
msgstr "'#pragma options align={mac68k|power|reset}» mal composé, ignoré"
-#: config/darwin-c.c:130
+#: config/darwin-c.c:127
msgid "missing '(' after '#pragma unused', ignoring"
msgstr "«(» manquante après '#pragma unused', ignoré"
-#: config/darwin-c.c:148
+#: config/darwin-c.c:145
msgid "missing ')' after '#pragma unused', ignoring"
msgstr "«(» manquante après '#pragma unused', ignoré"
-#: config/darwin-c.c:151
+#: config/darwin-c.c:148
msgid "junk at end of '#pragma unused'"
msgstr "rebut à la fin de '#pragma unused'"
-#: config/lynx-ng.h:97 config/lynx.h:121 config/rs6000/lynx.h:100
+#: config/darwin.c:1347
+msgid "internal and protected visibility attributes not supportedin this configuration; ignored"
+msgstr "visibilité des attributs internes et protégées n'est pas supportée dans cette configuration; ignoré"
+
+#: config/lynx-ng.h:97 config/lynx.h:116 config/rs6000/lynx.h:73
msgid "-msystem-v and -p are incompatible"
msgstr "-msystem-v et -p sont incompatibles"
-#: config/lynx-ng.h:99 config/lynx.h:123 config/rs6000/lynx.h:102
+#: config/lynx-ng.h:99 config/lynx.h:118 config/rs6000/lynx.h:75
msgid "-msystem-v and -mthreads are incompatible"
msgstr "-msystem-v et -mthreads sont incompatibles"
-#: config/alpha/alpha.c:342
+#: config/windiss.h:37
+msgid "profiler support for WindISS"
+msgstr "support du profileur pour WindISS"
+
+#: config/alpha/alpha.c:231
#, c-format
msgid "-f%s ignored for Unicos/Mk (not supported)"
msgstr "-f%s ignoré pour Unicos/Mk (non supporté)"
-#: config/alpha/alpha.c:366
+#: config/alpha/alpha.c:255
msgid "-mieee not supported on Unicos/Mk"
msgstr "-mieee n'est pas supporté sur Unicos/Mk"
-#: config/alpha/alpha.c:377
+#: config/alpha/alpha.c:266
msgid "-mieee-with-inexact not supported on Unicos/Mk"
msgstr "-mieee-with-inexact n'est pas supporté sur Unicos/Mk"
-#: config/alpha/alpha.c:394
+#: config/alpha/alpha.c:283
#, c-format
msgid "bad value `%s' for -mtrap-precision switch"
msgstr "valeur « %s » erronée pour l'option -mtrap-precision"
-#: config/alpha/alpha.c:408
+#: config/alpha/alpha.c:297
#, c-format
msgid "bad value `%s' for -mfp-rounding-mode switch"
msgstr "valeur « %s » erronée pour l'option -mfp-rounding-mode"
-#: config/alpha/alpha.c:423
+#: config/alpha/alpha.c:312
#, c-format
msgid "bad value `%s' for -mfp-trap-mode switch"
msgstr "valeur « %s » erronée pour l'option -mfp-trap-mode"
-#: config/alpha/alpha.c:435
-#, fuzzy, c-format
+#: config/alpha/alpha.c:324 config/rs6000/rs6000.c:1063
+#, c-format
msgid "bad value `%s' for -mtls-size switch"
-msgstr "valeur « %s » erronée pour l'option -mcpu"
+msgstr "valeur « %s » erronée pour l'option -mtls-size"
-#: config/alpha/alpha.c:454 config/alpha/alpha.c:466
+#: config/alpha/alpha.c:343 config/alpha/alpha.c:355
#, c-format
msgid "bad value `%s' for -mcpu switch"
msgstr "valeur « %s » erronée pour l'option -mcpu"
-#: config/alpha/alpha.c:473
+#: config/alpha/alpha.c:362
msgid "trap mode not supported on Unicos/Mk"
msgstr "mode trappe n'est pas supporté sur Unicos/Mk"
-#: config/alpha/alpha.c:480
+#: config/alpha/alpha.c:369
msgid "fp software completion requires -mtrap-precision=i"
msgstr "complétion logicielle FP requiert -mtrap-precision=i"
-#: config/alpha/alpha.c:496
+#: config/alpha/alpha.c:385
msgid "rounding mode not supported for VAX floats"
msgstr "mode d'arondissement n'est pas supporté pour les flottants sur VAX"
-#: config/alpha/alpha.c:501
+#: config/alpha/alpha.c:390
msgid "trap mode not supported for VAX floats"
msgstr "mode trappe n'est pas supporté avec les flottants sur VAX"
-#: config/alpha/alpha.c:530
+#: config/alpha/alpha.c:419
#, c-format
msgid "L%d cache latency unknown for %s"
msgstr "latence de la cache L%d inconnue pour %s"
-#: config/alpha/alpha.c:545
+#: config/alpha/alpha.c:434
#, c-format
msgid "bad value `%s' for -mmemory-latency"
msgstr "valeur « %s » erronée pour -mmemory-latency"
-#: config/alpha/alpha.c:5604 config/m88k/m88k.c:2889 config/romp/romp.c:754
-#: config/romp/romp.c:761
+#: config/alpha/alpha.c:5411
#, c-format
msgid "invalid %%H value"
msgstr "valeur %%H invalide"
-#: config/alpha/alpha.c:5625
+#: config/alpha/alpha.c:5432
#, c-format
msgid "invalid %%J value"
msgstr "valeur %%J invalide"
-#: config/alpha/alpha.c:5641 config/ia64/ia64.c:3970 config/m88k/m88k.c:3034
+#: config/alpha/alpha.c:5448 config/ia64/ia64.c:4243
#, c-format
msgid "invalid %%r value"
msgstr "valeur %%r invalide"
-#: config/alpha/alpha.c:5651 config/rs6000/rs6000.c:7737
+#: config/alpha/alpha.c:5458 config/rs6000/rs6000.c:8944
+#: config/xtensa/xtensa.c:1999
#, c-format
msgid "invalid %%R value"
msgstr "valeur %%R invalide"
-#: config/alpha/alpha.c:5657 config/rs6000/rs6000.c:7663
+#: config/alpha/alpha.c:5464 config/rs6000/rs6000.c:8863
+#: config/xtensa/xtensa.c:1966
#, c-format
msgid "invalid %%N value"
msgstr "valeur %%N invalide"
-#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:7691
+#: config/alpha/alpha.c:5472 config/rs6000/rs6000.c:8891
#, c-format
msgid "invalid %%P value"
msgstr "valeur %%P invalide"
-#: config/alpha/alpha.c:5673 config/m88k/m88k.c:2895 config/romp/romp.c:740
-#: config/romp/romp.c:747
+#: config/alpha/alpha.c:5480
#, c-format
msgid "invalid %%h value"
msgstr "valeur %%h invalide"
-#: config/alpha/alpha.c:5681 config/romp/romp.c:698
+#: config/alpha/alpha.c:5488 config/xtensa/xtensa.c:1992
#, c-format
msgid "invalid %%L value"
msgstr "valeur %%L invalide"
-#: config/alpha/alpha.c:5720 config/rs6000/rs6000.c:7645
+#: config/alpha/alpha.c:5527 config/rs6000/rs6000.c:8845
#, c-format
msgid "invalid %%m value"
msgstr "valeur %%m invalide"
-#: config/alpha/alpha.c:5728 config/rs6000/rs6000.c:7653
+#: config/alpha/alpha.c:5535 config/rs6000/rs6000.c:8853
#, c-format
msgid "invalid %%M value"
msgstr "valeur %%M invalide"
-#: config/alpha/alpha.c:5772
+#: config/alpha/alpha.c:5579
#, c-format
msgid "invalid %%U value"
msgstr "valeur %%U invalide"
-#: config/alpha/alpha.c:5784 config/alpha/alpha.c:5798 config/romp/romp.c:706
-#: config/rs6000/rs6000.c:7745
+#: config/alpha/alpha.c:5591 config/alpha/alpha.c:5605
+#: config/rs6000/rs6000.c:8952
#, c-format
msgid "invalid %%s value"
msgstr "valeur %%s invalide"
-#: config/alpha/alpha.c:5821 config/m88k/m88k.c:2997
+#: config/alpha/alpha.c:5628
#, c-format
msgid "invalid %%C value"
msgstr "valeur %%C invalide"
-#: config/alpha/alpha.c:5858 config/m88k/m88k.c:3018
-#: config/rs6000/rs6000.c:7502
+#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:8702
#, c-format
msgid "invalid %%E value"
msgstr "valeur %%E invalide"
-#: config/alpha/alpha.c:5883 config/alpha/alpha.c:5933
-#, fuzzy
+#: config/alpha/alpha.c:5690 config/alpha/alpha.c:5738
msgid "unknown relocation unspec"
-msgstr "type de jeu de constructeurs inconnu"
+msgstr "relocalisation unspec inconnue"
-#: config/alpha/alpha.c:5892 config/romp/romp.c:981
-#: config/rs6000/rs6000.c:8052
+#: config/alpha/alpha.c:5699 config/rs6000/rs6000.c:9265
#, c-format
msgid "invalid %%xn code"
msgstr "valeur %%xn invalide"
-#: config/alpha/alpha.c:6618 config/alpha/alpha.c:6621 config/s390/s390.c:6069
-#: config/s390/s390.c:6072
+#: config/alpha/alpha.c:6634 config/alpha/alpha.c:6637 config/s390/s390.c:6572
+#: config/s390/s390.c:6575
msgid "bad builtin fcode"
-msgstr ""
+msgstr "construit interne erroné de fcode"
#. 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/alpha/alpha.h:279 config/i386/i386.h:294 config/i386/i386.h:296
-#: config/i386/i386.h:298 config/ns32k/ns32k.h:140 config/rs6000/rs6000.h:292
-#: config/s390/s390.h:68 config/sparc/sparc.h:522 config/sparc/sparc.h:527
+#. WARNING: Do not mark empty strings for translation, as calling
+#. gettext on an empty string does NOT return an empty
+#. string.
+#. 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/alpha/alpha.h:286 config/i386/i386.h:327 config/i386/i386.h:329
+#: config/i386/i386.h:331 config/ns32k/ns32k.h:140 config/s390/s390.h:124
+#: config/sparc/sparc.h:537 config/sparc/sparc.h:542
msgid "Use hardware fp"
msgstr "Utiliser le FP matériel"
-#: config/alpha/alpha.h:280 config/i386/i386.h:295 config/i386/i386.h:297
-#: config/rs6000/rs6000.h:294 config/sparc/sparc.h:524
-#: config/sparc/sparc.h:529
+#: config/alpha/alpha.h:287 config/i386/i386.h:328 config/i386/i386.h:330
+#: config/sparc/sparc.h:539 config/sparc/sparc.h:544
msgid "Do not use hardware fp"
msgstr "Ne pas utiliser l'unité FP matérielle"
-#: config/alpha/alpha.h:281
+#: config/alpha/alpha.h:288
msgid "Use fp registers"
msgstr "Utiliser les registres FP"
-#: config/alpha/alpha.h:283
+#: config/alpha/alpha.h:290
msgid "Do not use fp registers"
msgstr "Ne pas utiliser les registres FP"
-#: config/alpha/alpha.h:284
+#: config/alpha/alpha.h:291
msgid "Do not assume GAS"
msgstr "Ne pas présumer la présence de GAS"
-#: config/alpha/alpha.h:285
+#: config/alpha/alpha.h:292
msgid "Assume GAS"
msgstr "Présumer la présence de GAS"
-#: config/alpha/alpha.h:287
+#: config/alpha/alpha.h:294
msgid "Request IEEE-conformant math library routines (OSF/1)"
msgstr "Requête des routine de la bibliothèque mathématique conforme IEEE (OSF/1)"
-#: config/alpha/alpha.h:289
+#: config/alpha/alpha.h:296
msgid "Emit IEEE-conformant code, without inexact exceptions"
msgstr "Produire du code conforme IEEE, sans exceptions inexactes"
-#: config/alpha/alpha.h:291
+#: config/alpha/alpha.h:298
msgid "Emit IEEE-conformant code, with inexact exceptions"
msgstr "Produire du code conforme IEEE, avec exceptions inexactes"
-#: config/alpha/alpha.h:293
+#: config/alpha/alpha.h:300
msgid "Do not emit complex integer constants to read-only memory"
msgstr "Ne pas produire des constantes entières complexes en mémoire en mode lecture seulement"
-#: config/alpha/alpha.h:294
+#: config/alpha/alpha.h:301
msgid "Use VAX fp"
msgstr "Utiliser les registres FP sur VAX"
-#: config/alpha/alpha.h:295
+#: config/alpha/alpha.h:302
msgid "Do not use VAX fp"
msgstr "Ne pas utiliser les registres FP sur VAX"
-#: config/alpha/alpha.h:296
+#: config/alpha/alpha.h:303
msgid "Emit code for the byte/word ISA extension"
msgstr "Produire du code pour les octets/mots des extensions ISA"
-#: config/alpha/alpha.h:299
+#: config/alpha/alpha.h:306
msgid "Emit code for the motion video ISA extension"
msgstr "Produire du code pour les extensions vidéo ISA"
-#: config/alpha/alpha.h:302
+#: config/alpha/alpha.h:309
msgid "Emit code for the fp move and sqrt ISA extension"
msgstr "Produire du code pour les déplacements FP et sqrt des extensions ISA"
-#: config/alpha/alpha.h:304
+#: config/alpha/alpha.h:311
msgid "Emit code for the counting ISA extension"
msgstr "Produire du code pour les extensions ISA de comptage"
-#: config/alpha/alpha.h:307
+#: config/alpha/alpha.h:314
msgid "Emit code using explicit relocation directives"
msgstr "Produire du code utilisant des directives explicites de relocalisation"
-#: config/alpha/alpha.h:310
+#: config/alpha/alpha.h:317
msgid "Emit 16-bit relocations to the small data areas"
msgstr "Produire du code de 16 bits pour le relocalisation des petites zones de données"
-#: config/alpha/alpha.h:312
+#: config/alpha/alpha.h:319
msgid "Emit 32-bit relocations to the small data areas"
msgstr "Produire du code de 32 bits pour le relocalisation des petites zones de données"
-#: config/alpha/alpha.h:314
+#: config/alpha/alpha.h:321
+msgid "Emit direct branches to local functions"
+msgstr "Omettre le branchement direct aux fonctions locales"
+
+#: config/alpha/alpha.h:324
msgid "Emit rdval instead of rduniq for thread pointer"
-msgstr ""
+msgstr "Produire rdval au lieu de rduniq pour le pointeur de thread"
#. For -mcpu=
#. For -mtune=
@@ -8867,292 +7828,313 @@ msgstr ""
#. For -mtrap-precision=[p|f|i]
#. For -mmemory-latency=
#. For -mtls-size=
-#: config/alpha/alpha.h:343
+#: config/alpha/alpha.h:353
msgid "Use features of and schedule given CPU"
msgstr "Utiliser les options et ordonnancer pour le processeur donné "
-#: config/alpha/alpha.h:345
+#: config/alpha/alpha.h:355
msgid "Schedule given CPU"
msgstr "Ordonnancer le processeur donné"
-#: config/alpha/alpha.h:347
+#: config/alpha/alpha.h:357
msgid "Control the generated fp rounding mode"
msgstr "Contrôler le mode d'arondissement FP généré"
-#: config/alpha/alpha.h:349
+#: config/alpha/alpha.h:359
msgid "Control the IEEE trap mode"
msgstr "Contrôler le mode trappe IEEE"
-#: config/alpha/alpha.h:351
+#: config/alpha/alpha.h:361
msgid "Control the precision given to fp exceptions"
msgstr "Contrôler la précision donnée des exceptions FP"
-#: config/alpha/alpha.h:353
+#: config/alpha/alpha.h:363
msgid "Tune expected memory latency"
msgstr "Ajuster la latence mémoire attendue"
-#: config/alpha/alpha.h:355 config/ia64/ia64.h:225
+#: config/alpha/alpha.h:365 config/ia64/ia64.h:267 config/rs6000/sysv4.h:90
msgid "Specify bit size of immediate TLS offsets"
-msgstr ""
+msgstr "Spécifier la taille de bit des décalages immédiats TLS"
-#: config/arc/arc.c:135
+#: config/arc/arc.c:147
#, c-format
msgid "bad value (%s) for -mcpu switch"
msgstr "valeur (%s) erronée pour l'option -mcpu"
-#: config/arc/arc.c:362
+#: config/arc/arc.c:369
#, c-format
msgid "argument of `%s' attribute is not a string constant"
msgstr "argument de l'attribut « %s » n'est pas une chaîne de constante"
-#: config/arc/arc.c:369
+#: config/arc/arc.c:376
#, c-format
msgid "argument of `%s' attribute is not \"ilink1\" or \"ilink2\""
msgstr "l'argument de l'attribut « %s » n'est pas «ilink1» ou «ilink2 »"
-#: config/arc/arc.c:1708 config/m32r/m32r.c:2286
+#: config/arc/arc.c:1714 config/m32r/m32r.c:2325
#, c-format
msgid "invalid operand to %%R code"
msgstr "opérande invalide pour le code %%R"
-#: config/arc/arc.c:1740 config/m32r/m32r.c:2309
+#: config/arc/arc.c:1746 config/m32r/m32r.c:2348
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr "opérande invalide pour le code %%H/%%L"
-#: config/arc/arc.c:1763 config/m32r/m32r.c:2385
+#: config/arc/arc.c:1769 config/m32r/m32r.c:2419
#, c-format
msgid "invalid operand to %%U code"
msgstr "opérande invalide pour le code %%U"
-#: config/arc/arc.c:1774
+#: config/arc/arc.c:1780
#, c-format
msgid "invalid operand to %%V code"
msgstr "opérande invalide pour le code %%V"
#. Unknown flag.
-#: config/arc/arc.c:1781 config/m32r/m32r.c:2424 config/sparc/sparc.c:6533
+#. Undocumented flag.
+#: config/arc/arc.c:1787 config/m32r/m32r.c:2446 config/sparc/sparc.c:6985
msgid "invalid operand output code"
msgstr "opérande invalide pour le code de sortie"
-#: config/arm/arm.c:458
+#: config/arm/arm.c:520
#, c-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr "l'option -mcpu=%s est en conflit avec l'option -march= "
-#: config/arm/arm.c:468 config/rs6000/rs6000.c:558 config/sparc/sparc.c:393
+#: config/arm/arm.c:530 config/rs6000/rs6000.c:759 config/sparc/sparc.c:424
#, c-format
msgid "bad value (%s) for %s switch"
msgstr "valeur (%s) erronée pour l'option %s"
-#: config/arm/arm.c:604
+#: config/arm/arm.c:672
msgid "target CPU does not support APCS-32"
msgstr "le processeur cible ne supporte pas APCS-32"
-#: config/arm/arm.c:609
+#: config/arm/arm.c:677
msgid "target CPU does not support APCS-26"
msgstr "le processeur cible ne supporte pas APCS-26"
-#: config/arm/arm.c:615
+#: config/arm/arm.c:683
msgid "target CPU does not support interworking"
msgstr "le processeur cible ne supporte pas l'inter-réseautage"
-#: config/arm/arm.c:621
+#: config/arm/arm.c:689
msgid "target CPU does not support THUMB instructions"
msgstr "le processeur cible ne supporte pas les instructions THUMB"
-#: config/arm/arm.c:635
+#: config/arm/arm.c:703
msgid "enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr "autoriser le support de pistage arrière si seulement significatif lors de la compilation pour le Thumb"
-#: config/arm/arm.c:638
+#: config/arm/arm.c:706
msgid "enabling callee interworking support is only meaningful when compiling for the Thumb"
msgstr "autoriser le support d'inter-réseautage des appelés si seulement significatif lors de la compilation pour le Thumb"
-#: config/arm/arm.c:641
+#: config/arm/arm.c:709
msgid "enabling caller interworking support is only meaningful when compiling for the Thumb"
msgstr "autoriser le support d'inter-réseautage des appelants si seulement significatif lors de la compilation pour le Thumb"
-#: config/arm/arm.c:647
+#: config/arm/arm.c:715
msgid "interworking forces APCS-32 to be used"
msgstr "l'inter-réseautage force l'utilisation de APCS-32"
-#: config/arm/arm.c:653
+#: config/arm/arm.c:721
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr "-mapcs-stack-check incompatible avec -mno-apcs-frame"
-#: config/arm/arm.c:661
+#: config/arm/arm.c:729
msgid "-fpic and -mapcs-reent are incompatible"
msgstr "-fpic et -mapcs-reent sont incompatibles"
-#: config/arm/arm.c:664
+#: config/arm/arm.c:732
msgid "APCS reentrant code not supported. Ignored"
msgstr "Code réentrant APCS n'est pas supporté. Ignoré"
-#: config/arm/arm.c:672
+#: config/arm/arm.c:740
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr "-g avec -mno-apcs-frame peut ne pas donner une mise au point sensée"
-#: config/arm/arm.c:680
+#: config/arm/arm.c:748
msgid "passing floating point arguments in fp regs not yet supported"
msgstr "passage d'argument en virgule flottante dans les registres FP n'est pas encore supporté"
-#: config/arm/arm.c:709
+#: config/arm/arm.c:792
#, c-format
msgid "invalid floating point emulation option: -mfpe-%s"
msgstr "option d'émulation en virgule flottante invalide: -mfpe-%s"
-#: config/arm/arm.c:733
+#: config/arm/arm.c:803
+msgid "-mfpe switch not supported by ep9312 target cpu - ignored."
+msgstr "opeion -mfpe n'est pas supportée par le processeur cible ep9312 - ignoré"
+
+#: config/arm/arm.c:823
msgid "structure size boundary can only be set to 8 or 32"
msgstr "taille des bornes de la structure peut seulement être 8 ou 32"
-#: config/arm/arm.c:741
+#: config/arm/arm.c:831
msgid "-mpic-register= is useless without -fpic"
msgstr "-mpic-register= est inutile sans -fpic"
-#: config/arm/arm.c:748
+#: config/arm/arm.c:838
#, c-format
msgid "unable to use '%s' for PIC register"
msgstr "incapable d'utiliser « %s » pour un registre PIC"
-#: config/arm/arm.c:2064 config/arm/arm.c:2087 config/avr/avr.c:4794
-#: config/c4x/c4x.c:4644 config/h8300/h8300.c:3667 config/i386/i386.c:1396
-#: config/i386/i386.c:1425 config/ip2k/ip2k.c:3224
-#: config/m68hc11/m68hc11.c:1267 config/mcore/mcore.c:3510
-#: config/ns32k/ns32k.c:1047 config/rs6000/rs6000.c:12538 config/sh/sh.c:5681
-#: config/sh/sh.c:5706 config/sh/sh.c:5745 config/stormy16/stormy16.c:2026
-#: config/v850/v850.c:2180
+#: config/arm/arm.c:2246 config/arm/arm.c:2264 config/avr/avr.c:4558
+#: config/c4x/c4x.c:4447 config/h8300/h8300.c:4257 config/i386/i386.c:1571
+#: config/i386/i386.c:1617 config/ip2k/ip2k.c:3169
+#: config/m68hc11/m68hc11.c:1227 config/m68k/m68k.c:333
+#: config/mcore/mcore.c:3375 config/ns32k/ns32k.c:1064
+#: config/rs6000/rs6000.c:14556 config/sh/sh.c:6737 config/sh/sh.c:6758
+#: config/sh/sh.c:6793 config/stormy16/stormy16.c:2073 config/v850/v850.c:2173
#, c-format
msgid "`%s' attribute only applies to functions"
msgstr "attribut « %s » s'applique seulement aux fonctions"
-#: config/arm/arm.c:9459
+#: config/arm/arm.c:10573
msgid "unable to compute real location of stacked parameter"
msgstr "incapable de calculer la localisation réelle de la pile de paramètres"
-#: config/arm/arm.c:10138
+#. @@@ better error message
+#: config/arm/arm.c:11201 config/arm/arm.c:11238
+msgid "selector must be an immediate"
+msgstr "sélecteur doit être un immédiat"
+
+#. @@@ better error message
+#: config/arm/arm.c:11281 config/i386/i386.c:14219 config/i386/i386.c:14253
+msgid "mask must be an immediate"
+msgstr "masque doit être un immédiat"
+
+#: config/arm/arm.c:11976
msgid "no low registers available for popping high registers"
msgstr "pas de registre bas disponible pour faire ressortir les registres du haut"
-#: config/arm/arm.c:10389
+#: config/arm/arm.c:12226
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr "routines d'interruption de service ne peuvent être codées en mode THUMB"
-#: config/arm/pe.c:168 config/mcore/mcore.c:3358
-#, c-format
-msgid "initialized variable `%s' is marked dllimport"
-msgstr "variable initialisé « %s » est marquée dllimport"
+#: config/arm/pe.c:170 config/mcore/mcore.c:3241
+msgid "%Jinitialized variable '%D' is marked dllimport"
+msgstr "%Jvariable initialisé « %D » est marquée dllimport"
-#: config/arm/pe.c:177
-#, c-format
-msgid "static variable `%s' is marked dllimport"
-msgstr "variable static « %s » est marquée dllimport"
+#: config/arm/pe.c:179
+msgid "%Jstatic variable '%D' is marked dllimport"
+msgstr "%Jvariable statique « %D » est marquée dllimport"
-#: config/arm/arm.h:416
+#: config/arm/arm.h:450
msgid "Generate APCS conformant stack frames"
msgstr "Générer des trames de pile conformes à APCS"
-#: config/arm/arm.h:419
+#: config/arm/arm.h:453
msgid "Store function names in object code"
msgstr "Sotcker les noms de fonctions dans le code objet"
-#: config/arm/arm.h:423
+#: config/arm/arm.h:457
msgid "Use the 32-bit version of the APCS"
msgstr "Utilise la version 32 bts de APCS"
-#: config/arm/arm.h:425
+#: config/arm/arm.h:459
msgid "Use the 26-bit version of the APCS"
msgstr "Utiliser la version 26 bits de APCS"
-#: config/arm/arm.h:429
+#: config/arm/arm.h:463
msgid "Pass FP arguments in FP registers"
msgstr "Passer les arguments FP par les registres FP"
-#: config/arm/arm.h:432
+#: config/arm/arm.h:466
msgid "Generate re-entrant, PIC code"
msgstr "Générer du code PIC ré-entrant"
-#: config/arm/arm.h:435
+#: config/arm/arm.h:469
msgid "The MMU will trap on unaligned accesses"
msgstr "Le MMU va intercepter les accès mal alignés"
-#: config/arm/arm.h:442
+#: config/arm/arm.h:476
msgid "Use library calls to perform FP operations"
msgstr "Utiliser les appels de bibliothèque pour exécuter les opérations FP"
-#: config/arm/arm.h:444 config/i960/i960.h:281
+#: config/arm/arm.h:478 config/i960/i960.h:291
msgid "Use hardware floating point instructions"
msgstr "Utiliser les instructions matérielles en virgule flottante"
-#: config/arm/arm.h:446
+#: config/arm/arm.h:480
msgid "Assume target CPU is configured as big endian"
msgstr "Présumer que le processeur cible est un système à octets de poids fort"
-#: config/arm/arm.h:448
+#: config/arm/arm.h:482
msgid "Assume target CPU is configured as little endian"
msgstr "Présumer que le processeur cible est un système à octets de poids faible"
-#: config/arm/arm.h:450
+#: config/arm/arm.h:484
msgid "Assume big endian bytes, little endian words"
msgstr "Présumer un système à octets de poids fort pour les octets et faible pour les mots"
-#: config/arm/arm.h:452
+#: config/arm/arm.h:486
msgid "Support calls between Thumb and ARM instruction sets"
msgstr "Supporter les appels des jeux d'instructions THUMB et ARM"
-#: config/arm/arm.h:455
+#: config/arm/arm.h:489
msgid "Generate a call to abort if a noreturn function returns"
msgstr "Générer un appel pour stopper si une fonction sans retour retourne un résultat"
-#: config/arm/arm.h:458
+#: config/arm/arm.h:492
msgid "Do not move instructions into a function's prologue"
msgstr "Ne pas déplacer les instruction dans le prologue de fonction"
-#: config/arm/arm.h:461
+#: config/arm/arm.h:495
msgid "Do not load the PIC register in function prologues"
msgstr "Ne pas charger le registre PIC dans les prologue de fonction"
-#: config/arm/arm.h:464
+#: config/arm/arm.h:498
msgid "Generate call insns as indirect calls, if necessary"
msgstr "Générer l'appel insn comme un appel indirect, si nécessaire"
-#: config/arm/arm.h:467
+#: config/arm/arm.h:501
msgid "Compile for the Thumb not the ARM"
msgstr "Compiler pour le THUMB et non pas le ARM"
-#: config/arm/arm.h:471
+#: config/arm/arm.h:505
msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
msgstr "Thumb: générer (non feuilles) trames de pile même si non nécessaire"
-#: config/arm/arm.h:474
+#: config/arm/arm.h:508
msgid "Thumb: Generate (leaf) stack frames even if not needed"
msgstr "Thumb : Générer (feuilles) trames de pile même si non nécessaire"
-#: config/arm/arm.h:477
+#: config/arm/arm.h:511
msgid "Thumb: Assume non-static functions may be called from ARM code"
msgstr "Thumb : Présumer que les fonctions non statiques peuvent être appelées du code ARM"
-#: config/arm/arm.h:481
+#: config/arm/arm.h:515
msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
msgstr "Thumb : Présumer que les pointeurs de fonction peuvent tomber dans le code en dehors non sensible au Thumb"
-#: config/arm/arm.h:491
+#: config/arm/arm.h:519
+msgid "Cirrus: Place NOPs to avoid invalid instruction combinations"
+msgstr "Cirrus: insérer des NOP pour éviter un combinaison d'instructions invalides"
+
+#: config/arm/arm.h:521
+msgid "Cirrus: Do not break up invalid instruction combinations with NOPs"
+msgstr "Cirrus: ne pas briser la combinaison d'instructions invalides avec des NOP"
+
+#: config/arm/arm.h:529
msgid "Specify the name of the target CPU"
msgstr "Spécifier le nom du processeur cible"
-#: config/arm/arm.h:493
+#: config/arm/arm.h:531
msgid "Specify the name of the target architecture"
msgstr "Spécifier le nom de l'architecture cible"
-#: config/arm/arm.h:497
+#: config/arm/arm.h:535
msgid "Specify the version of the floating point emulator"
msgstr "Spécifier la version de l'émulateur en virgule flottante"
-#: config/arm/arm.h:499
+#: config/arm/arm.h:537
msgid "Specify the minimum bit alignment of structures"
msgstr "Spécifier le minimum de bits pour l'alignement de structures"
-#: config/arm/arm.h:501
+#: config/arm/arm.h:539
msgid "Specify the register to be used for PIC addressing"
msgstr "Spécifier le registre à utiliser pour l'adressage PIC"
@@ -9160,93 +8142,92 @@ msgstr "Spécifier le registre à utiliser pour l'adressage PIC"
msgid "Ignore dllimport attribute for functions"
msgstr "Ignorer l'attribut dllimport pour les fonctions"
-#: config/avr/avr.c:528
+#: config/avr/avr.c:514
#, c-format
msgid "large frame pointer change (%d) with -mtiny-stack"
msgstr "grand pointeur de trames change (%d) avec -mtiny-stack"
-#: config/avr/avr.c:1135
+#: config/avr/avr.c:1101
msgid "bad address, not (reg+disp):"
msgstr "adresse erronée, pas (reg+disp):"
-#: config/avr/avr.c:1143
+#: config/avr/avr.c:1109
msgid "internal compiler error. Bad address:"
msgstr "erreur internal du compilateur. Adresse erronée:"
-#: config/avr/avr.c:1156
+#: config/avr/avr.c:1122
msgid "internal compiler error. Unknown mode:"
msgstr "erreur internal du compilateur. Mode inconnu:"
-#: config/avr/avr.c:1864 config/avr/avr.c:2576
+#: config/avr/avr.c:1744 config/avr/avr.c:2405
msgid "invalid insn:"
msgstr "insn invalide:"
-#: config/avr/avr.c:1901 config/avr/avr.c:1987 config/avr/avr.c:2036
-#: config/avr/avr.c:2045 config/avr/avr.c:2143 config/avr/avr.c:2315
-#: config/avr/avr.c:2613 config/avr/avr.c:2724
+#: config/avr/avr.c:1778 config/avr/avr.c:1861 config/avr/avr.c:1910
+#: config/avr/avr.c:1919 config/avr/avr.c:2014 config/avr/avr.c:2183
+#: config/avr/avr.c:2439 config/avr/avr.c:2547
msgid "incorrect insn:"
msgstr "insn incoorect:"
-#: config/avr/avr.c:2064 config/avr/avr.c:2228 config/avr/avr.c:2386
-#: config/avr/avr.c:2768
+#: config/avr/avr.c:1938 config/avr/avr.c:2099 config/avr/avr.c:2254
+#: config/avr/avr.c:2591
msgid "unknown move insn:"
msgstr "insn de déplacement inconnu:"
-#: config/avr/avr.c:3003
+#: config/avr/avr.c:2814
msgid "bad shift insn:"
msgstr "décalage insn erroné:"
-#: config/avr/avr.c:3119 config/avr/avr.c:3549 config/avr/avr.c:3929
+#: config/avr/avr.c:2927 config/avr/avr.c:3348 config/avr/avr.c:3719
msgid "internal compiler error. Incorrect shift:"
msgstr "erreur internal du compilateur. Décalage incorrect:"
-#: config/avr/avr.c:4767 config/ip2k/ip2k.c:3197
+#: config/avr/avr.c:4532 config/ip2k/ip2k.c:3144
msgid "only initialized variables can be placed into program memory area"
msgstr "seules les variables initialisées peuvent être placées dans la zone mémoire du programme"
-#: config/avr/avr.c:4866
-#, fuzzy
+#: config/avr/avr.c:4626
msgid "only uninitialized variables can be placed in the .noinit section"
-msgstr "Seuls les variables initialisées peuvent être placées dans une aire de 8 bits"
+msgstr "seuls les variables non initialisées peuvent être placées dans une section .noinit"
-#: config/avr/avr.c:4881
-#, fuzzy, c-format
+#: config/avr/avr.c:4640
+#, c-format
msgid "MCU `%s' supported for assembler only"
-msgstr "MCU « %s » n'est pas supporté"
+msgstr "MCU « %s » est supporté pour l'assembleur seulement"
-#: config/avr/avr.h:78
+#: config/avr/avr.h:73
msgid "Assume int to be 8 bit integer"
msgstr "Présumer que les int sont des entiers de 8 bits"
-#: config/avr/avr.h:80
+#: config/avr/avr.h:75
msgid "Change the stack pointer without disabling interrupts"
msgstr "Changer le pointeur de pile sans désactiver les interruptions"
-#: config/avr/avr.h:82
+#: config/avr/avr.h:77
msgid "Use subroutines for function prologue/epilogue"
msgstr "Utiliser des sous-routines pour le prologue/epilogue de fonction"
-#: config/avr/avr.h:84
+#: config/avr/avr.h:79
msgid "Change only the low 8 bits of the stack pointer"
msgstr "Changer seulement les 8 bits du bas du pointeur de pile"
-#: config/avr/avr.h:86
+#: config/avr/avr.h:81
msgid "Do not generate tablejump insns"
msgstr "Ne pas générer les sauts de table insns"
-#: config/avr/avr.h:88
+#: config/avr/avr.h:83
msgid "Use rjmp/rcall (limited range) on >8K devices"
-msgstr ""
+msgstr "Utiliser rjpm/rcall (étendue limitée) sur des périphériques >8K"
-#: config/avr/avr.h:91
+#: config/avr/avr.h:85
msgid "Output instruction sizes to the asm file"
msgstr "Produire les tailles d'instructions dans le fichier asm"
-#: config/avr/avr.h:108
+#: config/avr/avr.h:102
msgid "Specify the initial stack address"
msgstr "Spécifier l'adresse initiale de la pile"
-#: config/avr/avr.h:109
+#: config/avr/avr.h:103
msgid "Specify the MCU name"
msgstr "Spécifier le nom du MCU"
@@ -9258,140 +8239,135 @@ msgstr "Spécifier le nom du MCU"
#. For instance, the SH target has only positive offsets in
#. addresses. Thus sorting to put the smallest address first allows
#. the most combinations to be found.
-#: config/avr/avr.h:2450
+#: config/avr/avr.h:2267
msgid "trampolines not supported"
msgstr "trampolines ne sont pas supportées"
-#: config/c4x/c4x-c.c:69
+#: config/c4x/c4x-c.c:71
#, c-format
msgid "missing '(' after '#pragma %s' - ignored"
msgstr "«(» manquante après «#pragma %s» - ignoré"
-#: config/c4x/c4x-c.c:72
+#: config/c4x/c4x-c.c:74
#, c-format
msgid "missing function name in '#pragma %s' - ignored"
msgstr "nom de fonction manquant dans «#pragma %s» - ignoré"
-#: config/c4x/c4x-c.c:77
+#: config/c4x/c4x-c.c:79
#, c-format
msgid "malformed '#pragma %s' - ignored"
msgstr "«#pragma %s» mal composé - ignoré"
-#: config/c4x/c4x-c.c:79
+#: config/c4x/c4x-c.c:81
#, c-format
msgid "missing section name in '#pragma %s' - ignored"
msgstr "nom de section manquant dans «#pragma %s» - ignoré"
-#: config/c4x/c4x-c.c:84
+#: config/c4x/c4x-c.c:86
#, c-format
msgid "missing ')' for '#pragma %s' - ignored"
msgstr "«)» manquante pour «#pragma %s» - ignoré"
-#: config/c4x/c4x-c.c:87
+#: config/c4x/c4x-c.c:89
#, c-format
msgid "junk at end of '#pragma %s'"
msgstr "rebut à la fin de «#pragma %s'"
-#: config/c4x/c4x.c:280
+#: config/c4x/c4x.c:300
#, c-format
msgid "unknown CPU version %d, using 40.\n"
msgstr "version de processeur %d inconnue, 40 est utilisé.\n"
-#: config/c4x/c4x.c:853
+#: config/c4x/c4x.c:850
#, c-format
msgid "ISR %s requires %d words of local vars, max is 32767"
msgstr "ISR %s requiert %d mots de var. locales, max est 32767."
-#: config/c4x/c4x.c:1602
+#: config/c4x/c4x.c:1571
msgid "using CONST_DOUBLE for address"
msgstr "CONST_DOUBLE utilisé pour l'adresse"
-#: config/c4x/c4x.c:1742
+#: config/c4x/c4x.c:1709
msgid "c4x_address_cost: Invalid addressing mode"
msgstr "c4x_address_cost: mode d'adressage invalide"
-#: config/c4x/c4x.c:1884
+#: config/c4x/c4x.c:1844
#, c-format
msgid "c4x_print_operand: %%L inconsistency"
msgstr "c4x_print_operand: %%L inconsistent"
-#: config/c4x/c4x.c:1890
+#: config/c4x/c4x.c:1850
#, c-format
msgid "c4x_print_operand: %%N inconsistency"
msgstr "c4x_print_operand: %%N inconsistent"
-#: config/c4x/c4x.c:1931
+#: config/c4x/c4x.c:1891
#, c-format
msgid "c4x_print_operand: %%O inconsistency"
msgstr "c4x_print_operand: %%O inconsisten"
-#: config/c4x/c4x.c:2026
+#: config/c4x/c4x.c:1986
msgid "c4x_print_operand: Bad operand case"
msgstr "c4x_print_operand: opérande erronée pour un case"
-#: config/c4x/c4x.c:2069
+#: config/c4x/c4x.c:2027
msgid "c4x_print_operand_address: Bad post_modify"
msgstr "c4x_print_operand_address: post-modification erronée"
-#: config/c4x/c4x.c:2091
+#: config/c4x/c4x.c:2049
msgid "c4x_print_operand_address: Bad pre_modify"
msgstr "c4x_print_operand_address: pré-modification erronée"
-#: config/c4x/c4x.c:2139 config/c4x/c4x.c:2151 config/c4x/c4x.c:2166
+#: config/c4x/c4x.c:2097 config/c4x/c4x.c:2109 config/c4x/c4x.c:2124
msgid "c4x_print_operand_address: Bad operand case"
msgstr "c4x_print_operand_address: opérande erronée pour un case"
-#: config/c4x/c4x.c:2422
+#: config/c4x/c4x.c:2375
msgid "c4x_rptb_insert: Cannot find start label"
msgstr "c4x_rptb_insert: ne peut repérer l'étiquette de départ"
-#: config/c4x/c4x.c:3409 config/c4x/c4x.c:3429
+#: config/c4x/c4x.c:3292 config/c4x/c4x.c:3310
msgid "mode not QImode"
msgstr "mode n'est pas QImode"
-#: config/c4x/c4x.c:3514
+#: config/c4x/c4x.c:3380
msgid "invalid indirect memory address"
msgstr "adresse mémoire d'indirection invalide"
-#: config/c4x/c4x.c:3603
+#: config/c4x/c4x.c:3469
msgid "invalid indirect (S) memory address"
msgstr "adresse mémoire (S) d'indirection invalide"
-#: config/c4x/c4x.c:3944
+#: config/c4x/c4x.c:3797
msgid "c4x_valid_operands: Internal error"
msgstr "c4x_valid_operands: erreur interne"
-#: config/c4x/c4x.c:4424
+#: config/c4x/c4x.c:4216
msgid "c4x_operand_subword: invalid mode"
msgstr "c4x_oprande_subword: mode invalide"
-#: config/c4x/c4x.c:4427
+#: config/c4x/c4x.c:4219
msgid "c4x_operand_subword: invalid operand"
msgstr "c4x_operand_subword: opérande invalide"
#. We could handle these with some difficulty.
#. e.g., *p-- => *(p-=2); *(p+1).
-#: config/c4x/c4x.c:4453
+#: config/c4x/c4x.c:4245
msgid "c4x_operand_subword: invalid autoincrement"
msgstr "c4x_operand_subword: autoincrement invalide"
-#: config/c4x/c4x.c:4459
+#: config/c4x/c4x.c:4251
msgid "c4x_operand_subword: invalid address"
msgstr "c4x_operand_subword: adresse invalide"
-#: config/c4x/c4x.c:4470
+#: config/c4x/c4x.c:4262
msgid "c4x_operand_subword: address not offsettable"
msgstr "c4x_operand_subword: un décalage d'adresse ne peut s'appliquer sur cette adresse"
-#: config/c4x/c4x.c:4670
+#: config/c4x/c4x.c:4472
msgid "c4x_rptb_rpts_p: Repeat block top label moved\n"
msgstr "c4x_rptb_rpts_p: étiquette supérieur de bloc de répétition déplacée\n"
-#. Name of the c4x assembler.
-#. Name of the c4x linker.
-#. Define assembler options.
-#. Define linker options.
-#. Specify the end file to link with.
#. Target compilation option flags.
#. Small memory model.
#. Use 24-bit MPYI for C3x.
@@ -9444,11 +8420,11 @@ msgstr "Ne pas utiliser les instructions MPYI pour C3x"
#: config/c4x/c4x.h:176
msgid "Use fast but approximate float to integer conversion"
-msgstr "Utiliser le mode rapide mais approprié de conversion de flottans à entiers"
+msgstr "Utiliser le mode rapide mais approximatif de conversion de flottant à entier"
#: config/c4x/c4x.h:178
msgid "Use slow but accurate float to integer conversion"
-msgstr "Utiliser le mode lent mais précis de conversion de flottans à entiers"
+msgstr "Utiliser le mode lent mais précis de conversion de flottant à entier"
#: config/c4x/c4x.h:180
msgid "Enable use of RTPS instruction"
@@ -9563,9 +8539,8 @@ msgid "Allow RTL generation to emit invalid 3 operand insns"
msgstr "Autoriser la génération RTL pour produire des opérandes insn 3 invalides"
#: config/c4x/c4x.h:240
-#, fuzzy
msgid "Allow unsigned iteration counts for RPTB/DB"
-msgstr "Autoriser un compteur non signé d'itération pour RPTB/DB"
+msgstr "Autoriser un compteur non signé d'itérations pour RPTB/DB"
#: config/c4x/c4x.h:242
msgid "Disallow unsigned iteration counts for RPTB/DB"
@@ -9611,158 +8586,158 @@ msgstr "Spécifier le nombre maximum d'itérations pour RPTS"
msgid "Select CPU to generate code for"
msgstr "Sélectionner le processeur pour lequel le code doit être généré"
-#: config/cris/cris.c:599
+#: config/cris/cris.c:597
msgid "unexpected index-type in cris_print_index"
msgstr "type d'index inattendu dans cris_print_index"
-#: config/cris/cris.c:615
+#: config/cris/cris.c:611
msgid "unexpected base-type in cris_print_base"
msgstr "type de base inattendu dans cris_print_base"
-#: config/cris/cris.c:908
+#: config/cris/cris.c:904
#, c-format
msgid "stackframe too big: %d bytes"
msgstr "trame de pile trop grande: %d octets"
-#: config/cris/cris.c:1223
+#: config/cris/cris.c:1215
msgid "allocated but unused delay list in epilogue"
msgstr "alloué mais liste de délai non utilisée dans l'épilogue"
-#: config/cris/cris.c:1233
+#: config/cris/cris.c:1225
msgid "unexpected function type needing stack adjustment for __builtin_eh_return"
msgstr "type de fonction inattendue ajustement de la pile nécessaire pour « __builtin_eh_return »"
-#: config/cris/cris.c:1312
+#: config/cris/cris.c:1301
msgid "invalid operand for 'b' modifier"
msgstr "opérande invalide pour le modificateur « b »"
-#: config/cris/cris.c:1324
+#: config/cris/cris.c:1314
msgid "invalid operand for 'v' modifier"
msgstr "opérande invalide pour le modificateur « v »"
-#: config/cris/cris.c:1334
+#: config/cris/cris.c:1324
msgid "invalid operand for 'P' modifier"
msgstr "opérande invalide pour le modificateur « P »"
-#: config/cris/cris.c:1341
+#: config/cris/cris.c:1331
msgid "invalid operand for 'p' modifier"
msgstr "opérande invalide pour le modificateur « p »"
-#: config/cris/cris.c:1380
+#: config/cris/cris.c:1370
msgid "invalid operand for 'z' modifier"
msgstr "opérande invalide pour le modificateur « z »"
-#: config/cris/cris.c:1411 config/cris/cris.c:1441
+#: config/cris/cris.c:1401 config/cris/cris.c:1431
msgid "invalid operand for 'H' modifier"
msgstr "opérande invalide pour le modificateur « H »"
-#: config/cris/cris.c:1417
+#: config/cris/cris.c:1407
msgid "bad register"
msgstr "registre erroné"
-#: config/cris/cris.c:1455
+#: config/cris/cris.c:1445
msgid "invalid operand for 'e' modifier"
msgstr "opérande invalide pour le modificateur « e »"
-#: config/cris/cris.c:1472
+#: config/cris/cris.c:1462
msgid "invalid operand for 'm' modifier"
msgstr "opérande invalide pour le modificateur « m »"
-#: config/cris/cris.c:1497
+#: config/cris/cris.c:1487
msgid "invalid operand for 'A' modifier"
msgstr "opérande invalide pour le modificateur « A »"
-#: config/cris/cris.c:1505
+#: config/cris/cris.c:1495
msgid "invalid operand for 'D' modifier"
msgstr "opérande invalide pour le modificateur « D »"
-#: config/cris/cris.c:1519
+#: config/cris/cris.c:1509
msgid "invalid operand for 'T' modifier"
msgstr "opérande invalide pour le modificateur « T »"
-#: config/cris/cris.c:1528
+#: config/cris/cris.c:1518
msgid "invalid operand modifier letter"
msgstr "opérande invalide pour le modificateur de lettre"
-#: config/cris/cris.c:1536
+#: config/cris/cris.c:1526
#, c-format
msgid "internal error: bad register: %d"
msgstr "erreur interne: registre erroné: %d"
-#: config/cris/cris.c:1584
+#: config/cris/cris.c:1574
msgid "unexpected multiplicative operand"
msgstr "opérande multiplicative inattendue"
-#: config/cris/cris.c:1604
+#: config/cris/cris.c:1594
msgid "unexpected operand"
msgstr "opérande inattendue"
-#: config/cris/cris.c:1639 config/cris/cris.c:1649
+#: config/cris/cris.c:1627 config/cris/cris.c:1637
msgid "unrecognized address"
msgstr "adresse non reconnue"
-#: config/cris/cris.c:2005
+#: config/cris/cris.c:1987
msgid "internal error: sideeffect-insn affecting main effect"
msgstr "erreur interne: effet de bord de insn sideeffect-insn ayant un effet principal"
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2292
+#: config/cris/cris.c:2380
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr "erreur interne: cris_side_effect_mode_ok avec des opérandes erronées"
-#: config/cris/cris.c:2374 config/cris/cris.c:2432
+#: config/cris/cris.c:2457 config/cris/cris.c:2519
msgid "unrecognized supposed constant"
msgstr "supposée constante non reconnue"
-#: config/cris/cris.c:2473
+#: config/cris/cris.c:2564
msgid "unrecognized supposed constant in cris_global_pic_symbol"
msgstr "supposée constante non reconnue dans cris_global_pic_symbol"
-#: config/cris/cris.c:2492
+#: config/cris/cris.c:2583
#, c-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr "-max-stackframe=%d n'est pas utilisable, n'est pas entre 0 et %d"
-#: config/cris/cris.c:2520
+#: config/cris/cris.c:2611
#, c-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr "spécification de version CRIS inconnue dans -march= ou -mcpu= : %s"
-#: config/cris/cris.c:2556
+#: config/cris/cris.c:2647
#, c-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr "spécification de version CRIS inconnue dans -mtune= : %s"
-#: config/cris/cris.c:2574
+#: config/cris/cris.c:2665
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr "-fPIC et -fpic ne sont pas supportées par cette configuration"
-#: config/cris/cris.c:2590
+#: config/cris/cris.c:2681
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr "l'option particulière -g est invalide avec -maout et -melinux"
-#: config/cris/cris.c:2824 config/cris/cris.c:2869
+#: config/cris/cris.c:2936 config/cris/cris.c:2981
msgid "unexpected side-effects in address"
msgstr "effets de bord inattendue dans l'adresse"
#. Labels are never marked as global symbols.
-#: config/cris/cris.c:2966 config/cris/cris.c:2997
+#: config/cris/cris.c:3076 config/cris/cris.c:3107
msgid "unexpected PIC symbol"
msgstr "symbole PIC inattendue"
-#: config/cris/cris.c:2970
+#: config/cris/cris.c:3080
msgid "PIC register isn't set up"
msgstr "le registre n'est pas initialisé"
-#: config/cris/cris.c:2983 config/cris/cris.c:3066
+#: config/cris/cris.c:3093 config/cris/cris.c:3176
msgid "unexpected address expression"
msgstr "expression d'adresse inattendue"
-#: config/cris/cris.c:3001
+#: config/cris/cris.c:3111
msgid "emitting PIC operand, but PIC register isn't set up"
msgstr "génération d'une opérande PIC mais le registre PIC n'est pas initialisé"
-#: config/cris/cris.c:3010
+#: config/cris/cris.c:3120
msgid "unexpected NOTE as addr_const:"
msgstr "NOTE inattendu comme addr_conts:"
@@ -9775,212 +8750,212 @@ msgid "For elinux, request a specified stack-size for this program"
msgstr "Pour elinux, faire la requête pour un taille de pile spécifique pour ce programme"
#. No "no-etrax" as it does not really imply any model. On the other hand, "etrax" implies the common (and large) subset matching all models.
-#: config/cris/cris.h:340
+#: config/cris/cris.h:334
msgid "Compile for ETRAX 4 (CRIS v3)"
msgstr "Compilé pour ETRAX 4 (CRIS v3)"
-#: config/cris/cris.h:345
+#: config/cris/cris.h:339
msgid "Compile for ETRAX 100 (CRIS v8)"
msgstr "Compile pour ETRAX 100 (CRIS v8)"
-#: config/cris/cris.h:349
+#: config/cris/cris.h:343
msgid "Emit verbose debug information in assembly code"
msgstr "Produire des informations de mise au point dans le code assemblé"
-#: config/cris/cris.h:352
+#: config/cris/cris.h:346
msgid "Do not use condition codes from normal instructions"
msgstr "Ne pas utiliser du code conditionnel pour des instructions normales"
-#: config/cris/cris.h:356
+#: config/cris/cris.h:350
msgid "Do not emit addressing modes with side-effect assignment"
msgstr "Ne pas produire de modes d'adressage avec des affectations avec effet de bord"
-#: config/cris/cris.h:359
+#: config/cris/cris.h:353
msgid "Do not tune stack alignment"
msgstr "Ne pas ajuster l'alignement de la pile"
-#: config/cris/cris.h:362
+#: config/cris/cris.h:356
msgid "Do not tune writable data alignment"
msgstr "Ne pas ajuster l'alignement les sections de données dynamiques"
-#: config/cris/cris.h:365
+#: config/cris/cris.h:359
msgid "Do not tune code and read-only data alignment"
msgstr "Ne pas ajuster l'alignement du code et des sections de données statiques"
-#: config/cris/cris.h:374
+#: config/cris/cris.h:368
msgid "Align code and data to 32 bits"
msgstr "Aligner le code et les données sur 32 bits"
-#: config/cris/cris.h:387
+#: config/cris/cris.h:381
msgid "Don't align items in code or data"
msgstr "Ne pas aligner les items dans le code ou les données"
-#: config/cris/cris.h:390
+#: config/cris/cris.h:384
msgid "Do not emit function prologue or epilogue"
msgstr "Ne pas générer de prologue ou d'épilogue de fonction"
#. We have to handle this m-option here since we can't wash it off in both CC1_SPEC and CC1PLUS_SPEC.
-#: config/cris/cris.h:394
+#: config/cris/cris.h:388
msgid "Use the most feature-enabling options allowed by other options"
msgstr "Utiliser le plus d'options autorisant autorisant des options permises par les autres options"
#. We must call it "override-" since calling it "no-" will cause gcc.c to forget it, if there's a "later" -mbest-lib-options. Kludgy, but needed for some multilibbed files.
-#: config/cris/cris.h:400
+#: config/cris/cris.h:394
msgid "Override -mbest-lib-options"
msgstr "Écraser -mbest-lib-options"
-#: config/cris/cris.h:432
+#: config/cris/cris.h:426
msgid "Generate code for the specified chip or CPU version"
msgstr "Générer le code pour la version de processeur ou de circuit spécifiée"
-#: config/cris/cris.h:434
+#: config/cris/cris.h:428
msgid "Tune alignment for the specified chip or CPU version"
msgstr "Ajuster l'alignement pour la version de processeur ou de circuit spécifiée"
-#: config/cris/cris.h:436
+#: config/cris/cris.h:430
msgid "Warn when a stackframe is larger than the specified size"
msgstr "Avertir lorsqu'une trame de pile est plus grande que la taille spécifiée"
#. Node: Profiling
-#: config/cris/cris.h:1022
+#: config/cris/cris.h:1016
msgid "no FUNCTION_PROFILER for CRIS"
msgstr "pas de FUNCTION_PROFILER pour CRIS"
-#: config/cris/linux.h:71
+#: config/cris/linux.h:69
msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
msgstr "ensemble avec -fpic et -fPIC, ne pas utiliser les références GOTPLT"
-#: config/d30v/d30v.c:207
+#: config/d30v/d30v.c:218
#, c-format
msgid "bad modes_tieable_p for register %s, mode1 %s, mode2 %s"
msgstr "modes_tieable_p erronée pour le registre %s, mode1 %s, mode2 %s"
-#: config/d30v/d30v.c:2666
+#: config/d30v/d30v.c:2678
msgid "bad insn to d30v_print_operand_address:"
msgstr "insn erroné pour d30v_print_operand_addresse:"
-#: config/d30v/d30v.c:2683 config/d30v/d30v.c:2744 config/d30v/d30v.c:2765
-#: config/d30v/d30v.c:2783
+#: config/d30v/d30v.c:2695 config/d30v/d30v.c:2756 config/d30v/d30v.c:2777
+#: config/d30v/d30v.c:2795
msgid "bad insn to d30v_print_operand_memory_reference:"
msgstr "insn erroné pour d30v_print_operand_memory_reference:"
-#: config/d30v/d30v.c:2851
+#: config/d30v/d30v.c:2863
msgid "bad insn to d30v_print_operand, 'f' modifier:"
msgstr "insn erroné pour d30v_print_operand, modificateur « f »:"
-#: config/d30v/d30v.c:2860
+#: config/d30v/d30v.c:2872
msgid "bad insn to d30v_print_operand, 'A' modifier:"
msgstr "insn erroné pour d30v_print_operand, modificateur « A »:"
-#: config/d30v/d30v.c:2867
+#: config/d30v/d30v.c:2879
msgid "bad insn to d30v_print_operand, 'M' modifier:"
msgstr "insn erroné pour d30v_print_operand, modificateur « M »:"
-#: config/d30v/d30v.c:2921
+#: config/d30v/d30v.c:2933
msgid "bad insn to print_operand, 'F' or 'T' modifier:"
msgstr "insn erroné pour print_operand, modificateur « F » ou « T »:"
-#: config/d30v/d30v.c:2932
+#: config/d30v/d30v.c:2944
msgid "bad insn to print_operand, 'B' modifier:"
msgstr "insn erroné pour print_operand, modificateur « B »:"
-#: config/d30v/d30v.c:2939
+#: config/d30v/d30v.c:2951
msgid "bad insn to print_operand, 'E' modifier:"
msgstr "insn erroné pour print_operand, modificateur « E »:"
-#: config/d30v/d30v.c:2957
+#: config/d30v/d30v.c:2969
msgid "bad insn to print_operand, 'R' modifier:"
msgstr "insn erroné to print_operand, modificateur « R »:"
-#: config/d30v/d30v.c:2966 config/d30v/d30v.c:2974
+#: config/d30v/d30v.c:2978 config/d30v/d30v.c:2986
msgid "bad insn to print_operand, 's' modifier:"
msgstr "insn erroné to print_operand, modificateur « s »:"
-#: config/d30v/d30v.c:3003
+#: config/d30v/d30v.c:3015
msgid "bad insn in d30v_print_operand, 0 case"
msgstr "insn erroné dans d30v_print_operand, cas 0"
-#: config/d30v/d30v.c:3301
+#: config/d30v/d30v.c:3313
msgid "d30v_emit_comparison"
msgstr "d30v_emit_comparison"
-#: config/d30v/d30v.c:3345
+#: config/d30v/d30v.c:3357
msgid "bad call to d30v_move_2words"
msgstr "appel erroné à d30v_move_2words"
-#: config/d30v/d30v.h:114
+#: config/d30v/d30v.h:111
msgid "Enable use of conditional move instructions"
msgstr "Autoriser l'utilisation des instructions conditionnelles move"
-#: config/d30v/d30v.h:117
+#: config/d30v/d30v.h:114
msgid "Disable use of conditional move instructions"
msgstr "Interdire l'utilisation des instructions conditionnelles move"
-#: config/d30v/d30v.h:120
+#: config/d30v/d30v.h:117
msgid "Debug argument support in compiler"
msgstr "Mettre au point le support d'argument dans le compilateur"
-#: config/d30v/d30v.h:123
+#: config/d30v/d30v.h:120
msgid "Debug stack support in compiler"
msgstr "Mettre au point le support de la pile dans le compilateur"
-#: config/d30v/d30v.h:126
+#: config/d30v/d30v.h:123
msgid "Debug memory address support in compiler"
msgstr "Mettre au point le support d'adresses dans le compilateur"
-#: config/d30v/d30v.h:129
+#: config/d30v/d30v.h:126
msgid "Make adjacent short instructions parallel if possible"
msgstr "Rendre adjacentes les instructions short en instructions parallèles si possible"
-#: config/d30v/d30v.h:132
+#: config/d30v/d30v.h:129
msgid "Do not make adjacent short instructions parallel"
msgstr "Ne pas rendre adjacentes les instructions short en instructions parallèles"
-#: config/d30v/d30v.h:135 config/d30v/d30v.h:138
+#: config/d30v/d30v.h:132 config/d30v/d30v.h:135
msgid "Link programs/data to be in external memory by default"
msgstr "Faire l'édition de lien des programmes/données comme étant externe à la mémoire par défaut"
-#: config/d30v/d30v.h:141
+#: config/d30v/d30v.h:138
msgid "Link programs/data to be in onchip memory by default"
msgstr "Faire l'édition de lien des programmes/données comme étant interne dans la circuiterie de la mémoire par défaut"
-#: config/d30v/d30v.h:149
+#: config/d30v/d30v.h:146
msgid "Change the branch costs within the compiler"
msgstr "Changer les coûts de branchement à l'intérieur du compilateur"
-#: config/d30v/d30v.h:152
+#: config/d30v/d30v.h:149
msgid "Change the threshold for conversion to conditional execution"
msgstr "Changer le seuil pour la conversion en une exécution conditionnelle"
-#: config/dsp16xx/dsp16xx.c:1446 config/dsp16xx/dsp16xx.c:1469
+#: config/dsp16xx/dsp16xx.c:1463 config/dsp16xx/dsp16xx.c:1486
msgid "stack size > 32k"
msgstr "taille de la pile > 32k"
-#: config/dsp16xx/dsp16xx.c:1678
+#: config/dsp16xx/dsp16xx.c:1695
msgid "invalid addressing mode"
msgstr "mode d'adressage invalide"
-#: config/dsp16xx/dsp16xx.c:1821
+#: config/dsp16xx/dsp16xx.c:1838
msgid "bad register extension code"
msgstr "code d'extension de registre erroné"
-#: config/dsp16xx/dsp16xx.c:1921
+#: config/dsp16xx/dsp16xx.c:1938
msgid "invalid offset in ybase addressing"
msgstr "décalage invalide dans l'adresse ybase"
-#: config/dsp16xx/dsp16xx.c:1924
+#: config/dsp16xx/dsp16xx.c:1941
msgid "invalid register in ybase addressing"
msgstr "registre invalide dans l'adressage ybase"
-#: config/dsp16xx/dsp16xx.c:2099
+#: config/dsp16xx/dsp16xx.c:2116
msgid "invalid shift operator in emit_1600_core_shift"
msgstr "opérateur de décalage invalide dans emit_1600_core_shift"
-#: config/dsp16xx/dsp16xx.c:2428
+#: config/dsp16xx/dsp16xx.c:2406
msgid "invalid mode for gen_tst_reg"
msgstr "mode invalide pour gen_tst_reg"
-#: config/dsp16xx/dsp16xx.c:2500
+#: config/dsp16xx/dsp16xx.c:2478
msgid "invalid mode for integer comparison in gen_compare_reg"
msgstr "mode invalide pour la comparaison d'entiers dans gen_compare_reg"
@@ -10075,58 +9050,62 @@ msgstr "Spécifier un nom alternatif pour le cirsuit dsp16xx"
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/dsp16xx/dsp16xx.h:1218 config/dsp16xx/dsp16xx.h:1772
-#: config/dsp16xx/dsp16xx.h:1777
+#. This is how to output an insn to push a register on the stack.
+#. It need not be very fast code since it is used only for profiling
+#. This is how to output an insn to pop a register from the stack.
+#. It need not be very fast code since it is used only for profiling
+#: config/dsp16xx/dsp16xx.h:1216 config/dsp16xx/dsp16xx.h:1667
+#: config/dsp16xx/dsp16xx.h:1672
msgid "profiling not implemented yet"
msgstr "profilage n'est pas implanté encore"
#. Emit RTL insns to initialize the variable parts of a trampoline.
#. FNADDR is an RTX for the address of the function's pure code.
#. CXT is an RTX for the static chain value for the function.
-#: config/dsp16xx/dsp16xx.h:1228 config/dsp16xx/dsp16xx.h:1240
+#: config/dsp16xx/dsp16xx.h:1226 config/dsp16xx/dsp16xx.h:1238
msgid "trampolines not yet implemented"
msgstr "trampolines ne sont pas encore implantées"
-#: config/fr30/fr30.c:453
+#: config/fr30/fr30.c:451
msgid "fr30_print_operand_address: unhandled address"
msgstr "fr30_print_operand_address: adresse non traitée"
-#: config/fr30/fr30.c:480
+#: config/fr30/fr30.c:475
#, c-format
msgid "fr30_print_operand: unrecognized %%p code"
msgstr "fr30_print_operand: code %%p non reconnue"
-#: config/fr30/fr30.c:500
+#: config/fr30/fr30.c:495
#, c-format
msgid "fr30_print_operand: unrecognized %%b code"
msgstr "fr30_print_operand: code %%b non reconnue"
-#: config/fr30/fr30.c:521
+#: config/fr30/fr30.c:516
#, c-format
msgid "fr30_print_operand: unrecognized %%B code"
msgstr "fr30_print_operand: code %%B non reconnu"
-#: config/fr30/fr30.c:529
+#: config/fr30/fr30.c:524
#, c-format
msgid "fr30_print_operand: invalid operand to %%A code"
msgstr "fr30_print_operand: opérande invalide pour code %%A"
-#: config/fr30/fr30.c:546
+#: config/fr30/fr30.c:541
#, c-format
msgid "fr30_print_operand: invalid %%x code"
msgstr "fr30_print_operand: code %%x invalide"
-#: config/fr30/fr30.c:553
+#: config/fr30/fr30.c:548
#, c-format
msgid "fr30_print_operand: invalid %%F code"
msgstr "fr30_print_operand: code %%F invalide"
-#: config/fr30/fr30.c:570
+#: config/fr30/fr30.c:565
msgid "fr30_print_operand: unknown code"
msgstr "fr30_print_operand: code inconnu"
-#: config/fr30/fr30.c:599 config/fr30/fr30.c:608 config/fr30/fr30.c:619
-#: config/fr30/fr30.c:632
+#: config/fr30/fr30.c:594 config/fr30/fr30.c:603 config/fr30/fr30.c:614
+#: config/fr30/fr30.c:627
msgid "fr30_print_operand: unhandled MEM"
msgstr "fr30_print_operand: MEM non traité"
@@ -10134,156 +9113,138 @@ msgstr "fr30_print_operand: MEM non traité"
msgid "Assume small address space"
msgstr "Présumer un petit espace d'adressage"
-#: config/frv/frv.c:410 config/frv/frv.c:428
+#: config/frv/frv.c:392 config/frv/frv.c:410
#, c-format
msgid "Unknown cpu: -mcpu=%s"
msgstr "Processeur inconnu : -mcpu=%s"
-#: config/frv/frv.c:451
+#: config/frv/frv.c:433
msgid "-fpic and -gdwarf are incompatible (-fpic and -g/-gdwarf-2 are fine)"
msgstr "-fpic et -gdwarf sont incompatibles (-fpic et -g/-gdwarf-2 sont acceptables)"
-#: config/frv/frv.c:2520
+#: config/frv/frv.c:2397
msgid "Bad insn to frv_print_operand_address:"
msgstr "insn erroné pour frv_print_operand_addresse:"
-#: config/frv/frv.c:2533
-#, fuzzy
+#: config/frv/frv.c:2408
msgid "Bad register to frv_print_operand_memory_reference_reg:"
-msgstr "insn erroné pour d30v_print_operand_memory_reference:"
+msgstr "registre erroné pour frv_print_operand_memory_reference_reg:"
-#: config/frv/frv.c:2574 config/frv/frv.c:2584 config/frv/frv.c:2593
-#: config/frv/frv.c:2621 config/frv/frv.c:2633 config/frv/frv.c:2637
-#, fuzzy
+#: config/frv/frv.c:2446 config/frv/frv.c:2456 config/frv/frv.c:2465
+#: config/frv/frv.c:2493 config/frv/frv.c:2506 config/frv/frv.c:2510
msgid "Bad insn to frv_print_operand_memory_reference:"
-msgstr "insn erroné pour d30v_print_operand_memory_reference:"
+msgstr "insn erroné pour frv_print_operand_memory_reference:"
-#: config/frv/frv.c:2779
-#, fuzzy
+#: config/frv/frv.c:2648
msgid "Bad insn in frv_print_operand, bad const_double"
-msgstr "insn erroné dans d30v_print_operand, cas 0"
+msgstr "insn erroné dans frv_print_operand, bad const_double"
-#: config/frv/frv.c:2824
-#, fuzzy
+#: config/frv/frv.c:2693
msgid "Bad insn to frv_print_operand, 'C' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « C »:"
-#: config/frv/frv.c:2847
-#, fuzzy
+#: config/frv/frv.c:2716
msgid "Bad insn to frv_print_operand, 'c' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « c »:"
-#: config/frv/frv.c:2872
-#, fuzzy
+#: config/frv/frv.c:2741
msgid "Bad insn to frv_print_operand, 'e' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « e »:"
-#: config/frv/frv.c:2880
-#, fuzzy
+#: config/frv/frv.c:2749
msgid "Bad insn to frv_print_operand, 'F' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « F »:"
-#: config/frv/frv.c:2896
-#, fuzzy
+#: config/frv/frv.c:2765
msgid "Bad insn to frv_print_operand, 'f' modifier:"
-msgstr "insn erroné pour d30v_print_operand, modificateur « f »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « f »:"
-#: config/frv/frv.c:2949
-#, fuzzy
+#: config/frv/frv.c:2818
msgid "Bad insn to frv_print_operand, 'L' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « L »:"
-#: config/frv/frv.c:2962
-#, fuzzy
+#: config/frv/frv.c:2831
msgid "Bad insn to frv_print_operand, 'M/N' modifier:"
-msgstr "insn erroné pour d30v_print_operand, modificateur « M »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « M/N »:"
-#: config/frv/frv.c:2983
-#, fuzzy
+#: config/frv/frv.c:2852
msgid "Bad insn to frv_print_operand, 'O' modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « O »:"
-#: config/frv/frv.c:3001
-#, fuzzy
+#: config/frv/frv.c:2870
msgid "Bad insn to frv_print_operand, P modifier:"
-msgstr "insn erroné pour print_operand, modificateur « B »:"
+msgstr "insn erroné pour frv_print_operand, modificateur « P »:"
-#: config/frv/frv.c:3021
-#, fuzzy
+#: config/frv/frv.c:2890
msgid "Bad insn in frv_print_operand, z case"
-msgstr "insn erroné dans d30v_print_operand, cas 0"
+msgstr "insn erroné dans frv_print_operand, case z"
-#: config/frv/frv.c:3049
-#, fuzzy
+#: config/frv/frv.c:2918
msgid "Bad insn in frv_print_operand, 0 case"
-msgstr "insn erroné dans d30v_print_operand, cas 0"
+msgstr "insn erroné dans frv_print_operand, case 0"
-#: config/frv/frv.c:3054
-#, fuzzy
+#: config/frv/frv.c:2923
msgid "frv_print_operand: unknown code"
-msgstr "fr30_print_operand: code inconnu"
+msgstr "frv_print_operand: code inconnu"
-#: config/frv/frv.c:5737
-#, fuzzy
+#: config/frv/frv.c:5474
msgid "Bad output_move_single operand"
-msgstr "output_move_single:"
+msgstr "opérande output_move_single erronée"
-#: config/frv/frv.c:5866
+#: config/frv/frv.c:5601
msgid "Bad output_move_double operand"
-msgstr ""
+msgstr "opérande output_move_double erronée"
-#: config/frv/frv.c:6010
-#, fuzzy
+#: config/frv/frv.c:5743
msgid "Bad output_condmove_single operand"
-msgstr "output_move_single:"
+msgstr "opérande output_condmove_single erronée"
-#: config/frv/frv.c:8315
+#: config/frv/frv.c:8031
msgid "frv_registers_update"
-msgstr ""
+msgstr "frv_registers_update"
-#: config/frv/frv.c:8475
+#: config/frv/frv.c:8188
msgid "frv_registers_used_p"
-msgstr ""
+msgstr "frv_registers_used_p"
-#: config/frv/frv.c:8604
+#: config/frv/frv.c:8314
msgid "frv_registers_set_p"
-msgstr ""
+msgstr "frv_registers_set_p"
-#: config/frv/frv.c:9171
-#, fuzzy
+#: config/frv/frv.c:8910
msgid "accumulator is not a constant integer"
-msgstr "argument de « asm » n'est pas une chaîne de constante"
+msgstr "accumulateur n'est pas une constante en entier"
-#: config/frv/frv.c:9176
+#: config/frv/frv.c:8915
msgid "accumulator number is out of bounds"
-msgstr ""
+msgstr "numéro de l'accumulateur est hors limite"
-#: config/frv/frv.c:9187
-#, fuzzy, c-format
+#: config/frv/frv.c:8926
+#, c-format
msgid "inappropriate accumulator for `%s'"
-msgstr "aucune déclaration précédente pour « %s »"
+msgstr "accumulateur inapproprié pour « %s »"
-#: config/frv/frv.c:9253
-#, fuzzy, c-format
+#: config/frv/frv.c:8986
+#, c-format
msgid "`%s' expects a constant argument"
-msgstr "l'attribut « %s » requiert un argument de type constante entière"
+msgstr "« %s » attend un argument de constante"
-#: config/frv/frv.c:9258
-#, fuzzy, c-format
+#: config/frv/frv.c:8991
+#, c-format
msgid "constant argument out of range for `%s'"
-msgstr "code de tache %ld hors gamme pour « %s »"
+msgstr "argument de constante hors limite pour « %s »"
-#: config/frv/frv.c:9638
+#: config/frv/frv.c:9338
msgid "media functions are not available unless -mmedia is used"
-msgstr ""
+msgstr "fonctions média ne sont pas disponibles à mois que -mmedia soit utilisé"
-#: config/frv/frv.c:9650
+#: config/frv/frv.c:9350
msgid "this media function is only available on the fr500"
-msgstr ""
+msgstr "cette fonction média est seulement disponible sur le fr500"
-#: config/frv/frv.c:9678
+#: config/frv/frv.c:9378
msgid "this media function is only available on the fr400"
-msgstr ""
+msgstr "cette fonction média est seulement disponible sur le fr400"
#. This macro is a C statement to print on `stderr' a string describing the
#. particular machine description choice. Every machine description should
@@ -10294,98 +9255,93 @@ msgstr ""
#. #else
#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
#. #endif
-#: config/frv/frv.h:512
+#: config/frv/frv.h:506
+#, c-format
msgid " (frv)"
-msgstr ""
+msgstr " (frv)"
-#: config/h8300/h8300.c:314
+#: config/h8300/h8300.c:288
msgid "-ms2600 is used without -ms"
msgstr "-ms2600 est utilisé sans -ms"
-#: config/h8300/h8300.c:320
-#, fuzzy
+#: config/h8300/h8300.c:294
msgid "-mn is used without -mh or -ms"
-msgstr "-ms2600 est utilisé sans -ms"
+msgstr "-mm est utilisé sans -mh ou -ms"
#. 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/h8300/h8300.h:150
-#, fuzzy
+#: config/h8300/h8300.h:145
msgid "Generate H8S code"
-msgstr "Générer du code H8/S"
+msgstr "Générer du code H8S"
-#: config/h8300/h8300.h:151
-#, fuzzy
+#: config/h8300/h8300.h:146
msgid "Do not generate H8S code"
-msgstr "Ne pas générer du code H8/S"
+msgstr "Ne pas générer du code H8S"
-#: config/h8300/h8300.h:152
-#, fuzzy
+#: config/h8300/h8300.h:147
msgid "Generate H8S/2600 code"
-msgstr "Générer du code H8/S2600"
+msgstr "Générer du code H8S/S2600"
-#: config/h8300/h8300.h:153
-#, fuzzy
+#: config/h8300/h8300.h:148
msgid "Do not generate H8S/2600 code"
-msgstr "Ne pas générer du code H8/S2600"
+msgstr "Ne pas générer du code H8S/2600"
-#: config/h8300/h8300.h:154
+#: config/h8300/h8300.h:149
msgid "Make integers 32 bits wide"
msgstr "Rendre les entiers larges de 32 bits"
-#: config/h8300/h8300.h:157
+#: config/h8300/h8300.h:152
msgid "Use registers for argument passing"
msgstr "Utiliser les registres pour le passage d'arguments"
-#: config/h8300/h8300.h:159
+#: config/h8300/h8300.h:154
msgid "Do not use registers for argument passing"
msgstr "Ne pas utiliser les registres pour le passage d'arguments"
-#: config/h8300/h8300.h:161
+#: config/h8300/h8300.h:156
msgid "Consider access to byte sized memory slow"
msgstr "Considérer l'accès mémoire lent pour la taille d'octets"
-#: config/h8300/h8300.h:162
+#: config/h8300/h8300.h:157
msgid "Enable linker relaxing"
-msgstr "Auoriser la rélâche par l'éditeur de liens"
+msgstr "Activer la rélâche par l'éditeur de liens"
-#: config/h8300/h8300.h:164
+#: config/h8300/h8300.h:158
msgid "Generate H8/300H code"
msgstr "Générer du code H8/300H"
-#: config/h8300/h8300.h:165
-#, fuzzy
+#: config/h8300/h8300.h:159
msgid "Enable the normal mode"
-msgstr "mode incompatible d'enregistrement"
+msgstr "Activer le mode normal"
-#: config/h8300/h8300.h:166
+#: config/h8300/h8300.h:160
msgid "Do not generate H8/300H code"
msgstr "Ne pas générer du code H8/300H"
-#: config/h8300/h8300.h:167
+#: config/h8300/h8300.h:161
msgid "Use H8/300 alignment rules"
msgstr "Utiliser les règles d'alignement H8/300"
-#: config/i370/i370-c.c:53
+#: config/i370/i370-c.c:55
msgid "junk at end of #pragma map"
msgstr "rebut à la fin de #pragma map"
-#: config/i370/i370-c.c:59
+#: config/i370/i370-c.c:61
msgid "malformed #pragma map, ignored"
msgstr "#pragma map mal composé, ignoré"
-#: config/i370/i370.c:915
+#: config/i370/i370.c:784
msgid "real name is too long - alias ignored"
msgstr "nom réel est trop long - alias ignoré"
-#: config/i370/i370.c:920
+#: config/i370/i370.c:789
msgid "alias name is too long - alias ignored"
msgstr "nom d'alias est trop long - alias ignoré"
-#: config/i370/i370.c:1191
+#: config/i370/i370.c:1060
msgid "internal error--no jump follows compare:"
msgstr "erreur interne--pas de saut suivant la comparaison:"
@@ -10401,407 +9357,453 @@ msgstr "Générer des instructions « char »"
msgid "Do not generate char instructions"
msgstr "Ne pas générer des instructions « char »"
-#: config/i386/i386.c:1050
+#: config/i386/i386.c:1161
#, c-format
msgid "code model %s not supported in PIC mode"
msgstr "model de code %s n'est pas supporté en mode PIC"
-#: config/i386/i386.c:1060 config/sparc/sparc.c:356
+#: config/i386/i386.c:1171 config/sparc/sparc.c:387
#, c-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr "valeur erronée (%s) pour l'opton -mcmodel="
-#: config/i386/i386.c:1075
+#: config/i386/i386.c:1186
#, c-format
msgid "bad value (%s) for -masm= switch"
msgstr "valeur erronée (%s) pour l'option -masm"
-#: config/i386/i386.c:1078
+#: config/i386/i386.c:1189
#, c-format
msgid "code model `%s' not supported in the %s bit mode"
msgstr "model de code « %s » n'est pas supporté dans le mode %s bits"
-#: config/i386/i386.c:1081
+#: config/i386/i386.c:1192
msgid "code model `large' not supported yet"
msgstr "model de code « large » n'est pas supporté encore"
-#: config/i386/i386.c:1083
+#: config/i386/i386.c:1194
#, c-format
msgid "%i-bit mode not compiled in"
msgstr "mode %i bits pas compilé en"
-#: config/i386/i386.c:1113
+#: config/i386/i386.c:1221 config/i386/i386.c:1233
+msgid "CPU you selected does not support x86-64 instruction set"
+msgstr "le processeur sélectionné ne supporte pas le jeu d'instructions x86-64"
+
+#: config/i386/i386.c:1226 config/iq2000/iq2000.c:1840
#, c-format
msgid "bad value (%s) for -march= switch"
msgstr "valeur erronée (%s) pour l'option -march="
-#: config/i386/i386.c:1124
+#: config/i386/i386.c:1239
#, c-format
-msgid "bad value (%s) for -mcpu= switch"
-msgstr "valeur erronée (%s) pour l'option -mcpu="
+msgid "bad value (%s) for -mtune= switch"
+msgstr "valeur erronée (%s) pour l'option -mtune="
-#: config/i386/i386.c:1141
+#: config/i386/i386.c:1256
#, c-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr "-mregparm=%d n'est pas entre 0 et %d"
-#: config/i386/i386.c:1154
+#: config/i386/i386.c:1269
msgid "-malign-loops is obsolete, use -falign-loops"
msgstr "-malign-loops est obsolète, utiliser -falign-loops"
-#: config/i386/i386.c:1159 config/i386/i386.c:1172 config/i386/i386.c:1185
+#: config/i386/i386.c:1274 config/i386/i386.c:1287 config/i386/i386.c:1300
#, c-format
msgid "-malign-loops=%d is not between 0 and %d"
msgstr "-malign-loops=%d n'est pas entre 0 et %d"
-#: config/i386/i386.c:1167
+#: config/i386/i386.c:1282
msgid "-malign-jumps is obsolete, use -falign-jumps"
msgstr "-malign-jumps est obsolète, utiliser -falign-loops"
-#: config/i386/i386.c:1180
+#: config/i386/i386.c:1295
msgid "-malign-functions is obsolete, use -falign-functions"
msgstr "-malign-functions est obsolète, utiliser -falign-loops"
-#: config/i386/i386.c:1218
+#: config/i386/i386.c:1333
#, c-format
msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgstr "-mpreferred-stack-boundary=%d n'est pas entre %d et 12"
-#: config/i386/i386.c:1230
+#: config/i386/i386.c:1345
#, c-format
msgid "-mbranch-cost=%d is not between 0 and 5"
msgstr "-mbranch-cost=%d n'est pas entre 0 et 5"
-#: config/i386/i386.c:1242
-#, fuzzy, c-format
+#: config/i386/i386.c:1357
+#, c-format
msgid "bad value (%s) for -mtls-dialect= switch"
-msgstr "valeur erronée (%s) pour l'option -msdata"
+msgstr "valeur erronée (%s) pour l'option -mtls-dialect"
-#: config/i386/i386.c:1263
+#: config/i386/i386.c:1386
msgid "-malign-double makes no sense in the 64bit mode"
msgstr "-malign-double n'a aucun sens en mode 64 bits"
-#: config/i386/i386.c:1265
+#: config/i386/i386.c:1388
msgid "-mrtd calling convention not supported in the 64bit mode"
msgstr "la conversion d'appel -mrtd n'est pas supporté en mode 64 bits"
-#: config/i386/i386.c:1281 config/i386/i386.c:1292
+#: config/i386/i386.c:1410 config/i386/i386.c:1421
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr "jeu d'instructions SSE désactivé, arithmétique 387 est utilisé"
-#: config/i386/i386.c:1297
+#: config/i386/i386.c:1426
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr "jeu d'instructions 387 désactivé, arithmétique SSE est utilisé"
-#: config/i386/i386.c:1304
+#: config/i386/i386.c:1433
#, c-format
msgid "bad value (%s) for -mfpmath= switch"
msgstr "valeur erronée (%s) pour l'option -mfpmath"
-#: config/i386/i386.c:1436
+#: config/i386/i386.c:1581 config/i386/i386.c:1592
+msgid "fastcall and stdcall attributes are not compatible"
+msgstr "les attributs fastcall et stdcall ne sont pas compatibles"
+
+#: config/i386/i386.c:1585 config/i386/i386.c:1641
+msgid "fastcall and regparm attributes are not compatible"
+msgstr "les attributs fastcall et regparm ne sont pas compatibles"
+
+#: config/i386/i386.c:1628
#, c-format
msgid "`%s' attribute requires an integer constant argument"
msgstr "l'attribut « %s » requiert un argument de type constante entière"
-#: config/i386/i386.c:1442
+#: config/i386/i386.c:1634
#, c-format
msgid "argument to `%s' attribute larger than %d"
msgstr "l'argument pour l'attribut « %s » est plus grand que %d"
-#: config/i386/i386.c:2504
+#: config/i386/i386.c:2593
+msgid "SSE vector argument without SSE enabled changes the ABI"
+msgstr "l'argument vecteur SSE sans autorisation SSE modifie l'ABI "
+
+#: config/i386/i386.c:2609
+msgid "MMX vector argument without MMX enabled changes the ABI"
+msgstr "l'argument vecteur SSE sans autorisation MXX modifie l'ABI "
+
+#: config/i386/i386.c:2837
msgid "SSE vector return without SSE enabled changes the ABI"
-msgstr ""
+msgstr "vecteur SSE retourné sans autorisation SSE des changements de l'ABI "
-#: config/i386/i386.c:6386
+#: config/i386/i386.c:6811
msgid "invalid UNSPEC as operand"
msgstr "UNSPEC invalide comme opérande"
-#: config/i386/i386.c:6648
+#: config/i386/i386.c:7069
msgid "extended registers have no high halves"
msgstr "registres étendus n'a pas de demis hauts"
-#: config/i386/i386.c:6663
+#: config/i386/i386.c:7084
msgid "unsupported operand size for extended register"
msgstr "taille d'opérande non supportée pour un registre étendu"
-#: config/i386/i386.c:6978
+#: config/i386/i386.c:7399
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr "l'opérande n'est ni une constante ni du code de condition, code d'opérande invalide « c »"
-#: config/i386/i386.c:7024
+#: config/i386/i386.c:7445
#, c-format
msgid "invalid operand code `%c'"
msgstr "opérande invalide pour « %c »"
-#: config/i386/i386.c:7071
-#, fuzzy
+#: config/i386/i386.c:7488
msgid "invalid constraints for operand"
-msgstr "opérande %%c invalide"
+msgstr "contrainte invalide pour l'opérande"
-#: config/i386/i386.c:11271
+#: config/i386/i386.c:11889
msgid "unknown insn mode"
msgstr "mode insn inconnu"
-#. @@@ better error message
-#: config/i386/i386.c:13391 config/i386/i386.c:13427
-msgid "selector must be an immediate"
-msgstr "sélecteur doit être un immédiat"
-
-#. @@@ better error message
-#: config/i386/i386.c:13588 config/i386/i386.c:13622
-msgid "mask must be an immediate"
-msgstr "masque doit être un immédiat"
+#: config/i386/i386.c:14021 config/i386/i386.c:14057
+#, c-format
+msgid "selector must be an integer constant in the range 0..%i"
+msgstr "le sélecteur doit être une constante entière entre les bornes 0..%i"
-#: config/i386/i386.c:13654
-#, fuzzy
+#: config/i386/i386.c:14285
msgid "shift must be an immediate"
-msgstr "masque doit être un immédiat"
+msgstr "décalage doit être un immédiat"
-#: config/i386/winnt.c:96
-#, fuzzy, c-format
-msgid "function `%s' definition is marked dllimport."
-msgstr "définition de fonction déclaré « auto »"
+#: config/i386/i386.c:15308
+#, c-format
+msgid "`%s' incompatible attribute ignored"
+msgstr "attribut « %s » incompatible ignoré"
#: config/i386/winnt.c:104
-#, fuzzy, c-format
-msgid "variable `%s' definition is marked dllimport."
-msgstr "variable static « %s » est marquée dllimport"
+msgid "%Jfunction `%D' definition is marked dllimport."
+msgstr "%Jdéfinition de la fonction « %D » est marquée dllimport"
-#: config/i386/winnt.c:123
-#, c-format
-msgid "external linkage required for symbol '%s' because of '%s' attribute."
-msgstr ""
+#: config/i386/winnt.c:112
+msgid "%Jvariable `%D' definition is marked dllimport."
+msgstr "%Jdéfinition de la variable « %D » est marquée dllimport"
-#: config/i386/winnt.c:143
+#: config/i386/winnt.c:132
+msgid "%Jexternal linkage required for symbol '%D' because of '%s' attribute."
+msgstr "%Jédition de lien externe requise pour le symbole « %D » en raison de l'attribut « %s »"
+
+#: config/i386/winnt.c:149
#, c-format
msgid "`%s' attribute only applies to variables"
msgstr "attribut « %s » s'applique seulement aux variables"
-#: config/i386/winnt.c:242
-#, c-format
-msgid "function '%s' is defined after prior declaration as dllimport: attribute ignored."
-msgstr ""
+#: config/i386/winnt.c:247
+msgid "%Jfunction '%D' is defined after prior declaration as dllimport: attribute ignored"
+msgstr "%Jfonction « %D » est définie après un déclaration antérieure en tant que dllimport: attribut ignoré"
-#: config/i386/winnt.c:252
-#, fuzzy, c-format
-msgid "inline function '%s' is declared as dllimport: attribute ignored."
-msgstr "fonction « %s » redéclarée avec l'attribut noinline"
+#: config/i386/winnt.c:258
+msgid "%Jinline function '%D' is declared as dllimport: attribute ignored."
+msgstr "%Jfonction enligne « %D » est déclarée en tant que dllimport: attribut ignoré."
-#: config/i386/winnt.c:263
-#, c-format
-msgid "definition of static data member '%s' of dllimport'd class."
-msgstr ""
+#: config/i386/winnt.c:270
+msgid "%Jdefinition of static data member '%D' of dllimport'd class."
+msgstr "%Jdéfinition d'un membre statique de données « %D » de la classe dllimport"
-#: config/i386/winnt.c:322
-#, c-format
-msgid "inconsistent dll linkage for '%s': dllexport assumed."
-msgstr ""
+#: config/i386/winnt.c:329
+msgid "%Jinconsistent dll linkage for '%D', dllexport assumed."
+msgstr "%Jédition de lien dll inconsistent pour « %D »: dllexport assumé."
-#: config/i386/winnt.c:364
+#: config/i386/winnt.c:371
#, c-format
msgid "`%s' declared as both exported to and imported from a DLL"
msgstr "« %s » déclaré à la fois comme exporté et importé d'une DLL"
-#: config/i386/winnt.c:373
-#, c-format
-msgid "failure in redeclaration of '%s': dllimport'd symbol lacks external linkage."
-msgstr ""
+#: config/i386/winnt.c:380
+msgid "%Jfailure in redeclaration of '%D': dllimport'd symbol lacks external linkage."
+msgstr "%Jéchec dans la redéclation de « %D »: symbol dllimporté manque de liens externes."
-#: config/i386/winnt.c:479
-#, c-format
-msgid "'%s' %s after being referenced with dllimport linkage."
-msgstr ""
+#: config/i386/winnt.c:529
+msgid "%J'%D' defined locally after being referenced with dllimport linkage"
+msgstr "%J« %D » défini localement après avoir été référencé avec lien dllimport."
+
+#: config/i386/winnt.c:532
+msgid "%J'%D' redeclared without dllimport attribute after being referenced with dllimport linkage"
+msgstr "%J« %D » redéclaré sans attribut dllimport après avoir été référencé avec lien dllimport."
+
+#: config/i386/winnt.c:701
+msgid "%J'%D' causes a section type conflict"
+msgstr "%J« %D » cause un conflit du type de section"
-#: config/i386/cygwin.h:45
+#: config/i386/cygming.h:40
msgid "Use the Cygwin interface"
msgstr "Utiliser l'interface Cygwin"
-#: config/i386/cygwin.h:46
+#: config/i386/cygming.h:41
msgid "Use the Mingw32 interface"
msgstr "Utiliser l'interface Mingw32"
-#: config/i386/cygwin.h:47
+#: config/i386/cygming.h:42
msgid "Create GUI application"
msgstr "Créer une application de type GUI"
-#: config/i386/cygwin.h:48
+#: config/i386/cygming.h:43
msgid "Don't set Windows defines"
msgstr "Ne pas initialiser les définitions Windows"
-#: config/i386/cygwin.h:49
+#: config/i386/cygming.h:44
msgid "Set Windows defines"
msgstr "Initialiser les définitions Windows"
-#: config/i386/cygwin.h:50
+#: config/i386/cygming.h:45
msgid "Create console application"
msgstr "Créer une application de type console"
-#: config/i386/cygwin.h:51 config/i386/win32.h:59
+#: config/i386/cygming.h:46
msgid "Generate code for a DLL"
msgstr "Générer le code pour un DLL"
-#: config/i386/cygwin.h:53 config/i386/win32.h:61
+#: config/i386/cygming.h:48
msgid "Ignore dllimport for functions"
msgstr "Ignorer dllimport pour fonctions"
-#: config/i386/cygwin.h:55
+#: config/i386/cygming.h:50
msgid "Use Mingw-specific thread support"
msgstr "Utilise le support de thread spécifique à Mingw"
-#: config/i386/cygwin.h:245
+#: config/i386/cygming.h:169
#, c-format
msgid "-f%s ignored for target (all code is position independent)"
msgstr "-f%s ignoré pour la cible (tout le code set indépendant de la position)"
-#: config/i386/djgpp.h:206
+#: config/i386/djgpp.h:191
msgid "-mbnu210 is ignored (option is obsolete)"
msgstr "-mbnu210 est ignoré (option obsolète)"
+#: config/i386/i386-interix.h:256
+msgid "ms-bitfields not supported for objc"
+msgstr "ms-bitfields n'est pas supporté pour objc"
+
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
-#: config/i386/i386.h:306
+#: config/i386/i386.h:339
msgid "Alternate calling convention"
msgstr "Convention alternative d'appels"
-#: config/i386/i386.h:308 config/m68k/m68k.h:180 config/ns32k/ns32k.h:144
+#: config/i386/i386.h:341 config/m68k/m68k.h:344 config/ns32k/ns32k.h:144
msgid "Use normal calling convention"
msgstr "Utiliser la convention normale d'appels"
-#: config/i386/i386.h:310
+#: config/i386/i386.h:343
msgid "Align some doubles on dword boundary"
msgstr "Aligner quelques doubles sur des frontières de mots doubles"
-#: config/i386/i386.h:312
+#: config/i386/i386.h:345
msgid "Align doubles on word boundary"
msgstr "Aligner les doubles sur des frontières de mots"
-#: config/i386/i386.h:314
+#: config/i386/i386.h:347
msgid "Uninitialized locals in .bss"
msgstr "Var. locales non initialisées dans .bss"
-#: config/i386/i386.h:316
+#: config/i386/i386.h:349
msgid "Uninitialized locals in .data"
msgstr "Var. locales non initialisées dans .data"
-#: config/i386/i386.h:318 config/m68k/linux-aout.h:45 config/m68k/linux.h:50
-#: config/ns32k/ns32k.h:167
+#: config/i386/i386.h:351 config/m68k/linux.h:35 config/ns32k/ns32k.h:167
msgid "Use IEEE math for fp comparisons"
msgstr "Utiliser les mathématiques IEEE pour les comparaisons FP"
-#: config/i386/i386.h:320 config/ns32k/ns32k.h:169
+#: config/i386/i386.h:353 config/ns32k/ns32k.h:169
msgid "Do not use IEEE math for fp comparisons"
msgstr "Ne pas utiliser les mathématiques IEEE pour les comparaisons FP"
-#: config/i386/i386.h:322
+#: config/i386/i386.h:355
msgid "Return values of functions in FPU registers"
msgstr "Retourner les valeurs de fonctions dans les registres FPU"
-#: config/i386/i386.h:324
+#: config/i386/i386.h:357
msgid "Do not return values of functions in FPU registers"
msgstr "Ne pas retourner les valeurs de fonctions dans les registres FPU"
-#: config/i386/i386.h:326
+#: config/i386/i386.h:359
msgid "Do not generate sin, cos, sqrt for FPU"
msgstr "Ne pas générer sin, cos, sqrt pour le FPU"
-#: config/i386/i386.h:328
+#: config/i386/i386.h:361
msgid "Generate sin, cos, sqrt for FPU"
msgstr "Générer sin, cos, sqrt pour le FPU"
-#: config/i386/i386.h:330
+#: config/i386/i386.h:363
msgid "Omit the frame pointer in leaf functions"
msgstr "Omettre le pointeur de trame dans les fonctions feuilles"
-#: config/i386/i386.h:333
+#: config/i386/i386.h:366
msgid "Enable stack probing"
msgstr "Autoriser le sondage de la pile"
#. undocumented
#. undocumented
-#: config/i386/i386.h:338
+#: config/i386/i386.h:371
msgid "Align destination of the string operations"
msgstr "Aligner la destination des opérations sur les chaînes"
-#: config/i386/i386.h:340
+#: config/i386/i386.h:373
msgid "Do not align destination of the string operations"
msgstr "Ne pas aligner la destination des opérations sur les chaînes"
-#: config/i386/i386.h:342
+#: config/i386/i386.h:375
msgid "Inline all known string operations"
msgstr "Permettre l'enlignage dans toutes les opérations portant sur les chaînes"
-#: config/i386/i386.h:344
+#: config/i386/i386.h:377
msgid "Do not inline all known string operations"
msgstr "Ne pas permettre l'enlignage dans toutes les opérations portant sur les chaînes"
-#: config/i386/i386.h:346 config/i386/i386.h:350
+#: config/i386/i386.h:379 config/i386/i386.h:383
msgid "Use push instructions to save outgoing arguments"
msgstr "Utiliser les instructions push pour sauvegardes les arguments sortants"
-#: config/i386/i386.h:348 config/i386/i386.h:352
+#: config/i386/i386.h:381 config/i386/i386.h:385
msgid "Do not use push instructions to save outgoing arguments"
msgstr "Ne pas utiliser les instructions push pour sauvegardes les arguments sortants"
-#: config/i386/i386.h:354
+#: config/i386/i386.h:387
msgid "Support MMX built-in functions"
msgstr "Supporte les fonctions internes MMX"
-#: config/i386/i386.h:356
+#: config/i386/i386.h:389
msgid "Do not support MMX built-in functions"
msgstr "Ne supporte pas les fonctions internes MMX"
-#: config/i386/i386.h:358
+#: config/i386/i386.h:391
msgid "Support 3DNow! built-in functions"
msgstr "Supporte les fonctions internes 3DNOW!"
-#: config/i386/i386.h:360
+#: config/i386/i386.h:393
msgid "Do not support 3DNow! built-in functions"
msgstr "Ne supporte pas les fonctions internes 3DNOW!"
-#: config/i386/i386.h:362
+#: config/i386/i386.h:395
msgid "Support MMX and SSE built-in functions and code generation"
msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-#: config/i386/i386.h:364
+#: config/i386/i386.h:397
msgid "Do not support MMX and SSE built-in functions and code generation"
msgstr "Ne supporte pas les fonctions internes MMX et SSE et la génération de code"
-#: config/i386/i386.h:366
+#: config/i386/i386.h:399
msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
msgstr "Supporte les fonctions internes MMX, SSE et SSE2 et la génération de code"
-#: config/i386/i386.h:368
+#: config/i386/i386.h:401
msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation"
msgstr "Ne supporte pas les fonctions internes MMX, SSE et SSE2 et la génération de code"
-#: config/i386/i386.h:370
+#: config/i386/i386.h:403
+msgid "Support MMX, SSE, SSE2 and PNI built-in functions and code generation"
+msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et PNI et la génération de code"
+
+#: config/i386/i386.h:405
+msgid "Do not support MMX, SSE, SSE2 and PNI built-in functions and code generation"
+msgstr "Ne supporte pas les fonctions internes MMX, SSE, SSE2 et PNI et la génération de code"
+
+#: config/i386/i386.h:407
msgid "sizeof(long double) is 16"
msgstr "sizeof(long double) est 16"
-#: config/i386/i386.h:372
+#: config/i386/i386.h:409
msgid "sizeof(long double) is 12"
msgstr "sizeof(long double) est 12"
-#: config/i386/i386.h:374
+#: config/i386/i386.h:411
msgid "Generate 64bit x86-64 code"
msgstr "Générer du code 64 bits pour x86-64"
-#: config/i386/i386.h:376
+#: config/i386/i386.h:413
msgid "Generate 32bit i386 code"
msgstr "Générer du code 32 bits pour i386"
-#: config/i386/i386.h:378
+#: config/i386/i386.h:415
+msgid "Use native (MS) bitfield layout"
+msgstr "Utiliser une configuration de champ de bits native (MS)"
+
+#: config/i386/i386.h:417
+msgid "Use gcc default bitfield layout"
+msgstr "Utiliser la configuration par défaut de gcc pour les champs de bits"
+
+#: config/i386/i386.h:419
msgid "Use red-zone in the x86-64 code"
msgstr "Utiliser la zone-rouge pour le code x86-64"
-#: config/i386/i386.h:380
+#: config/i386/i386.h:421
msgid "Do not use red-zone in the x86-64 code"
msgstr "Ne pas utiliser la zone-rouge pour le code x86-64"
+#: config/i386/i386.h:423
+#, c-format
+msgid "Use direct references against %gs when accessing tls data"
+msgstr "Utiliser la référence directe envers %gs lors de l'accès des données tls"
+
+#: config/i386/i386.h:425
+#, c-format
+msgid "Do not use direct references against %gs when accessing tls data"
+msgstr "Ne pas utiliser la référence directe envers %gs lors de l'accès des données tls"
+
#. This macro is similar to `TARGET_SWITCHES' but defines names of
#. command options that have values. Its definition is an
#. initializer with a subgrouping for each command option.
@@ -10811,23 +9813,24 @@ msgstr "Ne pas utiliser la zone-rouge pour le code x86-64"
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:409 config/rs6000/rs6000.h:393 config/sparc/sparc.h:635
+#: config/i386/i386.h:459 config/ia64/ia64.h:269 config/rs6000/rs6000.h:437
+#: config/s390/s390.h:146 config/sparc/sparc.h:650
msgid "Schedule code for given CPU"
msgstr "Ordonnancer le code pour le processeur donné"
-#: config/i386/i386.h:411
+#: config/i386/i386.h:461
msgid "Generate floating point mathematics using given instruction set"
msgstr "Générer les mathématiques en virgule flottante avec le jeu d'instructions données"
-#: config/i386/i386.h:413
+#: config/i386/i386.h:463 config/s390/s390.h:148
msgid "Generate code for given CPU"
msgstr "Générer le code pour le processeur donné"
-#: config/i386/i386.h:415
+#: config/i386/i386.h:465
msgid "Number of registers used to pass integer arguments"
msgstr "Nombre de registres utilisés pour passer les arguments entiers"
-#. TARGET_DEFAULT is defined in sun*.h and isi.h, etc.
+#. TARGET_DEFAULT is defined in m68k-none.h, netbsd.h, etc.
#. This macro is similar to `TARGET_SWITCHES' but defines names of
#. command options that have values. Its definition is an
#. initializer with a subgrouping for each command option.
@@ -10837,98 +9840,98 @@ msgstr "Nombre de registres utilisés pour passer les arguments entiers"
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:417 config/m68k/m68k.h:263
+#: config/i386/i386.h:467 config/m68k/m68k.h:360
msgid "Loop code aligned to this power of 2"
msgstr "Codes de boucles alignés selon une puissance de 2"
-#: config/i386/i386.h:419 config/m68k/m68k.h:265
+#: config/i386/i386.h:469 config/m68k/m68k.h:362
msgid "Jump targets are aligned to this power of 2"
msgstr "Sauts de cibles alignés selon une puissance de 2"
-#: config/i386/i386.h:421 config/m68k/m68k.h:267
+#: config/i386/i386.h:471 config/m68k/m68k.h:364
msgid "Function starts are aligned to this power of 2"
msgstr "Débuts des fonction alignés selon une puissance de 2"
-#: config/i386/i386.h:424
+#: config/i386/i386.h:474
msgid "Attempt to keep stack aligned to this power of 2"
msgstr "Tentative de conservation de la pile alignée selon une puissance de 2"
-#: config/i386/i386.h:426
+#: config/i386/i386.h:476
msgid "Branches are this expensive (1-5, arbitrary units)"
msgstr "Branchements coûteux à ce point (1-4, unités arbitraires)"
-#: config/i386/i386.h:428
+#: config/i386/i386.h:478
msgid "Use given x86-64 code model"
msgstr "Utiliser le modèle de x86-64 donné"
#. Undocumented.
#. Undocumented.
-#: config/i386/i386.h:434
+#: config/i386/i386.h:484
msgid "Use given assembler dialect"
msgstr "Utiliser la syntaxe de l'assembleur donné"
-#: config/i386/i386.h:436
-#, fuzzy
+#: config/i386/i386.h:486
msgid "Use given thread-local storage dialect"
-msgstr "Utiliser la syntaxe de l'assembleur donné"
+msgstr "Utiliser le dialecte de stockage du thread local fourni"
-#: config/i386/sco5.h:297
+#: config/i386/sco5.h:292
msgid "Generate ELF output"
msgstr "Générer la sortie ELF"
-#: config/i386/win32.h:53
-msgid "Use Mingw32 interface"
-msgstr "Utiliser l'interface Mingw32"
-
-#: config/i386/win32.h:55
-msgid "Use Cygwin interface"
-msgstr "Utiliser l'interface Cygwin"
-
-#: config/i386/win32.h:57
-msgid "Use bare Windows interface"
-msgstr "Utiliser l'interface brute Windows"
-
#. 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:71
+#: config/i386/xm-djgpp.h:64
msgid "environment variable DJGPP not defined"
msgstr "variable d'environment DJGPP non définie"
-#: config/i386/xm-djgpp.h:73
+#: config/i386/xm-djgpp.h:66
#, c-format
msgid "environment variable DJGPP points to missing file '%s'"
msgstr "variable d'environment DJGPP pointe sur un fichier manquant « %s »"
-#: config/i386/xm-djgpp.h:76
+#: config/i386/xm-djgpp.h:69
#, c-format
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr "variable d'environment DJGPP pointe vers un fichier corrompu « %s »"
-#: config/i960/i960-c.c:66
+#. 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/i860/i860.h:60
+msgid "Generate code which uses the FPU"
+msgstr "Générer du code qui utilise le FPU"
+
+#: config/i860/i860.h:61 config/i860/i860.h:62
+msgid "Do not generate code which uses the FPU"
+msgstr "Ne pas générer du code qui utilise le FPU"
+
+#: config/i960/i960-c.c:68
msgid "sorry, not implemented: #pragma align NAME=SIZE"
msgstr "désolé, pas implanté: #pragma align NOM=TAILLE"
-#: config/i960/i960-c.c:71
+#: config/i960/i960-c.c:73
msgid "malformed #pragma align - ignored"
msgstr "#pragma align mal composé - ignoré"
-#: config/i960/i960-c.c:109
+#: config/i960/i960-c.c:111
msgid "sorry, not implemented: #pragma noalign NAME"
msgstr "désolé, pas implanté: #pragma noalign NOM"
-#: config/i960/i960.c:121 config/i960/i960.c:131
+#: config/i960/i960.c:134 config/i960/i960.c:144
msgid "conflicting architectures defined - using C series"
msgstr "architectures conflictuelles définies - utilise les séries C"
-#: config/i960/i960.c:126
+#: config/i960/i960.c:139
msgid "conflicting architectures defined - using K series"
msgstr "architectures conflictuelles définies - utilise les séries K"
-#: config/i960/i960.c:141
+#: config/i960/i960.c:154
msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
msgstr "iC2.0 et iC3.0 sont incompatibles - utilise iC3.0"
-#: config/i960/i960.c:1448 config/m68k/m68k.c:559 config/rs6000/rs6000.c:9976
+#: config/i960/i960.c:1456 config/m68k/m68k.c:588 config/rs6000/rs6000.c:11296
msgid "stack limit expression is not supported"
msgstr "expression limitant la pile n'est pas supportée"
@@ -10939,402 +9942,536 @@ msgstr "expression limitant la pile n'est pas supportée"
#. 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:240
+#: config/i960/i960.h:250
msgid "Generate SA code"
msgstr "Générer du code SA"
-#: config/i960/i960.h:243
+#: config/i960/i960.h:253
msgid "Generate SB code"
msgstr "Générer du code SB"
#. {"sc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate SC code")},
-#: config/i960/i960.h:248
+#: config/i960/i960.h:258
msgid "Generate KA code"
msgstr "Générer du code KA"
-#: config/i960/i960.h:251
+#: config/i960/i960.h:261
msgid "Generate KB code"
msgstr "Générer du code KB"
#. {"kc", (TARGET_FLAG_NUMERICS|TARGET_FLAG_PROTECTED| TARGET_FLAG_MC|TARGET_FLAG_COMPLEX_ADDR), N_("Generate KC code")},
-#: config/i960/i960.h:256
+#: config/i960/i960.h:266
msgid "Generate JA code"
msgstr "Générer du code JA"
-#: config/i960/i960.h:258
+#: config/i960/i960.h:268
msgid "Generate JD code"
msgstr "Générer du code JD"
-#: config/i960/i960.h:261
+#: config/i960/i960.h:271
msgid "Generate JF code"
msgstr "Générer du code JF"
-#: config/i960/i960.h:263
+#: config/i960/i960.h:273
msgid "generate RP code"
msgstr "Générer du code RP"
-#: config/i960/i960.h:266
+#: config/i960/i960.h:276
msgid "Generate MC code"
msgstr "Générer du code MC"
-#: config/i960/i960.h:269
+#: config/i960/i960.h:279
msgid "Generate CA code"
msgstr "Générer du code CA"
#. {"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:279
+#: config/i960/i960.h:289
msgid "Generate CF code"
msgstr "Générer du code CF"
-#: config/i960/i960.h:283 config/mips/mips.h:568 config/pa/pa.h:266
+#: config/i960/i960.h:293 config/mips/mips.h:539 config/pa/pa.h:266
msgid "Use software floating point"
msgstr "Utiliser le traitement par logiciel des nombres flottants"
-#: config/i960/i960.h:285
+#: config/i960/i960.h:295
msgid "Use alternate leaf function entries"
msgstr "Utiliser les entrées alternatives pour les fonctions de feuilles"
-#: config/i960/i960.h:287
+#: config/i960/i960.h:297
msgid "Do not use alternate leaf function entries"
msgstr "Ne pas utiliser les entrées alternatives pour les fonctions de feuilles"
-#: config/i960/i960.h:289
+#: config/i960/i960.h:299
msgid "Perform tail call optimization"
msgstr "Effectuer une optimisation sur mesure des appels"
-#: config/i960/i960.h:291
+#: config/i960/i960.h:301
msgid "Do not perform tail call optimization"
msgstr "Ne pas effectuer une optimisation sur mesure des appels"
-#: config/i960/i960.h:293
+#: config/i960/i960.h:303
msgid "Use complex addressing modes"
msgstr "Utiliser les modes d'adressage complexes"
-#: config/i960/i960.h:295
+#: config/i960/i960.h:305
msgid "Do not use complex addressing modes"
msgstr "Ne pas utiliser les modes d'adressage complexes"
-#: config/i960/i960.h:297
+#: config/i960/i960.h:307
msgid "Align code to 8 byte boundary"
msgstr "Aligner le code sur des frontières de 8 octets"
-#: config/i960/i960.h:299
+#: config/i960/i960.h:309
msgid "Do not align code to 8 byte boundary"
msgstr "Ne pas aligner le code sur des frontières de 8 octets"
#. {"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:305 config/i960/i960.h:307
+#: config/i960/i960.h:315 config/i960/i960.h:317
msgid "Enable compatibility with iC960 v2.0"
msgstr "Autoriser la compatibilité avec iC960 v2.0"
-#: config/i960/i960.h:309
+#: config/i960/i960.h:319
msgid "Enable compatibility with iC960 v3.0"
msgstr "Autoriser la compatibilité avec iC960 v3.0"
-#: config/i960/i960.h:311 config/i960/i960.h:313
+#: config/i960/i960.h:321 config/i960/i960.h:323
msgid "Enable compatibility with ic960 assembler"
msgstr "Autoriser la compatibilité avec l'assembleur iC960"
-#: config/i960/i960.h:315
+#: config/i960/i960.h:325
msgid "Do not permit unaligned accesses"
msgstr "Ne pas permettre les accès non alignés"
-#: config/i960/i960.h:317
+#: config/i960/i960.h:327
msgid "Permit unaligned accesses"
msgstr "Permettre les accès non alignés"
-#: config/i960/i960.h:319
+#: config/i960/i960.h:329
msgid "Layout types like Intel's v1.3 gcc"
msgstr "Utiliser une disposition de type Intel's v1.3 gcc"
-#: config/i960/i960.h:321
+#: config/i960/i960.h:331
msgid "Do not layout types like Intel's v1.3 gcc"
msgstr "Ne pas utiliser une disposition de type Intel's v1.3 gcc"
-#: config/i960/i960.h:323 config/sparc/freebsd.h:80 config/sparc/linux.h:86
-#: config/sparc/linux64.h:88 config/sparc/netbsd-elf.h:238
+#: config/i960/i960.h:333 config/sparc/freebsd.h:76 config/sparc/linux.h:91
+#: config/sparc/linux64.h:103 config/sparc/netbsd-elf.h:215
msgid "Use 64 bit long doubles"
msgstr "Utiliser les doubles longs de 64 bits"
-#: config/i960/i960.h:325
+#: config/i960/i960.h:335
msgid "Enable linker relaxation"
msgstr "Autoriser la relâche par l'éditeur de liens"
-#: config/i960/i960.h:327
+#: config/i960/i960.h:337
msgid "Do not enable linker relaxation"
msgstr "Ne pas autoriser la relâche par l'éditeur de liens"
-#: config/ia64/ia64-c.c:51
-#, fuzzy
+#: config/ia64/ia64-c.c:52
msgid "malformed #pragma builtin"
-msgstr "sectin mal composée #pragma ghs"
+msgstr "construit #pragma mal composé"
-#: config/ia64/ia64.c:4015
+#: config/ia64/ia64.c:1021 config/m32r/m32r.c:354
+#, c-format
+msgid "invalid argument of `%s' attribute"
+msgstr "type d'argument invalide pour l'attribut « %s »"
+
+#: config/ia64/ia64.c:1033
+msgid "%Jan address area attribute cannot be specified for local variables"
+msgstr "%Jun attribut d'adresse de zone de données ne peut pas être spécifié pour des variables locales"
+
+#: config/ia64/ia64.c:1040
+msgid "%Jaddress area of '%s' conflicts with previous declaration"
+msgstr "%Jl'adresse de la zone « %s » entre en conflit avec un déclaration précédente"
+
+#: config/ia64/ia64.c:1047
+msgid "%Jaddress area attribute cannot be specified for functions"
+msgstr "%Jl'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctiones"
+
+#: config/ia64/ia64.c:4288
msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand: code inconnu"
-#: config/ia64/ia64.c:4292
+#: config/ia64/ia64.c:4628
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr "valeur de -mfixed-range doit avoir la forme REG1-REG2"
-#: config/ia64/ia64.c:4319
+#: config/ia64/ia64.c:4655
#, c-format
msgid "%s-%s is an empty range"
msgstr "%s-%s est une étendue vide"
-#: config/ia64/ia64.c:4350
-#, fuzzy
+#: config/ia64/ia64.c:4703
msgid "cannot optimize floating point division for both latency and throughput"
-msgstr "ne peut optimiser la division à la fois pour la latence et la quantité produite"
+msgstr "ne peut optimiser la division en point flottant à la fois pour la latence et le débit"
-#: config/ia64/ia64.c:4356
-#, fuzzy
+#: config/ia64/ia64.c:4709
msgid "cannot optimize integer division for both latency and throughput"
-msgstr "ne peut optimiser la division à la fois pour la latence et la quantité produite"
+msgstr "ne peut optimiser la division entière à la fois pour la latence et le débit"
+
+#: config/ia64/ia64.c:4715
+msgid "cannot optimize square root for both latency and throughput"
+msgstr "ne peut optimiser la racine carrée à la fois pour la latence et le débit"
-#: config/ia64/ia64.c:4368
-#, fuzzy, c-format
+#: config/ia64/ia64.c:4721
+msgid "not yet implemented: latency-optimized inline square root"
+msgstr "pas encore implanté: racine carrée enligne optimisée pour la latence"
+
+#: config/ia64/ia64.c:4733
+#, c-format
msgid "bad value (%s) for -mtls-size= switch"
-msgstr "valeur erronée (%s) pour l'option -mtune"
+msgstr "valeur erronée (%s) pour l'option -mtls-size"
+
+#: config/ia64/ia64.c:4749
+#, c-format
+msgid "bad value (%s) for -tune= switch"
+msgstr "valeur erronée (%s) pour l'option -tune="
#. This macro defines names of command options to set and clear bits in
#. `target_flags'. Its definition is an initializer with a subgrouping for
#. each command option.
-#: config/ia64/ia64.h:154
+#: config/ia64/ia64.h:172
msgid "Generate big endian code"
msgstr "Générer du code de système à octets de poids fort"
-#: config/ia64/ia64.h:156 config/mcore/mcore.h:159
+#: config/ia64/ia64.h:174 config/mcore/mcore.h:154
msgid "Generate little endian code"
msgstr "Générer du code de système à octets de poids faible"
-#: config/ia64/ia64.h:158
+#: config/ia64/ia64.h:176
msgid "Generate code for GNU as"
msgstr "Générer du code pour GNU tel que"
-#: config/ia64/ia64.h:160
+#: config/ia64/ia64.h:178
msgid "Generate code for Intel as"
msgstr "Générer du code pour Intel tel que"
-#: config/ia64/ia64.h:162
+#: config/ia64/ia64.h:180
msgid "Generate code for GNU ld"
msgstr "Générer du code pour GNU ld"
-#: config/ia64/ia64.h:164
+#: config/ia64/ia64.h:182
msgid "Generate code for Intel ld"
msgstr "Générer du code pour Intel ld"
-#: config/ia64/ia64.h:166
+#: config/ia64/ia64.h:184
msgid "Generate code without GP reg"
msgstr "Générer du code sans registre GP"
-#: config/ia64/ia64.h:168
+#: config/ia64/ia64.h:186
msgid "Emit stop bits before and after volatile extended asms"
msgstr "Produire de stop bits avant et après les asms étendus"
-#: config/ia64/ia64.h:170
+#: config/ia64/ia64.h:188
msgid "Don't emit stop bits before and after volatile extended asms"
msgstr "Ne pas produire de stop bits avant et après les asms étendus"
-#: config/ia64/ia64.h:172
+#: config/ia64/ia64.h:190
msgid "Emit code for Itanium (TM) processor B step"
msgstr "Produire du code pour le processeur B Itanium (TM)"
-#: config/ia64/ia64.h:174
+#: config/ia64/ia64.h:192
msgid "Use in/loc/out register names"
msgstr "Utilise les noms des registres in/loc/out "
-#: config/ia64/ia64.h:176
+#: config/ia64/ia64.h:194
msgid "Disable use of sdata/scommon/sbss"
msgstr "Interdire l'utilisation de sdata/scommon/sbss"
-#: config/ia64/ia64.h:178
+#: config/ia64/ia64.h:196
msgid "Enable use of sdata/scommon/sbss"
msgstr "Autoriser l'utilisation de sdata/scommon/sbss"
-#: config/ia64/ia64.h:180
+#: config/ia64/ia64.h:198
msgid "gp is constant (but save/restore gp on indirect calls)"
msgstr "gp est une constante (mais save/restore gp fait par appels indirects)"
-#: config/ia64/ia64.h:182
+#: config/ia64/ia64.h:200
msgid "Generate self-relocatable code"
msgstr "Générer du code auto-relocalisable"
-#: config/ia64/ia64.h:184
-#, fuzzy
+#: config/ia64/ia64.h:202
msgid "Generate inline floating point division, optimize for latency"
-msgstr "Générer les divisions en ligne, optimisées pour la latence"
+msgstr "Générer la division enligne en point flottant, optimiser pour la latence"
-#: config/ia64/ia64.h:186
-#, fuzzy
+#: config/ia64/ia64.h:204
msgid "Generate inline floating point division, optimize for throughput"
-msgstr "Générer les divisions en ligne, optimisées pour la quantité"
+msgstr "Générer la division en point flottant enligne, optimiser pour le débit"
-#: config/ia64/ia64.h:188
-#, fuzzy
+#: config/ia64/ia64.h:206
msgid "Generate inline integer division, optimize for latency"
-msgstr "Générer les divisions en ligne, optimisées pour la latence"
+msgstr "Générer la division entière enligne, optimiser pour la latence"
-#: config/ia64/ia64.h:190
-#, fuzzy
+#: config/ia64/ia64.h:208
msgid "Generate inline integer division, optimize for throughput"
-msgstr "Générer les divisions en ligne, optimisées pour la quantité"
+msgstr "Générer la divisions entière enligne, optimiser pour le débit"
-#: config/ia64/ia64.h:192
+#: config/ia64/ia64.h:210
+msgid "Generate inline square root, optimize for latency"
+msgstr "Générer la racine carrée enligne, optimiser pour la latence"
+
+#: config/ia64/ia64.h:212
+msgid "Generate inline square root, optimize for throughput"
+msgstr "Générer la racine carrée enligne, optimiser pour le débit"
+
+#: config/ia64/ia64.h:214
msgid "Enable Dwarf 2 line debug info via GNU as"
msgstr "Autoriser les infos de lignes de mise au point Dwarf 2 via GNU tel que"
-#: config/ia64/ia64.h:194
+#: config/ia64/ia64.h:216
msgid "Disable Dwarf 2 line debug info via GNU as"
msgstr "Interdire les infos de lignes de mise au point Dwarf 2 via GNU tel que"
-#: config/ia64/ia64.h:223
+#: config/ia64/ia64.h:218
+msgid "Enable earlier placing stop bits for better scheduling"
+msgstr "Autoriser l'insertion antérieure de stop bits pour un meilleur ordonnancement"
+
+#: config/ia64/ia64.h:220
+msgid "Disable earlier placing stop bits"
+msgstr "Interdire l'installation antérieure de bits d'arrêt"
+
+#: config/ia64/ia64.h:265
msgid "Specify range of registers to make fixed"
msgstr "spécifier l'étendue des registres pour la rendre fixe"
-#: config/ip2k/ip2k.c:1090
-#, fuzzy
+#: config/ip2k/ip2k.c:1074
msgid "bad operand"
-msgstr "opérande ASM erronée"
+msgstr "opérande erronée"
+
+#: config/iq2000/iq2000.c:1816
+#, c-format
+msgid "bad value (%s) for -mcpu= switch"
+msgstr "valeur erronée (%s) pour l'option -mcpu="
+
+#: config/iq2000/iq2000.c:1845
+#, c-format
+msgid "The compiler does not support -march=%s."
+msgstr "Le compilateur ne supporte pas -march=%s."
+
+#: config/iq2000/iq2000.c:2232
+#, c-format
+msgid "gp_offset (%ld) or end_offset (%ld) is less than zero."
+msgstr "gp_offset (%ld) ou end_offset (%ld) est plus petit que zéro."
+
+#: config/iq2000/iq2000.c:3023
+#, c-format
+msgid "argument `%d' is not a constant"
+msgstr "l'argument de « %d » n'est pas une constante"
+
+#: config/iq2000/iq2000.c:3314 config/xtensa/xtensa.c:2081
+msgid "PRINT_OPERAND_ADDRESS, null pointer"
+msgstr "PRINT_OPERAND_ADDRESS, pointeur nul"
+
+#: config/iq2000/iq2000.c:3469
+#, c-format
+msgid "PRINT_OPERAND: Unknown punctuation '%c'"
+msgstr "PRINT_OPERAND: ponctuation « %c » inconnue"
-#: config/m32r/m32r.c:139
+#: config/iq2000/iq2000.c:3478 config/mips/mips.c:5457
+#: config/xtensa/xtensa.c:1935
+msgid "PRINT_OPERAND null pointer"
+msgstr "PRINT_OPERAND pointeur nul"
+
+#: config/iq2000/iq2000.c:3547
+#, c-format
+msgid "invalid %%P operand"
+msgstr "opérande %%P invalide"
+
+#: config/iq2000/iq2000.c:3555 config/rs6000/rs6000.c:8881
+#, c-format
+msgid "invalid %%p value"
+msgstr "valeur %%p invalide"
+
+#: config/iq2000/iq2000.c:3619 config/mips/mips.c:5587
+#, c-format
+msgid "invalid use of %%d, %%x, or %%X"
+msgstr "utilisation invalide de %%d, %%x, ou %%X"
+
+#: config/iq2000/iq2000.h:72 config/mn10300/mn10300.h:74
+msgid "No default crt0.o"
+msgstr "Aucun défaut pour crt0.o"
+
+#: config/iq2000/iq2000.h:74
+msgid "Use GP relative sdata/sbss sections"
+msgstr "Utiliser GP en mode relatif aux sections sdata/sbss"
+
+#: config/iq2000/iq2000.h:76
+msgid "Don't use GP relative sdata/sbss sections"
+msgstr "Ne pas utiliser GP en mode relatif aux sections sdata/sbss"
+
+#: config/iq2000/iq2000.h:78 config/mips/mips.h:563
+msgid "Use ROM instead of RAM"
+msgstr "Utiliser le ROM au lieu de la RAM"
+
+#: config/iq2000/iq2000.h:80 config/mips/mips.h:565
+msgid "Don't use ROM instead of RAM"
+msgstr "Ne pas utiliser le ROM au lieu de la RAM"
+
+#: config/iq2000/iq2000.h:82 config/mips/mips.h:567
+msgid "Put uninitialized constants in ROM (needs -membedded-data)"
+msgstr "Placer les constantes non itialisées dans le ROM (a besoin de -membedded-data)"
+
+#: config/iq2000/iq2000.h:84 config/mips/mips.h:569
+msgid "Don't put uninitialized constants in ROM"
+msgstr "Ne pas placer les constantes non itialisées dans le ROM (a besoin de -membedded-data)"
+
+#: config/iq2000/iq2000.h:106 config/mips/mips.h:731 config/pa/pa.h:310
+msgid "Specify CPU for scheduling purposes"
+msgstr "Spécifier le processeur pour les besoins de l'ordonnancement"
+
+#: config/iq2000/iq2000.h:108 config/mips/mips.h:733
+msgid "Specify CPU for code generation purposes"
+msgstr "Spécifier le processeur pour les besoins de la génération de code"
+
+#: config/m32r/m32r.c:172
#, c-format
msgid "bad value (%s) for -mmodel switch"
msgstr "valeur erronée (%s) pour l'option -mmodel"
-#: config/m32r/m32r.c:148
+#: config/m32r/m32r.c:181
#, c-format
msgid "bad value (%s) for -msdata switch"
msgstr "valeur erronée (%s) pour l'option -msdata"
-#: config/m32r/m32r.c:319
+#: config/m32r/m32r.c:188
#, c-format
-msgid "invalid argument of `%s' attribute"
-msgstr "type d'argument invalide pour l'attribut « %s »"
+msgid "bad value (%s) for -flush-trap=n (0=<n<=15)"
+msgstr "valeur erronée (%s) pour l'option -flush-trap=n (0=<n<=15)"
-#: config/m32r/m32r.c:422
-msgid "const objects cannot go in .sdata/.sbss"
-msgstr "constantes objets ne peuvent aller dans .sdata/.sbss"
-
-#: config/m32r/m32r.c:2256
+#: config/m32r/m32r.c:2295
#, c-format
msgid "invalid operand to %%s code"
msgstr "opérande invalide pour le code %%s"
-#: config/m32r/m32r.c:2263
+#: config/m32r/m32r.c:2302
#, c-format
msgid "invalid operand to %%p code"
msgstr "opérande invalide pour le code %%p"
-#: config/m32r/m32r.c:2318
+#: config/m32r/m32r.c:2357
msgid "bad insn for 'A'"
msgstr "insn erroné pour « A »"
-#: config/m32r/m32r.c:2370
+#: config/m32r/m32r.c:2404
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr "opérande invalide pour le code %%T/%%B"
-#: config/m32r/m32r.c:2393
+#: config/m32r/m32r.c:2427
#, c-format
msgid "invalid operand to %%N code"
msgstr "opérande invalide pour le code %%N"
-#: config/m32r/m32r.c:2438
+#: config/m32r/m32r.c:2460
msgid "pre-increment address is not a register"
msgstr "pré-incrément d'adresse n'est pas un registre"
-#: config/m32r/m32r.c:2445
+#: config/m32r/m32r.c:2467
msgid "pre-decrement address is not a register"
msgstr "pré-décrément d'adresse n'est pas un registre"
-#: config/m32r/m32r.c:2452
+#: config/m32r/m32r.c:2474
msgid "post-increment address is not a register"
msgstr "post-incrément d'adresse n'est pas un registre"
-#: config/m32r/m32r.c:2530 config/m32r/m32r.c:2546
-#: config/rs6000/rs6000.c:12802
+#: config/m32r/m32r.c:2550 config/m32r/m32r.c:2566
+#: config/rs6000/rs6000.c:14753
msgid "bad address"
msgstr "adresse erronée"
-#: config/m32r/m32r.c:2551
+#: config/m32r/m32r.c:2571
msgid "lo_sum not of register"
msgstr "lo_sum n'est pas un registre"
#. { "relax", TARGET_RELAX_MASK, "" }, { "no-relax", -TARGET_RELAX_MASK, "" },
-#: config/m32r/m32r.h:241
+#: config/m32r/m32r.h:277
msgid "Display compile time statistics"
msgstr "Afficher les statistiques de temps de compilation"
-#: config/m32r/m32r.h:243
+#: config/m32r/m32r.h:279
msgid "Align all loops to 32 byte boundary"
msgstr "Aligner toutes les boucles sur des frontières de 32 octets"
-#: config/m32r/m32r.h:246
+#: config/m32r/m32r.h:282
msgid "Only issue one instruction per cycle"
msgstr "Émettre seulement une instruction par cycle"
-#: config/m32r/m32r.h:249
+#: config/m32r/m32r.h:285
msgid "Prefer branches over conditional execution"
msgstr "Privilégier les branchements au lieu d'une exécution conditionnelle"
-#: config/m32r/m32r.h:265
+#: config/m32r/m32r.h:306
msgid "Code size: small, medium or large"
msgstr "Taille du code: small, medium ou large"
-#: config/m32r/m32r.h:267
+#: config/m32r/m32r.h:308
msgid "Small data area: none, sdata, use"
msgstr "Petite zone de données: none, sdata, use"
-#: config/m68hc11/m68hc11.c:242
+#: config/m32r/m32r.h:310 config/mips/mips.h:739
+msgid "Don't call any cache flush functions"
+msgstr "Ne pas faire d'appel de fonction de vidange de la cache"
+
+#: config/m32r/m32r.h:312 config/mips/mips.h:741
+msgid "Specify cache flush function"
+msgstr "Spécifier la fonction de vidange de la cache"
+
+#: config/m32r/m32r.h:314
+msgid "Don't call any cache flush trap"
+msgstr "Ne pas faire d'appel de fonction de déroutement de vidange de la cache"
+
+#: config/m32r/m32r.h:316
+msgid "Specify cache flush trap number"
+msgstr "Spécifier la fonction de déroutement de vidange de la cache"
+
+#: config/m68hc11/m68hc11.c:269
#, c-format
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
msgstr "-f%s ignoré pour 68HC11/68HC12 (non supporté)"
-#: config/m68hc11/m68hc11.c:1305
+#: config/m68hc11/m68hc11.c:1260
msgid "`trap' and `far' attributes are not compatible, ignoring `far'"
-msgstr ""
+msgstr "attributs « trap » et « far » ne sont pas compatibles, « far » ignoré "
-#: config/m68hc11/m68hc11.c:1311
-#, fuzzy
+#: config/m68hc11/m68hc11.c:1266
msgid "`trap' attribute is already used"
-msgstr "attribut « %s » ignoré"
+msgstr "attribut « trap » est déjà utilisé"
#. !!!! SCz wrong here.
-#: config/m68hc11/m68hc11.c:3327 config/m68hc11/m68hc11.c:3733
+#: config/m68hc11/m68hc11.c:3222 config/m68hc11/m68hc11.c:3606
msgid "move insn not handled"
msgstr "déplacement insn non traité"
-#: config/m68hc11/m68hc11.c:3579 config/m68hc11/m68hc11.c:3663
-#: config/m68hc11/m68hc11.c:3946
+#: config/m68hc11/m68hc11.c:3454 config/m68hc11/m68hc11.c:3538
+#: config/m68hc11/m68hc11.c:3809
msgid "invalid register in the move instruction"
msgstr "registre invalide dans l'instruction de déplacement"
-#: config/m68hc11/m68hc11.c:3613
+#: config/m68hc11/m68hc11.c:3488
msgid "invalid operand in the instruction"
msgstr "opérande invalide dans l'instruction"
-#: config/m68hc11/m68hc11.c:3920
+#: config/m68hc11/m68hc11.c:3783
msgid "invalid register in the instruction"
msgstr "registre invalide dans l'instruction"
-#: config/m68hc11/m68hc11.c:3953
+#: config/m68hc11/m68hc11.c:3816
msgid "operand 1 must be a hard register"
msgstr "l'opérande 1 doit être un registre matériel"
-#: config/m68hc11/m68hc11.c:3970
+#: config/m68hc11/m68hc11.c:3830
msgid "invalid rotate insn"
msgstr "rotation invalide insn"
-#: config/m68hc11/m68hc11.c:4391
+#: config/m68hc11/m68hc11.c:4246
msgid "registers IX, IY and Z used in the same INSN"
msgstr "registres IX, IY et Z utilisés dans le même INSN"
-#: config/m68hc11/m68hc11.c:4728 config/m68hc11/m68hc11.c:5031
+#: config/m68hc11/m68hc11.c:4583 config/m68hc11/m68hc11.c:4883
msgid "cannot do z-register replacement"
msgstr "ne peut effectuer le remplacement d'un registre z"
-#: config/m68hc11/m68hc11.c:5094
+#: config/m68hc11/m68hc11.c:4946
msgid "invalid Z register replacement for insn"
msgstr "remplacement invalide de registre Z pour insn"
@@ -11342,62 +10479,57 @@ msgstr "remplacement invalide de registre Z pour insn"
#. 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/m68hc11/m68hc11.h:172
+#: config/m68hc11/m68hc11.h:177
msgid "Compile with 16-bit integer mode"
msgstr "Compiler en mode entier de 16 bits"
-#: config/m68hc11/m68hc11.h:174
+#: config/m68hc11/m68hc11.h:179
msgid "Compile with 32-bit integer mode"
msgstr "Compiler en mode entier de 32 bits"
-#: config/m68hc11/m68hc11.h:176
+#: config/m68hc11/m68hc11.h:181
msgid "Auto pre/post decrement increment allowed"
msgstr "Auto pré/post décrementation incrémentation permise"
-#: config/m68hc11/m68hc11.h:178
+#: config/m68hc11/m68hc11.h:183
msgid "Auto pre/post decrement increment not allowed"
msgstr "Auto pré/post décrementation incrémentation non permise"
-#: config/m68hc11/m68hc11.h:180
+#: config/m68hc11/m68hc11.h:185
msgid "Min/max instructions allowed"
-msgstr ""
+msgstr "instructions min/max permises"
-#: config/m68hc11/m68hc11.h:182
-#, fuzzy
+#: config/m68hc11/m68hc11.h:187
msgid "Min/max instructions not allowed"
-msgstr "instruction ret n'est pas implantée"
+msgstr "instructions min/max ne sont pas permises"
-#: config/m68hc11/m68hc11.h:184
-#, fuzzy
+#: config/m68hc11/m68hc11.h:189
msgid "Use call and rtc for function calls and returns"
-msgstr "Générer un appel pour stopper si une fonction sans retour retourne un résultat"
+msgstr "Utiliser call et rtc pour les appels fonction et les retours"
-#: config/m68hc11/m68hc11.h:186
-#, fuzzy
+#: config/m68hc11/m68hc11.h:191
msgid "Use jsr and rts for function calls and returns"
-msgstr "Utiliser des stubs pour les prologues de fonction"
+msgstr "Utiliser jsr et rtc pour les appels de fonction et les retours"
-#: config/m68hc11/m68hc11.h:188
+#: config/m68hc11/m68hc11.h:193
msgid "Do not use direct addressing mode for soft registers"
msgstr "Ne pas utiliser les modes directs d'adressage pour des registres logiciels"
-#: config/m68hc11/m68hc11.h:190
-#, fuzzy
+#: config/m68hc11/m68hc11.h:195
msgid "Use direct addressing mode for soft registers"
-msgstr "Ne pas utiliser les modes directs d'adressage pour des registres logiciels"
+msgstr "Ne pas utiliser les modes directs d'adressage pour les registres logiciels"
-#: config/m68hc11/m68hc11.h:192 config/m68hc11/m68hc11.h:198
+#: config/m68hc11/m68hc11.h:197 config/m68hc11/m68hc11.h:203
msgid "Compile for a 68HC11"
msgstr "Compiler pour un 68HC11"
-#: config/m68hc11/m68hc11.h:194 config/m68hc11/m68hc11.h:200
+#: config/m68hc11/m68hc11.h:199 config/m68hc11/m68hc11.h:205
msgid "Compile for a 68HC12"
msgstr "Compiler pour un 68HC12"
-#: config/m68hc11/m68hc11.h:196 config/m68hc11/m68hc11.h:202
-#, fuzzy
+#: config/m68hc11/m68hc11.h:201 config/m68hc11/m68hc11.h:207
msgid "Compile for a 68HCS12"
-msgstr "Compiler pour un 68HC12"
+msgstr "Compiler pour un 68HCS12"
#. This macro is similar to `TARGET_SWITCHES' but defines names of
#. command options that have values. Its definition is an
@@ -11408,30 +10540,43 @@ msgstr "Compiler pour un 68HC12"
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/m68hc11/m68hc11.h:216
+#: config/m68hc11/m68hc11.h:221
msgid "Specify the register allocation order"
msgstr "Spécifier l'ordre d'allocation des registres"
-#: config/m68hc11/m68hc11.h:218
+#: config/m68hc11/m68hc11.h:223
msgid "Indicate the number of soft registers available"
msgstr "Indiquer le nombre de registres logiciels disponibles"
-#: config/m68k/m68k.c:158
+#: config/m68k/m68k.c:227
#, c-format
msgid "-malign-loops=%d is not between 1 and %d"
msgstr "-malign-loops=%d n'est pas entre 1 et %d"
-#: config/m68k/m68k.c:169
+#: config/m68k/m68k.c:238
+msgid "-mshared-library-id= specified without -mid-shared-library"
+msgstr "-mshared-library-id= spécifié sans -mid-shared-library"
+
+#: config/m68k/m68k.c:241
+#, c-format
+msgid "-mshared-library-id=%d is not between 0 and %d"
+msgstr "-mshared-library-id=%d n'est pas entre 0 et %d"
+
+#: config/m68k/m68k.c:255
+msgid "cannot specify both -msep-data and -mid-shared-library"
+msgstr "ne peut spécifier à la fois -msep-data et -mid-shared-library"
+
+#: config/m68k/m68k.c:270
#, c-format
msgid "-malign-jumps=%d is not between 1 and %d"
msgstr "-malign-jumps=%d n'est pas entre 1 et %d"
-#: config/m68k/m68k.c:180
+#: config/m68k/m68k.c:281
#, c-format
msgid "-malign-functions=%d is not between 1 and %d"
msgstr "-malign-functions=%d n'est pas entre 1 et %d"
-#: config/m68k/m68k.c:189
+#: config/m68k/m68k.c:290
msgid "-fPIC is not currently supported on the 68000 or 68010\n"
msgstr "-fPIC n'est pas couramment supporté pour le 68000 ou 68010\n"
@@ -11440,507 +10585,431 @@ msgstr "-fPIC n'est pas couramment supporté pour le 68000 ou 68010\n"
#. 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/m68k/m68k.h:162 config/m68k/m68k.h:164
+#: config/m68k/m68k.h:248 config/m68k/m68k.h:250
msgid "Generate code for a 68020"
msgstr "Générer le code pour un 68020"
-#: config/m68k/m68k.h:169 config/m68k/m68k.h:172
+#: config/m68k/m68k.h:255 config/m68k/m68k.h:258
msgid "Generate code for a 68000"
msgstr "Générer le code pour un 68000"
-#: config/m68k/m68k.h:174
+#: config/m68k/m68k.h:260
msgid "Use the bit-field instructions"
msgstr "Utiliser les instructions de champs de bits"
-#: config/m68k/m68k.h:176
+#: config/m68k/m68k.h:262
msgid "Do not use the bit-field instructions"
msgstr "Ne pas utiliser les instructions de champs de bits"
-#: config/m68k/m68k.h:178
-msgid "Use different calling convention using 'rtd'"
-msgstr "Utiliser une convention différente d'appel en utilisant « rtd »"
-
-#: config/m68k/m68k.h:182
+#: config/m68k/m68k.h:264
msgid "Consider type `int' to be 16 bits wide"
msgstr "Considérer le type « int » comme ayant une largeur de 16 bits"
-#: config/m68k/m68k.h:184
+#: config/m68k/m68k.h:266
msgid "Consider type `int' to be 32 bits wide"
msgstr "Considérer le type « int » comme ayant une largeur de 32 bits"
-#: config/m68k/m68k.h:186
-msgid "Generate code for a Sun FPA"
-msgstr "Générer le code pour un Sun FPA"
-
-#: config/m68k/m68k.h:189
-msgid "Do not generate code for a Sun FPA"
-msgstr "Ne pas générer le code pour un Sun FPA"
-
-#: config/m68k/m68k.h:191 config/m68k/m68k.h:193
-msgid "Generate code for a Sun Sky board"
-msgstr "Générer le code pour un Sun Sky board"
-
-#: config/m68k/m68k.h:195
-msgid "Do not use Sky linkage convention"
-msgstr "Ne pas utiliser la convention d'édition de lien Sky"
-
-#: config/m68k/m68k.h:197
-msgid "Generate code for a 68881"
-msgstr "Générer du code pour un 68881"
-
-#: config/m68k/m68k.h:200
+#: config/m68k/m68k.h:269
msgid "Generate code with library calls for floating point"
msgstr "Générer du code avec les appels de bibliothèques pour la virgule flottante"
-#: config/m68k/m68k.h:202
+#: config/m68k/m68k.h:271
msgid "Generate code for a 68040, without any new instructions"
msgstr "Générer du code pour un 68040 sans les nouvelles instructions"
-#: config/m68k/m68k.h:205
+#: config/m68k/m68k.h:274
msgid "Generate code for a 68060, without any new instructions"
msgstr "Générer du code pour un 68060 sans les nouvelles instructions"
-#: config/m68k/m68k.h:209
+#: config/m68k/m68k.h:278
msgid "Generate code for a 68030"
msgstr "Générer du code pour un 68030"
-#: config/m68k/m68k.h:212
+#: config/m68k/m68k.h:281
msgid "Generate code for a 68040"
msgstr "Générer du code pour un 68040"
-#: config/m68k/m68k.h:216
+#: config/m68k/m68k.h:285
msgid "Generate code for a 68060"
msgstr "Générer du code pour un 68060"
-#: config/m68k/m68k.h:221
+#: config/m68k/m68k.h:290
msgid "Generate code for a 520X"
msgstr "Générer du code pour un 520X"
-#: config/m68k/m68k.h:224
+#: config/m68k/m68k.h:294
+msgid "Generate code for a 5206e"
+msgstr "Générer du code pour un 5206e"
+
+#: config/m68k/m68k.h:298
+msgid "Generate code for a 528x"
+msgstr "Générer du code pour un 528x"
+
+#: config/m68k/m68k.h:302
+msgid "Generate code for a 5307"
+msgstr "Générer du code pour un 5307"
+
+#: config/m68k/m68k.h:306
+msgid "Generate code for a 5407"
+msgstr "Générer du code pour un 5407"
+
+#: config/m68k/m68k.h:309
msgid "Generate code for a 68851"
msgstr "Générer le code pour un 68851"
-#: config/m68k/m68k.h:226
+#: config/m68k/m68k.h:311
msgid "Do no generate code for a 68851"
msgstr "Ne pas générer de code pour un 68851"
-#: config/m68k/m68k.h:229
+#: config/m68k/m68k.h:314
msgid "Generate code for a 68302"
msgstr "Générer du code pour un 68302"
-#: config/m68k/m68k.h:232
+#: config/m68k/m68k.h:317
msgid "Generate code for a 68332"
msgstr "Générer du code pour un 68332"
-#: config/m68k/m68k.h:236
+#: config/m68k/m68k.h:321
msgid "Generate code for a cpu32"
msgstr "Générer du code pour un cpu32"
-#: config/m68k/m68k.h:239
+#: config/m68k/m68k.h:324
msgid "Align variables on a 32-bit boundary"
msgstr "Aligner les variables sur des frontières de 32 bits"
-#: config/m68k/m68k.h:241
+#: config/m68k/m68k.h:326
msgid "Align variables on a 16-bit boundary"
msgstr "Aligner les variables sur des frontières de 16 bits"
-#: config/m68k/m68k.h:243
+#: config/m68k/m68k.h:328
+msgid "Enable separate data segment"
+msgstr "Autoriser des segments de données séparés"
+
+#: config/m68k/m68k.h:330
+msgid "Disable separate data segment"
+msgstr "Désactiver les segments séparés de données"
+
+#: config/m68k/m68k.h:332
+msgid "Enable ID based shared library"
+msgstr "Autoriser les identificateurs de librairies partagées de base"
+
+#: config/m68k/m68k.h:334
+msgid "Disable ID based shared library"
+msgstr "Interdire les identificateurs de librairies partagées de base"
+
+#: config/m68k/m68k.h:336
msgid "Generate pc-relative code"
msgstr "Générer du code relatif au compteur de programme (PC)"
-#: config/m68k/m68k.h:245
+#: config/m68k/m68k.h:338
msgid "Do not use unaligned memory references"
msgstr "Ne pas utiliser des références mémoire non alignées"
-#: config/m68k/m68k.h:247
+#: config/m68k/m68k.h:340
msgid "Use unaligned memory references"
msgstr "Utiliser des références mémoire non alignées"
-#: config/m88k/m88k.c:903
-#, c-format
-msgid "internal gcc monitor: short-branch(%x)"
-msgstr "moniteur interne gcc: branchement court(%x)"
-
-#: config/m88k/m88k.c:2302
-msgid "internal gcc error: Can't express symbolic location"
-msgstr "erreur interne gcc: ne peut exprimer la localisation symbolique"
-
-#: config/m88k/m88k.c:2517
-#, c-format
-msgid "argument #%d is a structure"
-msgstr "argument #%d est une structure"
-
-#: config/m88k/m88k.c:2816
-#, c-format
-msgid "%%R not followed by %%B/C/D/E"
-msgstr "%%R n'est pas suivi de %%B/C/D/E"
-
-#: config/m88k/m88k.c:2884
-#, c-format
-msgid "invalid %%x/X value"
-msgstr "valeur %%x/X invalide"
-
-#: config/m88k/m88k.c:2901
-#, c-format
-msgid "invalid %%Q value"
-msgstr "valeur %%Q invalide"
-
-#: config/m88k/m88k.c:2907 config/rs6000/rs6000.c:7718
-#, c-format
-msgid "invalid %%q value"
-msgstr "valeur %%q invalide"
-
-#: config/m88k/m88k.c:2913
-#, c-format
-msgid "invalid %%o value"
-msgstr "valeur %%o invalide"
-
-#: config/m88k/m88k.c:2920 config/rs6000/rs6000.c:7681
-#, c-format
-msgid "invalid %%p value"
-msgstr "valeur %%p invalide"
-
-#: config/m88k/m88k.c:2933 config/m88k/m88k.c:2938
-#, c-format
-msgid "invalid %%s/S value"
-msgstr "valeur %%s/S invalide"
-
-#: config/m88k/m88k.c:2949
-#, c-format
-msgid "invalid %%P operand"
-msgstr "opérande %%P invalide"
-
-#: config/m88k/m88k.c:2980 config/romp/romp.c:690
-#, c-format
-msgid "invalid %%B value"
-msgstr "valeur %%B invalide"
-
-#: config/m88k/m88k.c:3010
-#, c-format
-msgid "invalid %%D value"
-msgstr "valeur %%D invalide"
-
-#: config/m88k/m88k.c:3023
-#, c-format
-msgid "`%%d' operand isn't a register"
-msgstr "l'opérande «%%d» n'est pas un registre"
-
-#: config/m88k/m88k.c:3041
-msgid "operand is r0"
-msgstr "opérande est R0"
-
-#: config/m88k/m88k.c:3055
-msgid "operand is const_double"
-msgstr "opérande est de type const_double"
-
-#: config/m88k/m88k.c:3074
-msgid "invalid code"
-msgstr "code invalide"
-
-#. Do any checking or such that is needed after processing the -m switches.
-#: config/m88k/m88k.h:277
-msgid "-mtrap-large-shift and -mhandle-large-shift are incompatible"
-msgstr "-mtrap-large-shift et -mhandle-large-shift sont incompatibles"
-
-#: config/m88k/m88k.h:299
-#, c-format
-msgid "invalid option `-mshort-data-%s'"
-msgstr "option invalide «-mshort-data-%s'"
-
-#: config/m88k/m88k.h:304
-#, c-format
-msgid "-mshort-data-%s is too large "
-msgstr "-mshort-data-%s est trop grande "
+#: config/m68k/m68k.h:342
+msgid "Use different calling convention using 'rtd'"
+msgstr "Utiliser une convention différente d'appel en utilisant « rtd »"
-#: config/m88k/m88k.h:306
-#, c-format
-msgid "-mshort-data-%s and PIC are incompatible"
-msgstr "-mshort-data-%s et PIC sont incompatibles"
+#: config/m68k/m68k.h:366
+msgid "ID of shared library to build"
+msgstr "Identification de librairie partagé à construire"
-#: config/mcore/mcore.c:3078
+#: config/mcore/mcore.c:2973
#, c-format
msgid "invalid option `-mstack-increment=%s'"
-msgstr "opton invalide «-mstack-increment=%s'"
+msgstr "opton invalide « -mstack-increment=%s »"
-#: config/mcore/mcore.h:126
+#: config/mcore/mcore.h:121
msgid "Inline constants if it can be done in 2 insns or less"
-msgstr "Constante en ligne si elle peut être en 2 insn ou moins"
+msgstr "Constante enligne si elle peut être dans 2 insn ou moins"
-#: config/mcore/mcore.h:128
+#: config/mcore/mcore.h:123
msgid "Inline constants if it only takes 1 instruction"
-msgstr "Constantes en ligne si elle prend seulement 1 instruction"
+msgstr "Constante enligne si elle prend seulement 1 instruction"
-#: config/mcore/mcore.h:130
+#: config/mcore/mcore.h:125
msgid "Set maximum alignment to 4"
msgstr "Initialiser l'alignement maximal à 4"
-#: config/mcore/mcore.h:132
+#: config/mcore/mcore.h:127
msgid "Set maximum alignment to 8"
msgstr "Initialiser l'alignement maximal à 8"
-#: config/mcore/mcore.h:136
+#: config/mcore/mcore.h:131
msgid "Do not use the divide instruction"
msgstr "Ne pas utiliser l'instruction de division"
-#: config/mcore/mcore.h:140
-#, fuzzy
+#: config/mcore/mcore.h:135
msgid "Do not arbitrary sized immediates in bit operations"
msgstr "Ne pas calculer la taille des immédiats dans les opérations sur les bits"
-#: config/mcore/mcore.h:142
+#: config/mcore/mcore.h:137
msgid "Always treat bit-field as int-sized"
msgstr "Toujours traiter les champs de bits comme si la taille entière"
-#: config/mcore/mcore.h:146
+#: config/mcore/mcore.h:141
msgid "Force functions to be aligned to a 4 byte boundary"
msgstr "Forcer les fonctions à être alignés sur des frontières de 4 octets"
-#: config/mcore/mcore.h:148
+#: config/mcore/mcore.h:143
msgid "Force functions to be aligned to a 2 byte boundary"
msgstr "Forcer les fonctions à être alignés sur des frontières de 2 octets"
-#: config/mcore/mcore.h:150
+#: config/mcore/mcore.h:145
msgid "Emit call graph information"
msgstr "Produire les informations du graphe d'appel"
-#: config/mcore/mcore.h:154
+#: config/mcore/mcore.h:149
msgid "Prefer word accesses over byte accesses"
msgstr "Préférer l'accès à des mots plutôt qu'un accès à des octets"
-#: config/mcore/mcore.h:165
+#: config/mcore/mcore.h:160
msgid "Generate code for the M*Core M340"
msgstr "Générer du code pour M*Core M340"
-#: config/mcore/mcore.h:178
+#: config/mcore/mcore.h:173
msgid "Maximum amount for a single stack increment operation"
msgstr "Montant maximal pour une opération d'incrémentation simple de la pile"
-#: config/mips/mips.c:5128
+#: config/mips/mips.c:3115 config/xtensa/xtensa.c:992
+#: config/xtensa/xtensa.c:1024 config/xtensa/xtensa.c:1033
+msgid "bad test"
+msgstr "test erroné"
+
+#: config/mips/mips.c:4593
#, c-format
msgid "bad value (%s) for -mabi= switch"
msgstr "valeur erronée (%s) pour l'option -mabi"
-#: config/mips/mips.c:5158
+#: config/mips/mips.c:4616
#, c-format
-msgid "-mips%d conflicts with the other architecture options, which specify a MIPS%d processor"
-msgstr ""
+msgid "-mips%s conflicts with the other architecture options, which specify a MIPS%d processor"
+msgstr "-mips%s en conflit avec d'autres options d'architecture, lesquelles spécifie un processeur MIPS%d"
-#: config/mips/mips.c:5165
+#: config/mips/mips.c:4635
#, c-format
-msgid "bad value (%s) for -mips switch"
-msgstr "valeur erronée (%s) pour l'option -mips"
-
-#: config/mips/mips.c:5180
-#, fuzzy, c-format
msgid "-march=%s is not compatible with the selected ABI"
-msgstr "le sélecteur de CASE n'est pas compatible avec l'étiquette"
+msgstr "-march=%s n'est pas compatible avec l'ABI sélectionné"
-#: config/mips/mips.c:5192
+#: config/mips/mips.c:4650
msgid "-mgp64 used with a 32-bit processor"
-msgstr ""
+msgstr "-mgp64 utilisé avec un processeur de 32 bits"
-#: config/mips/mips.c:5194
-#, fuzzy
+#: config/mips/mips.c:4652
msgid "-mgp32 used with a 64-bit ABI"
-msgstr "Utiliser ABI de 64 bits"
+msgstr "-mgp32 utilisé avec un ABI de 64 bits"
-#: config/mips/mips.c:5196
-#, fuzzy
+#: config/mips/mips.c:4654
msgid "-mgp64 used with a 32-bit ABI"
-msgstr "Utiliser ABI de 32 bits"
+msgstr "-mgp64 utilisé avec un ABI de 32 bits"
-#: config/mips/mips.c:5214 config/mips/mips.c:5216 config/mips/mips.c:5218
-#, fuzzy, c-format
+#: config/mips/mips.c:4672 config/mips/mips.c:4674 config/mips/mips.c:4676
+#: config/mips/mips.c:4804
+#, c-format
msgid "unsupported combination: %s"
-msgstr "valeur de conversion non supportée"
+msgstr "combinaison non supportée: %s"
+
+#: config/mips/mips.c:4768
+msgid "-g is only supported using GNU as,"
+msgstr "L'option -g est seulement supportée lorsque GNU est utilisé tel,"
+
+#: config/mips/mips.c:4770
+msgid "-g is only supported using GNU as with -mabi=32,"
+msgstr "L'option -g est seulement supportée lorsque GNU est utilisé avec -mabi=32,"
+
+#: config/mips/mips.c:4771 config/pa/pa.c:353
+msgid "-g option disabled"
+msgstr "option -g désactivée"
-#: config/mips/mips.c:5288
+#: config/mips/mips.c:4799
msgid "generation of Branch Likely instructions enabled, but not supported by architecture"
-msgstr ""
+msgstr "activer la génération d'instructions identiques à des branchements mais non supportés par l'architecture"
-#: config/mips/mips.c:5299
+#: config/mips/mips.c:4816
msgid "-G is incompatible with PIC code which is the default"
msgstr "-G est incompatible avec le code PIC par défaut"
-#: config/mips/mips.c:5315
+#: config/mips/mips.c:4844
msgid "-membedded-pic and -mabicalls are incompatible"
msgstr "-membedded-pic et -mabicalls sont incompatibles"
-#: config/mips/mips.c:5318
+#: config/mips/mips.c:4847
msgid "-G and -membedded-pic are incompatible"
msgstr "-G et -membedded-pic sont incompatibles"
-#: config/mips/mips.c:5369
-#, c-format
-msgid "invalid option `entry%s'"
-msgstr "option invalide «entry%s'"
+#: config/mips/mips.c:4879
+msgid "non-PIC n64 with explicit relocations"
+msgstr "non PIC n64 avec une relocalisation explicite"
-#: config/mips/mips.c:5372
-msgid "-mentry is only meaningful with -mips-16"
-msgstr "-mentry n'a de sens qu'avec -mips-16"
+#: config/mips/mips.c:5267
+msgid "mips_debugger_offset called with non stack/frame/arg pointer"
+msgstr "mips_debugger_offset appellé avec un pointeur non stack/frame/arg"
-#: config/mips/mips.c:5781
+#: config/mips/mips.c:5394
#, c-format
msgid "internal error: %%) found without a %%( in assembler pattern"
-msgstr "erreur interne: %%) trouvé sans %%( dans le patron d'aswsemblage"
+msgstr "erreur interne: %%) trouvé sans %%( dans le canevas d'assemblage"
-#: config/mips/mips.c:5795
+#: config/mips/mips.c:5408
#, c-format
msgid "internal error: %%] found without a %%[ in assembler pattern"
-msgstr "erreur interne: %%] trouvé sans %%[ dans le patron d'assemblage"
+msgstr "erreur interne: %%] trouvé sans %%[ dans le canevas d'assemblage"
-#: config/mips/mips.c:5808
+#: config/mips/mips.c:5421
#, c-format
msgid "internal error: %%> found without a %%< in assembler pattern"
-msgstr "erreur interne: %%> trouvé sans %%< dans le patron d'assemblage"
+msgstr "erreur interne: %%> trouvé sans %%< dans le canevas d'assemblage"
-#: config/mips/mips.c:5821
+#: config/mips/mips.c:5434
#, c-format
msgid "internal error: %%} found without a %%{ in assembler pattern"
-msgstr "erreur interne: %%} trouvé sans %%{ dans le patron d'assemblage"
+msgstr "erreur interne: %%} trouvé sans %%{ dans le canevas d'assemblage"
-#: config/mips/mips.c:5835
+#: config/mips/mips.c:5448
#, c-format
msgid "PRINT_OPERAND: unknown punctuation '%c'"
msgstr "PRINT_OPERAND: ponctuation « %c » inconnue"
-#: config/mips/mips.c:5844 config/xtensa/xtensa.c:1939
-msgid "PRINT_OPERAND null pointer"
-msgstr "PRINT_OPERAND pointeur nul"
+#: config/mips/mips.c:5477
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%C"
+msgstr "PRINT_OPERAND insn invalide pour %%C"
-#: config/mips/mips.c:5975
+#: config/mips/mips.c:5494
#, c-format
-msgid "invalid use of %%d, %%x, or %%X"
-msgstr "utilisation invalide de %%d, %%x, ou %%X"
+msgid "PRINT_OPERAND, invalid insn for %%N"
+msgstr "PRINT_OPERAND insn invalide pour %%N"
-#: config/mips/mips.c:6013 config/xtensa/xtensa.c:2033
-msgid "PRINT_OPERAND_ADDRESS, null pointer"
-msgstr "PRINT_OPERAND_ADDRESS, pointeur nul"
+#: config/mips/mips.c:5503
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%F"
+msgstr "PRINT_OPERAND insn invalide pour %%F"
-#: config/mips/mips.c:6242
-msgid "MIPS ECOFF format does not allow changing filenames within functions with #line"
-msgstr "format MIPS ECOFF ne permet pas de changer le nom des fichiers à l'intérieur des fonction avec #line"
+#: config/mips/mips.c:5512
+#, c-format
+msgid "PRINT_OPERAND, invalid insn for %%W"
+msgstr "PRINT_OPERAND insn invalide pour %%W"
-#: config/mips/mips.c:6552
-msgid "can't rewind temp file"
-msgstr "ne peut rembobiner le fichier temporaire"
+#: config/mips/mips.c:5618
+msgid "PRINT_OPERAND, invalid operand for relocation"
+msgstr "PRINT_OPERAND, opérande invalide pour la relocalisation"
-#: config/mips/mips.c:6556
-msgid "can't write to output file"
-msgstr "ne peut écrire dans le fichier de sortie"
+#: config/mips/mips.c:8252
+#, c-format
+msgid "can not handle inconsistent calls to `%s'"
+msgstr "ne peut traiter des appels inconsistents à « %s »"
-#: config/mips/mips.c:6559
-msgid "can't read from temp file"
-msgstr "ne peut lire du fichier temporaire"
+#: config/mips/mips.c:9258
+msgid "the cpu name must be lower case"
+msgstr "le nom du cpu doit être en minuscules"
-#: config/mips/mips.c:6562
-msgid "can't close temp file"
-msgstr "ne peut fermer le fichier temporaire"
+#: config/mips/mips.c:9280
+#, c-format
+msgid "bad value (%s) for %s"
+msgstr "valeur (%s) erronée pour %s"
-#: config/mips/mips.c:7003
+#: config/mips/mips.c:9549
#, c-format
-msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
-msgstr "gp_offset (%ld) ou end_offset (%ld) est plus petit que zéro"
+msgid "can't rewind temp file: %m"
+msgstr "ne peut rembobiner le fichier temporaire: %m"
-#: config/mips/mips.c:7112
+#: config/mips/mips.c:9553
#, c-format
-msgid "fp_offset (%ld) or end_offset (%ld) is less than zero"
-msgstr "fp_offset (%ld) ou end_offset (%ld) est plus petit que zéro"
+msgid "can't write to output file: %m"
+msgstr "ne peut écrire dans le fichier de sortie: %m"
-#: config/mips/mips.c:9335
+#: config/mips/mips.c:9556
#, c-format
-msgid "can not handle inconsistent calls to `%s'"
-msgstr "ne peut traiter des appels inconsistents à « %s »"
+msgid "can't read from temp file: %m"
+msgstr "ne peut lire du fichier temporaire: %m"
-#: config/mips/mips.c:10467
-#, fuzzy
-msgid "the cpu name must be lower case"
-msgstr "Noms de symboles en minuscules"
+#: config/mips/mips.c:9559
+#, c-format
+msgid "can't close temp file: %m"
+msgstr "ne peut fermer le fichier temporaire: %m"
-#: config/mips/mips.c:10489
-#, fuzzy, c-format
-msgid "bad value (%s) for %s"
-msgstr "valeur (%s) erronée pour l'option %s"
+#: config/mips/linux64.h:39
+msgid "Same as -mabi=32, just trickier"
+msgstr "Identique à -mabi=32, juste plus complexe"
#. Target CPU builtins.
#. We do this here because __mips is defined below and so we can't use builtin_define_std.
#. Treat _R3000 and _R4000 like register-size defines, which is how they've historically been used.
#. Macros dependent on the C dialect.
-#. Bizzare, but needed at least for Irix.
+#. Bizarre, but needed at least for Irix.
#. 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/mips/mips.h:528 config/mn10300/mn10300.h:64
-msgid "No default crt0.o"
-msgstr "Aucun défaut pour crt0.o"
-
-#: config/mips/mips.h:530
+#: config/mips/mips.h:501
msgid "Use 64-bit int type"
msgstr "Utiliser le type int de 64 bits"
-#: config/mips/mips.h:532
+#: config/mips/mips.h:503
msgid "Use 64-bit long type"
msgstr "Utiliser le type long de 64 bits"
-#: config/mips/mips.h:534
+#: config/mips/mips.h:505
msgid "Use 32-bit long type"
msgstr "Utiliser le type long de 32 bits"
-#: config/mips/mips.h:536
+#: config/mips/mips.h:507
msgid "Optimize lui/addiu address loads"
msgstr "Optimiser les chargements d'adresses lui/addiu"
-#: config/mips/mips.h:538
+#: config/mips/mips.h:509
msgid "Don't optimize lui/addiu address loads"
msgstr "Ne pas optimiser les chargements d'adresses lui/addiu"
-#: config/mips/mips.h:540
+#: config/mips/mips.h:511
msgid "Use MIPS as"
msgstr "Utiliser MIPS tel que"
-#: config/mips/mips.h:542
+#: config/mips/mips.h:513
msgid "Use GNU as"
msgstr "Utiliser GNU tel que"
-#: config/mips/mips.h:544
+#: config/mips/mips.h:515
msgid "Use symbolic register names"
msgstr "Utiliser les noms de registres symboliques"
-#: config/mips/mips.h:546
+#: config/mips/mips.h:517
msgid "Don't use symbolic register names"
msgstr "Ne pas utiliser les noms de registres symboliques"
-#: config/mips/mips.h:548 config/mips/mips.h:550
-msgid "Use GP relative sdata/sbss sections"
-msgstr "Utiliser GP en mode relatif aux sections sdata/sbss"
+#: config/mips/mips.h:519 config/mips/mips.h:521
+msgid "Use GP relative sdata/sbss sections (now ignored)"
+msgstr "Utiliser GP en mode relatif aux sections sdata/sbss (maintenant ignoré)"
-#: config/mips/mips.h:552 config/mips/mips.h:554
-msgid "Don't use GP relative sdata/sbss sections"
-msgstr "Ne pas utiliser GP en mode relatif aux sections sdata/sbss"
+#: config/mips/mips.h:523 config/mips/mips.h:525
+msgid "Don't use GP relative sdata/sbss sections (now ignored)"
+msgstr "Ne pas utiliser GP en mode relatif aux sections sdata/sbss (maintenant ignoré)"
-#: config/mips/mips.h:556
-msgid "Output compiler statistics"
-msgstr "Afficher les statistiques de compilation"
+#: config/mips/mips.h:527
+msgid "Output compiler statistics (now ignored)"
+msgstr "Afficher les statistiques de compilation (maintenant ignoré)"
-#: config/mips/mips.h:558
+#: config/mips/mips.h:529
msgid "Don't output compiler statistics"
msgstr "Ne pas afficher les statistiques de compilation"
-#: config/mips/mips.h:560
+#: config/mips/mips.h:531
msgid "Don't optimize block moves"
msgstr "Ne pas optimiser les déplacements de blocs"
-#: config/mips/mips.h:562
+#: config/mips/mips.h:533
msgid "Optimize block moves"
msgstr "Optimiser les déplacements de blocs"
-#: config/mips/mips.h:564
+#: config/mips/mips.h:535
msgid "Use mips-tfile asm postpass"
msgstr "Utiliser la post-passe de type mips-tfile de l'assembleur"
-#: config/mips/mips.h:566
+#: config/mips/mips.h:537
msgid "Don't use mips-tfile asm postpass"
msgstr "Ne pas utiliser la post-passe de type mips-tfile de l'assembleur"
@@ -11950,271 +11019,237 @@ msgstr "Ne pas utiliser la post-passe de type mips-tfile de l'assembleur"
#. 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:570 config/pdp11/pdp11.h:56
+#: config/mips/mips.h:541 config/pdp11/pdp11.h:61 config/rs6000/rs6000.h:314
msgid "Use hardware floating point"
msgstr "Utiliser l'unité matérielle en virgule flottante"
-#: config/mips/mips.h:572
+#: config/mips/mips.h:543
msgid "Use 64-bit FP registers"
msgstr "Utiliser les registres FP de 64 bits"
-#: config/mips/mips.h:574
+#: config/mips/mips.h:545
msgid "Use 32-bit FP registers"
msgstr "Utiliser les registres FP de 32 bits"
-#: config/mips/mips.h:576
+#: config/mips/mips.h:547
msgid "Use 64-bit general registers"
msgstr "Utiliser les registres généraux de 64 bits"
-#: config/mips/mips.h:578
+#: config/mips/mips.h:549
msgid "Use 32-bit general registers"
msgstr "Utiliser les registres généraux de 32 bits"
-#: config/mips/mips.h:580
+#: config/mips/mips.h:551
msgid "Use Irix PIC"
msgstr "Utiliser le code PIC Irix"
-#: config/mips/mips.h:582
+#: config/mips/mips.h:553
msgid "Don't use Irix PIC"
msgstr "Ne pas utiliser le code PIC Irix"
-#: config/mips/mips.h:584
+#: config/mips/mips.h:555
msgid "Use indirect calls"
msgstr "Utiliser les appels indirects"
-#: config/mips/mips.h:586
+#: config/mips/mips.h:557
msgid "Don't use indirect calls"
msgstr "Ne pas utiliser les appels indirects"
-#: config/mips/mips.h:588
+#: config/mips/mips.h:559
msgid "Use embedded PIC"
msgstr "Utiliser le code PIC enchâssé"
-#: config/mips/mips.h:590
+#: config/mips/mips.h:561
msgid "Don't use embedded PIC"
msgstr "Ne pas utiliser le code PIC enchâssé"
-#: config/mips/mips.h:592
-msgid "Use ROM instead of RAM"
-msgstr "Utiliser le ROM au lieu de la RAM"
-
-#: config/mips/mips.h:594
-msgid "Don't use ROM instead of RAM"
-msgstr "Ne pas utiliser le ROM au lieu de la RAM"
-
-#: config/mips/mips.h:596
-msgid "Put uninitialized constants in ROM (needs -membedded-data)"
-msgstr "Placer les constantes non itialisées dans le ROM (a besoin de -membedded-data)"
-
-#: config/mips/mips.h:598
-msgid "Don't put uninitialized constants in ROM"
-msgstr "Ne pas placer les constantes non itialisées dans le ROM (a besoin de -membedded-data)"
-
-#. Macro to define tables used to set the flags.
-#: config/mips/mips.h:600 config/xtensa/xtensa.h:110
+#: config/mips/mips.h:571
msgid "Use big-endian byte order"
msgstr "Utiliser l'ordre des octets pour système à octets de poids fort"
-#: config/mips/mips.h:602 config/xtensa/xtensa.h:112
+#: config/mips/mips.h:573
msgid "Use little-endian byte order"
msgstr "Utiliser l'ordre des octets pour système à octets de poids faible"
-#: config/mips/mips.h:604
+#: config/mips/mips.h:575
msgid "Use single (32-bit) FP only"
msgstr "Utiliser un simple FP (32 bits) seulement"
-#: config/mips/mips.h:606
+#: config/mips/mips.h:577
msgid "Don't use single (32-bit) FP only"
msgstr "Ne pas utiliser un simple FP (32 bits) seulement"
-#: config/mips/mips.h:608
+#: config/mips/mips.h:579
msgid "Use multiply accumulate"
msgstr "Utiliser les multiplications par accumulations"
-#: config/mips/mips.h:610
+#: config/mips/mips.h:581
msgid "Don't use multiply accumulate"
msgstr "Ne pas utiliser les multiplications par accumulations"
-#: config/mips/mips.h:612 config/rs6000/rs6000.h:314
+#: config/mips/mips.h:583
msgid "Don't generate fused multiply/add instructions"
msgstr "Ne pas générer des instructions fusionnés de multiplication/addition"
-#: config/mips/mips.h:614 config/rs6000/rs6000.h:312
+#: config/mips/mips.h:585 config/rs6000/rs6000.h:330
msgid "Generate fused multiply/add instructions"
msgstr "Générer des instructions fusionnés de multiplication/addition"
-#: config/mips/mips.h:616
+#: config/mips/mips.h:587
msgid "Work around early 4300 hardware bug"
msgstr "Contourner le bug matériel des premiers 4300"
-#: config/mips/mips.h:618
+#: config/mips/mips.h:589
msgid "Don't work around early 4300 hardware bug"
msgstr "Ne pas contourner le bug matériel des premiers 4300"
-#: config/mips/mips.h:620
+#: config/mips/mips.h:591
+msgid "Work around errata for early SB-1 revision 2 cores"
+msgstr "Contourner l'erreur pour la révision 2 du noyau des versions initiales SB-1"
+
+#: config/mips/mips.h:593
+msgid "Don't work around errata for early SB-1 revision 2 cores"
+msgstr "Ne pas contourner l'erreur pour la révision 2 du noyau des versions initiales SB-1"
+
+#: config/mips/mips.h:595
msgid "Trap on integer divide by zero"
msgstr "Intercepter les divisions par zéros sur des entiers"
-#: config/mips/mips.h:622
+#: config/mips/mips.h:597
msgid "Don't trap on integer divide by zero"
msgstr "Ne pas intercepter les divisions par zéros sur des entiers"
-#: config/mips/mips.h:624
-msgid "Trap on integer divide overflow"
-msgstr "Intercepter les débordements lors de divisions avec des entiers"
-
-#: config/mips/mips.h:626
-msgid "Don't trap on integer divide overflow"
-msgstr "Ne pas intercepter les débordement lors de divisions avec des entiers"
-
-#: config/mips/mips.h:628
+#: config/mips/mips.h:599
msgid "Use Branch Likely instructions, overriding default for arch"
-msgstr ""
+msgstr "Utiliser des instructions se comportant comme des branchements, écrasant le défaut de l'architecture"
-#: config/mips/mips.h:630
+#: config/mips/mips.h:601
msgid "Don't use Branch Likely instructions, overriding default for arch"
-msgstr ""
+msgstr "Ne pas utiliser des instructions se comportant comme des branchements, écrasant le défaut de l'architecture"
-#: config/mips/mips.h:744 config/pa/pa.h:310
-msgid "Specify CPU for scheduling purposes"
-msgstr "Spécifier le processeur pour les besoins de l'ordonnancement"
+#: config/mips/mips.h:603
+msgid "Use NewABI-style %reloc() assembly operators"
+msgstr "Utiliser NewABI-style %reloc() les opérateurs d'assemblage"
-#: config/mips/mips.h:746
-msgid "Specify CPU for code generation purposes"
-msgstr "Spécifier le processeur pour les besoins de la génération de code"
+#: config/mips/mips.h:605
+msgid "Use assembler macros instead of relocation operators"
+msgstr "Utiliser les macros assembleurs au lieu des opérateurs de relocalisation"
-#: config/mips/mips.h:748
-msgid "Specify an ABI"
-msgstr "Spécifier une ABI"
+#: config/mips/mips.h:607
+msgid "Generate mips16 code"
+msgstr "Générer du code mips16"
-#: config/mips/mips.h:750
-msgid "Specify a Standard MIPS ISA"
-msgstr "Spécifier le standard MIPS ISA"
+#: config/mips/mips.h:609
+msgid "Generate normal-mode code"
+msgstr "Générer du code en mode normal"
-#: config/mips/mips.h:752
-msgid "Use mips16 entry/exit psuedo ops"
-msgstr "Utiliser les pseudo-op mips16 d'entrée/sortie"
+#: config/mips/mips.h:611
+msgid "Lift restrictions on GOT size"
+msgstr "Enlever les restrictions sur la taille GOT"
-#: config/mips/mips.h:754
-msgid "Don't use MIPS16 instructions"
-msgstr "Ne pas utiliser les instructions MIPS16"
+#: config/mips/mips.h:613
+msgid "Do not lift restrictions on GOT size"
+msgstr "Ne pas enlever les restrictions sur la taille GOT"
-#: config/mips/mips.h:756
-msgid "Don't call any cache flush functions"
-msgstr "Ne pas faire d'appel de fonction de vidange de la cache"
+#: config/mips/mips.h:735
+msgid "Specify an ABI"
+msgstr "Spécifier une ABI"
-#: config/mips/mips.h:758
-msgid "Specify cache flush function"
-msgstr "Spécifier la fonction de vidange de la cache"
+#: config/mips/mips.h:737
+msgid "Specify a Standard MIPS ISA"
+msgstr "Spécifier le standard MIPS ISA"
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2900
+#: config/mips/mips.h:2403
msgid "mips16 function profiling"
msgstr "profilage de fonction mips16"
-#: config/mmix/mmix.c:189
+#: config/mmix/mmix.c:207
#, c-format
msgid "-f%s not supported: ignored"
msgstr "-f%s n'est pas supporté: ignoré"
-#: config/mmix/mmix.c:644
+#: config/mmix/mmix.c:633
#, c-format
msgid "too large function value type, needs %d registers, have only %d registers for this"
msgstr "valeur de type de fonction trop grande, a besoin de %d registres mais seuls %d disponibles"
-#: config/mmix/mmix.c:826
+#: config/mmix/mmix.c:803
msgid "function_profiler support for MMIX"
msgstr "function_profiler supporté pour MMIX"
-#: config/mmix/mmix.c:848
+#: config/mmix/mmix.c:823
msgid "MMIX Internal: Last named vararg would not fit in a register"
msgstr "MMIX interne: dernier vararg nommé ne pourra être inséré dans un registre"
-#: config/mmix/mmix.c:1639 config/mmix/mmix.c:1769
+#: config/mmix/mmix.c:1538 config/mmix/mmix.c:1668
msgid "MMIX Internal: Expected a CONST_INT, not this"
msgstr "MMIX interne: attendait CONST_INT, pas ceci"
-#: config/mmix/mmix.c:1647 config/mmix/mmix.c:1671 config/mmix/mmix.c:1787
+#: config/mmix/mmix.c:1546 config/mmix/mmix.c:1570 config/mmix/mmix.c:1686
#, c-format
msgid "MMIX Internal: Bad register: %d"
msgstr "MMIX interne: registre erroné: %d"
-#: config/mmix/mmix.c:1718
+#: config/mmix/mmix.c:1617
msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
msgstr "MMIX interne: valeur erronée pour « m », pas un CONST_INT"
-#: config/mmix/mmix.c:1737
+#: config/mmix/mmix.c:1636
msgid "MMIX Internal: Expected a register, not this"
msgstr "MMIX interne: attendait un registre, pas ceci"
-#: config/mmix/mmix.c:1747
+#: config/mmix/mmix.c:1646
msgid "MMIX Internal: Expected a constant, not this"
msgstr "MMIX interne: attendait une constante, pas ceci"
#. Presumably there's a missing case above if we get here.
-#: config/mmix/mmix.c:1779
+#: config/mmix/mmix.c:1678
#, c-format
msgid "MMIX Internal: Missing `%c' case in mmix_print_operand"
msgstr "MMIX interne: cas « %c » manquant dans mmix_print_operand"
#. We need the original here.
-#: config/mmix/mmix.c:1831
+#: config/mmix/mmix.c:1730
msgid "MMIX Internal: Cannot decode this operand"
msgstr "MMIX interne: ne peut décoder cette opérande"
-#: config/mmix/mmix.c:1891
+#: config/mmix/mmix.c:1787
msgid "MMIX Internal: This is not a recognized address"
msgstr "MMIX interne: ce n'est pas une adresse reconnue"
-#: config/mmix/mmix.c:2082
+#: config/mmix/mmix.c:1964
#, c-format
msgid "stack frame not a multiple of 8 bytes: %d"
msgstr "trame de pile n'est pas un multiple de 8 octets: %d"
-#: config/mmix/mmix.c:2321
+#: config/mmix/mmix.c:2203
#, c-format
msgid "stack frame not a multiple of octabyte: %d"
msgstr "trame de pile n'est pas un multiple de 8 octets: %d"
-#: config/mmix/mmix.c:2818 config/mmix/mmix.c:2887
+#: config/mmix/mmix.c:2677 config/mmix/mmix.c:2741
#, c-format
msgid "MMIX Internal: %s is not a shiftable int"
msgstr "MMIX interne: %s n'est pas un entier pouvant décalé"
-#: config/mmix/mmix.c:3006
+#: config/mmix/mmix.c:2857
msgid "MMIX Internal: Trying to output invalidly reversed condition:"
msgstr "MMIX interne: tentative de produire incorrectement une condition renversée:"
-#: config/mmix/mmix.c:3013
+#: config/mmix/mmix.c:2864
msgid "MMIX Internal: What's the CC of this?"
msgstr "MMIX interne: quel sorte de CC est-ce?"
-#: config/mmix/mmix.c:3017
+#: config/mmix/mmix.c:2868
msgid "MMIX Internal: What is the CC of this?"
msgstr "MMIX interne: quel sorte de CC est-ce?"
-#: config/mmix/mmix.c:3088
+#: config/mmix/mmix.c:2938
msgid "MMIX Internal: This is not a constant:"
msgstr "interne MMIX: ce n'est pas une constante:"
-#. For these target macros, there is no generic documentation here. You
-#. should read `Using and Porting GCC' for that. Only comments specific
-#. to the MMIX target are here.
-#.
-#. There are however references to the specific texinfo node (comments
-#. with "Node:"), so there should be little or nothing amiss. Probably
-#. the opposite, since we don't have to care about old littering and
-#. soon outdated generic comments.
-#. Node: Driver
-#. User symbols are in the same name-space as built-in symbols, but we
-#. don't need the built-in symbols, so remove those and instead apply
-#. stricter operand checking. Don't warn when expanding insns.
-#. Pass on -mset-program-start=N and -mset-data-start=M to the linker.
-#. Provide default program start 0x100 unless -mno-set-program-start.
-#. Don't do this if linking relocatably, with -r. For a final link,
-#. produce mmo, unless ELF is requested or when linking relocatably.
-#. Put unused option values here.
#: config/mmix/mmix.h:132
msgid "Set start-address of the program"
msgstr "Adress de départ du programme fixée"
@@ -12277,32 +11312,34 @@ msgid "Do not use addresses that allocate global registers"
msgstr "Ne pas utiliser des adresses qui allouent des registres globaux"
#: config/mmix/mmix.h:229
-#, fuzzy
msgid "Generate a single exit point for each function"
-msgstr "Générer un appel pour stopper si une fonction sans retour retourne un résultat"
+msgstr "Générer un point de sortie simple pour chaque fonction"
#: config/mmix/mmix.h:231
-#, fuzzy
msgid "Do not generate a single exit point for each function"
-msgstr "Ne pas générer des instructions multm"
+msgstr "Ne pas générer un point de sortie simple pour chaque fonction"
-#: config/mn10300/mn10300.h:59
-msgid "Work around hardware multiply bug"
-msgstr "Contourner le bug matériel de la multiplication"
-
-#: config/mn10300/mn10300.h:60
-msgid "Do not work around hardware multiply bug"
-msgstr "Ne pas contourner le bug matériel de la multiplication"
-
-#: config/mn10300/mn10300.h:61
+#: config/mn10300/linux.h:60 config/mn10300/mn10300.h:71
msgid "Target the AM33 processor"
msgstr "Cible le processeur AM33"
-#: config/mn10300/mn10300.h:65
+#: config/mn10300/linux.h:61 config/mn10300/mn10300.h:75
+msgid "Target the AM33/2.0 processor"
+msgstr "Cibler le processeur AM33/2.0"
+
+#: config/mn10300/linux.h:62 config/mn10300/mn10300.h:78
msgid "Enable linker relaxations"
msgstr "Autoriser la relâche de l'éditeur de liens"
-#: config/ns32k/ns32k.h:142 config/s390/s390.h:69
+#: config/mn10300/mn10300.h:69
+msgid "Work around hardware multiply bug"
+msgstr "Contourner le bug matériel de la multiplication"
+
+#: config/mn10300/mn10300.h:70
+msgid "Do not work around hardware multiply bug"
+msgstr "Ne pas contourner le bug matériel de la multiplication"
+
+#: config/ns32k/ns32k.h:142 config/s390/s390.h:125
msgid "Don't use hardware fp"
msgstr "Ne pas utiliser le FP matériel"
@@ -12374,16 +11411,16 @@ msgstr "\"Petites classes de registres\" kludge"
msgid "No \"Small register classes\" kludge"
msgstr "Pas de \"Petites classes de registres\" kludge"
-#: config/pa/pa.c:261
-#, fuzzy, c-format
+#: config/pa/pa.c:304
+#, c-format
msgid ""
"unknown -mschedule= option (%s).\n"
"Valid options are 700, 7100, 7100LC, 7200, 7300, and 8000\n"
msgstr ""
"Option inconnue -mschedule= (%s)\n"
-"Les options valides sont 700, 7100, 7100LC, 7200 et 8000\n"
+"Les options valides sont 700, 7100, 7100LC, 7200, 7300 et 8000\n"
-#: config/pa/pa.c:286
+#: config/pa/pa.c:329
#, c-format
msgid ""
"unknown -march= option (%s).\n"
@@ -12392,29 +11429,23 @@ msgstr ""
"Option inconnue -march= (%s)\n"
"Les options valides sont 1.0, 1.1 et 2.0\n"
-#: config/pa/pa.c:299
+#: config/pa/pa.c:342
msgid "PIC code generation is not supported in the portable runtime model\n"
msgstr "La génération de code PIC n'est pas supportée dans le modèle portable d'exécution\n"
-#: config/pa/pa.c:304
+#: config/pa/pa.c:347
msgid "PIC code generation is not compatible with fast indirect calls\n"
msgstr "La génération de code PIC n'est pas compatible avec les appels indirects rapides.\n"
-#: config/pa/pa.c:309
+#: config/pa/pa.c:352
msgid "-g is only supported when using GAS on this processor,"
msgstr "L'option -g est seulement supportée lorsque GAS est utilisé sur ce processeur,"
-#: config/pa/pa.c:310
-msgid "-g option disabled"
-msgstr "option -g désactivée"
-
-#: config/pa/pa-hiux.h:75 config/pa/pa-hpux.h:87 config/pa/pa-hpux7.h:81
-#: config/pa/pa64-hpux.h:25
+#: config/pa/pa-hpux.h:91 config/pa/pa64-hpux.h:25
msgid "Generate cpp defines for server IO"
msgstr "Générer les defines pour les IO d'un serveur"
-#: config/pa/pa-hiux.h:76 config/pa/pa-hpux.h:88 config/pa/pa-hpux7.h:82
-#: config/pa/pa64-hpux.h:27
+#: config/pa/pa-hpux.h:92 config/pa/pa64-hpux.h:27
msgid "Generate cpp defines for workstation IO"
msgstr "Générer les defines pour les IO d'une station de travail"
@@ -12446,153 +11477,140 @@ msgstr "Ne pas désactiver les registres FP"
#: config/pa/pa.h:246
msgid "Disable space regs"
-msgstr ""
+msgstr "Désactiver l'espace registre"
#: config/pa/pa.h:248
-#, fuzzy
msgid "Do not disable space regs"
-msgstr "Ne pas utiliser les registres FP"
+msgstr "Ne pas désactiver l'espace registre"
#: config/pa/pa.h:250
msgid "Put jumps in call delay slots"
-msgstr ""
+msgstr "Mettre des sauts dant les fentes de délais"
#: config/pa/pa.h:252
msgid "Do not put jumps in call delay slots"
-msgstr ""
+msgstr "Ne pas mettre des sauts dant les fentes de délais"
#: config/pa/pa.h:254
-#, fuzzy
msgid "Disable indexed addressing"
-msgstr "mode d'adressage invalide"
+msgstr "désactiver l'adressage indexé"
#: config/pa/pa.h:256
-#, fuzzy
msgid "Do not disable indexed addressing"
-msgstr "Ne pas utiliser les modes d'adressage complexes"
+msgstr "Ne pas désactiver l'adressage indexé"
#: config/pa/pa.h:258
-#, fuzzy
msgid "Use portable calling conventions"
-msgstr "Utiliser la convention normale d'appels"
+msgstr "Utiliser les conventions d'appels portables"
#: config/pa/pa.h:260
-#, fuzzy
msgid "Do not use portable calling conventions"
-msgstr "Utiliser la convention normale d'appels"
+msgstr "Ne pas utiliser les conventions d'appel portables"
#: config/pa/pa.h:262
msgid "Assume code will be assembled by GAS"
-msgstr ""
+msgstr "Assumer que le code sera assemblé par GAS"
#: config/pa/pa.h:264
msgid "Do not assume code will be assembled by GAS"
-msgstr ""
+msgstr "Ne pas assumer que le code sera assemblé par GAS"
#: config/pa/pa.h:268
-#, fuzzy
msgid "Do not use software floating point"
-msgstr "Ne pas utiliser le matériel pour virgule flottante"
+msgstr "Ne pas utiliser le logiciel pour virgule flottante"
#: config/pa/pa.h:270
msgid "Emit long load/store sequences"
-msgstr ""
+msgstr "Générer des instructions multiples pour chargement/stockage"
#: config/pa/pa.h:272
-#, fuzzy
msgid "Do not emit long load/store sequences"
msgstr "Ne pas générer les instructions multiples de chargement/stockage"
#: config/pa/pa.h:274
-#, fuzzy
msgid "Generate fast indirect calls"
-msgstr "Ne pas utiliser les appels indirects"
+msgstr "Ne pas utiliser les appels rapides indirects"
#: config/pa/pa.h:276
-#, fuzzy
msgid "Do not generate fast indirect calls"
-msgstr "Ne pas générer de directives .size"
+msgstr "Ne pas générer de directives rapides indirects"
#: config/pa/pa.h:278
-#, fuzzy
msgid "Generate code for huge switch statements"
-msgstr "Générer du code pour la partie haute de la mémoire"
+msgstr "Générer du code pour les grandes déclarations de branchements"
#: config/pa/pa.h:280
-#, fuzzy
msgid "Do not generate code for huge switch statements"
-msgstr "Ne pas générer du code pour les appels proches"
+msgstr "Ne pas générer du code pour les grandes déclarations de branchement"
#: config/pa/pa.h:282
-#, fuzzy
msgid "Always generate long calls"
-msgstr "Ne pas générer du code pour les appels proches"
+msgstr "Générer toujours des appels longs"
#: config/pa/pa.h:284
msgid "Generate long calls only when needed"
-msgstr ""
+msgstr "Générer des appels longs lorsque nécessaire"
#: config/pa/pa.h:286
-#, fuzzy
msgid "Enable linker optimizations"
-msgstr "Autoriser les optimisations SSA"
+msgstr "Activer les optimisations par l'éditeur de liens"
#: config/pa/pa.h:312
msgid "Specify architecture for code generation. Values are 1.0, 1.1, and 2.0. 2.0 requires gas snapshot 19990413 or later."
-msgstr ""
+msgstr "Spécifier l'architecture pour la génération de code. Les valeurs sont 1.0, 1.1 et 2.0. 2.0 requiert gas snapshot 19990413 ou plus récent."
#: config/pa/pa64-hpux.h:29
msgid "Assume code will be linked by GNU ld"
-msgstr ""
+msgstr "Assumer que le code sera lié par GNU ld"
#: config/pa/pa64-hpux.h:31
msgid "Assume code will be linked by HP ld"
-msgstr ""
+msgstr "Assumer que le code sera lié par HP ld"
-#: config/pdp11/pdp11.h:57
+#: config/pdp11/pdp11.h:62 config/rs6000/rs6000.h:316
msgid "Do not use hardware floating point"
msgstr "Ne pas utiliser le matériel pour virgule flottante"
#. return float result in ac0
-#: config/pdp11/pdp11.h:59
+#: config/pdp11/pdp11.h:64
msgid "Return floating point results in ac0"
msgstr "Le résultat retourné en virgule flottante se retrouve dans AC0."
-#: config/pdp11/pdp11.h:60
+#: config/pdp11/pdp11.h:65
msgid "Return floating point results in memory"
msgstr "Le résultat retourné en virgule flottante se retrouve en mémoire."
#. is 11/40
-#: config/pdp11/pdp11.h:62
+#: config/pdp11/pdp11.h:67
msgid "Generate code for an 11/40"
msgstr "Générer du code pour un 11/40"
#. is 11/45
-#: config/pdp11/pdp11.h:65
+#: config/pdp11/pdp11.h:70
msgid "Generate code for an 11/45"
msgstr "Générer du code pour un 11/45"
#. is 11/10
-#: config/pdp11/pdp11.h:68
+#: config/pdp11/pdp11.h:73
msgid "Generate code for an 11/10"
msgstr "Générer du code pour un 11/10"
#. use movstrhi for bcopy
#. use 32 bit for int
-#: config/pdp11/pdp11.h:73 config/pdp11/pdp11.h:74
+#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
msgid "Use 32 bit int"
msgstr "Utiliser des int de 32 bits"
-#: config/pdp11/pdp11.h:75 config/pdp11/pdp11.h:76
+#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
msgid "Use 16 bit int"
msgstr "Utiliser des int de 16 bits"
#. use 32 bit for float
-#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
+#: config/pdp11/pdp11.h:83 config/pdp11/pdp11.h:84
msgid "Use 32 bit float"
msgstr "Utiliser des flottants de 32 bits"
-#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
+#: config/pdp11/pdp11.h:85 config/pdp11/pdp11.h:86
msgid "Use 64 bit float"
msgstr "Utiliser des flottants de 64 bits"
@@ -12600,70 +11618,54 @@ msgstr "Utiliser des flottants de 64 bits"
#. is branching expensive - on a PDP, it's actually really cheap
#. this is just to play around and check what code gcc generates
#. split instruction and data memory?
-#: config/pdp11/pdp11.h:90
+#: config/pdp11/pdp11.h:95
msgid "Target has split I&D"
msgstr "Cible a un I&D séparé"
-#: config/pdp11/pdp11.h:91
+#: config/pdp11/pdp11.h:96
msgid "Target does not have split I&D"
msgstr "Cible n'a pas un I&D séparé"
#. UNIX assembler syntax?
-#: config/pdp11/pdp11.h:93
+#: config/pdp11/pdp11.h:98
msgid "Use UNIX assembler syntax"
msgstr "Utliser la syntaxe de l'assembleur UNIX"
-#: config/pdp11/pdp11.h:94
+#: config/pdp11/pdp11.h:99
msgid "Use DEC assembler syntax"
msgstr "Utliser la syntaxe de l'assembleur DEC"
-#: config/romp/romp.c:717 config/rs6000/rs6000.c:7755
-#, c-format
-msgid "invalid %%S value"
-msgstr "valeur %%S invalide"
+#: config/rs6000/host-darwin.c:52
+msgid "Segmentation Fault (code)"
+msgstr "Faute de segmentation (code)"
-#: config/romp/romp.c:726 config/romp/romp.c:733
-#, c-format
-msgid "invalid %%b value"
-msgstr "valeur %%b invalide"
+#: config/rs6000/host-darwin.c:83
+msgid "Out of stack space.\n"
+msgstr "Manque d'espace sur la pile.\n"
-#: config/romp/romp.c:773 config/romp/romp.c:784
+#: config/rs6000/host-darwin.c:104
#, c-format
-msgid "invalid %%z value"
-msgstr "valeur %%z invalide"
+msgid "Try running `%s' in the shell to raise its limit.\n"
+msgstr "Essayer d'exécuter « %s » dans le shell pour augmenter la limite.\n"
-#: config/romp/romp.c:792 config/romp/romp.c:800
-#, c-format
-msgid "invalid %%Z value"
-msgstr "valeur %%Z invalide"
+#: config/rs6000/host-darwin.c:117
+msgid "Segmentation Fault"
+msgstr "Faute de segmentation"
-#: config/romp/romp.c:807 config/romp/romp.c:816 config/romp/romp.c:823
-#: config/rs6000/rs6000.c:7584
+#: config/rs6000/host-darwin.c:131
#, c-format
-msgid "invalid %%k value"
-msgstr "valeur %%k invalide"
+msgid "While setting up signal stack: %m"
+msgstr "Lors de la configuration de la pile de signaux: %m"
-#: config/romp/romp.c:908 config/romp/romp.c:951
+#: config/rs6000/host-darwin.c:137
#, c-format
-msgid "invalid %%j value"
-msgstr "valeur %%j invalide"
+msgid "While setting up signal handler: %m"
+msgstr "Lors de la configuration de la routine de traitement de signal: %m"
-#. Perform any needed actions needed for a function that is receiving a
-#. variable number of arguments.
-#.
-#. CUM is as above.
-#.
-#. MODE and TYPE are the mode and type of the current parameter.
-#.
-#. PRETEND_SIZE is a variable that should be set to the amount of stack
-#. that must be pushed by the prolog to pretend that our caller pushed
-#. it.
-#.
-#. Normally, this macro will push all remaining incoming registers on the
-#. stack and set PRETEND_SIZE to the length of the registers pushed.
-#: config/romp/romp.h:648
-msgid "can't have varargs with -mfp-arg-in-fp-regs"
-msgstr "ne peut avoir varargs avec -mfp-arg-in-fp-regs"
+#: config/rs6000/host-darwin.c:184
+#, c-format
+msgid "couldn't unmap pch_address_space: %m\n"
+msgstr "ne peut défaire la map pch_address_space: %m\n"
#. Handle the machine specific pragma longcall. Its syntax is
#.
@@ -12674,203 +11676,239 @@ msgstr "ne peut avoir varargs avec -mfp-arg-in-fp-regs"
#. rs6000_default_long_calls is set to the value of TOGGLE, changing
#. whether or not new function declarations receive a longcall
#. attribute by default.
-#: config/rs6000/rs6000-c.c:44
-#, fuzzy
+#: config/rs6000/rs6000-c.c:46
msgid "ignoring malformed #pragma longcall"
-msgstr "#pragma ignoré %s"
+msgstr "#pragma longcall mal composé"
-#: config/rs6000/rs6000-c.c:58
-#, fuzzy
+#: config/rs6000/rs6000-c.c:59
msgid "missing open paren"
-msgstr "attribut Code manquant"
+msgstr "parenthèse ouvrante manquante"
-#: config/rs6000/rs6000-c.c:60
-#, fuzzy
+#: config/rs6000/rs6000-c.c:61
msgid "missing number"
-msgstr "Nom manquant"
+msgstr "nombre manquant"
-#: config/rs6000/rs6000-c.c:62
-#, fuzzy
+#: config/rs6000/rs6000-c.c:63
msgid "missing close paren"
-msgstr "Nom de classe manquant"
+msgstr "parenthèse fermante manquante"
-#: config/rs6000/rs6000-c.c:65
+#: config/rs6000/rs6000-c.c:66
msgid "number must be 0 or 1"
-msgstr ""
+msgstr "le nombre doit être 0 ou 1"
-#: config/rs6000/rs6000-c.c:68
-#, fuzzy
+#: config/rs6000/rs6000-c.c:69
msgid "junk at end of #pragma longcall"
-msgstr "rebut à la fin de #pragma map"
+msgstr "rebut à la fin de #pragma longcall"
-#: config/rs6000/rs6000.c:592
+#: config/rs6000/rs6000.c:793
msgid "-mmultiple is not supported on little endian systems"
msgstr "-mmultiple n'est pas supporté sur des système à octets de poids faible"
-#: config/rs6000/rs6000.c:599
+#: config/rs6000/rs6000.c:800
msgid "-mstring is not supported on little endian systems"
msgstr "-mstring n'est pas supporté sur des système à octets de poids faible"
-#: config/rs6000/rs6000.c:623
+#: config/rs6000/rs6000.c:814
#, c-format
msgid "unknown -mdebug-%s switch"
msgstr "option -mdebug-%s inconnue"
-#: config/rs6000/rs6000.c:635
+#: config/rs6000/rs6000.c:826
#, c-format
msgid "unknown -mtraceback arg `%s'; expecting `full', `partial' or `none'"
-msgstr ""
+msgstr "argument « %s » inconnu de l'option -mtraceback; attendu « full », « partial » ou « none »"
-#: config/rs6000/rs6000.c:646
+#: config/rs6000/rs6000.c:837
#, c-format
msgid "Unknown switch -mlong-double-%s"
msgstr "option -mlong-double-%s inconnue"
-#: config/rs6000/rs6000.c:738
-#, fuzzy, c-format
-msgid "unknown -misel= option specified: '%s'"
-msgstr "ABI spécifié inconnu: « %s »"
+#: config/rs6000/rs6000.c:1008
+#, c-format
+msgid "unknown -m%s= option specified: '%s'"
+msgstr "option -m%s= inconnue spécifiée: « %s »"
-#: config/rs6000/rs6000.c:753
-#, fuzzy, c-format
-msgid "unknown -mvrsave= option specified: '%s'"
-msgstr "ABI spécifié inconnu: « %s »"
+#: config/rs6000/rs6000.c:1025
+#, c-format
+msgid "not configured for ABI: '%s'"
+msgstr "pas configuré pour ABI: « %s »"
-#: config/rs6000/rs6000.c:772
+#: config/rs6000/rs6000.c:1031
#, c-format
msgid "unknown ABI specified: '%s'"
msgstr "ABI spécifié inconnu: « %s »"
-#: config/rs6000/rs6000.c:4206
-#, fuzzy
+#: config/rs6000/rs6000.c:1045
+#, c-format
+msgid "unknown -malign-XXXXX option specified: '%s'"
+msgstr "option -malign-XXXXX inconnue spécifiée: « %s »"
+
+#: config/rs6000/rs6000.c:5358
msgid "argument 1 must be a 5-bit signed literal"
-msgstr "argument 3 de « %s » doit être un litéral de 2 bits"
+msgstr "argument 1 doit être un litéral signé de 5 bits"
-#: config/rs6000/rs6000.c:4313 config/rs6000/rs6000.c:4903
-#, fuzzy
+#: config/rs6000/rs6000.c:5460 config/rs6000/rs6000.c:6083
msgid "argument 2 must be a 5-bit unsigned literal"
-msgstr "argument 3 de « %s » doit être un litéral de 2 bits"
+msgstr "argument 2 doit être un litéral non signé de 5 bits"
-#: config/rs6000/rs6000.c:4356
+#: config/rs6000/rs6000.c:5500
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr "argument 1 de « __builtin_altivec_predicate » doit être une constante"
-#: config/rs6000/rs6000.c:4410
+#: config/rs6000/rs6000.c:5554
msgid "argument 1 of __builtin_altivec_predicate is out of range"
-msgstr "argument 1 de « __builtin_altivec_predicate » est hors gamme"
+msgstr "argument 1 de « __builtin_altivec_predicate » est hors limite"
-#: config/rs6000/rs6000.c:4489
-#, fuzzy
+#: config/rs6000/rs6000.c:5682
msgid "argument 3 must be a 4-bit unsigned literal"
-msgstr "argument 3 de « %s » doit être un litéral de 2 bits"
+msgstr "argument 3 doit être un litéral non signé de 4 bits"
-#: config/rs6000/rs6000.c:4666
-#, fuzzy, c-format
+#: config/rs6000/rs6000.c:5852
+#, c-format
msgid "argument to `%s' must be a 2-bit unsigned literal"
-msgstr "argument 3 de « %s » doit être un litéral de 2 bits"
+msgstr "argument de « %s » doit être un litéral non signé de 2 bits"
-#: config/rs6000/rs6000.c:4782
-#, fuzzy
+#: config/rs6000/rs6000.c:5965
msgid "argument to dss must be a 2-bit unsigned literal"
-msgstr "argument 3 de « %s » doit être un litéral de 2 bits"
+msgstr "argument de dss doit être un litéral non signé de 2 bits"
-#: config/rs6000/rs6000.c:5013
-#, fuzzy
+#: config/rs6000/rs6000.c:6203
msgid "argument 1 of __builtin_spe_predicate must be a constant"
-msgstr "argument 1 de « __builtin_altivec_predicate » doit être une constante"
+msgstr "argument 1 de « __builtin_spe_predicate » doit être une constante"
-#: config/rs6000/rs6000.c:5086
-#, fuzzy
+#: config/rs6000/rs6000.c:6276
msgid "argument 1 of __builtin_spe_predicate is out of range"
-msgstr "argument 1 de « __builtin_altivec_predicate » est hors gamme"
+msgstr "argument 1 de « __builtin_spe_predicate » est hors limite"
-#: config/rs6000/rs6000.c:7511
+#: config/rs6000/rs6000.c:8711
#, c-format
msgid "invalid %%f value"
msgstr "valeur %%f invalide"
-#: config/rs6000/rs6000.c:7520
+#: config/rs6000/rs6000.c:8720
#, c-format
msgid "invalid %%F value"
msgstr "valeur %%F invalide"
-#: config/rs6000/rs6000.c:7529
+#: config/rs6000/rs6000.c:8729
#, c-format
msgid "invalid %%G value"
msgstr "valeur %%G invalide"
-#: config/rs6000/rs6000.c:7564
+#: config/rs6000/rs6000.c:8764
#, c-format
msgid "invalid %%j code"
msgstr "valeur %%j invalide"
-#: config/rs6000/rs6000.c:7574
+#: config/rs6000/rs6000.c:8774
#, c-format
msgid "invalid %%J code"
msgstr "valeur %%J invalide"
-#: config/rs6000/rs6000.c:7604
+#: config/rs6000/rs6000.c:8784
+#, c-format
+msgid "invalid %%k value"
+msgstr "valeur %%k invalide"
+
+#: config/rs6000/rs6000.c:8804 config/xtensa/xtensa.c:1985
#, c-format
msgid "invalid %%K value"
msgstr "valeur %%K invalide"
-#: config/rs6000/rs6000.c:7671
+#: config/rs6000/rs6000.c:8871
#, c-format
msgid "invalid %%O value"
msgstr "valeur %%O invalide"
-#: config/rs6000/rs6000.c:7793
+#: config/rs6000/rs6000.c:8918
+#, c-format
+msgid "invalid %%q value"
+msgstr "valeur %%q invalide"
+
+#: config/rs6000/rs6000.c:8962
+#, c-format
+msgid "invalid %%S value"
+msgstr "valeur %%S invalide"
+
+#: config/rs6000/rs6000.c:9004
#, c-format
msgid "invalid %%T value"
msgstr "valeur %%T invalide"
-#: config/rs6000/rs6000.c:7803
+#: config/rs6000/rs6000.c:9014
#, c-format
msgid "invalid %%u value"
msgstr "valeur %%u invalide"
-#: config/rs6000/rs6000.c:7812
+#: config/rs6000/rs6000.c:9023 config/xtensa/xtensa.c:1955
#, c-format
msgid "invalid %%v value"
msgstr "valeur %%v invalide"
-#: config/rs6000/rs6000.c:12242
+#: config/rs6000/rs6000.c:13513
msgid "no profiling of 64-bit code for this ABI"
-msgstr ""
+msgstr "pas de profilage du code de 64 bits pour cet ABI"
-#: config/rs6000/aix.h:160 config/rs6000/beos.h:32
+#: config/rs6000/aix.h:184 config/rs6000/beos.h:32
msgid "Always pass floating-point arguments in memory"
msgstr "Toujours passer des arguments en virgule flottante en mémoire"
-#: config/rs6000/aix.h:162 config/rs6000/beos.h:34
+#: config/rs6000/aix.h:186 config/rs6000/beos.h:34
msgid "Don't always pass floating-point arguments in memory"
msgstr "Na pas toujours passer des arguments en virgule flottante en mémoire"
-#: config/rs6000/aix41.h:28 config/rs6000/aix43.h:32 config/rs6000/aix51.h:32
-#: config/rs6000/aix52.h:32
+#: config/rs6000/aix41.h:27 config/rs6000/aix43.h:31 config/rs6000/aix51.h:31
+#: config/rs6000/aix52.h:31
msgid "Support message passing with the Parallel Environment"
msgstr "Supporter le passage de messages dans un environnement parallèle"
-#: config/rs6000/aix43.h:28 config/rs6000/aix51.h:28 config/rs6000/aix52.h:28
+#: config/rs6000/aix43.h:27 config/rs6000/aix51.h:27 config/rs6000/aix52.h:27
msgid "Compile for 64-bit pointers"
msgstr "Compiler pour des pointeurs de 64 bits"
-#: config/rs6000/aix43.h:30 config/rs6000/aix51.h:30 config/rs6000/aix52.h:30
+#: config/rs6000/aix43.h:29 config/rs6000/aix51.h:29 config/rs6000/aix52.h:29
msgid "Compile for 32-bit pointers"
msgstr "Compiler pour des pointeurs de 32 bits"
-#: config/rs6000/aix43.h:49 config/rs6000/aix51.h:49 config/rs6000/aix52.h:49
+#: config/rs6000/aix43.h:48 config/rs6000/aix51.h:48 config/rs6000/aix52.h:48
msgid "-maix64 and POWER architecture are incompatible"
msgstr "-maix64 et architecture POWER sont incompatibles"
-#: config/rs6000/aix43.h:54 config/rs6000/aix51.h:54 config/rs6000/aix52.h:54
+#: config/rs6000/aix43.h:53 config/rs6000/aix51.h:53 config/rs6000/aix52.h:53
msgid "-maix64 requires PowerPC64 architecture remain enabled"
msgstr "-maix64 requiert une architecture PowerPC64 qui demeure sélectionnée"
-#: config/rs6000/aix43.h:58 config/rs6000/aix51.h:58 config/rs6000/aix52.h:58
+#: config/rs6000/aix43.h:57 config/rs6000/aix51.h:57 config/rs6000/aix52.h:57
msgid "-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
msgstr "-maix64 requis: calcul en 64 bits avec un adressage de 32 bits n'est pas encore supporté"
+#: config/rs6000/darwin.h:64
+msgid "Generate code suitable for executables (NOT shared libs)"
+msgstr "Générer du code adapté pour les exécutables (PAS les librairies partagées)"
+
+#. The Darwin ABI always includes AltiVec, can't be (validly) turned
+#. off.
+#: config/rs6000/darwin.h:80
+msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
+msgstr "-mdynamic-no-pic écrase -fpic ou -fPIC"
+
+#. Darwin doesn't support -fpic.
+#: config/rs6000/darwin.h:86
+msgid "-fpic is not supported; -fPIC assumed"
+msgstr "-fpic n'est pas supporté; -fPIC assumé"
+
+#: config/rs6000/linux64.h:96
+msgid "-m64 requires a PowerPC64 cpu"
+msgstr "-m64 requiert un processeur PowerPC64"
+
+#: config/rs6000/linux64.h:201
+msgid "Call mcount for profiling before a function prologue"
+msgstr "Appeller mcount pour le profilage avant le prologue de la fonction"
+
+#: config/rs6000/linux64.h:203
+msgid "Call mcount for profiling after a function prologue"
+msgstr "Ne pas appeller mcount pour le profilage avant le prologue de la fonction"
+
#. Run-time compilation parameters selecting different hardware subsets.
#.
#. Macro to define tables used to set the flags.
@@ -12878,162 +11916,197 @@ msgstr "-maix64 requis: calcul en 64 bits avec un adressage de 32 bits n'est pas
#. 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/rs6000/rs6000.h:240
+#: config/rs6000/rs6000.h:262
msgid "Use POWER instruction set"
msgstr "Utiliser le jeu d'instructions du POWER"
-#: config/rs6000/rs6000.h:243
+#: config/rs6000/rs6000.h:265
msgid "Use POWER2 instruction set"
msgstr "Utiliser le jeu d'instructions du POWER2"
-#: config/rs6000/rs6000.h:245
+#: config/rs6000/rs6000.h:267
msgid "Do not use POWER2 instruction set"
msgstr "Ne pas utiliser le jeu d'instructions du POWER2"
-#: config/rs6000/rs6000.h:248
+#: config/rs6000/rs6000.h:270
msgid "Do not use POWER instruction set"
msgstr "Ne pas utiliser le jeu d'instructions du POWER"
-#: config/rs6000/rs6000.h:250
+#: config/rs6000/rs6000.h:272
msgid "Use PowerPC instruction set"
msgstr "Utiliser le jeu d'instructions du PowerPC"
-#: config/rs6000/rs6000.h:253
+#: config/rs6000/rs6000.h:275
msgid "Do not use PowerPC instruction set"
msgstr "Ne pas utiliser le jeu d'instructions du PowerPC"
-#: config/rs6000/rs6000.h:255
+#: config/rs6000/rs6000.h:277
msgid "Use PowerPC General Purpose group optional instructions"
msgstr "Utiliser le groupe d'instructions optionnelles d'utilité général du PowerPC"
-#: config/rs6000/rs6000.h:257
-msgid "Don't use PowerPC General Purpose group optional instructions"
-msgstr "Ne pas utiliser le groupe d'instructions optionnelles d'utilité général du PowerPC"
+#: config/rs6000/rs6000.h:279
+msgid "Do not use PowerPC General Purpose group optional instructions"
+msgstr "Ne pas utiliser le groupe d'instructions optionnelles d'usage général du PowerPC"
-#: config/rs6000/rs6000.h:259
+#: config/rs6000/rs6000.h:281
msgid "Use PowerPC Graphics group optional instructions"
msgstr "Utiliser le groupe d'instructions graphiques optionnelles du PowerPC"
-#: config/rs6000/rs6000.h:261
-msgid "Don't use PowerPC Graphics group optional instructions"
-msgstr "Ne pas utiliser le groupe d'instructions graphiques optionnelles du PowerPC"
+#: config/rs6000/rs6000.h:283
+msgid "Do not use PowerPC Graphics group optional instructions"
+msgstr "Ne pas utiliser le groupe d'instructions optionnelles graphiques du PowerPC"
-#: config/rs6000/rs6000.h:263
+#: config/rs6000/rs6000.h:285
msgid "Use PowerPC-64 instruction set"
msgstr "Utiliser le jeu d'instructions du PowerPC-64"
-#: config/rs6000/rs6000.h:265
-msgid "Don't use PowerPC-64 instruction set"
+#: config/rs6000/rs6000.h:287
+msgid "Do not use PowerPC-64 instruction set"
msgstr "Ne pas utiliser le jeu d'instructions du PowerPC-64"
-#: config/rs6000/rs6000.h:267
+#: config/rs6000/rs6000.h:289
msgid "Use AltiVec instructions"
msgstr "Utiliser les instructions AltiVec"
-#: config/rs6000/rs6000.h:269
-msgid "Don't use AltiVec instructions"
+#: config/rs6000/rs6000.h:291
+msgid "Do not use AltiVec instructions"
msgstr "Ne pas utiliser les instructions AltiVec"
-#: config/rs6000/rs6000.h:271
+#: config/rs6000/rs6000.h:293
msgid "Use new mnemonics for PowerPC architecture"
msgstr "Utiliser les nouvelles mnémoniques pour l'architecture du PowerPC"
-#: config/rs6000/rs6000.h:273
+#: config/rs6000/rs6000.h:295
msgid "Use old mnemonics for PowerPC architecture"
msgstr "Utiliser les anciennes mnémoniques pour l'architecture du PowerPC"
-#: config/rs6000/rs6000.h:276
+#: config/rs6000/rs6000.h:298
msgid "Put everything in the regular TOC"
msgstr "Place tout dans le TOC régulier"
-#: config/rs6000/rs6000.h:278
+#: config/rs6000/rs6000.h:300
msgid "Place floating point constants in TOC"
msgstr "Placer les constantes en virgule flottante dans le TOC"
-#: config/rs6000/rs6000.h:280
-msgid "Don't place floating point constants in TOC"
+#: config/rs6000/rs6000.h:302
+msgid "Do not place floating point constants in TOC"
msgstr "Ne pas placer les constantes en virgule flottante dans le TOC"
-#: config/rs6000/rs6000.h:282
+#: config/rs6000/rs6000.h:304
msgid "Place symbol+offset constants in TOC"
msgstr "Placer les constantes symboles+décalages dans le TOC"
-#: config/rs6000/rs6000.h:284
-msgid "Don't place symbol+offset constants in TOC"
+#: config/rs6000/rs6000.h:306
+msgid "Do not place symbol+offset constants in TOC"
msgstr "Ne pas placer les constantes symboles+décalages dans le TOC"
-#: config/rs6000/rs6000.h:290
+#: config/rs6000/rs6000.h:312
msgid "Place variable addresses in the regular TOC"
msgstr "Placer les adresses variables dans un TOC régulier"
-#: config/rs6000/rs6000.h:296
+#: config/rs6000/rs6000.h:318
msgid "Generate load/store multiple instructions"
msgstr "Générer les instructions multiples de chargement/stockage"
-#: config/rs6000/rs6000.h:298
+#: config/rs6000/rs6000.h:320
msgid "Do not generate load/store multiple instructions"
msgstr "Ne pas générer les instructions multiples de chargement/stockage"
-#: config/rs6000/rs6000.h:302
+#: config/rs6000/rs6000.h:322
msgid "Generate string instructions for block moves"
msgstr "Générer les instructions chaînes pour les déplacements de blocs"
-#: config/rs6000/rs6000.h:304
+#: config/rs6000/rs6000.h:324
msgid "Do not generate string instructions for block moves"
msgstr "Ne pas générer les instructions chaînes pour les déplacements de blocs"
-#: config/rs6000/rs6000.h:308
+#: config/rs6000/rs6000.h:326
msgid "Generate load/store with update instructions"
msgstr "Générer les instructions de mise à jour de chargement/stockage"
-#: config/rs6000/rs6000.h:310
+#: config/rs6000/rs6000.h:328
msgid "Do not generate load/store with update instructions"
msgstr "Ne pas générer les instructions de mise à jour de chargement/stockage"
-#: config/rs6000/rs6000.h:318
-msgid "Don't schedule the start and end of the procedure"
+#: config/rs6000/rs6000.h:332
+msgid "Do not generate fused multiply/add instructions"
+msgstr "Ne pas générer des instructions fusionnés de multiplication/addition"
+
+#: config/rs6000/rs6000.h:336
+msgid "Do not schedule the start and end of the procedure"
msgstr "Ne pas ordonnancer le début et la fin de la procédure"
-#: config/rs6000/rs6000.h:324
+#: config/rs6000/rs6000.h:342
msgid "Return all structures in memory (AIX default)"
msgstr "Retourner toutes les structures en mémoire (par défaut sur AIX)"
-#: config/rs6000/rs6000.h:326
+#: config/rs6000/rs6000.h:344
msgid "Return small structures in registers (SVR4 default)"
msgstr "Retourner les petites structures par les registres (par défaut sur SVR4)"
-#: config/rs6000/rs6000.h:391 config/sparc/sparc.h:633
+#: config/rs6000/rs6000.h:350
+msgid "Generate single field mfcr instruction"
+msgstr "Générer des instructions à champ simple mfcr"
+
+#: config/rs6000/rs6000.h:352
+msgid "Do not generate single field mfcr instruction"
+msgstr "Ne pas générer des instructions à champ simple mfcr"
+
+#: config/rs6000/rs6000.h:435 config/sparc/sparc.h:648
msgid "Use features of and schedule code for given CPU"
msgstr "Utiliser les options et ordonnancer le code pour le processeur donné"
-#: config/rs6000/rs6000.h:394
+#: config/rs6000/rs6000.h:438
msgid "Enable debug output"
msgstr "Autoriser la sortie lors de la mise au point"
-#: config/rs6000/rs6000.h:396
+#: config/rs6000/rs6000.h:440
msgid "Select full, part, or no traceback table"
-msgstr ""
+msgstr "Sélectionner « full », « part » ou « none »"
-#: config/rs6000/rs6000.h:397
+#: config/rs6000/rs6000.h:441
msgid "Specify ABI to use"
msgstr "Spécifier l'ABI à utiliser"
-#: config/rs6000/rs6000.h:399
+#: config/rs6000/rs6000.h:443
msgid "Specify size of long double (64 or 128 bits)"
msgstr "Spécifier la taille des long double (64 ou 128 bits)"
-#: config/rs6000/rs6000.h:401
+#: config/rs6000/rs6000.h:445
msgid "Specify yes/no if isel instructions should be generated"
-msgstr ""
+msgstr "Spécifier yes (pour oui)/ no (pour non) si les instruction isel doivent être générés"
+
+#: config/rs6000/rs6000.h:447
+msgid "Specify yes/no if SPE SIMD instructions should be generated"
+msgstr "Spécifier yes (pour oui) /no (pour non) si les instructions SPE SIMD doivent être générées"
-#: config/rs6000/rs6000.h:403
+#: config/rs6000/rs6000.h:449
+msgid "Specify yes/no if using floating point in the GPRs"
+msgstr "Spécifier yes (pour oui) /no (pour non) si les nombres en virgule flottante sont utilisés dans le GPR"
+
+#: config/rs6000/rs6000.h:451
msgid "Specify yes/no if VRSAVE instructions should be generated for AltiVec"
-msgstr ""
+msgstr "Spécifier yes (pour oui)/ no (pour non) si les instruction VRSAVE doivent être générés pour ALtiVec"
-#: config/rs6000/rs6000.h:405
-#, fuzzy
+#: config/rs6000/rs6000.h:453
msgid "Avoid all range limits on call instructions"
-msgstr "Interdire les instructions parallèles"
+msgstr "Éviter toutes les limites sur les instructions d'appel"
+
+#: config/rs6000/rs6000.h:456
+msgid "Determine which dependences between insns are considered costly"
+msgstr "Déterminer laquelle des dépendances entre les insns qui sont considérées coûteuses"
+
+#: config/rs6000/rs6000.h:458
+msgid "Specify which post scheduling nop insertion scheme to apply"
+msgstr "Spécifier lequel schème de post ordonnancement d'insertion de NOP doit être appliqué"
+
+#: config/rs6000/rs6000.h:460
+msgid "Specify alignment of structure fields default/natural"
+msgstr "Spécifier l'alignement des champs de structure par défaut/naturel"
+
+#: config/rs6000/rs6000.h:462
+msgid "Specify scheduling priority for dispatch slot restricted insns"
+msgstr "Spécifier la priorité d'ordonnancement pour la répartition de fentes insns restreintes"
#. Definitions for __builtin_return_address and __builtin_frame_address.
#. __builtin_return_address (0) should give link register (65), enable
@@ -13047,7 +12120,7 @@ msgstr "Interdire les instructions parallèles"
#. 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:1884
+#: config/rs6000/rs6000.h:1926
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr "RETURN_ADDRESS_OFFSET n'est pas supporté"
@@ -13059,90 +12132,97 @@ msgstr "Sélectionner la convention d'appel ABI"
msgid "Select method for sdata handling"
msgstr "Sélectionner la méthode de traitement sdata"
-#: config/rs6000/sysv4.h:103
+#: config/rs6000/sysv4.h:100
msgid "Align to the base type of the bit-field"
msgstr "Aligner à la base du type du champ de bits"
-#: config/rs6000/sysv4.h:105
+#: config/rs6000/sysv4.h:102
msgid "Don't align to the base type of the bit-field"
msgstr "Ne pas aligner à la base du type du champ de bits"
-#: config/rs6000/sysv4.h:107
+#: config/rs6000/sysv4.h:104
msgid "Don't assume that unaligned accesses are handled by the system"
msgstr "Ne pas présumer que les accès non alignées sont traités par le système"
-#: config/rs6000/sysv4.h:109
+#: config/rs6000/sysv4.h:106
msgid "Assume that unaligned accesses are handled by the system"
msgstr "Présumer que les accès non alignées sont traités par le système"
-#: config/rs6000/sysv4.h:111 config/rs6000/sysv4.h:115
+#: config/rs6000/sysv4.h:108 config/rs6000/sysv4.h:112
msgid "Produce code relocatable at runtime"
msgstr "Produire du code relocalisable au moment de l'exécution"
-#: config/rs6000/sysv4.h:113 config/rs6000/sysv4.h:117
+#: config/rs6000/sysv4.h:110 config/rs6000/sysv4.h:114
msgid "Don't produce code relocatable at runtime"
msgstr "Ne pas produire du code relocalisable au moment de l'exécution"
-#: config/rs6000/sysv4.h:119 config/rs6000/sysv4.h:121
+#: config/rs6000/sysv4.h:116 config/rs6000/sysv4.h:118
msgid "Produce little endian code"
msgstr "Produire du code pour système à octets de poids faible (little endian)"
-#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:125
+#: config/rs6000/sysv4.h:120 config/rs6000/sysv4.h:122
msgid "Produce big endian code"
msgstr "Produire du code pour système à octets de poids fort (big endian)"
-#: config/rs6000/sysv4.h:126 config/rs6000/sysv4.h:127
-#: config/rs6000/sysv4.h:128 config/rs6000/sysv4.h:129
-#: config/rs6000/sysv4.h:130 config/rs6000/sysv4.h:131
-#: config/rs6000/sysv4.h:141 config/rs6000/sysv4.h:142
-#: config/rs6000/sysv4.h:153 config/rs6000/sysv4.h:155
-#: config/rs6000/sysv4.h:157
+#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:124
+#: config/rs6000/sysv4.h:125 config/rs6000/sysv4.h:126
+#: config/rs6000/sysv4.h:127 config/rs6000/sysv4.h:128
+#: config/rs6000/sysv4.h:138 config/rs6000/sysv4.h:139
+#: config/rs6000/sysv4.h:151 config/rs6000/sysv4.h:157
msgid "no description yet"
msgstr "aucune description encore"
-#: config/rs6000/sysv4.h:132
+#: config/rs6000/sysv4.h:129
msgid "Use EABI"
msgstr "Utiliser EABI"
-#: config/rs6000/sysv4.h:133
+#: config/rs6000/sysv4.h:130
msgid "Don't use EABI"
msgstr "Ne pas utiliser EABI"
-#: config/rs6000/sysv4.h:136
+#: config/rs6000/sysv4.h:133
msgid "Do not allow bit-fields to cross word boundaries"
msgstr "Ne pas permettre les champs de bits de traverser des frontières de mots"
-#: config/rs6000/sysv4.h:138
+#: config/rs6000/sysv4.h:135
msgid "Use alternate register names"
msgstr "Utiliser les noms alternatifs de registres"
-#: config/rs6000/sysv4.h:140
+#: config/rs6000/sysv4.h:137
msgid "Don't use alternate register names"
msgstr "Ne pas utiliser les noms alternatifs de registres"
-#: config/rs6000/sysv4.h:144
+#: config/rs6000/sysv4.h:141
msgid "Link with libsim.a, libc.a and sim-crt0.o"
msgstr "Faire l'édition de liens avec libsim.a, libc.a et sim-crt0.o"
-#: config/rs6000/sysv4.h:146
+#: config/rs6000/sysv4.h:143
msgid "Link with libads.a, libc.a and crt0.o"
msgstr "Faire l'édition de liens avec libads.a, libc.a and crt0.o"
-#: config/rs6000/sysv4.h:148
+#: config/rs6000/sysv4.h:145
msgid "Link with libyk.a, libc.a and crt0.o"
msgstr "Faire l'édition de liens avec libyk.a, libc.a and crt0.o"
-#: config/rs6000/sysv4.h:150
+#: config/rs6000/sysv4.h:147
msgid "Link with libmvme.a, libc.a and crt0.o"
msgstr "Faire l'édition de liens avec libmvme.a, libc.a and crt0.o"
-#: config/rs6000/sysv4.h:152
+#: config/rs6000/sysv4.h:149
msgid "Set the PPC_EMB bit in the ELF flags header"
msgstr "Initialiser le bit PPC_EMB bit dans l'en-tête des fanions ELF"
-#: config/rs6000/sysv4.h:154
+#: config/rs6000/sysv4.h:150
msgid "Use the WindISS simulator"
-msgstr ""
+msgstr "Utiliser le simulateur WindISS"
+
+#: config/rs6000/sysv4.h:153
+msgid "Generate 64-bit code"
+msgstr "Générer du code 64 bits"
+
+#: config/rs6000/sysv4.h:155
+msgid "Generate 32-bit code"
+msgstr "Générer du code 32 bits"
#. Sometimes certain combinations of command options do not make sense
#. on a particular target machine. You can define a macro
@@ -13167,365 +12247,426 @@ msgstr "valeur erronée pour -msdata=%s"
msgid "-mrelocatable and -msdata=%s are incompatible"
msgstr "-mrelocatable et -msdata=%s sont incompatibles"
-#: config/rs6000/sysv4.h:255
+#: config/rs6000/sysv4.h:256
#, c-format
msgid "-f%s and -msdata=%s are incompatible"
msgstr "-f%s et -msdata=%s sont incompatibles"
-#: config/rs6000/sysv4.h:264
+#: config/rs6000/sysv4.h:265
#, c-format
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr "-msdata=%s et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:273
+#: config/rs6000/sysv4.h:274
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr "-mrelocatable et -mno-minimal-toc sont incompatibles"
-#: config/rs6000/sysv4.h:279
+#: config/rs6000/sysv4.h:280
#, c-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr "-mrelocatable et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:286
+#: config/rs6000/sysv4.h:287
#, c-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr "-fPIC et -mcall-%s sont incompatibles"
-#: config/rs6000/sysv4.h:293
+#: config/rs6000/sysv4.h:294
msgid "-mcall-aixdesc must be big endian"
msgstr "-mcall-aixdesc doit être pour un système à octets de poids fort"
-#: config/s390/s390.c:3063
+#: config/rs6000/sysv4.h:309
+#, c-format
+msgid "-m%s not supported in this configuration"
+msgstr "-m%s n'est pas supporté par cette configuration"
+
+#: config/s390/s390.c:926
+#, c-format
+msgid "Unknown cpu used in -march=%s."
+msgstr "Processeur inconnu utilisé dans -march=%s"
+
+#: config/s390/s390.c:945
+#, c-format
+msgid "Unknown cpu used in -mtune=%s."
+msgstr "Processeur inconnu dans -mtune=%s"
+
+#: config/s390/s390.c:950
+#, c-format
+msgid "z/Architecture mode not supported on %s."
+msgstr "z/mode d'architecture n'est pas supporté sur %s"
+
+#: config/s390/s390.c:952
+msgid "64-bit ABI not supported in ESA/390 mode."
+msgstr "ABI 64 bits n'est pas supporté en mode ESA/390"
+
+#: config/s390/s390.c:3337
msgid "invalid UNSPEC as operand (1)"
msgstr "UNSPEC invalide comme opérande (1)"
-#: config/s390/s390.c:3123
+#: config/s390/s390.c:3385
msgid "invalid UNSPEC as operand (2)"
msgstr "UNSPEC invalide comme opérande (2)"
-#: config/s390/s390.c:3129
+#: config/s390/s390.c:3391
msgid "UNKNOWN in s390_output_symbolic_const !?"
msgstr "INCONNU dans s390_output_symbolic_const !?"
-#: config/s390/s390.c:3147
+#: config/s390/s390.c:3407
msgid "Cannot decompose address."
msgstr "Ne pas décomposer l'adresse"
-#: config/s390/s390.c:3308
+#: config/s390/s390.c:3578
msgid "UNKNOWN in print_operand !?"
msgstr "INCONNNU dans print_operand !?"
-#: config/s390/s390.c:4961
+#: config/s390/s390.c:5301
msgid "Total size of local variables exceeds architecture limit."
msgstr "Taille totale des variables locales excède la limite de l'architecture"
-#: config/s390/s390.h:70
+#: config/s390/s390.h:126
msgid "Set backchain"
msgstr "Fixer la chaîne arrière"
-#: config/s390/s390.h:71
+#: config/s390/s390.h:127
msgid "Don't set backchain (faster, but debug harder"
msgstr "Ne pas fixer la chaîne arrière (plus rapide mais plus difficle à mettre au point)"
-#: config/s390/s390.h:72
-#, fuzzy
+#: config/s390/s390.h:128
msgid "Use bras for executable < 64k"
-msgstr "Utiliser bras pour les exécutables < 64k"
+msgstr "Utiliser « bras » pour les exécutables < 64k"
-#: config/s390/s390.h:73
+#: config/s390/s390.h:129
msgid "Don't use bras"
msgstr "Ne pas utiliser bras"
-#: config/s390/s390.h:74
+#: config/s390/s390.h:130
msgid "Additional debug prints"
msgstr "Imprimer des informations additionnelles en mode débug"
-#: config/s390/s390.h:75
+#: config/s390/s390.h:131
msgid "Don't print additional debug prints"
msgstr "Ne pas imprimer des informations additionnelles en mode débug"
-#: config/s390/s390.h:76
-msgid "64 bit mode"
-msgstr "mode 64 bits"
+#: config/s390/s390.h:132
+msgid "64 bit ABI"
+msgstr "ABI de 64 bits"
+
+#: config/s390/s390.h:133
+msgid "31 bit ABI"
+msgstr "ABI de 64 bits"
-#: config/s390/s390.h:77
-msgid "31 bit mode"
-msgstr "mode 31 bits"
+#: config/s390/s390.h:134
+msgid "z/Architecture"
+msgstr "z/Architecture"
-#: config/s390/s390.h:78
+#: config/s390/s390.h:135
+msgid "ESA/390 architecture"
+msgstr "architecture ESA/390"
+
+#: config/s390/s390.h:136
msgid "mvcle use"
msgstr "mvcle utilisé"
-#: config/s390/s390.h:79
+#: config/s390/s390.h:137
msgid "mvc&ex"
msgstr "mvc&ex"
-#: config/sh/sh.c:5137
+#: config/s390/s390.h:138
+msgid "enable tpf OS code"
+msgstr "autoriser le code OS tpf"
+
+#: config/s390/s390.h:139
+msgid "disable tpf OS code"
+msgstr "interdire le code OS tpf"
+
+#: config/s390/s390.h:140
+msgid "disable fused multiply/add instructions"
+msgstr "interdire les instructions fusionnés de multiplication/addition"
+
+#: config/s390/s390.h:141
+msgid "enable fused multiply/add instructions"
+msgstr "autoriser les instructions fusionnés de multiplication/addition"
+
+#: config/sh/sh.c:5841
msgid "__builtin_saveregs not supported by this subtarget"
-msgstr "« __builtin_saveregs » n'est pas supporté par la sous-cible"
+msgstr "__builtin_saveregs n'est pas supporté par la sous-cible"
-#: config/sh/sh.c:5687
+#: config/sh/sh.c:6743
msgid "attribute interrupt_handler is not compatible with -m5-compact"
-msgstr ""
+msgstr "attribut interrupt_handler n'est pas compatible avec -m5-compact"
#. The sp_switch attribute only has meaning for interrupt functions.
-#: config/sh/sh.c:5713 config/sh/sh.c:5752
+#. The trap_exit attribute only has meaning for interrupt functions.
+#: config/sh/sh.c:6765 config/sh/sh.c:6800
#, c-format
msgid "`%s' attribute only applies to interrupt functions"
msgstr "attribut « %s » s'applique seulement à des fonctions d'interruption"
#. The argument must be a constant string.
-#: config/sh/sh.c:5720
+#: config/sh/sh.c:6772
#, c-format
msgid "`%s' attribute argument not a string constant"
msgstr "l'attribut « %s » de l'argument n'est pas une contante chaîne"
#. The argument must be a constant integer.
-#: config/sh/sh.c:5759
+#: config/sh/sh.c:6807
#, c-format
msgid "`%s' attribute argument not an integer constant"
msgstr "l'attribut « %s » de l'argument n'est pas une contante entière"
#. There are no delay slots on SHmedia.
#. Relaxation isn't yet supported for SHmedia
-#: config/sh/sh.h:437
+#. -fprofile-arcs needs a working libgcov . In unified tree configurations with newlib, this requires to configure with --with-newlib --with-headers. But there is no way to check here we have a working libgcov, so just assume that we have.
+#: config/sh/sh.h:478
msgid "Profiling is not supported on this target."
msgstr "le profilage n'est pas supporté sur cette cible"
-#: config/sparc/sparc.c:329
+#: config/sparc/sparc.c:360
#, c-format
msgid "%s is not supported by this configuration"
msgstr "%s n'est pas supporté par cette configuration"
-#: config/sparc/sparc.c:336
+#: config/sparc/sparc.c:367
msgid "-mlong-double-64 not allowed with -m64"
msgstr "-mlong-double-64 n'est pas permis avec -m64"
-#: config/sparc/sparc.c:361
+#: config/sparc/sparc.c:392
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr "-mcmodel= n'est pas supporté sur les systèmes de 32 bits"
-#: config/sparc/sparc.c:6341 config/sparc/sparc.c:6347
+#: config/sparc/sparc.c:6793 config/sparc/sparc.c:6799
#, c-format
msgid "invalid %%Y operand"
msgstr "opérande %%Y invalide"
-#: config/sparc/sparc.c:6417
+#: config/sparc/sparc.c:6869
#, c-format
msgid "invalid %%A operand"
msgstr "opérande %%A invalide"
-#: config/sparc/sparc.c:6427
+#: config/sparc/sparc.c:6879
#, c-format
msgid "invalid %%B operand"
msgstr "Opérande %%B invalide"
-#: config/sparc/sparc.c:6466
+#: config/sparc/sparc.c:6918
#, c-format
msgid "invalid %%c operand"
msgstr "opérande %%c invalide"
-#: config/sparc/sparc.c:6467
+#: config/sparc/sparc.c:6919
#, c-format
msgid "invalid %%C operand"
msgstr "opérande %%C invalide"
-#: config/sparc/sparc.c:6488
+#: config/sparc/sparc.c:6940
#, c-format
msgid "invalid %%d operand"
msgstr "opérande %%d invalide"
-#: config/sparc/sparc.c:6489
+#: config/sparc/sparc.c:6941
#, c-format
msgid "invalid %%D operand"
msgstr "opérande %%D invalide"
-#: config/sparc/sparc.c:6505
+#: config/sparc/sparc.c:6957
#, c-format
msgid "invalid %%f operand"
msgstr "opérande %%f invalide"
-#: config/sparc/sparc.c:6519
-#, fuzzy, c-format
+#: config/sparc/sparc.c:6971
+#, c-format
msgid "invalid %%s operand"
-msgstr "opérande %%f invalide"
+msgstr "opérande %%s invalide"
-#: config/sparc/sparc.c:6573
+#: config/sparc/sparc.c:7025
msgid "long long constant not a valid immediate operand"
msgstr "constante long long n'est pas une opérande immédiate valide"
-#: config/sparc/sparc.c:6576
+#: config/sparc/sparc.c:7028
msgid "floating point constant not a valid immediate operand"
msgstr "constante en virgule flottante n'est pas une opérande immédiate valide"
-#: config/sparc/freebsd.h:81 config/sparc/linux.h:87 config/sparc/linux64.h:89
-#: config/sparc/netbsd-elf.h:239
+#: config/sparc/freebsd.h:77 config/sparc/linux.h:92
+#: config/sparc/linux64.h:104 config/sparc/netbsd-elf.h:216
msgid "Use 128 bit long doubles"
msgstr "Utiliser des longs doubles de 128 bits"
-#: config/sparc/sp64-elf.h:84 config/sparc/splet.h:29
+#: config/sparc/sp64-elf.h:90
msgid "Generate code for big endian"
msgstr "Générer du code pour un système à octets de poids fort"
-#: config/sparc/sp64-elf.h:85 config/sparc/splet.h:30
+#: config/sparc/sp64-elf.h:91
msgid "Generate code for little endian"
msgstr "Générer du code pour un système à octets de poids faible"
-#: config/sparc/sp86x-aout.h:51 config/sparc/sp86x-elf.h:65
+#: config/sparc/sp86x-elf.h:68
msgid "Use little-endian byte order for data"
msgstr "Utiliser l'ordre des octets de poids faible pour les données"
-#: config/sparc/sparc.h:532
+#: config/sparc/sparc.h:547
msgid "Assume possible double misalignment"
msgstr "Présumer un possible mauvais alignement des doubles"
-#: config/sparc/sparc.h:534
+#: config/sparc/sparc.h:549
msgid "Assume all doubles are aligned"
msgstr "Présumer que tous les doubles sont alignés"
-#: config/sparc/sparc.h:536
+#: config/sparc/sparc.h:551
msgid "Pass -assert pure-text to linker"
msgstr "Passer -assert pure-text à l'éditeur de liens"
-#: config/sparc/sparc.h:538
+#: config/sparc/sparc.h:553
msgid "Do not pass -assert pure-text to linker"
msgstr "Ne pas passer -assert pure-text à l'éditeur de liens"
-#: config/sparc/sparc.h:540
+#: config/sparc/sparc.h:555
msgid "Use flat register window model"
msgstr "Utiliser le modèle de fenêtre de registre plat"
-#: config/sparc/sparc.h:542
+#: config/sparc/sparc.h:557
msgid "Do not use flat register window model"
msgstr "Ne pas utiliser le modèle de fenêtre de registre plat"
-#: config/sparc/sparc.h:544
+#: config/sparc/sparc.h:559
msgid "Use ABI reserved registers"
msgstr "Utiliser les registres réservés ABI"
-#: config/sparc/sparc.h:546
+#: config/sparc/sparc.h:561
msgid "Do not use ABI reserved registers"
msgstr "Ne pas utiliser les registres réservés ABI"
-#: config/sparc/sparc.h:548
+#: config/sparc/sparc.h:563
msgid "Use hardware quad fp instructions"
msgstr "Utiliser les instructions matérielles quad FP"
-#: config/sparc/sparc.h:550
+#: config/sparc/sparc.h:565
msgid "Do not use hardware quad fp instructions"
msgstr "Ne pas utiliser les instructions matérielles quad FP"
-#: config/sparc/sparc.h:552
+#: config/sparc/sparc.h:567
msgid "Compile for v8plus ABI"
msgstr "Compiler pour ABI v8plus"
-#: config/sparc/sparc.h:554
+#: config/sparc/sparc.h:569
msgid "Do not compile for v8plus ABI"
msgstr "Ne pas compiler pour ABI v8plus"
-#: config/sparc/sparc.h:556
+#: config/sparc/sparc.h:571
msgid "Utilize Visual Instruction Set"
msgstr "Utiliser le jeu d'instructions Visual"
-#: config/sparc/sparc.h:558
+#: config/sparc/sparc.h:573
msgid "Do not utilize Visual Instruction Set"
msgstr "Ne pas utiliser le jeu d'instructions Visual"
#. ??? These are deprecated, coerced to -mcpu=. Delete in 2.9.
-#: config/sparc/sparc.h:561
+#: config/sparc/sparc.h:576
msgid "Optimize for Cypress processors"
msgstr "Optimiser pour les processeurs Cypress"
-#: config/sparc/sparc.h:563
-#, fuzzy
+#: config/sparc/sparc.h:578
msgid "Optimize for SPARCLite processors"
-msgstr "Optimiser pour les processeurs SparLite"
+msgstr "Optimiser pour les processeurs SPARCLite"
-#: config/sparc/sparc.h:565
+#: config/sparc/sparc.h:580
msgid "Optimize for F930 processors"
msgstr "Optimiser pour les processeurs F930"
-#: config/sparc/sparc.h:567
+#: config/sparc/sparc.h:582
msgid "Optimize for F934 processors"
msgstr "Optimiser pour les processeurs F934"
-#: config/sparc/sparc.h:569
-#, fuzzy
+#: config/sparc/sparc.h:584
msgid "Use V8 SPARC ISA"
-msgstr "Utiliser le Sparc V8 ISA"
+msgstr "Utiliser le V8 SPARC ISA"
-#: config/sparc/sparc.h:571
-#, fuzzy
+#: config/sparc/sparc.h:586
msgid "Optimize for SuperSPARC processors"
-msgstr "Optimiser pour les processeurs SuperSparc"
+msgstr "Optimiser pour les processeurs SuperSPARC"
#. End of deprecated options.
-#: config/sparc/sparc.h:574
+#: config/sparc/sparc.h:589
msgid "Pointers are 64-bit"
msgstr "Pointeurs sont de 64 bits"
-#: config/sparc/sparc.h:576
+#: config/sparc/sparc.h:591
msgid "Pointers are 32-bit"
msgstr "Pointeurs sont de 32 bits"
-#: config/sparc/sparc.h:578
+#: config/sparc/sparc.h:593
msgid "Use 32-bit ABI"
msgstr "Utiliser ABI de 32 bits"
-#: config/sparc/sparc.h:580
+#: config/sparc/sparc.h:595
msgid "Use 64-bit ABI"
msgstr "Utiliser ABI de 64 bits"
-#: config/sparc/sparc.h:582
+#: config/sparc/sparc.h:597
msgid "Use stack bias"
msgstr "Utiliser le biais de la pile"
-#: config/sparc/sparc.h:584
+#: config/sparc/sparc.h:599
msgid "Do not use stack bias"
msgstr "Ne pas utiliser le biais de la pile"
-#: config/sparc/sparc.h:586
+#: config/sparc/sparc.h:601
msgid "Use structs on stronger alignment for double-word copies"
msgstr "Utiliser des structs avec alignement plus fort pour les copies de mots-doubles"
-#: config/sparc/sparc.h:588
+#: config/sparc/sparc.h:603
msgid "Do not use structs on stronger alignment for double-word copies"
msgstr "Ne pas utiliser des structs avec alignement plus fort pour les copies de mots-doubles"
-#: config/sparc/sparc.h:590
+#: config/sparc/sparc.h:605
msgid "Optimize tail call instructions in assembler and linker"
msgstr "Optimiser sur mesure les instructions d'appel avec l'assembleur et l'éditeur de liens"
-#: config/sparc/sparc.h:592
+#: config/sparc/sparc.h:607
msgid "Do not optimize tail call instructions in assembler or linker"
msgstr "Ne pas optimiser sur mesure les instructions d'appel avec l'assembleur et l'éditeur de liens"
-#: config/sparc/sparc.h:637
-#, fuzzy
+#: config/sparc/sparc.h:652
msgid "Use given SPARC code model"
-msgstr "Utiliser le modèle donné de code pour le Sparc"
+msgstr "Utiliser le modèle donné de code pour le SPARC"
+
+#: config/stormy16/stormy16.c:526
+msgid "Constant halfword load operand out of range."
+msgstr "chargement de l'opérande de la constante demi-mot est hors limite"
+
+#: config/stormy16/stormy16.c:536
+msgid "Constant arithmetic operand out of range."
+msgstr "opérande arithmétique de la constante est hors limite"
+
+#: config/stormy16/stormy16.c:1027
+msgid "Local variable memory requirements exceed capacity."
+msgstr "La mémoire requise pour les variables locales excède la capacité disponible."
+
+#: config/stormy16/stormy16.c:1193
+msgid "function_profiler support"
+msgstr "function_profiler supporté"
-#: config/stormy16/stormy16.c:1192
+#: config/stormy16/stormy16.c:1292
msgid "cannot use va_start in interrupt function"
msgstr "ne peut utiliser va-start dans une fonction d'interruption"
-#: config/stormy16/stormy16.c:1552
+#: config/stormy16/stormy16.c:1624
msgid "`B' operand is not constant"
msgstr "opérande « B » n'est pas une constante"
-#: config/stormy16/stormy16.c:1558
+#: config/stormy16/stormy16.c:1630
msgid "`B' operand has multiple bits set"
msgstr "l'opérande « B » a de multiples jeux de bits"
-#: config/stormy16/stormy16.c:1585
+#: config/stormy16/stormy16.c:1656
msgid "`o' operand is not constant"
msgstr "opérande « o » n'est pas une constante"
-#: config/stormy16/stormy16.c:1600
+#: config/stormy16/stormy16.c:1670
msgid "xstormy16_print_operand: unknown code"
msgstr "xstormy16_print_operand: code inconnu"
-#: config/stormy16/stormy16.c:1650
+#: config/stormy16/stormy16.c:1716
#, c-format
msgid "switch statement of size %lu entries too large"
msgstr "déclaration de switch de taille %lu entrée est trop grande"
@@ -13546,919 +12687,845 @@ msgstr "ne peut initialiser l'attribut d'interruption: aucune fonction courante"
msgid "cannot set interrupt attribute: no such identifier"
msgstr "ne peut initialiser l'attribut d'interruption: pas de tel identificateur"
-#: config/v850/v850-c.c:148
+#: config/v850/v850-c.c:147
msgid "junk at end of #pragma ghs section"
msgstr "rebut à la fin de la section #pragma ghs"
-#: config/v850/v850-c.c:165
+#: config/v850/v850-c.c:164
#, c-format
msgid "unrecognized section name \"%s\""
msgstr "nom de section non reconnue « %s »"
-#: config/v850/v850-c.c:180
+#: config/v850/v850-c.c:179
msgid "malformed #pragma ghs section"
msgstr "sectin mal composée #pragma ghs"
-#: config/v850/v850-c.c:200
+#: config/v850/v850-c.c:198
msgid "junk at end of #pragma ghs interrupt"
msgstr "rebut à la fin de l'interruption #pragma ghs"
-#: config/v850/v850-c.c:212
+#: config/v850/v850-c.c:209
msgid "junk at end of #pragma ghs starttda"
msgstr "rebut à la fin de #pragma ghs starttda"
-#: config/v850/v850-c.c:224
+#: config/v850/v850-c.c:220
msgid "junk at end of #pragma ghs startsda"
msgstr "rebut à la fin de #pragma ghs startsda"
-#: config/v850/v850-c.c:236
+#: config/v850/v850-c.c:231
msgid "junk at end of #pragma ghs startzda"
msgstr "rebut à la fin de #pragma ghs startzda"
-#: config/v850/v850-c.c:248
+#: config/v850/v850-c.c:242
msgid "junk at end of #pragma ghs endtda"
msgstr "rebut à la fin de #pragma ghs endtda"
-#: config/v850/v850-c.c:260
+#: config/v850/v850-c.c:253
msgid "junk at end of #pragma ghs endsda"
msgstr "rebut à la fin de #pragma ghs endsda"
-#: config/v850/v850-c.c:272
+#: config/v850/v850-c.c:264
msgid "junk at end of #pragma ghs endzda"
msgstr "rebut à la fin de #pragma ghs endzda"
-#: config/v850/v850.c:129
+#: config/v850/v850.c:142
#, c-format
msgid "%s=%s is not numeric"
msgstr "%s=%s n'est pas numérique"
-#: config/v850/v850.c:136
+#: config/v850/v850.c:149
#, c-format
msgid "%s=%s is too large"
msgstr "%s=%s est trop grand"
-#: config/v850/v850.c:302
+#: config/v850/v850.c:301
msgid "const_double_split got a bad insn:"
msgstr "const_double_split a reçu un insn erroné:"
-#: config/v850/v850.c:837
+#: config/v850/v850.c:866
msgid "output_move_single:"
msgstr "output_move_single:"
-#: config/v850/v850.c:2217
-msgid "a data area attribute cannot be specified for local variables"
-msgstr "un attribut de zone de donnéées ne peut pas être spécifié pour des variables locales"
+#: config/v850/v850.c:2209
+msgid "%Jdata area attributes cannot be specified for local variables"
+msgstr "%Jattribut de zone de donnéées ne peut être spécifié pour des variables locales"
-#: config/v850/v850.c:2228
-#, c-format
-msgid "data area of '%s' conflicts with previous declaration"
-msgstr "la zone de données de « %s » entre en conflit avec un déclaration précédente"
+#: config/v850/v850.c:2220
+msgid "%Jdata area of '%D' conflicts with previous declaration"
+msgstr "%Jzone de données de « %D » entre en conflit avec un déclaration précédente"
-#: config/v850/v850.c:2447
+#: config/v850/v850.c:2419
#, c-format
msgid "bogus JR construction: %d\n"
msgstr "construction JR boggé: %d\n"
-#: config/v850/v850.c:2468 config/v850/v850.c:2670
+#: config/v850/v850.c:2440 config/v850/v850.c:2643
#, c-format
msgid "bad amount of stack space removal: %d"
msgstr "taille erronée pour l'enlèvement d'espace de la pile: %d"
-#: config/v850/v850.c:2646
+#: config/v850/v850.c:2619
#, c-format
msgid "bogus JARL construction: %d\n"
msgstr "construction JARL boggée: %d\n"
-#: config/v850/v850.c:3026
-#, fuzzy, c-format
+#: config/v850/v850.c:2989
+#, c-format
msgid "Bogus DISPOSE construction: %d\n"
-msgstr "construction JR boggé: %d\n"
+msgstr "construction DISPOSE boggé: %d\n"
-#: config/v850/v850.c:3048
+#: config/v850/v850.c:3011
#, c-format
msgid "Too much stack space to dispose of: %d"
-msgstr ""
+msgstr "Trop d'espace pour l'empilage pour la disposition de: %d"
-#: config/v850/v850.c:3224
-#, fuzzy, c-format
+#: config/v850/v850.c:3184
+#, c-format
msgid "Bogus PREPEARE construction: %d\n"
-msgstr "construction JARL boggée: %d\n"
+msgstr "construction PREPEARE boggée: %d\n"
-#: config/v850/v850.c:3246
-#, fuzzy, c-format
+#: config/v850/v850.c:3206
+#, c-format
msgid "Too much stack space to prepare: %d"
-msgstr "taille erronée pour l'enlèvement d'espace de la pile: %d"
+msgstr "Trop d'espace pour l'empilage pour la préparation: %d"
#. 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/v850/v850.h:158
+#: config/v850/v850.h:174
msgid "Support Green Hills ABI"
msgstr "Supporter l'ABI Green Hills"
-#: config/v850/v850.h:161
+#: config/v850/v850.h:177
msgid "Prohibit PC relative function calls"
msgstr "Interdire les appels relatifs de fonctions par le PC"
-#: config/v850/v850.h:164
+#: config/v850/v850.h:180
msgid "Reuse r30 on a per function basis"
msgstr "Ré-utiliser R30 sur une base par fonction"
-#: config/v850/v850.h:167
+#: config/v850/v850.h:183
msgid "Use stubs for function prologues"
msgstr "Utiliser des stubs pour les prologues de fonction"
-#: config/v850/v850.h:170
+#: config/v850/v850.h:186
msgid "Same as: -mep -mprolog-function"
msgstr "Identique à: -mep -mprolog-function"
-#: config/v850/v850.h:171
+#: config/v850/v850.h:187
msgid "Enable backend debugging"
msgstr "Autoriser la mise au point par la fin"
-#: config/v850/v850.h:173
+#: config/v850/v850.h:189
msgid "Compile for the v850 processor"
msgstr "Compiler pour le processeur v850"
-#: config/v850/v850.h:175
-#, fuzzy
+#: config/v850/v850.h:191
+msgid "Compile for v850e1 processor"
+msgstr "Compiler pour le processeur v850e1"
+
+#. Make sure that the other bits are cleared.
+#: config/v850/v850.h:193
msgid "Compile for v850e processor"
-msgstr "Compiler pour le processeur v850"
+msgstr "Compiler pour le processeur v850e"
#. Make sure that the other bits are cleared.
-#: config/v850/v850.h:177
-#, fuzzy
+#: config/v850/v850.h:195
msgid "Enable the use of the short load instructions"
-msgstr "Activer l'utilisation d'instruction DB"
+msgstr "Activer l'utilisation d'instructions courtes de chargement"
-#: config/v850/v850.h:180
-#, fuzzy
+#: config/v850/v850.h:198
msgid "Do not use the callt instruction"
-msgstr "Ne pas utiliser l'instruction de division"
+msgstr "Ne pas utiliser l'instruction callt"
-#: config/v850/v850.h:187
-#, fuzzy
+#: config/v850/v850.h:205
msgid "Do not use registers r2 and r5"
-msgstr "Ne pas utiliser le registre sb"
+msgstr "Ne pas utiliser les registres r2 et r5"
-#: config/v850/v850.h:189
-#, fuzzy
+#: config/v850/v850.h:207
msgid "Enforce strict alignment"
-msgstr "Ne pas ajuster l'alignement de la pile"
+msgstr "Forcer l'alignement stricte"
-#: config/v850/v850.h:192
+#: config/v850/v850.h:210
msgid "Use 4 byte entries in switch tables"
msgstr "Utiliser des entrées de 4 octets dans les tables de switch"
-#: config/v850/v850.h:218
+#: config/v850/v850.h:236
msgid "Set the max size of data eligible for the TDA area"
msgstr "Initialiser la taille maximale des données éligibles pour la zone TDA"
-#: config/v850/v850.h:221
+#: config/v850/v850.h:239
msgid "Set the max size of data eligible for the SDA area"
msgstr "Initialiser la taille maximale des données éligibles pour la zone SDA"
-#: config/v850/v850.h:224
+#: config/v850/v850.h:242
msgid "Set the max size of data eligible for the ZDA area"
msgstr "Initialiser la taille maximale des données éligibles pour la zone ZDA"
-#: config/xtensa/xtensa.c:1062 config/xtensa/xtensa.c:1096
-#: config/xtensa/xtensa.c:1105
-msgid "bad test"
-msgstr "test erroné"
-
-#: config/xtensa/xtensa.c:1824
+#: config/xtensa/xtensa.c:1814
msgid "boolean registers required for the floating-point option"
msgstr "registres booléens requis pour l'option de virgule flottante"
-#: config/xtensa/xtensa.c:1991
+#: config/xtensa/xtensa.c:1868
+#, c-format
+msgid "-f%s is not supported with CONST16 instructions"
+msgstr "-f%s n'est pas supporté avec les instructions CONST16"
+
+#: config/xtensa/xtensa.c:1873
+msgid "PIC is required but not supported with CONST16 instructions"
+msgstr "PIC est requis mais non supporté avec des instructions CONST16"
+
+#: config/xtensa/xtensa.c:1943
+#, c-format
+msgid "invalid %%D value"
+msgstr "valeur %%D invalide"
+
+#: config/xtensa/xtensa.c:1980
msgid "invalid mask"
msgstr "masque invalide"
-#: config/xtensa/xtensa.c:2038
+#: config/xtensa/xtensa.c:2006
+#, c-format
+msgid "invalid %%x value"
+msgstr "valeur %%x invalide"
+
+#: config/xtensa/xtensa.c:2013
+#, c-format
+msgid "invalid %%d value"
+msgstr "valeur %%d invalide"
+
+#: config/xtensa/xtensa.c:2034 config/xtensa/xtensa.c:2044
+#, c-format
+msgid "invalid %%t/%%b value"
+msgstr "valeur %%t/%%b invalide"
+
+#: config/xtensa/xtensa.c:2086
msgid "invalid address"
msgstr "adresse invalide"
-#: config/xtensa/xtensa.c:2063
+#: config/xtensa/xtensa.c:2111
msgid "no register in address"
msgstr "pas de registre dans l'adresse"
-#: config/xtensa/xtensa.c:2071
+#: config/xtensa/xtensa.c:2119
msgid "address offset not a constant"
msgstr "décalage d'adresse n'est pas une constante"
-#: config/xtensa/xtensa.c:2794
-#, fuzzy
+#: config/xtensa/xtensa.c:2802
msgid "only uninitialized variables can be placed in a .bss section"
-msgstr "Seuls les variables initialisées peuvent être placées dans une aire de 8 bits"
-
-#: config/xtensa/xtensa.h:114
-msgid "Use the Xtensa code density option"
-msgstr "Utiliser l'option de densité du code Xtensa"
-
-#: config/xtensa/xtensa.h:116
-msgid "Do not use the Xtensa code density option"
-msgstr "Ne pas utiliser l'option de densité du code Xtensa"
-
-#: config/xtensa/xtensa.h:118
-msgid "Use the Xtensa MAC16 option"
-msgstr "Utiliser l'option Xtensa MAC16"
-
-#: config/xtensa/xtensa.h:120
-msgid "Do not use the Xtensa MAC16 option"
-msgstr "Ne pas utiliser l'option Xtensa MAC16"
+msgstr "seules les variables non initialisées peuvent être placées dans une section .bss"
-#: config/xtensa/xtensa.h:122
-msgid "Use the Xtensa MUL16 option"
-msgstr "Utiliser l'option Xtensa MUL16"
+#: config/xtensa/xtensa.h:79
+msgid "Use CONST16 instruction to load constants"
+msgstr "Utiliser les instructions CONST16 pour charger les constantes"
-#: config/xtensa/xtensa.h:124
-msgid "Do not use the Xtensa MUL16 option"
-msgstr "Ne pas utiliser l'option Xtensa MUL16"
-
-#: config/xtensa/xtensa.h:126
-msgid "Use the Xtensa MUL32 option"
-msgstr "Utiliser l'option Xtensa MUL16"
-
-#: config/xtensa/xtensa.h:128
-msgid "Do not use the Xtensa MUL32 option"
-msgstr "Ne pas utiliser l'option Xtensa MUL32"
-
-#. undocumented
-#. undocumented
-#: config/xtensa/xtensa.h:134
-msgid "Use the Xtensa NSA option"
-msgstr "Utiliser l'option Xtensa NSA"
+#: config/xtensa/xtensa.h:81
+msgid "Use PC-relative L32R instruction to load constants"
+msgstr "Utiliser les instructions L32R relatives au PC pour charger les constantes"
-#: config/xtensa/xtensa.h:136
-msgid "Do not use the Xtensa NSA option"
-msgstr "Ne pas utiliser l'option Xtensa NSA"
-
-#: config/xtensa/xtensa.h:138
-msgid "Use the Xtensa MIN/MAX option"
-msgstr "Utiliser l'option Xtensa MIN/MAX"
-
-#: config/xtensa/xtensa.h:140
-msgid "Do not use the Xtensa MIN/MAX option"
-msgstr "Ne pas utiliser l'option Xtensa MIN/MAX"
-
-#: config/xtensa/xtensa.h:142
-msgid "Use the Xtensa SEXT option"
-msgstr "Utiliser l'option Xtensa SEXT"
-
-#: config/xtensa/xtensa.h:144
-msgid "Do not use the Xtensa SEXT option"
-msgstr "Ne pas utiliser l'option Xtensa SEXT"
-
-#: config/xtensa/xtensa.h:146
-msgid "Use the Xtensa boolean register option"
-msgstr "Utiliser l'option des registres booléens Xtensa"
-
-#: config/xtensa/xtensa.h:148
-msgid "Do not use the Xtensa boolean register option"
-msgstr "Ne pas utiliser l'option des registres booléens Xtensa"
-
-#: config/xtensa/xtensa.h:150
-msgid "Use the Xtensa floating-point unit"
-msgstr "Utiliser l'unité matérielle pour virgule flottante Xtensa"
-
-#: config/xtensa/xtensa.h:152
-msgid "Do not use the Xtensa floating-point unit"
-msgstr "Ne pas utiliser l'unité matérielle pour virgule flottante Xtensa"
-
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#. undocumented
-#: config/xtensa/xtensa.h:170
+#: config/xtensa/xtensa.h:83
msgid "Disable fused multiply/add and multiply/subtract FP instructions"
msgstr "Interdire les instructions fusionnés FP de multiplication/addition et de multiplication/soustraction"
-#: config/xtensa/xtensa.h:172
+#: config/xtensa/xtensa.h:85
msgid "Enable fused multiply/add and multiply/subtract FP instructions"
msgstr "Permettre les instructions fusionnés FP de multiplication/addition et de multiplication/soustraction"
-#: config/xtensa/xtensa.h:174
-msgid "Serialize volatile memory references with MEMW instructions"
-msgstr "Sérialiser les références à la mémoire volatile avec des instructions MEMW"
-
-#: config/xtensa/xtensa.h:176
-msgid "Do not serialize volatile memory references with MEMW instructions"
-msgstr "Ne pas sérialiser les références à la mémoire volatile avec des instructions MEMW"
-
-#: config/xtensa/xtensa.h:178
+#: config/xtensa/xtensa.h:87
msgid "Intersperse literal pools with code in the text section"
msgstr "Entrecouper les lots de litéraux avec le code dans la section texte"
-#: config/xtensa/xtensa.h:180
+#: config/xtensa/xtensa.h:89
msgid "Put literal pools in a separate literal section"
msgstr "Placer les lots de litéraux dans des sections séparées de litéraux"
-#: config/xtensa/xtensa.h:182
+#: config/xtensa/xtensa.h:91
msgid "Automatically align branch targets to reduce branch penalties"
msgstr "Aligner automatiquement les branchements cibles pour réduire les pénalités de branchement"
-#: config/xtensa/xtensa.h:184
+#: config/xtensa/xtensa.h:93
msgid "Do not automatically align branch targets"
msgstr "Ne pas aligner automatiquement les branchements cibles pour réduire les pénalités de branchement"
-#: config/xtensa/xtensa.h:186
+#: config/xtensa/xtensa.h:95
msgid "Use indirect CALLXn instructions for large programs"
msgstr "Utiliser les instructions indirectes CALLXn pour les grands programmes"
-#: config/xtensa/xtensa.h:188
+#: config/xtensa/xtensa.h:97
msgid "Use direct CALLn instructions for fast calls"
msgstr "Utiliser les instructions directes CALLn pour des appels rapides"
-#: ada/misc.c:233
-msgid "`-gnat' misspelled as `-gant'"
-msgstr "«-gnat» mal épellé comme «-gant»"
-
-#: cp/call.c:261 cp/init.c:1594
-msgid "qualified type `%T' does not match destructor name `~%T'"
-msgstr "type qualifé « %T » ne concorde pas le nom du destructeur «~%T»"
-
-#: cp/call.c:270
-msgid "type of `%E' does not match destructor type `%T' (type was `%T')"
-msgstr "type de « %E » ne concorde pas avec le type du destructeur « %T » (type était « %T »)"
-
-#: cp/call.c:279
-msgid "`%D' is a namespace"
-msgstr "« %D » est un nom d'espace"
+#: ada/misc.c:240
+#, c-format
+msgid "missing argument to \"-%s\""
+msgstr "argument manquant à « -%s »"
-#: cp/call.c:287
-msgid "base object `%E' of scoped method call is of non-aggregate type `%T'"
-msgstr "objet de base « %E » de la portée d'appel de la méthode n'est pas de type aggrégat « %T »"
+#: ada/misc.c:281
+msgid "`-gnat' misspelled as `-gant'"
+msgstr "« -gnat » mal épellé comme « -gant »"
-#: cp/call.c:369
+#: cp/call.c:217
msgid "unable to call pointer to member function here"
msgstr "incapable de faire l'appel avec le pointeur vers la fonction membre ici"
-#: cp/call.c:518
-msgid "destructors take no parameters"
-msgstr "destructeurs ne prend aucun paramètre"
-
-#: cp/call.c:522
-msgid "destructor name `~%T' does not match type `%T' of expression"
-msgstr "nom du destructeur «~%T» ne concorde pas avec le type « %T » de l'expression"
-
-#: cp/call.c:543 cp/call.c:5000
-msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
-msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type aggrégat « %T »"
-
-#: cp/call.c:567
-#, fuzzy
-msgid "request for member `%D' is ambiguous"
-msgstr "utilisation de « %D » est ambiguë"
-
-#: cp/call.c:2537
+#: cp/call.c:2228
msgid "%s %D(%T, %T, %T) <built-in>"
msgstr "%s %D(%T, %T, %T) <construit-interne>"
-#: cp/call.c:2542
+#: cp/call.c:2233
msgid "%s %D(%T, %T) <built-in>"
msgstr "%s %D(%T, %T) <construit-interne>"
-#: cp/call.c:2546
+#: cp/call.c:2237
msgid "%s %D(%T) <built-in>"
msgstr "%s %D(%T) <interne>"
-#: cp/call.c:2550
+#: cp/call.c:2241
msgid "%s %T <conversion>"
msgstr "%s %T <conversion>"
-#: cp/call.c:2552
-msgid "%s %+#D%s"
-msgstr "%s %+#D%s"
+#: cp/call.c:2243
+msgid "%J%s %+#D <near match>"
+msgstr "%J%s %+#D <près d'une concordance>"
-#: cp/call.c:2726
-msgid "conversion from `%T' to `%T' is ambiguous"
-msgstr "conversion de « %T » vers « %T » est ambiguë"
+#: cp/call.c:2245
+msgid "%J%s %+#D"
+msgstr "%J%s %+#D"
-#: cp/call.c:2803
-#, fuzzy
-msgid "`%T' is not a class type"
-msgstr "%T n'est pas un type de classe"
+#: cp/call.c:2280
+msgid "candidates are:"
+msgstr "candidats sont:"
-#: cp/call.c:2811
-#, fuzzy
-msgid "incomplete type '%T' cannot be used to name a scope"
-msgstr "objet de type incomplet « %T » ne sera pas accessible dans %s"
-
-#: cp/call.c:2831 cp/typeck.c:2188 cp/typeck.c:2217
-#, fuzzy
-msgid "'%D' has no member named '%E'"
-msgstr "%s n'a pas de membre nommé « %s »"
+#: cp/call.c:2468
+msgid "conversion from `%T' to `%T' is ambiguous"
+msgstr "conversion de « %T » vers « %T » est ambiguë"
-#: cp/call.c:2933
+#: cp/call.c:2619 cp/call.c:2663
msgid "no matching function for call to `%D(%A)'"
-msgstr "pas de fonction concordante pour l'appel de «%D(%A)»"
+msgstr "pas de fonction concordante pour l'appel de « %D(%A) »"
-#: cp/call.c:2944 cp/call.c:5087
+#: cp/call.c:2622 cp/call.c:2666
msgid "call of overloaded `%D(%A)' is ambiguous"
-msgstr "appel du surchargé «%D(%A)» est ambigu"
+msgstr "appel du surchargé « %D(%A) » est ambiguë"
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
-#: cp/call.c:2971
+#: cp/call.c:2732
#, c-format
msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*"
msgstr "pointeur vers fonction membre %E ne peut être appelé sans un objet; utilisez .* ou ->*"
-#: cp/call.c:3036
+#: cp/call.c:2798
msgid "no match for call to `(%T) (%A)'"
-msgstr "pas de concordance pour l'appel de «(%T) (%A)»"
+msgstr "pas de concordance pour l'appel de « (%T) (%A) »"
-#: cp/call.c:3046
+#: cp/call.c:2806
msgid "call of `(%T) (%A)' is ambiguous"
-msgstr "appel de «(%T) (%A)» est ambigu"
+msgstr "appel de « (%T) (%A) » est ambiguë"
-#: cp/call.c:3081
+#: cp/call.c:2839
#, c-format
msgid "%s for ternary 'operator?:' in '%E ? %E : %E'"
-msgstr ""
+msgstr "%s pour « operator?: » ternaire dans « %E ? %E : %E »"
-#: cp/call.c:3087
-#, fuzzy, c-format
+#: cp/call.c:2845
+#, c-format
msgid "%s for 'operator%s' in '%E%s'"
-msgstr "%s pour l'opérateur «%T %s»"
+msgstr "%s pour « operator%s » dans « %E%s »"
-#: cp/call.c:3091
+#: cp/call.c:2849
#, c-format
msgid "%s for 'operator[]' in '%E[%E]'"
-msgstr ""
+msgstr "%s pour « operator[] » dans « %E[%E] »"
-#: cp/call.c:3096
+#: cp/call.c:2854
+#, c-format
+msgid "%s for '%s' in '%s %E'"
+msgstr "%s pour « %s » dans « %s %E »"
+
+#: cp/call.c:2859
#, c-format
msgid "%s for 'operator%s' in '%E %s %E'"
-msgstr ""
+msgstr "%s pour « operator%s » dans « %E %s %E »"
-#: cp/call.c:3099
-#, fuzzy, c-format
+#: cp/call.c:2862
+#, c-format
msgid "%s for 'operator%s' in '%s%E'"
-msgstr "%s pour l'opérateur «%T %s»"
+msgstr "%s pour « operator%s » dans « %s%E »"
-#: cp/call.c:3191
+#: cp/call.c:2957
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
-msgstr "le C++ ISO interdit l'omission du terme milieu de l'expression ?:"
+msgstr "ISO C++ interdit l'omission du terme milieu de l'expression ?:"
-#: cp/call.c:3250
+#: cp/call.c:3018
#, c-format
msgid "`%E' has type `void' and is not a throw-expression"
-msgstr "« %E» a le type «void » et n'est pas une expresion de retour de type throw"
+msgstr "« %E » a le type « void » et n'est pas une expression de retour de type throw"
-#: cp/call.c:3283 cp/call.c:3475
+#: cp/call.c:3051 cp/call.c:3242
msgid "operands to ?: have different types"
msgstr "opérande vers ?: a différents types"
-#: cp/call.c:3428
+#: cp/call.c:3196
msgid "enumeral mismatch in conditional expression: `%T' vs `%T'"
msgstr "non concordance de type énuméré dans l'expression conditionnelle: « %T » vs « %T »"
-#: cp/call.c:3435
+#: cp/call.c:3203
msgid "enumeral and non-enumeral type in conditional expression"
msgstr "type énuméré et non énuméré dans l'expression conditionnelle"
-#: cp/call.c:3516
-msgid "`%D' must be declared before use"
-msgstr "« %D » doit être déclaré avant son usage"
-
-#: cp/call.c:3706
+#: cp/call.c:3487
msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead"
-msgstr "pas «%D(int)» déclaré pour le postfixe « %s », essaie avec l'oprateur préfixe à la place"
+msgstr "pas « %D(int) » déclaré pour le postfixe « %s », essaie avec l'oprateur préfixe à la place"
-#: cp/call.c:3753
+#: cp/call.c:3532
msgid "using synthesized `%#D' for copy assignment"
-msgstr "utilisation du synthétisé «%#D» pour l'affectaion par copie"
+msgstr "utilisation du synthétisé « %#D » pour l'affectaion par copie"
-#: cp/call.c:3755
+#: cp/call.c:3534
msgid " where cfront would use `%#D'"
-msgstr " où cfront utiliserait «%#D»"
+msgstr " où cfront utiliserait « %#D »"
-#: cp/call.c:3782
+#: cp/call.c:3557
msgid "comparison between `%#T' and `%#T'"
-msgstr "comparaison entre «%#T» et «%#T»"
+msgstr "comparaison entre « %#T » et « %#T »"
-#: cp/call.c:4021
-msgid "no suitable `operator delete' for `%T'"
-msgstr "« operator delete» pas adapté pour «%T »"
+#: cp/call.c:3803
+msgid "no suitable `operator %s' for `%T'"
+msgstr "pas « operator %s » adapté pour « %T »"
-#: cp/call.c:4040
+#: cp/call.c:3820
msgid "`%+#D' is private"
-msgstr "«%+#D» est privé"
+msgstr "« %+#D » est privé"
-#: cp/call.c:4042
+#: cp/call.c:3822
msgid "`%+#D' is protected"
-msgstr "«%+#D» est protégé"
+msgstr "« %+#D » est protégé"
-#: cp/call.c:4044
+#: cp/call.c:3824
msgid "`%+#D' is inaccessible"
-msgstr "«%+#D» et inaccessible"
+msgstr "« %+#D » et inaccessible"
-#: cp/call.c:4045
+#: cp/call.c:3825
msgid "within this context"
msgstr "à l'intérieur du contexte"
-#: cp/call.c:4088
+#: cp/call.c:3895
msgid "invalid conversion from `%T' to `%T'"
msgstr "conversion invalide de « %T » vers « %T »"
-#: cp/call.c:4090 cp/call.c:4229 cp/call.c:4231
+#: cp/call.c:3897
msgid " initializing argument %P of `%D'"
msgstr " initialisation de l'argument %P de « %D »"
-#: cp/call.c:4152 cp/call.c:4156
-msgid " initializing argument %P of `%D' from result of `%D'"
-msgstr " initialisation de l'argument %P de « %D » à partir du résultat « %D »"
+#: cp/call.c:4050
+msgid "cannot bind bitfield `%E' to `%T'"
+msgstr "ne peut lier le champ de bits « %E » avec « %T »"
+
+#: cp/call.c:4053
+msgid "cannot bind packed field `%E' to `%T'"
+msgstr "ne peut lier le champs empaqueté « %E » avec « %T »"
-#: cp/call.c:4162 cp/call.c:4165
-msgid " initializing temporary from result of `%D'"
-msgstr " initialisation temporaire à partir du résultat « %D »"
+#: cp/call.c:4056
+msgid "cannot bind rvalue `%E' to `%T'"
+msgstr "ne peut lier la rvalue « %E » avec « %T »"
-#. Undefined behavior [expr.call] 5.2.2/7. We used to just warn
-#. here and do a bitwise copy, but now cp_expr_size will abort if we
-#. try to do that.
-#: cp/call.c:4316
-#, fuzzy
+#: cp/call.c:4144
msgid "cannot pass objects of non-POD type `%#T' through `...'; call will abort at runtime"
-msgstr "ne peut recevoir d'objets de type non POD «%#T» through « ... »"
+msgstr "ne peut recevoir d'objets de type non POD « %#T » through « ... »; l'appel échouera lors de l'éxecution"
#. Undefined behavior [expr.call] 5.2.2/7.
-#: cp/call.c:4343
-msgid "cannot receive objects of non-POD type `%#T' through `...'"
-msgstr "ne peut recevoir d'objets de type non POD «%#T» through « ... »"
+#: cp/call.c:4168
+msgid "cannot receive objects of non-POD type `%#T' through `...'; call will abort at runtime"
+msgstr "ne peut recevoir d'objets de type non POD « %#T » through « ... »; l'appel échouera lors de l'éxecution"
-#: cp/call.c:4523
+#: cp/call.c:4208
+msgid "the default argument for parameter %d of `%D' has not yet been parsed"
+msgstr "argument par défaut pour le paramètre %d de « %D » n'a pas encore été analysé"
+
+#: cp/call.c:4403
msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
-msgstr "passant « %T» comme «cet» argument de «%#D » écarte les qualificateurs"
+msgstr "passant « %T» comme «cet» argument de « %#D » écarte les qualificateurs"
-#: cp/call.c:4542
-#, fuzzy
+#: cp/call.c:4422
msgid "`%T' is not an accessible base of `%T'"
-msgstr "« %T » est une base inaccessible de « %T »"
+msgstr "« %T » est une base accessible de « %T »"
-#: cp/call.c:4786
+#: cp/call.c:4696
msgid "could not find class$ field in java interface type `%T'"
msgstr "ne peut repérer le champ classe$ dans le type d'interface JAVA « %T »"
-#: cp/call.c:4974
-#, fuzzy
+#: cp/call.c:4951
msgid "call to non-function `%D'"
-msgstr "fonction virtuelle d'une non classe « %s »"
+msgstr "appel à une non fonction « %D »"
+
+#: cp/call.c:4977
+msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type aggrégat « %T »"
-#: cp/call.c:5076
-msgid "no matching function for call to `%T::%D(%A)%#V'"
-msgstr "pas de fonction concordante pour l'appel à «%T::%D(%A)%#V»"
+#: cp/call.c:5055
+msgid "no matching function for call to `%T::%s(%A)%#V'"
+msgstr "pas de fonction concordante pour l'appel à « %T::%s(%A)%#V »"
-#: cp/call.c:5106
+#: cp/call.c:5072
+#, c-format
+msgid "call of overloaded `%s(%A)' is ambiguous"
+msgstr "appel du surchargé « %s(%A) » est ambiguë"
+
+#: cp/call.c:5093
msgid "cannot call member function `%D' without object"
msgstr "ne peut appeler la fonction membre « %D » sans objet"
-#: cp/call.c:5704
+#: cp/call.c:5678
msgid "passing `%T' chooses `%T' over `%T'"
msgstr "passant « %T » à choisit « %T » au lieu de « %T »"
-#: cp/call.c:5706 cp/decl2.c:4154
+#: cp/call.c:5680 cp/name-lookup.c:4057
msgid " in call to `%D'"
msgstr " dans l'appel de « %D »"
-#: cp/call.c:5755
+#: cp/call.c:5737
msgid "choosing `%D' over `%D'"
msgstr "choix de « %D » à la place de « %D »"
-#: cp/call.c:5756
+#: cp/call.c:5738
msgid " for conversion from `%T' to `%T'"
msgstr " pour la conversion de « %T » vers « %T »"
-#: cp/call.c:5758
+#: cp/call.c:5740
msgid " because conversion sequence for the argument is better"
msgstr " parce que la séquence de conversion pour l'argument est meilleure"
-#: cp/call.c:5879
-#, fuzzy
-msgid "ISO C++ says that `%D' and `%D' are ambiguous even though the worst conversion for the former is better than the worst conversion for the latter"
-msgstr " parce la plus mauvaise conversion de la déclaration initiale est meilleure que la plus mauvaise conversion de la dernière déclaration"
+#: cp/call.c:5860
+msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:"
+msgstr "ISO C++ indique qu'ils sont ambiguës même à travers la plus mauvaise conversion pour le premier que la plus mauvaise pour la seconde:"
+
+#: cp/call.c:5864
+msgid "candidate 1:"
+msgstr "candidat 1:"
-#: cp/call.c:5996
+#: cp/call.c:5865
+msgid "candidate 2:"
+msgstr "candidat 2:"
+
+#: cp/call.c:5974
msgid "could not convert `%E' to `%T'"
msgstr "ne peut convertir « %E » vers « %T »"
-#: cp/call.c:6105
-#, fuzzy
+#: cp/call.c:6079
msgid "invalid initialization of non-const reference of type '%T' from a temporary of type '%T'"
-msgstr "const_cast invalide de la rvalue du type « %T » vers le type « %T »"
+msgstr "initialisation invalide pour une référence à un non constante de type « %T » à partir d'un type temporaire de type « %T »"
-#: cp/call.c:6109
-#, fuzzy
+#: cp/call.c:6083
msgid "invalid initialization of reference of type '%T' from expression of type '%T'"
-msgstr "conversion invalide vers un type « %T » à partir du type « %T »"
+msgstr "initialisation invalide de référence d'un type « %T » à partir d'une expression de type « %T »"
-#: cp/class.c:287
+#: cp/class.c:281
msgid "cannot convert from base `%T' to derived type `%T' via virtual base `%T'"
msgstr "ne peut convertir de la base « %T » à un type dérivé « %T » via la base virtuel « %T »"
-#: cp/class.c:992
+#: cp/class.c:764
+msgid "Java class '%T' cannot have an implicit non-trivial destructor"
+msgstr "classe Java « %T » ne peut avoir un destructeur implicite non trivial"
+
+#: cp/class.c:765
+msgid "Java class '%T' cannot have a destructor"
+msgstr "classe Java « %T » ne peut avoir un destructeur"
+
+#: cp/class.c:933
msgid "`%#D' and `%#D' cannot be overloaded"
-msgstr "«%#D» et «%#D» ne peut être surchargé"
+msgstr "« %#D » et « %#D » ne peut être surchargé"
-#: cp/class.c:1076
+#: cp/class.c:1016
msgid "duplicate enum value `%D'"
msgstr "valeur d'énumérateur « %D » en double"
-#: cp/class.c:1079
+#: cp/class.c:1019
msgid "duplicate field `%D' (as enum and non-enum)"
msgstr "champ « %D » en double (comme enum et non enum)"
-#: cp/class.c:1086
+#: cp/class.c:1026
msgid "duplicate nested type `%D'"
msgstr "type « %D » imbriqué en double"
-#: cp/class.c:1097
+#: cp/class.c:1037
msgid "duplicate field `%D' (as type and non-type)"
msgstr "duplicattion du champ « %D » (comme type et non type)"
-#: cp/class.c:1101
+#: cp/class.c:1041
msgid "duplicate member `%D'"
msgstr "membre « %D » est double"
-#: cp/class.c:1144
+#: cp/class.c:1079
msgid "conflicting access specifications for method `%D', ignored"
msgstr "spécifications d'accès conflictuelles pour la méthode « %D », ignoré"
-#: cp/class.c:1146
+#: cp/class.c:1081
#, c-format
msgid "conflicting access specifications for field `%s', ignored"
msgstr "spécifications d'accès conflictuelles pour le champ « %s », ignoré"
-#: cp/class.c:1194
+#: cp/class.c:1131
msgid "`%D' names constructor"
msgstr "« %D » nomme le constructeur"
-#: cp/class.c:1199
+#: cp/class.c:1136
msgid "`%D' invalid in `%T'"
msgstr "« %D » invalide dans « %T »"
-#: cp/class.c:1207
+#: cp/class.c:1144
msgid "no members matching `%D' in `%#T'"
-msgstr "aucun membre concordant « %D » dans «%#T»"
+msgstr "aucun membre concordant « %D » dans « %#T »"
-#: cp/class.c:1239 cp/class.c:1247
+#: cp/class.c:1176 cp/class.c:1184
msgid "`%D' invalid in `%#T'"
-msgstr "« %D » invalide dans «%#T»"
+msgstr "« %D » invalide dans « %#T »"
-#: cp/class.c:1240
+#: cp/class.c:1177
msgid " because of local method `%#D' with same name"
-msgstr " parce que la méthode locale «%#D» a le même nom"
+msgstr " parce que la méthode locale « %#D » a le même nom"
-#: cp/class.c:1248
+#: cp/class.c:1185
msgid " because of local member `%#D' with same name"
-msgstr " parce que le membre local «%#D» a le même nom"
+msgstr " parce que le membre local « %#D » a le même nom"
-#: cp/class.c:1320
+#: cp/class.c:1255
msgid "base class `%#T' has a non-virtual destructor"
-msgstr "classe de base «%#T» a un destructeur non virtuel"
+msgstr "classe de base « %#T » a un destructeur non virtuel"
-#: cp/class.c:1340
+#: cp/class.c:1275
msgid "base `%T' with only non-default constructor in class without a constructor"
msgstr "base « %T » avec seulement le constructeur non par défaut dans la classe sans un constructeur"
-#: cp/class.c:1912
+#: cp/class.c:1659
msgid "all member functions in class `%T' are private"
msgstr "toutes les fonctions membres de la classe « %T » sont privés"
-#: cp/class.c:1926
+#: cp/class.c:1670
msgid "`%#T' only defines a private destructor and has no friends"
-msgstr "«%#T» définit seulement les constructeurs privés et n'a pas d'amis"
+msgstr "« %#T » définit seulement les constructeurs privés et n'a pas d'amis"
-#: cp/class.c:1969
+#: cp/class.c:1712
msgid "`%#T' only defines private constructors and has no friends"
-msgstr "«%#T» définit seulement les constructeurs privés et n'a pas d'amis"
-
-#: cp/class.c:2090 cp/class.c:5276
-msgid "redefinition of `%#T'"
-msgstr "redéfinition de «%#T»"
-
-#: cp/class.c:2091
-msgid "previous definition of `%#T'"
-msgstr "définition précédente de «%#T»"
+msgstr "« %#T » définit seulement les constructeurs privés et n'a pas d'amis"
-#: cp/class.c:2365
+#: cp/class.c:2097
msgid "no unique final overrider for `%D' in `%T'"
msgstr "pas d'écraseur unique final pour « %D » dans « %T »"
#. Here we know it is a hider, and no overrider exists.
-#: cp/class.c:2712
+#: cp/class.c:2542
msgid "`%D' was hidden"
msgstr "« %D » était caché"
-#: cp/class.c:2713
+#: cp/class.c:2543
msgid " by `%D'"
msgstr " par « %D »"
-#: cp/class.c:2755
+#: cp/class.c:2584
msgid "ISO C++ forbids member `%D' with same name as enclosing class"
-msgstr "le C++ ISO interdit le membre « %D » avec le même non de la classe de fermeture"
+msgstr "ISO C++ interdit le membre « %D » avec le même non de la classe de fermeture"
-#: cp/class.c:2760 cp/decl2.c:1331
+#: cp/class.c:2589 cp/decl2.c:1167
msgid "`%#D' invalid; an anonymous union can only have non-static data members"
-msgstr "«%#D» invalide; une union anonyme peut seulement avoir des données non statiques de membres"
+msgstr "« %#D » invalide; une union anonyme peut seulement avoir des données non statiques de membres"
-#: cp/class.c:2766 cp/decl2.c:1337
+#: cp/class.c:2595 cp/decl2.c:1174
msgid "private member `%#D' in anonymous union"
-msgstr "membre privé «%#D» dans une union anonyme"
+msgstr "membre privé « %#D » dans une union anonyme"
-#: cp/class.c:2769 cp/decl2.c:1339
+#: cp/class.c:2598 cp/decl2.c:1176
msgid "protected member `%#D' in anonymous union"
-msgstr "membre protégé «%#D» dans une union anonyme"
+msgstr "membre protégé « %#D » dans une union anonyme"
-#: cp/class.c:2894
+#: cp/class.c:2717
msgid "vtable layout for class `%T' may not be ABI-compliant and may change in a future version of GCC due to implicit virtual destructor"
-msgstr ""
+msgstr "disposition vtable pour la classe « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future deGCC en raison d'un destructeur virtuel implicite"
-#: cp/class.c:2958
+#: cp/class.c:2777
msgid "bit-field `%#D' with non-integral type"
-msgstr "largeur du champ de bits «%#D» n'est pas une constante entière"
+msgstr "largeur du champ de bits « %#D » n'est pas une constante entière"
-#: cp/class.c:2978
+#: cp/class.c:2797
msgid "bit-field `%D' width not an integer constant"
msgstr "largeur du champ de bits « %D » n'est pas une constante entière"
-#: cp/class.c:2984
+#: cp/class.c:2803
msgid "negative width in bit-field `%D'"
msgstr "largeur négative du champ de bits « %D »"
-#: cp/class.c:2989
+#: cp/class.c:2808
msgid "zero width for bit-field `%D'"
msgstr "largeur zéro pour le champ de bits « %D »"
-#: cp/class.c:2995
+#: cp/class.c:2814
msgid "width of `%D' exceeds its type"
msgstr "largeur de « %D » excède son type"
-#: cp/class.c:3004
+#: cp/class.c:2823
msgid "`%D' is too small to hold all values of `%#T'"
-msgstr "« %D » est trop petit pour contenir toutes les valeurs de «%#T»"
+msgstr "« %D » est trop petit pour contenir toutes les valeurs de « %#T »"
-#: cp/class.c:3088
+#: cp/class.c:2885
msgid "member `%#D' with constructor not allowed in union"
-msgstr "membre «%#D» avec consructeur n'est pas permis dans l'union"
+msgstr "membre « %#D » avec consructeur n'est pas permis dans l'union"
-#: cp/class.c:3091
+#: cp/class.c:2888
msgid "member `%#D' with destructor not allowed in union"
-msgstr "membre «%#D» avec destructeur n'est pas permis dans l'union"
+msgstr "membre « %#D » avec destructeur n'est pas permis dans l'union"
-#: cp/class.c:3094
+#: cp/class.c:2891
msgid "member `%#D' with copy assignment operator not allowed in union"
-msgstr "membre «%#D» avec opérateur d,affectation par copie n'st pas permis dans l'union"
+msgstr "membre « %#D » avec opérateur d,affectation par copie n'st pas permis dans l'union"
-#: cp/class.c:3121
+#: cp/class.c:2918
msgid "multiple fields in union `%T' initialized"
msgstr "champs multiples dans l'union « %T » initialisés"
-#: cp/class.c:3234
+#: cp/class.c:2987
+msgid "ignoring packed attribute on unpacked non-POD field `%#D'"
+msgstr "attribut empaqueté ignoré sur un champ non POD non paqueté « %#D »"
+
+#: cp/class.c:3039
msgid "field `%D' in local class cannot be static"
msgstr "champ « %D » dans une classe locale ne peut être statique"
-#: cp/class.c:3240
+#: cp/class.c:3045
msgid "field `%D' invalidly declared function type"
msgstr "champ « %D » incorrectement validé comme un type de fonction"
-#: cp/class.c:3247
+#: cp/class.c:3052
msgid "field `%D' invalidly declared method type"
msgstr "champ « %D » incorrectement validé comme un type de méthode"
-#: cp/class.c:3253
-msgid "field `%D' invalidly declared offset type"
-msgstr "champ « %D » incorrectement validé comme type de décalage"
-
#. Unions cannot have static members.
-#: cp/class.c:3271
+#: cp/class.c:3070
msgid "field `%D' declared static in union"
msgstr "champ « %D » déclaré statique dans l'union"
-#: cp/class.c:3298
+#: cp/class.c:3097
msgid "non-static reference `%#D' in class without a constructor"
-msgstr "référence non statique «%#D» dans la classe sans un constructeur"
+msgstr "référence non statique « %#D » dans la classe sans un constructeur"
-#: cp/class.c:3333
+#: cp/class.c:3132
msgid "non-static const member `%#D' in class without a constructor"
-msgstr "constante non statique de membre «%#D» dans la classe sans un constructeur"
+msgstr "constante non statique de membre « %#D » dans la classe sans un constructeur"
-#: cp/class.c:3349
+#: cp/class.c:3147
msgid "field `%#D' with same name as class"
-msgstr "champ «%#D» avec le même nom qu'une classe"
+msgstr "champ « %#D » avec le même nom qu'une classe"
-#: cp/class.c:3367
+#: cp/class.c:3165
msgid "`%#T' has pointer data members"
-msgstr "«%#T» a un pointeur vers un membre de données"
+msgstr "« %#T » a un pointeur vers un membre de données"
-#: cp/class.c:3371
+#: cp/class.c:3169
msgid " but does not override `%T(const %T&)'"
-msgstr " mais n'écrase pas «%T(const %T&)»"
+msgstr " mais n'écrase pas « %T(const %T&) »"
-#: cp/class.c:3373
+#: cp/class.c:3171
msgid " or `operator=(const %T&)'"
msgstr " ou « operator=(const %T&) »"
-#: cp/class.c:3376
+#: cp/class.c:3174
msgid " but does not override `operator=(const %T&)'"
msgstr " mais n'écrase pas « operator=(const %T&) »"
-#: cp/class.c:3826
+#: cp/class.c:3604
msgid "offset of empty base `%T' may not be ABI-compliant and maychange in a future version of GCC"
-msgstr ""
+msgstr "décalage d'une base vide « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:3935
+#: cp/class.c:3714
msgid "class `%T' will be considered nearly empty in a future version of GCC"
-msgstr ""
+msgstr "classe « %T » devra être considérée pratiquement vide dans une version future de GCC"
-#: cp/class.c:4025
+#: cp/class.c:3801
msgid "initializer specified for non-virtual method `%D'"
msgstr "initialisation spécifiée pour une méthode non virtuelle « %D »"
-#: cp/class.c:4761
+#: cp/class.c:4489
msgid "offset of virtual base `%T' is not ABI-compliant and may change in a future version of GCC"
-msgstr ""
+msgstr "décalage relatif d'une base virtuelle « %T » n'est pas compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:4861
+#: cp/class.c:4579
msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgstr "base directe « %T » inaccessible dans « %T » en raison de l'ambiguité"
-#: cp/class.c:4874
+#: cp/class.c:4592
msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
msgstr "base virtuelle « %T » inaccessible dans « %T » en raison de l'ambiguité"
-#: cp/class.c:5030
+#: cp/class.c:4766
msgid "size assigned to `%T' may not be ABI-compliant and may change in a future version of GCC"
-msgstr ""
+msgstr "taille assignée à « %T » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
#. Versions of G++ before G++ 3.4 did not reset the
#. DECL_MODE.
-#: cp/class.c:5053
+#: cp/class.c:4805
msgid "the offset of `%D' may not be ABI-compliant and may change in a future version of GCC"
-msgstr ""
+msgstr "le décalage relatif de « %D » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5079
+#: cp/class.c:4828
msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
-msgstr ""
+msgstr "le décalage relatif de « %D » peut ne pas être compatible avec l'ABI et peut être modifié dans une version future de GCC"
-#: cp/class.c:5088
+#: cp/class.c:4837
msgid "`%D' contains empty classes which may cause base classes to be placed at different locations in a future version of GCC"
-msgstr ""
+msgstr "« %D » contient des classes vides lesquelles peuvent placer les classes de base à une localisation différente dans une version future de GCC"
-#: cp/class.c:5147
+#: cp/class.c:4896
msgid "layout of classes derived from empty class `%T' may change in a future version of GCC"
-msgstr ""
+msgstr "disposition des classes est dérivés de la classe vide « %T » peut être modifiée dans une version future de GCC"
-#: cp/class.c:5432
+#: cp/class.c:5026 cp/semantics.c:2029
+msgid "redefinition of `%#T'"
+msgstr "redéfinition de « %#T »"
+
+#: cp/class.c:5196
msgid "`%#T' has virtual functions but non-virtual destructor"
-msgstr "«%#T» a des fonctions virtuelles mais un destructeur non virtuel"
+msgstr "« %#T » a des fonctions virtuelles mais un destructeur non virtuel"
-#: cp/class.c:5516
+#: cp/class.c:5275
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr "tentative de complétion du struct, mais a été stoppé en raison d'erreurs précédentes d'analyses syntaxiques"
-#: cp/class.c:5982
+#: cp/class.c:5717
#, c-format
msgid "language string `\"%s\"' not recognized"
-msgstr "chaîne du langage «\"%s\"» n'est pas reconnue"
+msgstr "chaîne du langage « \"%s\" » n'est pas reconnue"
-#: cp/class.c:6078
+#: cp/class.c:5805
msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgstr "ne peut résoudre la fonction surchargé « %D » basé sur la conversion vers le type « %T »"
-#: cp/class.c:6203
+#: cp/class.c:5930
msgid "no matches converting function `%D' to type `%#T'"
-msgstr "pas de concordance de conversion de fonction « %D » vers le type «%#T'"
+msgstr "pas de concordance de conversion de fonction « %D » vers le type « %#T »"
-#: cp/class.c:6226
+#: cp/class.c:5953
msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
-msgstr "conversion d'une fonction surchargée « %D » vers le type «%#T» est ambiguë"
+msgstr "conversion d'une fonction surchargée « %D » vers le type « %#T » est ambiguë"
-#: cp/class.c:6252
+#: cp/class.c:5979
msgid "assuming pointer to member `%D'"
msgstr "pointeur assumé vers le membre « %D »"
-#: cp/class.c:6255
+#: cp/class.c:5982
#, c-format
msgid "(a pointer to member can only be formed with `&%E')"
msgstr "(un pointeur vers un membre peut seulement être formé avec «&%E»)"
-#: cp/class.c:6306 cp/class.c:6477 cp/class.c:6484
+#: cp/class.c:6027 cp/class.c:6209 cp/class.c:6216
msgid "not enough type information"
msgstr "pas assez d'information sur le type"
-#: cp/class.c:6315
+#: cp/class.c:6044
msgid "argument of type `%T' does not match `%T'"
msgstr "argument de type « %T » ne concorde pas avec « %T »"
-#: cp/class.c:6461
+#: cp/class.c:6193
msgid "invalid operation on uninstantiated type"
msgstr "opération invalide sur un type non instancié"
@@ -14467,13 +13534,17 @@ msgstr "opération invalide sur un type non instancié"
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:6745 cp/decl.c:1254 cp/decl.c:3379 cp/pt.c:2004
+#: cp/class.c:6451 cp/decl.c:1225 cp/name-lookup.c:495 cp/pt.c:2093
msgid "declaration of `%#D'"
-msgstr "déclaration de «%#D»"
+msgstr "déclaration de « %#D »"
-#: cp/class.c:6746
+#: cp/class.c:6452
msgid "changes meaning of `%D' from `%+#D'"
-msgstr "changements signifiant de « %D » à partir de «%+#D»"
+msgstr "changements signifiant de « %D » à partir de « %+#D »"
+
+#: cp/cp-lang.c:398
+msgid "inter-module optimisations not implemented yet"
+msgstr "les optimisations inter-module n'est pas implanté encore"
#: cp/cvt.c:88
msgid "can't convert from incomplete type `%T' to `%T'"
@@ -14483,247 +13554,227 @@ msgstr "ne peut convertir d'un type incomplet « %T » vers « %T »"
msgid "conversion of `%E' from `%T' to `%T' is ambiguous"
msgstr "conversion de « %E » à partir de « %T » vers « %T » est ambiguë"
-#: cp/cvt.c:126
+#: cp/cvt.c:113 cp/cvt.c:127
msgid "converting from `%T' to `%T'"
msgstr "conversion de « %T » vers « %T »"
-#: cp/cvt.c:203 cp/cvt.c:207
-msgid "pointer to member cast from `%T' to `%T' is via virtual base"
-msgstr "pointeur vers un membre transtypé de « %T » à « %T » est fait via une base virtuelle"
-
-#: cp/cvt.c:225 cp/cvt.c:236 cp/cvt.c:283
+#: cp/cvt.c:185 cp/cvt.c:253 cp/cvt.c:297
msgid "cannot convert `%E' from type `%T' to type `%T'"
msgstr "ne peut convertir « %E » du type « %T » vers le type « %T »"
-#: cp/cvt.c:262
-#, fuzzy
+#: cp/cvt.c:214 cp/cvt.c:218
+msgid "pointer to member cast from `%T' to `%T' is via virtual base"
+msgstr "pointeur vers un membre transtypé de « %T » à « %T » est fait via une base virtuelle"
+
+#: cp/cvt.c:276
msgid "invalid conversion from '%T' to '%T'"
msgstr "conversion invalide de « %T » vers « %T »"
-#: cp/cvt.c:504
+#: cp/cvt.c:508
msgid "conversion from `%T' to `%T' discards qualifiers"
msgstr "conversion de « %T » à « %T » écarte les qualificateurs"
-#: cp/cvt.c:522
+#: cp/cvt.c:526
msgid "casting `%T' to `%T' does not dereference pointer"
msgstr "transtypage de « %T » vers « %T » ne fait pas de dé-référence de pointeur"
-#: cp/cvt.c:551
+#: cp/cvt.c:553
msgid "cannot convert type `%T' to type `%T'"
msgstr "ne peut convertir type « %T » vers le type « %T »"
-#: cp/cvt.c:683
+#: cp/cvt.c:679
msgid "conversion from `%#T' to `%#T'"
-msgstr "conversion de «%#T» vers «%#T'"
+msgstr "conversion de « %#T » vers « %#T »"
-#: cp/cvt.c:695
+#: cp/cvt.c:691
msgid "`%#T' used where a `%T' was expected"
-msgstr "«%#T» utilisé où « %T » était attendu"
-
-#: cp/cvt.c:712
-msgid "the address of `%D', will always be `true'"
-msgstr "l'adresse de « %D», sera toujours «true »"
+msgstr "« %#T » utilisé où « %T » était attendu"
-#: cp/cvt.c:732
+#: cp/cvt.c:715
msgid "`%#T' used where a floating point value was expected"
-msgstr "«%#T» utilisé où un nombre flottant était attendu"
+msgstr "« %#T » utilisé où un nombre flottant était attendu"
-#: cp/cvt.c:779
+#: cp/cvt.c:762
msgid "conversion from `%T' to non-scalar type `%T' requested"
msgstr "conversion de « %T » vers un type non scalaire « %T » demandée"
-#: cp/cvt.c:865
+#: cp/cvt.c:850
msgid "object of incomplete type `%T' will not be accessed in %s"
msgstr "objet de type incomplet « %T » ne sera pas accessible dans %s"
-#: cp/cvt.c:868
+#: cp/cvt.c:853
msgid "object of type `%T' will not be accessed in %s"
msgstr "objet de type « %T » ne sera pas acccessible dans %s"
-#: cp/cvt.c:884
+#: cp/cvt.c:869
msgid "object `%E' of incomplete type `%T' will not be accessed in %s"
msgstr "objet « %E » d'un type incomplet « %T » ne sera pas accessible dans %s"
#. [over.over] enumerates the places where we can take the address
#. of an overloaded function, and this is not one of them.
-#: cp/cvt.c:904
+#: cp/cvt.c:885
#, c-format
msgid "%s cannot resolve address of overloaded function"
msgstr "%s ne peut résoudre l'adresse la fonction surchargée"
#. Only warn when there is no &.
-#: cp/cvt.c:909
+#: cp/cvt.c:891
#, c-format
msgid "%s is a reference, not call, to function `%E'"
msgstr "%s est un référence, pas un appel, à la fonction « %E »"
-#: cp/cvt.c:1039
+#: cp/cvt.c:898
+#, c-format
+msgid "%s has no effect"
+msgstr "%s n'a pas d'effet"
+
+#: cp/cvt.c:1009
msgid "converting NULL to non-pointer type"
msgstr "conversion d'un NULL vers un type non pointeur"
-#: cp/cvt.c:1115
+#: cp/cvt.c:1081
msgid "ambiguous default type conversion from `%T'"
msgstr "conversion de type par défaut ambiguë à partir de « %T »"
-#: cp/cvt.c:1117
+#: cp/cvt.c:1083
msgid " candidate conversions include `%D' and `%D'"
msgstr " conversions de candidat inclut « %D » et « %D »"
-#: cp/decl.c:736
-#, c-format
-msgid "push %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:770
-#, c-format
-msgid "pop %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:776 cp/decl.c:814
-msgid "XXX is_class_level != (current_binding_level == class_binding_level)\n"
-msgstr ""
-
-#: cp/decl.c:808
-#, c-format
-msgid "suspend %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:837
-#, c-format
-msgid "resume %s level %p line %d\n"
-msgstr ""
-
-#: cp/decl.c:1255 cp/decl.c:3490
-msgid "conflicts with previous declaration `%#D'"
-msgstr "conflits avec la déclaration précédente de «%#D»"
-
-#: cp/decl.c:1467
+#: cp/decl.c:374
msgid "label `%D' used but not defined"
msgstr "étiquette « %D » utilisée mais non définie"
-#: cp/decl.c:1472
+#: cp/decl.c:381
msgid "label `%D' defined but not used"
msgstr "étiquette « %D » définie mais non utilisée"
-#: cp/decl.c:2489
-msgid "namespace alias `%D' not allowed here, assuming `%D'"
-msgstr "alias d'espace de noms « %D » n'est pas permis ici, on assume « %D »"
+#: cp/decl.c:1133 cp/decl.c:1559
+msgid "previous declaration of `%D'"
+msgstr "déclaration précédente de « %D »"
-#: cp/decl.c:2825
-msgid "XXX entering pop_everything ()\n"
-msgstr ""
+#: cp/decl.c:1181
+msgid "%Jfunction '%D' redeclared as inline"
+msgstr "%Jfonction « %D » redéclarée comme étant enligne"
-#: cp/decl.c:2834
-msgid "XXX leaving pop_everything ()\n"
-msgstr ""
+#: cp/decl.c:1182
+msgid "%Jprevious declaration of '%D' with attribute noinline"
+msgstr "%Jdéclaration précédente de « %D » avec l'attribut non enligne"
-#: cp/decl.c:3285 cp/decl.c:3700
-msgid "previous declaration of `%D'"
-msgstr "déclaration précédente de « %D »"
+#: cp/decl.c:1189
+msgid "%Jfunction '%D' redeclared with attribute noinline"
+msgstr "%Jfonction « %D » redéclarée avec l'attribut non enligne"
-#: cp/decl.c:3366 cp/decl.c:3404
+#: cp/decl.c:1191
+msgid "%Jprevious declaration of '%D' was inline"
+msgstr "%Jdéclaration précédente de « %D » était enligne"
+
+#: cp/decl.c:1212 cp/decl.c:1250
msgid "shadowing %s function `%#D'"
-msgstr "%s masque la fonction «%#D»"
+msgstr "%s masque la fonction « %#D »"
-#: cp/decl.c:3375
+#: cp/decl.c:1221
msgid "library function `%#D' redeclared as non-function `%#D'"
-msgstr "fonction «%#D» de la bibliothèque redéclarée comme n'étant pas une fonction «%#D»"
+msgstr "fonction « %#D » de la bibliothèque redéclarée comme n'étant pas une fonction « %#D »"
-#: cp/decl.c:3380
+#: cp/decl.c:1226
msgid "conflicts with built-in declaration `%#D'"
-msgstr "conflits avec la déclaration interne de «%#D»"
+msgstr "conflits avec la déclaration interne de « %#D »"
-#: cp/decl.c:3399 cp/decl.c:3504 cp/decl.c:3520
+#: cp/decl.c:1245 cp/decl.c:1357 cp/decl.c:1373
msgid "new declaration `%#D'"
-msgstr "nouvelle déclaration de «%#D»"
+msgstr "nouvelle déclaration de « %#D »"
-#: cp/decl.c:3400
+#: cp/decl.c:1246
msgid "ambiguates built-in declaration `%#D'"
-msgstr "ambiguités de la déclaration interne de «%#D»"
+msgstr "ambiguités de la déclaration interne de « %#D »"
-#: cp/decl.c:3464
+#: cp/decl.c:1317
msgid "`%#D' redeclared as different kind of symbol"
msgstr "« %#D » redéclaré comme une sorte différente de symbole"
-#: cp/decl.c:3467
+#: cp/decl.c:1320
msgid "previous declaration of `%#D'"
-msgstr "déclaration précédente de «%#D»"
+msgstr "déclaration précédente de « %#D »"
-#: cp/decl.c:3489
+#: cp/decl.c:1342
msgid "declaration of template `%#D'"
-msgstr "déclaration du patron «%#D»"
+msgstr "déclaration du canevas « %#D »"
+
+#: cp/decl.c:1343 cp/name-lookup.c:496
+msgid "conflicts with previous declaration `%#D'"
+msgstr "conflits avec la déclaration précédente de « %#D »"
-#: cp/decl.c:3505 cp/decl.c:3521
+#: cp/decl.c:1358 cp/decl.c:1374
msgid "ambiguates old declaration `%#D'"
-msgstr "ambiguités d'une vieille déclaration de «%#D»"
+msgstr "ambiguités d'une vieille déclaration de « %#D »"
-#: cp/decl.c:3513
+#: cp/decl.c:1366
msgid "declaration of C function `%#D' conflicts with"
-msgstr "déclaration de la fonction C «%#D» en conflit avec"
+msgstr "déclaration de la fonction C « %#D » en conflit avec"
-#: cp/decl.c:3515
+#: cp/decl.c:1368
msgid "previous declaration `%#D' here"
-msgstr "déclaration précédente de «%#D» ici"
+msgstr "déclaration précédente de « %#D » ici"
-#: cp/decl.c:3533
-msgid "conflicting types for `%#D'"
-msgstr "types conflictuels pour «%#D'"
+#: cp/decl.c:1384
+msgid "conflicting declaration '%#D'"
+msgstr "déclaration conflictuelle « %#D »"
-#: cp/decl.c:3534
-msgid "previous declaration as `%#D'"
-msgstr "déclaration précédente de «%#D'"
+#: cp/decl.c:1385
+msgid "'%D' has a previous declaration as `%#D'"
+msgstr "« %D » a une déclaration précédente tel que « %#D »"
-#: cp/decl.c:3577
+#: cp/decl.c:1438
msgid "`%#D' previously defined here"
-msgstr "«%#D» précédemment défini ici"
+msgstr "« %#D » précédemment défini ici"
-#: cp/decl.c:3578
+#: cp/decl.c:1439
msgid "`%#D' previously declared here"
-msgstr "«%#D» précédemment déclaré ici"
+msgstr "« %#D » précédemment déclaré ici"
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:3587
+#: cp/decl.c:1448
msgid "prototype for `%#D'"
-msgstr "prototype de «%#D'"
+msgstr "prototype de « %#D »"
-#: cp/decl.c:3588
-msgid "follows non-prototype definition here"
-msgstr "suit la définition d'un non prototype ici"
+#: cp/decl.c:1449
+msgid "%Jfollows non-prototype definition here"
+msgstr "%Jsuit la définition d'un non prototype ici"
-#: cp/decl.c:3600
+#: cp/decl.c:1461
msgid "previous declaration of `%#D' with %L linkage"
-msgstr "déclaration précédente de «%#D» avec le lien %L"
+msgstr "déclaration précédente de « %#D » avec le lien %L"
-#: cp/decl.c:3602
+#: cp/decl.c:1463
msgid "conflicts with new declaration with %L linkage"
msgstr "conflits avec la nouvelle déclaration avec le lien %L"
-#: cp/decl.c:3625 cp/decl.c:3632
+#: cp/decl.c:1486 cp/decl.c:1493
msgid "default argument given for parameter %d of `%#D'"
-msgstr "argument par défaut donné pour le paramètre %d de «%#D»"
+msgstr "argument par défaut donné pour le paramètre %d de « %#D »"
-#: cp/decl.c:3627 cp/decl.c:3634
+#: cp/decl.c:1488 cp/decl.c:1495
msgid "after previous specification in `%#D'"
-msgstr "après la déclaration précédente dans «%#D»"
+msgstr "après la déclaration précédente dans « %#D »"
-#: cp/decl.c:3643
+#: cp/decl.c:1504
msgid "`%#D' was used before it was declared inline"
-msgstr "«%#D» a été utilisé avant qu'il ne soit déclaré en ligne"
+msgstr "« %#D » a été utilisé avant qu'il ne soit déclaré enligne"
-#: cp/decl.c:3645
-msgid "previous non-inline declaration here"
-msgstr "déclaration précédente non en ligne ici"
+#: cp/decl.c:1505
+msgid "%Jprevious non-inline declaration here"
+msgstr "%Jdéclaration précédente non enligne ici"
-#: cp/decl.c:3699
+#: cp/decl.c:1558
msgid "redundant redeclaration of `%D' in same scope"
msgstr "déclaration redondante de « %D » dans la même étendue"
-#: cp/decl.c:3780
+#: cp/decl.c:1649
#, c-format
msgid "declaration of `%F' throws different exceptions"
msgstr "déclaration de « %F » amène différentes exceptions"
-#: cp/decl.c:3782
+#: cp/decl.c:1651
#, c-format
msgid "than previous declaration `%F'"
msgstr "qu'une précédente déclaratio « %F »"
@@ -14736,621 +13787,492 @@ msgstr "qu'une précédente déclaratio « %F »"
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
-#: cp/decl.c:3922
+#: cp/decl.c:1798
msgid "explicit specialization of %D after first use"
msgstr "spécialisation explicite de %D après la première utilisation"
-#: cp/decl.c:4187
-msgid "`%#D' used prior to declaration"
-msgstr "«%#D» utilisé précédemment avant sa déclaration"
+#: cp/decl.c:1880
+msgid "%J'%D': visibility attribute ignored because it"
+msgstr "%J« %D »: attribut de visibilité ignoré en cause de lui"
-#: cp/decl.c:4218
-msgid "redeclaration of `wchar_t' as `%T'"
-msgstr "redéclaration de « wchar_t» comme «%T »"
+#: cp/decl.c:1882
+msgid "%Jconflicts with previous declaration here"
+msgstr "%Jentre en conflit avec la déclaration précédente ici"
-#. A redeclaration of main, but not a duplicate of the
-#. previous one.
-#.
-#. [basic.start.main]
-#.
-#. This function shall not be overloaded.
-#: cp/decl.c:4246
-msgid "invalid redeclaration of `%D'"
-msgstr "redéclaration invalide de « %D »"
-
-#: cp/decl.c:4247
-msgid "as `%D'"
-msgstr "comme « %D »"
-
-#: cp/decl.c:4337
-msgid "previous external decl of `%#D'"
-msgstr "déclaration externe précédente de « %#D »"
-
-#: cp/decl.c:4378
-msgid "`%D' was previously implicitly declared to return `int'"
-msgstr "« %D » a été précédemment implicitement déclaré comme retournant un entier"
-
-#: cp/decl.c:4438
-msgid "extern declaration of `%#D' doesn't match"
-msgstr "déclaration externe de «%#D» ne concorde pas"
-
-#: cp/decl.c:4439
-msgid "global declaration `%#D'"
-msgstr "déclaration globale «%#D»"
-
-#: cp/decl.c:4472
-msgid "declaration of `%#D' shadows a parameter"
-msgstr "déclaration de «%#D» masque un paramètre"
-
-#: cp/decl.c:4492
-#, c-format
-msgid "declaration of `%s' shadows a member of `this'"
-msgstr "déclaration de « %s » masque un membre de « this »"
-
-#: cp/decl.c:4889
-msgid "`%#D' hides constructor for `%#T'"
-msgstr "«%#D» cache un constructeur pour «%#T»"
-
-#: cp/decl.c:4904
-msgid "`%#D' conflicts with previous using declaration `%#D'"
-msgstr "«%#D» en conflit avec une déclaration précédente «%#D»"
-
-#: cp/decl.c:4916
-msgid "previous non-function declaration `%#D'"
-msgstr "déclaration précédente d'un non fonction «%#D»"
-
-#: cp/decl.c:4917
-msgid "conflicts with function declaration `%#D'"
-msgstr "conflits avec la déclaration de fonction de «%#D»"
-
-#: cp/decl.c:5007
+#: cp/decl.c:1976
msgid "implicit declaration of function `%#D'"
-msgstr "déclaration implicite de la fonction «%#D»"
+msgstr "déclaration implicite de la fonction « %#D »"
-#: cp/decl.c:5167
+#: cp/decl.c:2124
#, c-format
msgid "label `%s' referenced outside of any function"
msgstr "étiquette « %s » référencée à l'extérieur de n'importe quelle fonction"
-#: cp/decl.c:5270 cp/decl.c:5294 cp/decl.c:5387
+#: cp/decl.c:2221 cp/decl.c:2245 cp/decl.c:2333
msgid "jump to label `%D'"
msgstr "saut à l'étiquette « %D »"
-#: cp/decl.c:5272 cp/decl.c:5296
+#: cp/decl.c:2223 cp/decl.c:2247
msgid "jump to case label"
msgstr "saut à l'étiquette du « case »"
-#: cp/decl.c:5280
+#: cp/decl.c:2226 cp/decl.c:2250
+msgid "%H from here"
+msgstr "%H à partir d'ici"
+
+#: cp/decl.c:2231
msgid " crosses initialization of `%#D'"
-msgstr " initialisation croisée pour «%#D»"
+msgstr " initialisation croisée pour « %#D »"
-#: cp/decl.c:5283 cp/decl.c:5403
+#: cp/decl.c:2234 cp/decl.c:2349
msgid " enters scope of non-POD `%#D'"
-msgstr " entre dans la porté d'un non POD «%#D»"
+msgstr " entre dans la porté d'un non POD « %#D »"
-#: cp/decl.c:5303 cp/decl.c:5407
+#: cp/decl.c:2254 cp/decl.c:2353
msgid " enters try block"
msgstr " entre dans le bloc d'essais"
-#. Can't skip init of __exception_info.
-#: cp/decl.c:5305 cp/decl.c:5399 cp/decl.c:5409
+#: cp/decl.c:2256 cp/decl.c:2355
msgid " enters catch block"
msgstr " entre dans le bloc d'interceptions"
-#: cp/decl.c:5388
+#: cp/decl.c:2334
msgid " from here"
msgstr " à partir d'ici"
-#: cp/decl.c:5401
+#. Can't skip init of __exception_info.
+#: cp/decl.c:2345
+msgid "%J enters catch block"
+msgstr "%J entre dans le bloc d'interception"
+
+#: cp/decl.c:2347
msgid " skips initialization of `%#D'"
-msgstr " saut d'initialisation pour «%#D»"
+msgstr " saut d'initialisation pour « %#D »"
-#: cp/decl.c:5437
+#: cp/decl.c:2381
msgid "label named wchar_t"
msgstr "étiquette nommée wchar_t"
-#: cp/decl.c:5440
+#: cp/decl.c:2384
msgid "duplicate label `%D'"
msgstr "étiquette « %D » apparaît en double"
-#: cp/decl.c:5525
-#, c-format
-msgid "case label `%E' not within a switch statement"
-msgstr "étiquette du CASE « %E » n'est pas à l'intérieur de la déclaration du SWITCH"
-
-#. Definition isn't the kind we were looking for.
-#: cp/decl.c:5704 cp/decl.c:5723
-msgid "`%#D' redeclared as %C"
-msgstr "«%#D» rédéclaré comme %C"
-
-#. This happens for A::B where B is a template, and there are no
-#. template arguments.
-#: cp/decl.c:5811 cp/typeck.c:2069 cp/typeck.c:2229
-msgid "invalid use of `%D'"
-msgstr "utilisation invalide de « %D »"
-
-#: cp/decl.c:5852
-msgid "`%D::%D' is not a template"
-msgstr "«%D::%D» n'est pas un patron"
-
-#: cp/decl.c:5869
-msgid "`%D' undeclared in namespace `%D'"
-msgstr "« %D » non déclaré dans l'espace de noms « %D »"
-
-#: cp/decl.c:6002
+#: cp/decl.c:2612 cp/parser.c:3178
msgid "`%D' used without template parameters"
-msgstr "« %D » utilisé sans patron de paramétres"
+msgstr "« %D » utilisé sans canevas de paramétres"
-#: cp/decl.c:6013 cp/decl.c:6029 cp/decl.c:6139
+#: cp/decl.c:2622 cp/decl.c:2638 cp/decl.c:2726
msgid "no class template named `%#T' in `%#T'"
-msgstr "pas de patron de classe nommé «%#T» in «%#T»"
+msgstr "pas de canevas de classe nommé « %#T » in « %#T »"
-#: cp/decl.c:6055 cp/decl.c:6065 cp/decl.c:6100
+#: cp/decl.c:2659 cp/decl.c:2669 cp/decl.c:2689
msgid "no type named `%#T' in `%#T'"
-msgstr "pas de type nommé dans «%#T» dans «%#T»"
-
-#: cp/decl.c:6329
-msgid "lookup of `%D' finds `%#D'"
-msgstr "recherche de « %D » a repéré «%#D»"
+msgstr "pas de type nommé dans « %#T » dans « %#T »"
-#: cp/decl.c:6331
-msgid " instead of `%D' from dependent base class"
-msgstr " au lieu de « %D » à partir d'un classe de base dépendante"
+#: cp/decl.c:3416
+msgid "%Jan anonymous union cannot have function members"
+msgstr "%Jun UNION anonyme ne peut avoir de fonctions membres"
-#: cp/decl.c:6333
-msgid " (use `typename %T::%D' if that's what you meant)"
-msgstr " (utiliser « typename %T::%D » si c'est ce que vous voulez dire)"
-
-#: cp/decl.c:6364
-#, fuzzy
-msgid "name lookup of `%D' changed"
-msgstr "recherche du nom « %s » a changé"
-
-#: cp/decl.c:6366
-msgid " matches this `%D' under ISO standard rules"
-msgstr " concorde avec « %D » selon les règles standards ISO"
-
-#: cp/decl.c:6368
-msgid " matches this `%D' under old rules"
-msgstr " concorde avec « %D » selon les vieilles règles"
-
-#: cp/decl.c:6382 cp/decl.c:6389
-#, fuzzy
-msgid "name lookup of `%D' changed for new ISO `for' scoping"
-msgstr "recherche du nom « %s » changé pour le nouveau ISO «for » d'étendue de champ"
-
-#: cp/decl.c:6384
-msgid " cannot use obsolete binding at `%D' because it has a destructor"
-msgstr " ne peut utiliser une liaison obsolète à « %D » parce qu'il a un destructeur"
-
-#: cp/decl.c:6391
-msgid " using obsolete binding at `%D'"
-msgstr " utilisation de liaison obsolète à « %D »"
-
-#: cp/decl.c:6609
-msgid "lookup of `%D' in the scope of `%#T' (`%#D') does not match lookup in the current scope (`%#D')"
-msgstr "recherche de « %D » dans la portée de «%#T» («%#D») ne concorde pas avec la recherche dans la portée courante («%#D»)"
-
-#: cp/decl.c:7432
-msgid "an anonymous union cannot have function members"
-msgstr "un UNION anonyme ne peut avoir de fonction membre"
-
-#: cp/decl.c:7449
+#: cp/decl.c:3434
msgid "member %#D' with constructor not allowed in anonymous aggregate"
-msgstr "membre «%#D» avec constructeur n'est pas permis dans un aggrégat anonyme"
+msgstr "membre « %#D » avec constructeur n'est pas permis dans un aggrégat anonyme"
-#: cp/decl.c:7452
+#: cp/decl.c:3437
msgid "member %#D' with destructor not allowed in anonymous aggregate"
-msgstr "membre «%#D» avec destructeur n'est pas permis dans un aggrégat anonyme"
+msgstr "membre « %#D » avec destructeur n'est pas permis dans un aggrégat anonyme"
-#: cp/decl.c:7455
+#: cp/decl.c:3440
msgid "member %#D' with copy assignment operator not allowed in anonymous aggregate"
-msgstr "membre «%#D» avec opérateur d'affectation par copie n'est pas permis dans un aggrégat anonyme"
+msgstr "membre « %#D » avec opérateur d'affectation par copie n'est pas permis dans un aggrégat anonyme"
-#: cp/decl.c:7493
+#: cp/decl.c:3480
msgid "redeclaration of C++ built-in type `%T'"
msgstr "redéclaration du type interne C++ « %T »"
-#: cp/decl.c:7529
+#: cp/decl.c:3518
msgid "multiple types in one declaration"
msgstr "types multiples dans une déclaration"
-#: cp/decl.c:7556
+#: cp/decl.c:3544
msgid "missing type-name in typedef-declaration"
msgstr "nom de type manquant dans la déclaration typedef"
-#: cp/decl.c:7563
+#: cp/decl.c:3552
msgid "ISO C++ prohibits anonymous structs"
-msgstr "le C++ ISO interdit les structures anonymes"
+msgstr "ISO C++ interdit les structures anonymes"
-#: cp/decl.c:7570
+#: cp/decl.c:3559
msgid "`%D' can only be specified for functions"
msgstr "« %D » ne peut seulement être spécifier pour les fonctions"
-#: cp/decl.c:7572
+#: cp/decl.c:3561
msgid "`%D' can only be specified inside a class"
msgstr "« %D » peut seulement être spécifié à l'intérieur d'une classe"
-#: cp/decl.c:7574
+#: cp/decl.c:3563
msgid "`%D' can only be specified for constructors"
msgstr "« %D » ne peut seulement être spécifié pour les constructeurs"
-#: cp/decl.c:7577
+#: cp/decl.c:3566
msgid "`%D' can only be specified for objects and functions"
msgstr "« %D » ne peut seulement être spécifié pour les objets et les fonctions"
-#: cp/decl.c:7719 cp/decl2.c:936
-#, fuzzy
+#: cp/decl.c:3708 cp/decl2.c:861
msgid "typedef `%D' is initialized (use __typeof__ instead)"
-msgstr "typedef « %D » est initialisé"
+msgstr "typedef « %D » est initialisé (use __typeof__ instead)"
-#: cp/decl.c:7724
+#: cp/decl.c:3713
msgid "function `%#D' is initialized like a variable"
msgstr "fonction « %#D » est initialisée comme une variable"
-#: cp/decl.c:7736
+#: cp/decl.c:3725
msgid "declaration of `%#D' has `extern' and is initialized"
-msgstr "déclaration de «%#D» est externe et initialisé"
+msgstr "déclaration de « %#D » est externe et initialisé"
-#: cp/decl.c:7770
+#: cp/decl.c:3758
msgid "`%#D' is not a static member of `%#T'"
-msgstr "«%#D» n'est pas un membre statique de «%#T»"
+msgstr "« %#D » n'est pas un membre statique de « %#T »"
-#: cp/decl.c:7775
+#: cp/decl.c:3764
msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
-msgstr "le C++ ISO ne permet pas que « %T::%D » soit défini comme « %T::%D »"
+msgstr "ISO C++ ne permet pas que « %T::%D » soit défini comme « %T::%D »"
-#: cp/decl.c:7786
+#: cp/decl.c:3775
msgid "duplicate initialization of %D"
msgstr "initialisation en double de %D"
-#: cp/decl.c:7815
+#: cp/decl.c:3806
msgid "declaration of `%#D' outside of class is not definition"
msgstr "déclaraion de « %#D » en dehors de la classe n'est pas une définition"
-#: cp/decl.c:7865
+#: cp/decl.c:3857
msgid "variable `%#D' has initializer but incomplete type"
msgstr "la variable « %#D » est initialisée, mais a un type incomplet"
-#: cp/decl.c:7873 cp/decl.c:8432
+#: cp/decl.c:3865 cp/decl.c:4426
msgid "elements of array `%#D' have incomplete type"
msgstr "éléments du tableau « %#D » ont un type incomplet"
-#: cp/decl.c:7889
+#: cp/decl.c:3881
msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgstr "aggrégat « %#D » a un type incomplet et ne peut être défini"
-#: cp/decl.c:7931
+#: cp/decl.c:3923
msgid "`%D' declared as reference but not initialized"
msgstr "« %D » déclaré comme référence mais n'est pas initialisé"
-#: cp/decl.c:7940
+#: cp/decl.c:3929
msgid "ISO C++ forbids use of initializer list to initialize reference `%D'"
-msgstr "le C++ ISO interdit l'usage de liste d'initialiseur pour initialiser la référence « %D »"
+msgstr "ISO C++ interdit l'usage de liste d'initialiseur pour initialiser la référence « %D »"
-#: cp/decl.c:7970
+#: cp/decl.c:3957
msgid "cannot initialize `%T' from `%T'"
msgstr "ne peut initialiser « %T » à partir de « %T »"
-#: cp/decl.c:8004
+#: cp/decl.c:3989
msgid "initializer fails to determine size of `%D'"
msgstr "l'initialisation n'a pu déterminer la taille de « %D »"
-#: cp/decl.c:8009
+#: cp/decl.c:3994
msgid "array size missing in `%D'"
msgstr "taille de tableau manquante dans « %D »"
-#: cp/decl.c:8021
+#: cp/decl.c:4006
msgid "zero-size array `%D'"
msgstr "tableau « %D » de taille zéro"
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:8059
+#: cp/decl.c:4043
msgid "storage size of `%D' isn't known"
msgstr "taille de stockage de « %D » n'est pas connue"
-#: cp/decl.c:8081
+#: cp/decl.c:4065
msgid "storage size of `%D' isn't constant"
msgstr "taille de stockage de « %D » n'est pas une constante"
-#: cp/decl.c:8137
+#: cp/decl.c:4120
msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
-msgstr "désolé: sémantique de fonction en ligne de données statiques «%#D» est erronée (vous obtiendrez de multiples copies)"
+msgstr "désolé: sémantique de fonction enligne de données statiques « %#D » est erronée (vous obtiendrez de multiples copies)"
-#: cp/decl.c:8138
-msgid " you can work around this by removing the initializer"
-msgstr " vous pouvez contourner cela en enlevant l'initialisation"
+#: cp/decl.c:4121
+msgid "%J you can work around this by removing the initializer"
+msgstr "%J vous pouvez contourner cela en enlevant l'initialiseur"
-#: cp/decl.c:8164
+#: cp/decl.c:4147
msgid "uninitialized const `%D'"
msgstr "constante « %D » non initialisée"
-#: cp/decl.c:8249
-#, fuzzy
+#: cp/decl.c:4226
msgid "brace-enclosed initializer used to initialize `%T'"
-msgstr "classe de base d'initialisation spécifié, mais aucune classe de base à initialiser"
+msgstr "initialiseur utilisé entre accolades pour initialiser « %T »"
-#: cp/decl.c:8313
+#: cp/decl.c:4290
msgid "initializer for `%T' must be brace-enclosed"
-msgstr "l'initialisation de « %T » doit être entre acolades"
+msgstr "initialiseur de « %T » doit être entre accolades"
-#: cp/decl.c:8328
-#, fuzzy
+#: cp/decl.c:4307
msgid "ISO C++ does not allow designated initializers"
-msgstr "le C++ ISO ne permet pas les valeurs retournées nommées"
+msgstr "ISO C++ ne permet de désigner les initialiseurs"
-#: cp/decl.c:8332
-#, fuzzy
+#: cp/decl.c:4311
msgid "`%T' has no non-static data member named `%D'"
-msgstr "«%#T» n'a pas de membre nommé « %D »"
+msgstr "« %T » n'a pas de membre de données non statique nommé « %D »"
+
+#: cp/decl.c:4359
+msgid "name `%D' used in a GNU-style designated initializer for an array"
+msgstr "nom « %D » utilisé dans un style GNU de l'initialisateur désigné pour un tableau"
-#: cp/decl.c:8389
-#, fuzzy
+#: cp/decl.c:4382
msgid "too many initializers for `%T'"
msgstr "trop d'initialiseurs pour « %T »"
-#: cp/decl.c:8426
+#: cp/decl.c:4420
msgid "variable-sized object `%D' may not be initialized"
msgstr "objet de taille variable « %D » peut ne pas être initialisé"
-#: cp/decl.c:8437
+#: cp/decl.c:4431
msgid "`%D' has incomplete type"
msgstr "« %D » a un type incomplet"
-#: cp/decl.c:8486
+#: cp/decl.c:4486
msgid "`%D' must be initialized by constructor, not by `{...}'"
msgstr "« %D » doit être initialisé par un constructeur, non pas par « {...} »"
-#: cp/decl.c:8527
+#: cp/decl.c:4530
msgid "structure `%D' with uninitialized const members"
msgstr "structure « %D » avec constantes non initialisées de membres"
-#: cp/decl.c:8529
+#: cp/decl.c:4532
msgid "structure `%D' with uninitialized reference members"
msgstr "structure « %D » avec références non initialisées de membres"
-#: cp/decl.c:8770
+#: cp/decl.c:4713
msgid "assignment (not initialization) in declaration"
msgstr "affectation (non pas l'initialisation) dans la déclaration"
-#: cp/decl.c:8785
+#: cp/decl.c:4730
msgid "cannot initialize `%D' to namespace `%D'"
msgstr "ne peut initialiser « %D » à l'espace de noms « %D »"
-#: cp/decl.c:8836
+#: cp/decl.c:4780
msgid "shadowing previous type declaration of `%#D'"
-msgstr "masque la déclaration précédente de «%#D»"
+msgstr "masque la déclaration précédente de « %#D »"
-#: cp/decl.c:8883
-#, fuzzy
+#: cp/decl.c:4816
msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
-msgstr "« %E » ne peut être utilisé comme pointeur de membre, alors qu'il est de type « %T »"
+msgstr "« %D » ne peut être utilisé comme un thread local parce qu'il a un non POD de type « %T »"
-#: cp/decl.c:8898
-#, fuzzy
+#: cp/decl.c:4831
msgid "`%D' is thread-local and so cannot be dynamically initialized"
-msgstr "aggrégat « %T » sans mambre nommé ne peut être initialisé"
-
-#: cp/decl.c:9298 cp/init.c:562
-msgid "multiple initializations given for `%D'"
-msgstr "multiples initialisations données pour « %D »"
+msgstr "« %D » est un thread local et ne peut donc pas être initialisé dynamiquement"
-#: cp/decl.c:9390
+#: cp/decl.c:5313
msgid "invalid catch parameter"
msgstr "paramètre d'interception invalide"
-#: cp/decl.c:9508
+#: cp/decl.c:5427
msgid "destructor for alien class `%T' cannot be a member"
msgstr "destructeur pour la classe étrangère « %T » ne peut être un membre"
-#: cp/decl.c:9511
+#: cp/decl.c:5430
msgid "constructor for alien class `%T' cannot be a member"
msgstr "constructeur pour la classe étrangère « %T » ne peut être un membre"
-#: cp/decl.c:9530
+#: cp/decl.c:5452
msgid "`%D' declared as a `virtual' %s"
msgstr "« %D» déclaré comme « virtual » %s"
-#: cp/decl.c:9532
+#: cp/decl.c:5454
msgid "`%D' declared as an `inline' %s"
msgstr "« %D» déclaré comme « inline » %s"
-#: cp/decl.c:9534
+#: cp/decl.c:5456
msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
-msgstr "spécificateurs de fonction « const» et «volatile» invalide pour «%D » dans la déclaration %s"
+msgstr "spécificateurs de fonction « const» et «volatile» invalide pour « %D » dans la déclaration %s"
-#: cp/decl.c:9537
+#: cp/decl.c:5459
msgid "`%D' declared as a friend"
msgstr "« %D » déclaré comme un ami"
-#: cp/decl.c:9543
+#: cp/decl.c:5465
msgid "`%D' declared with an exception specification"
msgstr "« %D » déclaré avec une exception de spécification"
-#: cp/decl.c:9618
+#: cp/decl.c:5544
msgid "cannot declare `::main' to be a template"
-msgstr "ne peut déclarer « ::main » comme étant un patron"
+msgstr "ne peut déclarer « ::main » comme étant un canevas"
-#: cp/decl.c:9620
+#: cp/decl.c:5546
msgid "cannot declare `::main' to be inline"
-msgstr "ne peut déclarer «::main» à être en ligne"
+msgstr "ne peut déclarer «::main» à être enligne"
-#: cp/decl.c:9622
+#: cp/decl.c:5548
msgid "cannot declare `::main' to be static"
msgstr "ne peut déclarer « ::main » comme étant static"
-#: cp/decl.c:9625
+#: cp/decl.c:5551
msgid "`main' must return `int'"
msgstr "« main» doit retourner « int »"
-#: cp/decl.c:9653
+#: cp/decl.c:5579
msgid "non-local function `%#D' uses anonymous type"
-msgstr "fonction non locale «%#D» utilise un type anonyme"
+msgstr "fonction non locale « %#D » utilise un type anonyme"
-#: cp/decl.c:9656
+#: cp/decl.c:5582
msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
-msgstr "«%#D» ne réfère pas à un type non qualifié, aussi il n'est pas utilisé pour la liaison"
+msgstr "« %#D » ne réfère pas à un type non qualifié, aussi il n'est pas utilisé pour la liaison"
-#: cp/decl.c:9662
+#: cp/decl.c:5588
msgid "non-local function `%#D' uses local type `%T'"
-msgstr "fonction non locale «%#D» utilise un type local « %T »"
+msgstr "fonction non locale « %#D » utilise un type local « %T »"
-#: cp/decl.c:9691
+#: cp/decl.c:5612
msgid "%smember function `%D' cannot have `%T' method qualifier"
msgstr "%sfonction membre « %D » ne peut avoir « %T » comme qualificateur de méthode"
-#: cp/decl.c:9715
+#: cp/decl.c:5636
msgid "defining explicit specialization `%D' in friend declaration"
msgstr "définition explicite de spécialisation « %D » dans lka déclaration ami"
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:9725
+#: cp/decl.c:5646
msgid "invalid use of template-id `%D' in declaration of primary template"
-msgstr "utilisation invalide du template-id « %D » dans la déclaration du patron primaire"
+msgstr "utilisation invalide du template-id « %D » dans la déclaration du canevas primaire"
-#: cp/decl.c:9753
+#: cp/decl.c:5673
msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
-msgstr "arguments par défaut ne sont pas permis dans la déclaration amie de la spécialisation du patron « %D »"
+msgstr "arguments par défaut ne sont pas permis dans la déclaration amie de la spécialisation du canevas « %D »"
-#: cp/decl.c:9760
+#: cp/decl.c:5680
msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
-msgstr "« inline» n'estpas permis dans la déclaration amie de la spécialisation du patron «%D »"
+msgstr "« inline» n'estpas permis dans la déclaration amie de la spécialisation du canevas « %D »"
-#: cp/decl.c:9822
+#: cp/decl.c:5741
msgid "definition of implicitly-declared `%D'"
msgstr "définition implicitement déclarée « %D »"
-#: cp/decl.c:9834 cp/decl2.c:785
+#: cp/decl.c:5759 cp/decl2.c:744
msgid "no `%#D' member function declared in class `%T'"
msgstr "pas de fonction membre « %#D » déclarée dans la classe « %T »"
-#: cp/decl.c:9967
+#: cp/decl.c:5893
msgid "non-local variable `%#D' uses local type `%T'"
-msgstr "variable non locale «%#D» utilise un type local « %T »"
+msgstr "variable non locale « %#D » utilise un type local « %T »"
-#: cp/decl.c:10064
+#: cp/decl.c:6008
msgid "invalid in-class initialization of static data member of non-integral type `%T'"
msgstr "initialisation invalide dans la class de données de membre statiques d'un non entier de type « %T »"
-#: cp/decl.c:10073
+#: cp/decl.c:6017
msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
-msgstr "le C++ ISO interdit l'initialisation intra-classe d'un membre statique non constant « %D »"
+msgstr "ISO C++ interdit l'initialisation intra-classe d'un membre statique non constant « %D »"
-#: cp/decl.c:10076
+#: cp/decl.c:6020
msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
-msgstr "le C++ ISO interdit l'initialisation d'une membre constant « %D » d'un type non entier « %T »"
+msgstr "ISO C++ interdit l'initialisation d'une membre constant « %D » d'un type non entier « %T »"
-#: cp/decl.c:10126
-msgid "size of array `%D' has non-integer type"
-msgstr "taille du tableau « %D » n'est pas de type entier"
+#: cp/decl.c:6039
+msgid "size of array `%D' has non-integral type `%T'"
+msgstr "taille du tableau « %D » n'est pas de type entier « %T »"
-#: cp/decl.c:10128
-msgid "size of array has non-integer type"
-msgstr "taille du tableau a type non entier"
+#: cp/decl.c:6041
+msgid "size of array has non-integral type `%T'"
+msgstr "taille du tableau a type non entier « %T »"
-#: cp/decl.c:10148
+#: cp/decl.c:6077
msgid "size of array `%D' is negative"
msgstr "taille du tableau « %D » est négative"
-#: cp/decl.c:10150
+#: cp/decl.c:6079
msgid "size of array is negative"
msgstr "taille du tableau est négative"
-#: cp/decl.c:10159
+#: cp/decl.c:6087
msgid "ISO C++ forbids zero-size array `%D'"
-msgstr "le C++ ISO interdit les tableaux de taille zéro « %D »"
+msgstr "ISO C++ interdit les tableaux de taille zéro « %D »"
-#: cp/decl.c:10161
+#: cp/decl.c:6089
msgid "ISO C++ forbids zero-size array"
-msgstr "le C++ ISO interdit les tableaux de taille zéro"
+msgstr "ISO C++ interdit les tableaux de taille zéro"
-#: cp/decl.c:10168
+#: cp/decl.c:6096
msgid "size of array `%D' is not an integral constant-expression"
msgstr "taille du tableau « %D » n'a pas une expression de constante de type entier"
-#: cp/decl.c:10171
+#: cp/decl.c:6099
msgid "size of array is not an integral constant-expression"
msgstr "taille du tableau n'est pas une expression de constante de type entier"
-#: cp/decl.c:10189
+#: cp/decl.c:6104
msgid "ISO C++ forbids variable-size array `%D'"
-msgstr "le C++ ISO interdit les tableaus de taille variable « %D »"
+msgstr "ISO C++ interdit les tableaus de taille variable « %D »"
-#: cp/decl.c:10192
+#: cp/decl.c:6106
msgid "ISO C++ forbids variable-size array"
-msgstr "le C++ ISO interdit le tableau de taille variable"
+msgstr "ISO C++ interdit le tableau de taille variable"
-#: cp/decl.c:10203
+#: cp/decl.c:6128
msgid "overflow in array dimension"
msgstr "débordement dans les dimensions du tableau"
-#: cp/decl.c:10262
+#: cp/decl.c:6222
msgid "declaration of `%D' as %s"
msgstr "déclaration de « %D » comme « %s »"
-#: cp/decl.c:10264
+#: cp/decl.c:6224
#, c-format
msgid "creating %s"
msgstr "création de %s"
-#: cp/decl.c:10276
+#: cp/decl.c:6236
msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
msgstr "déclaration de « %D » comme tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première"
-#: cp/decl.c:10279
+#: cp/decl.c:6239
msgid "multidimensional array must have bounds for all dimensions except the first"
msgstr "tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première"
-#: cp/decl.c:10308
+#: cp/decl.c:6267
msgid "return type specification for constructor invalid"
msgstr "spécification de type retourné pour un constructeur est invalide"
-#: cp/decl.c:10315
+#: cp/decl.c:6274
msgid "return type specification for destructor invalid"
msgstr "spécification de type retourné pour un destructeur est invalide"
-#: cp/decl.c:10321
+#: cp/decl.c:6280
msgid "operator `%T' declared to return `%T'"
msgstr "opérateur « %T » déclaré comme retournant « %T »"
-#: cp/decl.c:10323
+#: cp/decl.c:6282
msgid "return type specified for `operator %T'"
msgstr "type spécifié retourné pour l'opérateur « %T »"
-#: cp/decl.c:10491
+#: cp/decl.c:6425
msgid "destructors must be member functions"
msgstr "les destructeurs doivent être des fonctions membres"
-#: cp/decl.c:10510
+#: cp/decl.c:6444
msgid "destructor `%T' must match class name `%T'"
msgstr "destructeur « %T » doit concorder avec le nom de la classe « %T »"
-#: cp/decl.c:10539
-#, fuzzy
-msgid "variable declaration is not allowed here"
-msgstr "initialisation n'est pas permise dans un module SPEC"
-
-#: cp/decl.c:10566
-msgid "invalid declarator"
-msgstr "déclarateur invalide"
-
-#: cp/decl.c:10617
+#: cp/decl.c:6507
msgid "declarator-id missing; using reserved word `%D'"
msgstr "declarator-id manquant; utilisation du mot réservé « %D »"
-#: cp/decl.c:10674
+#: cp/decl.c:6561
msgid "type `%T' is not derived from type `%T'"
msgstr "type « %T » n'est pas dérivé du type « %T »"
#. Parse error puts this typespec where
#. a declarator should go.
-#: cp/decl.c:10726
+#: cp/decl.c:6624
msgid "`%T' specified as declarator-id"
msgstr "« %T » spécifié comme declarator-id"
-#: cp/decl.c:10728
+#: cp/decl.c:6626
msgid " perhaps you want `%T' for a constructor"
msgstr " peut-être que vous voulez « %T » comme constructeur"
@@ -15358,305 +14280,300 @@ msgstr " peut-être que vous voulez « %T » comme constructeur"
#. decl-specifier like in
#. std::allocator alloc;
#. Handle that gracefully.
-#: cp/decl.c:10750
-#, fuzzy, c-format
+#: cp/decl.c:6648
+#, c-format
msgid "invalid use of template-name '%E' in a declarator"
-msgstr "utilisation invalide du template-id « %D » dans la déclaration du patron primaire"
+msgstr "utilisation invalide du template-name « %E » dans le déclarateur"
-#: cp/decl.c:10770
+#: cp/decl.c:6668
msgid "declaration of `%D' as non-function"
msgstr "déclaration de « %D » comme non-fonction"
-#: cp/decl.c:10847
+#: cp/decl.c:6745
msgid "`bool' is now a keyword"
msgstr "« bool » est maintenant un mot clé"
-#: cp/decl.c:10849
+#: cp/decl.c:6747
msgid "extraneous `%T' ignored"
msgstr "« %T » surperflu ignoré"
-#: cp/decl.c:10865 cp/decl.c:10910
+#: cp/decl.c:6763 cp/decl.c:6807
msgid "multiple declarations `%T' and `%T'"
msgstr "multiples déclarations « %T » et « %T »"
-#: cp/decl.c:10878
+#: cp/decl.c:6776
msgid "ISO C++ does not support `long long'"
-msgstr "le C++ ISO ne permet pas « long long »"
+msgstr "ISO C++ ne permet pas « long long »"
-#: cp/decl.c:10983 cp/decl.c:10986
+#: cp/decl.c:6880 cp/decl.c:6883
#, c-format
msgid "ISO C++ forbids declaration of `%s' with no type"
-msgstr "le C++ ISO interdit la déclaration de « %s » sans type"
+msgstr "ISO C++ interdit la déclaration de « %s » sans type"
-#. The implicit typename extension is deprecated and will be
-#. removed. Warn about its use now.
-#: cp/decl.c:10996
-msgid "`%T' is implicitly a typename"
-msgstr "« %T » est implicitement un typename"
-
-#: cp/decl.c:11032
+#: cp/decl.c:6914
#, c-format
msgid "short, signed or unsigned invalid for `%s'"
msgstr "short, signed ou unsigned est invalide pour « %s »"
-#: cp/decl.c:11037
+#: cp/decl.c:6919
#, c-format
msgid "long and short specified together for `%s'"
msgstr "long et short spécifiés ensembles pour « %s »"
-#: cp/decl.c:11048
+#: cp/decl.c:6930
#, c-format
msgid "signed and unsigned given together for `%s'"
msgstr "signed et unsigned donnés ensembles pour « %s »"
-#: cp/decl.c:11157
+#: cp/decl.c:7039
msgid "qualifiers are not allowed on declaration of `operator %T'"
msgstr "qualificateurs ne sont pas permis dans la déclaration de « operator %T »"
-#: cp/decl.c:11179
+#: cp/decl.c:7061
msgid "member `%D' cannot be declared both virtual and static"
msgstr "membre « %D » ne peut être déclaré virtuel et statique"
-#: cp/decl.c:11188
+#: cp/decl.c:7070
msgid "`%T::%D' is not a valid declarator"
-msgstr "«%T::%D» n'est pas un déclarateur valide"
+msgstr "« %T::%D » n'est pas un déclarateur valide"
-#: cp/decl.c:11200
+#: cp/decl.c:7082
msgid "storage class specifiers invalid in parameter declarations"
msgstr "spécificateurs de classe de stockage invalides dans la déclaration des paramètres"
-#: cp/decl.c:11204
+#: cp/decl.c:7086
msgid "typedef declaration invalid in parameter declaration"
msgstr "déclaration typedef invalide dans le paramètre de la déclaration"
-#: cp/decl.c:11217
+#: cp/decl.c:7099
msgid "virtual outside class declaration"
msgstr "virtuel en dehors de la déclaration de classe"
-#: cp/decl.c:11278
+#: cp/decl.c:7158
#, c-format
msgid "storage class specified for %s `%s'"
msgstr "classe de stockage spécifiée pour %s « %s »"
-#: cp/decl.c:11325
+#: cp/decl.c:7193
+#, c-format
+msgid "top-level declaration of `%s' specifies `auto'"
+msgstr "la déclaration hors de toute fonction de « %s » a spécifié « auto »"
+
+#: cp/decl.c:7205
msgid "storage class specifiers invalid in friend function declarations"
msgstr "spécificateurs de classe de stockage invalide dans les déclarations de fonction amie"
-#: cp/decl.c:11495
+#: cp/decl.c:7370
msgid "destructor cannot be static member function"
msgstr "le destructeur ne peut être une fonction membre statique"
-#: cp/decl.c:11498
+#: cp/decl.c:7373
#, c-format
msgid "destructors may not be `%s'"
msgstr "destructeurs ne peut être « %s »"
-#: cp/decl.c:11519
+#: cp/decl.c:7394
msgid "constructor cannot be static member function"
msgstr "le constructeur ne peut être une fonction membre statique"
-#: cp/decl.c:11522
+#: cp/decl.c:7397
msgid "constructors cannot be declared virtual"
msgstr "constructeurs ne peut être déclarés virtuels"
-#: cp/decl.c:11527
+#: cp/decl.c:7402
#, c-format
msgid "constructors may not be `%s'"
msgstr "constructeurs ne peuvent pas être « %s »"
-#: cp/decl.c:11537
+#: cp/decl.c:7412
msgid "return value type specifier for constructor ignored"
msgstr "type de valeur retournée d'un spécificateur pour un constructeur est ignoré"
-#: cp/decl.c:11556
+#: cp/decl.c:7431
#, c-format
msgid "can't initialize friend function `%s'"
msgstr "ne peut initialiser la fonction amie « %s »"
#. Cannot be both friend and virtual.
-#: cp/decl.c:11560
+#: cp/decl.c:7435
msgid "virtual functions cannot be friends"
msgstr "fonctions virtuelles ne peuvent être amies"
-#: cp/decl.c:11565
+#: cp/decl.c:7440
msgid "friend declaration not in class definition"
msgstr "déclaration amie n'est pas dans la définition de classe"
-#: cp/decl.c:11567
+#: cp/decl.c:7442
#, c-format
msgid "can't define friend function `%s' in a local class definition"
msgstr "ne peut définir une fonction amie « %s » dans une définition locale de classe"
-#: cp/decl.c:11591
+#: cp/decl.c:7463
msgid "destructors may not have parameters"
msgstr "destructeurs ne peuvent pas avoir de paramètre"
-#: cp/decl.c:11622 cp/decl.c:11629
-#, fuzzy
+#: cp/decl.c:7483 cp/decl.c:7490
msgid "cannot declare reference to `%#T'"
-msgstr "ne peut décalrer des références vers des références"
+msgstr "ne peut déclarer une référence vers « %#T »"
-#: cp/decl.c:11623
-#, fuzzy
+#: cp/decl.c:7484
msgid "cannot declare pointer to `%#T'"
-msgstr "ne peut déclarer un pointeur vers le membre «%#T»"
+msgstr "ne peut déclarer un pointeur vers « %#T »"
-#: cp/decl.c:11628
+#: cp/decl.c:7489
msgid "cannot declare pointer to `%#T' member"
-msgstr "ne peut déclarer un pointeur vers le membre «%#T»"
+msgstr "ne peut déclarer un pointeur vers le membre « %#T »"
-#: cp/decl.c:11804
+#: cp/decl.c:7627
msgid "extra qualification `%T::' on member `%s' ignored"
-msgstr "qualification additionnelle «%T::» sur le membre « %s » est ignorée"
+msgstr "qualification additionnelle « %T:: » sur le membre « %s » est ignorée"
-#: cp/decl.c:11814
+#: cp/decl.c:7639
msgid "cannot declare member function `%T::%s' within `%T'"
-msgstr "ne peut déclarer la fonction membre «%T::%s» à l'intérieur de « %T »"
+msgstr "ne peut déclarer la fonction membre « %T::%s » à l'intérieur de « %T »"
-#: cp/decl.c:11829
+#: cp/decl.c:7654
msgid "cannot declare member `%T::%s' within `%T'"
-msgstr "ne peut déclarer le membre «%T::%s» à l'intérieur de « %T »"
+msgstr "ne peut déclarer le membre « %T::%s » à l'intérieur de « %T »"
-#: cp/decl.c:11908
+#: cp/decl.c:7734
msgid "data member may not have variably modified type `%T'"
-msgstr ""
+msgstr "membre de données peut ne pas avoir de type « %T » modifié de manière variable"
-#: cp/decl.c:11910
-#, fuzzy
+#: cp/decl.c:7736
msgid "parameter may not have variably modified type `%T'"
-msgstr "argument du patron « %T » utilise un type anonyme"
+msgstr "paramètre peut ne pas avoir de type « %T » modifié de manière variable"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:11918
+#: cp/decl.c:7744
msgid "only declarations of constructors can be `explicit'"
msgstr "seuls les déclarations de constructeurs peuvent être « explicit »"
-#: cp/decl.c:11926
+#: cp/decl.c:7752
#, c-format
msgid "non-member `%s' cannot be declared `mutable'"
msgstr "le non membre « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:11931
+#: cp/decl.c:7757
#, c-format
msgid "non-object member `%s' cannot be declared `mutable'"
msgstr "un membre non objet « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:11937
+#: cp/decl.c:7763
#, c-format
msgid "function `%s' cannot be declared `mutable'"
msgstr "fonction « %s » ne peut être déclarée « mutable »"
-#: cp/decl.c:11942
+#: cp/decl.c:7768
#, c-format
msgid "static `%s' cannot be declared `mutable'"
msgstr "static « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:11947
+#: cp/decl.c:7773
#, c-format
msgid "const `%s' cannot be declared `mutable'"
msgstr "const « %s » ne peut être déclaré « mutable »"
-#: cp/decl.c:11960
+#: cp/decl.c:7786
msgid "template-id `%D' used as a declarator"
-msgstr "identificateur de patron « %D » utilisé comme déclarateur"
+msgstr "identificateur de canevas « %D » utilisé comme déclarateur"
-#: cp/decl.c:11981
+#: cp/decl.c:7807
msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
-msgstr "le C++ ISO interdit le type imbriqué « %D » avec le même nom que la classe de fermeture"
+msgstr "ISO C++ interdit le type imbriqué « %D » avec le même nom que la classe de fermeture"
-#: cp/decl.c:12030
-msgid "typedef name may not be class-qualified"
-msgstr "nom du typedef peut ne pas être qualifié pour la classe"
+#: cp/decl.c:7815
+msgid "%Jtypedef name may not be a nested-name-specifier"
+msgstr "%Jnom du typedef peut ne pas être un nom de spécificateur imbriqué"
-#: cp/decl.c:12038
-msgid "invalid type qualifier for non-member function type"
-msgstr "qualificateur de type invalide pour un type de fonction (autre que fonction membre)"
+#: cp/decl.c:7861
+msgid "%Jinvalid type qualifier for non-member function type"
+msgstr "%Jqualificateur de type invalide pour un type de fonction non membre"
-#: cp/decl.c:12101
+#: cp/decl.c:7925
msgid "type qualifiers specified for friend class declaration"
msgstr "qulificateurs de types spécifiés pour la déclaration d'une classe amie"
-#: cp/decl.c:12106
+#: cp/decl.c:7930
msgid "`inline' specified for friend class declaration"
msgstr "« inline » spécifié pour la déclaration d'une classe amie"
-#: cp/decl.c:12114
+#: cp/decl.c:7938
msgid "template parameters cannot be friends"
-msgstr "paramètres du patron ne peuvent pas être amis"
+msgstr "paramètres du canevas ne peuvent pas être amis"
-#: cp/decl.c:12116
-#, fuzzy
+#: cp/decl.c:7940
msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
-msgstr "déclaration ami requiert une clé de classe, i.e. « friend class %T::%T'"
+msgstr "déclaration ami requiert une clé de classe, i.e. « friend class %T::%D »"
-#: cp/decl.c:12120
+#: cp/decl.c:7944
msgid "friend declaration requires class-key, i.e. `friend %#T'"
-msgstr "déclaration amie requiert une clé de classes, i.e. « friend %#T'"
+msgstr "déclaration amie requiert une clé de classes, i.e. « friend %#T »"
-#: cp/decl.c:12134
+#: cp/decl.c:7957
msgid "trying to make class `%T' a friend of global scope"
msgstr "tentative de rendre la classe « %T » un ami de la portée globale"
-#: cp/decl.c:12145
+#: cp/decl.c:7968
msgid "invalid qualifiers on non-member function type"
msgstr "qualificteurs invalide pour un type de fonction (autre que fonction membre)"
-#: cp/decl.c:12164
+#: cp/decl.c:7987
msgid "abstract declarator `%T' used as declaration"
msgstr "déclaration abstrait « %T » utilisé dans la déclaration"
-#: cp/decl.c:12176
+#: cp/decl.c:7999
msgid "unnamed variable or field declared void"
msgstr "variable non nommée ou champ déclaré void"
-#: cp/decl.c:12185
+#: cp/decl.c:8008
msgid "variable or field declared void"
msgstr "variable ou champ déclaré void"
-#: cp/decl.c:12195
+#: cp/decl.c:8018
msgid "cannot use `::' in parameter declaration"
msgstr "ne peut utiliser «::» dans le paramètre d'un déclaration"
#. Something like struct S { int N::j; };
-#: cp/decl.c:12234
+#: cp/decl.c:8063
msgid "invalid use of `::'"
msgstr "utilisation invalide de « :: »"
-#: cp/decl.c:12246
+#: cp/decl.c:8075
msgid "function `%D' cannot be declared friend"
msgstr "fonction « %D » ne peut être déclarée amie"
-#: cp/decl.c:12258
+#: cp/decl.c:8087
msgid "can't make `%D' into a method -- not in a class"
msgstr "ne peut rendre « %D » dans la méthode -- n'est pas dans la classe"
-#: cp/decl.c:12267
+#: cp/decl.c:8096
msgid "function `%D' declared virtual inside a union"
msgstr "fonction « %D » déclaré comme virtuelle à l'intérieur d'un agrégat"
-#: cp/decl.c:12279
+#: cp/decl.c:8108
msgid "`%D' cannot be declared virtual, since it is always static"
msgstr "« %D » ne peut être déclaré virtuel, alors qu'il est toujours statique"
-#: cp/decl.c:12355
+#: cp/decl.c:8185
msgid "field `%D' has incomplete type"
msgstr "champ « %D » a un type incomplet"
-#: cp/decl.c:12357
+#: cp/decl.c:8187
msgid "name `%T' has incomplete type"
msgstr "nom « %T » a un type incomplet"
-#: cp/decl.c:12366
+#: cp/decl.c:8196
msgid " in instantiation of template `%T'"
-msgstr " dans l'instanciation du patron « %T »"
+msgstr " dans l'instanciation du canevas « %T »"
-#: cp/decl.c:12376
+#: cp/decl.c:8206
#, c-format
msgid "`%s' is neither function nor member function; cannot be declared friend"
msgstr "« %s » n'est ni une fonction ni une fonction membre ; ne peut être déclaré ami"
-#: cp/decl.c:12387
+#: cp/decl.c:8217
msgid "member functions are implicitly friends of their class"
msgstr "les fonctions membres sont implicitement amis de leur classe"
@@ -15672,99 +14589,95 @@ msgstr "les fonctions membres sont implicitement amis de leur classe"
#. the rest of the compiler does not correctly
#. handle the initialization unless the member is
#. static so we make it static below.
-#: cp/decl.c:12434
+#: cp/decl.c:8258
msgid "ISO C++ forbids initialization of member `%D'"
-msgstr "le C++ ISO interdit l'initialisation du membre « %D »"
+msgstr "ISO C++ interdit l'initialisation du membre « %D »"
-#: cp/decl.c:12436
+#: cp/decl.c:8260
msgid "making `%D' static"
msgstr "rendant « %D » statique"
-#: cp/decl.c:12460
+#: cp/decl.c:8283
msgid "ISO C++ forbids static data member `%D' with same name as enclosing class"
-msgstr "le C++ ISO interdit les données de membres statiques « %D » avec le même nom comme classe de fermeture"
+msgstr "ISO C++ interdit les données de membres statiques « %D » avec le même nom comme classe de fermeture"
-#: cp/decl.c:12501
+#: cp/decl.c:8323
#, c-format
msgid "storage class `auto' invalid for function `%s'"
msgstr "classe de stockage « auto» invalide pour une fonction « %s »"
-#: cp/decl.c:12503
+#: cp/decl.c:8325
#, c-format
msgid "storage class `register' invalid for function `%s'"
msgstr "classe de stockage « register» invalide pour une fonction « %s »"
-#: cp/decl.c:12505
-#, fuzzy, c-format
+#: cp/decl.c:8327
+#, c-format
msgid "storage class `__thread' invalid for function `%s'"
-msgstr "classe de stockage « auto» invalide pour une fonction « %s »"
+msgstr "classe de stockage « __thread » invalide pour la fonction « %s »"
-#: cp/decl.c:12516
+#: cp/decl.c:8338
#, c-format
msgid "storage class `static' invalid for function `%s' declared out of global scope"
msgstr "classe de stockage « static» invalide pour une fonction « %s » déclarée en dehors de la portée globale"
-#: cp/decl.c:12518
+#: cp/decl.c:8340
#, c-format
msgid "storage class `inline' invalid for function `%s' declared out of global scope"
msgstr "classe de stockage « inline» invalide pour une fonction « %s » déclarée en dehors de la portée globale"
-#: cp/decl.c:12525
+#: cp/decl.c:8347
#, c-format
msgid "virtual non-class function `%s'"
msgstr "fonction virtuelle d'une non classe « %s »"
-#: cp/decl.c:12554
+#: cp/decl.c:8377
msgid "cannot declare member function `%D' to have static linkage"
msgstr "ne peut déclarer la fonction membre « %D » comme ayant un lien statique"
#. FIXME need arm citation
-#: cp/decl.c:12560
+#: cp/decl.c:8383
msgid "cannot declare static function inside another function"
msgstr "ne peut déclarer une fonction statique à l'intérieur d'une autre fonction"
-#: cp/decl.c:12588
+#: cp/decl.c:8411
msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
msgstr "« static » ne peut pas être utilisé lors de la définition (contrairement à la déclaration) de données de membres statiques"
-#: cp/decl.c:12594
+#: cp/decl.c:8417
msgid "static member `%D' declared `register'"
msgstr "mambre statique « %D» déclaré «register »"
-#: cp/decl.c:12599
+#: cp/decl.c:8422
msgid "cannot explicitly declare member `%#D' to have extern linkage"
-msgstr "ne peut explicitement déclarer le membre «%#D» comme ayant une liaison externe"
+msgstr "ne peut explicitement déclarer le membre « %#D » comme ayant une liaison externe"
-#: cp/decl.c:12774
+#: cp/decl.c:8564
msgid "default argument for `%#D' has type `%T'"
-msgstr "argument par défaut pour «%#D» à un type « %T »"
+msgstr "argument par défaut pour « %#D » à un type « %T »"
-#: cp/decl.c:12777
+#: cp/decl.c:8567
msgid "default argument for parameter of type `%T' has type `%T'"
msgstr "argument par défaut pour le paramètre de type « %T » a le type « %T »"
-#: cp/decl.c:12794
+#: cp/decl.c:8584
msgid "default argument `%E' uses local variable `%D'"
msgstr "argument par défaut « %E » utiliser une variable locale « %D »"
-#: cp/decl.c:12839
+#: cp/decl.c:8628
#, c-format
msgid "invalid string constant `%E'"
msgstr "constante chaîne invalide « %E »"
-#: cp/decl.c:12841
+#: cp/decl.c:8630
msgid "invalid integer constant in parameter list, did you forget to give parameter name?"
msgstr "constante entière invalide dans la liste de paramètre, avez-vous oublier de donner un nom de paramètre?"
-#: cp/decl.c:12879
+#: cp/decl.c:8668
msgid "parameter `%D' invalidly declared method type"
msgstr "paramètre « %D » incorrectement validé comme type de méthode"
-#: cp/decl.c:12885
-msgid "parameter `%D' invalidly declared offset type"
-msgstr "paramètre « %D » incorrectement validé comme type de décalage"
-
-#: cp/decl.c:12909
+#: cp/decl.c:8692
msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgstr "paramètre « %D » inclut %s au tableau de bornes inconnues « %T »"
@@ -15783,512 +14696,345 @@ msgstr "paramètre « %D » inclut %s au tableau de bornes inconnues « %T »"
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:13071
+#: cp/decl.c:8851
msgid "invalid constructor; you probably meant `%T (const %T&)'"
-msgstr "constructeur invalide; vous vouliez probablement dire «%T (const %T&)»"
+msgstr "constructeur invalide; vous vouliez probablement dire « %T (const %T&) »"
-#: cp/decl.c:13222
+#: cp/decl.c:8991
msgid "`%D' must be a nonstatic member function"
msgstr "« %D » doit être une fonction membre non statique"
-#: cp/decl.c:13228
+#: cp/decl.c:8997
msgid "`%D' must be either a non-static member function or a non-member function"
msgstr "« %D » doit être soit un membre non statique de fonction ou une fonction non membre"
-#: cp/decl.c:13245
+#: cp/decl.c:9014
msgid "`%D' must have an argument of class or enumerated type"
msgstr "« %D » doit avoir un argument de classe ou de type énuméré"
-#: cp/decl.c:13277
+#: cp/decl.c:9049
#, c-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr "conversion de %s%s ne sera jamais utilisé dans un type d'opérateur de conversion"
#. 13.4.0.3
-#: cp/decl.c:13284
+#: cp/decl.c:9056
msgid "ISO C++ prohibits overloading operator ?:"
-msgstr "le C++ ISO interdit la surcharge de l'opérateur ?:"
+msgstr "ISO C++ interdit la surcharge de l'opérateur ?:"
-#: cp/decl.c:13334
+#: cp/decl.c:9106
msgid "postfix `%D' must take `int' as its argument"
msgstr "postfixe « %D» doit prendre « int » comme argument"
-#: cp/decl.c:13338
+#: cp/decl.c:9110
msgid "postfix `%D' must take `int' as its second argument"
msgstr "postfixe « %D» doit prndre « int » pour son second argument"
-#: cp/decl.c:13345
+#: cp/decl.c:9117
msgid "`%D' must take either zero or one argument"
msgstr "« %D » doit prendre seulement zéro ou un autre argument"
-#: cp/decl.c:13347
+#: cp/decl.c:9119
msgid "`%D' must take either one or two arguments"
msgstr "« %D » doit prendre seulement un OU deux arguments"
-#: cp/decl.c:13368
+#: cp/decl.c:9140
msgid "prefix `%D' should return `%T'"
msgstr "préfixe « %D » devrait retourner « %T »"
-#: cp/decl.c:13374
+#: cp/decl.c:9146
msgid "postfix `%D' should return `%T'"
msgstr "postfixe « %D » devrait retourner « %T »"
-#: cp/decl.c:13383
+#: cp/decl.c:9155
msgid "`%D' must take `void'"
msgstr "« %D» doit prendre « void »"
-#: cp/decl.c:13385 cp/decl.c:13393
+#: cp/decl.c:9157 cp/decl.c:9165
msgid "`%D' must take exactly one argument"
msgstr "« %D » doit prendre exactement un argument"
-#: cp/decl.c:13395
+#: cp/decl.c:9167
msgid "`%D' must take exactly two arguments"
msgstr "« %D » doit prendre exactemenr deux arguments"
-#: cp/decl.c:13403
+#: cp/decl.c:9175
msgid "user-defined `%D' always evaluates both arguments"
msgstr "« %D » défini par l'usager évalue toujours les 2 arguments"
-#: cp/decl.c:13417
+#: cp/decl.c:9189
msgid "`%D' should return by value"
msgstr "« %D » devrait retourner par valeur"
-#: cp/decl.c:13429 cp/decl.c:13432
+#: cp/decl.c:9201 cp/decl.c:9204
msgid "`%D' cannot have default arguments"
msgstr "« %D » ne peut avoir d'arguments par défaut"
-#: cp/decl.c:13475
+#: cp/decl.c:9264
msgid "using typedef-name `%D' after `%s'"
msgstr "utilisation d'un nom de typedef « %D » après « %s »"
-#: cp/decl.c:13481
+#: cp/decl.c:9270
msgid "using template type parameter `%T' after `%s'"
-msgstr "utilisation de type de patron de paramètre « %T » après « %s »"
+msgstr "utilisation de type de canevas de paramètre « %T » après « %s »"
-#: cp/decl.c:13542
-msgid "`%s %T' declares a new type at namespace scope"
-msgstr "« %s %T » déclare un nouveau type dans l'étendue de l'espace de noms"
+#: cp/decl.c:9278
+msgid "`%T' referred to as `%s'"
+msgstr "« %TD » référé comme « %s »"
-#: cp/decl.c:13545
-msgid " names from dependent base classes are not visible to unqualified name lookup - to refer to the inherited type, say `%s %T::%T'"
-msgstr " noms des classes de base dépendantes ne sont pas visibles à la recherche de nom non qualifié - pour référer à type par héritage, disons «%s %T::%T»"
+#: cp/decl.c:9284
+msgid "`%T' referred to as enum"
+msgstr "« %T » référé comme enum"
+
+#. If a class template appears as elaborated type specifier
+#. without a template header such as:
+#.
+#. template <class T> class C {};
+#. void f(class C); // No template header here
+#.
+#. then the required template argument is missing.
+#: cp/decl.c:9299
+msgid "template argument required for `%s %T'"
+msgstr "argument du canevas est requis pour « %s %T »"
-#: cp/decl.c:13663
+#: cp/decl.c:9445
msgid "use of enum `%#D' without previous declaration"
-msgstr "utilisation de enum «%#D» sans déclaration précédente"
+msgstr "utilisation de enum « %#D » sans déclaration précédente"
-#: cp/decl.c:13749
+#: cp/decl.c:9530
msgid "derived union `%T' invalid"
msgstr "union dérivée « %T » invalide"
-#: cp/decl.c:13795
+#: cp/decl.c:9583
msgid "base type `%T' fails to be a struct or class type"
msgstr "type de base « %T » a échoué pour devenir un type de classe ou un type construit"
-#: cp/decl.c:13805
-msgid "base class `%T' has incomplete type"
-msgstr "classe de base « %T » a un type incomplet"
-
-#: cp/decl.c:13813
+#: cp/decl.c:9591
msgid "recursive type `%T' undefined"
msgstr "type récursif « %T » non défini"
-#: cp/decl.c:13815
+#: cp/decl.c:9593
msgid "duplicate base type `%T' invalid"
msgstr "duplication du type de base « %T » invalide"
-#: cp/decl.c:13926
+#: cp/decl.c:9671
+msgid "Java class '%T' cannot have multiple bases"
+msgstr "classe Java « %T » ne peut avoir de bases multiples"
+
+#: cp/decl.c:9673
+msgid "Java class '%T' cannot have virtual bases"
+msgstr "classe Java « %T » ne peut avoir de bases virtuelles"
+
+#: cp/decl.c:9713
msgid "multiple definition of `%#T'"
-msgstr "définition multiple de «%#T»"
+msgstr "définition multiple de « %#T »"
-#: cp/decl.c:13927
-msgid "previous definition here"
-msgstr "définition précédente ici"
+#: cp/decl.c:9714
+msgid "%Jprevious definition here"
+msgstr "%Jdéfinition précédente ici"
-#: cp/decl.c:14030
+#. DR 377
+#.
+#. IF no integral type can represent all the enumerator values, the
+#. enumeration is ill-formed.
+#: cp/decl.c:9849
msgid "no integral type can represent all of the enumerator values for `%T'"
-msgstr ""
+msgstr "aucun type entier peut représenter toutes les valeurs de l'énumérateur pour « %T »"
-#: cp/decl.c:14106
+#: cp/decl.c:9939
msgid "enumerator value for `%D' not integer constant"
msgstr "valeur de l'énumérateur pour « %D » n'est pas une constante entière"
-#: cp/decl.c:14126
+#: cp/decl.c:9959
msgid "overflow in enumeration values at `%D'"
msgstr "débordement dans les valeurs de l'énumération à « %D »"
-#: cp/decl.c:14195
+#: cp/decl.c:10028
msgid "return type `%#T' is incomplete"
-msgstr "type retourné «%#T» est incomplet"
-
-#: cp/decl.c:14309
-msgid "semicolon missing after declaration of `%#T'"
-msgstr "point-virgule manquant après la déclaration %#T"
+msgstr "type retourné « %#T » est incomplet"
-#: cp/decl.c:14330
+#: cp/decl.c:10148
msgid "return type for `main' changed to `int'"
msgstr "type retourné pour « main » est changé pour «int »"
-#: cp/decl.c:14361
+#: cp/decl.c:10178
msgid "`%D' implicitly declared before its definition"
msgstr "« %D » implicitement déclaré avant sa définition"
-#: cp/decl.c:14383 cp/typeck.c:6314
+#: cp/decl.c:10200 cp/typeck.c:6011
msgid "`operator=' should return a reference to `*this'"
msgstr "« operator= » devrait retourner une référence à «*ceci »"
-#: cp/decl.c:14643
+#: cp/decl.c:10472
msgid "parameter `%D' declared void"
msgstr "paramètre « %D » déclaré «void »"
-#: cp/decl.c:15130
+#: cp/decl.c:10938
+msgid "invalid member function declaration"
+msgstr "déclaration de membre de fonction invalide"
+
+#: cp/decl.c:10955
msgid "`%D' is already defined in class `%T'"
msgstr "« %D » est déjà défini dans la classe « %T »"
-#: cp/decl.c:15348
+#: cp/decl.c:11168
msgid "static member function `%#D' declared with type qualifiers"
-msgstr "membre de fonction statique «%#D» déclaré avec des qualificateurs de tyep"
+msgstr "membre de fonction statique « %#D » déclaré avec des qualificateurs de tyep"
-#: cp/decl2.c:153
+#: cp/decl2.c:143
#, c-format
msgid "duplicate type qualifiers in %s declaration"
msgstr "qualificateurs de types dupliqués dans déclaration %s"
-#: cp/decl2.c:192
-msgid "template `%#D' instantiated in file without #pragma interface"
-msgstr "patron «%#D» instancié dans le fichier sans interface #pragma"
-
-#: cp/decl2.c:198
-msgid "template `%#D' defined in file without #pragma interface"
-msgstr "patron «%#D» défini dans le fichier sans interface #pragma"
-
-#: cp/decl2.c:365
+#: cp/decl2.c:316
msgid "name missing for member function"
msgstr "nom manquant pour le membre d'une fonction"
-#. Something has gone very wrong. Assume we are mistakenly reducing
-#. an expression instead of a declaration.
-#: cp/decl2.c:428
-msgid "parser may be lost: is there a '{' missing somewhere?"
-msgstr "analyseur syntaxique est perdu: y-a-t-il un «{» manquant quelque part?"
-
-#: cp/decl2.c:459 cp/decl2.c:473
+#: cp/decl2.c:408 cp/decl2.c:422
msgid "ambiguous conversion for array subscript"
msgstr "comversion ambigue pour un sous-tableau"
-#: cp/decl2.c:467
+#: cp/decl2.c:416
msgid "invalid types `%T[%T]' for array subscript"
-msgstr "types invalides «%T[%T]» pour un sous-script de tableau"
+msgstr "types invalides « %T[%T] » pour un sous-script de tableau"
-#: cp/decl2.c:515
+#: cp/decl2.c:464
msgid "type `%#T' argument given to `delete', expected pointer"
-msgstr "type « %#T» de l'argument donné pour « delete », attendait un pointeur"
+msgstr "type « %#T » de l'argument donné pour « delete », attendait un pointeur"
-#: cp/decl2.c:523
+#: cp/decl2.c:472
msgid "anachronistic use of array size in vector delete"
msgstr "utilisation anachronique de la taille d'un tableau dans un vecteur delete"
-#: cp/decl2.c:533
+#: cp/decl2.c:482
msgid "cannot delete a function. Only pointer-to-objects are valid arguments to `delete'"
msgstr "ne peut détruire une fonction. Seuls les pointeurs-d'objets sont des arguments valable pour destruction"
-#: cp/decl2.c:540
+#: cp/decl2.c:489
msgid "deleting `%T' is undefined"
msgstr "destruction de « %T » est indéfinie"
-#: cp/decl2.c:548
+#: cp/decl2.c:497
msgid "deleting array `%#D'"
-msgstr "destruction du tableau «%#D'"
+msgstr "destruction du tableau « %#D »"
#. 14.5.2.2 [temp.mem]
#.
#. A local class shall not have member templates.
-#: cp/decl2.c:582
+#: cp/decl2.c:530
msgid "invalid declaration of member template `%#D' in local class"
-msgstr "déclaration invalide du patron de membre «%#D» dans la classe locale"
+msgstr "déclaration invalide du canevas de membre « %#D » dans la classe locale"
-#: cp/decl2.c:591
+#: cp/decl2.c:539
msgid "invalid use of `virtual' in template declaration of `%#D'"
-msgstr "utilisation invalide de « virtual» dans la déclaration d'un patron de «%#D »"
+msgstr "utilisation invalide de « virtual» dans la déclaration d'un canevas de « %#D »"
-#: cp/decl2.c:601 cp/pt.c:2745
+#: cp/decl2.c:549 cp/pt.c:2830
msgid "template declaration of `%#D'"
-msgstr "déclaration du patron de «%#D»"
+msgstr "déclaration du canevas de « %#D »"
-#: cp/decl2.c:651
+#: cp/decl2.c:598
msgid "Java method '%D' has non-Java return type `%T'"
msgstr "méthode Java « %D » a un type non Java retourné « %T »"
-#: cp/decl2.c:660
+#: cp/decl2.c:614
msgid "Java method '%D' has non-Java parameter type `%T'"
msgstr "méthode Java « %D » a un paramètre non Java de type « %T »"
-#: cp/decl2.c:746
+#: cp/decl2.c:705
msgid "prototype for `%#D' does not match any in class `%T'"
-msgstr "prototype pour «%#D» ne concorde avec aucun dans la classe « %T »"
+msgstr "prototype pour « %#D » ne concorde avec aucun dans la classe « %T »"
-#: cp/decl2.c:828
+#: cp/decl2.c:784
msgid "local class `%#T' shall not have static data member `%#D'"
-msgstr "la classe locale «%#T» ne doit pas être un membre de données statiques de «%#D»"
+msgstr "la classe locale « %#T » ne doit pas être un membre de données statiques de « %#D »"
-#: cp/decl2.c:836
+#: cp/decl2.c:792
msgid "initializer invalid for static member with constructor"
msgstr "initialisation invalide pour un membre statique avec constructeur"
-#: cp/decl2.c:839
+#: cp/decl2.c:795
msgid "(an out of class initialization is required)"
msgstr "(une initialisation en dehors de la classe est requise)"
-#: cp/decl2.c:898
-msgid "invalid data member initialization"
-msgstr "initialisation de données membres invalide"
-
-#: cp/decl2.c:901
-msgid "(use `=' to initialize static data members)"
-msgstr "(utiliser «=» pour initialiser les données de membres)"
-
-#: cp/decl2.c:947
+#: cp/decl2.c:878
msgid "member `%D' conflicts with virtual function table field name"
msgstr "membre « %D » en conflit avec un nom de champ de table d'une fonction virtuelle"
-#: cp/decl2.c:967
+#: cp/decl2.c:895
msgid "`%D' is already defined in `%T'"
msgstr "« %D » est déjà défini dans « %T »"
-#: cp/decl2.c:1014
+#: cp/decl2.c:942
msgid "field initializer is not constant"
msgstr "l'initialisation du champ n'est pas une constante"
-#: cp/decl2.c:1038
+#: cp/decl2.c:970
msgid "`asm' specifiers are not permitted on non-static data members"
msgstr "spécificateurs « asm » ne sont pas permis pour des données de membres non statiques"
-#: cp/decl2.c:1090
+#: cp/decl2.c:1020
msgid "cannot declare `%D' to be a bit-field type"
msgstr "ne peut déclarer « %D » comme étant un type de champ de bits"
-#: cp/decl2.c:1100
+#: cp/decl2.c:1030
msgid "cannot declare bit-field `%D' with function type"
msgstr "ne peut déclarer un champ de bits « %D » avec un type de fonction"
-#: cp/decl2.c:1107
+#: cp/decl2.c:1037
msgid "`%D' is already defined in the class %T"
msgstr "« %D » est déjà défini dans la classe %T"
-#: cp/decl2.c:1114
+#: cp/decl2.c:1044
msgid "static member `%D' cannot be a bit-field"
msgstr "membre statique « %D » ne peut être un champ de bits"
-#: cp/decl2.c:1201
+#: cp/decl2.c:1103
msgid "initializer specified for non-member function `%D'"
msgstr "initialisation spécifiée pour une fonction « %D » n'étant pas membre"
-#: cp/decl2.c:1205
+#: cp/decl2.c:1107
msgid "invalid initializer for virtual method `%D'"
msgstr "initialisation invalide pour la méthode virtuelle « %D »"
-#: cp/decl2.c:1319
+#: cp/decl2.c:1154
msgid "anonymous struct not inside named type"
msgstr "struct anonyme n'est pas l'intérieur du type nommé"
-#: cp/decl2.c:1415
+#: cp/decl2.c:1224
msgid "namespace-scope anonymous aggregates must be static"
msgstr "aggrégats anonymes de champs d'espace nom doit être statique"
-#: cp/decl2.c:1428
-msgid "anonymous aggregate with no members"
+#: cp/decl2.c:1231
+msgid "anonymous union with no members"
msgstr "aggrégat anonyme sans aucun membre"
-#: cp/decl2.c:1497
+#: cp/decl2.c:1265
msgid "`operator new' must return type `%T'"
-msgstr "« operator new » doit retourner un type «%T »"
+msgstr "« operator new » doit retourner un type « %T »"
-#: cp/decl2.c:1505
+#: cp/decl2.c:1273
msgid "`operator new' takes type `size_t' (`%T') as first parameter"
msgstr "« operator new » prend le type « size_t » (« %T ») comme premier paramètre"
-#: cp/decl2.c:1532
+#: cp/decl2.c:1299
msgid "`operator delete' must return type `%T'"
msgstr "« operator delete » doit retourner le type « %T »"
-#: cp/decl2.c:1540
+#: cp/decl2.c:1307
msgid "`operator delete' takes type `%T' as first parameter"
-msgstr "« operator delete » prend le type «%T » comme premier paramètre"
+msgstr "« operator delete » prend le type « %T » comme premier paramètre"
-#. Overflow occurred. That means there are at least 4 billion
-#. initialization functions.
-#: cp/decl2.c:2282
-msgid "too many initialization functions required"
-msgstr "trop d'initialisations de fonctions requises"
-
-#: cp/decl2.c:3006
-#, fuzzy
+#: cp/decl2.c:2814
msgid "inline function `%D' used but never defined"
-msgstr "« %s » utilisé mais n'a jamais été défini"
-
-#: cp/decl2.c:3135
-msgid "use of old-style cast"
-msgstr "utilisation d'un vieux style de transtypage (cast)"
-
-#: cp/decl2.c:3860
-msgid "use of `%D' is ambiguous"
-msgstr "utilisation de « %D » est ambiguë"
-
-#: cp/decl2.c:3861
-msgid " first declared as `%#D' here"
-msgstr " d'abord déclaré comme «%#D» ici"
-
-#: cp/decl2.c:3864
-msgid " also declared as `%#D' here"
-msgstr " aussi déclaré comme «%#D» ici"
-
-#: cp/decl2.c:3879
-msgid "`%D' denotes an ambiguous type"
-msgstr "« %D » dénote un type ambigu"
-
-#: cp/decl2.c:3880
-msgid " first type here"
-msgstr " premier type ici"
-
-#: cp/decl2.c:3881
-msgid " other type here"
-msgstr " autre type ici"
-
-#: cp/decl2.c:3982
-msgid "declaration of `%D' not in a namespace surrounding `%D'"
-msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D »"
-
-#: cp/decl2.c:4016
-msgid "`%D' should have been declared inside `%D'"
-msgstr "« %D » devrait avoir été déclaré à l'intérieur de « %D »"
-
-#: cp/decl2.c:4152
-msgid "`%D' is not a function,"
-msgstr "« %D » n'est pas une fonction"
-
-#: cp/decl2.c:4153
-msgid " conflict with `%D'"
-msgstr " en conflit avec « %D »"
-
-#. The parser did not find it, so it's not there.
-#: cp/decl2.c:4473
-msgid "unknown namespace `%D'"
-msgstr "espace de nomes inconnu « %D »"
-
-#: cp/decl2.c:4507 cp/decl2.c:4794
-msgid "`%T' is not a namespace"
-msgstr "« %T » n'est pas un espace de noms"
+msgstr "fonction enligne « %D » utilisé mais n'a jamais été défini"
-#: cp/decl2.c:4509
-msgid "`%D' is not a namespace"
-msgstr "« %D » n'est pas un espace de noms"
-
-#: cp/decl2.c:4518
-msgid "a using-declaration cannot specify a template-id. Try `using %D'"
-msgstr "l'utilisation d'une déclaration ne peut spécifier un template-id. Essayer « using %D »"
-
-#: cp/decl2.c:4532
-msgid "namespace `%D' not allowed in using-declaration"
-msgstr "espace de noms « %D » n'est pas permis dans l'utilisation d'une déclaration"
-
-#: cp/decl2.c:4561
-msgid "`%D' not declared"
-msgstr "« %D » n'est pas déclaré"
-
-#. If the OLD_FN was really declared, the
-#. declarations don't match.
-#: cp/decl2.c:4573 cp/decl2.c:4615 cp/decl2.c:4640
-msgid "`%D' is already declared in this scope"
-msgstr "« %D » est déjà déclaré dans cette portée"
-
-#: cp/decl2.c:4646
-msgid "using declaration `%D' introduced ambiguous type `%T'"
-msgstr "l'utlisation de la déclaration « %D » introduit un type ambigu « %T »"
-
-#: cp/decl2.c:4740
-msgid "using-declaration for non-member at class scope"
-msgstr "l'utilisation de déclaration pour un non membre au niveau de la portée de la classe"
-
-#: cp/decl2.c:4746
-msgid "using-declaration for destructor"
-msgstr "utilisation de déclaration pour un destructeur"
-
-#: cp/decl2.c:4752
-msgid "a using-declaration cannot specify a template-id. Try `using %T::%D'"
-msgstr "l'utilisation de déclaration ne peut spécifier template-id. Essayer «using %T::%D'"
-
-#: cp/decl2.c:4788
-msgid "namespace `%T' undeclared"
-msgstr "espace de noms « %T » n'est pas déclaré"
-
-#: cp/decl2.c:4817
+#: cp/decl2.c:2960
msgid "default argument missing for parameter %P of `%+#D'"
-msgstr "argument par défaut manquant pour le paramètre %P de «%+#D»"
-
-#: cp/decl2.c:4941
-msgid "extra qualification `%T::' on member `%D' ignored"
-msgstr "qualification additionnelle «%T::» sur le membre « %D » ignoré"
-
-#: cp/decl2.c:4945
-msgid "`%T' does not have a class or union named `%D'"
-msgstr "« %T » n'a pas de classe ou d'union nommé « %D »"
-
-#: cp/decl2.c:4963
-msgid "`%T' is not a class or union type"
-msgstr "« %T » n'est pas une classe ou un type d'union"
-
-#: cp/decl2.c:4977
-#, fuzzy
-msgid "template argument is required for `%T'"
-msgstr "a obtenu %d paramètres de patron pour «%#T»"
-
-#: cp/decl2.c:4995
-#, fuzzy
-msgid "declaration of `%D' in `%D' which does not enclose `%D'"
-msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D »"
-
-#: cp/error.c:35
-#, c-format
-msgid "`%s' not supported by %s"
-msgstr "« %s » n'est pas supporté par %s"
-
-#: cp/error.c:571
-#, c-format
-msgid "<anonymous %s>"
-msgstr "<anonymous %s>"
-
-#: cp/error.c:810
-#, c-format
-msgid "(static %s for %s)"
-msgstr "(static %s pour %s)"
-
-#: cp/error.c:1503
-#, c-format
-msgid "\\x%x"
-msgstr ""
-
-#: cp/error.c:2473
-#, c-format
-msgid "In %s `%s':"
-msgstr "Dans %s « %s »:"
-
-#: cp/error.c:2530
-#, c-format
-msgid "%s: In instantiation of `%s':\n"
-msgstr "%s: dans l'instanciation de « %s »:\n"
-
-#: cp/error.c:2554
-#, c-format
-msgid "%s:%d: instantiated from `%s'\n"
-msgstr "%s:%d: instancié à partir de « %s »\n"
-
-#: cp/error.c:2559
-#, c-format
-msgid "%s:%d: instantiated from here\n"
-msgstr "%s:%d: instancié à partir d'ici\n"
+msgstr "argument par défaut manquant pour le paramètre %P de « %+#D »"
#. damn ICE suppression
-#: cp/error.c:2713
+#: cp/error.c:2374
#, c-format
msgid "unexpected letter `%c' in locate_error\n"
msgstr "lettre inattendue « %c » dans locate_error\n"
@@ -16307,163 +15053,174 @@ msgstr "appel en Java de « catch» ou «throw» avec «jthrowable » undéfini"
msgid "type `%T' is not derived from `java::lang::Throwable'"
msgstr "type « %T» n'est pas dérivé de «java::lang::Throwable »"
-#: cp/except.c:322
+#: cp/except.c:321
msgid "mixing C++ and Java catches in a single translation unit"
msgstr "mélange des interceptions C++ et Java dans une unité simple de traduction "
-#: cp/except.c:639
+#: cp/except.c:630
msgid "throwing NULL, which has integral, not pointer type"
msgstr "retounrnant NULL (par throw), lequel est entier, pas de type pointeur"
-#: cp/except.c:730
+#: cp/except.c:653 cp/init.c:2029
+msgid "`%D' should never be overloaded"
+msgstr "« %D » ne devrait jamais être surchargé"
+
+#: cp/except.c:722
msgid " in thrown expression"
msgstr " dans l'expression projetée"
-#: cp/except.c:856
+#: cp/except.c:843
msgid "expression '%E' of abstract class type '%T' cannot be used in throw-expression"
msgstr "expression « %E » de la classe abstraite de type « %T » ne peut être utilisé dans une expression throw"
-#: cp/except.c:944
+#: cp/except.c:925
msgid "exception of type `%T' will be caught"
msgstr "exception du type « %T » sera interceptée"
-#: cp/except.c:947
+#: cp/except.c:928
msgid " by earlier handler for `%T'"
msgstr " par un handler antérieur pour « %T »"
-#: cp/except.c:968
+#: cp/except.c:949
msgid "`...' handler must be the last handler for its try block"
msgstr "« ... » handler doit être le dernier handler de son bloc d'essai"
-#: cp/friend.c:159
+#: cp/friend.c:151
msgid "`%D' is already a friend of class `%T'"
msgstr "« %D » est déjà un ami de la classe « %T »"
-#: cp/friend.c:161
-msgid "previous friend declaration of `%D'"
-msgstr "déclaration amie précédente de « %D »"
-
-#: cp/friend.c:206
+#: cp/friend.c:202
msgid "invalid type `%T' declared `friend'"
msgstr "type invalide « %T» déclaré «friend »"
#. [temp.friend]
#. Friend declarations shall not declare partial
#. specializations.
-#: cp/friend.c:222
+#: cp/friend.c:218
msgid "partial specialization `%T' declared `friend'"
msgstr "spécialisation partielle « %T» déclarée «friend »"
-#: cp/friend.c:231
+#: cp/friend.c:228
msgid "class `%T' is implicitly friends with itself"
msgstr "classe « %T » est implicitement ami avec elle-même"
#. template <class T> friend typename S<T>::X;
-#: cp/friend.c:249
+#: cp/friend.c:246
msgid "typename type `%#T' declared `friend'"
msgstr "type typename « %#T» déclaré «friend »"
#. template <class T> friend class T;
-#: cp/friend.c:255
+#: cp/friend.c:252
msgid "template parameter type `%T' declared `friend'"
-msgstr "type paramètre du patron « %T» déclaré «friend »"
+msgstr "type paramètre du canevas « %T» déclaré «friend »"
#. template <class T> friend class A; where A is not a template
-#: cp/friend.c:261
+#: cp/friend.c:258
msgid "`%#T' is not a template"
-msgstr "«%#T» n'est pas un patron"
+msgstr "« %#T » n'est pas un canevas"
-#: cp/friend.c:276
+#: cp/friend.c:277
+msgid "`%D' is already a friend of `%T'"
+msgstr "« %D » est déjà un ami de « %T »"
+
+#: cp/friend.c:287
msgid "`%T' is already a friend of `%T'"
msgstr "« %T » est déjà un ami de « %T »"
-#: cp/friend.c:376
+#: cp/friend.c:413
msgid "member `%D' declared as friend before type `%T' defined"
msgstr "membre « %D » déclaré comme ami avant la définition du type « %T »"
-#: cp/friend.c:431
+#: cp/friend.c:470
msgid "friend declaration `%#D' declares a non-template function"
-msgstr "déclaration amie «%#D» déclare une fonction non patron"
+msgstr "déclaration amie « %#D » déclare une fonction non canevas"
-#: cp/friend.c:434
+#: cp/friend.c:473
msgid "(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 "(si ce n'est pas ce que vous vouliez faire, soyez sûr que le patron de la fonction a déjà été déclaré et ajouter <> après le nom de la fonction ici) -Wno-non-template-friend désactive le présent avertissement"
+msgstr "(si ce n'est pas ce que vous vouliez faire, soyez sûr que le canevas de la fonction a déjà été déclaré et ajouter <> après le nom de la fonction ici) -Wno-non-template-friend désactive le présent avertissement"
-#: cp/g++spec.c:211 java/jvspec.c:423
+#: cp/g++spec.c:229 java/jvspec.c:415
#, c-format
msgid "argument to `%s' missing\n"
msgstr "argument pour « %s » est manquant\n"
-#: cp/init.c:334
+#: cp/init.c:318
msgid "`%D' should be initialized in the member initialization list"
msgstr "« %D » devrait être initialisé dans la liste d'initialisation du membre"
-#: cp/init.c:384
+#: cp/init.c:368
msgid "default-initialization of `%#D', which has reference type"
-msgstr "initialisation par défaut de «%#D», lequel a un type référencé"
+msgstr "initialisation par défaut de « %#D », lequel a un type référencé"
-#: cp/init.c:389
+#: cp/init.c:373
msgid "uninitialized reference member `%D'"
msgstr "référence de membre non initialisé « %D »"
-#: cp/init.c:397
-msgid "initializer list treated as compound expression"
-msgstr "liste d'initialiseurs traitée comme une expression composée"
-
-#: cp/init.c:538
-#, fuzzy
+#: cp/init.c:511
msgid "`%D' will be initialized after"
-msgstr "membre « %D » est une référence non initialisée"
+msgstr "« %D » sera initialisé après"
-#: cp/init.c:541
-#, fuzzy
+#: cp/init.c:514
msgid "base `%T' will be initialized after"
-msgstr "classe de base « %T » déjà initialisée"
+msgstr "base « %T » sera initialisé après"
-#: cp/init.c:544
-#, fuzzy
+#: cp/init.c:517
msgid " `%#D'"
-msgstr " et «%#D»"
+msgstr " « %D »"
-#: cp/init.c:546
-#, fuzzy
+#: cp/init.c:519
msgid " base `%T'"
-msgstr " et «%#T»"
+msgstr " base « %T »"
-#: cp/init.c:564
-#, fuzzy
-msgid "multiple initializations given for base `%T'"
+#: cp/init.c:520
+msgid " when initialized here"
+msgstr " lorsqu'initialisé ici"
+
+#: cp/init.c:536
+msgid "multiple initializations given for `%D'"
msgstr "multiples initialisations données pour « %D »"
-#: cp/init.c:631
+#: cp/init.c:538
+msgid "multiple initializations given for base `%T'"
+msgstr "multiples initialisations données pour base « %T »"
+
+#: cp/init.c:605
msgid "initializations for multiple members of `%T'"
msgstr "initialisation de multiples membres de « %T »"
-#: cp/init.c:688
+#: cp/init.c:662
msgid "base class `%#T' should be explicitly initialized in the copy constructor"
-msgstr "classe de base «%#T» devrait être explicitement initialisé dans la copie du constructeur"
+msgstr "classe de base « %#T » devrait être explicitement initialisé dans la copie du constructeur"
-#: cp/init.c:926
+#: cp/init.c:892 cp/init.c:911
msgid "class `%T' does not have any field named `%D'"
msgstr "classe « %T » n'a pas aucun champ nommé « %D »"
-#: cp/init.c:932
-msgid "field `%#D' is static; the only point of initialization is its definition"
-msgstr "champ «%#D» est statique; le seul point d'initialisation est sa définition"
+#: cp/init.c:898
+msgid "`%#D' is a static data member; it can only be initialized at its definition"
+msgstr "« %#D » est un membre statique de données; il peut seulement être initialisée lors de sa définition"
-#: cp/init.c:965
+#: cp/init.c:905
+msgid "`%#D' is not a non-static data member of `%T'"
+msgstr "« %#D » n'est pas un membre statique de données de « %T »"
+
+#: cp/init.c:944
msgid "unnamed initializer for `%T', which has no base classes"
msgstr "initialiseur sans nom pour « %T », lequel n'a pas de classe de base"
-#: cp/init.c:972
+#: cp/init.c:951
msgid "unnamed initializer for `%T', which uses multiple inheritance"
msgstr "initialiseur sans nom pour « %T », lequel utilise de multiples héritages"
-#: cp/init.c:1007
+#: cp/init.c:1006
+msgid "'%D' is both a direct base and an indirect virtual base"
+msgstr "« %D » est à la fois une base directe et indirecte virtuelle"
+
+#: cp/init.c:1014
msgid "type `%D' is not a direct or virtual base of `%T'"
msgstr "type « %D » n'est pas une base directe ou virtuelle de « %T »"
-#: cp/init.c:1010
+#: cp/init.c:1017
msgid "type `%D' is not a direct base of `%T'"
msgstr "type « %D » n'est pas une base directe de « %T »"
@@ -16479,538 +15236,813 @@ msgstr "type « %D » n'est pas une base directe de « %T »"
#. COMPLEX zees(1.0, 0.0)[10];
#. }
#.
-#: cp/init.c:1104
+#: cp/init.c:1109
msgid "bad array initializer"
msgstr "mauvaise initialisation de tableau"
-#: cp/init.c:1311
+#: cp/init.c:1303
msgid "`%T' is not an aggregate type"
msgstr "« %T » n'est pas de type aggrégat"
-#: cp/init.c:1334
+#: cp/init.c:1324
msgid "`%T' fails to be an aggregate typedef"
msgstr "« %T » a échoué à être un typedef d'aggrégat"
-#: cp/init.c:1343
+#: cp/init.c:1333
msgid "type `%T' is of non-aggregate type"
msgstr "type « %T » est un type qui n'est pas d'aggrégat"
-#: cp/init.c:1446
-msgid "cannot call destructor `%T::~%T' without object"
-msgstr "ne peut appeler le destructeur «%T::~%T» sans objet"
-
-#: cp/init.c:1490
-msgid "invalid use of non-static field `%D'"
-msgstr "utilisation invalide d'un champ non statique « %D »"
-
-#. We can get here when processing a bad default
-#. argument, like:
-#. struct S { int a; void f(int i = a); }
-#: cp/init.c:1499 cp/method.c:160
-msgid "invalid use of member `%D'"
-msgstr "utilisation invalide du membre « %D »"
-
-#: cp/init.c:1509
-msgid "no method `%T::%D'"
-msgstr "pas de méthode «%T::%D»"
+#: cp/init.c:1425 cp/typeck.c:1798
+msgid "qualified type `%T' does not match destructor name `~%T'"
+msgstr "type qualifé « %T » ne concorde pas le nom du destructeur «~%T»"
-#: cp/init.c:1602
+#: cp/init.c:1433
msgid "incomplete type `%T' does not have member `%D'"
msgstr "type incomplet « %T » n'a pas de membre « %D »"
-#: cp/init.c:1676
+#: cp/init.c:1452
msgid "`%D' is not a member of type `%T'"
msgstr "« %D » n'est pas un membre de type « %T »"
-#: cp/init.c:1695
-#, fuzzy
+#: cp/init.c:1471
msgid "invalid pointer to bit-field `%D'"
-msgstr "pointeur illégal pour un champ de bits « %D »"
+msgstr "pointeur invalide pour un champ de bits « %D »"
-#: cp/init.c:1734
-msgid "object missing in use of pointer-to-member construct"
-msgstr "objet manquant dans l'utilisation du construit pointeur-à-membre"
+#: cp/init.c:1573
+msgid "invalid use of non-static member function `%D'"
+msgstr "utilisation invalide d'un membre non statique de fonction « %D »"
-#: cp/init.c:1774
-msgid "member `%D' is non-static but referenced as a static member"
-msgstr "membre « %D » est non statique mais référencé comme membre statique"
+#: cp/init.c:1579 cp/semantics.c:1236
+msgid "invalid use of non-static data member `%D'"
+msgstr "utilisation invalide d'un membre non statique de données « %D »"
-#: cp/init.c:1776 cp/typeck.c:2826 cp/typeck.c:2930
-msgid "at this point in file"
-msgstr "à ce point dans le fichier"
-
-#: cp/init.c:1813
-#, c-format
-msgid "object missing in `%E'"
-msgstr "objet manquant dans « %E »"
-
-#: cp/init.c:1944
+#: cp/init.c:1718
msgid "new of array type fails to specify size"
msgstr "new sur un type tableau a échoué dans l'évaluation de la taille"
-#: cp/init.c:1955
+#: cp/init.c:1729
msgid "size in array new must have integral type"
msgstr "taille d'un nouveau tableau (new) doit avoir un type entier"
-#: cp/init.c:1961
+#: cp/init.c:1735
msgid "zero size array reserves no space"
msgstr "tableau de taille zéro ne réserve pas d'espace"
-#: cp/init.c:2026
+#: cp/init.c:1801
msgid "new cannot be applied to a reference type"
msgstr "new ne peut être appliqué à un type référencé"
-#: cp/init.c:2032
+#: cp/init.c:1807
msgid "new cannot be applied to a function type"
msgstr "new ne peut être appliqué à un type de fonction"
-#: cp/init.c:2079
+#: cp/init.c:1853
msgid "call to Java constructor, while `jclass' undefined"
msgstr "appel d'un constructeur Java, alors que « jclass » est indéfini"
-#: cp/init.c:2095
+#: cp/init.c:1869
msgid "can't find class$"
msgstr "ne peut repérer class$"
-#: cp/init.c:2209
+#: cp/init.c:1995
msgid "invalid type `void' for new"
msgstr "type « void » invalide pour new"
-#: cp/init.c:2261
+#: cp/init.c:2005
+msgid "uninitialized const in `new' of `%#T'"
+msgstr "constante non initialisée dans « new» pour « %#T »"
+
+#: cp/init.c:2024
#, c-format
msgid "call to Java constructor with `%s' undefined"
msgstr "appel au constructeur Java avec « %s » indéfini"
-#: cp/init.c:2369
-msgid "ISO C++ forbids initialization in array new"
-msgstr "le C++ ISO interdit l'initialisation d'un nouveau tableau"
+#: cp/init.c:2065
+msgid "request for member `%D' is ambiguous"
+msgstr "la requête pour le membre « %D » est ambiguë"
-#: cp/init.c:2391 cp/typeck2.c:367 cp/typeck2.c:1208
-msgid "initializer list being treated as compound expression"
-msgstr "liste d'initaliseurs a été traité comme une expression composée"
+#: cp/init.c:2189
+msgid "ISO C++ forbids initialization in array new"
+msgstr "ISO C++ interdit l'initialisation d'un nouveau tableau"
-#: cp/init.c:2397
+#: cp/init.c:2213
msgid "ISO C++ forbids aggregate initializer to new"
-msgstr "le C++ ISO interdit l'aggrégation d'initialiseur à new"
-
-#: cp/init.c:2485
-msgid "uninitialized const in `new' of `%#T'"
-msgstr "constante non initialisée dans « new» pour «%#T »"
+msgstr "ISO C++ interdit l'aggrégation d'initialiseur à new"
-#: cp/init.c:2864
+#: cp/init.c:2658
msgid "initializer ends prematurely"
msgstr "fin prématurée de l'initialisation"
-#: cp/init.c:2934
+#: cp/init.c:2715
msgid "cannot initialize multi-dimensional array with initializer"
msgstr "ne peut initialiser un table multi-dimensionnel avec initialiseur"
-#: cp/init.c:3124
+#: cp/init.c:2876
+msgid "possible problem detected in invocation of delete operator:"
+msgstr "problème possible détecté dans l'invocation de l'opérateur delete:"
+
+#: cp/init.c:2879
+msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined."
+msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appellé, même s'ils sont déclarés lorsque la classe est définie"
+
+#: cp/init.c:2900
msgid "unknown array size in delete"
msgstr "taille du tableau inconnue dans delete"
-#: cp/init.c:3389
+#: cp/init.c:3165
msgid "type to vector delete is neither pointer or array type"
msgstr "type du vesteur delete n'est ni un pointeur ou un type tableau"
-#: cp/lex.c:136
+#: cp/lex.c:99
msgid "type name expected before `*'"
msgstr "nom de type attendu avec «*»"
-#: cp/lex.c:158
-msgid "cannot declare references to references"
-msgstr "ne peut décalrer des références vers des références"
-
-#: cp/lex.c:163
-msgid "cannot declare pointers to references"
-msgstr "ne peut déclarer des pointeurs vers des références"
-
-#: cp/lex.c:167
-msgid "type name expected before `&'"
-msgstr "nom de type attendu avant «&»"
-
-#: cp/lex.c:894
-#, c-format
-msgid "semicolon missing after %s declaration"
-msgstr "«;» manquant après la déclaration de %s"
-
-#: cp/lex.c:897
-msgid "semicolon missing after declaration of `%T'"
-msgstr "«;» manquant après la déclaration « %T »"
-
-#: cp/lex.c:945
+#: cp/lex.c:501
#, c-format
msgid "junk at end of #pragma %s"
msgstr "rebut à la fin de #pragma %s"
-#: cp/lex.c:952
+#: cp/lex.c:508
#, c-format
msgid "invalid #pragma %s"
msgstr "#pragma %s invalde"
-#: cp/lex.c:961
+#: cp/lex.c:516
msgid "#pragma vtable no longer supported"
msgstr "#pragma vtable n'est plus supporté"
-#: cp/lex.c:1038
+#: cp/lex.c:590
#, c-format
msgid "#pragma implementation for %s appears after file is included"
msgstr "implantation de #pragma pour %s apparaît après l'inclusion du fichier"
-#: cp/lex.c:1063
+#: cp/lex.c:614
msgid "junk at end of #pragma GCC java_exceptions"
msgstr "rebut à la fin de #pragma GCC java_exceptions"
-#: cp/lex.c:1107
+#: cp/lex.c:628
msgid "`%D' not defined"
msgstr "« %D » n'est pas défini"
-#: cp/lex.c:1110
+#: cp/lex.c:631
msgid "`%D' was not declared in this scope"
msgstr "« %D » n'a pas été déclaré dans cet horizon"
-#: cp/lex.c:1118
+#: cp/lex.c:639
msgid "`%D' undeclared (first use this function)"
msgstr "« %D » non déclaré (première utilisation dans cette fonction)"
-#: cp/lex.c:1122
+#: cp/lex.c:643
msgid "(Each undeclared identifier is reported only once for each function it appears in.)"
msgstr "(Chaque identificateur non déclaré est rapporté seulement une seule fois pour la fonction dans laquelle il apparaît.)"
-#: cp/lex.c:1242
-msgid "`::%D' undeclared (first use here)"
-msgstr "«::%D» non déclaré (première utilisation ici)"
-
-#: cp/mangle.c:2051
-#, fuzzy
+#. In a template, it is invalid to write "f()" or "f(3)" if no
+#. declaration of "f" is available. Historically, G++ and most
+#. other compilers accepted that usage since they deferred all name
+#. lookup until instantiation time rather than doing unqualified
+#. name lookup at template definition time; explain to the user what
+#. is going wrong.
+#.
+#. Note that we have the exact wording of the following message in
+#. the manual (trouble.texi, node "Name lookup"), so they need to
+#. be kept in synch.
+#: cp/lex.c:674
+msgid "there are no arguments to `%D' that depend on a template parameter, so a declaration of `%D' must be available"
+msgstr "il n'y a pas d'argument à « %D » qui dépend d'un paramètre du canevas, aussi une déclaration de « %D » doit être disponible"
+
+#: cp/lex.c:683
+msgid "(if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
+msgstr "(si vous utilisez « -fpermissive », G++ acceptera votre core, mais permettre l'utilisation d'un nom non déclaré est déprécié)"
+
+#: cp/mangle.c:2036
msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
-msgstr "new ne peut être appliqué à un type de fonction"
+msgstr "call_expr ne peut être mutilé en raison d'un faute dans l'ABI C++"
+
+#: cp/mangle.c:2089
+msgid "omitted middle operand to `?:' operand cannot be mangled"
+msgstr "opérande du milieu « ?: » omise, l'opérande ne peut être mutilée"
-#: cp/mangle.c:2363
+#: cp/mangle.c:2388
msgid "the mangled name of `%D' will change in a future version of GCC"
-msgstr ""
+msgstr "le nom mutilé de « %D » sera modifié dans une version future de GCC"
-#: cp/method.c:154
-msgid "invalid use of member `%D' in static member function"
-msgstr "utilisation invalide du membre « %D » dans un membre statique de fonction"
+#: cp/method.c:456
+msgid "generic thunk code fails for method `%#D' which uses `...'"
+msgstr "code « thunk» générique a échoué pour la méthode « %#D » laquelle utilise « ... »"
-#: cp/method.c:216
-msgid "use of namespace `%D' as expression"
-msgstr "utilisation d'un espace de dnomes « %D » comme expression"
+#: cp/method.c:681
+msgid "non-static const member `%#D', can't use default assignment operator"
+msgstr "constante non statique du membre « %#D », ne peut utiliser l'opérateur d'affectation par défaut"
-#: cp/method.c:221
-msgid "use of class template `%T' as expression"
-msgstr "utilisation du patron de classe « %T » comme expression"
+#: cp/method.c:686
+msgid "non-static reference member `%#D', can't use default assignment operator"
+msgstr "référence non statique du membre « %#D », ne peut utiliser l'opérateur d'affectation par défaut"
-#: cp/method.c:234
-#, c-format
-msgid "use of %s from containing function"
-msgstr "utilisation de %s d'un fonction contenante"
+#: cp/name-lookup.c:649
+msgid "`%#D' used prior to declaration"
+msgstr "« %#D » utilisé précédemment avant sa déclaration"
-#: cp/method.c:237
-msgid " `%#D' declared here"
-msgstr " «%#D» déclaré ici"
+#: cp/name-lookup.c:680
+msgid "redeclaration of `wchar_t' as `%T'"
+msgstr "redéclaration de « wchar_t» comme « %T »"
-#: cp/method.c:255
-msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
-msgstr "requête du membre « %D » est ambiquë dans de mutliples héritage de treillis"
+#. A redeclaration of main, but not a duplicate of the
+#. previous one.
+#.
+#. [basic.start.main]
+#.
+#. This function shall not be overloaded.
+#: cp/name-lookup.c:712
+msgid "invalid redeclaration of `%D'"
+msgstr "redéclaration invalide de « %D »"
-#: cp/method.c:458
-msgid "generic thunk code fails for method `%#D' which uses `...'"
-msgstr "code « thunk» générique a échoué pour la méthode «%#D» laquelle utilise « ... »"
+#: cp/name-lookup.c:713
+msgid "as `%D'"
+msgstr "comme « %D »"
-#: cp/method.c:697
-msgid "non-static const member `%#D', can't use default assignment operator"
-msgstr "constante non statique du membre «%#D», ne peut utiliser l'opérateur d'affectation par défaut"
+#: cp/name-lookup.c:801
+msgid "type mismatch with previous external decl of `%#D'"
+msgstr "non concordance de type avec la déclaration externe précédente de « %D »"
-#: cp/method.c:702
-msgid "non-static reference member `%#D', can't use default assignment operator"
-msgstr "référence non statique du membre «%#D», ne peut utiliser l'opérateur d'affectation par défaut"
+#: cp/name-lookup.c:802
+msgid "previous external decl of `%#D'"
+msgstr "déclaration externe précédente de « %#D »"
-#: parse.y:262
-msgid "`%s' tag used in naming `%#T'"
-msgstr "étiquette « %s » utilisée dans la dénomination de « %#T »"
+#: cp/name-lookup.c:844
+msgid "`%D' was previously implicitly declared to return `int'"
+msgstr "« %D » a été précédemment implicitement déclaré comme retournant un entier"
-#: parse.y:542
-msgid "keyword `export' not implemented, and will be ignored"
-msgstr "mot clé « export » n'est pas implanté et sera ignoré"
+#: cp/name-lookup.c:902
+msgid "extern declaration of `%#D' doesn't match"
+msgstr "déclaration externe de « %#D » ne concorde pas"
-#: parse.y:646
-msgid "use of linkage spec `%D' is different from previous spec `%D'"
-msgstr "utilisation de spéc de liaisons « %D » est différente de la spec précédente « %D »"
+#: cp/name-lookup.c:903
+msgid "global declaration `%#D'"
+msgstr "déclaration globale « %#D »"
-#: parse.y:943
-msgid "no base or member initializers given following ':'"
-msgstr "pas d'initialiseur de base ou membre donné après «:»"
+#: cp/name-lookup.c:939
+msgid "declaration of `%#D' shadows a parameter"
+msgstr "déclaration de « %#D » masque un paramètre"
-#: parse.y:984
-msgid "anachronistic old style base class initializer"
-msgstr "ancien style anachronique d'initialiseur de classe de base"
+#: cp/name-lookup.c:960
+#, c-format
+msgid "declaration of `%s' shadows a member of `this'"
+msgstr "déclaration de « %s » masque un membre de « this »"
+
+#: cp/name-lookup.c:1136
+msgid "name lookup of `%D' changed"
+msgstr "recherche du nom « %D » a changé"
+
+#: cp/name-lookup.c:1138
+msgid " matches this `%D' under ISO standard rules"
+msgstr " concorde avec « %D » selon les règles standards ISO"
-#. Handle `Class<Class<Type>>' without space in the `>>'
-#: parse.y:1117
-msgid "`>>' should be `> >' in template class name"
-msgstr "«>>» devrait être «> >» dans le nom du patron de la classe"
+#: cp/name-lookup.c:1140
+msgid " matches this `%D' under old rules"
+msgstr " concorde avec « %D » selon les vieilles règles"
-#: parse.y:1164
-msgid "use of template qualifier outside template"
-msgstr "utilisation d'un qualificateur de patron en dehors d'un patron"
+#: cp/name-lookup.c:1154 cp/name-lookup.c:1161
+msgid "name lookup of `%D' changed for new ISO `for' scoping"
+msgstr "recherche du nom de « %D » changé pour la nouvelle étendue ISO pour le « for »"
-#: parse.y:1193 parse.y:1202
+#: cp/name-lookup.c:1156
+msgid " cannot use obsolete binding at `%D' because it has a destructor"
+msgstr " ne peut utiliser une liaison obsolète à « %D » parce qu'il a un destructeur"
+
+#: cp/name-lookup.c:1163
+msgid " using obsolete binding at `%D'"
+msgstr " utilisation de liaison obsolète à « %D »"
+
+#: cp/name-lookup.c:1216
+#, c-format
+msgid "%s %s(%E) %p %d\n"
+msgstr "%s %s(%E) %p %d\n"
+
+#: cp/name-lookup.c:1219
#, c-format
-msgid "ISO C++ forbids an empty condition for `%s'"
-msgstr "le C++ ISO interdit une condition vide pour « %s »"
+msgid "%s %s %p %d\n"
+msgstr "%s %s %p %d\n"
+
+#: cp/name-lookup.c:1338
+msgid "XXX is_class_level != (current_scope == class_scope)\n"
+msgstr "XXX is_class_level != (current_scope == class_scope)\n"
-#: parse.y:1225
-msgid "definition of class `%T' in condition"
-msgstr "définition de la classe « %T » dans la condition"
+#: cp/name-lookup.c:1975
+msgid "`%#D' hides constructor for `%#T'"
+msgstr "« %#D » cache un constructeur pour « %#T »"
-#: parse.y:1227
-msgid "definition of enum `%T' in condition"
-msgstr "définition de l'aggrégat « %T » dans la condition"
+#: cp/name-lookup.c:1990
+msgid "`%#D' conflicts with previous using declaration `%#D'"
+msgstr "« %#D » en conflit avec une déclaration précédente « %#D »"
-#: parse.y:1238
-msgid "definition of array `%#D' in condition"
-msgstr "définition du tableau «%#D» dans la condition"
+#: cp/name-lookup.c:2002
+msgid "previous non-function declaration `%#D'"
+msgstr "déclaration précédente d'un non fonction « %#D »"
-#: parse.y:1351
-msgid "old style placement syntax, use () instead"
-msgstr "ancien style de syntaxe de positionnement, utiliser () à la place"
+#: cp/name-lookup.c:2003
+msgid "conflicts with function declaration `%#D'"
+msgstr "conflits avec la déclaration de fonction de « %#D »"
-#: parse.y:1362
-msgid "`%T' is not a valid expression"
-msgstr "« %T » n'est pas une expression valide"
+#. 7.3.3/5
+#. A using-declaration shall not name a template-id.
+#: cp/name-lookup.c:2080
+msgid "a using-declaration cannot specify a template-id. Try `using %D'"
+msgstr "l'utilisation d'une déclaration ne peut spécifier un template-id. Essayer « using %D »"
-#. This was previously allowed as an extension, but
-#. was removed in G++ 3.3.
-#: parse.y:1369
-#, fuzzy
-msgid "initialization of new expression with `='"
-msgstr "le C++ ISO interdit l'initialisation d'une nouvelle expression avec «=»"
+#: cp/name-lookup.c:2086
+msgid "namespace `%D' not allowed in using-declaration"
+msgstr "espace de noms « %D » n'est pas permis dans l'utilisation d'une déclaration"
-#: parse.y:1395
-msgid "ISO C++ forbids compound literals"
-msgstr "le C++ ISO interdit les chaînes composées"
+#. It's a nested name with template parameter dependent scope.
+#. This can only be using-declaration for class member.
+#: cp/name-lookup.c:2094 cp/name-lookup.c:2108 cp/name-lookup.c:3283
+msgid "`%T' is not a namespace"
+msgstr "« %T » n'est pas un espace de noms"
-#: parse.y:1642
-msgid "ISO C++ forbids braced-groups within expressions"
-msgstr "le C++ ISO interdit les groupes d'accolades à l'intérieur des expressions"
+#: cp/name-lookup.c:2132
+msgid "`%D' not declared"
+msgstr "« %D » n'est pas déclaré"
-#: parse.y:1721
-#, fuzzy
-msgid "invalid use of template `%D'"
-msgstr "utilisation invalide du membre « %D »"
+#. If the OLD_FN was really declared, the
+#. declarations don't match.
+#: cp/name-lookup.c:2144 cp/name-lookup.c:2186 cp/name-lookup.c:2211
+msgid "`%D' is already declared in this scope"
+msgstr "« %D » est déjà déclaré dans cette portée"
-#: parse.y:2053 parse.y:2068
-msgid "sigof type specifier"
-msgstr "spécificateur du type sigof"
+#: cp/name-lookup.c:2217
+msgid "using declaration `%D' introduced ambiguous type `%T'"
+msgstr "l'utlisation de la déclaration « %D » introduit un type ambigu « %T »"
-#: parse.y:2058
-msgid "`sigof' applied to non-aggregate expression"
-msgstr "« sigof » appliqué à une expression de non aggrégats"
+#. Definition isn't the kind we were looking for.
+#: cp/name-lookup.c:2376 cp/name-lookup.c:2395
+msgid "`%#D' redeclared as %C"
+msgstr "« %#D » rédéclaré comme %C"
-#: parse.y:2073
-msgid "`sigof' applied to non-aggregate type"
-msgstr "« sigof » appliqué à un type non aggrégat"
+#: cp/name-lookup.c:2805
+msgid "using-declaration for non-member at class scope"
+msgstr "l'utilisation de déclaration pour un non membre au niveau de la portée de la classe"
-#: parse.y:2339
-msgid "using `typename' outside of template"
-msgstr "utilisation de « typename » en dehors du patron"
+#: cp/name-lookup.c:2812
+msgid "using-declaration cannot name destructor"
+msgstr "utilisation de déclaration ne peut nommer le destructeur"
-#: parse.y:2356
-msgid "qualified name does not name a class"
-msgstr ""
+#: cp/name-lookup.c:2908
+msgid "declaration of `%D' not in a namespace surrounding `%D'"
+msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D »"
+
+#: cp/name-lookup.c:2948
+msgid "`%D' should have been declared inside `%D'"
+msgstr "« %D » devrait avoir été déclaré à l'intérieur de « %D »"
+
+#: cp/name-lookup.c:3012
+msgid "namespace alias `%D' not allowed here, assuming `%D'"
+msgstr "alias d'espace de noms « %D » n'est pas permis ici, on assume « %D »"
+
+#. The parser did not find it, so it's not there.
+#: cp/name-lookup.c:3127
+msgid "unknown namespace `%D'"
+msgstr "espace de nomes inconnu « %D »"
+
+#: cp/name-lookup.c:3277
+msgid "namespace `%T' undeclared"
+msgstr "espace de noms « %T » n'est pas déclaré"
+
+#: cp/name-lookup.c:3310
+msgid "strong using only meaningful at namespace scope"
+msgstr "forte n'ayant un sens seulement sur l'étendue de l'espace nom"
+
+#: cp/name-lookup.c:3317
+msgid "`%D' attribute directive ignored"
+msgstr "« %D » attribut de directive ignoré"
+
+#: cp/name-lookup.c:3450
+msgid "use of `%D' is ambiguous"
+msgstr "utilisation de « %D » est ambiguë"
+
+#: cp/name-lookup.c:3451
+msgid " first declared as `%#D' here"
+msgstr " d'abord déclaré comme « %#D » ici"
+
+#: cp/name-lookup.c:3454
+msgid " also declared as `%#D' here"
+msgstr " aussi déclaré comme « %#D » ici"
+
+#: cp/name-lookup.c:3469
+msgid "`%D' denotes an ambiguous type"
+msgstr "« %D » dénote un type ambigu"
+
+#: cp/name-lookup.c:3470
+msgid "%J first type here"
+msgstr "%J premier type ici"
+
+#: cp/name-lookup.c:3471
+msgid "%J other type here"
+msgstr "%J autre type ici"
+
+#. This happens for A::B where B is a template, and there are no
+#. template arguments.
+#: cp/name-lookup.c:3536 cp/typeck.c:1773
+msgid "invalid use of `%D'"
+msgstr "utilisation invalide de « %D »"
+
+#: cp/name-lookup.c:3577
+msgid "`%D::%D' is not a template"
+msgstr "« %D::%D » n'est pas un canevas"
+
+#: cp/name-lookup.c:3594
+msgid "`%D' undeclared in namespace `%D'"
+msgstr "« %D » non déclaré dans l'espace de noms « %D »"
+
+#: cp/name-lookup.c:4055
+msgid "`%D' is not a function,"
+msgstr "« %D » n'est pas une fonction"
+
+#: cp/name-lookup.c:4056
+msgid " conflict with `%D'"
+msgstr " en conflit avec « %D »"
+
+#: cp/name-lookup.c:4794
+msgid "XXX entering pop_everything ()\n"
+msgstr "XXX on entre dans pop_everything ()\n"
+
+#: cp/name-lookup.c:4803
+msgid "XXX leaving pop_everything ()\n"
+msgstr "XXX on quitte pop_everything ()\n"
+
+#: cp/parser.c:609
+msgid "invalid token"
+msgstr "jeton invalide"
+
+#: cp/parser.c:1806
+msgid "`%D::%D' has not been declared"
+msgstr "« %D::%D » n'a pas été déclaré"
+
+#: cp/parser.c:1809 cp/semantics.c:2284
+msgid "`::%D' has not been declared"
+msgstr "« ::%D » n'a pas été déclaré"
+
+#: cp/parser.c:1811
+msgid "`%D' has not been declared"
+msgstr "« %D » n'a pas été déclaré"
-#: parse.y:2417
+#: cp/parser.c:1814
+msgid "`%D::%D' %s"
+msgstr "« %D::%D » %s"
+
+#: cp/parser.c:1816
+msgid "`::%D' %s"
+msgstr "« ::%D » %s"
+
+#: cp/parser.c:1818
+msgid "`%D' %s"
+msgstr "« %D » %s"
+
+#: cp/parser.c:1870
+msgid "new types may not be defined in a return type"
+msgstr "nouveaux types ne peuvent être définis dans un type à retourner"
+
+#: cp/parser.c:1888 cp/pt.c:4185
+msgid "`%T' is not a template"
+msgstr "« %T » n'est pas un canevas"
+
+#: cp/parser.c:1890
#, c-format
-msgid "storage class specifier `%s' not allowed after struct or class"
-msgstr "spécificateur de classe de stockages « %s » n'est pas permis après struct ou class"
+msgid "`%s' is not a template"
+msgstr "« %s » n'est pas un canevas"
+
+#: cp/parser.c:1892
+msgid "invalid template-id"
+msgstr "id de canevas invalide"
-#: parse.y:2419
+#: cp/parser.c:1927
#, c-format
-msgid "type specifier `%s' not allowed after struct or class"
-msgstr "spécificateur de type « %s » n'est pas permis après struct ou class"
+msgid "%s cannot appear in a constant-expression"
+msgstr "%s ne peut apparaître dans une expression de constante"
-#: parse.y:2421
+#. Issue an error message.
+#: cp/parser.c:1954
#, c-format
-msgid "type qualifier `%s' not allowed after struct or class"
-msgstr "qualificateur de type « %s » n'est pas permis après struct ou class"
+msgid "`%s' does not name a type"
+msgstr "« %s » ne nomme pas un type"
-#: parse.y:2423
-msgid "no body nor ';' separates two class, struct or union declarations"
-msgstr "pas de corps ni de «;» séparant les deux déclarations de classes, struct ou union"
+#: cp/parser.c:1985
+msgid "(perhaps `typename %T::%s' was intended)"
+msgstr "(peut-être « typename %T::%s » était votre intention"
-#: parse.y:2553
-msgid "no bases given following `:'"
-msgstr "pas de base donnée après «:»"
+#: cp/parser.c:2407
+msgid "ISO C++ forbids braced-groups within expressions"
+msgstr "ISO C++ interdit les groupes d'accolades à l'intérieur des expressions"
-#: parse.y:2584 parse.y:2599
-msgid "`%D' access"
-msgstr "« %D » accès"
+#: cp/parser.c:2416
+msgid "statement-expressions are allowed only inside functions"
+msgstr "expression de déclaration sont permises seulement à l'intérieur de fonctions"
-#: parse.y:2589
-msgid "multiple access specifiers"
-msgstr "spécificateurs d'accès multiples"
+#: cp/parser.c:2467
+msgid "`this' may not be used in this context"
+msgstr "« cela » ne peut être utilisé dans ce contexte"
-#: parse.y:2607
-msgid "multiple `virtual' specifiers"
-msgstr "spécificateurs « virtual » multiples"
+#: cp/parser.c:2617
+msgid "local variable `%D' may not appear in this context"
+msgstr "variable locale « %D » ne peut apparaître dans ce contexte"
-#: parse.y:2644
-msgid "missing ';' before right brace"
-msgstr "«;» manquant avant l'accolade de droite"
+#: cp/parser.c:2982
+msgid "typedef-name `%D' used as destructor declarator"
+msgstr "nom du typdef « %D » utilisé comme déclarateur de destructeur"
-#: parse.y:2865
-msgid "ISO C++ forbids array dimensions with parenthesized type in new"
-msgstr "le C++ ISO interdit l'utilisation de parenthèses autour du type pour les dimensions de tableaux avec new"
+#: cp/parser.c:3627
+msgid "ISO C++ forbids compound-literals"
+msgstr "ISO C++ interdit les chaînes composées"
-#: parse.y:3152 parse.y:3172 parse.y:3181 parse.y:3210
-msgid "`%T' is not a class or namespace"
-msgstr "« %T » n'est pas une classe ou un espace de noms"
+#: cp/parser.c:4599
+msgid "expression in new-declarator must have integral or enumeration type"
+msgstr "expression dans le nouveau déclarateur doit être un type entier ou d'énumération"
+
+#: cp/parser.c:4775
+msgid "use of old-style cast"
+msgstr "utilisation d'un vieux style de transtypage (cast)"
-#: parse.y:3377
-msgid "ISO C++ forbids label declarations"
-msgstr "le C++ ISO interdit la déclaration d'étiquette"
+#: cp/parser.c:5528
+#, c-format
+msgid "case label `%E' not within a switch statement"
+msgstr "étiquette du CASE « %E » n'est pas à l'intérieur de la déclaration du SWITCH"
-#: parse.y:3537
+#: cp/parser.c:6070
msgid "ISO C++ forbids computed gotos"
-msgstr "le C++ ISO interdit les gotos calculés"
+msgstr "ISO C++ interdit les gotos calculés"
-#: parse.y:3545
-msgid "label must be followed by statement"
-msgstr "l'étiquette doit être suivie d'une déclaration"
+#: cp/parser.c:6190
+msgid "extra `;'"
+msgstr "« ; » superflu"
-#: parse.y:3590
-msgid "must have at least one catch per try block"
-msgstr "doit avoir au moins un intercepteur par bloc d'essais"
+#: cp/parser.c:6485
+msgid "mixing declarations and function-definitions is forbidden"
+msgstr "mélange de déclarations et de définitions de fonction est interdit"
-#: parse.y:3650
-msgid "ISO C++ forbids compound statements inside for initializations"
-msgstr "le C++ ISO interdit les déclarations composées à l'intérieur des initialisations"
+#: cp/parser.c:6623
+msgid "duplicate `friend'"
+msgstr "« friend » apparaît en double"
-#. This helps us recover from really nasty
-#. parse errors, for example, a missing right
-#. parenthesis.
-#: parse.y:3737 parse.y:3747
-msgid "possibly missing ')'"
-msgstr "«)» possiblement manquante"
+#: cp/parser.c:6772
+msgid "class definition may not be declared a friend"
+msgstr "définition de classe ne peut pas être déclaré comme ami"
-#: parse.y:3840
-msgid "type specifier omitted for parameter"
-msgstr "spécificateur de type omis pour le paramètre"
+#: cp/parser.c:7086
+msgid "only constructors take base initializers"
+msgstr "seuls les constructeurs prennent des initialiseurs de base"
-#: parse.y:3849
-#, c-format
-msgid "`%E' is not a type, use `typename %E' to make it one"
-msgstr "« %E» n'est pas un type, utiliser «typename %E » pour en faire un"
+#: cp/parser.c:7137
+msgid "anachronistic old-style base class initializer"
+msgstr "ancien style anachronique d'initialiseur de classe de base"
-#: parse.y:3851
-msgid "no type `%D' in `%T'"
-msgstr "pas de type « %D » dans « %T »"
+#. Warn that we do not support `export'.
+#: cp/parser.c:7530
+msgid "keyword `export' not implemented, and will be ignored"
+msgstr "mot clé « export » n'est pas implanté et sera ignoré"
-#: parse.y:3854
-#, c-format
-msgid "type specifier omitted for parameter `%E'"
-msgstr "spécificateur de type omis pour le paramètre « %E »"
+#. Otherwise, emit an error about the invalid digraph, but continue
+#. parsing because we got our argument list.
+#: cp/parser.c:7890
+msgid "`<::' cannot begin a template-argument list"
+msgstr "« <:: » ne peut pas être au début d'une liste d'un canevas d'arguments"
+
+#: cp/parser.c:7891
+msgid "`<:' is an alternate spelling for `['. Insert whitespace between `<' and `::'"
+msgstr "« <: » est une épellation alternative pour « [ ». Insérer des blancs d,espacement entre « < » et « :: »"
+
+#: cp/parser.c:7898
+msgid "(if you use `-fpermissive' G++ will accept your code)"
+msgstr "(si vous utiliser « -fpermissive » G++ acceptera votre code)"
+
+#. Explain what went wrong.
+#: cp/parser.c:8070
+msgid "non-template `%D' used as template"
+msgstr "« %D » qui n'est pas un canevas est utilisé comme canevas"
+
+#: cp/parser.c:8071
+msgid "(use `%T::template %D' to indicate that it is a template)"
+msgstr "(utiliser « %T::template %D » pour indiquer que c'est un canevas)"
+
+#: cp/parser.c:9000
+msgid "using `typename' outside of template"
+msgstr "utilisation de « typename » en dehors du canevas"
+
+#: cp/parser.c:9122
+msgid "expected type-name"
+msgstr "un nom de type attendu"
+
+#: cp/parser.c:9181
+msgid "type attributes are honored only at type definition"
+msgstr "type d'attributs sont honorés seulement lors de la définitions de type"
+
+#. [namespace.udecl]
+#.
+#. A using declaration shall not name a template-id.
+#: cp/parser.c:9565
+msgid "a template-id may not appear in a using-declaration"
+msgstr "un id de canevas ne peut pas apparaître dans l'utilisation de la déclaration"
+
+#: cp/parser.c:9891
+msgid "an asm-specification is not allowed on a function-definition"
+msgstr "une spécification asm n'est pas permise dans la définition de fonction"
+
+#: cp/parser.c:9893
+msgid "attributes are not allowed on a function-definition"
+msgstr "attributs ne sont pas permis dans la définition de fonction"
+
+#: cp/parser.c:10026
+msgid "attributes after parenthesized initializer ignored"
+msgstr "attributs après l'initialisateur mis entre paranthèses sont ignorés"
+
+#: cp/parser.c:11223
+msgid "file ends in default argument"
+msgstr "fin de fichier dans l'argument par défaut"
+
+#: cp/parser.c:11279
+msgid "deprecated use of default argument for parameter of non-function"
+msgstr "utilisation de l'argument par défaut pour un paramètre d'une non fonction"
+
+#: cp/parser.c:11282
+msgid "default arguments are only permitted for function parameters"
+msgstr "arguments par défaut sont permis seulement pour les paramètres de fonction"
+
+#: cp/parser.c:12007
+msgid "declaration of `%D' in `%D' which does not enclose `%D'"
+msgstr "déclaration de « %D » dans « %D » lequel n'entoure pas « %D »"
-#: parse.y:3862
-msgid "'%D' is used as a type, but is not defined as a type."
-msgstr "« %D » est utilisé comme type, mais n'est pas défini comme type."
+#: cp/parser.c:12020
+msgid "extra qualification ignored"
+msgstr "qualification superflue ignorée"
-#: cp/pt.c:284
+#: cp/parser.c:12031
+msgid "an explicit specialization must be preceded by 'template <>'"
+msgstr "spécialisation explicite doit être précédé par « template <> »"
+
+#: cp/parser.c:12311
+msgid "extra semicolon"
+msgstr "« ; » superflu"
+
+#: cp/parser.c:12329
+msgid "a class-key must be used when declaring a friend"
+msgstr "une clé de classe doit être utilise lors de la déclaration d'un ami"
+
+#: cp/parser.c:12360
+msgid "friend declaration does not name a class or function"
+msgstr "déclaration amie ne nomme pas une classe ou une fonction"
+
+#: cp/parser.c:12531
+msgid "pure-specifier on function-definition"
+msgstr "spécificateur pur lors de la définition d'une fonction"
+
+#: cp/parser.c:12804
+msgid "keyword `typename' not allowed outside of templates"
+msgstr "mot clé « typename » n'est pas permis en dehors du canevas"
+
+#: cp/parser.c:12806
+msgid "keyword `typename' not allowed in this context (the base class is implicitly a type)"
+msgstr "mot clé « typename » n'est pas permis dans ce contexte (la classe de base est implicitement un type)"
+
+#: cp/parser.c:13624
+msgid "reference to `%D' is ambiguous"
+msgstr "référence à « %D » est ambiguë"
+
+#: cp/parser.c:13798
+msgid "too few template-parameter-lists"
+msgstr "trop peu de canevas de listes de paramètres"
+
+#. Otherwise, there are too many template parameter lists. We have
+#. something like:
+#.
+#. template <class T> template <class U> void S::f();
+#: cp/parser.c:13813
+msgid "too many template-parameter-lists"
+msgstr "trop de canevas de listes de paramètres"
+
+#. If begin_function_definition didn't like the definition, skip
+#. the entire function.
+#: cp/parser.c:14090
+msgid "invalid function declaration"
+msgstr "déclaration de fonction invalide"
+
+#. Issue an error message.
+#: cp/parser.c:14127
+msgid "named return values are no longer supported"
+msgstr "valeurs nommées à retourner ne sont plus supportées"
+
+#: cp/parser.c:14455
+msgid "`>>' should be `> >' within a nested template argument list"
+msgstr "« >> » devrait être « > > » à l'intérieur du canevas de la liste d'arguments"
+
+#. If this is not a nested template argument list, the '>>' is
+#. a typo for '>'. Emit an error message and continue.
+#: cp/parser.c:14463
+msgid "spurious `>>', use `>' to terminate a template argument list"
+msgstr "faux « >> », utiliser « > » pour terminer la liste d'argument du canevas"
+
+#: cp/parser.c:14950
+msgid "`%s' tag used in naming `%#T'"
+msgstr "étiquette « %s » utilisée dans la dénomination de « %#T »"
+
+#: cp/parser.c:14970
+msgid "%D redeclared with different access"
+msgstr "« %#D » redéclaré avec un accès différent"
+
+#: cp/parser.c:14987
+msgid "`template' (as a disambiguator) is only allowed within templates"
+msgstr "« template » (afin de rendre moins ambiguë) est seulement permis à l'intérieur des canevas"
+
+#: cp/pt.c:243
msgid "data member `%D' cannot be a member template"
-msgstr "membre de données « %D » ne peut être membre du patron"
+msgstr "membre de données « %D » ne peut être membre du canevas"
-#: cp/pt.c:296
+#: cp/pt.c:255
msgid "invalid member template declaration `%D'"
-msgstr "déclaration de membre de patron invalide « %D »"
+msgstr "déclaration de membre de canevas invalide « %D »"
-#: cp/pt.c:691
+#: cp/pt.c:637
msgid "explicit specialization in non-namespace scope `%D'"
msgstr "spécialisation explicite dans la portée d'un non espace de noms « %D »"
-#: cp/pt.c:703
+#: cp/pt.c:649
msgid "enclosing class templates are not explicitly specialized"
-msgstr "fermetures de patrons de classe ne sont pas explicitement spécialisées"
+msgstr "fermetures de canevass de classe ne sont pas explicitement spécialisées"
-#: cp/pt.c:792 cp/pt.c:833
+#: cp/pt.c:739 cp/pt.c:780
msgid "specializing `%#T' in different namespace"
-msgstr "spécialisation de «%#T» dans différents espaces de noms"
+msgstr "spécialisation de « %#T » dans différents espaces de noms"
-#: cp/pt.c:793 cp/pt.c:834
+#: cp/pt.c:740 cp/pt.c:781
msgid " from definition of `%#D'"
-msgstr " à partir de la définition de «%#D»"
+msgstr " à partir de la définition de « %#D »"
-#: cp/pt.c:801
+#: cp/pt.c:748
msgid "specialization of `%T' after instantiation"
msgstr "spécialisation de « %T » après instanciation"
-#: cp/pt.c:848
-#, fuzzy
+#: cp/pt.c:795
msgid "specialization `%T' after instantiation `%T'"
-msgstr "spécialisation de « %T » après instanciation"
+msgstr "spécialisation de « %T » après instanciation « %T »"
-#: cp/pt.c:860
+#: cp/pt.c:807
msgid "explicit specialization of non-template `%T'"
-msgstr "spécialisation explicite du non patron « %T »"
+msgstr "spécialisation explicite du non canevas « %T »"
-#: cp/pt.c:992
+#: cp/pt.c:1067
msgid "specialization of %D after instantiation"
msgstr "spécialisation de %D après instanciation"
-#: cp/pt.c:1096
+#: cp/pt.c:1192
msgid "%s %+#D"
msgstr "%s %+#D"
-#: cp/pt.c:1147
+#: cp/pt.c:1241
msgid "`%D' is not a function template"
-msgstr "« %D » n'est pas un patron de fonction"
+msgstr "« %D » n'est pas un canevas de fonction"
-#: cp/pt.c:1286
+#: cp/pt.c:1380
msgid "template-id `%D' for `%+D' does not match any template declaration"
-msgstr "template-id « %D » pour «%+D» ne concorde pas avec aucune déclaration de patron"
+msgstr "template-id « %D » pour « %+D » ne concorde pas avec aucune déclaration de canevas"
-#: cp/pt.c:1294
+#: cp/pt.c:1388
msgid "ambiguous template specialization `%D' for `%+D'"
-msgstr "spécialisation de patron amibiguë « %D » pour «%+D»"
+msgstr "spécialisation de canevas amibiguë « %D » pour « %+D »"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:1521 cp/pt.c:1595
+#: cp/pt.c:1611 cp/pt.c:1685
msgid "template-id `%D' in declaration of primary template"
-msgstr "template-id « %D » dans la déclaration de patron primaire"
+msgstr "template-id « %D » dans la déclaration de canevas primaire"
-#: cp/pt.c:1534
+#: cp/pt.c:1624
msgid "template parameter list used in explicit instantiation"
-msgstr "patron de liste de paramètres utilisé dans une instanciation explicite"
+msgstr "canevas de liste de paramètres utilisé dans une instanciation explicite"
-#: cp/pt.c:1540
+#: cp/pt.c:1630
msgid "definition provided for explicit instantiation"
msgstr "définition fournie pour une instanciation explicite"
-#: cp/pt.c:1546
+#: cp/pt.c:1636
msgid "too many template parameter lists in declaration of `%D'"
-msgstr "trop de patrons de listes de paramètres dans la déclaration de « %D »"
+msgstr "trop de canevass de listes de paramètres dans la déclaration de « %D »"
-#: cp/pt.c:1562
+#: cp/pt.c:1652
msgid "too few template parameter lists in declaration of `%D'"
-msgstr "trop peu de patrons de listes de paramètres dans la déclaration de « %D »"
+msgstr "trop peu de canevass de listes de paramètres dans la déclaration de « %D »"
-#: cp/pt.c:1579
+#: cp/pt.c:1669
msgid "explicit specialization not preceded by `template <>'"
msgstr "spécialisation explicite n'est pas précédée de « template <> »"
-#: cp/pt.c:1592
+#: cp/pt.c:1682
msgid "partial specialization `%D' of function template"
-msgstr "spécialisation partielle « %D » du patron de fonction"
+msgstr "spécialisation partielle « %D » du canevas de fonction"
-#: cp/pt.c:1624
+#: cp/pt.c:1714
msgid "default argument specified in explicit specialization"
msgstr "argument par défaut spécifié dans la spécialisation explicite"
-#: cp/pt.c:1628
+#: cp/pt.c:1718
msgid "template specialization with C linkage"
-msgstr "spécialisation de patron avec édition de liens C"
+msgstr "spécialisation de canevas avec édition de liens C"
#. From [temp.expl.spec]:
#.
@@ -17020,824 +16052,829 @@ msgstr "spécialisation de patron avec édition de liens C"
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:1715
+#: cp/pt.c:1802
msgid "specialization of implicitly-declared special member function"
msgstr "spécialisation d'un membre spécial d'nue fonction déclaré implicitement"
-#: cp/pt.c:1759
+#: cp/pt.c:1846
msgid "no member function `%D' declared in `%T'"
msgstr "pas de membre de fonction « %D » déclaré dans « %T »"
#. There are two many template parameter lists.
-#: cp/pt.c:1909
+#: cp/pt.c:2001
msgid "too many template parameter lists in declaration of `%T'"
-msgstr "trop de patrons de listes de paramètres dans la déclaration de « %T »"
+msgstr "trop de canevass de listes de paramètres dans la déclaration de « %T »"
-#: cp/pt.c:2005
+#: cp/pt.c:2094
msgid " shadows template parm `%#D'"
-msgstr " masque le paramètre du patron «%#D»"
+msgstr " masque le paramètre du canevas « %#D »"
-#: cp/pt.c:2409
+#: cp/pt.c:2491
msgid "template parameters not used in partial specialization:"
-msgstr "paramètres du patron ne sont pas utilisés dans la spécialisation partielle:"
+msgstr "paramètres du canevas ne sont pas utilisés dans la spécialisation partielle:"
-#: cp/pt.c:2413
+#: cp/pt.c:2495
msgid " `%D'"
msgstr " « %D »"
-#: cp/pt.c:2425
+#: cp/pt.c:2507
msgid "partial specialization `%T' does not specialize any template arguments"
-msgstr "spécialisation partielle « %T » ne spécialise pas aucun patron d'arguments"
+msgstr "spécialisation partielle « %T » ne spécialise pas aucun canevas d'arguments"
-#: cp/pt.c:2450
+#: cp/pt.c:2532
#, c-format
msgid "template argument `%E' involves template parameter(s)"
-msgstr "patron d'argument « %E » implique des paramètres du patron"
+msgstr "canevas d'argument « %E » implique des paramètres du canevas"
-#: cp/pt.c:2494
+#: cp/pt.c:2576
msgid "type `%T' of template argument `%E' depends on template parameter(s)"
-msgstr "type « %T » du patron d'argument « %E » dépend des paramètres du patron"
+msgstr "type « %T » du canevas d'argument « %E » dépend des paramètres du canevas"
-#: cp/pt.c:2582
+#: cp/pt.c:2661
msgid "no default argument for `%D'"
msgstr "pas d'argument par défaut pour « %D »"
-#: cp/pt.c:2735
+#: cp/pt.c:2810
msgid "template with C linkage"
-msgstr "patron avec liaison C"
+msgstr "canevas avec liaison C"
-#: cp/pt.c:2738
+#: cp/pt.c:2813
msgid "template class without a name"
-msgstr "patron de classe sans nom"
+msgstr "canevas de classe sans nom"
+
+#. [temp.mem]
+#.
+#. A destructor shall not be a member template.
+#: cp/pt.c:2820
+msgid "destructor `%D' declared as member template"
+msgstr "destructeur « %D » déclaré en tant que membre du canevas"
-#: cp/pt.c:2815
+#: cp/pt.c:2900
msgid "`%D' does not declare a template type"
-msgstr "« %D » ne déclare pas un type de patron"
+msgstr "« %D » ne déclare pas un type de canevas"
-#: cp/pt.c:2821
+#: cp/pt.c:2906
msgid "template definition of non-template `%#D'"
-msgstr "définition de patron d'un non patron «%#D»"
+msgstr "définition de canevas d'un non canevas « %#D »"
-#: cp/pt.c:2862
+#: cp/pt.c:2947
msgid "expected %d levels of template parms for `%#D', got %d"
-msgstr "attendait %d niveaux de patron de paramètres pour «%#D», obtenu %d"
+msgstr "attendait %d niveaux de canevas de paramètres pour « %#D », obtenu %d"
-#: cp/pt.c:2874
+#: cp/pt.c:2959
msgid "got %d template parameters for `%#D'"
-msgstr "a obtenu %d paramètres de patron pour «%#D»"
+msgstr "a obtenu %d paramètres de canevas pour « %#D »"
-#: cp/pt.c:2877
+#: cp/pt.c:2962
msgid "got %d template parameters for `%#T'"
-msgstr "a obtenu %d paramètres de patron pour «%#T»"
+msgstr "a obtenu %d paramètres de canevas pour « %#T »"
-#: cp/pt.c:2879
+#: cp/pt.c:2964
#, c-format
msgid " but %d required"
msgstr " mais %d son requis"
-#: cp/pt.c:2962
+#: cp/pt.c:3042
msgid "`%T' is not a template type"
-msgstr "« %T » n'est pas un type patron"
+msgstr "« %T » n'est pas un type canevas"
-#: cp/pt.c:2978
+#: cp/pt.c:3058
msgid "previous declaration `%D'"
msgstr "déclaration précédente de « %D »"
-#: cp/pt.c:2979
+#: cp/pt.c:3059
#, c-format
msgid "used %d template parameter%s instead of %d"
-msgstr "utilisé %d patrons paramètre%s au lieu de %d"
+msgstr "utilisé %d canevass paramètre%s au lieu de %d"
-#: cp/pt.c:2995
+#: cp/pt.c:3075
msgid "template parameter `%#D'"
-msgstr "patron de paramètre «%#D»"
+msgstr "canevas de paramètre « %#D »"
-#: cp/pt.c:2996
+#: cp/pt.c:3076
msgid "redeclared here as `%#D'"
-msgstr "redéclaré ici comme «%#D»"
+msgstr "redéclaré ici comme « %#D »"
#. We have in [temp.param]:
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:3006
+#: cp/pt.c:3086
msgid "redefinition of default argument for `%#D'"
-msgstr "redéfinition de l'argument par défaut pour «%#D»"
+msgstr "redéfinition de l'argument par défaut pour « %#D »"
-#: cp/pt.c:3007
-msgid " original definition appeared here"
-msgstr " définition originale apparaît ici"
+#: cp/pt.c:3087
+msgid "%J original definition appeared here"
+msgstr "%J définition originale apparaît ici"
-#: cp/pt.c:3100
+#: cp/pt.c:3235
#, c-format
msgid "`%E' is not a valid template argument"
-msgstr "« %E » n'est pas un argument valide pour le patron"
+msgstr "« %E » n'est pas un argument valide pour le canevas"
-#: cp/pt.c:3104
+#: cp/pt.c:3239
msgid "it must be the address of a function with external linkage"
msgstr "il doit être l'adresse d'une fonction avec lien externe"
-#: cp/pt.c:3106
+#: cp/pt.c:3241
msgid "it must be the address of an object with external linkage"
msgstr "il doît être l'adresse d'un objet avec lien externe"
-#: cp/pt.c:3110
+#: cp/pt.c:3244
msgid "it must be a pointer-to-member of the form `&X::Y'"
msgstr "il doit être un pointeur-vers-un-membre de la forme «&X::Y»"
-#: cp/pt.c:3121
+#: cp/pt.c:3255
#, c-format
msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
-msgstr "chaîne %E n'est pas un patron d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
+msgstr "chaîne %E n'est pas un canevas d'argument valide parce que c'est l'adresse d'un objet avec lien statique"
-#: cp/pt.c:3133
+#: cp/pt.c:3270
#, c-format
msgid "address of non-extern `%E' cannot be used as template argument"
-msgstr "adresse du non externe « %E » ne peut être utilisé comme patron d'argument"
+msgstr "adresse du non externe « %E » ne peut être utilisé comme canevas d'argument"
-#: cp/pt.c:3144
+#: cp/pt.c:3279
#, c-format
msgid "non-constant `%E' cannot be used as template argument"
-msgstr "la non const « %E » ne peut être utilisé comme un patron d'argument"
+msgstr "la non const « %E » ne peut être utilisé comme un canevas d'argument"
+
+#: cp/pt.c:3287
+msgid "type '%T' cannot be used as a value for a non-type template-parameter"
+msgstr "type « %T » ne peut être utilisé comme une valeur pour un non type de paramètre de canevas"
+
+#: cp/pt.c:3290
+msgid "invalid use of '%D' as a non-type template-argument"
+msgstr "utilisation invalide de « %D » pour un non type de paramètre de canevas"
-#: cp/pt.c:3151
+#: cp/pt.c:3292
#, c-format
-msgid "object `%E' cannot be used as template argument"
-msgstr "objet « %E » ne peut être utilisé comme un patron d'argument"
+msgid "invalid use of '%E' as a non-type template-argument"
+msgstr "utilisation invalide de « %E » pour un non type de paramètre de canevas"
-#: cp/pt.c:3526
+#: cp/pt.c:3657
#, c-format
msgid "to refer to a type member of a template parameter, use `typename %E'"
-msgstr "pour référencer un type de membre de patron de paramètres, utiliser « typename %E »"
+msgstr "pour référencer un type de membre de canevas de paramètres, utiliser « typename %E »"
-#: cp/pt.c:3539 cp/pt.c:3555 cp/pt.c:3594
+#: cp/pt.c:3670 cp/pt.c:3688 cp/pt.c:3727
msgid "type/value mismatch at argument %d in template parameter list for `%D'"
-msgstr "non concordance de type/valeur pour l'argument %d dans la liste des paramètres du patron de « %D »"
+msgstr "non concordance de type/valeur pour l'argument %d dans la liste des paramètres du canevas de « %D »"
-#: cp/pt.c:3542
+#: cp/pt.c:3673
msgid " expected a constant of type `%T', got `%T'"
msgstr " attendait une constante de type « %T », a obtenu « %T »"
-#: cp/pt.c:3546
+#: cp/pt.c:3677
+#, c-format
+msgid " expected a class template, got `%E'"
+msgstr " attendait un canevas de classe, a obtenu « %E »"
+
+#: cp/pt.c:3679
#, c-format
msgid " expected a type, got `%E'"
msgstr " attendait un type, a obtenu « %E »"
-#: cp/pt.c:3558
+#: cp/pt.c:3691
msgid " expected a type, got `%T'"
msgstr " attendait un type, a obtenu « %T »"
-#: cp/pt.c:3560
+#: cp/pt.c:3693
msgid " expected a class template, got `%T'"
-msgstr " attendait un patron de classe, a obtenu « %T »"
+msgstr " attendait un canevas de classe, a obtenu « %T »"
-#: cp/pt.c:3596
+#: cp/pt.c:3729
msgid " expected a template of type `%D', got `%D'"
-msgstr " attendait un patron de type « %D », a obtenu « %D »"
-
-#: cp/pt.c:3618
-msgid "template-argument `%T' uses anonymous type"
-msgstr "argument du patron « %T » utilise un type anonyme"
-
-#: cp/pt.c:3621
-msgid "template-argument `%T' uses local type `%T'"
-msgstr "argument du patron « %T » utilise un type local « %T »"
-
-#: cp/pt.c:3631
-#, fuzzy
-msgid "template-argument `%T' is a variably modified type"
-msgstr "argument du patron « %T » utilise un type anonyme"
+msgstr " attendait un canevas de type « %D », a obtenu « %D »"
-#: cp/pt.c:3666
+#: cp/pt.c:3764
msgid "could not convert template argument `%E' to `%T'"
-msgstr "ne peut convertir l'argument du patron « %E » vers « %T »"
+msgstr "ne peut convertir l'argument du canevas « %E » vers « %T »"
-#: cp/pt.c:3710
+#: cp/pt.c:3804
#, c-format
msgid "wrong number of template arguments (%d, should be %d)"
-msgstr "nombre erroné d'arguments du patron (%d devrait être %d)"
+msgstr "nombre erroné d'arguments du canevas (%d devrait être %d)"
-#: cp/pt.c:3714
+#: cp/pt.c:3808
msgid "provided for `%D'"
msgstr "fournie pour « %D »"
-#: cp/pt.c:3761
+#: cp/pt.c:3836
#, c-format
msgid "template argument %d is invalid"
-msgstr "patron de l'argument %d est invalide"
+msgstr "canevas de l'argument %d est invalide"
-#: cp/pt.c:3997
+#: cp/pt.c:4057
msgid "non-template used as template"
-msgstr "non patron utilisé comme patron"
+msgstr "non canevas utilisé comme canevas"
-#: cp/pt.c:4139
-msgid "`%T' is not a template"
-msgstr "« %T » n'est pas un patron"
-
-#: cp/pt.c:4152
+#: cp/pt.c:4197
msgid "non-template type `%T' used as a template"
-msgstr "type non patron « %T » utilisé comme un patron"
+msgstr "type non canevas « %T » utilisé comme un canevas"
-#: cp/pt.c:4154
+#: cp/pt.c:4199
msgid "for template declaration `%D'"
-msgstr "pour la déclaration du patron « %D »"
+msgstr "pour la déclaration du canevas « %D »"
-#: cp/pt.c:4770
+#: cp/pt.c:4846
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
-msgstr "instantiation de la profondeur du patron excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
+msgstr "instantiation de la profondeur du canevas excède le maximum de %d (utiliser -ftemplate-depth-NN pour augmenter le maximum) lors de l'instanciation de « %D »"
-#: cp/pt.c:5247
+#: cp/pt.c:5286
msgid "ambiguous class template instantiation for `%#T'"
-msgstr "instanciation ambiguë de patron de classe pour «%#T»"
+msgstr "instanciation ambiguë de canevas de classe pour « %#T »"
-#: cp/pt.c:5254
+#: cp/pt.c:5292
msgid "%s %+#T"
msgstr "%s %+#T"
-#: cp/pt.c:6284 cp/pt.c:6396
+#: cp/pt.c:6291 cp/pt.c:6411
msgid "instantiation of `%D' as type `%T'"
msgstr "instanciation de « %D » comme type « %T »"
-#: cp/pt.c:6440
+#: cp/pt.c:6453
msgid "invalid parameter type `%T'"
msgstr "paramètre invalide pour le type « %T »"
-#: cp/pt.c:6442
+#: cp/pt.c:6455
msgid "in declaration `%D'"
msgstr "dans la déclaration de « %D »"
-#: cp/pt.c:6517
+#: cp/pt.c:6529
msgid "creating pointer to member function of non-class type `%T'"
msgstr "création d'un pointeur vers le membre d'une fonction d'un type non classe « %T »"
-#: cp/pt.c:6680
+#: cp/pt.c:6668
msgid "creating array with size zero"
msgstr "création d'un tableau de taille zéro"
-#: cp/pt.c:6694
+#: cp/pt.c:6682
#, c-format
msgid "creating array with size zero (`%E')"
msgstr "création d'un tableau de taille zéro (« %E »)"
-#: cp/pt.c:6933
+#: cp/pt.c:6921
msgid "forming reference to void"
msgstr "formation d'une référence en void"
-#: cp/pt.c:6935
+#: cp/pt.c:6923
msgid "forming %s to reference type `%T'"
msgstr "formant %s pour référencer le type « %T »"
-#: cp/pt.c:6973
+#: cp/pt.c:6960
msgid "creating pointer to member of non-class type `%T'"
msgstr "création d'un pointeur vers le membre d'un type non classe « %T »"
-#: cp/pt.c:6979
+#: cp/pt.c:6966
msgid "creating pointer to member reference type `%T'"
msgstr "création d'un pointeur vers le membre de référence du type « %T »"
-#: cp/pt.c:7057
+#: cp/pt.c:7052
msgid "creating array of `%T'"
msgstr "création du tableau « %T »"
-#: cp/pt.c:7100
+#: cp/pt.c:7058
+msgid "creating array of `%T', which is an abstract class type"
+msgstr "création d'un tableau « %T », lequel est un type de classe abstraite"
+
+#: cp/pt.c:7102
msgid "`%T' is not a class, struct, or union type"
msgstr "« %T » n'est pas une classe, struct ou un type d'union"
-#: cp/pt.c:7213
+#: cp/pt.c:7215
#, c-format
msgid "use of `%s' in template"
-msgstr "utilisation de « %s » dans le patron"
+msgstr "utilisation de « %s » dans le canevas"
+
+#: cp/pt.c:7327
+#, c-format
+msgid "dependent-name `%E' is parsed as a non-type, but instantiation yields a type"
+msgstr "nom dépendant « %E » est analysé comme un non type, mais son instantiation le rend comme un type"
+
+#: cp/pt.c:7329
+#, c-format
+msgid "say `typename %E' if a type is meant"
+msgstr "utiliser « typename %E » si un type est désiré"
+
+#: cp/pt.c:8586
+msgid "`%T' uses anonymous type"
+msgstr "« %T » utilise un type anonyme"
+
+#: cp/pt.c:8588
+msgid "`%T' uses local type `%T'"
+msgstr "« %T » utilise un type local « %T »"
-#: cp/pt.c:7975
-msgid "type `%T' composed from a local class is not a valid template-argument"
-msgstr "type « %T » composé à partir d'une classe locale n'est pas un patron d'argument valide"
+#: cp/pt.c:8596
+msgid "`%T' is a variably modified type"
+msgstr "« %T » est type modifié de manière variable"
-#: cp/pt.c:7976
+#: cp/pt.c:8607
+#, c-format
+msgid "integral expression `%E' is not constant"
+msgstr "expression intégrale « %E » n'est pas une constante"
+
+#: cp/pt.c:8612
msgid " trying to instantiate `%D'"
msgstr " tentative d'instanciation « %D »"
-#: cp/pt.c:8421
+#: cp/pt.c:9125
msgid "incomplete type unification"
msgstr "type d'unification incomplète"
-#: cp/pt.c:9387
+#: cp/pt.c:10072
#, c-format
msgid "use of `%s' in template type unification"
-msgstr "utilisation de « %s » dans le patron du type d'unification"
+msgstr "utilisation de « %s » dans le canevas du type d'unification"
-#: cp/pt.c:9821 cp/pt.c:9893
+#: cp/pt.c:10506 cp/pt.c:10578
msgid "explicit instantiation of non-template `%#D'"
-msgstr "instanciation explicite d'un non patron «%#D»"
+msgstr "instanciation explicite d'un non canevas « %#D »"
-#: cp/pt.c:9837 cp/pt.c:9888
+#: cp/pt.c:10522 cp/pt.c:10573
msgid "no matching template for `%D' found"
-msgstr "non concordance de patron pour « %D » repéré"
+msgstr "non concordance de canevas pour « %D » repéré"
-#: cp/pt.c:9843
+#: cp/pt.c:10528
msgid "explicit instantiation of `%#D'"
-msgstr "instanciation explicite de «%#D»"
+msgstr "instanciation explicite de « %#D »"
-#: cp/pt.c:9880
+#: cp/pt.c:10565
msgid "duplicate explicit instantiation of `%#D'"
-msgstr "duplication d'instanciation explicite de «%#D»"
+msgstr "duplication d'instanciation explicite de « %#D »"
-#: cp/pt.c:9905
+#: cp/pt.c:10587
msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
-msgstr "le C++ ISO interdit l'utilisation de « extern » sur instanciations explicites"
+msgstr "ISO C++ interdit l'utilisation de « extern » sur instanciations explicites"
-#: cp/pt.c:9909 cp/pt.c:9999
+#: cp/pt.c:10591 cp/pt.c:10672
msgid "storage class `%D' applied to template instantiation"
-msgstr "classe de stockage « %D » appliqué à l'instanciation du patron"
+msgstr "classe de stockage « %D » appliqué à l'instanciation du canevas"
-#: cp/pt.c:9966
+#: cp/pt.c:10644
msgid "explicit instantiation of non-template type `%T'"
-msgstr "instanciation explicite de type non patron « %T »"
+msgstr "instanciation explicite de type non canevas « %T »"
-#: cp/pt.c:9980
+#: cp/pt.c:10653
msgid "explicit instantiation of `%#T' before definition of template"
-msgstr "instanciation explicite de «%#T» avant la définition de patron"
+msgstr "instanciation explicite de « %#T » avant la définition de canevas"
-#: cp/pt.c:9988
+#: cp/pt.c:10661
#, c-format
msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
-msgstr "le C++ ISO interdit l'utilisation de « %s » sur instanciations explicites"
+msgstr "ISO C++ interdit l'utilisation de « %s » sur instanciations explicites"
-#: cp/pt.c:10032
+#: cp/pt.c:10705
msgid "duplicate explicit instantiation of `%#T'"
-msgstr "duplication d'instanciation explicite de «%#T»"
+msgstr "duplication d'instanciation explicite de « %#T »"
-#: cp/pt.c:10412
+#: cp/pt.c:11086
msgid "explicit instantiation of `%D' but no definition available"
msgstr "instanciation explicite de « %D » mais pas de définition disponible"
-#: cp/pt.c:10815
+#: cp/pt.c:11520
msgid "`%#T' is not a valid type for a template constant parameter"
-msgstr "«%#T» n'a pas un type valide pour un patron de parametre de constante"
+msgstr "« %#T » n'a pas un type valide pour un canevas de parametre de constante"
-#: cp/repo.c:271
+#: cp/repo.c:259
msgid "-frepo must be used with -c"
msgstr "-frepo doit être utilisé avec -c"
-#: cp/repo.c:361
+#: cp/repo.c:346
#, c-format
msgid "mysterious repository information in %s"
msgstr "dépôt mystérieux d'informations dans %s"
-#: cp/repo.c:376
+#: cp/repo.c:361
#, c-format
msgid "can't create repository information file `%s'"
msgstr "ne peut créer le fichier « %s » pour dépôt d'informations"
-#: cp/rtti.c:240
+#: cp/rtti.c:248
msgid "cannot use typeid with -fno-rtti"
msgstr "ne peut utiliser typeid avec -fno-rtti"
-#: cp/rtti.c:246
+#: cp/rtti.c:254
msgid "must #include <typeinfo> before using typeid"
msgstr "doit utiliser #include <typeinfo> avant d'utiliser typeid"
-#: cp/rtti.c:320
+#: cp/rtti.c:326
msgid "cannot create type information for type `%T' because its size is variable"
msgstr "ne peut créer une information pour le type « %T » parce que sa taille est variable"
-#: cp/rtti.c:584 cp/rtti.c:598
+#: cp/rtti.c:580 cp/rtti.c:594
msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
-msgstr "dynamic_cast de «%#D» vers «%#T» ne pourra jamais réussir"
+msgstr "dynamic_cast de « %#D » vers « %#T » ne pourra jamais réussir"
-#: cp/rtti.c:674
+#: cp/rtti.c:675
msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
-msgstr "ne peut effectuer un dynamic_cast « %E » (du type «%#T') vers le type «%#T» (%s)"
+msgstr "ne peut effectuer un dynamic_cast « %E » (du type « %#T ») vers le type « %#T » (%s)"
-#: cp/search.c:332
+#: cp/search.c:306
msgid "`%T' is an ambiguous base of `%T'"
msgstr "« %T » est une base ambiguë de « %T »"
-#: cp/search.c:350
+#: cp/search.c:324
msgid "`%T' is an inaccessible base of `%T'"
msgstr "« %T » est une base inaccessible de « %T »"
-#. At parse time, we don't want to give this error, since
-#. we won't have enough state to make this kind of
-#. decision properly. But there are times (e.g., with
-#. enums in nested classes) when we do need to call
-#. this fn at parse time. So, in those cases, we pass
-#. complain as a 0 and just return a NULL_TREE.
-#: cp/search.c:1638
-#, fuzzy
-msgid "assignment to non-static member `%D' of enclosing class `%T'"
-msgstr "affectation au champ statique final « %s » n'est pas dans l'initialiseur de la classe"
-
-#: cp/search.c:2050
-msgid "adjusting pointers for covariant returns"
-msgstr "ajuster les pointeurs pour des retours co-variants"
-
-#: cp/search.c:2054 cp/search.c:2061
+#: cp/search.c:1756
msgid "invalid covariant return type for `%#D'"
-msgstr "type retourné covariant invalide pour «%#D»"
-
-#: cp/search.c:2055
-msgid " overriding `%#D' (must be pointer or reference to class)"
-msgstr " écrasant «%#D» (doit être un pointeur ou une référence vers un classe)"
+msgstr "type retourné covariant invalide pour « %#D »"
-#: cp/search.c:2062
-msgid " overriding `%#D' (must use pointer or reference)"
-msgstr " écrasant «%#D» (doit utiliser un pointeur ou un référence)"
+#: cp/search.c:1757 cp/search.c:1763
+msgid " overriding `%#D'"
+msgstr " écrasant « %#D »"
-#: cp/search.c:2067
+#: cp/search.c:1761
msgid "conflicting return type specified for `%#D'"
-msgstr "types retournés conflictuels spécifiés pour «%#D»"
-
-#: cp/search.c:2068
-msgid " overriding `%#D'"
-msgstr " écrasant «%#D»"
+msgstr "types retournés conflictuels spécifiés pour « %#D »"
-#: cp/search.c:2077
+#: cp/search.c:1775
#, c-format
msgid "looser throw specifier for `%#F'"
-msgstr "a placé un spécificateur pour «%#F»"
+msgstr "a placé un spécificateur pour « %#F »"
-#: cp/search.c:2078
+#: cp/search.c:1776
#, c-format
msgid " overriding `%#F'"
-msgstr " écrasant «%#F»"
+msgstr " écrasant « %#F »"
#. A static member function cannot match an inherited
#. virtual member function.
-#: cp/search.c:2167
+#: cp/search.c:1866
msgid "`%#D' cannot be declared"
-msgstr "«%#D» ne peut être déclaré"
+msgstr "« %#D » ne peut être déclaré"
-#: cp/search.c:2168
+#: cp/search.c:1867
msgid " since `%#D' declared in base class"
-msgstr " alors que «%#D» est déclaré dans la classe de base"
+msgstr " alors que « %#D » est déclaré dans la classe de base"
-#: cp/search.c:2309
+#: cp/search.c:1944
msgid "`%#D' needs a final overrider"
-msgstr "«%#D» a besoin d'un écraseur final"
+msgstr "« %#D » a besoin d'un écraseur final"
-#: cp/semantics.c:919
+#: cp/semantics.c:1092
#, c-format
msgid "type of asm operand `%E' could not be determined"
msgstr "type d'opérande asm « %E » ne peut être déterminé"
-#: cp/semantics.c:1051
-msgid "ISO C++ does not permit named return values"
-msgstr "le C++ ISO ne permet pas les valeurs retournées nommées"
+#: cp/semantics.c:1233
+msgid "invalid use of member `%D' in static member function"
+msgstr "utilisation invalide du membre « %D » dans un membre statique de fonction"
-#: cp/semantics.c:1060
-msgid "return identifier `%D' already in place"
-msgstr "identificateur retourné « %D » est déjà en place"
+#: cp/semantics.c:1237 cp/semantics.c:1276
+msgid "from this location"
+msgstr "à partir de cette localisation"
-#: cp/semantics.c:1068
-msgid "can't redefine default return value for constructors"
-msgstr "ne peut redéfinir la valeur retournée par défaut pour les constructeurs"
+#: cp/semantics.c:1275
+msgid "object missing in reference to `%D'"
+msgstr "objet manquant dans la référence à « %D »"
-#: cp/semantics.c:1100
-msgid "only constructors take base initializers"
-msgstr "seuls les constructeurs prennent des initialiseurs de base"
+#: cp/semantics.c:1721
+msgid "arguments to destructor are not allowed"
+msgstr "arguments au destructeur ne sont pas permis"
-#: cp/semantics.c:1343
+#: cp/semantics.c:1769
msgid "`this' is unavailable for static member functions"
-msgstr "« this » n'est pas disponible pour les membres statiques de fonctions"
+msgstr "« cela » n'est pas disponible pour les membres statiques de fonctions"
-#: cp/semantics.c:1349
+#: cp/semantics.c:1775
msgid "invalid use of `this' in non-member function"
msgstr "utilisation invalide de « ceci » dans un non membre de fonction"
-#: cp/semantics.c:1351
+#: cp/semantics.c:1777
msgid "invalid use of `this' at top level"
msgstr "utilisation invalide de « this » hors de toute fonction"
-#: cp/semantics.c:1381
-msgid "calling type `%T' like a method"
-msgstr "appel du type « %T » comme une méthode"
-
-#: cp/semantics.c:1419
-msgid "destructor specifier `%T::~%T()' must have matching names"
-msgstr "spécificateur du destructeur «%T::~%T()» doit avoir des noms concordants"
+#: cp/semantics.c:1801
+msgid "invalid qualifying scope in pseudo-destructor name"
+msgstr "étendue invalide du qualificateur dans un nom de pseudo-destructeur"
-#: cp/semantics.c:1425
+#: cp/semantics.c:1807
msgid "`%E' is not of type `%T'"
msgstr "« %E » n'est pas un type « %T »"
-#: cp/semantics.c:1613
+#: cp/semantics.c:1918
msgid "template type parameters must use the keyword `class' or `typename'"
-msgstr "patron de type de paramètres doit utiliser le mot clé « class» ou «typename »"
+msgstr "canevas de type de paramètres doit utiliser le mot clé « class» ou «typename »"
+
+#: cp/semantics.c:1962
+msgid "invalid use of type `%T' as a default value for a template template-parameter"
+msgstr "utilisation invalide du type « %T » comme valeur par défaut pour un canevas de paramètres de canevas"
+
+#: cp/semantics.c:1965
+msgid "invalid use of `%D' as a default value for a template template-parameter"
+msgstr "utilisation invalide de « %D » comme valeur par défaut pour un canevas de paramètres de canevas"
-#: cp/semantics.c:1652
-msgid "invalid default template argument"
-msgstr "argument invalide pour le patron par défaut"
+#: cp/semantics.c:1969
+msgid "invalid default argument for a template template parameter"
+msgstr "utilisation invalide d'argumenet pour un canevas de paramètres de canevas"
-#: cp/semantics.c:1694
+#: cp/semantics.c:2004
msgid "definition of `%#T' inside template parameter list"
-msgstr "définition de «%#T» à l'intérieur d'un patron de liste de paramètres"
+msgstr "définition de « %#T » à l'intérieur d'un canevas de liste de paramètres"
-#: cp/semantics.c:1710
+#: cp/semantics.c:2015
msgid "invalid definition of qualified type `%T'"
msgstr "définition invalide d'un type qualifié « %T »"
-#: cp/semantics.c:2053
-#, fuzzy
+#: cp/semantics.c:2030
+msgid "previous definition of `%#T'"
+msgstr "définition précédente de « %#T »"
+
+#: cp/semantics.c:2225
msgid "invalid base-class specification"
-msgstr "spécification de longueur invalide à %0"
+msgstr "spécification de base de classe invalide"
-#: cp/semantics.c:2062
+#: cp/semantics.c:2234
msgid "base class `%T' has cv qualifiers"
msgstr "classe de base « %T » a des qualificateurs cv"
-#: cp/semantics.c:2093
+#: cp/semantics.c:2266
msgid "multiple declarators in template declaration"
-msgstr "déclarateurs multiples dans la déclaration de patron"
+msgstr "déclarateurs multiples dans la déclaration de canevas"
-#: cp/semantics.c:2120
-#, fuzzy, c-format
-msgid "type of `%E' is unknown"
-msgstr "Registre '%c' est inconnu"
-
-#: cp/spew.c:225
-#, c-format
-msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
-msgstr "nom d'identificateur « %s » entre en conflit avec la stratégie interne de dénomination de GNU C++"
+#: cp/semantics.c:2277
+msgid "incomplete type `%T' used in nested name specifier"
+msgstr "type « %T » incomplet utilisé dans un spécificateur de noms imbriqué"
-#: cp/spew.c:1002 cp/spew.c:1340
-msgid "parse error at end of saved function text"
-msgstr "erreur d'analyse syntaxique à la fin de la sauvegarde de la fonction texte"
-
-#: cp/spew.c:1090 cp/spew.c:1178
-#, fuzzy
-msgid "%Hend of file read inside definition"
-msgstr "PAS n'est pas alloué dans la définition d'un champ"
+#: cp/semantics.c:2279 cp/typeck.c:1616
+msgid "`%D' is not a member of `%T'"
+msgstr "« %D » n'est pas un membre de « %T »"
-#: cp/spew.c:1121
-msgid "parse error in method specification"
-msgstr "erreur d'analyse syntaxique dans la spécification de fonction"
+#: cp/semantics.c:2282
+msgid "`%D' is not a member of `%D'"
+msgstr "« %D » n'est pas un membre de « %D »"
-#: cp/spew.c:1161
-msgid "function body for constructor missing"
-msgstr "corps de fonction pour le constructeur est manquante"
+#: cp/semantics.c:2400
+msgid "template parameter `%D' of type `%T' is not allowed in an integral constant expression because it is not of integral or enumeration type"
+msgstr "paramètre « %D » du canevas du type « %T » ne sont pas permises dans une expression intégrale de constante parce qu'elle n'est pas intégral ou un type énumération"
-#: cp/spew.c:1262
-#, fuzzy
-msgid "%Hend of file read inside default argument"
-msgstr "« %D » ne peut avoir d'arguments par défaut"
+#: cp/semantics.c:2553
+msgid "`%D' cannot appear in a constant-expression"
+msgstr "« %D » ne peut apparaître dans une expression de constante"
-#: cp/spew.c:1419
-msgid "circular dependency in default args of `%#D'"
-msgstr "dépendance circulaire dans les arguments par défaut de «%#D»"
+#: cp/semantics.c:2562
+msgid "use of namespace `%D' as expression"
+msgstr "utilisation d'un espace de dnomes « %D » comme expression"
-#: cp/spew.c:1483
-msgid "invalid type `%T' for default argument to `%T'"
-msgstr "type invalide « %T » pour l'argument par défaut « %T »"
+#: cp/semantics.c:2567
+msgid "use of class template `%T' as expression"
+msgstr "utilisation du canevas de classe « %T » comme expression"
-#: cp/spew.c:1548
-#, c-format
-msgid "%s before `%s'"
-msgstr "%s avant « %s »"
+#. Ambiguous reference to base members.
+#: cp/semantics.c:2573
+msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
+msgstr "requête du membre « %D » est ambiquë dans de mutliples héritage de treillis"
-#: cp/spew.c:1550
+#: cp/semantics.c:2633
#, c-format
-msgid "%s before `%c'"
-msgstr "%s avant « %c »"
+msgid "use of %s from containing function"
+msgstr "utilisation de %s d'un fonction contenante"
-#: cp/spew.c:1552
-#, c-format
-msgid "%s before `\\%o'"
-msgstr "%s avant «\\%o»"
+#: cp/semantics.c:2636
+msgid " `%#D' declared here"
+msgstr " « %#D » déclaré ici"
-#: cp/spew.c:1555
+#: cp/semantics.c:2687
#, c-format
-msgid "%s before `%s' token"
-msgstr "%s avant l'élément lexical « %s »"
+msgid "type of `%E' is unknown"
+msgstr "type « %E » est inconnu"
-#: cp/tree.c:263 cp/tree.c:275
+#: cp/tree.c:222
#, c-format
msgid "non-lvalue in %s"
msgstr "n'est pas un membre gauche dans %s"
-#: cp/tree.c:562
+#: cp/tree.c:539
msgid "`%V' qualifiers cannot be applied to `%T'"
msgstr "qualificateur « %V » ne peut pas être appliqué à « %T »"
-#: cp/tree.c:1941
+#: cp/tree.c:1830
#, c-format
msgid "`%s' attribute can only be applied to Java class definitions"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes Java"
-#: cp/tree.c:1971
+#: cp/tree.c:1859
#, c-format
msgid "`%s' attribute can only be applied to class definitions"
msgstr "attribut « %s » peut seulement être appliqué aux définitions de classes"
-#: cp/tree.c:1977
+#: cp/tree.c:1865
#, c-format
msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgstr "« %s » est obsolète; vtables g++ sont maintenant COM-compatibles par défaut"
-#: cp/tree.c:2002
+#: cp/tree.c:1889
msgid "requested init_priority is not an integer constant"
msgstr "init_priority demandé n'est pas une constante entière"
-#: cp/tree.c:2023
+#: cp/tree.c:1910
#, c-format
msgid "can only use `%s' attribute on file-scope definitions of objects of class type"
msgstr "peut seulement utiliser l'attribut « %s » sur la portée de fichier de définitions des objets de type de classe"
-#: cp/tree.c:2031
+#: cp/tree.c:1918
msgid "requested init_priority is out of range"
-msgstr "init_priority demandé est hors gamme"
+msgstr "init_priority demandé est hors limite"
-#: cp/tree.c:2041
+#: cp/tree.c:1928
msgid "requested init_priority is reserved for internal use"
msgstr "init_priority demandé est réservé pour un usage interne"
-#: cp/tree.c:2051
+#: cp/tree.c:1938
#, c-format
msgid "`%s' attribute is not supported on this platform"
msgstr "attribut « %s » n'est pas supporté sur cette plate-forme"
-#: cp/tree.c:2588
-#, fuzzy, c-format
-msgid "lang_* check: failed in %s, at %s:%d"
-msgstr "vérification de l'arbre: attendait %s, obtenu %s dans %s, à %s:%d"
-
-#: cp/typeck.c:524
+#: cp/tree.c:2459
#, c-format
-msgid "ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
-msgstr "le C++ ISO interdit %s entre les pointeurs de type « void * » et les pointeurs de fonctions"
+msgid "lang_* check: failed in %s, at %s:%d"
+msgstr "vérification lang_* : éched dans %s, à %s:%d"
-#: cp/typeck.c:545
+#: cp/typeck.c:438 cp/typeck.c:453 cp/typeck.c:543
msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
msgstr "%s entre des types distincs de pointeurs « %T » et « %T » manque de transtypage"
-#: cp/typeck.c:1436
-msgid "ISO C++ prohibits conversion from `%#T' to `(...)'"
-msgstr "le C++ ISO interdit la conversion de «%#T» en « (...) »"
+#: cp/typeck.c:513
+#, c-format
+msgid "ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
+msgstr "ISO C++ interdit %s entre les pointeurs de type « void * » et les pointeurs de fonctions"
-#: cp/typeck.c:1514
+#: cp/typeck.c:563
+msgid "%s between distinct pointer-to-member types `%T' and `%T' lacks a cast"
+msgstr "%s entre des types distincs de pointeurs vers les membres « %T » et « %T » manque de transtypage"
+
+#: cp/typeck.c:1235
#, c-format
msgid "invalid application of `%s' to a member function"
msgstr "application invalide de « %s » à une fonction membre"
-#: cp/typeck.c:1520
-#, fuzzy, c-format
-msgid "invalid application of `%s' to non-static member"
-msgstr "utilisation invalide de « %s » sur un pointeur vers un membre"
+#: cp/typeck.c:1268
+#, c-format
+msgid "invalid application of `%s' to a bit-field"
+msgstr "application invalide de « %s » sur un champ de bits"
-#: cp/typeck.c:1538
-msgid "sizeof applied to a bit-field"
-msgstr "sizeof appliqué sur un champ de bits"
+#: cp/typeck.c:1273
+#, c-format
+msgid "ISO C++ forbids applying `%s' to an expression of function type"
+msgstr "ISO C++ interdit l'application de « %s » à une expression d'un type de fonction"
-#: cp/typeck.c:1541
-msgid "ISO C++ forbids applying `sizeof' to an expression of function type"
-msgstr "le C++ ISO interdit l'application de « sizeof » sur l'expression d'un type de fonction"
+#: cp/typeck.c:1342
+msgid "invalid use of non-static member function"
+msgstr "utilisation invalide d'un membre non statique de fonction"
-#: cp/typeck.c:1759
+#: cp/typeck.c:1476
msgid "deprecated conversion from string constant to `%T'"
msgstr "conversion dépréciée de la chaîne de constante vers « %T »"
-#: cp/typeck.c:1890 cp/typeck.c:2122
-#, fuzzy
+#: cp/typeck.c:1587 cp/typeck.c:1874
msgid "request for member `%D' in `%E', which is of non-class type `%T'"
-msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type aggrégat « %T »"
+msgstr "requête du membre « %D » dans « %E », lequel n'est pas de type classe « %T »"
-#: cp/typeck.c:1916
-#, fuzzy
-msgid "`%D' is not a member of `%T'"
-msgstr "« %D » n'est pas un membre de type « %T »"
+#: cp/typeck.c:1614
+#, c-format
+msgid "invalid use of nonstatic data member '%E'"
+msgstr "utilisation invalide d'un membre de données non statique « %E »"
-#: cp/typeck.c:1957 cp/typeck.c:1978
-#, fuzzy
+#: cp/typeck.c:1666 cp/typeck.c:1688
msgid "invalid access to non-static data member `%D' of NULL object"
-msgstr "utilisation invalide d'un champ non statique « %D »"
+msgstr "accès invalide à un membre de données non statique « %D » d'un objet null"
-#: cp/typeck.c:1959 cp/typeck.c:1980
+#: cp/typeck.c:1668 cp/typeck.c:1690
msgid "(perhaps the `offsetof' macro was used incorrectly)"
-msgstr ""
+msgstr "(peut-être que le macro « offsetof » a été utilisé incorrectement)"
+
+#: cp/typeck.c:1804
+msgid "the type being destroyed is '%T', but the destructor refers to `%T'"
+msgstr "le type devant être détruit est « %T », mais le destructeur réfère à « %T »"
-#: cp/typeck.c:2168
-#, fuzzy
+#: cp/typeck.c:1924
msgid "`%D::%D' is not a member of `%T'"
-msgstr "« %D » n'est pas un membre de type « %T »"
+msgstr "« %D::%D » n'est pas un membre de « %T »"
-#: cp/typeck.c:2179
-#, fuzzy
+#: cp/typeck.c:1935
msgid "`%T' is not a base of `%T'"
-msgstr "« %D » n'est pas un membre de type « %T »"
+msgstr "« %D » n'est pas une base de « %T »"
-#: cp/typeck.c:2199
-msgid "destructor specifier `%T::~%T' must have matching names"
-msgstr "spécificateur du destructeur «%T::~%T» doit des noms concordants"
-
-#: cp/typeck.c:2205
-msgid "type `%T' has no destructor"
-msgstr "type « %T » n'a pas de destructeur"
+#: cp/typeck.c:1954
+msgid "'%D' has no member named '%E'"
+msgstr "« %D » n'a pas de membre nommé « %E »"
-#: cp/typeck.c:2244
-#, fuzzy
+#: cp/typeck.c:1969
msgid "`%D' is not a member template function"
-msgstr "« %D » n'est pas une fonction"
+msgstr "« %D » n'est pas une membre du canevas de fonction"
#. A pointer to incomplete type (other than cv void) can be
#. dereferenced [expr.unary.op]/1
-#: cp/typeck.c:2338
+#: cp/typeck.c:2075
msgid "`%T' is not a pointer-to-object type"
msgstr "« %T » n'est pas un type pointeur-vers-objet"
-#: cp/typeck.c:2365
+#: cp/typeck.c:2100
#, c-format
msgid "invalid use of `%s' on pointer to member"
msgstr "utilisation invalide de « %s » sur un pointeur vers un membre"
-#: cp/typeck.c:2371
+#: cp/typeck.c:2106
msgid "invalid type argument"
msgstr "type d'argument invalide"
-#: cp/typeck.c:2474
+#: cp/typeck.c:2212
msgid "ISO C++ forbids subscripting non-lvalue array"
-msgstr "le C++ ISO interdit le souscriptage de non lvalue de tableau"
+msgstr "ISO C++ interdit le souscriptage de non lvalue de tableau"
-#: cp/typeck.c:2485
+#: cp/typeck.c:2223
msgid "subscripting array declared `register'"
msgstr "souscriptage de tableau déclaré « register »"
-#: cp/typeck.c:2570
+#: cp/typeck.c:2306
#, c-format
msgid "object missing in use of `%E'"
msgstr "objet manquant dans l'usage de « %E »"
-#: cp/typeck.c:2674
+#: cp/typeck.c:2408
msgid "ISO C++ forbids calling `::main' from within program"
-msgstr "le C++ ISO interdit l'appel de «::main» depuis l'intérieur du programme"
+msgstr "ISO C++ interdit l'appel de «::main» depuis l'intérieur du programme"
-#: cp/typeck.c:2699
+#: cp/typeck.c:2433
#, c-format
msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgstr "doit utiliser .* ou ->* pour l'appel de la fonction pointer-to-member dans « %E (...) »"
-#: cp/typeck.c:2712
+#: cp/typeck.c:2446
#, c-format
msgid "`%E' cannot be used as a function"
msgstr "« %E » ne peut être utilisé comme une fonction"
-#: cp/typeck.c:2824
+#: cp/typeck.c:2539
msgid "too many arguments to %s `%+#D'"
msgstr "trop d'arguments pour %s « %+#D »"
-#: cp/typeck.c:2865
-msgid "parameter type of called function is incomplete"
-msgstr "type de paramètre de la fonction appelée est incomplet"
+#: cp/typeck.c:2541 cp/typeck.c:2647
+msgid "at this point in file"
+msgstr "à ce point dans le fichier"
-#: cp/typeck.c:2928
+#: cp/typeck.c:2578
+msgid "parameter %P of `%D' has incomplete type `%T'"
+msgstr "paramètre %P de « %D » a un type incomplet « %T »"
+
+#: cp/typeck.c:2581
+msgid "parameter %P has incomplete type `%T'"
+msgstr "paramètre %P a un type incomplet « %T »"
+
+#: cp/typeck.c:2645
msgid "too few arguments to %s `%+#D'"
msgstr "pas assez d'argument pour %s « %+#D »"
-#: cp/typeck.c:3056 cp/typeck.c:3066
+#: cp/typeck.c:2790 cp/typeck.c:2800
msgid "assuming cast to type `%T' from overloaded function"
msgstr "transtypage vers le type « %T » est assumé à partir de la fonction surchargée"
-#: cp/typeck.c:3126
+#: cp/typeck.c:2861
#, c-format
msgid "division by zero in `%E / 0'"
-msgstr "division par zéro dans «%E / 0»"
+msgstr "division par zéro dans « %E / 0 »"
-#: cp/typeck.c:3128
+#: cp/typeck.c:2863
#, c-format
msgid "division by zero in `%E / 0.'"
-msgstr "division par zéro dans «%E / 0.»"
+msgstr "division par zéro dans « %E / 0. »"
-#: cp/typeck.c:3158
+#: cp/typeck.c:2892
#, c-format
msgid "division by zero in `%E %% 0'"
-msgstr "division par zéro dans «%E %% 0»"
+msgstr "division par zéro dans « %E %% 0 »"
-#: cp/typeck.c:3160
+#: cp/typeck.c:2894
#, c-format
msgid "division by zero in `%E %% 0.'"
-msgstr "division par zéro dans «%E %% 0.»"
+msgstr "division par zéro dans « %E %% 0. »"
-#: cp/typeck.c:3240
+#: cp/typeck.c:2974
#, c-format
msgid "%s rotate count is negative"
msgstr "compteur de rotation %s est négatif"
-#: cp/typeck.c:3243
+#: cp/typeck.c:2977
#, c-format
msgid "%s rotate count >= width of type"
msgstr "compteur de rotation %s >= largeur du type"
-#: cp/typeck.c:3274 cp/typeck.c:3279 cp/typeck.c:3370 cp/typeck.c:3375
+#: cp/typeck.c:3011 cp/typeck.c:3016 cp/typeck.c:3107 cp/typeck.c:3112
msgid "ISO C++ forbids comparison between pointer and integer"
-msgstr "le C++ ISO interdit la comparaison entre un pointeur et un entier"
+msgstr "ISO C++ interdit la comparaison entre un pointeur et un entier"
-#: cp/typeck.c:3553
+#: cp/typeck.c:3293
msgid "comparison between types `%#T' and `%#T'"
-msgstr "comparaison entre les types «%#T» et «%#T»"
+msgstr "comparaison entre les types « %#T » et « %#T »"
-#: cp/typeck.c:3589
+#: cp/typeck.c:3329
msgid "comparison between signed and unsigned integer expressions"
msgstr "comparaison entre des expressions entières signée et non signée"
-#: cp/typeck.c:3654
+#: cp/typeck.c:3394
msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgstr "opérandes invalides pour les types « %T » et « %T » en binaire « %O »"
@@ -17845,690 +16882,514 @@ msgstr "opérandes invalides pour les types « %T » et « %T » en binaire « %O »"
#. performed. Note that pointer-difference and pointer-addition
#. have already been handled above, and so we don't end up here in
#. that case.
-#: cp/typeck.c:3676
+#: cp/typeck.c:3416
msgid "NULL used in arithmetic"
msgstr "NULL utilisé en arithmétique"
-#: cp/typeck.c:3743
+#: cp/typeck.c:3479
msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
-msgstr "le C++ ISO interdit l'utilisation d'un pointeur de type « void * » dans une soustraction"
+msgstr "ISO C++ interdit l'utilisation d'un pointeur de type « void * » dans une soustraction"
-#: cp/typeck.c:3745
+#: cp/typeck.c:3481
msgid "ISO C++ forbids using pointer to a function in subtraction"
-msgstr "le C++ ISO interdit l'utilisation d'un pointeur survers une fonction dans une soustraction"
+msgstr "ISO C++ interdit l'utilisation d'un pointeur survers une fonction dans une soustraction"
-#: cp/typeck.c:3747
+#: cp/typeck.c:3483
msgid "ISO C++ forbids using pointer to a method in subtraction"
-msgstr "le C++ ISO interdit l'utilisation d'un pointeur survers une méthode dans une soustraction"
-
-#: cp/typeck.c:3749
-msgid "ISO C++ forbids using pointer to a member in subtraction"
-msgstr "le C++ ISO interdit l'utilisation d'un pointeur vers un membre dans une soustraction"
+msgstr "ISO C++ interdit l'utilisation d'un pointeur survers une méthode dans une soustraction"
-#: cp/typeck.c:3761
+#: cp/typeck.c:3495
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "utilisation invalide d'un pointeur vers un type incomplet dans un pointeur arithmétique"
-#: cp/typeck.c:3821
+#: cp/typeck.c:3550
#, c-format
msgid "invalid use of '%E' to form a pointer-to-member-function. Use a qualified-id."
-msgstr ""
+msgstr "utilisation invalide de « %E » pour former pointer-to-member-function. Utiliser un identifateur qualifié"
-#: cp/typeck.c:3827
+#: cp/typeck.c:3556
#, c-format
msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
-msgstr ""
+msgstr "parenthèses autour de « %E » ne peuvent être utilisées pour former pointer-to-member-function"
-#: cp/typeck.c:3850
+#: cp/typeck.c:3578
msgid "taking address of temporary"
msgstr "prise de l'adresse du temporaire"
# FIXME: I18N
-#: cp/typeck.c:4091
+#: cp/typeck.c:3813
#, c-format
msgid "ISO C++ forbids %sing an enum"
-msgstr "le C++ ISO interdit de %ser un enum"
+msgstr "ISO C++ interdit de %ser un enum"
-#: cp/typeck.c:4103
+#: cp/typeck.c:3824
msgid "cannot %s a pointer to incomplete type `%T'"
msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »"
-#: cp/typeck.c:4110
+#: cp/typeck.c:3830
msgid "ISO C++ forbids %sing a pointer of type `%T'"
-msgstr "le C++ ISO interdit %s utilisation d'un pointeur de type « %T »"
+msgstr "ISO C++ interdit %s utilisation d'un pointeur de type « %T »"
-#: cp/typeck.c:4135
+#: cp/typeck.c:3855
msgid "cast to non-reference type used as lvalue"
msgstr "transtypage d'un type non référencé utilisé comme membre gauche"
-#: cp/typeck.c:4169
+#: cp/typeck.c:3889
msgid "invalid use of `--' on bool variable `%D'"
msgstr "utilisation invalide de «--» sur une variable booléenne « %D »"
#. ARM $3.4
-#: cp/typeck.c:4202
+#: cp/typeck.c:3920
msgid "ISO C++ forbids taking address of function `::main'"
-msgstr "le C++ ISO interdit de prendre l'adresse d'une fonction «::main»"
+msgstr "ISO C++ interdit de prendre l'adresse d'une fonction «::main»"
#. An expression like &memfn.
-#: cp/typeck.c:4269
-msgid "ISO C++ forbids taking the address of an unqualified non-static member function to form a pointer to member function. Say `&%T::%D'"
-msgstr "le C++ ISO interdit de prendre l'adress d'un membre de fonction non statique non qualifié pour former un pointeur d'un membre de fonction. Disons «&%T::%D»"
+#: cp/typeck.c:3991
+msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say `&%T::%D'"
+msgstr "ISO C++ interdit de prendre l'adress d'un membre de fonction non statique non qualifié ou entre parenthèses pour former un pointeur d'un membre de fonction. Utilisers «&%T::%D»"
-#: cp/typeck.c:4271
+#: cp/typeck.c:3996
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
-msgstr "le C++ ISO interdit de prendre l'adresse d'une borne d'un membre de fontion pour former un membre à la fonction. Disons «&%T::%D»"
+msgstr "ISO C++ interdit de prendre l'adresse d'une borne d'un membre de fontion pour former un membre à la fonction. Disons «&%T::%D»"
-#: cp/typeck.c:4295
+#: cp/typeck.c:4024
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
-msgstr "le C++ ISO interdit de prendre l'adresse du transtypage vers une expression n'etant pas membre gauche"
+msgstr "ISO C++ interdit de prendre l'adresse du transtypage vers une expression n'etant pas membre gauche"
-#: cp/typeck.c:4324
+#: cp/typeck.c:4040
+msgid "unary `&'"
+msgstr "unaire « & »"
+
+#: cp/typeck.c:4069
msgid "attempt to take address of bit-field structure member `%D'"
msgstr "tentative de prise d'adresse du membre « %D » d'une structure de champ de bits"
-#: cp/typeck.c:4444
+#: cp/typeck.c:4183
msgid "taking address of destructor"
msgstr "prise de l'adresse du destructeur"
-#: cp/typeck.c:4457
+#: cp/typeck.c:4196
msgid "taking address of bound pointer-to-member expression"
msgstr "prise de l'adresse de la borne de l'expression d'un pointeur-vers-un membre"
-#: cp/typeck.c:4473
+#: cp/typeck.c:4204
msgid "cannot create pointer to reference member `%D'"
msgstr "ne peut déclarer un pointeur vers le membre de référence « %D »"
-#: cp/typeck.c:4536
+#: cp/typeck.c:4266
msgid "cannot take the address of `this', which is an rvalue expression"
msgstr "ne peut prendre l'adresse de « ceci », laquelle est une expression rvalue"
-#: cp/typeck.c:4555
+#: cp/typeck.c:4285
msgid "address requested for `%D', which is declared `register'"
msgstr "adresse requise pour « %D», lequel est déclaré «register »"
-#: cp/typeck.c:4682
-msgid "static_cast from type `%T' to type `%T' casts away constness"
-msgstr "static_cast du type « %T » vers le type « %T » fait un transtypage sans constante"
+#: cp/typeck.c:4353
+#, c-format
+msgid "%s expression list treated as compound expression"
+msgstr "%s liste d'expressions traitée comme une expression composée"
+
+#: cp/typeck.c:4426
+msgid "%s from type `%T' to type `%T' casts away constness"
+msgstr "%S à partir du « %T » vers le type « %T » provoque un transtypage sans constante"
-#: cp/typeck.c:4871
+#: cp/typeck.c:4618
msgid "invalid static_cast from type `%T' to type `%T'"
msgstr "static_cast invalide du type « %T » au type « %T »"
-#: cp/typeck.c:4910
+#: cp/typeck.c:4658
msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgstr "reinterpret_cast invalide d'une expression rvalue de type « %T » vers le type « %T »"
-#: cp/typeck.c:4930
+#: cp/typeck.c:4678
msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgstr "reinterpret_cast de « %T » vers « %T » génère une perte de précision"
-#: cp/typeck.c:4943
-msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
-msgstr "reinterpret_cast de « %T » vers « %T » fait un transtypage écartant la constante (ou volatile)"
-
-#: cp/typeck.c:4952
+#: cp/typeck.c:4697
msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
-msgstr "le C++ ISO interdit le transtypage entre un pointeur de fonction et un pointeur d'objet"
+msgstr "ISO C++ interdit le transtypage entre un pointeur de fonction et un pointeur d'objet"
-#: cp/typeck.c:4958
+#: cp/typeck.c:4703
msgid "invalid reinterpret_cast from type `%T' to type `%T'"
msgstr "reinterpret_cast invalide à partir du type « %T » vers le type « %T »"
-#: cp/typeck.c:4985
+#: cp/typeck.c:4731
msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
msgstr "utilisation invalide de const_cast avec le type « %T », lequel n'est pas un pointeur, une référence, ni un type pointeur-vers-données-membre"
-#: cp/typeck.c:4988
+#: cp/typeck.c:4734
msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
msgstr "utilisation invalide de const_cast avec le type « %T », lequel est un pointeur ou un référence à un type de fonction"
-#: cp/typeck.c:5011
+#: cp/typeck.c:4757
msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgstr "const_cast invalide de la rvalue du type « %T » vers le type « %T »"
-#: cp/typeck.c:5027
+#: cp/typeck.c:4774
msgid "invalid const_cast from type `%T' to type `%T'"
msgstr "const_cast invalide à partir du type « %T » vers le type « %T »"
-#: cp/typeck.c:5069 cp/typeck.c:5074
+#: cp/typeck.c:4814 cp/typeck.c:4819
msgid "ISO C++ forbids casting to an array type `%T'"
-msgstr "le C++ ISO interdit le transtypage vers un type tableau « %T »"
+msgstr "ISO C++ interdit le transtypage vers un type tableau « %T »"
-#: cp/typeck.c:5082
+#: cp/typeck.c:4827
msgid "invalid cast to function type `%T'"
msgstr "transtypage invalide pour un type de fonction « %T »"
-#: cp/typeck.c:5138
+#: cp/typeck.c:4883
msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgstr "transtypage de « %T » vers « %T » écarte les qualificateurs du type cible du pointeur"
-#: cp/typeck.c:5184
+#: cp/typeck.c:4929
msgid "cast from `%T' to `%T' increases required alignment of target type"
msgstr "transtypage de « %T » vers « %T » augmente l'alignement requis pour le type ciblé"
-#: cp/typeck.c:5357
+#: cp/typeck.c:5093
msgid " in evaluation of `%Q(%#T, %#T)'"
-msgstr " lors de l'évaluation de «%Q(%#T, %#T)»"
+msgstr " lors de l'évaluation de « %Q(%#T, %#T) »"
-#: cp/typeck.c:5399
+#: cp/typeck.c:5135
msgid "ISO C++ forbids cast to non-reference type used as lvalue"
-msgstr "le C++ ISO interdit le transtypage d'un type non référencé utilisé comme membre gauche"
+msgstr "ISO C++ interdit le transtypage d'un type non référencé utilisé comme membre gauche"
-#: cp/typeck.c:5463
+#: cp/typeck.c:5208
msgid "incompatible types in assignment of `%T' to `%T'"
msgstr "type incompatible dans l'affectation de « %T » vers « %T »"
-#: cp/typeck.c:5470
+#: cp/typeck.c:5215
msgid "ISO C++ forbids assignment of arrays"
-msgstr "le C++ ISO interdit l'affectation de tableaux"
+msgstr "ISO C++ interdit l'affectation de tableaux"
-#: cp/typeck.c:5577
+#: cp/typeck.c:5314
msgid " in pointer to member function conversion"
msgstr " dans la conversion d'un pointeur vers un membre de fonction"
-#: cp/typeck.c:5585
+#: cp/typeck.c:5322
msgid " in pointer to member conversion"
msgstr " dans la conversion d'un pointeur vers un membre"
#. This is a reinterpret cast, we choose to do nothing.
-#: cp/typeck.c:5596 cp/typeck.c:5615
-msgid "pointer to member cast via virtual base `%T' of `%T'"
-msgstr "pointeur vers un membre transtypé via la base virtuelle « %T » de « %T »"
+#: cp/typeck.c:5332 cp/typeck.c:5347
+msgid "pointer to member cast via virtual base `%T'"
+msgstr "pointeur vers un membre transtypé via la base virtuelle « %T »"
-#: cp/typeck.c:5619
-msgid "pointer to member conversion via virtual base `%T' of `%T'"
-msgstr "conversion de pointeur à membre à l'aide de la base virtuelle « %T » vers « %T »"
+#: cp/typeck.c:5350
+msgid "pointer to member conversion via virtual base `%T'"
+msgstr "conversion de pointeur à membre à l'aide de la base virtuelle « %T »"
-#: cp/typeck.c:5695
+#: cp/typeck.c:5420
msgid "invalid conversion to type `%T' from type `%T'"
msgstr "conversion invalide vers un type « %T » à partir du type « %T »"
-#: cp/typeck.c:5860
+#: cp/typeck.c:5576
msgid "passing NULL used for non-pointer %s %P of `%D'"
msgstr "passage d'un NULL utilisé pour un non pointeur %s %P de « %D »"
-#: cp/typeck.c:5863
+#: cp/typeck.c:5579
msgid "%s to non-pointer type `%T' from NULL"
msgstr "%s vers un type non pointeur « %T » à partir d'un NULL"
-#: cp/typeck.c:5871
+#: cp/typeck.c:5587
msgid "passing `%T' for %s %P of `%D'"
msgstr "passage « %T » pour %s %P de « %D »"
-#: cp/typeck.c:5874
+#: cp/typeck.c:5590
msgid "%s to `%T' from `%T'"
msgstr "%s vers « %T » à partir de « %T »"
-#: cp/typeck.c:5884
+#: cp/typeck.c:5600
msgid "passing negative value `%E' for %s %P of `%D'"
msgstr "passage de valeur négative « %E » pour %s %P de « %D »"
-#: cp/typeck.c:5887
+#: cp/typeck.c:5603
msgid "%s of negative value `%E' to `%T'"
msgstr "%s de valeur négative « %E » vers « %T »"
-#: cp/typeck.c:5982
+#: cp/typeck.c:5691
msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgstr "ne peut convertir « %T » à « %T » pour l'argument « %P » vers « %D »"
-#: cp/typeck.c:5985
+#: cp/typeck.c:5694
msgid "cannot convert `%T' to `%T' in %s"
msgstr "ne peut convertir « %T » vers « %T » dans %s"
-#: cp/typeck.c:6073 cp/typeck.c:6075
+#: cp/typeck.c:5771 cp/typeck.c:5773
msgid "in passing argument %P of `%+D'"
-msgstr "dans le passage de l'argument %P de «%+D»"
+msgstr "dans le passage de l'argument %P de « %+D »"
-#: cp/typeck.c:6190
+#: cp/typeck.c:5880
msgid "returning reference to temporary"
msgstr "retourné la référence vers le temporaire"
-#: cp/typeck.c:6197
+#: cp/typeck.c:5887
msgid "reference to non-lvalue returned"
msgstr "une référence vers quelque chose n'étant pas un membre gauche a été retourné"
-#: cp/typeck.c:6209
+#: cp/typeck.c:5899
msgid "reference to local variable `%D' returned"
msgstr "référence vers une variable locale « %D » retourné"
-#: cp/typeck.c:6212
+#: cp/typeck.c:5902
msgid "address of local variable `%D' returned"
msgstr "adresse d'une variable locale « %D » retournée"
-#: cp/typeck.c:6243
+#: cp/typeck.c:5932
msgid "returning a value from a destructor"
msgstr "retourné une valeur du destructeur"
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:6251
+#: cp/typeck.c:5940
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr "ne peut retourner d'un handler d'une fonction try-block d'un constructeur"
#. You can't return a value from a constructor.
-#: cp/typeck.c:6254
+#: cp/typeck.c:5943
msgid "returning a value from a constructor"
msgstr "retourné une valeur d'un constructeur"
-#: cp/typeck.c:6271
-msgid "return-statement with no value, in function declared with a non-void return type"
-msgstr "déclaration d'un retour sans valeur, dans la fonction déclarée avec un type retourné non void"
+#: cp/typeck.c:5966
+msgid "return-statement with no value, in function returning '%T'"
+msgstr "déclaration à retourner sans valeur dans une fonction retournant « %T »"
-#: cp/typeck.c:6287
-msgid "return-statement with a value, in function declared with a void return type"
-msgstr "déclaration d'un retour sans valeur, dans la fonction déclarée avec un type retourné void"
+#: cp/typeck.c:5983
+msgid "return-statement with a value, in function returning 'void'"
+msgstr "déclaration éa retourner avec une valeur dans une fonction retournant un « void »"
-#: cp/typeck.c:6308
+#: cp/typeck.c:6005
msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
msgstr "« operator new» ne doit pas retourner NULL à moins qu'il ne soit déclaré «throw() » (ou -fcheck-new est utilisée)"
-#: cp/typeck2.c:54
+#: cp/typeck2.c:55
msgid "type `%T' is not a base type for type `%T'"
msgstr "type « %T » n'est pas un type de base pour le type « %T »"
-#: cp/typeck2.c:157
+#: cp/typeck2.c:151
msgid "cannot declare variable `%D' to be of type `%T'"
msgstr "ne peut déclarer la variable « %D » comme étant de type « %T »"
-#: cp/typeck2.c:160
+#: cp/typeck2.c:154
msgid "cannot declare parameter `%D' to be of type `%T'"
msgstr "ne peut déclarer la paramètre « %D » comme étant de type « %T »"
-#: cp/typeck2.c:163
+#: cp/typeck2.c:157
msgid "cannot declare field `%D' to be of type `%T'"
msgstr "ne peut déclarer la champ « %D » comme étant de type « %T »"
-#: cp/typeck2.c:167
+#: cp/typeck2.c:161
msgid "invalid return type for member function `%#D'"
-msgstr "type retourné invalide pour le membre de la fonction «%#D»"
+msgstr "type retourné invalide pour le membre de la fonction « %#D »"
-#: cp/typeck2.c:169
+#: cp/typeck2.c:163
msgid "invalid return type for function `%#D'"
-msgstr "type retourné invalide pour la fonction «%#D»"
+msgstr "type retourné invalide pour la fonction « %#D »"
-#: cp/typeck2.c:172
+#: cp/typeck2.c:166
msgid "cannot allocate an object of type `%T'"
msgstr "ne peut allouer un objet de type « %T »"
-#: cp/typeck2.c:179
+#: cp/typeck2.c:173
msgid " because the following virtual functions are abstract:"
msgstr " parce que les fonctions viruelles suivantes sont abstraites:"
-#: cp/typeck2.c:181
+#: cp/typeck2.c:175
msgid "\t%#D"
msgstr "\t%#D"
-#: cp/typeck2.c:184
+#: cp/typeck2.c:178
msgid " since type `%T' has abstract virtual functions"
msgstr " depuis que le type « %T » a des fonctions virtuelles abstraites"
-#: cp/typeck2.c:338
+#: cp/typeck2.c:426
msgid "constructor syntax used, but no constructor declared for type `%T'"
msgstr "syntaxe de constructeur utilisé mais aucun constructeur déclaré pour le type « %T »"
-#: cp/typeck2.c:349
-msgid "comma expression used to initialize return value"
-msgstr "expression virgule utilsée pour initialiser la valeur de retour"
-
-#: cp/typeck2.c:358
+#: cp/typeck2.c:439
msgid "cannot initialize arrays using this syntax"
msgstr "ne peut initialiser les tableaux en utilisant la syntaxe"
-#: cp/typeck2.c:473
+#: cp/typeck2.c:544
msgid "initializing array with parameter list"
msgstr "initialise le tableau avec la liste des paramètres"
-#: cp/typeck2.c:529
+#: cp/typeck2.c:599
msgid "initializer for scalar variable requires one element"
msgstr "l'initialisation de variable scalaire requiert un élément"
-#: cp/typeck2.c:536
+#: cp/typeck2.c:606
msgid "braces around scalar initializer for `%T'"
msgstr "accolades autour de l'initialiseur scalaire pour « %T »"
-#: cp/typeck2.c:539
+#: cp/typeck2.c:609
msgid "ignoring extra initializers for `%T'"
msgstr "initialiseurs superflus pour « %T » ignorés"
-#: cp/typeck2.c:551
+#: cp/typeck2.c:621
msgid "variable-sized object of type `%T' may not be initialized"
msgstr "un objet de taille variable de type « %T » peut ne pas être initialisé"
-#: cp/typeck2.c:561
+#: cp/typeck2.c:631
msgid "subobject of type `%T' must be initialized by constructor, not by `%E'"
msgstr "sous-objet de type « %T » doit être initialisé par un constructeur, non pas par « %E »"
-#: cp/typeck2.c:627
+#: cp/typeck2.c:696
msgid "aggregate has a partly bracketed initializer"
msgstr "aggrégat a un initialiseur partiellement entouré d'accolades"
-#: cp/typeck2.c:665 cp/typeck2.c:770
+#: cp/typeck2.c:734 cp/typeck2.c:839
msgid "non-trivial labeled initializers"
msgstr "initialiseur étiqueté de manière non trivial"
-#: cp/typeck2.c:682
+#: cp/typeck2.c:751
msgid "non-empty initializer for array of empty elements"
msgstr "initialiseurs non vides pour un tableau d'éléments vides"
-#: cp/typeck2.c:736
+#: cp/typeck2.c:805
msgid "initializer list for object of class with virtual base classes"
msgstr "liste d'initialiseurs pour les objets de classe avec classes de base virtuelles"
-#: cp/typeck2.c:742
+#: cp/typeck2.c:811
msgid "initializer list for object of class with base classes"
msgstr "liste d'initialiseurs pour les objets de classe avec classes de base"
-#: cp/typeck2.c:748
+#: cp/typeck2.c:817
msgid "initializer list for object using virtual functions"
msgstr "liste d'initialiseurs pour objet utilisant des fonctions virtuelles"
-#: cp/typeck2.c:811 cp/typeck2.c:827
+#: cp/typeck2.c:879 cp/typeck2.c:895
msgid "missing initializer for member `%D'"
msgstr "initialiseur manquant pour le membre « %D »"
-#: cp/typeck2.c:816
+#: cp/typeck2.c:884
msgid "uninitialized const member `%D'"
msgstr "membre de constante non initialisé pour « %D »"
-#: cp/typeck2.c:818
+#: cp/typeck2.c:886
msgid "member `%D' with uninitialized const fields"
msgstr "membre « %D » avec des champs de constantes non initialisée"
-#: cp/typeck2.c:821
+#: cp/typeck2.c:889
msgid "member `%D' is uninitialized reference"
msgstr "membre « %D » est une référence non initialisée"
-#: cp/typeck2.c:868
+#: cp/typeck2.c:936
msgid "index value instead of field name in union initializer"
msgstr "valeur index au lieu du nom de champ dans l'initialiseur d'union"
-#: cp/typeck2.c:880
+#: cp/typeck2.c:948
msgid "no field `%D' in union being initialized"
msgstr "pas de champ « %D » dans l'aggrégat n'a été initialisé"
-#: cp/typeck2.c:888
+#: cp/typeck2.c:956
msgid "union `%T' with no named members cannot be initialized"
msgstr "aggrégat « %T » sans mambre nommé ne peut être initialisé"
-#: cp/typeck2.c:924
+#: cp/typeck2.c:992
msgid "excess elements in aggregate initializer"
msgstr "éléments en excès dans l'initialiseur d'aggrégat"
-#: cp/typeck2.c:1038
+#: cp/typeck2.c:1100
msgid "circular pointer delegation detected"
msgstr "délégation de pointeur circulaire détecté"
-#: cp/typeck2.c:1051
+#: cp/typeck2.c:1113
msgid "base operand of `->' has non-pointer type `%T'"
msgstr "l'opérande de base de «->» a un type non pointeur « %T »"
-#: cp/typeck2.c:1065
+#: cp/typeck2.c:1137
msgid "result of `operator->()' yields non-pointer result"
msgstr "résultat de « operator->() » laisse comme résultat un non pointeur"
-#: cp/typeck2.c:1067
+#: cp/typeck2.c:1139
msgid "base operand of `->' is not a pointer"
msgstr "l'opérande de base de «->» n'est pas un pointeur"
-#: cp/typeck2.c:1133
+#: cp/typeck2.c:1162
msgid "`%E' cannot be used as a member pointer, since it is of type `%T'"
msgstr "« %E » ne peut être utilisé comme pointeur de membre, alors qu'il est de type « %T »"
-#: cp/typeck2.c:1140
+#: cp/typeck2.c:1170
msgid "cannot apply member pointer `%E' to `%E', which is of non-aggregate type `%T'"
msgstr "ne peut appliquer un pointeur de membre « %E » à « %E », lequel n'est pas un type d'aggrégat « %T »"
-#: cp/typeck2.c:1149
+#: cp/typeck2.c:1180
msgid "member type `%T::' incompatible with object type `%T'"
-msgstr "type du membre «%T::» incompatible avec le type d'objet « %T »"
-
-#: cp/typeck2.c:1186
-msgid "`%T' fails to be a typedef or built-in type"
-msgstr "« %T » a échoué à devenir un typedef ou un type construit interne"
-
-#: cp/typeck2.c:1259
-#, c-format
-msgid "ISO C++ forbids defining types within %s"
-msgstr "le C++ ISO interdit la définition de types à l'intérieur de %s"
+msgstr "type du membre « %T:: » incompatible avec le type d'objet « %T »"
-#: cp/typeck2.c:1384
-#, fuzzy
+#: cp/typeck2.c:1396
msgid "call to function `%D' which throws incomplete type `%#T'"
-msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »"
+msgstr "l'appel à la fonction « %D » laquelle écarte le type incomplet « %T »"
-#: cp/typeck2.c:1387
-#, fuzzy
+#: cp/typeck2.c:1399
msgid "call to function which throws incomplete type `%#T'"
-msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »"
+msgstr "l'appel à la fonction laquelle écarte le type incomplet « %T »"
#. XXX Not i18n clean.
-#: cp/cp-tree.h:3936
+#: cp/cp-tree.h:3756
#, c-format
msgid "%s is deprecated, please see the documentation for details"
msgstr "%s est déprécié, SVP voir la documentation pour les détails"
-#: cp/lang-options.h:29
-msgid "Do not obey access control semantics"
-msgstr "Ne pas obéir à la sémantique du contrôle d'accès"
-
-#: cp/lang-options.h:31
-msgid "Change when template instances are emitted"
-msgstr "Changer lorsque les instances du patron sont produites"
-
-#: cp/lang-options.h:36
-msgid "Check the return value of new"
-msgstr "Vérifier la valeur retournée de new"
-
-#: cp/lang-options.h:39
-msgid "Reduce size of object files"
-msgstr "Réduire la taille des fichiers objets"
-
-#: cp/lang-options.h:43
-msgid "Make string literals `char[]' instead of `const char[]'"
-msgstr "Rendre les chaînes de mots « char[] » au lieu de «const char[]'"
-
-#: cp/lang-options.h:46
-msgid "Dump the entire translation unit to a file"
-msgstr "Vidanger l'unité de traduction complète dans un fichier"
-
-#: cp/lang-options.h:48
-msgid "Do not inline member functions by default"
-msgstr "Ne pas rendre en ligne un membre de fonction par défaut"
-
-#: cp/lang-options.h:51
-msgid "Do not generate run time type descriptor information"
-msgstr "Ne pas générer l'information pour un type de descripteur pour l'exécution"
-
-#: cp/lang-options.h:56
-msgid "Do not generate code to check exception specifications"
-msgstr "Ne pas générer du code pour vérifier les exceptions spécifiques"
-
-#: cp/lang-options.h:61
-msgid "Scope of for-init-statement vars extends outside"
-msgstr "Champs de variables for-init-statement s'étend en dehors"
-
-#: cp/lang-options.h:64
-msgid "Do not recognize GNU defined keywords"
-msgstr "Ne pas reconnaître les mots clés définis GNU"
-
-#: cp/lang-options.h:68
-msgid "Enable support for huge objects"
-msgstr "Autoriser le support des grands objets"
-
-#: cp/lang-options.h:72
-msgid "Export functions even if they can be inlined"
-msgstr "Exporter les fonctions même si elles peuvent être inline"
-
-#: cp/lang-options.h:75
-#, fuzzy
-msgid "Only emit explicit template instantiations"
-msgstr "Produire seulement des instanciations explicites du patron"
-
-#: cp/lang-options.h:78
-#, fuzzy
-msgid "Only emit explicit instantiations of inline templates"
-msgstr "Produire les instanciations explicites de patrons en ligne"
-
-#: cp/lang-options.h:84
-msgid "Don't pedwarn about uses of Microsoft extensions"
-msgstr "Ne pas avertir et publiciser l'utilisation des extensions de Microsoft"
-
-#: cp/lang-options.h:87
-msgid "Recognize and/bitand/bitor/compl/not/or/xor"
-msgstr "Reconnaître and/bitand/bitor/compl/not/or/xor"
-
-#: cp/lang-options.h:91
-msgid "Disable optional diagnostics"
-msgstr "Désactiver les diagnostiques optionnels"
-
-#: cp/lang-options.h:93
-msgid "Downgrade conformance errors to warnings"
-msgstr "Dégrader les erreurs de conformité en des avertissements"
-
-#: cp/lang-options.h:96
-msgid "Enable automatic template instantiation"
-msgstr "Autoriser l'instanciation automatique de patron"
-
-#: cp/lang-options.h:101
-msgid "Display statistics accumulated during compilation"
-msgstr "Afficher les statistiques accumulés durant la compilation"
-
-#: cp/lang-options.h:104
-msgid "Specify maximum template instantiation depth"
-msgstr "Spécifier la profondeur maximale d'instanciation de patrons"
-
-#: cp/lang-options.h:106
-msgid "Use __cxa_atexit to register destructors"
-msgstr "Utiliser « __cxa_atexit » pour enregistrer les destructeurs."
-
-#: cp/lang-options.h:109
-msgid "Discard unused virtual functions"
-msgstr "Écarter les fonctions virtuelles non utilisées"
-
-#: cp/lang-options.h:112
-msgid "Implement vtables using thunks"
-msgstr "Implanter les vtables en utilisant des thunks"
-
-#: cp/lang-options.h:115
-msgid "Emit common-like symbols as weak symbols"
-msgstr "Produire les symboles communs comme des symboles faibles"
-
-#: cp/lang-options.h:118
-msgid "Emit cross referencing information"
-msgstr "Produire l'information des références croisées"
-
-#: cp/lang-options.h:122
-msgid "Warn about inconsistent return types"
-msgstr "Avertir à propos des types retournés inconsistants"
-
-#: cp/lang-options.h:125
-msgid "Warn about overloaded virtual function names"
-msgstr "Avertir à propos de la surcharge des noms de fonctions virtuelles"
-
-#: cp/lang-options.h:129
-msgid "Don't warn when all ctors/dtors are private"
-msgstr "Ne pas avertir lorsque toues les ctors/dtors sont privés"
-
-#: cp/lang-options.h:131
-msgid "Warn about non virtual destructors"
-msgstr "Avertir à propos des destructeurs non virtuels"
-
-#: cp/lang-options.h:134
-msgid "Warn when a function is declared extern, then inline"
-msgstr "Avertir lorsqu'un fonction est déclarée extern, puis inline"
-
-#: cp/lang-options.h:137
-msgid "Warn when the compiler reorders code"
-msgstr "Avertir lorsque le compilateur réordonne le code"
-
-#: cp/lang-options.h:140
-msgid "Warn when synthesis behavior differs from Cfront"
-msgstr "Avertir lorsque le comportement de synthère diffère de Cfront"
-
-#: cp/lang-options.h:144
-msgid "Don't warn when type converting pointers to member functions"
-msgstr "Ne pas avertir lors de la conversion des types de pointeur en membres de fonctions"
-
-#: cp/lang-options.h:146
-msgid "Warn about violations of Effective C++ style rules"
-msgstr "Avertir à propos des violations des règles de style de Effective C++"
-
-#: cp/lang-options.h:149
-msgid "Warn when overload promotes from unsigned to signed"
-msgstr "Avertir lorsque la surcharge fait la promotion d'un non signé en signé"
-
-#: cp/lang-options.h:152
-msgid "Warn if a C style cast is used in a program"
-msgstr "Avertir si le style de transtypage C est utilisé dans un programme"
-
-#: cp/lang-options.h:156
-msgid "Don't warn when non-templatized friend functions are declared within a template"
-msgstr "Ne pas avertir lorsque des fonctions amis sans patron sont déclarés à l'intérieur d'un patron"
-
-#: cp/lang-options.h:159
-msgid "Don't announce deprecation of compiler features"
-msgstr "Ne pas annoncer la dépréciation des options du compilateur"
-
-#: f/bad.c:387
+#: f/bad.c:388
msgid "note:"
msgstr "note :"
-#: f/bad.c:391
+#: f/bad.c:392
msgid "warning:"
msgstr "avertissement :"
-#: f/bad.c:395
+#: f/bad.c:396
msgid "fatal:"
msgstr "fatal :"
-#: f/bad.c:437
+#: f/bad.c:438
msgid "(continued):"
msgstr "(suite) :"
-#: f/bad.c:487 f/bad.c:505
+#: f/bad.c:488 f/bad.c:506
msgid "[REPORT BUG!!] %"
msgstr "[RAPPORTER L'ANOMALIE!!] %"
-#: f/bad.c:494 f/bad.c:526
+#: f/bad.c:495 f/bad.c:527
msgid "[REPORT BUG!!]"
msgstr "[RAPPORTER L'ANOMALIE!!]"
-#: f/com.c:3132
+#: f/com.c:3125
#, no-c-format
msgid "ASSIGN'ed label cannot fit into `%A' at %0 -- using wider sibling"
msgstr "l'étiquette affectée ne peut s'insérer dans « %A » à %0 - utilisation d'un voisinage plus grand"
-#: f/com.c:11623
+#: f/com.c:11565
msgid "no INTEGER type can hold a pointer on this configuration"
msgstr "AUCUN type ENTIER ne peut tenir un pointeur sur cette configuration"
-#: f/com.c:11844
+#: f/com.c:11839
#, c-format
msgid "configuration: REAL, INTEGER, and LOGICAL are %d bits wide,"
msgstr "configuration : REAL, INTEGER, et LOGICAL ont %d bits,"
-#: f/com.c:11846
+#: f/com.c:11841
#, c-format
msgid "and pointers are %d bits wide, but g77 doesn't yet work"
msgstr "et les pointeurs ont %d bits, mais g77 ne fonctionne pas encore"
-#: f/com.c:11848
+#: f/com.c:11843
msgid "properly unless they all are 32 bits wide"
msgstr "correctement à moins qu'ils aient tous 32 bits de largeur"
-#: f/com.c:11849
+#: f/com.c:11844
msgid "Please keep this in mind before you report bugs."
msgstr "SVP garder cela en tête avant de rapporter les anomalies."
#. I/O will probably crash.
-#: f/com.c:11857
+#: f/com.c:11852
#, c-format
msgid "configuration: char * holds %d bits, but ftnlen only %d"
msgstr "configuration: char * contient %d bits, mais ftnlen seulement %d"
#. ASSIGN 10 TO I will crash.
-#: f/com.c:11866
+#: f/com.c:11861
#, c-format
msgid ""
"configuration: char * holds %d bits, but INTEGER only %d --\n"
@@ -18537,68 +17398,65 @@ msgstr ""
"configuration: char * contient %d bits, mais INTEGER seulement %d --\n"
" déclaration ASSIGN pourrait échouer"
-#: f/com.c:13681
+#: f/com.c:13677
msgid "In statement function"
msgstr "Dans la déclaration de fonction"
-#: f/com.c:13691
+#: f/com.c:13687
+#, c-format
msgid "Outside of any program unit:\n"
msgstr "En dehors de toute unité de programme:\n"
-#: f/com.c:15320
+#: f/com.c:15283
#, no-c-format
msgid "%A from %B at %0%C"
msgstr "%A à partir de %B à %0%C"
-#: f/com.c:15497
-msgid "directory name must immediately follow -I"
-msgstr "nom du répertoire doit suivre immédiatement -I"
-
-#: f/com.c:15640
+#: f/com.c:15593
#, no-c-format
msgid "At %0, INCLUDE file %A exists, but is not readable"
msgstr "À %0, fichier INCLUDE %A existe mais n'est pas lisible"
-#: f/com.c:15675
+#: f/com.c:15628
#, no-c-format
msgid "At %0, INCLUDE nesting too deep"
msgstr "À %0, imbrication du INCLUDE est trop profonde"
-#: f/expr.c:9614
+#: f/expr.c:8706
#, no-c-format
msgid "Two arithmetic operators in a row at %0 and %1 -- use parentheses"
msgstr "Deux opérateurs arithmétiques dans la rangée à %0 et %1 -- utiliser des parenthèses"
-#: f/expr.c:9664
+#: f/expr.c:8756
#, no-c-format
msgid "Operator at %0 has lower precedence than that at %1 -- use parentheses"
msgstr "L'opérateur à %0 a une précédence plus basse que celui à %1 -- utiliser des parenthèses"
-#: f/expr.c:10525
+#: f/expr.c:9639
#, no-c-format
msgid "Use .EQV./.NEQV. instead of .EQ./.NE. at %0 for LOGICAL operands at %1 and %2"
msgstr "Utiliser .EQV./.NEQV. au lieu de .EQ./.NE. à %0 pour les opérandes LOGICAL à %1 et %2"
-#: f/expr.c:10896
+#: f/expr.c:10010
#, no-c-format
msgid "Unsupported operand for ** at %1 -- converting to default INTEGER"
msgstr "Opérande non supportée pour ** à %1 -- conversion à INTEGER par défaut"
-#: f/g77spec.c:234
+#: f/g77spec.c:230
#, c-format
msgid "overflowed output arg list for `%s'"
msgstr "débordement de la liste d'arguments de sortie pour « %s »"
-#: f/g77spec.c:373
+#: f/g77spec.c:367
msgid "--driver no longer supported"
msgstr "--driver n'est plus supporté"
-#: f/g77spec.c:386
+#: f/g77spec.c:380
#, c-format
msgid "argument to `%s' missing"
msgstr "argument pour « %s » est manquant"
-#: f/g77spec.c:390
+#: f/g77spec.c:384
msgid "no input files; unwilling to write output files"
msgstr "aucun fichier d'entrée; pas d'accord pour écrire dans les fichiers de sortie"
@@ -18607,131 +17465,126 @@ msgstr "aucun fichier d'entrée; pas d'accord pour écrire dans les fichiers de so
msgid "Implicit declaration of `%A' at %0"
msgstr "déclaration implicite de « %A » à %0"
-#: f/lex.c:326
+#: f/lex.c:321
#, no-c-format
msgid "Non-ISO-C-standard escape sequence `\\%A' at %0"
-msgstr "séquence d'échappement non conforme au standard C ISO «\\%A» à %0"
+msgstr "séquence d'échappement non conforme au standard ISO C «\\%A» à %0"
-#: f/lex.c:345
+#: f/lex.c:340
#, no-c-format
msgid "Unknown escape sequence `\\%A' at %0"
msgstr "séquence d'échappement inconnue «\\%A» à %0"
-#: f/lex.c:354
+#: f/lex.c:349
#, no-c-format
msgid "Unterminated escape sequence `\\' at %0"
msgstr "séquence d'échappement non terminée «\\» at %0"
-#: f/lex.c:365
+#: f/lex.c:360
#, no-c-format
msgid "Unknown escape sequence `\\' followed by char code 0x%A at %0"
msgstr "séquence d'échappement inconnue «\\» suivi par le code de caractères 0x%A at %0"
-#: f/lex.c:393
+#: f/lex.c:388
#, no-c-format
msgid "\\x used at %0 with no following hex digits"
msgstr "\\x utilisé à %0 sans être suivi des chiffres hexdécimaux"
-#: f/lex.c:407
+#: f/lex.c:402
#, no-c-format
msgid "Hex escape at %0 out of range"
-msgstr "échappement hexadécimal à %0 hors gamme"
+msgstr "échappement hexadécimal à %0 hors limite"
-#: f/lex.c:441
+#: f/lex.c:436
#, no-c-format
msgid "Escape sequence at %0 out of range for character"
-msgstr "séquence d'échappement à %0 hors gamme pour le type caractère"
+msgstr "séquence d'échappement à %0 hors limite pour le type caractère"
-#: f/lex.c:595
+#: f/lex.c:590
msgid "hex escape out of range"
-msgstr "échappement hexadécimal hors gamme"
+msgstr "échappement hexadécimal hors limite"
-#: f/lex.c:648
+#: f/lex.c:643
#, c-format
msgid "non-ANSI-standard escape sequence, `\\%c'"
msgstr "séquence d'échappement n'est pas ANSI standard: «\\%c'"
-#: f/lex.c:661
+#: f/lex.c:656
#, c-format
msgid "non-ISO escape sequence `\\%c'"
msgstr "séquence d'échappement non ISO «\\%c'"
-#: f/lex.c:665
+#: f/lex.c:660
#, c-format
msgid "unknown escape sequence `\\%c'"
msgstr "séquence d'échappement inconnue: «\\%c'"
-#: f/lex.c:667
+#: f/lex.c:662
#, c-format
msgid "unknown escape sequence: `\\' followed by char code 0x%x"
msgstr "séquence d'échappement inconnue: «\\» suivi par le code de caractères 0x%x"
-#: f/lex.c:744
+#: f/lex.c:739
msgid "badly formed directive -- no closing quote"
msgstr "directive mal composée -- pas de guillement ou d'apostrophe de fermeture"
-#: f/lex.c:802
+#: f/lex.c:797
msgid "#-lines for entering and leaving files don't match"
msgstr "#-lines pour entrer et quitter les fichiers ne concordent pas"
-#: f/lex.c:964
+#: f/lex.c:957
msgid "bad directive -- missing close-quote"
msgstr "directive erronée -- manque un apostrophe ou un guillemet de fermeture"
-#: f/lex.c:1078
-#, c-format
-msgid "ignoring pragma: %s"
-msgstr "pragma: %s ignoré"
-
-#: f/lex.c:1156
+#: f/lex.c:1096
msgid "invalid #ident"
msgstr "#ident invalide"
-#: f/lex.c:1173
+#: f/lex.c:1113
msgid "undefined or invalid # directive"
msgstr "directive # non définie ou invalide"
-#: f/lex.c:1229
+#: f/lex.c:1168
msgid "invalid #line"
msgstr "#line invalide"
-#: f/lex.c:1285 f/lex.c:1329
+#: f/lex.c:1224 f/lex.c:1268
msgid "use `#line ...' instead of `# ...' in first line"
msgstr "utiliser « #line ... » au lieu de « # ... » dans la première ligne"
-#: f/lex.c:1339
+#: f/lex.c:1278
msgid "invalid #-line"
msgstr "#-line invalide"
-#: f/lex.c:1432
+#: f/lex.c:1371
#, no-c-format
msgid "Null character at %0 -- line ignored"
msgstr "caractère null à %0 -- ligne ignorée"
-#: f/stb.c:12078
+#: f/stb.c:9177
#, no-c-format
msgid "INCLUDE at %0 not the only statement on the source line"
msgstr "INCLUDE à %0 n'est pas la seule déclaration sur la ligne source"
-#: f/ste.c:1400 f/ste.c:1747
+#: f/ste.c:1397 f/ste.c:1744
msgid "ASSIGNed FORMAT specifier is too small"
msgstr "spécificateur dans ASSIGN FORMAT est trop petit"
#. ~~~Someday handle CHARACTER*1, CHARACTER*N
-#: f/ste.c:2624
+#: f/ste.c:2621
#, no-c-format
msgid "SELECT CASE on CHARACTER type (at %0) not supported -- sorry"
msgstr "SÉLECTION du CASE sur un type CHARACTER (à %0) n'est pas supporté -- désolé"
-#: f/ste.c:2729
+#: f/ste.c:2725
msgid "SELECT (at %0) has duplicate cases -- check integer overflow of CASE(s)"
-msgstr ""
+msgstr "SELECT (à %0) possède des cases doubles -- vérifier le débordement d'entier des CASES"
-#: f/ste.c:2959
+#: f/ste.c:2957
msgid "ASSIGN to variable that is too small"
msgstr "ASSIGN à la variable est trop petit"
-#: f/ste.c:2987
+#: f/ste.c:2989
msgid "ASSIGNed GOTO target variable is too small"
msgstr "variable cible par ASSIGN GOTO est trop petite"
@@ -18740,332 +17593,21 @@ msgstr "variable cible par ASSIGN GOTO est trop petite"
msgid "Local adjustable symbol `%A' at %0"
msgstr "Symbole local ajustable « %A » à %0"
-#: f/target.c:2550
+#: f/target.c:2545
msgid "data initializer on host with different endianness"
msgstr "initialiseur de données sur l'hôte a un alignement des octets différent (endian)"
-#: f/top.c:237
-#, c-format
-msgid "%s no longer supported -- try -fvxt"
-msgstr "%s n'est plus supporté -- essayer -fvxt"
-
-#: f/top.c:239
-#, c-format
-msgid "%s no longer supported -- try -fno-vxt -ff90"
-msgstr "%s n'est plus supporté -- essayer -fno-vxt -ff90"
-
-#: f/top.c:307 f/top.c:309
-#, c-format
-msgid "%s disabled, use normal debugging flags"
-msgstr "%s désactivé, utiliser le fanion normal de mise au point"
-
-#: f/lang-options.h:33
-msgid "Print g77-specific compiler version info, run internal tests"
-msgstr "Afficher les informations de version du compilateur g77-specific, exécuter les tests internes"
-
-#: f/lang-options.h:37
-msgid "Program is written in typical FORTRAN 66 dialect"
-msgstr "Programme est écrit dans un dialecte typique FORTRAN 66"
-
-#: f/lang-options.h:40
-msgid "Program is written in typical Unix f77 dialect"
-msgstr "Programme est écrit dans un dialecte typique Unix f77"
-
-#: f/lang-options.h:42
-msgid "Program does not use Unix-f77 dialectal features"
-msgstr "Programme n'utilise pas les options du dialecte Unix f77"
-
-#: f/lang-options.h:44
-msgid "Program is written in Fortran-90-ish dialect"
-msgstr "Programme est écrit dans un dialecte Fortran 90"
-
-#: f/lang-options.h:48
-msgid "Treat local vars and COMMON blocks as if they were named in SAVE statements"
-msgstr "Traiter les var. locales et les blocs COMMON tel que s'ils étaient nommés dans une déclaration SAVE"
-
-#: f/lang-options.h:50
-msgid "Allow $ in symbol names"
-msgstr "Permettre $ dans les noms de symboles"
-
-#: f/lang-options.h:54
-msgid "f2c-compatible code need not be generated"
-msgstr "code f2c compatible n'a pas besoin d'être généré"
-
-#: f/lang-options.h:57
-msgid "Unsupported; do not generate libf2c-calling code"
-msgstr "Non supporté; ne pas générer le code d'appel libf2c"
-
-#: f/lang-options.h:59
-msgid "Unsupported; affects code-generation of arrays"
-msgstr "Non supporté; affecte la génération de code des tableaux"
-
-#: f/lang-options.h:62
-msgid "Program is written in Fortran-90-ish free form"
-msgstr "Programme est écrit dans un style libre Fortran 90"
-
-#: f/lang-options.h:67
-msgid "Warn about use of (only a few for now) Fortran extensions"
-msgstr "Avertir à propos de l'utilisation (très peu pour l'instant) des extensions Fortran"
-
-#: f/lang-options.h:70
-msgid "Program is written in VXT (Digital-like) FORTRAN"
-msgstr "Programme est écrit en Fortran VXT (forme de Digital)"
-
-#: f/lang-options.h:73
-msgid "Disallow all ugly features"
-msgstr "Désactiver toutes les options laides"
-
-#: f/lang-options.h:76
-msgid "Hollerith and typeless constants not passed as arguments"
-msgstr "Les constantes Hollerith et sans type ne sont pas passés comme arguments"
-
-#: f/lang-options.h:78
-msgid "Allow ordinary copying of ASSIGN'ed vars"
-msgstr "Permettre le copie ordinaire des variable affectées"
-
-#: f/lang-options.h:81
-msgid "Dummy array dimensioned to (1) is assumed-size"
-msgstr "Tableau factice dont la taille des dimensions (1) est assumée"
-
-#: f/lang-options.h:84
-msgid "Trailing comma in procedure call denotes null argument"
-msgstr "Virgule de fin dans l'appel de la procédure dénote un argument nul"
-
-#: f/lang-options.h:87
-msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
-msgstr "Permettre REAL(Z) et AIMAG(Z) pour les DOUBLE COMPLEX Z"
-
-#: f/lang-options.h:91
-msgid "Initialization via DATA and PARAMETER is type-compatible"
-msgstr "Initialisation via DATA et PARAMETER est un de types compatibles"
-
-#: f/lang-options.h:93
-msgid "Allow INTEGER and LOGICAL interchangeability"
-msgstr "Permettre l'interchangeabilité de INTEGER et LOGICAL"
-
-#: f/lang-options.h:96
-msgid "Print internal debugging-related info"
-msgstr "Afficher les informations internes reliées à la mise au point"
+#: f/top.c:244
+msgid "-fvxt-not-f90 no longer supported -- try -fvxt"
+msgstr "-fvxt-not-f90 n'est plus supporté -- essayer -fvxt"
-#: f/lang-options.h:99
-msgid "Initialize local vars and arrays to zero"
-msgstr "Initialiser les vars locales et les tableaux à zéro"
+#: f/top.c:248
+msgid "-ff90-not-vxt no longer supported -- try -fno-vxt -ff90"
+msgstr "-ff90-not-vxt n'est plus supporté -- essayer -fno-vxt -ff90"
-#: f/lang-options.h:103
-msgid "Backslashes in character/hollerith constants not special (C-style)"
-msgstr "Barres obliques inverses dans les constantes caractères/hollerith ne sont pas particulières (style C)"
-
-#: f/lang-options.h:105
-msgid "Have front end emulate COMPLEX arithmetic to avoid bugs"
-msgstr "Avoir un frontal d'émulation pour l'arithmétique COMPLEXE pour éviter les bugs"
-
-#: f/lang-options.h:109
-msgid "Disable the appending of underscores to externals"
-msgstr "Désactiver l'ajout de caractères de soulignement aux externes"
-
-#: f/lang-options.h:112
-msgid "Never append a second underscore to externals"
-msgstr "Ne jamais ajouter un second caractères de soulignement aux externes"
-
-#: f/lang-options.h:114
-msgid "Intrinsics spelled as e.g. SqRt"
-msgstr "Intrinsèques épellées tel que SqRt"
-
-#: f/lang-options.h:116
-msgid "Intrinsics in uppercase"
-msgstr "Intrinsèques en majuscules"
-
-#: f/lang-options.h:119
-msgid "Intrinsics letters in arbitrary cases"
-msgstr "Lettres d'instrinsèques en casse arbitraire"
-
-#: f/lang-options.h:121
-msgid "Language keywords spelled as e.g. IOStat"
-msgstr "Mots clés du langage épellés tel que IOStat"
-
-#: f/lang-options.h:123
-msgid "Language keywords in uppercase"
-msgstr "Mots clés du langage en majuscules"
-
-#: f/lang-options.h:126
-msgid "Language keyword letters in arbitrary cases"
-msgstr "Lettres des mots clés du langage dans des casses arbitraires"
-
-#: f/lang-options.h:128
-msgid "Internally convert most source to uppercase"
-msgstr "Convertir à l'interne la majorité des sources en majuscules"
-
-#: f/lang-options.h:131
-msgid "Internally preserve source case"
-msgstr "Préserver à l'interne la casse des sources"
-
-#: f/lang-options.h:133
-msgid "Symbol names spelled in mixed case"
-msgstr "Noms des symboles épellés dans des casses mélangées"
-
-#: f/lang-options.h:135
-msgid "Symbol names in uppercase"
-msgstr "Noms des symboles en majuscules"
-
-#: f/lang-options.h:137
-msgid "Symbol names in lowercase"
-msgstr "Noms de symboles en minuscules"
-
-#: f/lang-options.h:140
-msgid "Program written in uppercase"
-msgstr "Programme écrit en majuscules"
-
-#: f/lang-options.h:142
-msgid "Program written in lowercase"
-msgstr "Programmes écrit en minuscules"
-
-#: f/lang-options.h:144
-msgid "Program written in strict mixed-case"
-msgstr "Programme écrit dans une stricte casse mélangée"
-
-#: f/lang-options.h:146
-msgid "Compile as if program written in uppercase"
-msgstr "Compiler comme si le programme était écrit en majuscules"
-
-#: f/lang-options.h:148
-msgid "Compile as if program written in lowercase"
-msgstr "Compiler comme si le programme était écrit en minuscules"
-
-#: f/lang-options.h:150
-msgid "Preserve all spelling (case) used in program"
-msgstr "Préserver toutes les épellations (casses) utilisé dans le programme"
-
-#: f/lang-options.h:152
-msgid "Delete libU77 intrinsics with bad interfaces"
-msgstr "Détruire les intrinsèques libU77 ayant des interfaces erronées"
-
-#: f/lang-options.h:154
-msgid "Disable libU77 intrinsics with bad interfaces"
-msgstr "Désactiver les intrinsèques libU77 ayant des interfaces erronées"
-
-#: f/lang-options.h:157
-msgid "Hide libU77 intrinsics with bad interfaces"
-msgstr "Cacher les intrinsèques libU77 ayant des interfaces erronées"
-
-#: f/lang-options.h:159
-msgid "Delete non-FORTRAN-77 intrinsics f2c supports"
-msgstr "Détruire les supports f2c intrinsèques non Fortran 77"
-
-#: f/lang-options.h:161
-msgid "Disable non-FORTRAN-77 intrinsics f2c supports"
-msgstr "Désactiver les supports f2c intrinsèques non Fortran 77"
-
-#: f/lang-options.h:164
-msgid "Hide non-FORTRAN-77 intrinsics f2c supports"
-msgstr "Cacher les supports f2c intrinsèques non Fortran 77"
-
-#: f/lang-options.h:166
-msgid "Delete non-FORTRAN-77 intrinsics F90 supports"
-msgstr "Détruire les supports F90 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:168
-msgid "Disable non-FORTRAN-77 intrinsics F90 supports"
-msgstr "Désactiver les supports F90 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:171
-msgid "Hide non-FORTRAN-77 intrinsics F90 supports"
-msgstr "Cacher les supports F90 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:173
-msgid "Delete non-FORTRAN-77 intrinsics g77 supports"
-msgstr "Détruire les supports g77 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:175
-msgid "Disable non-FORTRAN 77 intrinsics F90 supports"
-msgstr "Désactiver les supports g77 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:178
-msgid "Hide non-FORTRAN 77 intrinsics F90 supports"
-msgstr "Cacher les supports g77 intrinsèques non Fortran 77"
-
-#: f/lang-options.h:180
-msgid "Delete MIL-STD 1753 intrinsics"
-msgstr "Détruire les intrinsèques MIL-STD 1753"
-
-#: f/lang-options.h:182
-msgid "Disable MIL-STD 1753 intrinsics"
-msgstr "Désactiver les intrinsèques MIL-STD 1753"
-
-#: f/lang-options.h:185
-msgid "Hide MIL-STD 1753 intrinsics"
-msgstr "Cacher les intrinsèques MIL-STD 1753"
-
-#: f/lang-options.h:187
-msgid "Delete libU77 intrinsics"
-msgstr "Détruire les intrinsèques libU77"
-
-#: f/lang-options.h:189
-msgid "Disable libU77 intrinsics"
-msgstr "Désactiver les intrinsèques libU77"
-
-#: f/lang-options.h:192
-msgid "Hide libU77 intrinsics"
-msgstr "Cacher les intrinsèques libU77"
-
-#: f/lang-options.h:194
-msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr "Détruire les supports VXT Fortran des intrinsèques non Fortran-77"
-
-#: f/lang-options.h:196
-msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr "Désactiver les supports VXT Fortran des intrinsèques non Fortran-77"
-
-#: f/lang-options.h:199
-msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
-msgstr "Cacher les supports VXT Fortran des intrinsèques non Fortran-77"
-
-#: f/lang-options.h:201
-msgid "Treat initial values of 0 like non-zero values"
-msgstr "Traiter les valeurs initiales de 0 comme des valeurs non zéros"
-
-#: f/lang-options.h:204
-msgid "Emit special debugging information for COMMON and EQUIVALENCE (disabled)"
-msgstr "Produire des information spéciales de mise au point pour COMMON et EQUIVALENCE (désactivé)"
-
-#: f/lang-options.h:207
-msgid "Take at least one trip through each iterative DO loop"
-msgstr "Exécuter une dernière fois la visite à traves chaque boucle itérative DO"
-
-#: f/lang-options.h:211
-msgid "Print names of program units as they are compiled"
-msgstr "Afficher les noms des unités de programme qui sont compilées"
-
-#: f/lang-options.h:214
-msgid "Disable fatal diagnostics about inter-procedural problems"
-msgstr "Inhiber les diagnostiques fatals à propos des problèmes entre les procédures"
-
-#: f/lang-options.h:216
-msgid "Make prefix-radix non-decimal constants be typeless"
-msgstr "Rendre les préfixes des bases des constantes non décimales sans type"
-
-#: f/lang-options.h:219
-msgid "Generate code to check subscript and substring bounds"
-msgstr "Générer du code pour vérifier les bornes des souscripts et des sous-chaînes"
-
-#: f/lang-options.h:222
-msgid "Fortran-specific form of -fbounds-check"
-msgstr "Forme spécifique Fortran de -fbounds-check"
-
-#: f/lang-options.h:226
-msgid "Disable warnings about inter-procedural problems"
-msgstr "Inhiber les avertissements à propos des problèmes entre les procédures"
-
-#: f/lang-options.h:230
-msgid "Warn about constructs with surprising meanings"
-msgstr "Avertir à propos des construits ayant des sens surprenants"
-
-#: f/lang-options.h:235
-msgid "Add a directory for INCLUDE searching"
-msgstr "Ajouter un répertoire pour la recherche par INCLUDE"
-
-#: f/lang-options.h:237
-msgid "Set the maximum line length"
-msgstr "Initialiser la longueur maximale des lignes"
+#: f/top.c:318
+msgid "-fdebug-kludge is disabled, use normal debugging flags"
+msgstr "-fdebug-kludge est désactivé, utiliser le fanion normal de mise au point"
#: f/bad.def:39
#, no-c-format
@@ -19700,12 +18242,12 @@ msgstr "Trop de valeurs initiales dans la liste des initialisations débutant à %
#: f/bad.def:892
#, no-c-format
msgid "Array or substring specification for `%A' out of range in statement at %0"
-msgstr "Tableau ou sous-chaîne de spécification pour « %A » hors gamme dans la déclaration à %0"
+msgstr "Tableau ou sous-chaîne de spécification pour « %A » hors limite dans la déclaration à %0"
#: f/bad.def:895
#, no-c-format
msgid "Array subscript #%B out of range for initialization of `%A' in statement at %0"
-msgstr "souscript de tableau #%B hors gamme pour l'initialisation de « %A » dans la déclaration à %0"
+msgstr "souscript de tableau #%B hors limite pour l'initialisation de « %A » dans la déclaration à %0"
#: f/bad.def:898
#, no-c-format
@@ -19745,7 +18287,7 @@ msgstr "Désaccord des conditions requises par EQUIVALENCE pour l'emplacement de
#: f/bad.def:919
#, no-c-format
msgid "Array or substring specification for `%A' out of range in EQUIVALENCE statement"
-msgstr "spécification de tableau ou de sous-chaîne pour « %A » est hors gamme dans la déclaration EQUIVALENCE"
+msgstr "spécification de tableau ou de sous-chaîne pour « %A » est hors limite dans la déclaration EQUIVALENCE"
#: f/bad.def:922
#, no-c-format
@@ -19760,7 +18302,7 @@ msgstr "référence de tableau vers une variable scalaire « %A » dans une déclarai
#: f/bad.def:928
#, no-c-format
msgid "Array subscript #%B out of range for EQUIVALENCE of `%A'"
-msgstr "souscript de tableau #%B hors gamme pour la déclaration EQUIVALENCE de « %A »"
+msgstr "souscript de tableau #%B hors limite pour la déclaration EQUIVALENCE de « %A »"
#: f/bad.def:936
#, no-c-format
@@ -19969,321 +18511,338 @@ msgstr "Dans la liste de noms"
msgid "In anything"
msgstr "Dans n'importe quoi"
-#: java/check-init.c:917
+#: java/check-init.c:905
#, c-format
msgid "internal error in check-init: tree code not implemented: %s"
msgstr "erreur interne dans check-init: arbre de code n'est pas implanté: %s"
-#: java/check-init.c:990
-#, c-format
-msgid "final field '%s' may not have been initialized"
-msgstr "champ final « %s » peut ne pas avoir été initialisé"
+#: java/check-init.c:977
+msgid "%Jfinal field '%D' may not have been initialized"
+msgstr "%Jchamp final « %D » peut ne pas avoir été initialisé"
-#: java/class.c:539 java/class.c:564
+#: java/class.c:592 java/class.c:616
msgid "internal error - too many interface type"
msgstr "erreur interne - trop de type d'interface"
-#: java/class.c:677
+#: java/class.c:715
msgid "bad method signature"
msgstr "méthode de signature erronée"
-#: java/class.c:726
+#: java/class.c:759
msgid "misplaced ConstantValue attribute (not in any field)"
msgstr "attribut ConstantValue mal positionné (n'est dans aucun champ)"
-#: java/class.c:728
+#: java/class.c:761
#, c-format
msgid "duplicate ConstantValue attribute for field '%s'"
msgstr "duplication de l'attribut ConstanValue pour le champ « %s »"
-#: java/class.c:739
+#: java/class.c:772
#, c-format
msgid "ConstantValue attribute of field '%s' has wrong type"
msgstr "attribut ConstanValue du champ « %s » a un type erroné"
-#: java/class.c:1103
+#: java/class.c:1067
#, c-format
msgid "field '%s' not found in class"
msgstr "champ « %s » n'a pas été repéré dans la classe"
-#: java/class.c:1365
-msgid "abstract method in non-abstract class"
-msgstr "méthode abstraite dans une classe non abstraite"
+#: java/class.c:1324
+msgid "%Jabstract method in non-abstract class"
+msgstr "%Jméthode abstraite dans une classe non abstraite"
+
+#: java/class.c:2140
+msgid "%Jnon-static method '%D' overrides static method"
+msgstr "%Jméthode non statique « %D » écrase la méthode statique"
+
+#: java/decl.c:1018
+msgid "%J'%D' used prior to declaration"
+msgstr "%J« %D » utilisé précédemment avant sa déclaration"
-#: java/class.c:2078
+#: java/decl.c:1059
#, c-format
-msgid "non-static method '%s' overrides static method"
-msgstr "méthode non statique « %s » écrase la méthode statique"
+msgid "declaration of `%s' shadows a parameter"
+msgstr "la déclaration de « %s » masque un paramètre"
-#: java/decl.c:1541
+#: java/decl.c:1062
#, c-format
-msgid "In %s: overlapped variable and exception ranges at %d"
-msgstr "Dans %s: chevauchement de variable et plage d'exception à %d"
+msgid "declaration of `%s' shadows a symbol from the parameter list"
+msgstr "la déclaration de « %s » masque un symbole de la liste des paramètres"
+
+#: java/decl.c:1361
+msgid "%Jlabel '%D' used but not defined"
+msgstr "%Jétiquette « %D » utilisée mais non définie"
-#: java/decl.c:1622
+#: java/decl.c:1366
+msgid "%Jlabel '%D' defined but not used"
+msgstr "%Jétiquette « %D » définie mais non utilisée"
+
+#: java/decl.c:1494
+msgid "%JIn %D: overlapped variable and exception ranges at %d"
+msgstr "%JDans %D: chevauchement de variable et plage d'exception à %d"
+
+#: java/decl.c:1572
msgid "bad type in parameter debug info"
msgstr "type erroné dans les paramètres d'informations de mise au point"
-#: java/decl.c:1632
-#, c-format
-msgid "bad PC range for debug info for local `%s'"
-msgstr "plage PC erroné pour les infos de débug pour la var. locale « %s »"
+#: java/decl.c:1581
+msgid "%Jbad PC range for debug info for local '%D'"
+msgstr "%Jplage PC erroné pour les infos de débug pour la var. locale « %D »"
-#: java/expr.c:530
+#: java/expr.c:519
msgid "stack underflow - dup* operation"
msgstr "sous débordement de la pile - opération dup*"
-#: java/expr.c:1534
+#: java/expr.c:1469
#, c-format
msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
msgstr "référence « %s » est ambigue: apparaît dans l'interface « %s » et l'interface « %s »"
-#: java/expr.c:1563
+#: java/expr.c:1497
#, c-format
msgid "field `%s' not found"
msgstr "champ « %s » n'a pas été trouvé"
-#: java/expr.c:1715
+#: java/expr.c:1658
msgid "ret instruction not implemented"
msgstr "instruction ret n'est pas implantée"
-#: java/expr.c:1857
+#: java/expr.c:1815
#, c-format
msgid "method '%s' not found in class"
msgstr "méthode « %s » n'a pas été repéré dans la classe"
-#: java/expr.c:2060
+#: java/expr.c:2020
#, c-format
msgid "failed to find class '%s'"
msgstr "échec de repérage de la classe « %s »"
-#: java/expr.c:2070
+#: java/expr.c:2030
#, c-format
msgid "class '%s' has no method named '%s' matching signature '%s'"
msgstr "classe « %s » n'a pas de méthode nommée « %s » concordant avec la signature « %s »"
-#: java/expr.c:2080
+#: java/expr.c:2040
msgid "invokestatic on non static method"
msgstr "invocation statique sur un méthode non statique"
-#: java/expr.c:2085
+#: java/expr.c:2045
msgid "invokestatic on abstract method"
msgstr "invocation statique sur un méthode abstraite"
-#: java/expr.c:2093
+#: java/expr.c:2053
msgid "invoke[non-static] on static method"
msgstr "invocation non statique sur un méthode statique"
-#: java/expr.c:2396
+#: java/expr.c:2352
#, c-format
msgid "missing field '%s' in '%s'"
msgstr "champ « %s » manquant dans « %s »"
-#: java/expr.c:2402
+#: java/expr.c:2358
#, c-format
msgid "mismatching signature for field '%s' in '%s'"
msgstr "aignature ne concorde pas pour le champ « %s » dans « %s »"
-#: java/expr.c:2425
-#, c-format
-msgid "assignment to final field `%s' not in field's class"
-msgstr "affectation au champ final « %s » n'est pas le champ de la classe"
+#: java/expr.c:2380
+msgid "%Jassignment to final field '%D' not in field's class"
+msgstr "%Jaffectation au champ final « %D » n'est pas le champ de la classe"
-#: java/expr.c:2430
-#, c-format
-msgid "assignment to final static field `%s' not in class initializer"
-msgstr "affectation au champ statique final « %s » n'est pas dans l'initialiseur de la classe"
+#: java/expr.c:2385
+msgid "%Jassignment to final static field `%D' not in class initializer"
+msgstr "%Jaffectation au champ statique final « %D » n'est pas dans l'initialiseur de la classe"
-#: java/expr.c:2437
-#, c-format
-msgid "assignment to final field `%s' not in constructor"
-msgstr "affectation au champ final « %s » n'est pas dans le constructeur"
+#: java/expr.c:2393
+msgid "%Jassignment to final field '%D' not in constructor"
+msgstr "%Jaffectation au champ final « %D » n'est pas dans le constructeur"
-#: java/expr.c:2684
+#: java/expr.c:2636
#, c-format
msgid "can't expand %s"
msgstr "ne peut faire l'expansion de %s"
-#: java/expr.c:2861
+#: java/expr.c:2808
msgid "invalid PC in line number table"
msgstr "PC invalide dans la numéro de ligne de la table"
-#. We've just reached the end of a region of dead code.
-#: java/expr.c:2906
+#: java/expr.c:2854
#, c-format
msgid "unreachable bytecode from %d to before %d"
msgstr "bytcode n'est pas atteignable à partir de %d jusqu'à %d"
-#. We've just reached the end of a region of dead code.
-#: java/expr.c:2943
+#: java/expr.c:2892
#, c-format
msgid "unreachable bytecode from %d to the end of the method"
msgstr "bytcode n'est pas atteignable à partir de %d jusqu'à la fin de la méthode."
#. duplicate code from LOAD macro
-#: java/expr.c:3261
+#: java/expr.c:3206
msgid "unrecogized wide sub-instruction"
msgstr "sous-instruction très large non reconnue"
-#: java/jcf-io.c:543
+#: java/jcf-io.c:534
#, c-format
msgid "source file for class `%s' is newer than its matching class file. Source file `%s' used instead"
msgstr "fichier source de la classe « %s » est plus récent que son fichier de classe concordant. Fichier source « %s » utilisé à la place."
-#: java/jcf-parse.c:338
+#: java/jcf-parse.c:330
msgid "bad string constant"
msgstr "constante chaîne erronée"
-#: java/jcf-parse.c:356
+#: java/jcf-parse.c:348
#, c-format
msgid "bad value constant type %d, index %d"
msgstr "valeur %d de type de constante erronée, index %d"
-#: java/jcf-parse.c:528
+#: java/jcf-parse.c:514
#, c-format
-msgid "can't reopen %s"
-msgstr "ne peut ré-ouvrir %s"
+msgid "can't reopen %s: %m"
+msgstr "ne peut ré-ouvrir %s: %m"
-#: java/jcf-parse.c:533
+#: java/jcf-parse.c:519
#, c-format
-msgid "can't close %s"
-msgstr "ne peut fermer %s"
+msgid "can't close %s: %m"
+msgstr "ne peut fermer %s: %m"
-#: java/jcf-parse.c:619
+#: java/jcf-parse.c:604
#, c-format
msgid "cannot find file for class %s"
msgstr "ne peut repérer le fichier pour la classe %s."
-#: java/jcf-parse.c:631
+#: java/jcf-parse.c:615
msgid "not a valid Java .class file"
msgstr "n'est pas un fichier Java .class valide"
-#: java/jcf-parse.c:634
+#: java/jcf-parse.c:618
msgid "error while parsing constant pool"
msgstr "error lors de l'analyse syntaxique du lots de constantes"
-#: java/jcf-parse.c:637
+#: java/jcf-parse.c:621
#, c-format
msgid "error in constant pool entry #%d\n"
msgstr "erreur dans l'entrée #%d du lot de constantes\n"
#. FIXME - where was first time
-#: java/jcf-parse.c:649
+#: java/jcf-parse.c:633
#, c-format
msgid "reading class %s for the second time from %s"
msgstr "lecture de la classe %s pour la seconde fois depuis %s"
-#: java/jcf-parse.c:667
+#: java/jcf-parse.c:651
msgid "error while parsing fields"
msgstr "erreur lors de l'analyse syntaxique des champs"
-#: java/jcf-parse.c:670
+#: java/jcf-parse.c:654
msgid "error while parsing methods"
msgstr "erreur lors de l'analyse syntaxique des méthodes"
-#: java/jcf-parse.c:673
+#: java/jcf-parse.c:657
msgid "error while parsing final attributes"
msgstr "erreur lors de l'analyse syntaxique des attributs"
-#: java/jcf-parse.c:687
+#: java/jcf-parse.c:671
#, c-format
msgid "the `java.lang.Object' that was found in `%s' didn't have the special zero-length `gnu.gcj.gcj-compiled' attribute. This generally means that your classpath is incorrectly set. Use `info gcj \"Input Options\"' to see the info page describing how to set the classpath"
msgstr "« java.lang.Object» qui a été repéré dans « %s » n'avait pas l'attribut spécial de longueur zéro «gnu.gcj.gcj-compiled». Cela généralement signifie que le chemin d'accès aux classes est incorrectement initialisé. Utiliser «info gcj \"Input Options\" » pour accéder aux informations décrivant comment initialiser le chemin d'accès des classes."
-#: java/jcf-parse.c:777
+#: java/jcf-parse.c:749
msgid "missing Code attribute"
msgstr "attribut Code manquant"
-#: java/jcf-parse.c:1014
-msgid "source file seen twice on command line and will be compiled only once"
-msgstr "fichier source vu deux fois sur la ligne de commande et ne sera compilé une seule fois"
+#: java/jcf-parse.c:981
+msgid "%Hsource file seen twice on command line and will be compiled only once"
+msgstr "%Hfichier source vu deux fois sur la ligne de commande et ne sera compilé une seule fois"
-#: java/jcf-parse.c:1030
+#: java/jcf-parse.c:997
msgid "no input file specified"
msgstr "aucun fichier n'a été spécifié à l'entrée"
-#: java/jcf-parse.c:1059
+#: java/jcf-parse.c:1026
#, c-format
-msgid "can't close input file %s"
-msgstr "ne peut fermer le fichier d'entrée %s"
+msgid "can't close input file %s: %m"
+msgstr "ne peut fermer le fichier d'entrée %s: %m"
-#: java/jcf-parse.c:1096
+#: java/jcf-parse.c:1064
#, c-format
msgid "bad zip/jar file %s"
msgstr "fichier zip/jar erroné %s"
-#: java/jcf-write.c:2650
+#: java/jcf-parse.c:1236
+#, c-format
+msgid "error while reading %s from zip file"
+msgstr "erreur lors de la lecture de %s à partir du fichier zip"
+
+#: java/jcf-write.c:2602
#, c-format
msgid "internal error in generate_bytecode_insn - tree code not implemented: %s"
msgstr "erreur interne dans generate_bytecode_insn - arbre de code n'est pas implanté: %s"
-#: java/jcf-write.c:2988
+#: java/jcf-write.c:2934
msgid "field initializer type mismatch"
msgstr "type de initialiseur du champ ne concorde pas"
-#: java/jcf-write.c:3419
+#: java/jcf-write.c:3389
#, c-format
-msgid "can't create directory %s"
-msgstr "ne peut créer le répertoire %s"
+msgid "can't create directory %s: %m"
+msgstr "ne peut créer le répertoire %s: %m"
-#: java/jcf-write.c:3473
+#: java/jcf-write.c:3442
#, c-format
-msgid "can't create %s"
-msgstr "ne peut créer %s"
+msgid "can't create %s: %m"
+msgstr "ne peut créer %s: %m"
-#: java/jv-scan.c:187
+#: java/jv-scan.c:185
msgid "only one of `--print-main', `--list-class', and `--complexity' allowed"
msgstr "seule une des options «--print-main», «--list-class» et «--complexity» est permise"
-#: java/jv-scan.c:190
+#: java/jv-scan.c:188
#, c-format
msgid "can't open output file `%s'"
msgstr "ne peut ouvrir le fichier de sortie « %s »"
-#: java/jv-scan.c:224
+#: java/jv-scan.c:222
#, c-format
msgid "file not found `%s'"
msgstr "fichier non repéré « %s »"
-#: java/jvspec.c:426
+#: java/jvspec.c:418
msgid "can't specify `-D' without `--main'\n"
msgstr "ne peut spécifier «-D» sans «--main»\n"
-#: java/jvspec.c:429
+#: java/jvspec.c:421
#, c-format
msgid "`%s' is not a valid class name"
msgstr "« %s » n'est pas un nom de classe valide"
-#: java/jvspec.c:435
-#, fuzzy
+#: java/jvspec.c:427
msgid "--resource requires -o"
-msgstr "-R requiert -o"
+msgstr "--resource requiert -o"
-#: java/jvspec.c:442
+#: java/jvspec.c:434
msgid "warning: already-compiled .class files ignored with -C"
msgstr "AVERTISSEMENT: fichiers .class déjà compilés ignorés avec -C"
-#: java/jvspec.c:449
+#: java/jvspec.c:441
msgid "cannot specify both -C and -o"
msgstr "ne peut spécéfier à la fois -C et -o"
-#: java/jvspec.c:461
+#: java/jvspec.c:453
msgid "cannot create temporary file"
msgstr "ne peut créer un fichier temporaire"
-#: java/jvspec.c:489
+#: java/jvspec.c:481
msgid "using both @FILE with multiple files not implemented"
msgstr "utilisé ensemble @FICHIER avec de multiples fichiers bMest pas implanté"
-#: java/jvspec.c:538
+#: java/jvspec.c:530
msgid "cannot specify `main' class when not linking"
msgstr "ne peut spécifier la classe « main » lorsqu'il n'y a pas d'édition de liens"
-#: java/lang.c:548
+#: java/lang.c:740
msgid "can't do dependency tracking with input from stdin"
msgstr "ne peut faire le tracking de dépendance avec l'entrée à partir de stdin"
-#: java/lang.c:564
+#: java/lang.c:756
msgid "couldn't determine target name for dependency tracking"
msgstr "ne peut déterminer le nom de la cible pour le tracking de dépendance"
@@ -20302,300 +18861,210 @@ msgstr ""
"d'utiliser un encodage particulier pour votre fichier d'entrée, essayer\n"
"l'option «--encoding=UTF-8»."
-#: java/mangle.c:85
+#: java/mangle.c:89
#, c-format
msgid "can't mangle %s"
msgstr "ne peut mutiler %s"
-#: java/mangle_name.c:144 java/mangle_name.c:216
+#: java/mangle_name.c:140 java/mangle_name.c:210
msgid "internal error - invalid Utf8 name"
msgstr "erreur interne - nom Utf8 invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:881
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:962
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1303
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1364
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1574
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1796
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1805
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1816
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1827
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1839
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1854
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1871
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1873
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1945
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2116
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2178
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2330
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2342
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2349
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2356
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2367
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2369
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2407
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2409
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2411
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2432
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2434
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2436
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2452
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2454
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2475
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2477
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2479
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2507
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2509
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2511
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2513
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2531
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2533
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2544
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2555
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2566
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2577
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2588
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2601
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2605
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2607
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2620
+#: java/parse-scan.y:880 java/parse.y:949 java/parse.y:1290 java/parse.y:1351
+#: java/parse.y:1555 java/parse.y:1777 java/parse.y:1786 java/parse.y:1797
+#: java/parse.y:1808 java/parse.y:1820 java/parse.y:1835 java/parse.y:1852
+#: java/parse.y:1854 java/parse.y:1935 java/parse.y:2106 java/parse.y:2168
+#: java/parse.y:2320 java/parse.y:2332 java/parse.y:2339 java/parse.y:2346
+#: java/parse.y:2357 java/parse.y:2359 java/parse.y:2397 java/parse.y:2399
+#: java/parse.y:2401 java/parse.y:2422 java/parse.y:2424 java/parse.y:2426
+#: java/parse.y:2442 java/parse.y:2444 java/parse.y:2465 java/parse.y:2467
+#: java/parse.y:2469 java/parse.y:2497 java/parse.y:2499 java/parse.y:2501
+#: java/parse.y:2503 java/parse.y:2521 java/parse.y:2523 java/parse.y:2534
+#: java/parse.y:2545 java/parse.y:2556 java/parse.y:2567 java/parse.y:2578
+#: java/parse.y:2591 java/parse.y:2595 java/parse.y:2597 java/parse.y:2610
msgid "Missing term"
msgstr "Terme manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse-scan.y:883
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:734
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:772
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:797
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:983
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1338
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1550
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1552
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1781
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1807
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1818
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1829
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1841
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1856
+#: java/parse-scan.y:882 java/parse.y:721 java/parse.y:759 java/parse.y:784
+#: java/parse.y:970 java/parse.y:1325 java/parse.y:1531 java/parse.y:1533
+#: java/parse.y:1762 java/parse.y:1788 java/parse.y:1799 java/parse.y:1810
+#: java/parse.y:1822 java/parse.y:1837
msgid "';' expected"
msgstr "«;» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:732
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:770
+#: java/parse.y:719 java/parse.y:757
msgid "Missing name"
msgstr "Nom manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:795
+#: java/parse.y:782
msgid "'*' expected"
msgstr "« * » attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:809
+#: java/parse.y:796
msgid "Class or interface declaration expected"
msgstr "Déclaration de classe ou d'interface attendue"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:846
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:848
+#: java/parse.y:833 java/parse.y:835
msgid "Missing class name"
msgstr "Nom de classe manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:851
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:855
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:863
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1023
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1284
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1286
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1616
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1867
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1899
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1952
+#: java/parse.y:838 java/parse.y:842 java/parse.y:850 java/parse.y:1010
+#: java/parse.y:1271 java/parse.y:1273 java/parse.y:1597 java/parse.y:1848
+#: java/parse.y:1880 java/parse.y:1942
msgid "'{' expected"
msgstr "«{» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:865
+#: java/parse.y:852
msgid "Missing super class name"
msgstr "Nom de super classe manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:875
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:891
+#: java/parse.y:862 java/parse.y:878
msgid "Missing interface name"
msgstr "Nom d'interface manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:977
+#: java/parse.y:964
msgid "Missing variable initializer"
msgstr "Initialiseur de variable manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:994
+#: java/parse.y:981
msgid "Invalid declaration"
msgstr "Déclaration invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:997
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1082
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2153
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2175
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2179
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2214
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2291
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2301
+#: java/parse.y:984 java/parse.y:1069 java/parse.y:2143 java/parse.y:2165
+#: java/parse.y:2169 java/parse.y:2204 java/parse.y:2281 java/parse.y:2291
msgid "']' expected"
msgstr "«]» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1001
+#: java/parse.y:988
msgid "Unbalanced ']'"
msgstr "«]» non pairé"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1037
+#: java/parse.y:1024
msgid "Invalid method declaration, method name required"
msgstr "Déclaration de méthode invalide, nom de méthode requis"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1042
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1047
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1052
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2036
+#: java/parse.y:1029 java/parse.y:1034 java/parse.y:1039 java/parse.y:2026
msgid "Identifier expected"
msgstr "Identificateur attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1057
+#: java/parse.y:1044
msgid "Invalid method declaration, return type required"
msgstr "Déclaration de méthode invalide, type retourné requis"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1080
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1530
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1537
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1546
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1548
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1576
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1684
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1981
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2034
+#: java/parse.y:1067 java/parse.y:1511 java/parse.y:1518 java/parse.y:1527
+#: java/parse.y:1529 java/parse.y:1557 java/parse.y:1665 java/parse.y:1971
+#: java/parse.y:2024
msgid "')' expected"
msgstr "«)» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1096
+#: java/parse.y:1083
msgid "Missing formal parameter term"
msgstr "Paramètre term formel manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1111
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1116
+#: java/parse.y:1098 java/parse.y:1103
msgid "Missing identifier"
msgstr "Identificateur manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1136
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1145
+#: java/parse.y:1123 java/parse.y:1132
msgid "Missing class type term"
msgstr "Type term de classe manquant"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1301
+#: java/parse.y:1288
msgid "Invalid interface type"
msgstr "Type d'interface invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1494
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1663
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1665
+#: java/parse.y:1475 java/parse.y:1644 java/parse.y:1646
msgid "':' expected"
msgstr "«:» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1516
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1521
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1526
+#: java/parse.y:1497 java/parse.y:1502 java/parse.y:1507
msgid "Invalid expression statement"
msgstr "Déclaration d'expression invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1544
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1572
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1612
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1680
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1748
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1869
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1938
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2028
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2030
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2038
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2274
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2276
+#: java/parse.y:1525 java/parse.y:1553 java/parse.y:1593 java/parse.y:1661
+#: java/parse.y:1729 java/parse.y:1850 java/parse.y:1928 java/parse.y:2018
+#: java/parse.y:2020 java/parse.y:2028 java/parse.y:2264 java/parse.y:2266
msgid "'(' expected"
msgstr "«(» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1614
+#: java/parse.y:1595
msgid "Missing term or ')'"
msgstr "Terme manquant ou «)»"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1661
+#: java/parse.y:1642
msgid "Missing or invalid constant expression"
msgstr "Expresion de constante manquante ou invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1682
+#: java/parse.y:1663
msgid "Missing term and ')' expected"
msgstr "Terme manquant et «)» attendus"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1721
+#: java/parse.y:1702
msgid "Invalid control expression"
msgstr "Expression de contrôle invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1723
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1725
+#: java/parse.y:1704 java/parse.y:1706
msgid "Invalid update expression"
msgstr "Expression de mise à jour invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1750
+#: java/parse.y:1731
msgid "Invalid init statement"
msgstr "Déclaration init invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1941
+#: java/parse.y:1931
msgid "Missing term or ')' expected"
msgstr "Terme manquant ou «)» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1983
+#: java/parse.y:1973
msgid "'class' or 'this' expected"
msgstr "« class» ou «ceci » attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1985
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:1987
+#: java/parse.y:1975 java/parse.y:1977
msgid "'class' expected"
msgstr "« class » attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2032
+#: java/parse.y:2022
msgid "')' or term expected"
msgstr "«)» or terme attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2151
+#: java/parse.y:2141
msgid "'[' expected"
msgstr "«[» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2229
+#: java/parse.y:2219
msgid "Field expected"
msgstr "Champ attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2286
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2296
+#: java/parse.y:2276 java/parse.y:2286
msgid "Missing term and ']' expected"
msgstr "Terme manquant et «]» attendu"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2400
+#: java/parse.y:2390
msgid "']' expected, invalid type expression"
msgstr "«]» attendu, type d'expression invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2403
+#: java/parse.y:2393
msgid "Invalid type expression"
msgstr "Type d'expression invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2515
+#: java/parse.y:2505
msgid "Invalid reference type"
msgstr "Type de référence invalide"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2993
+#: java/parse.y:2977
msgid "Constructor invocation must be first thing in a constructor"
msgstr "L'invaocation d'un constructeur doit être la première chose dans un constructeur"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:2995
+#: java/parse.y:2979
msgid "Only constructors can invoke constructors"
msgstr "Seuls les constructeurs peuvent invoquer des constructeurs"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3004
+#: java/parse.y:2987
#, c-format
msgid ": `%s' JDK1.1(TM) feature"
msgstr ": « %s » option JDK1.1(TM)"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3064
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:3066
+#: java/parse.y:3046 java/parse.y:3048
#, c-format
msgid ""
"%s.\n"
@@ -20604,247 +19073,228 @@ msgstr ""
"%s.\n"
"%s"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6879
+#: java/parse.y:6908
#, c-format
msgid "malformed .zip archive in CLASSPATH: %s"
msgstr "archive .zip mal composée dans CLASSPATH: %s"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:6950
+#: java/parse.y:6979
#, c-format
msgid "Can't find default package `%s'. Check the CLASSPATH environment variable and the access to the archives"
msgstr "ne peut repérer le package par défaut « %s ». Vérifier la variable d'environnement CLASSPATH et l'accès aux archives."
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12352
+#: java/parse.y:12192
#, c-format
msgid "missing static field `%s'"
msgstr "champ statique manquant « %s »"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12357
+#: java/parse.y:12197
#, c-format
msgid "not a static field `%s'"
msgstr "n'est pas un champ statique « %s »"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:12400
+#: java/parse.y:12240
#, c-format
msgid "No case for %s"
msgstr "Oas de case pour %s"
-#: /home/mitchell/gcc-3.3.2/gcc-3.3.2/gcc/java/parse.y:13365
+#: java/parse.y:13172
#, c-format
msgid "unregistered operator %s"
msgstr "opérator %s non enregistré"
-#: java/typeck.c:553
+#: java/typeck.c:530
msgid "junk at end of signature string"
msgstr "rebut à la fin de la chaîne de signature"
-#: java/verify.c:479
+#: java/verify.c:471
msgid "bad pc in exception_table"
msgstr "PC erroné dans exception_table"
-#: java/verify.c:485
-msgid "exception handler inside code that is being protected"
-msgstr ""
-
-#: java/verify.c:1395
+#: java/verify.c:1384
#, c-format
msgid "unknown opcode %d@pc=%d during verification"
msgstr "code-op inconnu %d@pc=%d durant la vérification"
-#: java/verify.c:1465 java/verify.c:1478 java/verify.c:1482
+#: java/verify.c:1454 java/verify.c:1467 java/verify.c:1471
#, c-format
msgid "verification error at PC=%d"
msgstr "erreur de vérification au PC=%d"
-#: java/lang-options.h:32
-msgid "Disable automatic array bounds checking"
-msgstr "Vérification automatique désactivée des bornes de tableaux"
-
-#: java/lang-options.h:34
-msgid "Disable assignability checks for stores into object arrays"
-msgstr "Désactiver la vérificaitions des affectations dans les tableaux d'objets"
-
-#: java/lang-options.h:36
-msgid "Assume native functions are implemented using JNI"
-msgstr "Présumer que les fonctions natives sont implantées et qu'elles utilisent JNI"
-
-#: java/lang-options.h:38
-msgid "Replace system path"
-msgstr "Remplacer le chemin système"
-
-#: java/lang-options.h:40
-msgid "Set class path"
-msgstr "Initialiser le chemin des classes"
-
-#: java/lang-options.h:42
-msgid "Set class path (deprecated: use --classpath instead)"
-msgstr "Initialiser le chemin des classes (déprécié: utiliser --classpath à la place)"
-
-#: java/lang-options.h:44
-msgid "Choose class whose main method should be used"
-msgstr "Choisir la classe dont la méthode principale devrait être utilisée"
-
-#: java/lang-options.h:46
-msgid "Choose input encoding (default comes from locale)"
-msgstr "choisir l'encodade d'entrée (par défaut provient de la locale)"
-
-#: java/lang-options.h:48
-msgid "Add directory to class path"
-msgstr "Ajouter un répertoire au chemin des classes"
-
-#: java/lang-options.h:50
-msgid "Directory where class files should be written"
-msgstr "Répertoire où les fichiers de classe devraient être écrits"
-
-#: java/lang-options.h:52
-msgid "Warn if modifiers are specified when not necessary"
-msgstr "Avertir si des modificateurs sont spécifiés sans que cela ne soit nécessaires"
-
-#: java/lang-options.h:54
-msgid "Warn if deprecated empty statements are found"
-msgstr "Avertir si des déclarations vides dépréciés sont trouvées"
-
-#: java/lang-options.h:56
-msgid "Warn if .class files are out of date"
-msgstr "Avertir si des fichier .class sont périmées"
-
-#: java/lang-options.h:58
-msgid "Always check for non gcj generated classes archives"
-msgstr "Toujours vérifier dans les archives de classes non générées gcj"
-
-#: java/lang-options.h:60
-msgid "Never optimize static class initialization code"
-msgstr "Ne jamais optimiser le code d'initialisation de classe statique"
-
-#: java/lang-options.h:62
-msgid "Use offset tables for virtual method calls"
-msgstr "Utiliser des tables de décalage pour les appels de méthodes virtuelles"
-
-#: objc/objc-act.c:651
+#: objc/objc-act.c:689
#, c-format
msgid "object does not conform to the `%s' protocol"
msgstr "objet n'est pas conforme au protocole « %s »"
-#: objc/objc-act.c:737 objc/objc-act.c:810
+#: objc/objc-act.c:775 objc/objc-act.c:848
#, c-format
msgid "class `%s' does not implement the `%s' protocol"
msgstr "classe « %s » n'implante pas le protocole « %s »"
-#: objc/objc-act.c:914
+#: objc/objc-act.c:951
#, c-format
-msgid "`%s' cannot be statically allocated"
-msgstr "« %s » ne peut être statiquement alloué"
+msgid "statically allocated instance of Objective-C class `%s'"
+msgstr "instance allouée de manière statique de la classe Objective-C « %s »"
-#: objc/objc-act.c:963
+#: objc/objc-act.c:998
#, c-format
msgid "unexpected type for `id' (%s)"
msgstr "type inattendu pour « id » (%s)"
-#: objc/objc-act.c:968
+#: objc/objc-act.c:1003
msgid "undefined type `id', please import <objc/objc.h>"
msgstr "type « id » indéfini, SVP importer <objc/objc.h>"
-#: objc/objc-act.c:1019
+#: objc/objc-act.c:1052
#, c-format
msgid "protocol `%s' has circular dependency"
msgstr "le protocole « %s » a une dépendance circulaire"
-#: objc/objc-act.c:1041 objc/objc-act.c:5301
+#: objc/objc-act.c:1074 objc/objc-act.c:5982
#, c-format
msgid "cannot find protocol declaration for `%s'"
msgstr "ne peut repérer la déclaration de protocole pour « %s »"
-#: objc/objc-act.c:1289 objc/objc-act.c:5877 objc/objc-act.c:6195
-#: objc/objc-act.c:6244 objc/objc-act.c:6280 objc-parse.y:1799
+#: objc/objc-act.c:1408 objc/objc-act.c:2645 objc/objc-act.c:6513
+#: objc/objc-act.c:6822 objc/objc-act.c:6875 objc/objc-act.c:6900
#, c-format
msgid "cannot find interface declaration for `%s'"
msgstr "ne peut repérer la déclaration d'interface pour « %s »"
-#: objc/objc-act.c:1328
+#: objc/objc-act.c:1423
+#, c-format
+msgid "interface `%s' does not have valid constant string layout"
+msgstr "interface « %s » n'a pas une organisation valide de chaînes de constantes"
+
+#: objc/objc-act.c:1439
#, c-format
msgid "cannot find reference tag for class `%s'"
msgstr "ne peut repérer la référence pour l'étiquette de classe %s."
-#: objc/objc-act.c:2050
-#, fuzzy, c-format
+#: objc/objc-act.c:2179
+#, c-format
msgid "creating selector for non existant method %s"
-msgstr "conflit potentiel sur le sélecteur pour la méthode « %s »"
+msgstr "création du sélection pour une méthode inexistente %s"
+
+#: objc/objc-act.c:2389
+#, c-format
+msgid "`%s' is not an Objective-C class name or alias"
+msgstr "« %s » n'est pas une classe Objective-C ou un alias"
+
+#: objc/objc-act.c:2500 objc/objc-act.c:2518 objc/objc-act.c:6769
+#: objc/objc-act.c:7059 objc/objc-act.c:7088
+msgid "Objective-C declarations may only appear in global scope"
+msgstr "déclarations Objective-C peut seulement apparaître dans l'étendue globale"
-#: objc/objc-act.c:2364
+#: objc/objc-act.c:2505
#, c-format
msgid "cannot find class `%s'"
msgstr "ne peut repérer la classe « %s »"
-#: objc/objc-act.c:2366
+#: objc/objc-act.c:2507
#, c-format
msgid "class `%s' already exists"
msgstr "classe « %s » existe déjà"
+#: objc/objc-act.c:2532 objc/objc-act.c:6791
+#, c-format
+msgid "`%s' redeclared as different kind of symbol"
+msgstr "« %s » redéclaré comme une autre sorte de symbole"
+
#. fatal did not work with 2 args...should fix
-#: objc/objc-act.c:2473
+#: objc/objc-act.c:2680
#, c-format
msgid "cannot find interface declaration for `%s', superclass of `%s'"
msgstr "ne peut repérer une déclaration d'interface pour « %s », super classe de « %s »"
-#: objc/objc-act.c:2480
+#: objc/objc-act.c:2687
#, c-format
msgid "circular inheritance in interface declaration for `%s'"
msgstr "héritage circulaire dans la déclaration de l'interface pour « %s »"
-#: objc/objc-act.c:3566 objc/objc-act.c:3583
+#: objc/objc-act.c:2780 objc/objc-act.c:2924 objc/objc-act.c:3024
+#: objc/objc-act.c:3200 objc/objc-act.c:3240
+msgid "Use `-fobjc-exceptions' to enable Objective-C exception syntax"
+msgstr "Utiliser « -fobjc-exceptions » pour autoriser la syntaxe d'exception d'Objective-C"
+
+#: objc/objc-act.c:2787
+msgid "`@throw;' (rethrow) used outside of a `@catch' block"
+msgstr "« @throw; » (rethrow) utilisé en dehors d'un bloc « @catch »"
+
+#: objc/objc-act.c:3027
+msgid "`@catch' parameter is not a known Objective-C class type"
+msgstr "paramètre « @catch » n'est pas connu comme un type de classe Objective-C"
+
+#: objc/objc-act.c:3036
+msgid "Exception already handled by preceding `@catch(id)'"
+msgstr "Exception est déjà traité par le précédent « @catch(id) »"
+
+#: objc/objc-act.c:3041
+#, c-format
+msgid "Exception of type `%s *' already handled by `@catch (%s *)'"
+msgstr "exception du type « %s * » est déjà traitée par « @catch (%s *) »"
+
+#: objc/objc-act.c:3206
+msgid "`@try' without `@catch' or `@finally'"
+msgstr "« @try » sans « @catch » ou « @finally »"
+
+#: objc/objc-act.c:3647
+msgid "%Jtype '%D' does not have a known size"
+msgstr "%Jtype « %D » n'a pas de taille connue"
+
+#: objc/objc-act.c:4256
+msgid "%J%s `%s'"
+msgstr "%J%s « %s »"
+
+#: objc/objc-act.c:4281 objc/objc-act.c:4300
msgid "inconsistent instance variable specification"
msgstr "spécification inconsistente avec l'instance de la vairable"
-#: objc/objc-act.c:4580
+#: objc/objc-act.c:5303
msgid "can not use an object as parameter to a method\n"
-msgstr ""
+msgstr "ne peut utiliser un objet comme paramètre à une méthode\n"
-#: objc/objc-act.c:4780
+#: objc/objc-act.c:5504
#, c-format
-msgid "multiple declarations for method `%s'"
-msgstr "multiples déclarations pour la méthode « %s »"
+msgid "multiple %s named `%c%s' found"
+msgstr "multiples %s nommés « %c%s » repérés"
-#: objc/objc-act.c:4946
+#: objc/objc-act.c:5721
#, c-format
-msgid "invalid receiver type `%s'"
-msgstr "type du receveur invalide « %s »"
+msgid "no super class declared in @interface for `%s'"
+msgstr "pas de super classe déclarée dans @nterface pour « %s »"
-#: objc/objc-act.c:4977 objc/objc-act.c:5003 objc/objc-act.c:5051
+#: objc/objc-act.c:5809
#, c-format
-msgid "`%s' does not respond to `%s'"
-msgstr "« %s » ne répond pas à « %s »"
+msgid "invalid receiver type `%s'"
+msgstr "type du receveur invalide « %s »"
-#: objc/objc-act.c:4983 objc/objc-act.c:7318
+#: objc/objc-act.c:5820
#, c-format
-msgid "no super class declared in interface for `%s'"
-msgstr "pas de super classe déclarée dans l'interface pour « %s »"
+msgid "`%s' may not respond to `%c%s'"
+msgstr "« %s » peut ne pas répondre à « %c%s »"
-#: objc/objc-act.c:5081
-msgid "cannot find class (factory) method"
-msgstr "ne peut repérer de méthode de classe (manufacturé)"
-
-#: objc/objc-act.c:5082 objc/objc-act.c:5126
+#: objc/objc-act.c:5825
#, c-format
-msgid "return type for `%s' defaults to id"
-msgstr "type retourné pour « %s » par défaut est id"
+msgid "`%c%s' not implemented by protocol(s)"
+msgstr "« %c%s » n'est pas implantée dans le protocole"
-#: objc/objc-act.c:5099
-#, c-format
-msgid "method `%s' not implemented by protocol"
-msgstr "méthode « %s » n'est pas implantée dans le protocole."
+#: objc/objc-act.c:5830
+msgid "(Messages without a matching method signature"
+msgstr "(Messages sans une méthode concordante de signature"
-#: objc/objc-act.c:5108
-msgid "return type defaults to id"
-msgstr "type retourné par défaut est id"
+#: objc/objc-act.c:5831
+msgid "will be assumed to return `id' and accept"
+msgstr "sera assumé pour retourner « id » et accepter"
-#: objc/objc-act.c:5125
-msgid "cannot find method"
-msgstr "ne peut repérer la méthode"
+#: objc/objc-act.c:5832
+msgid "`...' as arguments.)"
+msgstr " « ... » comme argument.)"
-#: objc/objc-act.c:5399
-#, fuzzy, c-format
+#: objc/objc-act.c:6079
+#, c-format
msgid "undeclared selector `%s'"
-msgstr "identificateur « %s » non déclaré"
+msgstr "sélecteur « %s » non déclaré"
#. Historically, a class method that produced objects (factory
#. method) would assign `self' to the instance that it
@@ -20855,310 +19305,1924 @@ msgstr "identificateur « %s » non déclaré"
#. 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:5443
+#: objc/objc-act.c:6121
#, c-format
msgid "instance variable `%s' accessed in class method"
msgstr "instance « %s » de la variable accédé par la méthode de classe"
-#: objc/objc-act.c:5678
+#: objc/objc-act.c:6327
#, c-format
-msgid "duplicate definition of class method `%s'"
-msgstr "duplication de définition de la méthode de la classe « %s »"
+msgid "duplicate declaration of method `%c%s'"
+msgstr "duplication de déclaration de la méthode « %c%s »"
-#: objc/objc-act.c:5684
+#: objc/objc-act.c:6368
#, c-format
-msgid "duplicate declaration of class method `%s'"
-msgstr "duplication de déclaration de la méthode de classe « %s »"
+msgid "duplicate interface declaration for category `%s(%s)'"
+msgstr "duplication de déclaration d'interface pour la catégorie « %s(%s) »"
-#: objc/objc-act.c:5720
+#: objc/objc-act.c:6398
#, c-format
-msgid "duplicate definition of instance method `%s'"
-msgstr "duplication de définition de la méthode d'instanciation « %s »"
+msgid "illegal reference type specified for instance variable `%s'"
+msgstr "type deréférence spécifié illégal pour l'instance de variable « %s »"
-#: objc/objc-act.c:5726
+#: objc/objc-act.c:6414
#, c-format
-msgid "duplicate declaration of instance method `%s'"
-msgstr "duplication de déclaration de la méthode d'instanciation « %s »"
+msgid "instance variable `%s' has unknown size"
+msgstr "instance de la variable « %s » a une taille inconnue"
-#: objc/objc-act.c:5766
+#. vtable pointers are Real Bad(tm), since Obj-C cannot initialize them
+#: objc/objc-act.c:6428
#, c-format
-msgid "duplicate interface declaration for category `%s(%s)'"
-msgstr "duplication de déclaration d'interface pour la catégorie «%s(%s)»"
+msgid "type `%s' has virtual member functions"
+msgstr "type « %s » a des membres de fonction virtuelle"
+
+#: objc/objc-act.c:6429
+#, c-format
+msgid "illegal aggregate type `%s' specified for instance variable `%s'"
+msgstr "type d'aggrégat illégal « %s » spécifié pour l'instance de la variable « %s »"
+
+#: objc/objc-act.c:6437
+#, c-format
+msgid "type `%s' has a user-defined constructor"
+msgstr "type « %s » a un constructeur défini par l'usager"
-#: objc/objc-act.c:5852
+#: objc/objc-act.c:6439
+#, c-format
+msgid "type `%s' has a user-defined destructor"
+msgstr "type « %s » a un destructeur défini par l'usager"
+
+#: objc/objc-act.c:6440
+msgid "C++ constructors and destructors will not be invoked for Objective-C fields"
+msgstr "constructeurs et destructeurs C++ ne seront pas invoqués pour les champs en Objective-C"
+
+#: objc/objc-act.c:6490
#, c-format
msgid "instance variable `%s' is declared private"
msgstr "instance de la variable « %s » est déclaré privée"
-#: objc/objc-act.c:5899
+#: objc/objc-act.c:6539
+#, c-format
+msgid "instance variable `%s' is %s; this will be a hard error in the future"
+msgstr "instance de la variable « %s » est %s; cela déclenchera une erreur dure dans le futur"
+
+#: objc/objc-act.c:6546
#, c-format
msgid "instance variable `%s' is declared %s"
msgstr "instance de la variable « %s » est déclaré %s"
-#: objc/objc-act.c:5909
+#: objc/objc-act.c:6556
msgid "static access to object of type `id'"
msgstr "accès statique à un objket de type « id »"
-#: objc/objc-act.c:5934 objc/objc-act.c:6027
+#: objc/objc-act.c:6578 objc/objc-act.c:6666
#, c-format
msgid "incomplete implementation of class `%s'"
msgstr "implantation incomplète de la classe « %s »"
-#: objc/objc-act.c:5938 objc/objc-act.c:6032
+#: objc/objc-act.c:6582 objc/objc-act.c:6671
#, c-format
msgid "incomplete implementation of category `%s'"
msgstr "implantation incomplète de la catégorie « %s »"
-#: objc/objc-act.c:5943 objc/objc-act.c:6037
+#: objc/objc-act.c:6587 objc/objc-act.c:6676
#, c-format
msgid "method definition for `%c%s' not found"
-msgstr "définition de la méthode pour «%c%s» n'a pas été repérée"
+msgstr "définition de la méthode pour « %c%s » n'a pas été repérée"
-#: objc/objc-act.c:6081
+#: objc/objc-act.c:6717
#, c-format
msgid "%s `%s' does not fully implement the `%s' protocol"
msgstr "%s « %s » n'implante pas complètement le protocole « %s »"
-#: objc/objc-act.c:6139 objc/objc-act.c:8249
+#: objc/objc-act.c:6775 objc/objc-act.c:8803
msgid "`@end' missing in implementation context"
msgstr "«@end» manquant dans l'implantation du contexte"
-#: objc/objc-act.c:6167
+#: objc/objc-act.c:6805
#, c-format
msgid "reimplementation of class `%s'"
msgstr "ré-implantation de la classe « %s »"
-#: objc/objc-act.c:6209
+#: objc/objc-act.c:6836
#, c-format
msgid "conflicting super class name `%s'"
msgstr "nom de super classe « %s » est conflictuel"
-#: objc/objc-act.c:6224
+#: objc/objc-act.c:6838
+#, c-format
+msgid "previous declaration of `%s'"
+msgstr "déclaration précédente de « %s »"
+
+#: objc/objc-act.c:6852 objc/objc-act.c:6854
#, c-format
msgid "duplicate interface declaration for class `%s'"
msgstr "double déclaration d'interface pour la classe « %s »"
-#: objc/objc-act.c:6506
+#: objc/objc-act.c:7121
#, c-format
msgid "duplicate declaration for protocol `%s'"
msgstr "double déclaration pour le protocole « %s »"
-#: objc/objc-act.c:7363
-msgid "[super ...] must appear in a method context"
-msgstr "[super ...] doit apparaître dans une méthode du contexte"
+#. Add a readable method name to the warning.
+#: objc/objc-act.c:7613
+msgid "%J%s `%c%s'"
+msgstr "%J%s « %c%s »"
-#: objc/objc-act.c:8354 objc/objc-act.c:8370
+#: objc/objc-act.c:7908
#, c-format
-msgid "potential selector conflict for method `%s'"
-msgstr "conflit potentiel sur le sélecteur pour la méthode « %s »"
+msgid "no super class declared in interface for `%s'"
+msgstr "pas de super classe déclarée dans l'interface pour « %s »"
+
+#: objc/objc-act.c:7956
+msgid "[super ...] must appear in a method context"
+msgstr "[super ...] doit apparaître dans une méthode du contexte"
-#: objc-parse.y:2655
+#: objc/objc-parse.y:2700
msgid "`@end' must appear in an implementation context"
msgstr "«@end» doit appraître dans un contaxte d'implantation"
-#: objc-parse.y:2931
+#: objc/objc-parse.y:2913
msgid "method definition not in class context"
msgstr "méthode de définition n'est pas dans un contexte de classe"
-#: objc/lang-options.h:27
-msgid "Dump decls to a .decl file"
-msgstr "Vidange des déclaration dans un fichier .decl"
+#: options.c:24
+msgid "Display this information"
+msgstr "afficher l'aide-mémoire"
-#: objc/lang-options.h:29
-msgid "Generate code for GNU runtime environment"
-msgstr "Générer du code pour l'environnement GNU d'exécution"
+#: options.c:30
+msgid "--param <param>=<value>\tSet paramter <param> to value. See below for a complete list of parameters"
+msgstr "--param <paramètre>=<valeur>\tinitialiser le <paramètre> avec la valeur. Voir ci-bas pour la liste complète des paramètres"
+
+#: options.c:39
+msgid "-A<question>=<answer>\tAssert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>"
+msgstr "-A<question>=<réponse>\tassocier la <réponse> à la <question>. Placer « - » devant la <question> désactive la <réponse> à la <question>"
+
+#: options.c:42
+msgid "Do not discard comments"
+msgstr "Ne pas éliminer les commentaires"
+
+#: options.c:45
+msgid "Do not discard comments in macro expansions"
+msgstr "Ne pas éliminer les commentaires dans les expansions macro"
+
+#: options.c:48
+msgid "-D<macro>[=<val>]\tDefine a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1"
+msgstr "-D<macro>[=<valeur>]\tDéfinir le <macro> avec la <valeur>. Si seul le <macro> est fourni, <valeur> vaut 1 par défaut"
+
+#: options.c:54
+msgid "-G<number>\tPut global and static data smaller than <number> bytes into a special section (on some targets)"
+msgstr ""
+" -G <nombre> placer les données globales et statiques plus\n"
+" petites que <nombre> d'octets dans une section\n"
+" spéciale (sur certaines cibles)"
+
+#: options.c:57
+msgid "Print the name of header files as they are used"
+msgstr "Afficher les noms des en-têtes de fichiers tel qu'ils sont utilisés"
+
+#: options.c:66
+msgid "Generate make dependencies and compile"
+msgstr "Générer les dépendances pour make et compiler"
+
+#: options.c:75
+msgid "Treat missing header files as generated files"
+msgstr "Traiter les en-têtes manquantes de fichiers comme des fichiers générés"
+
+#: options.c:81
+msgid "Like -MD but ignore system header files"
+msgstr "Identique à -MD mais ignore les en-têtes de fichiers système"
+
+#: options.c:90
+msgid "-MQ <target>\tAdd a MAKE-quoted target"
+msgstr "-MQ <cible>\tajouter MAKE-quoted cible"
+
+#: options.c:96
+msgid "-O<number>\tSet optimization level to <number>"
+msgstr "-O<nombre>\tutiliser le niveau d'optimisation <nombre>"
+
+#: options.c:99
+msgid "Optimize for space rather than speed"
+msgstr "Optimiser l'utilisation de l'espace plutôt que la vitesse"
+
+#: options.c:102
+msgid "Do not generate #line directives"
+msgstr "Ne pas générer de directives #line"
-#: objc/lang-options.h:32
-msgid "Generate code for NeXT runtime environment"
-msgstr "Générer le code pour l'environnement d'exécution du NeXT"
+#: options.c:105
+msgid "-U<macro>\tUndefine <macro>"
+msgstr "-U<macro>\tabandonner la définition <macro>"
-#: objc/lang-options.h:35
+#: options.c:108
+msgid "This switch is deprecated; use -Wextra instead"
+msgstr "Cette option est dépréciée; utiliser -Wextra à la place"
+
+#: options.c:114
+msgid "Warn about returning structures, unions or arrays"
+msgstr "Avertir à propos de structures retournés, unions ou tableaux"
+
+#: options.c:120
+msgid "Warn about casting functions to incompatible types"
+msgstr "Avertir à propos des fonctions de transtypage avec des types incompatibles"
+
+#: options.c:123
+msgid "Warn about pointer casts which increase alignment"
+msgstr "Avertir à propos des pointeurs convertis lesquels augment l'alignement"
+
+#: options.c:126
+msgid "Warn about casts which discard qualifiers"
+msgstr "Avertir à propos des transtypage qui écartent les qualificateurs"
+
+#: options.c:129
+msgid "Warn about subscripts whose type is \"char\""
+msgstr "Avertir à propos des souscripts dont le type est \"char\""
+
+#: options.c:138
+msgid "Warn about possibly confusing type conversions"
+msgstr "Avertir à propos des type de conversions confuses"
+
+#: options.c:141
+msgid "Warn when all constructors and destructors are private"
+msgstr "Avertir lorsque tous les constructeurs et destructeurs sont privés"
+
+#: options.c:144
+msgid "Warn when a declaration is found after a statement"
+msgstr "Avertir lorsqu'une déclaration est spécifiée après une déclaration"
+
+#: options.c:147
+msgid "Warn if deprecated class, method, or field is used"
+msgstr "Avertir si une classe, une méthode ou un champ déprécié est utilisé"
+
+#: options.c:150
+msgid "Warn about uses of __attribute__((deprecated)) declarations"
+msgstr "Avertir à propos de l'utilisation des déclarations « __attribute__ ((deprecated)) »"
+
+#: options.c:153
+msgid "Warn when an optimization pass is disabled"
+msgstr "Avertir lorsque la passe d'optimisation est désactivée"
+
+#: options.c:156
+msgid "Warn about compile-time integer division by zero"
+msgstr "Avertir au sujet de la division entière par zéro au moment de la compilation"
+
+#: options.c:159
+msgid "Warn about violations of Effective C++ style rules"
+msgstr "Avertir à propos des violations des règles de style de Effective C++"
+
+#: options.c:162
+msgid "Warn about stray tokens after #elif and #endif"
+msgstr "Avertir à propos des jetons perdus après #elif et #endif"
+
+#: options.c:165
+msgid "Treat all warnings as errors"
+msgstr "Traiter tous les avertissements commes des erreurs"
+
+#: options.c:168
+msgid "Make implicit function declarations an error"
+msgstr "Faire une erreur lors de déclaration de fonctions implicites"
+
+#: options.c:171
+msgid "Print extra (possibly unwanted) warnings"
+msgstr "Afficher des avertissements superflus (possiblement non désirés)"
+
+#: options.c:174
+msgid "Warn if deprecated empty statements are found"
+msgstr "Avertir si des déclarations vides dépréciés sont trouvées"
+
+#: options.c:177
+msgid "Warn if testing floating point numbers for equality"
+msgstr "Avertir à propos des tests d'égalité sur des nombres flottants"
+
+#: options.c:180
+msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
+msgstr "Avertir à propos des anomalies de format de chaînes pour printf/scanf/strftime/strfmon"
+
+#: options.c:183
+msgid "Warn if passing too many arguments to a function for its format string"
+msgstr "Avertir lorsqu'il y a trop de passage d'arguments à une fonction pour le format de ses chaînes"
+
+#: options.c:186
+msgid "Warn about format strings that are not literals"
+msgstr "Avertir à propos des chaînes de format qui n'ont pas de litérals"
+
+#: options.c:189
+msgid "Warn about possible security problems with format functions"
+msgstr "Avertir à propos des problèmes possibles de sécurité avec les formats de fonction"
+
+#: options.c:192
+msgid "Warn about strftime formats yielding 2-digit years"
+msgstr "Avertir à propos des formats strftime ne laissant que 2 chiffres pour l'année"
+
+#: options.c:201
+msgid "Enable warnings about inter-procedural problems"
+msgstr "Autoriser les avertissements à propos des problèmes inter-procédural"
+
+#: options.c:207
+msgid "Warn about implicit function declarations"
+msgstr "Avertir à propos des déclarations de fonctions implicites"
+
+#: options.c:210
+msgid "Warn when a declaration does not specify a type"
+msgstr "Avertir lorsqu'une déclaration ne spécifie pas le type"
+
+#: options.c:216
+msgid "Warn about variables which are initialized to themselves."
+msgstr "Avertir au sujet des variables qui sont initialisés par elles-même"
+
+#: options.c:219
+msgid "Warn when an inlined function cannot be inlined"
+msgstr "Avertir lorsque des fonctions en ligne ne peuvent être enligne"
+
+#: options.c:222
+msgid "Warn about invalid uses of the \"offsetof\" macro"
+msgstr "Avertir à propos de l'utilisation invalide de macro \"offsetof\""
+
+#: options.c:225
+msgid "Warn about PCH files that are found but not used"
+msgstr "Avertir à propos des fichier PCH qui sont repérés mais non utilisés"
+
+#: options.c:228
+msgid "-Wlarger-than-<number>\tWarn if an object is larger than <number> bytes"
+msgstr "-Wlarger-than-<nombre>\tavertir si un objet est plus grand que <nombre> d'octets"
+
+#: options.c:231
+msgid "Do not warn about using \"long long\" when -pedantic"
+msgstr "Ne pas avertir à propos de l'utilisation de \"long long\" avec -pedantic"
+
+#: options.c:234
+msgid "Warn about suspicious declarations of \"main\""
+msgstr "Avertir à propos des déclarations douteuses de \"main\""
+
+#: options.c:237
+msgid "Warn about possibly missing braces around initializers"
+msgstr "Avertir à propos des possibles accolades manquantes autour des initialisations"
+
+#: options.c:240
+msgid "Warn about global functions without previous declarations"
+msgstr "Avertir à propos des fonctions globales sans déclaration précédente"
+
+#: options.c:243
+msgid "Warn about functions which might be candidates for format attributes"
+msgstr "Avertir à propos des fonctions qui pourraient être candidates pour les attributs de format"
+
+#: options.c:246
+msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
+msgstr "Avertir à propos des fonctions qui seraient candidates pour __attribute__((noreturn))"
+
+#: options.c:249
+msgid "Warn about global functions without prototypes"
+msgstr "Avertir à propos des fonctions globales sans prototype"
+
+#: options.c:252
+msgid "Warn about use of multi-character character constants"
+msgstr "Avertir à propos de l'utilisation des chaînes de multi-caractères"
+
+#: options.c:255
+msgid "Warn about \"extern\" declarations not at file scope"
+msgstr "Avertir à propos des déclarations \"extern\" qui n'est pas dans l'étendue du fichier"
+
+#: options.c:258
+msgid "Warn when non-templatized friend functions are declared within a template"
+msgstr "Avertir lorsque des fonctions amis sans canevas sont déclarés à l'intérieur d'un canevas"
+
+#: options.c:261
+msgid "Warn about non-virtual destructors"
+msgstr "Avertir à propos des destructeurs non virtuels"
+
+#: options.c:267
+msgid "Warn if a C-style cast is used in a program"
+msgstr "Avertir si le style de transtypage C est utilisé dans un programme"
+
+#: options.c:270
+msgid "Warn if an old-style parameter definition is used"
+msgstr "Avertir lorsqu'un paramètre de style ancien de définition est utilisé"
+
+#: options.c:273
+msgid "Warn if .class files are out of date"
+msgstr "Avertir si des fichier .class sont périmées"
+
+#: options.c:276
+msgid "Warn about overloaded virtual function names"
+msgstr "Avertir à propos de la surcharge des noms de fonctions virtuelles"
+
+#: options.c:279
+msgid "Warn when the packed attribute has no effect on struct layout"
+msgstr "Avertir lorsque les attributs paquetés n'ont pas d'effet sur l'organisation d'un struct"
+
+#: options.c:282
+msgid "Warn when padding is required to align structure members"
+msgstr "Avertir lorsque le remplissage est requis pour aligner les membres de structure"
+
+#: options.c:285
+msgid "Warn about possibly missing parentheses"
+msgstr "Avertir à propos du manque possible de parenthèses"
+
+#: options.c:288
+msgid "Warn when converting the type of pointers to member functions"
+msgstr "Avertir lors de la conversion des types de pointeurs en membres de fonctions"
+
+#: options.c:291
+msgid "Warn about function pointer arithmetic"
+msgstr "Avertir à propos d'arithmétique portant sur un pointeur de fonction"
+
+#: options.c:294
+msgid "Warn if inherited methods are unimplemented"
+msgstr "Avertir si les méthodes héritées ne sont pas implantées"
+
+#: options.c:297
+msgid "Warn about multiple declarations of the same object"
+msgstr "Avertir à propos des déclarations multiples portant sur le même objet"
+
+#: options.c:300
+msgid "Warn if modifiers are specified when not necessary"
+msgstr "Avertir si des modificateurs sont spécifiés sans que cela ne soit nécessaires"
+
+#: options.c:303
+msgid "Warn when the compiler reorders code"
+msgstr "Avertir lorsque le compilateur réordonne le code"
+
+#: options.c:306
+msgid "Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)"
+msgstr "Avertir lorsque le type de fonction à retourner par défaut est \"int\" (C) ou à propos d'un type inconsisten à retourner (C++)"
+
+#: options.c:309
msgid "Warn if a selector has multiple methods"
msgstr "Avertir si le sélecteur a de multiples méthodes"
-#: objc/lang-options.h:39
-msgid "Do not warn if inherited methods are unimplemented"
-msgstr "Ne pas avertir si les méthodes héritées ne sont pas implantées"
+#: options.c:312
+msgid "Warn about possible violations of sequence point rules"
+msgstr "Avertir à propos des violations possibles des règles de séquence de points"
-#: objc/lang-options.h:41
-msgid "Generate C header of platform specific features"
-msgstr "Générer des en-têtes C pour les options spécifiques de la plate-forme"
+#: options.c:315
+msgid "Warn when one local variable shadows another"
+msgstr "Avertir lorsqu'une variable locale masque une autre"
-#: objc/lang-options.h:43
-msgid "Specify the name of the class for constant strings"
-msgstr "Spécifier le nom de la classe pour les constantes chaînes"
+#: options.c:318
+msgid "Warn about signed-unsigned comparisons"
+msgstr "Avertir à propos des comparaisons signés ou non signés"
-#. This is the contribution to the `lang_options' array in gcc.c for
-#. treelang.
-#: treelang/lang-options.h:26
-msgid "(debug) trace parsing process"
-msgstr ""
+#: options.c:321
+msgid "Warn when overload promotes from unsigned to signed"
+msgstr "Avertir lorsque la surcharge fait la promotion d'un non signé en signé"
-#: treelang/lang-options.h:27
-msgid "(debug) trace lexical analysis"
-msgstr ""
+#: options.c:324
+msgid "Warn about code which might break strict aliasing rules"
+msgstr "Avertir à propos du code qui pourrait briser les règles strictes d'alias"
-#: config/rs6000/darwin.h:62
-msgid " conflicting code gen style switches are used"
-msgstr ""
+#: options.c:327
+msgid "Warn about unprototyped function declarations"
+msgstr "Avertir à propos des déclarations de fonctions sans prototype"
-#: config/i386/mingw32.h:85 config/i386/cygwin.h:171
-msgid "shared and mdll are not compatible"
-msgstr "shared et mdll ne sont pas compatibles"
+#: options.c:330
+msgid "Warn about constructs with surprising meanings"
+msgstr "Avertir à propos des construits ayant des sens surprenants"
-#: java/lang-specs.h:33
-msgid "-fjni and -femit-class-files are incompatible"
-msgstr "-fjni et -femit-class-files sont incompatibles"
+#: options.c:333
+msgid "Warn about enumerated switches, with no default, missing a case"
+msgstr "Avertir à propos d'un switch énuméré, sans défaut ou un case est manquant"
-#: java/lang-specs.h:34
-msgid "-fjni and -femit-class-file are incompatible"
-msgstr "-fjni et -femit-class-file sont incompatibles"
+#: options.c:336
+msgid "Warn about enumerated switches missing a \"default:\" statement"
+msgstr "Avertir à propos d'un switch énuméré n'ayant pas de déclaration \"default:\""
-#: java/lang-specs.h:35 java/lang-specs.h:36
-msgid "-femit-class-file should used along with -fsyntax-only"
-msgstr "-femit-class-file dervait être utilisé avec -fsyntax-only"
+#: options.c:339
+msgid "Warn about all enumerated switches missing a specific case"
+msgstr "Avertir à propos de tous les switch énumérés où un case spécific manque"
-#: ada/lang-specs.h:38 java/jvspec.c:77 gcc.c:716
-msgid "-pg and -fomit-frame-pointer are incompatible"
-msgstr "-pg et -fomit-frame-pointer sont incompatibles"
+#: options.c:342
+msgid "Warn when synthesis behavior differs from Cfront"
+msgstr "Avertir lorsque le comportement de synthère diffère de Cfront"
-#: ada/lang-specs.h:41
-msgid "-c or -S required for Ada"
-msgstr "-c ou -S requis pour Ada"
+#: options.c:345
+msgid "Do not suppress warnings from system headers"
+msgstr "Ne pas supprimer les avertissements pour les en-têtes système"
-#: config/darwin.h:212
-msgid "-current_version only allowed with -dynamiclib"
-msgstr ""
+#: options.c:348
+msgid "Warn about features not present in traditional C"
+msgstr "Avertir à propos d'une option absente en C traditionnel"
-#: config/darwin.h:215
-msgid "-install_name only allowed with -dynamiclib"
-msgstr ""
+#: options.c:357
+msgid "Warn if an undefined macro is used in an #if directive"
+msgstr "Avertir si un macro indéfini est utilisé dans un directive #if"
-#: config/darwin.h:220
-#, fuzzy
-msgid "-bundle not allowed with -dynamiclib"
-msgstr "-mlong-double-64 n'est pas permis avec -m64"
+#: options.c:360
+msgid "Warn about uninitialized automatic variables"
+msgstr "Avertir à propos des variables automatiques non initialisées"
-#: config/darwin.h:221
-#, fuzzy
-msgid "-bundle_loader not allowed with -dynamiclib"
-msgstr "-mlong-double-64 n'est pas permis avec -m64"
+#: options.c:363
+msgid "Warn about unrecognized pragmas"
+msgstr "Avertir à propos des pragmas non reconnus"
-#: config/darwin.h:222
-#, fuzzy
-msgid "-client_name not allowed with -dynamiclib"
-msgstr "-mlong-double-64 n'est pas permis avec -m64"
+#: options.c:366
+msgid "Warn about code that will never be executed"
+msgstr "Avertir à propos du code qui ne sera jamais exécuté"
-#: config/darwin.h:225
-msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
-msgstr ""
+#: options.c:369
+msgid "Enable all -Wunused- warnings"
+msgstr "Autoriser tous les -Wunused- warnings"
-#: config/darwin.h:226
-msgid "-force_flat_namespace not allowed with -dynamiclib"
-msgstr ""
+#: options.c:372
+msgid "Warn when a function is unused"
+msgstr "Avertir lorsqu'une fonction est inutilisée"
-#: config/darwin.h:228
-msgid "-keep_private_externs not allowed with -dynamiclib"
-msgstr ""
+#: options.c:375
+msgid "Warn when a label is unused"
+msgstr "Avertir lorsqu'une étiquette est inutilisée"
-#: config/darwin.h:229
-#, fuzzy
-msgid "-private_bundle not allowed with -dynamiclib"
-msgstr "-mlong-double-64 n'est pas permis avec -m64"
+#: options.c:378
+msgid "Warn about macros defined in the main file that are not used"
+msgstr "Avertir à propos de macros définis dans le fichier principal qui ne sont pas utilisés"
-#: config/sparc/freebsd.h:34 config/ia64/freebsd.h:23
-#: config/alpha/freebsd.h:44 config/rs6000/sysv4.h:1107
-#: config/i386/freebsd-aout.h:213
-msgid "`-p' not supported; use `-pg' and gprof(1)"
-msgstr "«-p» n'est pas supporté; utiliser «-pg» et gprof(1)"
+#: options.c:381
+msgid "Warn when a function parameter is unused"
+msgstr "Avertir lorsqu'un paramètre de fonction est inutilisé"
-#: config/sparc/linux64.h:197 config/sparc/linux64.h:208
-#: config/sparc/netbsd-elf.h:163 config/sparc/netbsd-elf.h:182
-#: config/sparc/sol2-bi.h:168 config/sparc/sol2-bi.h:178
-msgid "may not use both -m32 and -m64"
-msgstr "ne peut utiliser ensemble -m32 et -m64"
+#: options.c:384
+msgid "Warn when an expression value is unused"
+msgstr "Avertir lorsque la valeur d'une expression n'est pas utilisée"
+
+#: options.c:387
+msgid "Warn when a variable is unused"
+msgstr "Avertir lorsque 'une variable est inutilisée"
+
+#: options.c:390
+msgid "Give strings the type \"array of char\""
+msgstr "Fournir des chaînes de type \"array of char\""
+
+#: options.c:393
+msgid "A synonym for -std=c89. In a future version of GCC it will become synonymous with -std=c99 instead"
+msgstr "Un synonyme pour -std=c89. Dans une version future de GCC cela deviendra synonyme de -std=c99 à la place"
+
+#: options.c:396
+msgid "-aux-info <file>\tEmit declaration information into <file>"
+msgstr "-aux-info <fichier>\tproduire une déclaration d'information dans le <fichier>"
+
+#: options.c:408
+msgid "-d<letters>\tEnable dumps from specific passes of the compiler"
+msgstr "-d<lettres>\tautoriser les vidanges pour des passes spécifiques du compilateur"
+
+#: options.c:411
+msgid "-dumpbase <file>\tSet the file basename to be used for dumps"
+msgstr "-dumpbase <fichier>\tfixer le nom de base du fichier à utiliser pour les vidanges"
+
+#: options.c:414
+msgid "--CLASSPATH\tDeprecated; use --classpath instead"
+msgstr "--CLASSPATH\tdéprécié; utiliser --classpath à la place"
+
+#: options.c:429
+msgid "Enforce class member access control semantics"
+msgstr "Forcer à la sémantique du contrôle d'accès à un membre de classe"
+
+#: options.c:432
+msgid "Align the start of functions"
+msgstr "Aligner le début des fonctions"
+
+#: options.c:438
+msgid "Align labels which are only reached by jumping"
+msgstr "Aligner les étiquettes qui sont seulement atteintes par sauts"
+
+#: options.c:444
+msgid "Align all labels"
+msgstr "Aligner toutes les étiquettes"
+
+#: options.c:450
+msgid "Align the start of loops"
+msgstr "Aligner le début des boucles"
+
+#: options.c:459
+msgid "Change when template instances are emitted"
+msgstr "Changer lorsque les instances du canevas sont produites"
+
+#: options.c:462
+msgid "Specify that arguments may alias each other and globals"
+msgstr "Spécifier que les arguments peuvent avoir des alias l'un vers l'autre et globaux"
+
+#: options.c:465
+msgid "Assume arguments may alias globals but not each other"
+msgstr "Présumer que les arguments peuvent avoir des alias globaux mais pas l'un vers l'autre"
+
+#: options.c:468
+msgid "Assume arguments alias neither each other nor globals"
+msgstr "Assumer que les alias d'arguments n'en ont pas l'un vers l'autre ou globaux"
+
+#: options.c:471
+msgid "Recognize the \"asm\" keyword"
+msgstr "Reconnaître le mot clé « asm »"
+
+#: options.c:483
+msgid "Generate unwind tables that are exact at each instruction boundary"
+msgstr "Générer des tables étendues qui soient exactes pour chaque borne d'instruction"
+
+#: options.c:486
+msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements"
+msgstr "Traiter les variables locales et les blocs COMMON comme s'ils étaient nommés dans une déclaration SAVE"
+
+#: options.c:489
+msgid "Backslashes in character and hollerith constants are special (not C-style)"
+msgstr "Barres obliques inverses dans les constantes de caractères ou d'hollerith ne sont pas particulières (pas de style C)"
+
+#: options.c:492
+msgid "Delete libU77 intrinsics with bad interfaces"
+msgstr "Détruire les intrinsèques libU77 ayant des interfaces erronées"
+
+#: options.c:495
+msgid "Disable libU77 intrinsics with bad interfaces"
+msgstr "Désactiver les intrinsèques libU77 ayant des interfaces erronées"
+
+#: options.c:498
+msgid "Enable libU77 intrinsics with bad interfaces"
+msgstr "Autoriser les intrinsèques libU77 ayant des interfaces erronées"
+
+#: options.c:501
+msgid "Hide libU77 intrinsics with bad interfaces"
+msgstr "Cacher les intrinsèques libU77 ayant des interfaces erronées"
+
+#: options.c:504
+msgid "--bootclasspath=<path>\tReplace system path"
+msgstr "--bootclasspath=<chemin>\tremplacer le <chemin> système"
+
+#: options.c:507
+msgid "Generate code to check bounds before indexing arrays"
+msgstr "Générer du code pour vérifier les bornes avant d'indexer les tableaux"
+
+#: options.c:510
+msgid "Replace add, compare, branch with branch on count register"
+msgstr "Remplacer add,compare,branch avec des branchements utilisant un compteur registre"
+
+#: options.c:513
+msgid "Use profiling information for branch probabilities"
+msgstr "Utiliser les informations de profilage pour les probabilités de branchements"
+
+#: options.c:516
+msgid "Perform branch target load optimization before prologue / epilogue threading"
+msgstr "Effectuer l'optimisation du chargement du branchement cible avant le thread prologue / epilogue"
+
+#: options.c:519
+msgid "Perform branch target load optimization after prologue / epilogue threading"
+msgstr "Effectuer l'optimisation du chargement du branchement cible après le thread prologue / epilogue"
+
+#: options.c:522
+msgid "Recognize built-in functions"
+msgstr "Reconnaître aucun construit dans les fonctions"
+
+#: options.c:528
+msgid "-fcall-saved-<register>\tMark <register> as being preserved across functions"
+msgstr "-fcall-saved-<registre>\tmarquer le <registre> comme étant préservé à travers les fonctions"
+
+#: options.c:531
+msgid "-fcall-used-<register>\tMark <register> as being corrupted by function calls"
+msgstr "-fcall-used-<registre>\tmarquer le <registre> comme étant corrompu par les appels de fonctions"
+
+#: options.c:534
+msgid "Save registers around function calls"
+msgstr "Sauvegarder les registres autour des appels de fonction"
-#: config/arm/arm.h:178
+#: options.c:537
+msgid "Program written in strict mixed-case"
+msgstr "Programme écrit dans une stricte casse mélangée"
+
+#: options.c:540
+msgid "Compile as if program written in lowercase"
+msgstr "Compiler comme si le programme était écrit en minuscules"
+
+#: options.c:543
+msgid "Preserve case used in program"
+msgstr "Préserver la casse utilisée dans un programme"
+
+#: options.c:546
+msgid "Program written in lowercase"
+msgstr "Programmes écrit en minuscules"
+
+#: options.c:549
+msgid "Program written in uppercase"
+msgstr "Programme écrit en majuscules"
+
+#: options.c:552
+msgid "Compile as if program written in uppercase"
+msgstr "Compiler comme si le programme était écrit en majuscules"
+
+#: options.c:555
+msgid "Check the return value of new"
+msgstr "Vérifier la valeur retournée de new"
+
+#: options.c:561
+msgid "--classpath=<path>\tSet class path"
+msgstr "--classpath=<chemin>\tfixer le chemin des classes"
+
+#: options.c:564
+msgid "Do not put uninitialized globals in the common section"
+msgstr "Ne pas placer de globaux non initialisés dans la section commune"
+
+#: options.c:570
+msgid "Allow the arguments of the '?' operator to have different types"
+msgstr "Permettre les arguments de l'opérateur « ? » d'avoir différents types"
+
+#: options.c:573
+msgid "Reduce the size of object files"
+msgstr "Réduire la taille des fichiers objets"
+
+#: options.c:576
+msgid "Make string literals \"const char[]\" not \"char[]\""
+msgstr "Rendre les chaînes de mots \"const char[]\" et non pas \"char[]\""
+
+#: options.c:579
+msgid "-fconst-string-class=<name>\tUse class <name> for constant strings"
+msgstr "-fconst-string-class=<nom>\tutiliser la classe <nom> pour la chaînes de constantes"
+
+#: options.c:582
+msgid "Perform a register copy-propagation optimization pass"
+msgstr "Effectuer la passe d'optimisation de la propagation-de-copie par registre"
+
+#: options.c:585
+msgid "Perform cross-jumping optimization"
+msgstr "Exécuter des optimisations de sauts croisés"
+
+#: options.c:588
+msgid "When running CSE, follow jumps to their targets"
+msgstr "Lorsque CSE s'exécute, suivre les sauts vers leurs cibles"
+
+#: options.c:591
+msgid "When running CSE, follow conditional jumps"
+msgstr "Lorsque CSE s'exécute, suivre les sauts considitionnels vers leurs cibles"
+
+#: options.c:594
+msgid "Place data items into their own section"
+msgstr "placer les items des données dans leur propre section"
+
+#: options.c:597
+msgid "Emit special debugging information for COMMON and EQUIVALENCE (disabled)"
+msgstr "Produire des information spéciales de mise au point pour COMMON et EQUIVALENCE (désactivé)"
+
+#: options.c:600
+msgid "Inline member functions by default"
+msgstr "Rendre enligne un membre de fonction par défaut"
+
+#: options.c:603
+msgid "Defer popping functions args from stack until later"
+msgstr "Déférer le dépilage des arguments de fonction de la pile plus tard"
+
+#: options.c:606
+msgid "Attempt to fill delay slots of branch instructions"
+msgstr "Tented de remplir de délais les fentes des instructions de branchement"
+
+#: options.c:609
+msgid "Delete useless null pointer checks"
+msgstr "Détruire les vérifications de pointeurs nul inutiles"
+
+#: options.c:612
+msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
+msgstr "-fdiagnostics-show-location=[once|every-line]\tindiquer combien de fois les informations de localisation des sources doivent être produites au début d'un diagnostique lorsque les lignes doivent s'enrouler"
+
+#: options.c:615
+msgid "Allow '$' in symbol names"
+msgstr "Permettre '$' dans les noms de symboles"
+
+#: options.c:618
+msgid "Permit '$' as an identifier character"
+msgstr "Autoriser '$' comme identificateur de caractère"
+
+#: options.c:624
+msgid "Suppress output of instruction numbers and line number notes in debugging dumps"
+msgstr "Supprimer dans la sortie les numéros d'instructions et de notes de lignes dans les vidanges de mises au point"
+
+#: options.c:630
+msgid "Perform DWARF2 duplicate elimination"
+msgstr "Exécuter une élimination DAWRF2 des doublons"
+
+#: options.c:633 options.c:636
+msgid "Perform unused type elimination in debug info"
+msgstr "Effectuer l'élimination des types non utilisés dans l'information de mise au point"
+
+#: options.c:645
+msgid "Have front end emulate COMPLEX arithmetic to avoid bugs"
+msgstr "Avoir un frontal d'émulation pour l'arithmétique COMPLEXE pour éviter les bugs"
+
+#: options.c:648
+msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)"
+msgstr "--encoding=<encodage>\tchoisir l'encodade d'entrée (par défaut provient de la locale)"
+
+#: options.c:651
+msgid "Generate code to check exception specifications"
+msgstr "Générer le code pour vérifier les exceptions de spécifications"
+
+#: options.c:657
+msgid "Enable exception handling"
+msgstr "Autoriser le traitement des exceptions"
+
+#: options.c:660
+msgid "-fexec-charset=<cset>\tConvert all strings and character constants to character set <cset>"
+msgstr "-fexec-charset=<jeucar>\tconvertir toutes les chaînes et les constantes de caractères en jeu de caractères <jeucar>"
+
+#: options.c:663
+msgid "Perform a number of minor, expensive optimizations"
+msgstr "Effectuer un nombre mineur d'optimisations coûteuses"
+
+#: options.c:672
+msgid "f2c-compatible code can be generated"
+msgstr "code f2c compatible peut être généré"
+
+#: options.c:675
+msgid "Delete non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Détruire les supports f2c intrinsèques non Fortran 77"
+
+#: options.c:678
+msgid "Disable non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Désactiver les supports f2c intrinsèques non Fortran 77"
+
+#: options.c:681
+msgid "Enable non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Autoriser les supports f2c intrinsèques non Fortran 77"
+
+#: options.c:684
+msgid "Hide non-FORTRAN-77 intrinsics f2c supports"
+msgstr "Cacher les supports f2c intrinsèques non Fortran 77"
+
+#: options.c:687
+msgid "Unsupported; generate libf2c-calling code"
+msgstr "Non supporté; générer le code d'appel libf2c"
+
+#: options.c:690
+msgid "Program is written in typical FORTRAN 66 dialect"
+msgstr "Programme est écrit dans un dialecte typique FORTRAN 66"
+
+#: options.c:693
+msgid "Program is written in typical Unix-f77 dialect"
+msgstr "Programme est écrit dans un dialecte typique Unix f77"
+
+#: options.c:696
+msgid "Program is written in Fortran-90-ish dialect"
+msgstr "Programme est écrit dans un dialecte Fortran 90"
+
+#: options.c:699
+msgid "Delete non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Détruire les supports F90 intrinsèques non Fortran 77"
+
+#: options.c:702
+msgid "Disable non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Désactiver les supports F90 intrinsèques non Fortran 77"
+
+#: options.c:705
+msgid "Enable non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Autoriser les supports F90 intrinsèques non Fortran 77"
+
+#: options.c:708
+msgid "Hide non-FORTRAN-77 intrinsics F90 supports"
+msgstr "Cacher les supports F90 intrinsèques non Fortran 77"
+
+#: options.c:720
+msgid "Assume no NaNs or infinities are generated"
+msgstr "Assumer qu'aucun NaNs ou infinités ne soit généré"
+
+#: options.c:723
+msgid "-ffixed-<register>\tMark <register> as being unavailable to the compiler"
+msgstr "-ffixed-<registre>\tmarquer le <registre> comme n'étant plus disponible pour le compilateur"
+
+#: options.c:729
+msgid "ffixed-line-length-<number>\tSet the maximum line length to <number>"
+msgstr "ffixed-line-limit-<nombre>\tfixer la longueur maximale de la ligne à <nombre>"
+
+#: options.c:732
+msgid "Unsupported; affects code generation of arrays"
+msgstr "Non supporté; affecte la génération de code des tableaux"
+
+#: options.c:735
+msgid "Do not store floats in registers"
+msgstr "Ne pas stocker les flottants dans les registres"
+
+#: options.c:738
+msgid "Scope of for-init-statement variables is local to the loop"
+msgstr "Étendue des variables for-init-statement est local à la boucle"
+
+#: options.c:741
+msgid "Copy memory address constants into registers before use"
+msgstr "Copier les constantes d'adresses mémoire dans les registres avant de les utiliser"
+
+#: options.c:744
+msgid "Always check for non gcj generated classes archives"
+msgstr "Toujours vérifier dans les archives de classes non générées gcj"
+
+#: options.c:747
+msgid "Copy memory operands into registers before use"
+msgstr "Copier les opérandes mémoire dans les registres avant de les utiliser"
+
+#: options.c:750
+msgid "Generate code to check subscript and substring bounds"
+msgstr "Générer du code pour vérifier les bornes des souscripts et des sous-chaînes"
+
+#: options.c:753
+msgid "Program is written in Fortran-90-ish free form"
+msgstr "Programme est écrit dans un style libre Fortran 90"
+
+#: options.c:756
+msgid "Do not assume that standard C libraries and \"main\" exist"
+msgstr "Ne pas assumer que les bibliothèques standards C et \"main\" existent"
+
+#: options.c:759
+msgid "Allow function addresses to be held in registers"
+msgstr "Autoriser le maintien des adresses de fonction dans les registres"
+
+#: options.c:762
+msgid "Place each function into its own section"
+msgstr "placer chaque fonction dans sa propre section"
+
+#: options.c:765
+msgid "Perform global common subexpression elimination"
+msgstr "Exécuter l'élimination de sous-expression commune globale"
+
+#: options.c:768
+msgid "Perform redundant load after store elimination in global common subexpression elimination"
+msgstr "Exécuter un stockage redondant après l'élimination de sous-expression commune globale"
+
+#: options.c:771
+msgid "Perform enhanced load motion during global common subexpression elimination"
+msgstr "Exécuter un chargement amélioré lors de l'élimination de sous-expression commune globale"
+
+#: options.c:774
+msgid "Perform store motion after global common subexpression elimination"
+msgstr "Exécuter un stockage après l'élimination de sous-expression commune globale"
+
+#: options.c:777
+msgid "Enable fatal diagnostics about inter-procedural problems"
+msgstr "Autoriser les diagnostiques fatals à propos des problèmes entre procédures"
+
+#: options.c:780
+msgid "Delete non-FORTRAN-77 intrinsics g77 supports"
+msgstr "Détruire les supports g77 intrinsèques non Fortran 77"
+
+#: options.c:783
+msgid "Disable non-FORTRAN 77 intrinsics F90 supports"
+msgstr "Désactiver les supports g77 intrinsèques non Fortran 77"
+
+#: options.c:786
+msgid "Enable non-FORTRAN 77 intrinsics F90 supports"
+msgstr "Autoriser les supports F90 intrinsèques non Fortran 77"
+
+#: options.c:789
+msgid "Hide non-FORTRAN 77 intrinsics F90 supports"
+msgstr "Cacher les supports g77 intrinsèques non Fortran 77"
+
+#: options.c:792
+msgid "Recognize GNU-defined keywords"
+msgstr "Reconnaître les mots clés définis GNU"
+
+#: options.c:795
+msgid "Generate code for GNU runtime environment"
+msgstr "Générer du code pour l'environnement GNU d'exécution"
+
+#: options.c:798
+msgid "Enable guessing of branch probabilities"
+msgstr "Autoriser l'estimation des probabilités de branchement"
+
+#: options.c:813
+msgid "Assume normal C execution environment"
+msgstr "Présumer que l'environnement d'exécution C est normal"
+
+#: options.c:816
+msgid "Enable support for huge objects"
+msgstr "Autoriser le support des grands objets"
+
+#: options.c:819
+msgid "Process #ident directives"
+msgstr "Traiter les directive #ident"
+
+#: options.c:822
+msgid "Perform conversion of conditional jumps to branchless equivalents"
+msgstr "Exécuter la conversion des sauts conditionels à des équivalents sans branchements"
+
+#: options.c:825
+msgid "Perform conversion of conditional jumps to conditional execution"
+msgstr "Exécuter la conversion des sauts conditionnels à une exécution conditionnel"
+
+#: options.c:828
+msgid "Export functions even if they can be inlined"
+msgstr "Exporter les fonctions même si elles peuvent être enligne"
+
+#: options.c:831
+msgid "Emit implicit instantiations of inline templates"
+msgstr "Produire les instanciations explicites de canevas enligne"
+
+#: options.c:834
+msgid "Emit implicit instantiations of templates"
+msgstr "Produire les instanciations explicites de canevas"
+
+#: options.c:837
+msgid "Use offset tables for virtual method calls"
+msgstr "Utiliser des tables de décalage pour les appels de méthodes virtuelles"
+
+#: options.c:840
+msgid "Do not generate .size directives"
+msgstr "Ne pas générer de directives .size"
+
+#: options.c:843
+msgid "Initialize local vars and arrays to zero"
+msgstr "Initialiser les vars locales et les tableaux à zéro"
+
+#: options.c:846
+msgid "Pay attention to the \"inline\" keyword"
+msgstr "Porter attention au mot clé \"inline\""
+
+#: options.c:855
+msgid "-finline-limit=<number>\tLimit the size of inlined functions to <number>"
+msgstr "-finline-limit=<nombre>\tlimiter la taille des fonction enligne à <nombre>"
+
+#: options.c:858
+msgid "-finput-charset=<cset> Specify the default character set for source files."
+msgstr "-finput-charset=<jeucar> spécifier le jeu de caractères par défaut pour les fichiers source"
+
+#: options.c:861
+msgid "Instrument function entry and exit with profiling calls"
+msgstr "Traiter les entrées et les sorties des fonctions avec appels de profilage"
+
+#: options.c:864
+msgid "Intrinsics letters in arbitrary cases"
+msgstr "Lettres d'instrinsèques en casse arbitraire"
+
+#: options.c:867
+msgid "Intrinsics spelled as e.g. SqRt"
+msgstr "Intrinsèques épellées tel que SqRt"
+
+#: options.c:870
+msgid "Intrinsics in lowercase"
+msgstr "Intrinsèques en minuscules"
+
+#: options.c:873
+msgid "Intrinsics in uppercase"
+msgstr "Intrinsèques en majuscules"
+
+#: options.c:876
+msgid "Assume native functions are implemented using JNI"
+msgstr "Présumer que les fonctions natives sont implantées et qu'elles utilisent JNI"
+
+#: options.c:879
+msgid "Generate code for functions even if they are fully inlined"
+msgstr "Générer le code pour les fonctions même si elles sont complètement enligne"
+
+#: options.c:882
+msgid "Emit static const variables even if they are not used"
+msgstr "Produire des variables constantes statiques même si elles ne sont pas utilisées"
+
+#: options.c:888
+msgid "Give external symbols a leading underscore"
+msgstr "Afficher les symboles externes préfixés d'un caractère de soulignement"
+
+#: options.c:891
+msgid "Perform loop optimizations"
+msgstr "Exécuter l'optimisation des boucles"
+
+#: options.c:894
+msgid "Language keyword letters in arbitrary cases"
+msgstr "Lettres des mots clés du langage dans des casses arbitraires"
+
+#: options.c:897
+msgid "Language keywords spelled as e.g. IOStat"
+msgstr "Mots clés du langage épellés tel que IOStat"
+
+#: options.c:900
+msgid "Language keywords in lowercase"
+msgstr "Mots clés du langage en minuscules"
+
+#: options.c:903
+msgid "Language keywords in uppercase"
+msgstr "Mots clés du langage en majuscules"
+
+#: options.c:906
+msgid "Set errno after built-in math functions"
+msgstr "Initialiser errno après les fonctions internes mathématiques"
+
+#: options.c:909
+msgid "Report on permanent memory allocation"
+msgstr "Rapporter l'allocation de mémoire permanente"
+
+#: options.c:912
+msgid "Attempt to merge identical constants and constant variables"
+msgstr "Tentative de fusion de constantes identique et des variables constantes"
+
+#: options.c:915
+msgid "Attempt to merge identical constants across compilation units"
+msgstr "Tentative de fusion de constantes identiques à travers des unités de compilation"
+
+#: options.c:918
+msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line. 0 suppresses line-wrapping"
+msgstr "-fmessage-length=<nombre>\tlimiter la longueur des diagnotiques à <nombre> de caractères par ligne. 0 supprime l'enroulement de ligne"
+
+#: options.c:921
+msgid "Delete MIL-STD 1753 intrinsics"
+msgstr "Détruire les intrinsèques MIL-STD 1753"
+
+#: options.c:924
+msgid "Disable MIL-STD 1753 intrinsics"
+msgstr "Désactiver les intrinsèques MIL-STD 1753"
+
+#: options.c:927
+msgid "Enable MIL-STD 1753 intrinsics"
+msgstr "Autoriser intrinsèques MIL-STD 1753"
+
+#: options.c:930
+msgid "Hide MIL-STD 1753 intrinsics"
+msgstr "Cacher les intrinsèques MIL-STD 1753"
+
+#: options.c:933
+msgid "Force all loop invariant computations out of loops"
+msgstr "Forcer pour toutes les boucles des calculs invariants en dehors des boucles"
+
+#: options.c:936
+msgid "Don't warn about uses of Microsoft extensions"
+msgstr "Ne donner d'avertissement au sujet de l'utilisation des extensions de Microsoft"
+
+#: options.c:945
+msgid "Use graph-coloring register allocation"
+msgstr "Utiliser l'allocation des registres par coloriage de graphe"
+
+#: options.c:948
+msgid "Generate code for NeXT (Apple Mac OS X) runtime environment"
+msgstr "Générer le code pour l'environnement d'exécution du NeXT (Apple Mac OS X)"
+
+#: options.c:951
+msgid "Assume that receivers of Objective-C messages may be nil"
+msgstr "Assumer que les receveur de messages Objective-C peut être NIL"
+
+#: options.c:954
+msgid "Support synchronous non-call exceptions"
+msgstr "Supporter les exceptions synchrones des non appels"
+
+#: options.c:963
+msgid "Enable Objective-C exception and synchronization syntax"
+msgstr "Autoriser l'exception Objective-C et la synchronisation de syntaxe"
+
+#: options.c:966 options.c:1290
+msgid "Perform loop unrolling for all loops"
+msgstr "Exécuter la boucle par désenroulement de toutes les boucles"
+
+#: options.c:969 options.c:1293
+msgid "Perform loop unrolling when iteration count is known"
+msgstr "Exécuter un dé-roulement des boucles lorsque le compteur d'itération est connu"
+
+#: options.c:972
+msgid "When possible do not generate stack frames"
+msgstr "Lorsque c'est possible ne pas générer des trames de pile"
+
+#: options.c:975
+msgid "Take at least one trip through each iterative DO loop"
+msgstr "Exécuter une dernière fois la visite à traves chaque boucle itérative DO"
+
+#: options.c:978
+msgid "Recognize C++ kewords like \"compl\" and \"xor\""
+msgstr "Reconnaître les mots clés C++ comme \"compl\" et \"xor\""
+
+#: options.c:981
+msgid "Do the full register move optimization pass"
+msgstr "Effectuer la passe d'optimisation complète des déplacements par les registres"
+
+#: options.c:984
+msgid "Optimize sibling and tail recursive calls"
+msgstr "Optimiser sur mesure les appels enfants et récursif"
+
+#: options.c:987
+msgid "Enable optimization of static class initialization code"
+msgstr "Autorisser l'optimisation du code d'initialisation de classe statique"
+
+#: options.c:990
+msgid "Enable optional diagnostics"
+msgstr "Autoriser les diagnostiques optionnels"
+
+#: options.c:996
+msgid "Pack structure members together without holes"
+msgstr "Empaqueter les membres des structures ensembles sans trous"
+
+#: options.c:999
+msgid "Return small aggregates in memory, not registers"
+msgstr "Retourner les petits aggrégats en mémoire, pas dans les registres"
+
+#: options.c:1005
+msgid "Warn about use of (only a few for now) Fortran extensions"
+msgstr "Avertir à propos de l'utilisation (très peu pour l'instant) des extensions Fortran"
+
+#: options.c:1008
+msgid "Perform loop peeling"
+msgstr "Exécuter des réductions de boucles"
+
+#: options.c:1011
+msgid "Enable machine specific peephole optimizations"
+msgstr "Autoriser les optimisations des trous spécifiques à une machine"
+
+#: options.c:1014
+msgid "Enable an RTL peephole pass before sched2"
+msgstr "Autoriser l'exécution de la passe RTL avant sched2"
+
+#: options.c:1017
+msgid "Downgrade conformance errors to warnings"
+msgstr "Dégrader les erreurs de conformité en des avertissements"
+
+#: options.c:1020
+msgid "Generate position-independent code if possible"
+msgstr "Générer du code indépendant de la position si possible"
+
+#: options.c:1023
+msgid "Generate position-independent code for executables if possible"
+msgstr "Générer du code indépendant de la position pour les exécutables si possible"
+
+#: options.c:1026
+msgid "Generate prefetch instructions, if available, for arrays in loops"
+msgstr "Générer des instructions prérecherchées, si disponible, pour les tableaux dans les boucles"
+
+#: options.c:1032
+msgid "Enable basic program profiling code"
+msgstr "Autoriser le code de profilage de base du programme"
+
+#: options.c:1035
+msgid "Insert arc-based program profiling code"
+msgstr "Insérer le code de profilage du programme de arc-based"
+
+#: options.c:1038
+msgid "Enable common options for generating profile info for profile feedback directed optimizations"
+msgstr "Autoriser les options communes pour la génération d'information de profile pour le feedback d'optimisation direct de profile"
+
+#: options.c:1041
+msgid "Enable common options for performing profile feedback directed optimizations"
+msgstr "Autoriser les options communes pour effectuer le feedback d'optimisation direct de profile"
+
+#: options.c:1044
+msgid "Insert code to profile values of expressions"
+msgstr "Insérer le code pour profile les expressions de valeurs"
+
+#: options.c:1050
+msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
+msgstr "-frandom-seed=<chaîne>\tfaire une compilation reproduisible en utilisant <chaîne>"
+
+#: options.c:1053
+msgid "Strength reduce all loop general induction variables"
+msgstr "Renforcer la réduction de toutes les boucles par induction des variables"
+
+#: options.c:1056
+msgid "Return small aggregates in registers"
+msgstr "Retourner les petits aggrégats dans les registres"
+
+#: options.c:1059
+msgid "Enables a register move optimization"
+msgstr "Autoriser l'optimisation des déplacements par registre"
+
+#: options.c:1062
+msgid "Perform a register renaming optimization pass"
+msgstr "Effectuer une changement de nom de registres après une passe d'optimisation"
+
+#: options.c:1065
+msgid "Reorder basic blocks to improve code placement"
+msgstr "Ré-ordonner les blocs de base pour améliorer l'emplacement de code"
+
+#: options.c:1068
+msgid "Reorder functions to improve code placement"
+msgstr "Ré-ordonner les fonctions pour améliorer l'emplacement de code"
+
+#: options.c:1071
+msgid "Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime"
+msgstr "Utiliser le mode Fix-and-=Continue pour indique que des fichiers objets peuvent interchangés lors de l'éexécution"
+
+#: options.c:1074
+msgid "Enable automatic template instantiation"
+msgstr "Autoriser l'instanciation automatique de canevas"
+
+#: options.c:1077
+msgid "Add a common subexpression elimination pass after loop optimizations"
+msgstr "Ajouter une passe d'élimination d'une sous-expression commune après les optimisations de boucle"
+
+#: options.c:1080
+msgid "Run the loop optimizer twice"
+msgstr "Exécuter l'optimiseur de boucle deux fois"
+
+#: options.c:1083
+msgid "Disable optimizations that assume default FP rounding behavior"
+msgstr "Interdire les optimisation qui assument un comportement d'arrondissement FP par défaut"
+
+#: options.c:1086
+msgid "Generate run time type descriptor information"
+msgstr "Générer l'information pour un type de descripteur lors de l'exécution"
+
+#: options.c:1089
+msgid "Enable scheduling across basic blocks"
+msgstr "Autoriser l'ordonnancement à travers les blocs de base"
+
+#: options.c:1092
+msgid "Allow speculative motion of non-loads"
+msgstr "Autoriser le mouvement spéculatif de non chargements"
+
+#: options.c:1095
+msgid "Allow speculative motion of some loads"
+msgstr "Autoriser le mouvement spéculatif de quelques chargements"
+
+#: options.c:1098
+msgid "Allow speculative motion of more loads"
+msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
+
+#: options.c:1101
+msgid "Allow premature scheduling of queued insns"
+msgstr "Autoriser l'ordonnancement prématuré de queues insns"
+
+#: options.c:1104
+msgid "Set dependence distance checking in premature scheduling of queued insns"
+msgstr "Fixer la distance de vérification de dépendance dans l'ordonnancement prématuré d'insns en queue"
+
+#: options.c:1107
+msgid "-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns"
+msgstr "-fsched-stalled-insns-dep=<nombre> fixer la distance de vérification de dépendance dans l'ordonnancement d'insnsn en queue"
+
+#: options.c:1110
+msgid "-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled"
+msgstr "-fsched-stalled-insns=<nombre> fixer le nombre d'insns en queu qui peuvent être prématurément ordonnancés"
+
+#: options.c:1113
+msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler"
+msgstr "-fsched-verbose=<numéro>\tnitialiser le niveau de verbosité de l'ordonnanceur"
+
+#: options.c:1116
+msgid "If scheduling post reload, do superblock scheduling"
+msgstr "Si l'ordonnancement fait une post recharge, faire un ordonnancement de super bloc"
+
+#: options.c:1119
+msgid "If scheduling post reload, do trace scheduling"
+msgstr "Si l'ordonnancement fait une post recharge, laisse une trace de l'ordonnancement"
+
+#: options.c:1122
+msgid "Reschedule instructions before register allocation"
+msgstr "Réordonnancer les instructions avant l'allocation de registres"
+
+#: options.c:1125
+msgid "Reschedule instructions after register allocation"
+msgstr "Réordonnancer les instructions après l'allocation de registres"
+
+#: options.c:1128
+msgid "Allow appending a second underscore to externals"
+msgstr "Permettre l'ajout d'un second caractère de soulignement aux externes"
+
+#: options.c:1131
+msgid "Mark data as shared rather than private"
+msgstr "Marquer les données comme partagées au lieu de privées"
+
+#: options.c:1134
+msgid "Use the same size for double as for float"
+msgstr "Utiliser la même taille pour un double que pour un flottant"
+
+#: options.c:1137
+msgid "Use the narrowest integer type possible for enumeration types"
+msgstr "Utiliser le type d'entier le moins large possible pour les types d'énumération"
+
+#: options.c:1140
+msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
+msgstr "Écraser le type sous-jacent de \"wchar_t\" vers \"unsigned short\""
+
+#: options.c:1146
+msgid "Disable optimizations observable by IEEE signaling NaNs"
+msgstr "Désactiver les optimisations observable par le signalement NaNs IEEE"
+
+#: options.c:1149
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
+msgstr "Lorsque \"signed\" ou \"unsigned\" n,est pas fourni rendre le champ de bits signé"
+
+#: options.c:1152
+msgid "Make \"char\" signed by default"
+msgstr "Rendre les « char » signés par défaut"
+
+#: options.c:1155
+msgid "Do not print names of program units as they are compiled"
+msgstr "Afficher les noms des unités de programme tels que compilées"
+
+#: options.c:1158
+msgid "Convert floating point constants to single precision constants"
+msgstr "Convertir les constantes en virgules flottantes en constantes de simple précision"
+
+#: options.c:1161
+msgid "Internally convert most source to lowercase"
+msgstr "Convertir de manière interne la majorité des sources en majuscules"
+
+#: options.c:1164
+msgid "Internally preserve source case"
+msgstr "Préserver à l'interne la casse des sources"
+
+#: options.c:1167
+msgid "Internally convert most source to uppercase"
+msgstr "Convertir à l'interne la majorité des sources en majuscules"
+
+#: options.c:1173
+msgid "Insert stack checking code into the program"
+msgstr "Insérer du code de vérificaion de la pile dans le programme"
+
+#: options.c:1179
+msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>"
+msgstr "-fstack-limit-register=<registre>\tfaire un déroutement si la pile va au delà du <registre>"
+
+#: options.c:1182
+msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>"
+msgstr "-fstack-limit-symbol=<nom>\tfaire un déroutement si la pile va au delà du symbole <nom>"
+
+#: options.c:1185
+msgid "Display statistics accumulated during compilation"
+msgstr "Afficher les statistiques accumulés durant la compilation"
+
+#: options.c:1188
+msgid "Enable assignability checks for stores into object arrays"
+msgstr "Autoriser la vérificaitions des affectations dans le stockage des tableaux d'objets"
+
+#: options.c:1191
+msgid "Perform strength reduction optimizations"
+msgstr "Exécuter un réduction en force des optimisations"
+
+#: options.c:1194
+msgid "Assume strict aliasing rules apply"
+msgstr "Présumer que des règles stricts d'alias s'appliquent"
+
+#: options.c:1203
+msgid "Symbol names spelled in mixed case"
+msgstr "Noms des symboles épellés dans des casses mélangées"
+
+#: options.c:1206
+msgid "Symbol names in lowercase"
+msgstr "Noms de symboles en minuscules"
+
+#: options.c:1209
+msgid "Symbol names in uppercase"
+msgstr "Noms des symboles en majuscules"
+
+#: options.c:1212
+msgid "Check for syntax errors, then stop"
+msgstr "Vérifier les erreurs de syntaxes et puis stopper"
+
+#: options.c:1215
+msgid "-ftabstop=<number>\tDistance between tab stops for column reporting"
+msgstr "-ftabstop=<nombre>\tfixer la distance de la tabulation des colonnes dans les rapports"
+
+#: options.c:1218
+msgid "-ftemplate-depth-<number>\tSpecify maximum template instantiation depth"
+msgstr "-ftemplate-depth-<nombre>\tspécifier la profondeur maximale d'instanciation de canevas"
+
+#: options.c:1221
+msgid "Create data files needed by \"gcov\""
+msgstr "Créer les fichiers de données nécessaires à \"gcov\""
+
+#: options.c:1227
+msgid "Perform jump threading optimizations"
+msgstr "Exécuter des optimisations de sauts de thread"
+
+#: options.c:1230
+msgid "Report the time taken by each compiler pass"
+msgstr "Rapporter le temps pris par chaque passe de compilation"
+
+#: options.c:1233
+msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model"
+msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tinitialiser le modèle de génération de code par défaut de thread local"
+
+#: options.c:1236
+msgid "Perform superblock formation via tail duplication"
+msgstr "Exécuter la formation du super bloc via la duplication de la queue"
+
+#: options.c:1239
+msgid "Assume floating-point operations can trap"
+msgstr "On assume que les opérations en virgule flottante peuvent être attrappées"
+
+#: options.c:1242
+msgid "Trap for signed overflow in addition, subtraction and multiplication"
+msgstr "Attrapper les débordements de signe dans l'addition, la soustraction et la multiplication"
+
+#: options.c:1245
+msgid "Make prefix-radix non-decimal constants be typeless"
+msgstr "Rendre les préfixes des bases des constantes non décimales sans type"
+
+#: options.c:1248
+msgid "Allow all ugly features"
+msgstr "Permettre toutes les options laides"
+
+#: options.c:1251
+msgid "Hollerith and typeless can be passed as arguments"
+msgstr "Les Hollerith et sans type peuvent être passés comme arguments"
+
+#: options.c:1254
+msgid "Allow ordinary copying of ASSIGN'ed vars"
+msgstr "Permettre le copie ordinaire des variable affectées"
+
+#: options.c:1257
+msgid "Dummy array dimensioned to (1) is assumed-size"
+msgstr "Tableau factice dont la taille des dimensions (1) est assumée"
+
+#: options.c:1260
+msgid "Trailing comma in procedure call denotes null argument"
+msgstr "Virgule de fin dans l'appel de la procédure dénote un argument nul"
+
+#: options.c:1263
+msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
+msgstr "Permettre REAL(Z) et AIMAG(Z) pour les DOUBLE COMPLEX Z"
+
+#: options.c:1266
+msgid "Initialization via DATA and PARAMETER is not type-compatible"
+msgstr "Initialisation via DATA et PARAMETER n'est pas un type compatible"
+
+#: options.c:1269
+msgid "Allow INTEGER and LOGICAL interchangeability"
+msgstr "Permettre l'interchangeabilité de INTEGER et LOGICAL"
+
+#: options.c:1272
+msgid "Append underscores to externals"
+msgstr "Ajouter des caractères de soulignement aux externes"
+
+#: options.c:1275
+msgid "Compile whole compilation unit at a time"
+msgstr "Compiler complètement à la fois une unité de compilation"
+
+#: options.c:1278
+msgid "Delete libU77 intrinsics"
+msgstr "Détruire les intrinsèques libU77"
+
+#: options.c:1281
+msgid "Disable libU77 intrinsics"
+msgstr "Désactiver les intrinsèques libU77"
+
+#: options.c:1284
+msgid "Enable libU77 intrinsics"
+msgstr "Autoriser les intrinsèques libU77"
+
+#: options.c:1287
+msgid "Hide libU77 intrinsics"
+msgstr "Cacher les intrinsèques libU77"
+
+#: options.c:1296
+msgid "Allow math optimizations that may violate IEEE or ISO standards"
+msgstr "Permettre les optimisations mathématiques qui peuvent violer les standards IEEE ou ISO"
+
+#: options.c:1299
+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
+msgstr "Lorsque \"signed\" ou \"unsigned\" n'est pas fourni rendre le champ de bits non signé"
+
+#: options.c:1302
+msgid "Make \"char\" unsigned by default"
+msgstr "Rendre les \"char\" non signés par défaut"
+
+#: options.c:1305
+msgid "Perform loop unswitching"
+msgstr "Exécuter des boucles sans branchement"
+
+#: options.c:1308
+msgid "Just generate unwind tables for exception handling"
+msgstr "Générer simplement des tables étendues pour le traitement des exceptions"
+
+#: options.c:1314
+msgid "Use __cxa_atexit to register destructors"
+msgstr "Utiliser « __cxa_atexit » pour enregistrer les destructeurs."
+
+#: options.c:1320
+msgid "Add extra commentary to assembler output"
+msgstr "Ajouter des commentaires additionnels à la sortie de l'assembleur"
+
+#: options.c:1323
+msgid "Print g77-specific version information and run internal tests"
+msgstr "Afficher les informations de version spécifiques du compilateur g77, exécuter les tests internes"
+
+#: options.c:1326
+msgid "Use expression value profiles in optimizations"
+msgstr "Utiliser le profile de la valeur d'expression dans l'optimisation"
+
+#: options.c:1329
+msgid "Discard unused virtual functions"
+msgstr "Écarter les fonctions virtuelles non utilisées"
+
+#: options.c:1332
+msgid "Implement vtables using thunks"
+msgstr "Implanter les vtables en utilisant des thunks"
+
+#: options.c:1335
+msgid "Program is written in VXT (Digital-like) FORTRAN"
+msgstr "Programme est écrit en Fortran VXT (forme de Digital)"
+
+#: options.c:1338
+msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Détruire les supports VXT Fortran intrinsèques non Fortran-77"
+
+#: options.c:1341
+msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Désactiver les supports VXT Fortran intrinsèques non Fortran-77"
+
+#: options.c:1344
+msgid "Enable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Désactiver les supports VXT Fortran intrinsèques non Fortran-77"
+
+#: options.c:1347
+msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
+msgstr "Cacher les supports VXT Fortran des intrinsèques non Fortran-77"
+
+#: options.c:1353
+msgid "Emit common-like symbols as weak symbols"
+msgstr "Produire les symboles communs comme des symboles faibles"
+
+#: options.c:1356
+msgid "Construct webs and split unrelated uses of single variable"
+msgstr "Construire une toile et séparer les utilisations de variables simples"
+
+#: options.c:1359
+msgid "-fwide-exec-charset=<cset>\tConvert all wide strings and character constants to character set <cset>"
+msgstr "-fwide-exec-charset=<cset>\tconvertir toutes les chaînes et les constantes larges de caractères en jeux de caractères <cset>"
+
+#: options.c:1362
+msgid "Generate a #line directive pointing at the current working directory"
+msgstr "Générer une directive #line pointant sur le répertoire courant de travail"
+
+#: options.c:1365
+msgid "Assume signed arithmetic overflow wraps around"
+msgstr "Assumer un débordement arithmétique signé enroulé"
+
+#: options.c:1368
+msgid "Store strings in writable data section"
+msgstr "Stocker les chaînes dans les sections d'écriture des données"
+
+#: options.c:1371
+msgid "Emit cross referencing information"
+msgstr "Produire l'information des références croisées"
+
+#: options.c:1374
+msgid "Print internal debugging-related information"
+msgstr "Afficher les informations internes reliées à la mise au point"
+
+#: options.c:1377
+msgid "Put zero initialized data in the bss section"
+msgstr "Placer des données initialisées de zéros dans la section bss"
+
+#: options.c:1380
+msgid "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
+msgstr "Générer un recherche molle de class (via objc_getClass()) pour l'utilisation en mode Zero-Link"
+
+#: options.c:1383
+msgid "Treat initial values of 0 like non-zero values"
+msgstr "Traiter les valeurs initiales de 0 comme des valeurs non zéros"
+
+#: options.c:1386
+msgid "Generate debug information in default format"
+msgstr "Générer les informations de mise au point dans le format par défaut"
+
+#: options.c:1392
+msgid "Generate debug information in COFF format"
+msgstr "Générer les informations de mise au point dans le format COFF"
+
+#: options.c:1395
+msgid "Generate debug information in DWARF v2 format"
+msgstr "Générer les informations de mise au point dans le format DWARF v2"
+
+#: options.c:1398
+msgid "Dump declarations to a .decl file"
+msgstr "Vidanger les déclarations dans un fichier .decl"
+
+#: options.c:1401
+msgid "Generate debug information in default extended format"
+msgstr "Générer les informations de mise au point dans le format étendu par défaut"
+
+#: options.c:1404
+msgid "-gnat<options>\tSpecify options to GNAT"
+msgstr "-gnat<options>\tSpécifier les options pour GNAT"
+
+#: options.c:1407
+msgid "Generate debug information in STABS format"
+msgstr "Générer les informations de mise au point dans le format STABS"
+
+#: options.c:1410
+msgid "Generate debug information in extended STABS format"
+msgstr "Générer les informations de mise au point dans le format étendu STABS"
+
+#: options.c:1413
+msgid "Generate debug information in VMS format"
+msgstr "Générer les informations de mise au point dans le format VMS"
+
+#: options.c:1416
+msgid "Generate debug information in XCOFF format"
+msgstr "Générer les information de mise au point dans le format XCOFF"
+
+#: options.c:1419
+msgid "Generate debug information in extended XCOFF format"
+msgstr "Générer les informations de mise au point dans le format étendu XCOFF"
+
+#: options.c:1422
+msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path"
+msgstr "-idirafter <répertoire>\tajouter <répertoire> à la fin du chemin système d'inclusion"
+
+#: options.c:1425
+msgid "-imacros <file>\tAccept definition of macros in <file>"
+msgstr "-imacros <fichier>\taccepter la définition de macros dans le <fichier>"
+
+#: options.c:1428
+msgid "-include <file>\tInclude the contents of <file> before other files"
+msgstr "-include <fichier>\tinclure le contenu du <fichier> avant les autres fichiers"
+
+#: options.c:1431
+msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options"
+msgstr "-iprefix <chemin>\tsélectionner le <chemin> comme préfixer aux deux prochaines options"
+
+#: options.c:1434
+msgid "-isysroot <dir>\tSet <dir> to be the system root directory"
+msgstr "-isysroot <répertoire>\tsélectionner le <répertoire> comme répertoire racine du système"
+
+#: options.c:1437
+msgid "-isystem <dir>\tAdd <dir> to the start of the system include path"
+msgstr "-isystem <répertoire>\tajouter le <répertoire> au début du chemin d'inclusion principal"
+
+#: options.c:1440
+msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path"
+msgstr "-iwithprefix <répertoire>\tajouter le <répertoire> à la fin du chemin d'inclusion principal"
+
+#: options.c:1443
+msgid "-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path"
+msgstr "-iwithprefixbefore <répertoire>\tajouter le <répertoire> à la fin du chemin d'inclusion principal"
+
+#: options.c:1455
+msgid "Do not search standard system include directories (those specified with -isystem will still be used)"
+msgstr "Ne pas rechercher les répertoires standard système d'inclusion (ceux spécifiés avec -isystem seront encore utilisés)"
+
+#: options.c:1458
+msgid "Do not search standard system include directories for C++"
+msgstr "Ne pas rechercher les répertoires standard système d'inclusion pour C++"
+
+#: options.c:1464
+msgid "-o <file>\tPlace output into <file>"
+msgstr "-o <fichier>\tproduire la sortie dans le <fichier>"
+
+#: options.c:1467
+msgid "Enable function profiling"
+msgstr "Autoriser le profilage de fonction"
+
+#: options.c:1470
+msgid "Issue warnings needed for strict compliance to the standard"
+msgstr "Émettre les avertissements nécessaires pour être conforme au standard"
+
+#: options.c:1473
+msgid "Like -pedantic but issue them as errors"
+msgstr "Identique à -pedantic mais les marque comme des erreurs"
+
+#: options.c:1476
+msgid "Generate C header of platform-specific features"
+msgstr "Générer les en-têtes C pour les options spécifiques à la plate-forme"
+
+#: options.c:1479
+msgid "Do not display functions compiled or elapsed time"
+msgstr "Ne pas afficher les fonctions compilées ou le temps écoulé"
+
+#: options.c:1482
+msgid "Remap file names when including files"
+msgstr "Rampper les noms lors de l'inclusion des fichiers"
+
+#: options.c:1485
+msgid "Conform to the ISO 1998 C++ standard"
+msgstr "Conforme au standard ISO C++ de 1998"
+
+#: options.c:1488
+msgid "Conform to the ISO 1990 C standard"
+msgstr "Conforme au standard ISO C de 1990"
+
+#: options.c:1491
+msgid "Conform to the ISO 1999 C standard"
+msgstr "Conforme au standard ISO C de 1999"
+
+#: options.c:1494 options.c:1515 options.c:1518
+msgid "Deprecated in favor of -std=c99"
+msgstr "Déprécié à la faveur de l'option -std=c99"
+
+#: options.c:1497
+msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
+msgstr "Conforme au standard ISO C++ de 1998 avec les extensions de GNU"
+
+#: options.c:1500
+msgid "Conform to the ISO 1990 C standard with GNU extensions"
+msgstr "Conforme au standard ISO C de 1990 avec les extensions de GNU"
+
+#: options.c:1503
+msgid "Conform to the ISO 1999 C standard with GNU extensions"
+msgstr "Conforme au standard ISO C de 1999 avec les extensions de GNU"
+
+#: options.c:1506
+msgid "Deprecated in favor of -std=gnu99"
+msgstr "Déprécié à la faveur de l'option -std=gnu99"
+
+#: options.c:1509
+msgid "Deprecated in favor of -std=c89"
+msgstr "Déprécié à la faveur de l'option -std=c89"
+
+#: options.c:1512
+msgid "Conform to the ISO 1990 C standard as amended in 1994"
+msgstr "Conforme au standard ISO C de 1990 tel amendé en 1994"
+
+#: options.c:1521
+msgid "Enable traditional preprocessing"
+msgstr "Autoriser le traitement traditionnel"
+
+#: options.c:1524
+msgid "-trigraphs\tSupport ISO C trigraphs"
+msgstr "-trigraphs\tSupporter les tri-graphes ISO C"
+
+#: options.c:1527
+msgid "Do not predefine system-specific and GCC-specific macros"
+msgstr "Ne pas prédéfinir les macros spécifiques au système ou à GCC"
+
+#: options.c:1530
+msgid "Enable verbose output"
+msgstr "Autoriser le mode bavard sur la sortie"
+
+#: options.c:1536
+msgid "Suppress warnings"
+msgstr "Supprimer les avertissement"
+
+#: config/rs6000/darwin.h:98
+msgid " conflicting code gen style switches are used"
+msgstr " code de génération de style de switches utilisées est en conflit"
+
+#: gcc.c:743
+msgid "GCC does not support -C or -CC without -E"
+msgstr "GCC ne supporte pas -C ou -CC sans utiliser -E"
+
+#: gcc.c:767 java/jvspec.c:80 ada/lang-specs.h:34
+msgid "-pg and -fomit-frame-pointer are incompatible"
+msgstr "-pg et -fomit-frame-pointer sont incompatibles"
+
+#: gcc.c:915
+msgid "-E required when input is from standard input"
+msgstr "-E est requis lorsque l'entrée est faite à partir de l'entrée standard"
+
+#: config/arm/arm.h:197
msgid "-mapcs-26 and -mapcs-32 may not be used together"
msgstr "-mapcs-26 et -mapcs-32 ne peuvent être utilisés ensembles"
-#: config/arm/arm.h:180
+#: config/arm/arm.h:199
msgid "-msoft-float and -mhard_float may not be used together"
msgstr "-msoft-float et -mhard_float ne peuvent être utilisées ensembles"
-#: config/arm/arm.h:182
+#: config/arm/arm.h:201
msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr "-mbig-endian et -mlittle-endian ne peuvent être utilisés ensemble"
-#: config/i386/sco5.h:195
-#, fuzzy
-msgid "-pg not supported on this platform"
-msgstr "attribut « %s » n'est pas supporté sur cette plate-forme"
+#: config/i386/mingw32.h:58 config/i386/cygwin.h:70
+msgid "shared and mdll are not compatible"
+msgstr "shared et mdll ne sont pas compatibles"
-#: config/i386/sco5.h:196
-#, fuzzy
-msgid "-p and -pp specified - pick one"
-msgstr "-I- spécifié deux fois"
+#: config/mips/mips.h:975
+msgid "-pipe is not supported"
+msgstr "-pipe n'est pas supporté"
-#: config/i386/sco5.h:271
-#, fuzzy
-msgid "-G and -static are mutually exclusive"
-msgstr "-pedantic et -traditional sont mutuellement exclusives"
+#: config/mips/mips.h:1130 config/arc/arc.h:63
+msgid "may not use both -EB and -EL"
+msgstr "ne peut utiliser ensemble -EB et -EL"
-#: f/lang-specs.h:38 gcc.c:689
-msgid "GNU C does not support -C without using -E"
-msgstr "GNU C ne supporte pas -C sans utiliser -E"
+#: config/darwin.h:215
+msgid "-current_version only allowed with -dynamiclib"
+msgstr "-current_version permis seulement avec -dynamiclib"
-#: f/lang-specs.h:39 gcc.c:690
-#, fuzzy
-msgid "GNU C does not support -CC without using -E"
-msgstr "GNU C ne supporte pas -C sans utiliser -E"
+#: config/darwin.h:218
+msgid "-install_name only allowed with -dynamiclib"
+msgstr "-install_name permis seulement avec with -dynamiclib"
-#: config/mcore/mcore.h:60
-msgid "choose either big or little endian, not both"
-msgstr "choisir un système à octets de poids fort ou faible mais pas les deux"
+#: config/darwin.h:223
+msgid "-bundle not allowed with -dynamiclib"
+msgstr "-bundle n'est pas permis avec -dynamiclib"
-#: config/mcore/mcore.h:63
-msgid "choose either m340 or m210 not both"
-msgstr "choisir m340 ou m210 mais pas les deux"
+#: config/darwin.h:224
+msgid "-bundle_loader not allowed with -dynamiclib"
+msgstr "-bundle_loader n'est pas permis avec -dynamiclib"
-#: config/mcore/mcore.h:64
-msgid "the m210 does not have little endian support"
-msgstr "Le m210 ne supporte pas le code pour système à octets de poids faible"
+#: config/darwin.h:225
+msgid "-client_name not allowed with -dynamiclib"
+msgstr "-client_name n'est pas permis avec -dynamiclib"
-#: config/i386/cygwin.h:115
-msgid "mno-cygwin and mno-win32 are not compatible"
-msgstr "mno-cygwin et mno-win32 ne sont pas compatibles"
+#: config/darwin.h:228
+msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
+msgstr "-force_cpusubtype_ALL n'est pas permis avec -dynamiclib"
+
+#: config/darwin.h:229
+msgid "-force_flat_namespace not allowed with -dynamiclib"
+msgstr "-force_flat_namespace n'est pas permis avec -dynamiclib"
+
+#: config/darwin.h:231
+msgid "-keep_private_externs not allowed with -dynamiclib"
+msgstr "-keep_private_externs n'est pas permis avec -dynamiclib"
+
+#: config/darwin.h:232
+msgid "-private_bundle not allowed with -dynamiclib"
+msgstr "-private_bundle n'est pas permis avec -dynamiclib"
#: config/vax/netbsd-elf.h:42
-#, fuzzy
msgid "The -shared option is not currently supported for VAX ELF."
-msgstr "fonction interne « %s » n'est pas couramment supportée"
+msgstr "L'option -shared n'est pas couramment supportée pour VAS ELF."
-#: treelang/lang-specs.h:52
-#, fuzzy
-msgid "-pg or -p and -fomit-frame-pointer are incompatible"
-msgstr "-pg et -fomit-frame-pointer sont incompatibles"
+#: config/i386/sco5.h:191
+msgid "-pg not supported on this platform"
+msgstr "-pg n'est pas supporté sur cette plate-forme"
-#: gcc.c:847
-msgid "-E required when input is from standard input"
-msgstr "-E est requis lorsque l'entrée est faite à partir de l'entrée standard"
+#: config/i386/sco5.h:192
+msgid "-p and -pp specified - pick one"
+msgstr "-p et -pp spécifié - n'en prendre qu'un seul"
-#: gcc.c:851
-msgid "compilation of header file requested"
-msgstr "fichier d'en-tête requis pour la compilation"
+#: config/i386/sco5.h:266
+msgid "-G and -static are mutually exclusive"
+msgstr "-G et -static sont mutuellement exclusives"
-#: config/vax/vax.h:50 config/vax/vax.h:51
-msgid "profiling not supported with -mg\n"
-msgstr "profilage n'est pas supporté avec -mg\n"
+#: treelang/lang-specs.h:52
+msgid "-pg or -p and -fomit-frame-pointer are incompatible"
+msgstr "-pg et -p et -fomit-frame-pointer sont incompatibles"
-#: config/mips/mips.h:954
-msgid "-pipe is not supported"
-msgstr "-pipe n'est pas supporté"
+#: f/lang-specs.h:38
+msgid "GCC does not support -C without using -E"
+msgstr "GCC ne supporte pas -C sans utiliser -E"
-#: config/mips/mips.h:1156 config/arc/arc.h:63
-msgid "may not use both -EB and -EL"
-msgstr "ne peut utiliser ensemble -EB et -EL"
+#: f/lang-specs.h:39
+msgid "GCC does not support -CC without using -E"
+msgstr "GCC ne supporte pas -CC sans utiliser -E"
#: config/mips/r3900.h:35
msgid "-mhard-float not supported"
@@ -21168,6 +21232,366 @@ msgstr "-mhard-float n'est pas supporté"
msgid "-msingle-float and -msoft-float can not both be specified"
msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
+#: config/rs6000/sysv4.h:1094 config/i386/freebsd-aout.h:215
+msgid "`-p' not supported; use `-pg' and gprof(1)"
+msgstr "« -p » n'est pas supporté; utiliser « -pg » et gprof(1)"
+
+#: config/sparc/linux64.h:208 config/sparc/linux64.h:219
+#: config/sparc/netbsd-elf.h:140 config/sparc/netbsd-elf.h:159
+#: config/sparc/sol2-bi.h:195 config/sparc/sol2-bi.h:205
+msgid "may not use both -m32 and -m64"
+msgstr "ne peut utiliser ensemble -m32 et -m64"
+
+#: config/vax/vax.h:50 config/vax/vax.h:51
+msgid "profiling not supported with -mg\n"
+msgstr "profilage n'est pas supporté avec -mg\n"
+
+#: config/i386/cygwin.h:29
+msgid "mno-cygwin and mno-win32 are not compatible"
+msgstr "mno-cygwin et mno-win32 ne sont pas compatibles"
+
+#: ada/lang-specs.h:36
+msgid "one of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada"
+msgstr "une parmi -c, -S, -gnatc, -gnatz ou -gnats est requise pour Ada"
+
+#: config/sparc/sol2-bi.h:167 config/sparc/sol2-bi.h:172
+#: config/sparc/sol2-gld-bi.h:17 config/sparc/sol2-gld-bi.h:22
+msgid "does not support multilib"
+msgstr "ne supporte pas multilib"
+
+#: java/lang-specs.h:34
+msgid "-fjni and -femit-class-files are incompatible"
+msgstr "-fjni et -femit-class-files sont incompatibles"
+
+#: java/lang-specs.h:35
+msgid "-fjni and -femit-class-file are incompatible"
+msgstr "-fjni et -femit-class-file sont incompatibles"
+
+#: java/lang-specs.h:36 java/lang-specs.h:37
+msgid "-femit-class-file should used along with -fsyntax-only"
+msgstr "-femit-class-file dervait être utilisé avec -fsyntax-only"
+
+#: config/mcore/mcore.h:65
+msgid "the m210 does not have little endian support"
+msgstr "Le m210 ne supporte pas le code pour système à octets de poids faible"
+
+#~ msgid "concatenation of string literals with __FUNCTION__ is deprecated"
+#~ msgstr "la concaténation de chaînes de litéraux avec « __FUNCTION__ » est obsolète"
+
+#~ msgid "ISO C++ forbids range expressions in switch statements"
+#~ msgstr "ISO C++ interdit les intervalles dans les déclarations de « switch »"
+
+#~ msgid "ISO C++ forbids taking the address of a label"
+#~ msgstr "ISO C++ interdit de prendre l'adresse d'une étiquette"
+
+#~ msgid "ISO C forbids taking the address of a label"
+#~ msgstr "ISO C interdit de prendre l'adresse d'une étiquette"
+
+#~ msgid "declaration of `%s' shadows %s"
+#~ msgstr "la déclaration de « %s » masque %s"
+
+#~ msgid "`struct %s' incomplete in scope ending here"
+#~ msgstr "« struct %s » incomplète dans le champ terminant ici"
+
+#~ msgid "`union %s' incomplete in scope ending here"
+#~ msgstr "« union %s » incomplète dans le champ terminant ici"
+
+#~ msgid "`enum %s' incomplete in scope ending here"
+#~ msgstr "« enum %s » incomplète dans le champ terminant ici"
+
+#~ msgid "label `%s' defined but not used"
+#~ msgstr "étiquette « %s » définie mais pas utilisée"
+
+#~ msgid "shadowing library function `%s'"
+#~ msgstr "masquage de la fonction « %s » de la bibliothèque"
+
+#~ msgid "library function `%s' declared as non-function"
+#~ msgstr "fonction « %s » de la bibliothèque déclarée comme n'étant pas une fonction"
+
+#~ msgid "conflicting types for `%s'"
+#~ msgstr "types conflictuels pour « %s »"
+
+#~ msgid "redeclaration of `%s'"
+#~ msgstr "redéclaration de « %s »"
+
+#~ msgid "prototype for `%s' follows"
+#~ msgstr "le prototype de « %s » suit"
+
+#~ msgid "non-prototype definition here"
+#~ msgstr "définition d'un non prototype ici"
+
+#~ msgid "prototype for `%s' follows and number of arguments doesn't match"
+#~ msgstr "le prototype de « %s » suit mais le nombre d'arguments ne concorde pas"
+
+#~ msgid "prototype for `%s' follows and argument %d doesn't match"
+#~ msgstr "le prototype de « %s » suit mais le nombre d'arguments %d ne concorde pas"
+
+#~ msgid "type qualifiers for `%s' conflict with previous decl"
+#~ msgstr "le qualificateur du type de « %s » est en conflit avec une déclaration précédente"
+
+#~ msgid "redundant redeclaration of `%s' in same scope"
+#~ msgstr "redéclaration redondante de « %s » dans le même champ"
+
+#~ msgid "a parameter"
+#~ msgstr "un paramètre"
+
+#~ msgid "a previous local"
+#~ msgstr "une locale précédente"
+
+#~ msgid "a global declaration"
+#~ msgstr "une déclaration globale"
+
+#~ msgid "`%s' used prior to declaration"
+#~ msgstr "« %s » utilisé avant sa déclaration"
+
+#~ msgid "`%s' was declared implicitly `extern' and later `static'"
+#~ msgstr "« %s » a été déclaré implicitement « extern » et plus loin « static »"
+
+#~ msgid "previous external decl of `%s'"
+#~ msgstr "déclaration externe précédente de « %s »"
+
+#~ msgid "type mismatch with previous implicit declaration"
+#~ msgstr "non concordance de type avec la déclaration implicite précédente"
+
+#~ msgid "`%s' was previously implicitly declared to return `int'"
+#~ msgstr "« %s » a été précédemment déclaré implicitement comme retournant un « int »"
+
+#~ msgid "`%s' was declared `extern' and later `static'"
+#~ msgstr "« %s » a été déclaré « extern » et plus loin « static »"
+
+#~ msgid "`%s' locally external but globally static"
+#~ msgstr "« %s » localement externe mais globalement statique"
+
+#~ msgid "function `%s' was previously declared within a block"
+#~ msgstr "la fonction « %s » a été précédemment déclarée à l'intérieur d'un bloc"
+
+#~ msgid "declaration of `%s' has `extern' and is initialized"
+#~ msgstr "« %s » initialisé et déclaré « extern »"
+
+#~ msgid "initializer fails to determine size of `%s'"
+#~ msgstr "l'initialisation n'a pas pu déterminer la taille de « %s »"
+
+#~ msgid "array size missing in `%s'"
+#~ msgstr "taille du tableau manquante dans « %s »"
+
+#~ msgid "storage size of `%s' isn't known"
+#~ msgstr "taille de stockage de « %s » inconnue"
+
+#~ msgid "storage size of `%s' isn't constant"
+#~ msgstr "la taille de stockage de « %s » n'est pas une constante"
+
+#~ msgid "ISO C forbids parameter `%s' shadowing typedef"
+#~ msgstr "ISO C interdit que le paramètre « %s » masque un typedef"
+
+#~ msgid "parameter `%s' points to incomplete type"
+#~ msgstr "le paramètre « %s » pointe vers un type incomplet"
+
+#~ msgid "parameter points to incomplete type"
+#~ msgstr "le paramètre pointe vers un type incomplet"
+
+#~ msgid "`void' in parameter list must be the entire list"
+#~ msgstr "si « void » est dans une liste de paramètres, toute la liste doit l'être"
+
+#~ msgid "`union %s' declared inside parameter list"
+#~ msgstr "« union %s » déclarée à l'intérieur de la liste de paramètres"
+
+#~ msgid "`enum %s' declared inside parameter list"
+#~ msgstr "« enum %s » déclarée à l'intérieur de la liste de paramètres"
+
+#~ msgid "anonymous union declared inside parameter list"
+#~ msgstr "union anonyme déclarée à l'intérieur de la liste des paramètres"
+
+#~ msgid "anonymous enum declared inside parameter list"
+#~ msgstr "énumération anonyme déclarée à l'intérieur de la liste des paramètres"
+
+#~ msgid "bit-field `%s' type invalid in ISO C"
+#~ msgstr "le champ de bits « %s » a un type invalide en C ISO"
+
+#~ msgid "duplicate member `%s'"
+#~ msgstr "membre « %s » apparaît en double"
+
+#~ msgid "parm types given both in parmlist and separately"
+#~ msgstr "types des paramètres à la fois donnés dans la liste et séparément"
+
+#~ msgid "parameter `%s' declared void"
+#~ msgstr "paramètre « %s » déclaré « void »"
+
+#~ msgid "universal-character-name '\\u%04x' not valid in identifier"
+#~ msgstr "nom-de-caractère-universel « \\U%04x » invalide dans l'identificcateur"
+
+#~ msgid "ignoring invalid multibyte character"
+#~ msgstr "caractère multioctet invalide ignoré"
+
+#~ msgid "options array incorrectly sorted: %s is before %s"
+#~ msgstr "tableau des options mal trié : %s est avant %s"
+
+#~ msgid "-Wno-strict-prototypes is not supported in C++"
+#~ msgstr "-Wno-strict-prototypes n'est pas permis en C++"
+
+#~ msgid ""
+#~ "Switches:\n"
+#~ " -include <file> Include the contents of <file> before other files\n"
+#~ " -imacros <file> Accept definition of macros in <file>\n"
+#~ " -iprefix <path> Specify <path> as a prefix for next two options\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"
+#~ msgstr ""
+#~ "Options:\n"
+#~ " -include <fichier> Inclure le contenu du <fichier> avant d'autres fichiers\n"
+#~ " -imacros <fichier> Accepter la définition de macros dans le <fichier>\n"
+#~ " -iprefix <chemin> Spécifier le <chemin> comme un préfixe aux prochaines deux options\n"
+#~ " -iwithprefix <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion système\n"
+#~ " -iwithprefixbefore <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion principal\n"
+#~ " -isystem <rép> Ajouter le <rép>ertoire au début du chemin d'inclusion système\n"
+
+#~ 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 docs\n"
+#~ " -nostdinc Do not search system include directories\n"
+#~ " (dirs specified with -isystem will still be used)\n"
+#~ " -nostdinc++ Do not search system include directories for C++\n"
+#~ " -o <file> Put output into <file>\n"
+#~ msgstr ""
+#~ " -idirafter <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion système\n"
+#~ " -I <rép> Ajouter le <rép>ertoire à la fin du chemin d'inclusion principal\n"
+#~ " -I- Raffiner le contrôle du chemin d'inclusion; consulter la doc\n"
+#~ " -nostdinc Ne pas rechercher dans les répertoires d'inclusion système\n"
+#~ " (les rép spécifiés avec -isystem seront encore utilisés)\n"
+#~ " -nostdinc++ Ne pas rechercher dans les répertoires d'inclusion système pour C++\n"
+#~ " -o <fichier> Produire la sortie dans le <fichier>\n"
+
+#~ msgid ""
+#~ " -trigraphs Support ISO C trigraphs\n"
+#~ " -std=<std name> Specify the conformance standard; one of:\n"
+#~ " gnu89, gnu99, c89, c99, iso9899:1990,\n"
+#~ " iso9899:199409, iso9899:1999, c++98\n"
+#~ " -w Inhibit warning messages\n"
+#~ " -W[no-]trigraphs Warn if trigraphs are encountered\n"
+#~ " -W[no-]comment{s} Warn if one comment starts inside another\n"
+#~ msgstr ""
+#~ " -trigraphs Permettre les trigraphes C ISO\n"
+#~ " -std=<standard> Spécifier le <standard> de conformité à utiliser; soit:\n"
+#~ " gnu89, gnu99, c89, c99, iso9899:1990,\n"
+#~ " iso9899:199409, iso9899:1999, c++98\n"
+#~ " -w Inhiber les messages d'avertissement\n"
+#~ " -W[no-]trigraphs Avertir [ou non] si des trigraphes sont rencontrés\n"
+#~ " -W[no-]comment{s} Avertir [ou non] si un commentaire débute à l'intérieur \n"
+#~ " d'un autre\n"
+
+#~ msgid ""
+#~ " -W[no-]traditional Warn about features not present in traditional C\n"
+#~ " -W[no-]undef Warn if an undefined macro is used by #if\n"
+#~ " -W[no-]import Warn about the use of the #import directive\n"
+#~ msgstr ""
+#~ " -W[no-]traditional Avertir [ou non] à propos des fonctionnalités absentes\n"
+#~ " en C traditionnel\n"
+#~ " -W[no-]undef Avertir [ou non] à propos des macros utilisées dans des\n"
+#~ " #if sans être définies\n"
+#~ " -W[no-]import Avertir [ou non] de l'utilisation de la directive #import\n"
+
+#~ msgid ""
+#~ " -W[no-]error Treat all warnings as errors\n"
+#~ " -W[no-]system-headers Do not suppress warnings from system headers\n"
+#~ " -W[no-]all Enable most preprocessor warnings\n"
+#~ msgstr ""
+#~ " -W[no-]error Changer [ou non] les avertissements en erreurs\n"
+#~ " -W[no-]system-headers Supprimer [ou non] les avertissements à propos des \n"
+#~ " en-têtes système\n"
+#~ " -W[no-]all Générer [ou non] la plupart des avertissements du\n"
+#~ " préprocesseur\n"
+
+#~ msgid ""
+#~ " -M Generate make dependencies\n"
+#~ " -MM As -M, but ignore system header files\n"
+#~ " -MD Generate make dependencies and compile\n"
+#~ " -MMD As -MD, but ignore system header files\n"
+#~ " -MF <file> Write dependency output to the given file\n"
+#~ " -MG Treat missing header file as generated files\n"
+#~ msgstr ""
+#~ " -M Générer les dépendances pour make\n"
+#~ " -MM Comme -M, en ignorant les fichiers d'en-têtes système\n"
+#~ " -MD Générer les dépendances pour make et compiler\n"
+#~ " -MMD Comme -MD, en ignorant les fichiers d'en-têtes système\n"
+#~ " -MF <fichier> Écrire les dépendances dans le <fichier>\n"
+#~ " -MG Traiter les en-têtes manquants comme des fichiers générés\n"
+
+#~ msgid ""
+#~ " -MP\t\t\t Generate phony targets for all headers\n"
+#~ " -MQ <target> Add a MAKE-quoted target\n"
+#~ " -MT <target> Add an unquoted target\n"
+#~ msgstr ""
+#~ " -MP\t\t\t Générer des cibles factices pour tous les en-têtes\n"
+#~ " -MQ <target> Ajouter une cible protégée pour MAKE\n"
+#~ " -MT <target> Ajouter une cible non protégée\n"
+
+#~ msgid ""
+#~ " -D<macro> Define a <macro> with string '1' as its value\n"
+#~ " -D<macro>=<val> Define a <macro> with <val> as its value\n"
+#~ " -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"
+#~ msgstr ""
+#~ " -D<macro> Définir une <macro> avec la chaîne « 1 » pour valeur\n"
+#~ " -D<macro>=<valeur> Définir une <macro> de <valeur>\n"
+#~ " -A<question>=(<réponse>) Créer une assertion <question>=<réponse>\n"
+#~ " -A-<question>=(<réponse>) Dissocier la <réponse> à la <question>\n"
+#~ " -U<macro> Oublier la définition de la <macro> \n"
+#~ " -v Afficher le numéro de version\n"
+
+#~ msgid ""
+#~ " -H Print the name of header files as they are used\n"
+#~ " -C Do not discard comments\n"
+#~ " -dM Display a list of macro definitions active at end\n"
+#~ " -dD Preserve macro definitions in output\n"
+#~ " -dN As -dD except that only the names are preserved\n"
+#~ " -dI Include #include directives in the output\n"
+#~ msgstr ""
+#~ " -H Afficher le nom des fichiers en-tête tel qu'utilisés\n"
+#~ " -C Ne pas mettre de côté les commantaires\n"
+#~ " -dM Afficher la liste des définitions de macro actives à la fin\n"
+#~ " -dD Préserver les définitions de macros dans la sortie\n"
+#~ " -dN Comme -dD, mais seuls les noms sont préservés\n"
+#~ " -dI Inclure la directive #include dans la sortie\n"
+
+#~ msgid ""
+#~ " -f[no-]preprocessed Treat the input file as already preprocessed\n"
+#~ " -ftabstop=<number> Distance between tab stops for column reporting\n"
+#~ " -P Do not generate #line directives\n"
+#~ " -remap Remap file names when including files\n"
+#~ " --help Display this information\n"
+#~ msgstr ""
+#~ " -f[no-]preprocessed Considérer [ou non] que le fichier d'entrée est \n"
+#~ " déjà pré-traité\n"
+#~ " -ftabstop=<nombre> Largeur des tabulations pour indiquer la colonne\n"
+#~ " -P Ne pas générer des directives #line\n"
+#~ " -remap Refaire la table des noms de fichiers lors de\n"
+#~ " l'inclusion de fichiers\n"
+#~ " --help Afficher cet l'aide-mémoire\n"
+
+#~ msgid "parse error"
+#~ msgstr "erreur d'analyse syntaxique"
+
+# FIXME
+#~ msgid "ISO C forbids the address of a cast expression"
+#~ msgstr "ISO C interdit l'adresse d'une expression transtypée"
+
+#~ msgid "initializer for static variable is not constant"
+#~ msgstr "l'initialisation d'une variable statique n'est pas une constante"
+
+#~ msgid "initializer for static variable uses complicated arithmetic"
+#~ msgstr "l'initialisation d'une variable statique utilise une artihmétique compliquée"
+
+# FIXME
+#~ msgid "aggregate initializer is not constant"
+#~ msgstr "l'initialisation d'aggrégat n'est pas une constante"
+
+# FIXME
+#~ msgid "aggregate initializer uses complicated arithmetic"
+#~ msgstr "l'initialisation d'un aggrégat utilise une arithmétique compliquée"
+
# FIXME
#~ msgid "variable offset is passed partially in stack and in reg"
#~ msgstr "le décalage de variable est passé partiellement dans la pile et dans le registre"
@@ -21175,13 +21599,748 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "variable size is passed partially in stack and in reg"
#~ msgstr "la taille de la variable est passée partiellement dans la pile et le registre"
+# I18N
+#~ msgid "open %s"
+#~ msgstr "open %s"
+
+#~ msgid "incompatibilities between object file & expected values"
+#~ msgstr "incompatibilités entre le fichier objet et les valeurs attendues"
+
+#~ msgid ""
+#~ "\n"
+#~ "Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Traitement de la table des symboles #%d, décalage = 0x%.8lx, sorte = %s\n"
+
+# FIXME
+#~ msgid "string section missing"
+#~ msgstr "chaîne de section manquante"
+
+#~ msgid "section pointer missing"
+#~ msgstr "pointeur de section manquant"
+
+#~ msgid "no symbol table found"
+#~ msgstr "aucune table des symboles trouvée"
+
+#~ msgid ""
+#~ "\n"
+#~ "Updating header and load commands.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Mise à jour des en-têtes et des commandes de chargement.\n"
+#~ "\n"
+
+# FIXME
+#~ msgid "load command map, %d cmds, new size %ld.\n"
+#~ msgstr "Chargement de la carte des commandes, %d commandes, nouvelle taille %ld.\n"
+
+#~ msgid ""
+#~ "writing load commands.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "écriture des commandes de chargement.\n"
+#~ "\n"
+
+# I18N
+#~ msgid "close %s"
+#~ msgstr "close %s"
+
+#~ msgid "could not convert 0x%l.8x into a region"
+#~ msgstr "ne peut convertir 0x%l.8x en région"
+
+#~ msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
+#~ msgstr "fonction %s, région %d, décalage = %ld (0x%.8lx)\n"
+
+#~ msgid "bad magic number"
+#~ msgstr "nombre magique erroné"
+
+#~ msgid "bad header version"
+#~ msgstr "version d'en-tête erronée"
+
+# FIXME: ou version d'en-tête brut erronée
+#~ msgid "bad raw header version"
+#~ msgstr "version brute d'en-tête erronée"
+
+# FIXME: ou tampon d'en-tête brut trop petit
+#~ msgid "raw header buffer too small"
+#~ msgstr "tampon brut d'en-tête trop petit"
+
+#~ msgid "old raw header file"
+#~ msgstr "ancien fichier d'en-tête brute"
+
+#~ msgid "unsupported version"
+#~ msgstr "version non reconnue"
+
+#~ msgid "unknown {de,en}code_mach_o_hdr return value %d"
+#~ msgstr "mauvaise valeur de retour (%d) de {de,en}code_mach_o_hdr"
+
+# I18N
+#~ msgid "fstat %s"
+#~ msgstr "fstat %s"
+
+# I18N
+#~ msgid "lseek %s 0"
+#~ msgstr "lseek %s 0"
+
+# I18N
+#~ msgid "read %s"
+#~ msgstr "read %s"
+
+#~ msgid "read %ld bytes, expected %ld, from %s"
+#~ msgstr "lu %ld octets, attendu %ld, de %s"
+
+# I18N
+#~ msgid "msync %s"
+#~ msgstr "msync %s"
+
+# I18N
+#~ msgid "munmap %s"
+#~ msgstr "munmap %s"
+
+# I18N
+#~ msgid "write %s"
+#~ msgstr "write %s"
+
+#~ msgid "wrote %ld bytes, expected %ld, to %s"
+#~ msgstr "écrit %ld octets, attendu %ld, vers %s"
+
+#~ msgid "ISO C++ does not permit \"%s\" in #if"
+#~ msgstr "ISO C++ n'autorise pas « %s » dans #if"
+
+#~ msgid "invalid character '%c' in #if"
+#~ msgstr "caractère « %c » invalide dans #if"
+
+#~ msgid "invalid character '\\%03o' in #if"
+#~ msgstr "caractère « \\%03o » invalide dans #if"
+
+#~ msgid "absolute file name in remap_filename"
+#~ msgstr "nom de fichier absolu dans remap_filename"
+
+#~ msgid "%s: Not a directory"
+#~ msgstr "%s : ce n'est pas un répertoire"
+
+#~ msgid "directory name missing after %s"
+#~ msgstr "nom de répertoire manquant après %s"
+
+#~ msgid "file name missing after %s"
+#~ msgstr "nom de fichier manquant après %s"
+
+#~ msgid "path name missing after %s"
+#~ msgstr "nom de chemin manquant après %s"
+
+#~ msgid "trigraph ??%c converted to %c"
+#~ msgstr "trigraphe ??%c converti en %c"
+
+#~ msgid "trigraph ??%c ignored"
+#~ msgstr "trigraphe ??%c ignoré"
+
+#~ msgid "backslash and newline separated by space"
+#~ msgstr "« \\ » et retour de chariot séparés par un blanc"
+
+#~ msgid "backslash-newline at end of file"
+#~ msgstr "« \\ » en fin de ligne à la fin du fichier"
+
+#~ msgid "\"/*\" within comment"
+#~ msgstr "« /* » à l'intérieur d'un commentaire"
+
+#~ msgid "%s in preprocessing directive"
+#~ msgstr "%s dans la directive du préprocesseur"
+
+#~ msgid "no newline at end of file"
+#~ msgstr "pas de retour chariot à la fin du fichier"
+
+#~ msgid "unknown string token %s\n"
+#~ msgstr "élément lexical %s inconnu\n"
+
+#~ msgid "non-hex digit '%c' in universal-character-name"
+#~ msgstr "chiffre « %c » non hexadécimal dans le nom-de-caractère-universel"
+
+#~ msgid "universal-character-name on EBCDIC target"
+#~ msgstr "nom-de-caractère-universel pour une cible EBCDIC"
+
+#~ msgid "universal-character-name out of range"
+#~ msgstr "nom-de-caractère-universel est hors limite"
+
+#~ msgid "escape sequence out of range for its type"
+#~ msgstr "séquence d'échappement hors limite pour son type"
+
+#~ msgid "#import is obsolete, use an #ifndef wrapper in the header file"
+#~ msgstr "#import est obsolète, enveloppez le avec #ifndef dans le fichier d'en-tête"
+
+# FIXME
+#~ msgid "#pragma once is obsolete"
+#~ msgstr "utiliser #pragma une seule fois est obsolète"
+
+#~ msgid "the conditional began here"
+#~ msgstr "la condition débute ici"
+
+#~ msgid "unterminated #%s"
+#~ msgstr "#%s non terminé"
+
+#~ msgid "macro \"%s\" is not used"
+#~ msgstr "la macro « %s » n'est pas utilisée"
+
+#~ msgid "\"%s\" redefined"
+#~ msgstr "« %s » redéfini"
+
+#~ msgid "this is the location of the previous definition"
+#~ msgstr "ceci est la localisation d'une précédente définition"
+
+#~ msgid "((anonymous))"
+#~ msgstr "((anonyme))"
+
+#~ msgid "%s: warnings being treated as errors\n"
+#~ msgstr "%s : les avertissements sont traités commes des erreurs\n"
+
+#~ msgid "At top level:"
+#~ msgstr "Hors de toute fonction :"
+
+#~ msgid "In member function `%s':"
+#~ msgstr "Dans la fonction membre « %s » :"
+
+#~ msgid "In function `%s':"
+#~ msgstr "Dans la fonction « %s »:"
+
+#~ msgid ""
+#~ "Please submit a full bug report,\n"
+#~ "with preprocessed source if appropriate.\n"
+#~ "See %s for instructions.\n"
+#~ msgstr ""
+#~ "Veuillez soumettre un rapport complet d'anomalies,\n"
+#~ "avec le source pré-traité si nécessaire.\n"
+#~ "Consultez %s pour plus de détail.\n"
+
+# FRONT
+#~ msgid "In file included from %s:%d"
+#~ msgstr "Dans le fichier inclus depuis %s:%d"
+
+# I18N: This line should be indented with the previous entry
+#~ msgid ""
+#~ ",\n"
+#~ " from %s:%d"
+#~ msgstr ""
+#~ ",\n"
+#~ " depuis %s:%d"
+
+#~ msgid "internal regno botch: `%s' has regno = %d\n"
+#~ msgstr "regno interne mal fait : « %s » a regno = %d\n"
+
+#~ msgid "support for the DWARF1 debugging format is deprecated"
+#~ msgstr "le support du format de débogage DWARF1 est obsolète"
+
+#~ msgid "can't get current directory"
+#~ msgstr "ne peut repérer le répertoire courant"
+
+# FRONT
+#~ msgid "unsupported wide integer operation"
+#~ msgstr "opération sur de large entier non supportée"
+
#~ msgid "Copyright (C) 2002 Free Software Foundation, Inc.\n"
#~ msgstr "Copyright © 2002 Free Software Foundation, Inc.\n"
-#, fuzzy
+#~ msgid "mismatched braces in specs"
+#~ msgstr "accolades non concordantes dans les specs"
+
+#~ msgid "Could not open basic block file %s.\n"
+#~ msgstr "Ne pourrait pas ouvrir le fichier de blocs de base %s.\n"
+
+#~ msgid "Could not open program flow graph file %s.\n"
+#~ msgstr "Ne pourrait pas ouvrir le fichier de flux du programm %s.\n"
+
+#~ msgid "Could not open data file %s.\n"
+#~ msgstr "Ne pourrait pas ouvrir le fichier de données %s.\n"
+
+#~ msgid "Assuming that all execution counts are zero.\n"
+#~ msgstr "Suppose que tous les compteurs d'exécution sont à zéro.\n"
+
+#~ msgid "No executable code associated with file %s.\n"
+#~ msgstr "Aucun code exécutable associé avec le fichier %s.\n"
+
+#~ msgid "didn't use all bb entries of graph, function %s\n"
+#~ msgstr "N'a pas utiliser toutes les entrées bb du graphe, fonction %s\n"
+
+#~ msgid "block_num = %ld, num_blocks = %d\n"
+#~ msgstr "block_num = %ld, num_blocks = %d\n"
+
+#~ msgid "ERROR: unexpected line number %ld\n"
+#~ msgstr "ERREUR : ligne numéro %ld inattendue\n"
+
+#~ msgid "ERROR: too many basic blocks in function %s\n"
+#~ msgstr "ERREUR : trop de blocs de base dans la fonction %s\n"
+
+#~ msgid "ERROR: out of range line number in function %s\n"
+#~ msgstr "ERROR: numéro de ligne hors limite dans la fonction %s\n"
+
+#~ msgid "Could not open source file %s.\n"
+#~ msgstr "N'a pu ouvrir le fichier source %s.\n"
+
+#~ msgid "Unexpected EOF while reading source file %s.\n"
+#~ msgstr "EOF inattendue lors de la lecture du fichier source %s.\n"
+
+#~ msgid "Creating %s.\n"
+#~ msgstr "Création de %s.\n"
+
+#~ msgid "invalid string `%s' in define_cpu_unit"
+#~ msgstr "chaîne invalide « %s » dans define_cpu_unit"
+
+#~ msgid "invalid string `%s' in define_bypass"
+#~ msgstr "chaîne invalide « %s » dans define_bypass"
+
+#~ msgid "invalid first string `%s' in exclusion_set"
+#~ msgstr "première chaîne invalide « %s » dans exclusion_set"
+
+#~ msgid "invalid second string `%s' in exclusion_set"
+#~ msgstr "seconde chaîne invalide « %s » dans exclusion_set"
+
+#~ msgid "invalid second string `%s' in presence_set"
+#~ msgstr "seconde chaîne invalide « %s » dans presence_set"
+
+#~ msgid "invalid option `%s' in automata_option"
+#~ msgstr "option invalide « %s » dans automata_option"
+
+#~ msgid "invalid `%s' in reservation `%s'"
+#~ msgstr "« %s » invalide dans la réservation « %s »"
+
+#~ msgid "unit `%s' in exclusion is not declared"
+#~ msgstr "unité « %s » dans l'exclusion n'est pas déclaré"
+
+#~ msgid "unit `%s' excludes itself"
+#~ msgstr "unité « %s » s'exclue elle-même"
+
+#~ msgid "repeated declaration of automaton `%s'"
+#~ msgstr "déclaration répété de l'automate « %s »"
+
+#~ msgid "`%s' is already used as insn reservation name"
+#~ msgstr "« %s » est déjà utilisé dans le nom de réservation insn"
+
+#~ msgid "automaton `%s' is not declared"
+#~ msgstr "automate « %s » n'est pas déclaré"
+
+#~ msgid "`%s' is declared as cpu unit"
+#~ msgstr "« %s » déclaré comme unité cpu"
+
+#~ msgid "`%s' is declared as cpu reservation"
+#~ msgstr "« %s » est déclaré comme réservation cpu"
+
+#~ msgid "repeated declaration of unit `%s'"
+#~ msgstr "déclaration répété d'unité « %s »"
+
+#~ msgid "repeated declaration of reservation `%s'"
+#~ msgstr "déclaration répété de réservation « %s »"
+
+#~ msgid "there is no insn reservation `%s'"
+#~ msgstr "il n'y a pas de réservation insn « %s »"
+
+#~ msgid "the same bypass `%s - %s' is already defined"
+#~ msgstr "le même bypass « %s - %s » est déjà défini"
+
+#~ msgid "bypass `%s - %s' is already defined"
+#~ msgstr "bypass « %s - %s » est déjà défini"
+
+#~ msgid "undeclared unit or reservation `%s'"
+#~ msgstr "unité ou réservation « %s » non déclaré"
+
+#~ msgid "unit `%s' is not used"
+#~ msgstr "unité « %s » n'est utilisé"
+
+#~ msgid "reservation `%s' is not used"
+#~ msgstr "réservation « %s » n'est utilisé"
+
+#~ msgid "cycle in definition of reservation `%s'"
+#~ msgstr "cycle de définition de réservation « %s »"
+
+#~ msgid "-split has no argument."
+#~ msgstr "-split n'a pas d'argument."
+
+#~ msgid "option `-split' has not been implemented yet\n"
+#~ msgstr "l'option « -split » n'a pas été implanté encore\n"
+
+#~ msgid "Errors in DFA description"
+#~ msgstr "ERREURS dans la description DFA"
+
+#~ msgid "Error in writing DFA description file %s"
+#~ msgstr "Erreur dans l'écriture du fichier de description DFA %s"
+
+#~ msgid "No input file name."
+#~ msgstr "Pas de nom de fichier."
+
+#~ msgid ".da file corrupted"
+#~ msgstr "fichier .da corrompu"
+
+#~ msgid "Generate STABS format debug info"
+#~ msgstr "Générer des infos de mise au point de format STABS"
+
+#~ msgid "Generate extended STABS format debug info"
+#~ msgstr "Générer des infos de mise au point de format STABS étendu"
+
+#~ msgid "Generate DWARF-1 format debug info"
+#~ msgstr "Générer les informations de mise au point du format DWARF-1"
+
+#~ msgid "Generate extended DWARF-1 format debug info"
+#~ msgstr "Générer les extensions des informations de mise au point du format DWARF-1"
+
+#~ msgid "Generate DWARF-2 debug info"
+#~ msgstr "Générer les informations de mise au point DWARF-2"
+
+#~ msgid "Generate XCOFF format debug info"
+#~ msgstr "Générer les informations de mise au point du format XCOFF"
+
+#~ msgid "Generate extended XCOFF format debug info"
+#~ msgstr "Générer les extensions de mise au point du format XCOFF"
+
+#~ msgid "Generate COFF format debug info"
+#~ msgstr "Générer les informations de mise au point du format COFF"
+
+#~ msgid "Generate VMS format debug info"
+#~ msgstr "Générer des infos de mise au point de format VMS"
+
+#~ msgid "Consider all mem refs through pointers as volatile"
+#~ msgstr "Considérer toutes les référence en mémoire comme faite par des pointeurs volatiles"
+
+#~ msgid "Consider all mem refs to global data to be volatile"
+#~ msgstr "Considérer toutes les références mémoire à des données globales comme volatiles"
+
+#~ msgid "Consider all mem refs to static data to be volatile"
+#~ msgstr "Considérer toutes les références mémoire à des données statiques comme volatiles"
+
+#~ msgid "Integrate simple functions into their callers"
+#~ msgstr "Intégrer les fonctions simples à l'intérieur des appelants"
+
+#~ msgid "Output GNU ld formatted global initializers"
+#~ msgstr "Produire des initialisations de globlales au format GNU ld"
+
+#~ msgid "Enable SSA optimizations"
+#~ msgstr "Autoriser les optimisations SSA"
+
+#~ msgid "Enable SSA conditional constant propagation"
+#~ msgstr "Autoriser la propagation SSA de constante conditionnelle"
+
+#~ msgid "Enable aggressive SSA dead code elimination"
+#~ msgstr "Autoriser l'élimination agressive SSA du code mort"
+
+#~ msgid "Compile just for ISO C90"
+#~ msgstr "Compiler seulement pour ISO C90"
+
+#~ msgid "Determine language standard"
+#~ msgstr "Déterminer le standard du langage"
+
+#~ msgid "Make bit-fields by unsigned by default"
+#~ msgstr "Rendre les champs de bits non signés par défaut"
+
+#~ msgid "Allow different types as args of ? operator"
+#~ msgstr "Permettre des types différents pour les arguments de l'opérateur ?"
+
+#~ msgid "Allow the use of $ inside identifiers"
+#~ msgstr "Permettre l'utilisation de $ à l'intérieur d'identificateurs"
+
+#~ msgid "Use the smallest fitting integer to hold enums"
+#~ msgstr "Utiliser le plus petit entier pour contenir l'énumération (enums)"
+
+#~ msgid "Enable most warning messages"
+#~ msgstr "Autoriser la plupart des messages d'avertissement"
+
+#~ msgid "Warn if nested comments are detected"
+#~ msgstr "Avertir si des commentaires imbriqués sont détectés"
+
+#~ msgid "Don't warn about too many arguments to format functions"
+#~ msgstr "Ne pas avertir à propos d'un surplus d'arguments pour des fonctions de format"
+
+#~ msgid "Warn about non-string-literal format strings"
+#~ msgstr "Avertir à propos des chaînes de format qui ne sont pas des chaînes"
+
+#~ msgid "Warn about constructs whose meanings change in ISO C"
+#~ msgstr "Avertir à propos de construits dont le sens change en C ISO"
+
+#~ msgid "Warn when trigraphs are encountered"
+#~ msgstr "Avertir lorsque des trigraphes sont rencontrés"
+
+#~ msgid "Mark strings as 'const char *'"
+#~ msgstr "Marque les chaînes comme étant 'const char *'"
+
+#~ msgid " -pedantic-errors Like -pedantic except that errors are produced\n"
+#~ msgstr " -pedantic-errors identique à -pedantic sauf que les erreurs sont produites\n"
+
+#~ msgid " -w Suppress warnings\n"
+#~ msgstr " -w supprimer les avertissements\n"
+
+#~ msgid " -W Enable extra warnings\n"
+#~ msgstr " -W autoriser les avertissements additionnels\n"
+
+#~ msgid " -Wunused Enable unused warnings\n"
+#~ msgstr " -Wunused autoriser les avertissements pour signaler les non utilisés\n"
+
+#~ msgid " -p Enable function profiling\n"
+#~ msgstr " -p autoriser le profilage des fonctions\n"
+
+#~ msgid " -version Display the compiler's version\n"
+#~ msgstr " -version afficher la version du compilateur\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Language specific options:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Options spécifiques au langage:\n"
+
+#~ msgid " %-23.23s [undocumented]\n"
+#~ msgstr " %-23.23s [non documenté]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There are undocumented %s specific options as well.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Il y a des options spécifiques %s qui ne sont pas documentés aussi.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ " Options for %s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ " Options pour %s:\n"
+
+#~ msgid "unrecognized option `%s'"
+#~ msgstr "option « %s » non reconnue"
+
+#~ msgid "-Wid-clash-LEN is no longer supported"
+#~ msgstr "-Wid-clash-LEN n'est plus supportée"
+
+#~ msgid "use -gdwarf -g%d for DWARF v1, level %d"
+#~ msgstr "utiliser -gdwarf -g%d pour DWARF v1, niveau %d"
+
+#~ msgid "use -gdwarf-2 for DWARF v2"
+#~ msgstr "utiliser -gdwarf-2 pour DWARF v2"
+
+#~ msgid "ignoring option `%s' due to invalid debug level specification"
+#~ msgstr "option « %s » ignorée en raison de la spécification du niveau de mise au poitn invalide"
+
+#~ msgid "`%s': unknown or unsupported -g option"
+#~ msgstr "« %s »: inconnu ou non supporté option -g"
+
+#~ msgid "`%s' ignored, conflicts with `-g%s'"
+#~ msgstr "« %s » ignoré, en conflit avec «-g%s»"
+
+#~ msgid "-param option missing argument"
+#~ msgstr "argument manquant pour l'option -param"
+
+#~ msgid "invalid --param option: %s"
+#~ msgstr "option invalide --param: %s"
+
+#~ msgid "(it is valid for %s but not the selected language)"
+#~ msgstr "(c'est valide pour %s mais pas pour le langage séclectionné)"
+
+#~ msgid "#`%s' not supported by %s#"
+#~ msgstr "« %s » n'est pas supporté par %s#"
+
+#~ msgid "The maximuem number of instructions by repeated inlining before gcc starts to throttle inlining"
+#~ msgstr "Le nombre maximum d'instructions par type inline répété avant l'exécution de gcc au « throttle » enligne"
+
+#~ msgid "The number of instructions in a single functions still eligible to inlining after a lot recursive inlining"
+#~ msgstr "Le nombre d'instructions dans une fonction simple encore éligible au type enligne après plusieurs inline récursifs"
+
+#~ msgid "Use Mingw32 interface"
+#~ msgstr "Utiliser l'interface Mingw32"
+
+#~ msgid "Use Cygwin interface"
+#~ msgstr "Utiliser l'interface Cygwin"
+
+#~ msgid "Use bare Windows interface"
+#~ msgstr "Utiliser l'interface brute Windows"
+
#~ msgid "Only initialized variables can be placed into program memory area."
#~ msgstr "seules les variables initialisées peuvent être placées dans la zone mémoire du programme"
+#~ msgid "const objects cannot go in .sdata/.sbss"
+#~ msgstr "constantes objets ne peuvent aller dans .sdata/.sbss"
+
+#~ msgid "Generate code for a Sun FPA"
+#~ msgstr "Générer le code pour un Sun FPA"
+
+#~ msgid "Do not generate code for a Sun FPA"
+#~ msgstr "Ne pas générer le code pour un Sun FPA"
+
+#~ msgid "Generate code for a Sun Sky board"
+#~ msgstr "Générer le code pour un Sun Sky board"
+
+#~ msgid "Do not use Sky linkage convention"
+#~ msgstr "Ne pas utiliser la convention d'édition de lien Sky"
+
+#~ msgid "Generate code for a 68881"
+#~ msgstr "Générer du code pour un 68881"
+
+#~ msgid "internal gcc monitor: short-branch(%x)"
+#~ msgstr "moniteur interne gcc: branchement court(%x)"
+
+#~ msgid "internal gcc error: Can't express symbolic location"
+#~ msgstr "erreur interne gcc: ne peut exprimer la localisation symbolique"
+
+#~ msgid "argument #%d is a structure"
+#~ msgstr "argument #%d est une structure"
+
+#~ msgid "%%R not followed by %%B/C/D/E"
+#~ msgstr "%%R n'est pas suivi de %%B/C/D/E"
+
+#~ msgid "invalid %%Q value"
+#~ msgstr "valeur %%Q invalide"
+
+#~ msgid "invalid %%o value"
+#~ msgstr "valeur %%o invalide"
+
+#~ msgid "invalid %%s/S value"
+#~ msgstr "valeur %%s/S invalide"
+
+#~ msgid "invalid %%B value"
+#~ msgstr "valeur %%B invalide"
+
+#~ msgid "`%%d' operand isn't a register"
+#~ msgstr "l'opérande «%%d» n'est pas un registre"
+
+#~ msgid "operand is r0"
+#~ msgstr "opérande est R0"
+
+#~ msgid "operand is const_double"
+#~ msgstr "opérande est de type const_double"
+
+#~ msgid "-mtrap-large-shift and -mhandle-large-shift are incompatible"
+#~ msgstr "-mtrap-large-shift et -mhandle-large-shift sont incompatibles"
+
+#~ msgid "invalid option `-mshort-data-%s'"
+#~ msgstr "option invalide «-mshort-data-%s'"
+
+#~ msgid "-mshort-data-%s is too large "
+#~ msgstr "-mshort-data-%s est trop grande "
+
+#~ msgid "-mshort-data-%s and PIC are incompatible"
+#~ msgstr "-mshort-data-%s et PIC sont incompatibles"
+
+#~ msgid "bad value (%s) for -mips switch"
+#~ msgstr "valeur erronée (%s) pour l'option -mips"
+
+#~ msgid "invalid option `entry%s'"
+#~ msgstr "option invalide «entry%s'"
+
+#~ msgid "-mentry is only meaningful with -mips-16"
+#~ msgstr "-mentry n'a de sens qu'avec -mips-16"
+
+#~ msgid "MIPS ECOFF format does not allow changing filenames within functions with #line"
+#~ msgstr "format MIPS ECOFF ne permet pas de changer le nom des fichiers à l'intérieur des fonction avec #line"
+
+#~ msgid "fp_offset (%ld) or end_offset (%ld) is less than zero"
+#~ msgstr "fp_offset (%ld) ou end_offset (%ld) est plus petit que zéro"
+
+#~ msgid "Trap on integer divide overflow"
+#~ msgstr "Intercepter les débordements lors de divisions avec des entiers"
+
+#~ msgid "Don't trap on integer divide overflow"
+#~ msgstr "Ne pas intercepter les débordement lors de divisions avec des entiers"
+
+#~ msgid "Use mips16 entry/exit psuedo ops"
+#~ msgstr "Utiliser les pseudo-op mips16 d'entrée/sortie"
+
+#~ msgid "Don't use MIPS16 instructions"
+#~ msgstr "Ne pas utiliser les instructions MIPS16"
+
+#~ msgid "invalid %%z value"
+#~ msgstr "valeur %%z invalide"
+
+#~ msgid "invalid %%Z value"
+#~ msgstr "valeur %%Z invalide"
+
+#~ msgid "invalid %%j value"
+#~ msgstr "valeur %%j invalide"
+
+#~ msgid "can't have varargs with -mfp-arg-in-fp-regs"
+#~ msgstr "ne peut avoir varargs avec -mfp-arg-in-fp-regs"
+
+#~ msgid "unknown -mvrsave= option specified: '%s'"
+#~ msgstr "option -mvrsave inconnue spécifiés: « %s »"
+
+#~ msgid "64 bit mode"
+#~ msgstr "mode 64 bits"
+
+#~ msgid "31 bit mode"
+#~ msgstr "mode 31 bits"
+
+#~ msgid "Use the Xtensa code density option"
+#~ msgstr "Utiliser l'option de densité du code Xtensa"
+
+#~ msgid "Do not use the Xtensa code density option"
+#~ msgstr "Ne pas utiliser l'option de densité du code Xtensa"
+
+#~ msgid "Use the Xtensa MAC16 option"
+#~ msgstr "Utiliser l'option Xtensa MAC16"
+
+#~ msgid "Do not use the Xtensa MAC16 option"
+#~ msgstr "Ne pas utiliser l'option Xtensa MAC16"
+
+#~ msgid "Use the Xtensa MUL16 option"
+#~ msgstr "Utiliser l'option Xtensa MUL16"
+
+#~ msgid "Do not use the Xtensa MUL16 option"
+#~ msgstr "Ne pas utiliser l'option Xtensa MUL16"
+
+#~ msgid "Use the Xtensa MUL32 option"
+#~ msgstr "Utiliser l'option Xtensa MUL16"
+
+#~ msgid "Do not use the Xtensa MUL32 option"
+#~ msgstr "Ne pas utiliser l'option Xtensa MUL32"
+
+#~ msgid "Use the Xtensa NSA option"
+#~ msgstr "Utiliser l'option Xtensa NSA"
+
+#~ msgid "Do not use the Xtensa NSA option"
+#~ msgstr "Ne pas utiliser l'option Xtensa NSA"
+
+#~ msgid "Use the Xtensa MIN/MAX option"
+#~ msgstr "Utiliser l'option Xtensa MIN/MAX"
+
+#~ msgid "Do not use the Xtensa MIN/MAX option"
+#~ msgstr "Ne pas utiliser l'option Xtensa MIN/MAX"
+
+#~ msgid "Use the Xtensa SEXT option"
+#~ msgstr "Utiliser l'option Xtensa SEXT"
+
+#~ msgid "Do not use the Xtensa SEXT option"
+#~ msgstr "Ne pas utiliser l'option Xtensa SEXT"
+
+#~ msgid "Use the Xtensa boolean register option"
+#~ msgstr "Utiliser l'option des registres booléens Xtensa"
+
+#~ msgid "Do not use the Xtensa boolean register option"
+#~ msgstr "Ne pas utiliser l'option des registres booléens Xtensa"
+
+#~ msgid "Use the Xtensa floating-point unit"
+#~ msgstr "Utiliser l'unité matérielle pour virgule flottante Xtensa"
+
+#~ msgid "Do not use the Xtensa floating-point unit"
+#~ msgstr "Ne pas utiliser l'unité matérielle pour virgule flottante Xtensa"
+
+#~ msgid "Serialize volatile memory references with MEMW instructions"
+#~ msgstr "Sérialiser les références à la mémoire volatile avec des instructions MEMW"
+
+#~ msgid "Do not serialize volatile memory references with MEMW instructions"
+#~ msgstr "Ne pas sérialiser les références à la mémoire volatile avec des instructions MEMW"
+
+#~ msgid "type of `%E' does not match destructor type `%T' (type was `%T')"
+#~ msgstr "type de « %E » ne concorde pas avec le type du destructeur « %T » (type était « %T »)"
+
+#~ msgid "`%D' is a namespace"
+#~ msgstr "« %D » est un nom d'espace"
+
+#~ msgid "base object `%E' of scoped method call is of non-aggregate type `%T'"
+#~ msgstr "objet de base « %E » de la portée d'appel de la méthode n'est pas de type aggrégat « %T »"
+
+#~ msgid "destructors take no parameters"
+#~ msgstr "destructeurs ne prend aucun paramètre"
+
+#~ msgid "destructor name `~%T' does not match type `%T' of expression"
+#~ msgstr "nom du destructeur «~%T» ne concorde pas avec le type « %T » de l'expression"
+
+#~ msgid "%s %+#D%s"
+#~ msgstr "%s %+#D%s"
+
#~ msgid "%s for `%T ? %T : %T' operator"
#~ msgstr "%s pour «%T ? %T : %T» comme opérateur"
@@ -21194,11 +22353,425 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "%s for `%s %T' operator"
#~ msgstr "%s pour l'opérateur «%s [%T]»"
+#~ msgid "`%D' must be declared before use"
+#~ msgstr "« %D » doit être déclaré avant son usage"
+
+#~ msgid " initializing argument %P of `%D' from result of `%D'"
+#~ msgstr " initialisation de l'argument %P de « %D » à partir du résultat « %D »"
+
+#~ msgid " initializing temporary from result of `%D'"
+#~ msgstr " initialisation temporaire à partir du résultat « %D »"
+
+#~ msgid "cannot receive objects of non-POD type `%#T' through `...'"
+#~ msgstr "ne peut recevoir d'objets de type non POD « %#T » through « ... »"
+
+#~ msgid "field `%D' invalidly declared offset type"
+#~ msgstr "champ « %D » incorrectement validé comme type de décalage"
+
+#~ msgid "lookup of `%D' finds `%#D'"
+#~ msgstr "recherche de « %D » a repéré « %#D »"
+
+#~ msgid " instead of `%D' from dependent base class"
+#~ msgstr " au lieu de « %D » à partir d'un classe de base dépendante"
+
+#~ msgid "lookup of `%D' in the scope of `%#T' (`%#D') does not match lookup in the current scope (`%#D')"
+#~ msgstr "recherche de « %D » dans la portée de « %#T » (« %#D ») ne concorde pas avec la recherche dans la portée courante (« %#D »)"
+
+#~ msgid "invalid declarator"
+#~ msgstr "déclarateur invalide"
+
+#~ msgid "`%T' is implicitly a typename"
+#~ msgstr "« %T » est implicitement un typename"
+
+#~ msgid "parameter `%D' invalidly declared offset type"
+#~ msgstr "paramètre « %D » incorrectement validé comme type de décalage"
+
+#~ msgid "`%s %T' declares a new type at namespace scope"
+#~ msgstr "« %s %T » déclare un nouveau type dans l'étendue de l'espace de noms"
+
+#~ msgid " names from dependent base classes are not visible to unqualified name lookup - to refer to the inherited type, say `%s %T::%T'"
+#~ msgstr " noms des classes de base dépendantes ne sont pas visibles à la recherche de nom non qualifié - pour référer à type par héritage, disons «%s %T::%T»"
+
+#~ msgid "base class `%T' has incomplete type"
+#~ msgstr "classe de base « %T » a un type incomplet"
+
+#~ msgid "semicolon missing after declaration of `%#T'"
+#~ msgstr "point-virgule manquant après la déclaration %#T"
+
+#~ msgid "template `%#D' instantiated in file without #pragma interface"
+#~ msgstr "canevas « %#D » instancié dans le fichier sans interface #pragma"
+
+#~ msgid "template `%#D' defined in file without #pragma interface"
+#~ msgstr "canevas « %#D » défini dans le fichier sans interface #pragma"
+
+#~ msgid "parser may be lost: is there a '{' missing somewhere?"
+#~ msgstr "analyseur syntaxique est perdu: y-a-t-il un «{» manquant quelque part?"
+
+#~ msgid "invalid data member initialization"
+#~ msgstr "initialisation de données membres invalide"
+
+#~ msgid "(use `=' to initialize static data members)"
+#~ msgstr "(utiliser «=» pour initialiser les données de membres)"
+
+#~ msgid "too many initialization functions required"
+#~ msgstr "trop d'initialisations de fonctions requises"
+
+#~ msgid "`%D' is not a namespace"
+#~ msgstr "« %D » n'est pas un espace de noms"
+
+#~ msgid "a using-declaration cannot specify a template-id. Try `using %T::%D'"
+#~ msgstr "l'utilisation de déclaration ne peut spécifier template-id. Essayer «using %T::%D'"
+
+#~ msgid "`%T' does not have a class or union named `%D'"
+#~ msgstr "« %T » n'a pas de classe ou d'union nommé « %D »"
+
+#~ msgid "`%T' is not a class or union type"
+#~ msgstr "« %T » n'est pas une classe ou un type d'union"
+
+#~ msgid "`%s' not supported by %s"
+#~ msgstr "« %s » n'est pas supporté par %s"
+
+#~ msgid "(static %s for %s)"
+#~ msgstr "(static %s pour %s)"
+
+#~ msgid "%s: In instantiation of `%s':\n"
+#~ msgstr "%s: dans l'instanciation de « %s »:\n"
+
+#~ msgid "%s:%d: instantiated from `%s'\n"
+#~ msgstr "%s:%d: instancié à partir de « %s »\n"
+
+#~ msgid "%s:%d: instantiated from here\n"
+#~ msgstr "%s:%d: instancié à partir d'ici\n"
+
+#~ msgid "previous friend declaration of `%D'"
+#~ msgstr "déclaration amie précédente de « %D »"
+
+#~ msgid "cannot call destructor `%T::~%T' without object"
+#~ msgstr "ne peut appeler le destructeur «%T::~%T» sans objet"
+
+#~ msgid "invalid use of member `%D'"
+#~ msgstr "utilisation invalide du membre « %D »"
+
+#~ msgid "no method `%T::%D'"
+#~ msgstr "pas de méthode «%T::%D»"
+
+#~ msgid "object missing in use of pointer-to-member construct"
+#~ msgstr "objet manquant dans l'utilisation du construit pointeur-à-membre"
+
+#~ msgid "member `%D' is non-static but referenced as a static member"
+#~ msgstr "membre « %D » est non statique mais référencé comme membre statique"
+
+#~ msgid "object missing in `%E'"
+#~ msgstr "objet manquant dans « %E »"
+
+#~ msgid "initializer list being treated as compound expression"
+#~ msgstr "liste d'initaliseurs a été traité comme une expression composée"
+
+#~ msgid "cannot declare references to references"
+#~ msgstr "ne peut décalrer des références vers des références"
+
+#~ msgid "cannot declare pointers to references"
+#~ msgstr "ne peut déclarer des pointeurs vers des références"
+
+#~ msgid "type name expected before `&'"
+#~ msgstr "nom de type attendu avant «&»"
+
+#~ msgid "semicolon missing after %s declaration"
+#~ msgstr "«;» manquant après la déclaration de %s"
+
+#~ msgid "semicolon missing after declaration of `%T'"
+#~ msgstr "«;» manquant après la déclaration « %T »"
+
+#~ msgid "`::%D' undeclared (first use here)"
+#~ msgstr "«::%D» non déclaré (première utilisation ici)"
+
#~ msgid "real-valued template parameters when cross-compiling"
-#~ msgstr "patron de paramètre en valeur réelle lors de la compilation croisée"
+#~ msgstr "canevas de paramètre en valeur réelle lors de la compilation croisée"
+
+#~ msgid "use of linkage spec `%D' is different from previous spec `%D'"
+#~ msgstr "utilisation de spéc de liaisons « %D » est différente de la spec précédente « %D »"
+
+#~ msgid "no base or member initializers given following ':'"
+#~ msgstr "pas d'initialiseur de base ou membre donné après «:»"
+
+#~ msgid "use of template qualifier outside template"
+#~ msgstr "utilisation d'un qualificateur de canevas en dehors d'un canevas"
+
+#~ msgid "ISO C++ forbids an empty condition for `%s'"
+#~ msgstr "ISO C++ interdit une condition vide pour « %s »"
+
+#~ msgid "definition of class `%T' in condition"
+#~ msgstr "définition de la classe « %T » dans la condition"
+
+#~ msgid "definition of enum `%T' in condition"
+#~ msgstr "définition de l'aggrégat « %T » dans la condition"
+
+#~ msgid "definition of array `%#D' in condition"
+#~ msgstr "définition du tableau « %#D » dans la condition"
+
+#~ msgid "old style placement syntax, use () instead"
+#~ msgstr "ancien style de syntaxe de positionnement, utiliser () à la place"
+
+#~ msgid "`%T' is not a valid expression"
+#~ msgstr "« %T » n'est pas une expression valide"
+
+#~ msgid "initialization of new expression with `='"
+#~ msgstr "initialisation de la nouvelle expression avec « = »"
+
+#~ msgid "sigof type specifier"
+#~ msgstr "spécificateur du type sigof"
+
+#~ msgid "`sigof' applied to non-aggregate expression"
+#~ msgstr "« sigof » appliqué à une expression de non aggrégats"
+
+#~ msgid "`sigof' applied to non-aggregate type"
+#~ msgstr "« sigof » appliqué à un type non aggrégat"
+
+#~ msgid "storage class specifier `%s' not allowed after struct or class"
+#~ msgstr "spécificateur de classe de stockages « %s » n'est pas permis après struct ou class"
+
+#~ msgid "type specifier `%s' not allowed after struct or class"
+#~ msgstr "spécificateur de type « %s » n'est pas permis après struct ou class"
+
+#~ msgid "type qualifier `%s' not allowed after struct or class"
+#~ msgstr "qualificateur de type « %s » n'est pas permis après struct ou class"
+
+#~ msgid "no body nor ';' separates two class, struct or union declarations"
+#~ msgstr "pas de corps ni de «;» séparant les deux déclarations de classes, struct ou union"
+
+#~ msgid "no bases given following `:'"
+#~ msgstr "pas de base donnée après «:»"
+
+#~ msgid "multiple access specifiers"
+#~ msgstr "spécificateurs d'accès multiples"
+
+#~ msgid "multiple `virtual' specifiers"
+#~ msgstr "spécificateurs « virtual » multiples"
+
+#~ msgid "missing ';' before right brace"
+#~ msgstr "«;» manquant avant l'accolade de droite"
+
+#~ msgid "ISO C++ forbids array dimensions with parenthesized type in new"
+#~ msgstr "ISO C++ interdit l'utilisation de parenthèses autour du type pour les dimensions de tableaux avec new"
+
+#~ msgid "`%T' is not a class or namespace"
+#~ msgstr "« %T » n'est pas une classe ou un espace de noms"
+
+#~ msgid "ISO C++ forbids label declarations"
+#~ msgstr "ISO C++ interdit la déclaration d'étiquette"
+
+#~ msgid "label must be followed by statement"
+#~ msgstr "l'étiquette doit être suivie d'une déclaration"
+
+#~ msgid "must have at least one catch per try block"
+#~ msgstr "doit avoir au moins un intercepteur par bloc d'essais"
+
+#~ msgid "ISO C++ forbids compound statements inside for initializations"
+#~ msgstr "ISO C++ interdit les déclarations composées à l'intérieur des initialisations"
+
+#~ msgid "possibly missing ')'"
+#~ msgstr "«)» possiblement manquante"
+
+#~ msgid "type specifier omitted for parameter"
+#~ msgstr "spécificateur de type omis pour le paramètre"
+
+#~ msgid "`%E' is not a type, use `typename %E' to make it one"
+#~ msgstr "« %E» n'est pas un type, utiliser «typename %E » pour en faire un"
+
+#~ msgid "no type `%D' in `%T'"
+#~ msgstr "pas de type « %D » dans « %T »"
+
+#~ msgid "type specifier omitted for parameter `%E'"
+#~ msgstr "spécificateur de type omis pour le paramètre « %E »"
+
+#~ msgid "type `%T' composed from a local class is not a valid template-argument"
+#~ msgstr "type « %T » composé à partir d'une classe locale n'est pas un canevas d'argument valide"
+
+#~ msgid "adjusting pointers for covariant returns"
+#~ msgstr "ajuster les pointeurs pour des retours co-variants"
+
+#~ msgid " overriding `%#D' (must be pointer or reference to class)"
+#~ msgstr " écrasant « %#D » (doit être un pointeur ou une référence vers un classe)"
+
+#~ msgid " overriding `%#D' (must use pointer or reference)"
+#~ msgstr " écrasant « %#D » (doit utiliser un pointeur ou un référence)"
+
+#~ msgid "return identifier `%D' already in place"
+#~ msgstr "identificateur retourné « %D » est déjà en place"
+
+#~ msgid "can't redefine default return value for constructors"
+#~ msgstr "ne peut redéfinir la valeur retournée par défaut pour les constructeurs"
+
+#~ msgid "calling type `%T' like a method"
+#~ msgstr "appel du type « %T » comme une méthode"
+
+#~ msgid "destructor specifier `%T::~%T()' must have matching names"
+#~ msgstr "spécificateur du destructeur «%T::~%T()» doit avoir des noms concordants"
+
+#~ msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
+#~ msgstr "nom d'identificateur « %s » entre en conflit avec la stratégie interne de dénomination de GNU C++"
+
+#~ msgid "parse error at end of saved function text"
+#~ msgstr "erreur d'analyse syntaxique à la fin de la sauvegarde de la fonction texte"
+
+#~ msgid "%Hend of file read inside definition"
+#~ msgstr "%H fin de fichier lors de la lecture à l'intérieur d'une définition"
+
+#~ msgid "parse error in method specification"
+#~ msgstr "erreur d'analyse syntaxique dans la spécification de fonction"
+
+#~ msgid "function body for constructor missing"
+#~ msgstr "corps de fonction pour le constructeur est manquante"
+
+#~ msgid "circular dependency in default args of `%#D'"
+#~ msgstr "dépendance circulaire dans les arguments par défaut de « %#D »"
+
+#~ msgid "invalid type `%T' for default argument to `%T'"
+#~ msgstr "type invalide « %T » pour l'argument par défaut « %T »"
+
+#~ msgid "%s before `%c'"
+#~ msgstr "%s avant « %c »"
+
+#~ msgid "%s before `\\%o'"
+#~ msgstr "%s avant «\\%o»"
+
+#~ msgid "%s before `%s' token"
+#~ msgstr "%s avant l'élément lexical « %s »"
+
+#~ msgid "ISO C++ prohibits conversion from `%#T' to `(...)'"
+#~ msgstr "ISO C++ interdit la conversion de « %#T » en « (...) »"
+
+#~ msgid "invalid application of `%s' to non-static member"
+#~ msgstr "utilisation invalide de « %s » sur un membre non statique"
+
+#~ msgid "sizeof applied to a bit-field"
+#~ msgstr "sizeof appliqué sur un champ de bits"
+
+#~ msgid "destructor specifier `%T::~%T' must have matching names"
+#~ msgstr "spécificateur du destructeur «%T::~%T» doit des noms concordants"
+
+#~ msgid "parameter type of called function is incomplete"
+#~ msgstr "type de paramètre de la fonction appelée est incomplet"
+
+#~ msgid "ISO C++ forbids using pointer to a member in subtraction"
+#~ msgstr "ISO C++ interdit l'utilisation d'un pointeur vers un membre dans une soustraction"
+
+#~ msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
+#~ msgstr "reinterpret_cast de « %T » vers « %T » fait un transtypage écartant la constante (ou volatile)"
+
+#~ msgid "return-statement with no value, in function declared with a non-void return type"
+#~ msgstr "déclaration d'un retour sans valeur, dans la fonction déclarée avec un type retourné non void"
+
+#~ msgid "return-statement with a value, in function declared with a void return type"
+#~ msgstr "déclaration d'un retour sans valeur, dans la fonction déclarée avec un type retourné void"
+
+#~ msgid "comma expression used to initialize return value"
+#~ msgstr "expression virgule utilsée pour initialiser la valeur de retour"
#~ msgid "ISO C++ forbids non-constant aggregate initializer expressions"
-#~ msgstr "le C++ ISO interdit les expressions d'initialiseur d'aggrégat de non constante"
+#~ msgstr "ISO C++ interdit les expressions d'initialiseur d'aggrégat de non constante"
+
+#~ msgid "`%T' fails to be a typedef or built-in type"
+#~ msgstr "« %T » a échoué à devenir un typedef ou un type construit interne"
+
+#~ msgid "ISO C++ forbids defining types within %s"
+#~ msgstr "ISO C++ interdit la définition de types à l'intérieur de %s"
+
+#~ msgid "Only emit explicit template instatiations"
+#~ msgstr "Produire seulement des instanciations explicites du canevas"
+
+#~ msgid "Recognize and/bitand/bitor/compl/not/or/xor"
+#~ msgstr "Reconnaître and/bitand/bitor/compl/not/or/xor"
+
+#~ msgid "Warn about inconsistent return types"
+#~ msgstr "Avertir à propos des types retournés inconsistants"
+
+#~ msgid "Warn when a function is declared extern, then inline"
+#~ msgstr "Avertir lorsqu'un fonction est déclarée extern, puis inline"
+
+#~ msgid "Don't announce deprecation of compiler features"
+#~ msgstr "Ne pas annoncer la dépréciation des options du compilateur"
+
+#~ msgid "directory name must immediately follow -I"
+#~ msgstr "nom du répertoire doit suivre immédiatement -I"
+
+#~ msgid "ignoring pragma: %s"
+#~ msgstr "pragma: %s ignoré"
+
+#~ msgid "Program does not use Unix-f77 dialectal features"
+#~ msgstr "Programme n'utilise pas les options du dialecte Unix f77"
+
+#~ msgid "Disable the appending of underscores to externals"
+#~ msgstr "Désactiver l'ajout de caractères de soulignement aux externes"
+
+#~ msgid "Fortran-specific form of -fbounds-check"
+#~ msgstr "Forme spécifique Fortran de -fbounds-check"
+
+#~ msgid "Add a directory for INCLUDE searching"
+#~ msgstr "Ajouter un répertoire pour la recherche par INCLUDE"
+
+#~ msgid "Set the maximum line length"
+#~ msgstr "Initialiser la longueur maximale des lignes"
+
+#~ msgid "Disable automatic array bounds checking"
+#~ msgstr "Vérification automatique désactivée des bornes de tableaux"
+
+#~ msgid "Set class path"
+#~ msgstr "Initialiser le chemin des classes"
+
+#~ msgid "Choose class whose main method should be used"
+#~ msgstr "Choisir la classe dont la méthode principale devrait être utilisée"
+
+#~ msgid "Add directory to class path"
+#~ msgstr "Ajouter un répertoire au chemin des classes"
+
+#~ msgid "Directory where class files should be written"
+#~ msgstr "Répertoire où les fichiers de classe devraient être écrits"
+
+#~ msgid "`%s' cannot be statically allocated"
+#~ msgstr "« %s » ne peut être statiquement alloué"
+
+#~ msgid "multiple declarations for method `%s'"
+#~ msgstr "multiples déclarations pour la méthode « %s »"
+
+#~ msgid "cannot find class (factory) method"
+#~ msgstr "ne peut repérer de méthode de classe (manufacturé)"
+
+#~ msgid "return type for `%s' defaults to id"
+#~ msgstr "type retourné pour « %s » par défaut est id"
+
+#~ msgid "return type defaults to id"
+#~ msgstr "type retourné par défaut est id"
+
+#~ msgid "cannot find method"
+#~ msgstr "ne peut repérer la méthode"
+
+#~ msgid "duplicate definition of class method `%s'"
+#~ msgstr "duplication de définition de la méthode de la classe « %s »"
+
+#~ msgid "duplicate definition of instance method `%s'"
+#~ msgstr "duplication de définition de la méthode d'instanciation « %s »"
+
+#~ msgid "duplicate declaration of instance method `%s'"
+#~ msgstr "duplication de déclaration de la méthode d'instanciation « %s »"
+
+#~ msgid "potential selector conflict for method `%s'"
+#~ msgstr "conflit potentiel sur le sélecteur pour la méthode « %s »"
+
+#~ msgid "Specify the name of the class for constant strings"
+#~ msgstr "Spécifier le nom de la classe pour les constantes chaînes"
+
+#~ msgid "compilation of header file requested"
+#~ msgstr "fichier d'en-tête requis pour la compilation"
+
+#~ msgid "choose either big or little endian, not both"
+#~ msgstr "choisir un système à octets de poids fort ou faible mais pas les deux"
+
+#~ msgid "choose either m340 or m210 not both"
+#~ msgstr "choisir m340 ou m210 mais pas les deux"
+
+#~ msgid "-c or -S required for Ada"
+#~ msgstr "-c ou -S requis pour Ada"
#~ msgid "-static not valid with -mcoff"
#~ msgstr "-static n'est pas valide avec -mcoff"
@@ -21314,9 +22887,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "sizeof applied to a void type"
#~ msgstr "sizeof appliqué sur un type void"
-#~ msgid "sizeof applied to an incomplete type"
-#~ msgstr "sizeof appliqué sur un type incomplet"
-
#~ msgid "execvp %s"
#~ msgstr "execvp %s"
@@ -21382,9 +22952,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "multi-line string literals are deprecated"
#~ msgstr "chaîne de mots multi-lignes sont dépréciés"
-#~ msgid "\"%s\" cannot be used as a macro name"
-#~ msgstr "« %s » ne peut être utilisé comme nom de macro"
-
#~ msgid "directives may not be used inside a macro argument"
#~ msgstr "directives ne peuvent être utilisées à l'intérieur d'un argument macro"
@@ -21394,15 +22961,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "%s:%d: warning: "
#~ msgstr "%s:%d: AVERTISSEMENT: "
-#~ msgid "%s: warning: "
-#~ msgstr "%s: AVERTISSEMENT: "
-
-#~ msgid "sorry, not implemented: "
-#~ msgstr "désolé, pas implanté: "
-
-#~ msgid "Internal compiler error in %s, at %s:%d"
-#~ msgstr "Erreur internal du compilateur dans %s, à %s:%d"
-
#~ msgid "argument to `-b' is missing"
#~ msgstr "argument de «-b» est manquant"
@@ -21448,9 +23006,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "conversion from NaN to int"
#~ msgstr "conversion de NaN en int"
-#~ msgid "conversion from NaN to unsigned int"
-#~ msgstr "conversion de NaN en un int non signé"
-
#~ msgid "floating point overflow"
#~ msgstr "débordement de virgule flottante"
@@ -21466,9 +23021,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "%s: function singularity"
#~ msgstr "%s: singularité de fonction"
-#~ msgid "%s: overflow range error"
-#~ msgstr "%s: erreur de débordement de bornes"
-
#~ msgid "%s: underflow range error"
#~ msgstr "%s: erreur de sous débordement de bornes"
@@ -21523,9 +23075,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "octal character constant does not fit in a byte"
#~ msgstr "constante de caractères en octal ne peut être insérée dans un octet"
-#~ msgid "hex character constant does not fit in a byte"
-#~ msgstr "constante de caractères en hexadémical ne peut être insérée dans un octet"
-
#~ msgid "empty #if expression"
#~ msgstr "expression #if vide"
@@ -21679,9 +23228,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "Use VAX-C alignment"
#~ msgstr "Utiliser l'alignement VAX-C"
-#~ msgid "invalid %%V value"
-#~ msgstr "valeur %%V invalide"
-
#~ msgid "Generate code assuming DW bit is set"
#~ msgstr "Générer le code en assumant que le bit DW est initialisé"
@@ -21835,12 +23381,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "Use mcount_ptr for profiling"
#~ msgstr "Utiliser mcount_ptr pour le profilage"
-#~ msgid "Generate code which uses the FPU"
-#~ msgstr "Générer du code qui utilise le FPU"
-
-#~ msgid "Do not generate code which uses the FPU"
-#~ msgstr "Ne pas générer du code qui utilise le FPU"
-
#~ msgid "the -mlong-double-64 option does not work yet"
#~ msgstr "l'option -mlong-double-64 n'est pas fonctionnelle encore"
@@ -21925,9 +23465,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "`%D' as declarator"
#~ msgstr "« %D » comme déclarateur"
-#~ msgid "size of member `%D' is not constant"
-#~ msgstr "taille du membre « %D » n'est pas constant"
-
#~ msgid "cannot declare %s to references"
#~ msgstr "ne peut déclarer %s comme références"
@@ -21940,14 +23477,11 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "-fname-mangling-version is no longer supported"
#~ msgstr "-fname-mangling-version n'est plus supportée"
-#~ msgid "candidate%s: %+#D"
-#~ msgstr "candidat%s: %+#D"
-
#~ msgid " %#D"
#~ msgstr " %#D"
#~ msgid "member initializers for `%#D'"
-#~ msgstr "initialiseur du membre pour «%#D»"
+#~ msgstr "initialiseur du membre pour « %#D »"
#~ msgid " will be re-ordered to match declaration order"
#~ msgstr " sera ré-odonné pour concorder avec l'ordre déclaré"
@@ -21962,13 +23496,13 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgstr "nom d'implantation réservé « %D » est utilisé"
#~ msgid "explicit instantiation of `%#D' after"
-#~ msgstr "instanciation explicite de «%#D» après"
+#~ msgstr "instanciation explicite de « %#D » après"
#~ msgid "explicit specialization here"
#~ msgstr "spécialisation explicite ici"
#~ msgid "explicit instantiation of `%#T' after"
-#~ msgstr "instanciation explicite de «%#T» après"
+#~ msgstr "instanciation explicite de « %#T » après"
#~ msgid "base initializer for `%T'"
#~ msgstr "initialiseur de base « %T »"
@@ -21989,13 +23523,13 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgstr "requête du membre «%T::%D» dans l'expression du type non aggrégat « %T »"
#~ msgid "invalid use of type decl `%#D' as expression"
-#~ msgstr "utilisation invalide du type decl «%#D» comme expression"
+#~ msgstr "utilisation invalide du type decl « %#D » comme expression"
#~ msgid "invalid use of template `%#D' as expression"
-#~ msgstr "utilisation invalide du patron «%#D» comme expression"
+#~ msgstr "utilisation invalide du canevas « %#D » comme expression"
#~ msgid "invalid offsetof from non-POD type `%#T'; use pointer to member instead"
-#~ msgstr "offsetof invalide du type non POD «%#T»; utiliser un pointeur vers un membre à la place"
+#~ msgstr "offsetof invalide du type non POD « %#T »; utiliser un pointeur vers un membre à la place"
#~ msgid "pointer to member function called, but not in class scope"
#~ msgstr "appel d'un pointeur vers un membre de fonction, mais n'est pas dans le champ de la classe"
@@ -22010,7 +23544,7 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgstr "appel invalide vers un membre de fonction ayant besoin de « ceci » dans le champ du membre statique de la fonction"
#~ msgid "invalid use of undefined type `%#T'"
-#~ msgstr "utilisation invalide d'un type indéfini «%#T»"
+#~ msgstr "utilisation invalide d'un type indéfini « %#T »"
#~ msgid "invalid use of `%T'"
#~ msgstr "utilisation invalide de « %T »"
@@ -22018,9 +23552,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "invalid use of member (did you forget the `&' ?)"
#~ msgstr "utilisation invalide de membre (avez-vous oublié le «&» ?)"
-#~ msgid "invalid use of template type parameter"
-#~ msgstr "utilisation invalide de patron de type de paramètres"
-
#~ msgid "address of overloaded function with no contextual type information"
#~ msgstr "adresse de la fonction surchargée sans information contextuelle de type"
@@ -22100,7 +23631,7 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgstr "ne peut utiliser ensemble -mfp32 et -mfp64"
#~ msgid "declaration of `%#T'"
-#~ msgstr "déclaration de «%#T»"
+#~ msgstr "déclaration de « %#T »"
#~ msgid "a -ifile option requires a -map option"
#~ msgstr "l'option -ifile requiert l'option -map"
@@ -22483,9 +24014,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "duplicate grant for `%s'"
#~ msgstr "duplication autorisée pour « %s »"
-#~ msgid "previous grant for `%s'"
-#~ msgstr "autorisation précédente pour « %s »"
-
#~ msgid "duplicate definition `%s'"
#~ msgstr "double définition de « %s »"
@@ -22576,9 +24104,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "parameter 1 must be referable"
#~ msgstr "paramètre 1 doit pouvoir être référencé"
-#~ msgid "mode mismatch in parameter 1"
-#~ msgstr "non concordance de mode dans le paramètre 1"
-
#~ msgid "parameter 2 must be a positive integer"
#~ msgstr "paramètre 2 doit être un entier positif"
@@ -22762,9 +24287,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "-> operator not allow in constant expression"
#~ msgstr "opérateur -> n'est pas permis dans l'expression d'une constante"
-#~ msgid "taking the address of a string literal is non-standard"
-#~ msgstr "prendre l'adresse d'un litéral de chaîne n,est pas standard"
-
#~ msgid "taking the address of a function is non-standard"
#~ msgstr "prendre l'adresse d'une fonction n'est pas standard"
@@ -22825,9 +24347,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "decode_constant_selective: cannot decode this mode"
#~ msgstr "decode_constant_selective: ne peut décoder ce mode"
-#~ msgid "can't write to %s"
-#~ msgstr "ne peut écrire dans %s"
-
#~ msgid "FORBID is not yet implemented"
#~ msgstr "FORBID n'est pas encore implantée"
@@ -22987,9 +24506,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "no padding character (offset %d)"
#~ msgstr "pas de caractère de remplissage (décalage %d)"
-#~ msgid "too many arguments for this format string"
-#~ msgstr "trop d'arguments pour ce format de chaîne"
-
#~ msgid "missing index expression"
#~ msgstr "expresion d'index manquante"
@@ -23158,9 +24674,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "'%s!' is not followed by an identifier"
#~ msgstr "« %s » n'est pas suivi d'un identificateur"
-#~ msgid "expected a name here"
-#~ msgstr "un nom est attendu ici"
-
#~ msgid "expected a name string here"
#~ msgstr "un nom de chaîne est attendu ici"
@@ -23206,9 +24719,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "expected another rename clause"
#~ msgstr "attendait une autre clause de changement de nom"
-#~ msgid "syntax error in parameter name list"
-#~ msgstr "erreur de syntaxe dans la liste de noms de paramètres"
-
#~ msgid "NONREF specific without LOC in result attribute"
#~ msgstr "NONREF spécifique sans LOCALISATION dans l'attribut résultant"
@@ -23269,9 +24779,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "missing parenthesis for procedure call"
#~ msgstr "parenthèse manquante dans l'appel de procédure"
-#~ msgid "expression is not an action"
-#~ msgstr "l'expression n'est pas une action"
-
#~ msgid "syntax error in action"
#~ msgstr "erreur de syntaxe dans l,action"
@@ -23332,9 +24839,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "VARYING bit-strings not implemented"
#~ msgstr "chaîne variante de bits n'est pas implantée"
-#~ msgid "strings must be composed of chars"
-#~ msgstr "chaînes doivent être composées de caractères"
-
#~ msgid "BUFFER modes may not be readonly"
#~ msgstr "modes des TAMPOONS ne peuvent pas être en LECTURE seulement"
@@ -23605,9 +25109,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "index is not an integer expression"
#~ msgstr "index n'est pas une expression entière"
-#~ msgid "index not compatible with index mode"
-#~ msgstr "index n'est pas compatible avec le mode index"
-
#~ msgid "index is not discrete"
#~ msgstr "index n'est pas discret"
@@ -23674,9 +25175,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "location conversion between differently-sized modes"
#~ msgstr "conversion de localisation entre des mode de taille différentes"
-#~ msgid "operand to bin must be a non-negative integer literal"
-#~ msgstr "opérande à bin doit être un litéral entier non négatif"
-
#~ msgid "size %d of BIN too big - no such integer mode"
#~ msgstr "taille %d de BIN trop grand - pas de tel mode entier"
@@ -23773,9 +25271,6 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "starting bit in POS must be < the width of a word"
#~ msgstr "bit de départ dans la POSITION doit être < que la largeur d'un mot"
-#~ msgid "length in POS must be an integer constant"
-#~ msgstr "longueur dans la POSITION doit être une constante entière"
-
#~ msgid "length in POS must be > 0"
#~ msgstr "longueur dans la POSITION doit être > 0"
@@ -23816,13 +25311,10 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgstr "type paramétrisé invalide"
#~ msgid "abstract virtual `%#D' called from constructor"
-#~ msgstr "abstrait virtuel «%#D» appelé à partir d'un constructeur"
+#~ msgstr "abstrait virtuel « %#D » appelé à partir d'un constructeur"
#~ msgid "abstract virtual `%#D' called from destructor"
-#~ msgstr "abstrait virtuel «%#D» appelé à partir d'un destructeur"
-
-#~ msgid " perhaps you want `typename %T::%D' to make it a type"
-#~ msgstr " peut-être vous voulez «typename %T::%D» pour en faire un type"
+#~ msgstr "abstrait virtuel « %#D » appelé à partir d'un destructeur"
#~ msgid "discarding `const' applied to a reference"
#~ msgstr "mis de côté «const» appliqué à une référence"
@@ -24346,6 +25838,9 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "no file-scope type named `%D'"
#~ msgstr "pas de type de portée de fichier nommé `%D'"
+#~ msgid "%T is not a class type"
+#~ msgstr "« %T » n'est pas un type de classe"
+
#~ msgid "base clause without member specification for `%#T'"
#~ msgstr "clause de base sans spécification de membre pour `%#T'"
@@ -24552,3 +26047,102 @@ msgstr "-msingle-float et -msoft-float ne peuvent être spécifiés ensembles"
#~ msgid "Data size %ld.\n"
#~ msgstr "Taille des données %ld.\n"
+
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid "Name `%s' contains quotes"
+#~ msgstr "Nom « %s » contient des guillemets"
+
+#~ msgid "invalid string `%s' in define_query_cpu_unit"
+#~ msgstr "chaîne invalide « %s » dans define_query_cpu_unit"
+
+#~ msgid "invalid first string `%s' in presence_set"
+#~ msgstr "première chaîne invalide « %s » dans presence_set"
+
+#~ msgid "invalid first string `%s' in absence_set"
+#~ msgstr "première chaîne invalide « %s » dans absence_set"
+
+#~ msgid "invalid second string `%s' in absence_set"
+#~ msgstr "seconde chaîne invalide « %s » dans absence_set"
+
+#~ msgid "invalid string `%s' in define_automaton"
+#~ msgstr "chaîne invalide « %s » dans define_automaton"
+
+#~ msgid "garbage after ) in reservation `%s'"
+#~ msgstr "rebut après « ) » dans la réservation « %s »"
+
+#~ msgid "repetition `%s' <= 1 in reservation `%s'"
+#~ msgstr "répétition « %s » <= 1 dans la réservation « %s »"
+
+#~ msgid "`%s' in exclusion is not unit"
+#~ msgstr "« %s » dans l'exclusion n'est pas une unité"
+
+#~ msgid "units `%s' and `%s' in exclusion set belong to different automata"
+#~ msgstr "unités « %s » et « %s » dans l'ensemble d'exclusions appartient à un automate différent"
+
+#~ msgid "unit `%s' excludes and requires presence of `%s'"
+#~ msgstr "unité « %s » exclue et requiert la présence de « %s »"
+
+#~ msgid "unit `%s' requires absence and presence of `%s'"
+#~ msgstr "unité « %s » exclue et requiert l'absence ou la présence de « %s »"
+
+#~ msgid "define_insn_reservation `%s' has negative latency time"
+#~ msgstr "define_insn_reservation « %s » a un temps de latence négatif"
+
+#~ msgid "define_bypass `%s - %s' has negative latency time"
+#~ msgstr "define_bypass « %s - %s » a un temps de latence négatif"
+
+#~ msgid "define_unit `%s' without automaton when one defined"
+#~ msgstr "define_unit « %s » sans automate alors qu'il y en a un défini"
+
+#~ msgid "Units `%s' and `%s' should be in the same automaton"
+#~ msgstr "Unités « %s » et « %s » devraient être dans le même automate"
+
+#~ msgid "Automaton `%s': Insn `%s' will never be issued"
+#~ msgstr "Automate « %s »: Insn « %s » ne sera jamais émis"
+
+#~ msgid "Insn `%s' will never be issued"
+#~ msgstr "Insn « %s » ne sera jamais émis"
+
+#~ msgid "Profile does not match flowgraph of function %s (out of date?)"
+#~ msgstr "Profil ne concorde pas le graphe de flux de la fonction %s (périmé?)"
+
+#~ msgid "The slope of the linear function throttling inlining after the recursive inlining limit has been reached is given by the negative reciprocal value of this parameter"
+#~ msgstr "La pente de la fonction linéaire d'étrnaglement d'enlignage après avoir atteint récursivement la limite d'enlignage récursif est obtenue par la valeur négative réciproque de ce paramètre"
+
+#~ msgid "push %s level %p line %d\n"
+#~ msgstr "empiler %s niveau %p ligne %d\n"
+
+#~ msgid "pop %s level %p line %d\n"
+#~ msgstr "dépiler %s niveau %p ligne %d\n"
+
+#~ msgid "suspend %s level %p line %d\n"
+#~ msgstr "suspendre %s niveau %p ligne %d\n"
+
+#~ msgid "resume %s level %p line %d\n"
+#~ msgstr "compléter %s niveau %p ligne %d\n"
+
+#~ msgid "\\x%x"
+#~ msgstr "\\x%x"
+
+#~ msgid "invalid use of template `%D'"
+#~ msgstr "utilisation invalide du canevas « %D »"
+
+#~ msgid "qualified name does not name a class"
+#~ msgstr "nom qualifié ne nomme pas une classe"
+
+#~ msgid "assignment to non-static member `%D' of enclosing class `%T'"
+#~ msgstr "affectation à un membre non statique « %D » de la classe « %T » entourée"
+
+#~ msgid "ISO C++ does not permit named return values"
+#~ msgstr "ISO C++ ne permet pas les valeurs retournées nommées"
+
+#~ msgid "exception handler inside code that is being protected"
+#~ msgstr "traitement d'exception à l'intérieur du code qui est protégé"
+
+#~ msgid "(debug) trace parsing process"
+#~ msgstr "(débug) tracer le traitement de l'analyse"
+
+#~ msgid "(debug) trace lexical analysis"
+#~ msgstr "(débug) trace l'analyse lexicale"
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index da74e005f71..bc211aea108 100644
--- a/gcc/po/gcc.pot
+++ b/gcc/po/gcc.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2003-11-20 10:14+0000\n"
+"POT-Creation-Date: 2004-02-06 01:40+0000\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"
@@ -36,16 +36,16 @@ msgstr ""
msgid "`%s' attribute only applies to function types"
msgstr ""
-#: attribs.c:416 c-common.c:4353 c-common.c:4372 c-common.c:4390
-#: c-common.c:4417 c-common.c:4436 c-common.c:4459 c-common.c:4482
-#: c-common.c:4508 c-common.c:4542 c-common.c:4586 c-common.c:4614
-#: c-common.c:4642 c-common.c:4661 c-common.c:4916 c-common.c:4938
-#: c-common.c:4973 c-common.c:5040 c-common.c:5086 c-common.c:5144
-#: c-common.c:5175 c-common.c:5521 c-common.c:5544 c-common.c:5583
-#: config/arm/arm.c:2233 config/arm/arm.c:2260 config/avr/avr.c:4561
-#: config/h8300/h8300.c:4279 config/h8300/h8300.c:4302 config/i386/i386.c:1593
-#: config/i386/i386.c:15269 config/i386/winnt.c:86 config/ia64/ia64.c:1057
-#: config/ip2k/ip2k.c:3214
+#: attribs.c:416 c-common.c:4344 c-common.c:4363 c-common.c:4381
+#: c-common.c:4408 c-common.c:4427 c-common.c:4450 c-common.c:4473
+#: c-common.c:4499 c-common.c:4533 c-common.c:4577 c-common.c:4605
+#: c-common.c:4633 c-common.c:4652 c-common.c:4907 c-common.c:4929
+#: c-common.c:4964 c-common.c:5031 c-common.c:5077 c-common.c:5135
+#: c-common.c:5166 c-common.c:5512 c-common.c:5535 c-common.c:5574
+#: config/arm/arm.c:2278 config/arm/arm.c:2305 config/avr/avr.c:4539
+#: config/h8300/h8300.c:4281 config/h8300/h8300.c:4304 config/i386/i386.c:1599
+#: config/i386/i386.c:15299 config/i386/winnt.c:86 config/ia64/ia64.c:1053
+#: config/ip2k/ip2k.c:3151
#, c-format
msgid "`%s' attribute ignored"
msgstr ""
@@ -54,474 +54,519 @@ msgstr ""
msgid "offset outside bounds of constant string"
msgstr ""
-#: builtins.c:779
+#: builtins.c:786
msgid "second arg to `__builtin_prefetch' must be a constant"
msgstr ""
-#: builtins.c:786
+#: builtins.c:793
msgid "invalid second arg to __builtin_prefetch; using zero"
msgstr ""
-#: builtins.c:793
+#: builtins.c:800
msgid "third arg to `__builtin_prefetch' must be a constant"
msgstr ""
-#: builtins.c:800
+#: builtins.c:807
msgid "invalid third arg to __builtin_prefetch; using zero"
msgstr ""
-#: builtins.c:3810
+#: builtins.c:3828
msgid "argument of `__builtin_args_info' must be constant"
msgstr ""
-#: builtins.c:3816
+#: builtins.c:3834
msgid "argument of `__builtin_args_info' out of range"
msgstr ""
-#: builtins.c:3822
+#: builtins.c:3840
msgid "missing argument in `__builtin_args_info'"
msgstr ""
-#: builtins.c:3838
+#: builtins.c:3856
msgid "`va_start' used in function with fixed args"
msgstr ""
-#: builtins.c:3857
+#: builtins.c:3875
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:3862
+#: builtins.c:3880
msgid "`__builtin_next_arg' called without an argument"
msgstr ""
-#: builtins.c:3951
+#: builtins.c:3969
msgid "too many arguments to function `va_start'"
msgstr ""
-#: builtins.c:4051
+#: builtins.c:4091
msgid "first argument to `va_arg' not of type `va_list'"
msgstr ""
#. Unfortunately, this is merely undefined, rather than a constraint
#. violation, so we cannot make this an error. If this call is never
#. executed, the program is still strictly conforming.
-#: builtins.c:4083
+#: builtins.c:4123
#, c-format
msgid "`%s' is promoted to `%s' when passed through `...'"
msgstr ""
-#: builtins.c:4088
+#: builtins.c:4128
#, c-format
msgid "(so you should pass `%s' not `%s' to `va_arg')"
msgstr ""
-#: builtins.c:4205
+#: builtins.c:4240
msgid "invalid arg to `__builtin_frame_address'"
msgstr ""
-#: builtins.c:4207
+#: builtins.c:4242
msgid "invalid arg to `__builtin_return_address'"
msgstr ""
-#: builtins.c:4221
+#: builtins.c:4256
msgid "unsupported arg to `__builtin_frame_address'"
msgstr ""
-#: builtins.c:4223
+#: builtins.c:4258
msgid "unsupported arg to `__builtin_return_address'"
msgstr ""
-#: builtins.c:4383
+#: builtins.c:4418
msgid "second arg to `__builtin_expect' must be a constant"
msgstr ""
-#: builtins.c:5328
+#: builtins.c:5359
msgid "__builtin_longjmp second argument must be 1"
msgstr ""
-#: builtins.c:5423
+#: builtins.c:5454
#, c-format
msgid "built-in function `%s' not currently supported"
msgstr ""
-#: builtins.c:5563
+#: builtins.c:5594
msgid "target format does not support infinity"
msgstr ""
-#: c-common.c:943
+#: c-common.c:934
msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
msgstr ""
-#: c-common.c:1161
+#: c-common.c:1158
msgid "%J'%D' is not defined outside of function scope"
msgstr ""
-#: c-common.c:1181
+#: c-common.c:1178
#, c-format
msgid ""
"string length `%d' is greater than the length `%d' ISO C%d compilers are "
"required to support"
msgstr ""
-#: c-common.c:1221
+#: c-common.c:1218
msgid "overflow in constant expression"
msgstr ""
-#: c-common.c:1241
+#: c-common.c:1238
msgid "integer overflow in expression"
msgstr ""
-#: c-common.c:1250
+#: c-common.c:1247
msgid "floating point overflow in expression"
msgstr ""
-#: c-common.c:1256
+#: c-common.c:1253
msgid "vector overflow in expression"
msgstr ""
#. This detects cases like converting -129 or 256 to unsigned char.
-#: c-common.c:1278
+#: c-common.c:1275
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-common.c:1280
+#: c-common.c:1277
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-common.c:1326
+#: c-common.c:1323
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-common.c:1462
+#: c-common.c:1459
#, c-format
msgid "operation on `%s' may be undefined"
msgstr ""
-#: c-common.c:1746
+#: c-common.c:1743
msgid "expression statement has incomplete type"
msgstr ""
-#: c-common.c:1778
+#: c-common.c:1775
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-common.c:2108
+#: c-common.c:2105
msgid "invalid truth-value expression"
msgstr ""
-#: c-common.c:2159
+#: c-common.c:2156
#, c-format
msgid "invalid operands to binary %s"
msgstr ""
-#: c-common.c:2393
+#: c-common.c:2390
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-common.c:2395
+#: c-common.c:2392
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-common.c:2465
+#: c-common.c:2462
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-common.c:2474
+#: c-common.c:2471
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-common.c:2519
+#: c-common.c:2516
msgid "pointer of type `void *' used in arithmetic"
msgstr ""
-#: c-common.c:2525
+#: c-common.c:2522
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-common.c:2531
+#: c-common.c:2528
msgid "pointer to member function used in arithmetic"
msgstr ""
-#: c-common.c:2537
+#: c-common.c:2534
msgid "pointer to a member used in arithmetic"
msgstr ""
-#: c-common.c:2626 f/com.c:14732
+#: c-common.c:2623 f/com.c:14734
msgid "struct type value used where scalar is required"
msgstr ""
-#: c-common.c:2630 f/com.c:14736
+#: c-common.c:2627 f/com.c:14738
msgid "union type value used where scalar is required"
msgstr ""
-#: c-common.c:2634 f/com.c:14740
+#: c-common.c:2631 f/com.c:14742
msgid "array type value used where scalar is required"
msgstr ""
#. Common Ada/Pascal programmer's mistake. We always warn
#. about this since it is so bad.
-#: c-common.c:2671
+#: c-common.c:2668
msgid "the address of `%D', will always evaluate as `true'"
msgstr ""
-#: c-common.c:2765 f/com.c:14872
+#: c-common.c:2762 f/com.c:14874
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-common.c:2808 c-common.c:2845
+#: c-common.c:2808 c-common.c:2848
msgid "invalid use of `restrict'"
msgstr ""
-#: c-common.c:2955
+#: c-common.c:2958
msgid "invalid application of `sizeof' to a function type"
msgstr ""
-#: c-common.c:2965
+#: c-common.c:2968
#, c-format
msgid "invalid application of `%s' to a void type"
msgstr ""
-#: c-common.c:2971
+#: c-common.c:2974
#, c-format
msgid "invalid application of `%s' to an incomplete type"
msgstr ""
-#: c-common.c:3011
+#: c-common.c:3014
msgid "`__alignof' applied to a bit-field"
msgstr ""
-#: c-common.c:3503
+#: c-common.c:3506
#, c-format
msgid "cannot disable built-in function `%s'"
msgstr ""
-#: c-common.c:3664 c-typeck.c:1898
+#: c-common.c:3667 c-typeck.c:1941
#, c-format
msgid "too few arguments to function `%s'"
msgstr ""
-#: c-common.c:3670 c-typeck.c:1759
+#: c-common.c:3673 c-typeck.c:1802
#, c-format
msgid "too many arguments to function `%s'"
msgstr ""
-#: c-common.c:3689
+#: c-common.c:3692
#, c-format
msgid "non-floating-point argument to function `%s'"
msgstr ""
-#: c-common.c:3916
+#: c-common.c:3919
msgid "pointers are not permitted as case values"
msgstr ""
-#: c-common.c:3920
+#: c-common.c:3923
msgid "range expressions in switch statements are non-standard"
msgstr ""
-#: c-common.c:3949
+#: c-common.c:3952
msgid "empty range specified"
msgstr ""
-#: c-common.c:4000
+#: c-common.c:4003
msgid "duplicate (or overlapping) case value"
msgstr ""
-#: c-common.c:4001
+#: c-common.c:4004
msgid "%Jthis is the first entry overlapping that value"
msgstr ""
-#: c-common.c:4005
+#: c-common.c:4008
msgid "duplicate case value"
msgstr ""
-#: c-common.c:4006
+#: c-common.c:4009
msgid "%Jpreviously used here"
msgstr ""
-#: c-common.c:4010
+#: c-common.c:4013
msgid "multiple default labels in one switch"
msgstr ""
-#: c-common.c:4011
+#: c-common.c:4014
msgid "%Jthis is the first default label"
msgstr ""
-#: c-common.c:4036
+#: c-common.c:4039
msgid "taking the address of a label is non-standard"
msgstr ""
-#: c-common.c:4082
+#: c-common.c:4085
msgid ""
"%Hignoring return value of `%D', declared with attribute warn_unused_result"
msgstr ""
-#: c-common.c:4087
+#: c-common.c:4090
msgid ""
"%Hignoring return value of function declared with attribute "
"warn_unused_result"
msgstr ""
#. SW_PARAM
-#: c-common.c:4306
+#: c-common.c:4297
#, c-format
msgid "declaration of \"%s\" shadows a parameter"
msgstr ""
#. SW_LOCAL
-#: c-common.c:4307
+#: c-common.c:4298
#, c-format
msgid "declaration of \"%s\" shadows a previous local"
msgstr ""
#. SW_GLOBAL
-#: c-common.c:4308
+#: c-common.c:4299
#, c-format
msgid "declaration of \"%s\" shadows a global declaration"
msgstr ""
-#: c-common.c:4312
+#: c-common.c:4303
msgid "%Jshadowed declaration is here"
msgstr ""
-#: c-common.c:4695
+#: c-common.c:4686
#, c-format
msgid "unknown machine mode `%s'"
msgstr ""
-#: c-common.c:4698
+#: c-common.c:4689
#, c-format
msgid "no data type for mode `%s'"
msgstr ""
-#: c-common.c:4702
+#: c-common.c:4693
#, c-format
msgid "invalid pointer mode `%s'"
msgstr ""
-#: c-common.c:4709 c-common.c:5272
+#: c-common.c:4700 c-common.c:5263
#, c-format
msgid "unable to emulate '%s'"
msgstr ""
-#: c-common.c:4753
+#: c-common.c:4744
msgid "%Jsection attribute cannot be specified for local variables"
msgstr ""
-#: c-common.c:4764
+#: c-common.c:4755
msgid "%Jsection of '%D' conflicts with previous declaration"
msgstr ""
-#: c-common.c:4773
+#: c-common.c:4764
msgid "%Jsection attribute not allowed for '%D'"
msgstr ""
-#: c-common.c:4779
+#: c-common.c:4770
msgid "%Jsection attributes are not supported for this target"
msgstr ""
-#: c-common.c:4817
+#: c-common.c:4808
msgid "requested alignment is not a constant"
msgstr ""
-#: c-common.c:4822
+#: c-common.c:4813
msgid "requested alignment is not a power of 2"
msgstr ""
-#: c-common.c:4827
+#: c-common.c:4818
msgid "requested alignment is too large"
msgstr ""
-#: c-common.c:4853
+#: c-common.c:4844
msgid "%Jalignment may not be specified for '%D'"
msgstr ""
-#: c-common.c:4891
+#: c-common.c:4882
msgid "%J'%D' defined both normally and as an alias"
msgstr ""
-#: c-common.c:4901
+#: c-common.c:4892
msgid "alias arg not a string"
msgstr ""
-#: c-common.c:4944
+#: c-common.c:4935
msgid "visibility arg not a string"
msgstr ""
-#: c-common.c:4957
+#: c-common.c:4948
msgid ""
"visibility arg must be one of \"default\", \"hidden\", \"protected\" or "
"\"internal\""
msgstr ""
-#: c-common.c:4983
+#: c-common.c:4974
msgid "tls_model arg not a string"
msgstr ""
-#: c-common.c:4992
+#: c-common.c:4983
msgid ""
"tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-"
"dynamic\" or \"global-dynamic\""
msgstr ""
-#: c-common.c:5014 c-common.c:5060
+#: c-common.c:5005 c-common.c:5051
msgid "%J'%E' attribute applies only to functions"
msgstr ""
-#: c-common.c:5019 c-common.c:5065
+#: c-common.c:5010 c-common.c:5056
msgid "%Jcan't set '%E' attribute after definition"
msgstr ""
-#: c-common.c:5141
+#: c-common.c:5132
#, c-format
msgid "`%s' attribute ignored for `%s'"
msgstr ""
-#: c-common.c:5204
+#: c-common.c:5195
#, c-format
msgid "invalid vector type for attribute `%s'"
msgstr ""
-#: c-common.c:5228 c-common.c:5260
+#: c-common.c:5219 c-common.c:5251
msgid "no vector mode with the size and type specified could be found"
msgstr ""
-#: c-common.c:5362
+#: c-common.c:5353
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-common.c:5377
+#: c-common.c:5368
#, c-format
msgid "nonnull argument has invalid operand number (arg %lu)"
msgstr ""
-#: c-common.c:5396
+#: c-common.c:5387
#, c-format
msgid ""
"nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
msgstr ""
-#: c-common.c:5404
+#: c-common.c:5395
#, c-format
msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
msgstr ""
-#: c-common.c:5484
+#: c-common.c:5475
#, c-format
msgid "null argument where non-null required (arg %lu)"
msgstr ""
-#: c-common.c:5555
+#: c-common.c:5546
msgid "cleanup arg not an identifier"
msgstr ""
-#: c-common.c:5562
+#: c-common.c:5553
msgid "cleanup arg not a function"
msgstr ""
-#: c-convert.c:82 c-typeck.c:1192 c-typeck.c:3348 cp/typeck.c:1307
-#: cp/typeck.c:5605 treelang/tree-convert.c:79
+#: c-common.c:5914
+#, c-format
+msgid "%s at end of input"
+msgstr ""
+
+#: c-common.c:5920
+#, c-format
+msgid "%s before %s'%c'"
+msgstr ""
+
+#: c-common.c:5922
+#, c-format
+msgid "%s before %s'\\x%x'"
+msgstr ""
+
+#: c-common.c:5926
+#, c-format
+msgid "%s before string constant"
+msgstr ""
+
+#: c-common.c:5928
+#, c-format
+msgid "%s before numeric constant"
+msgstr ""
+
+#: c-common.c:5930
+#, c-format
+msgid "%s before \"%s\""
+msgstr ""
+
+#: c-common.c:5932
+#, c-format
+msgid "%s before '%s' token"
+msgstr ""
+
+#. Use `%s' to print the string in case there are any escape
+#. characters in the message.
+#: c-common.c:5934 c-typeck.c:2578 c-typeck.c:3970 c-typeck.c:3985
+#: c-typeck.c:4000 final.c:2776 final.c:2778 gcc.c:4574 rtl-error.c:109
+#: toplev.c:1340 config/cris/cris.c:545 cp/parser.c:1848 cp/typeck.c:4111
+#: java/expr.c:356 java/verify.c:1456 java/verify.c:1457 java/verify.c:1472
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: c-convert.c:82 c-typeck.c:1193 c-typeck.c:3410 cp/typeck.c:1337
+#: cp/typeck.c:5648 treelang/tree-convert.c:79
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -529,475 +574,538 @@ msgstr ""
msgid "conversion to non-scalar type requested"
msgstr ""
-#: c-decl.c:370
+#: c-decl.c:371
msgid "%Jarray '%D' assumed to have one element"
msgstr ""
-#: c-decl.c:579
+#: c-decl.c:580
msgid "%Jlabel `%D' used but not defined"
msgstr ""
-#: c-decl.c:585
+#: c-decl.c:586
msgid "%Jlabel `%D' defined but not used"
msgstr ""
-#: c-decl.c:587
+#: c-decl.c:588
msgid "%Jlabel `%D' declared but not defined"
msgstr ""
-#: c-decl.c:612
+#: c-decl.c:613
msgid "%Junused variable `%D'"
msgstr ""
-#: c-decl.c:836 cp/decl.c:1185
-msgid "%Jfunction '%D' redeclared as inline"
+#: c-decl.c:821
+msgid ""
+"a parameter list with an ellipsis can't match an empty parameter name list "
+"declaration"
msgstr ""
-#: c-decl.c:838
-msgid "%Jprevious declaration of function '%D' with attribute noinline"
+#: c-decl.c:828
+msgid ""
+"an argument type that has a default promotion can't match an empty parameter "
+"name list declaration"
msgstr ""
-#: c-decl.c:845 cp/decl.c:1193
-msgid "%Jfunction '%D' redeclared with attribute noinline"
+#: c-decl.c:864
+msgid ""
+"%Jprototype for '%D' declares more arguments than previous old-style "
+"definition"
msgstr ""
-#: c-decl.c:847
-msgid "%Jprevious declaration of function '%D' was inline"
+#: c-decl.c:870
+msgid ""
+"%Jprototype for '%D' declares fewer arguments than previous old-style "
+"definition"
msgstr ""
-#: c-decl.c:874 c-decl.c:914
-msgid "%Jshadowing built-in function '%D'"
+#: c-decl.c:879
+msgid "%Jprototype for '%D' declares arg %d with incompatible type"
msgstr ""
-#: c-decl.c:878
-msgid "%Jbuilt-in function '%D' declared as non-function"
+#. If we get here, no errors were found, but do issue a warning
+#. for this poor-style construct.
+#: c-decl.c:891
+msgid "%Jprototype for '%D' follows non-prototype definition"
msgstr ""
-#: c-decl.c:883
-msgid "%J'%D' redeclared as different kind of symbol"
+#: c-decl.c:906
+msgid "%Jprevious definition of '%D' was here"
msgstr ""
-#: c-decl.c:885 c-decl.c:1050 c-decl.c:1065 c-decl.c:1073 c-decl.c:1221
-#: c-decl.c:1829 objc/objc-act.c:2534 objc/objc-act.c:6796
-msgid "%Jprevious declaration of '%D'"
+#: c-decl.c:908
+msgid "%Jprevious implicit declaration of '%D' was here"
msgstr ""
-#. If types don't match for a built-in, throw away the built-in.
-#: c-decl.c:936
-msgid "%Jconflicting types for built-in function '%D'"
+#: c-decl.c:910
+msgid "%Jprevious declaration of '%D' was here"
msgstr ""
-#: c-decl.c:980 c-decl.c:998 c-decl.c:1013
-msgid "%Jconflicting types for '%D'"
+#: c-decl.c:944
+msgid "%J'%D' redeclared as different kind of symbol"
msgstr ""
-#: c-decl.c:1036
-msgid ""
-"a parameter list with an ellipsis can't match an empty parameter name list "
-"declaration"
+#: c-decl.c:949
+msgid "%Jbuilt-in function '%D' declared as non-function"
msgstr ""
-#: c-decl.c:1042
-msgid ""
-"an argument type that has a default promotion can't match an empty parameter "
-"name list declaration"
+#: c-decl.c:952 c-decl.c:1042
+msgid "%Jshadowing built-in function '%D'"
msgstr ""
-#: c-decl.c:1048
-msgid "%Jprevious implicit declaration of '%D'"
+#. If types don't match for a built-in, throw away the
+#. built-in. No point in calling locate_old_decl here, it
+#. won't print anything.
+#: c-decl.c:972
+msgid "%Jconflicting types for built-in function '%D'"
msgstr ""
-#: c-decl.c:1063
-msgid "%Jthread-local declaration of '%D' follows non thread-local declaration"
+#: c-decl.c:996 c-decl.c:1004
+msgid "%Jconflicting types for '%D'"
msgstr ""
-#: c-decl.c:1071
-msgid "%Jnon thread-local declaration of '%D' follows thread-local declaration"
+#. allow OLDDECL to continue in use
+#: c-decl.c:1019
+msgid "%Jredefinition of typedef '%D'"
msgstr ""
-#: c-decl.c:1083 c-decl.c:1106
+#: c-decl.c:1055 c-decl.c:1119
msgid "%Jredefinition of '%D'"
msgstr ""
-#: c-decl.c:1086
-msgid "%Jredeclaration of '%D'"
+#: c-decl.c:1086 c-decl.c:1136
+msgid "%Jstatic declaration of '%D' follows non-static declaration"
msgstr ""
-#: c-decl.c:1089
-msgid "%Jconflicting declarations of '%D'"
+#: c-decl.c:1094 c-decl.c:1133
+msgid "%Jnon-static declaration of '%D' follows static declaration"
msgstr ""
-#: c-decl.c:1097 c-decl.c:1108 c-decl.c:6573
-msgid "%J'%D' previously defined here"
+#: c-decl.c:1106
+msgid "%Jthread-local declaration of '%D' follows non-thread-local declaration"
msgstr ""
-#: c-decl.c:1099 c-decl.c:1110
-msgid "%J'%D' previously declared here"
+#: c-decl.c:1109
+msgid "%Jnon-thread-local declaration of '%D' follows thread-local declaration"
msgstr ""
-#: c-decl.c:1131
-msgid "%Jprototype for '%D' follows"
+#: c-decl.c:1149
+msgid "%Jextern declaration of '%D' follows declaration with no linkage"
msgstr ""
-#: c-decl.c:1132 c-decl.c:1140 c-decl.c:1151
-msgid "%Jnon-prototype definition here"
+#: c-decl.c:1152
+msgid "%Jdeclaration of '%D' with no linkage follows extern declaration"
msgstr ""
-#: c-decl.c:1138
-msgid "%Jprototype for '%D' follows and number of arguments doesn't match"
+#: c-decl.c:1155
+msgid "%Jredeclaration of '%D' with no linkage"
msgstr ""
-#: c-decl.c:1149
-msgid "%Jprototype for '%D' follows and argument %d doesn't match"
+#: c-decl.c:1169
+msgid ""
+"%Jredeclaration of '%D' with different visibility (old visibility preserved)"
+msgstr ""
+
+#: c-decl.c:1180
+msgid ""
+"%Jinline declaration of '%D' follows declaration with attribute noinline"
+msgstr ""
+
+#: c-decl.c:1187
+msgid ""
+"%Jdeclaration of '%D' with attribute noinline follows inline declaration "
msgstr ""
-#: c-decl.c:1166
+#: c-decl.c:1199
msgid "%J'%D' declared inline after being called"
msgstr ""
-#: c-decl.c:1172
+#: c-decl.c:1205
msgid "%J'%D' declared inline after its definition"
msgstr ""
-#: c-decl.c:1180
-msgid "%Jstatic declaration for '%D' follows non-static"
+#: c-decl.c:1217
+msgid "%Jvolatile declaration of '%D' follows non-volatile declaration"
msgstr ""
-#: c-decl.c:1189
-msgid "%Jnon-static declaration for '%D' follows static"
+#: c-decl.c:1220
+msgid "%Jnon-volatile declaration of '%D' follows volatile declaration"
msgstr ""
-#: c-decl.c:1197
-msgid "%Jconst declaration for '%D' follows non-const"
+#: c-decl.c:1227
+msgid "%Jconst declaration of '%D' follows non-const declaration"
msgstr ""
-#: c-decl.c:1205
-msgid "%Jtype qualifiers for '%D' conflict with previous declaration"
+#: c-decl.c:1230
+msgid "%Jnon-const declaration of '%D' follows const declaration"
msgstr ""
-#: c-decl.c:1219
-msgid "%Jredundant redeclaration of '%D' in same scope"
+#: c-decl.c:1246
+msgid "%Jredundant redeclaration of '%D'"
msgstr ""
-#: c-decl.c:1689
+#: c-decl.c:1690
#, c-format
msgid "nested extern declaration of `%s'"
msgstr ""
+#: c-decl.c:1829 objc/objc-act.c:2534 objc/objc-act.c:6793
+msgid "%Jprevious declaration of '%D'"
+msgstr ""
+
#: c-decl.c:1870 c-decl.c:1872
#, c-format
msgid "implicit declaration of function `%s'"
msgstr ""
-#: c-decl.c:1951
+#: c-decl.c:1888
#, c-format
msgid "`%s' undeclared here (not in a function)"
msgstr ""
-#: c-decl.c:1957
+#: c-decl.c:1894
#, c-format
msgid "`%s' undeclared (first use in this function)"
msgstr ""
-#: c-decl.c:1962
+#: c-decl.c:1899
msgid "(Each undeclared identifier is reported only once"
msgstr ""
-#: c-decl.c:1963
+#: c-decl.c:1900
msgid "for each function it appears in.)"
msgstr ""
-#: c-decl.c:2016
+#: c-decl.c:1953
#, c-format
msgid "label %s referenced outside of any function"
msgstr ""
-#: c-decl.c:2063
+#: c-decl.c:2000
#, c-format
msgid "duplicate label declaration `%s'"
msgstr ""
-#: c-decl.c:2064
+#: c-decl.c:2001
msgid "%Jthis is a previous declaration"
msgstr ""
-#: c-decl.c:2099
+#: c-decl.c:2036
msgid "%Hduplicate label `%D'"
msgstr ""
-#: c-decl.c:2101
+#: c-decl.c:2038
msgid "%J`%D' previously defined here"
msgstr ""
-#: c-decl.c:2103
+#: c-decl.c:2040
msgid "%J`%D' previously declared here"
msgstr ""
-#: c-decl.c:2123
+#: c-decl.c:2060
msgid ""
"%Htraditional C lacks a separate namespace for labels, identifier `%s' "
"conflicts"
msgstr ""
-#: c-decl.c:2194
+#: c-decl.c:2131
msgid "%H`%s' defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:2432
+#: c-decl.c:2369
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c-decl.c:2451
+#: c-decl.c:2388
msgid "useless keyword or type name in empty declaration"
msgstr ""
-#: c-decl.c:2458
+#: c-decl.c:2395
msgid "two types specified in one empty declaration"
msgstr ""
-#: c-decl.c:2463
+#: c-decl.c:2400 c-parse.y:735 c-parse.y:737 objc/objc-parse.y:776
+#: objc/objc-parse.y:778 objc/objc-parse.y:3016
msgid "empty declaration"
msgstr ""
-#: c-decl.c:2489
+#: c-decl.c:2426
msgid ""
"ISO C90 does not support `static' or type qualifiers in parameter array "
"declarators"
msgstr ""
-#: c-decl.c:2491
+#: c-decl.c:2428
msgid "ISO C90 does not support `[*]' array declarators"
msgstr ""
-#: c-decl.c:2494
+#: c-decl.c:2431
msgid "GCC does not yet properly implement `[*]' array declarators"
msgstr ""
-#: c-decl.c:2510
+#: c-decl.c:2447
msgid "static or type qualifiers in abstract declarator"
msgstr ""
-#: c-decl.c:2579
+#: c-decl.c:2517
msgid "%J'%D' is usually a function"
msgstr ""
-#: c-decl.c:2588
+#: c-decl.c:2526
#, c-format
msgid "typedef `%s' is initialized (use __typeof__ instead)"
msgstr ""
-#: c-decl.c:2594
+#: c-decl.c:2532
#, 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:2601
+#: c-decl.c:2539
#, c-format
msgid "parameter `%s' is initialized"
msgstr ""
-#: c-decl.c:2621 c-typeck.c:4157
+#: c-decl.c:2559 c-typeck.c:4220
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c-decl.c:2627
+#: c-decl.c:2565
#, c-format
msgid "variable `%s' has initializer but incomplete type"
msgstr ""
-#: c-decl.c:2633
+#: c-decl.c:2571
#, c-format
msgid "elements of array `%s' have incomplete type"
msgstr ""
-#: c-decl.c:2702 c-decl.c:5460 cp/decl.c:3725 cp/decl.c:10097
+#: c-decl.c:2640 c-decl.c:5426 cp/decl.c:3748 cp/decl.c:10156
msgid "%Jinline function '%D' given attribute noinline"
msgstr ""
-#: c-decl.c:2778
+#: c-decl.c:2716
msgid "%Jinitializer fails to determine size of '%D'"
msgstr ""
-#: c-decl.c:2783
+#: c-decl.c:2721
msgid "%Jarray size missing in '%D'"
msgstr ""
-#: c-decl.c:2799
+#: c-decl.c:2737
msgid "%Jzero or negative size array '%D'"
msgstr ""
-#: c-decl.c:2827
+#: c-decl.c:2765
msgid "%Jstorage size of '%D' isn't known"
msgstr ""
-#: c-decl.c:2837
+#: c-decl.c:2775
msgid "%Jstorage size of '%D' isn't constant"
msgstr ""
-#: c-decl.c:2920
+#: c-decl.c:2858
msgid "%Jignoring asm-specifier for non-static local variable '%D'"
msgstr ""
-#: c-decl.c:3030
+#: c-decl.c:2969
msgid "ISO C forbids forward parameter declarations"
msgstr ""
-#: c-decl.c:3351 cp/decl.c:6735
+#: c-decl.c:3151
+msgid "<anonymous>"
+msgstr ""
+
+#: c-decl.c:3160
+#, c-format
+msgid "bit-field `%s' width not an integer constant"
+msgstr ""
+
+#: c-decl.c:3168
+#, c-format
+msgid "negative width in bit-field `%s'"
+msgstr ""
+
+#: c-decl.c:3173
+#, c-format
+msgid "zero width for bit-field `%s'"
+msgstr ""
+
+#: c-decl.c:3183
+#, c-format
+msgid "bit-field `%s' has invalid type"
+msgstr ""
+
+#: c-decl.c:3192
+#, c-format
+msgid "type of bit-field `%s' is a GCC extension"
+msgstr ""
+
+#: c-decl.c:3201
+#, c-format
+msgid "width of `%s' exceeds its type"
+msgstr ""
+
+#: c-decl.c:3211
+#, c-format
+msgid "`%s' is narrower than values of its type"
+msgstr ""
+
+#: c-decl.c:3361 cp/decl.c:6778
msgid "`long long long' is too long for GCC"
msgstr ""
-#: c-decl.c:3356
+#: c-decl.c:3366
msgid "ISO C90 does not support `long long'"
msgstr ""
-#: c-decl.c:3365 c-decl.c:3368 cp/decl.c:6740
+#: c-decl.c:3375 c-decl.c:3378 cp/decl.c:6783
#, c-format
msgid "duplicate `%s'"
msgstr ""
-#: c-decl.c:3378 cp/decl.c:6746
+#: c-decl.c:3388 cp/decl.c:6789
msgid "`__thread' before `extern'"
msgstr ""
-#: c-decl.c:3380 cp/decl.c:6748
+#: c-decl.c:3390 cp/decl.c:6791
msgid "`__thread' before `static'"
msgstr ""
-#: c-decl.c:3388 cp/decl.c:6775
+#: c-decl.c:3398 cp/decl.c:6818
#, c-format
msgid "two or more data types in declaration of `%s'"
msgstr ""
-#: c-decl.c:3408 cp/decl.c:6780
+#: c-decl.c:3418 cp/decl.c:6823
#, c-format
msgid "`%s' fails to be a typedef or built in type"
msgstr ""
-#: c-decl.c:3447
+#: c-decl.c:3457
#, c-format
msgid "type defaults to `int' in declaration of `%s'"
msgstr ""
-#: c-decl.c:3476
+#: c-decl.c:3486
#, c-format
msgid "both long and short specified for `%s'"
msgstr ""
-#: c-decl.c:3480 cp/decl.c:6880
+#: c-decl.c:3490 cp/decl.c:6923
#, c-format
msgid "long or short specified with char for `%s'"
msgstr ""
-#: c-decl.c:3487 cp/decl.c:6884
+#: c-decl.c:3497 cp/decl.c:6927
#, c-format
msgid "long or short specified with floating type for `%s'"
msgstr ""
-#: c-decl.c:3490
+#: c-decl.c:3500
msgid "the only valid combination is `long double'"
msgstr ""
-#: c-decl.c:3496
+#: c-decl.c:3506
#, c-format
msgid "both signed and unsigned specified for `%s'"
msgstr ""
-#: c-decl.c:3498 cp/decl.c:6873
+#: c-decl.c:3508 cp/decl.c:6916
#, c-format
msgid "long, short, signed or unsigned invalid for `%s'"
msgstr ""
-#: c-decl.c:3504 cp/decl.c:6893
+#: c-decl.c:3514 cp/decl.c:6936
#, c-format
msgid "long, short, signed or unsigned used invalidly for `%s'"
msgstr ""
-#: c-decl.c:3522 cp/decl.c:6914
+#: c-decl.c:3532 cp/decl.c:6957
#, c-format
msgid "complex invalid for `%s'"
msgstr ""
-#: c-decl.c:3564
+#: c-decl.c:3574
msgid "ISO C90 does not support complex types"
msgstr ""
-#: c-decl.c:3576
+#: c-decl.c:3586
msgid "ISO C does not support plain `complex' meaning `double complex'"
msgstr ""
-#: c-decl.c:3582 c-decl.c:3594
+#: c-decl.c:3592 c-decl.c:3604
msgid "ISO C does not support complex integer types"
msgstr ""
-#: c-decl.c:3609 c-decl.c:4067 cp/decl.c:7506
+#: c-decl.c:3632 c-decl.c:4090 cp/decl.c:7549
msgid "duplicate `const'"
msgstr ""
-#: c-decl.c:3611 c-decl.c:4071 cp/decl.c:7510
+#: c-decl.c:3634 c-decl.c:4094 cp/decl.c:7553
msgid "duplicate `restrict'"
msgstr ""
-#: c-decl.c:3613 c-decl.c:4069 cp/decl.c:7508
+#: c-decl.c:3636 c-decl.c:4092 cp/decl.c:7551
msgid "duplicate `volatile'"
msgstr ""
-#: c-decl.c:3641 cp/decl.c:7077
+#: c-decl.c:3664 cp/decl.c:7120
#, c-format
msgid "multiple storage classes in declaration of `%s'"
msgstr ""
-#: c-decl.c:3651
+#: c-decl.c:3674
msgid "function definition declared `auto'"
msgstr ""
-#: c-decl.c:3653
+#: c-decl.c:3676
msgid "function definition declared `register'"
msgstr ""
-#: c-decl.c:3655
+#: c-decl.c:3678
msgid "function definition declared `typedef'"
msgstr ""
-#: c-decl.c:3657
+#: c-decl.c:3680
msgid "function definition declared `__thread'"
msgstr ""
-#: c-decl.c:3670
+#: c-decl.c:3693
#, c-format
msgid "storage class specified for structure field `%s'"
msgstr ""
-#: c-decl.c:3674 cp/decl.c:7122
+#: c-decl.c:3697 cp/decl.c:7165
#, c-format
msgid "storage class specified for parameter `%s'"
msgstr ""
-#: c-decl.c:3677 cp/decl.c:7124
+#: c-decl.c:3700 cp/decl.c:7167
msgid "storage class specified for typename"
msgstr ""
-#: c-decl.c:3689 cp/decl.c:7139
+#: c-decl.c:3712 cp/decl.c:7182
#, c-format
msgid "`%s' initialized and declared `extern'"
msgstr ""
-#: c-decl.c:3691 cp/decl.c:7142
+#: c-decl.c:3714 cp/decl.c:7185
#, c-format
msgid "`%s' has both `extern' and initializer"
msgstr ""
-#: c-decl.c:3696
+#: c-decl.c:3719
#, c-format
msgid "file-scope declaration of `%s' specifies `auto'"
msgstr ""
-#: c-decl.c:3701 cp/decl.c:7146
+#: c-decl.c:3724 cp/decl.c:7189
#, c-format
msgid "nested function `%s' declared `extern'"
msgstr ""
-#: c-decl.c:3707 cp/decl.c:7156
+#: c-decl.c:3730 cp/decl.c:7199
#, c-format
msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgstr ""
@@ -1005,464 +1113,440 @@ msgstr ""
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
-#: c-decl.c:3746 c-decl.c:3939
+#: c-decl.c:3769 c-decl.c:3962
msgid "static or type qualifiers in non-parameter array declarator"
msgstr ""
-#: c-decl.c:3790
+#: c-decl.c:3813
#, c-format
msgid "declaration of `%s' as array of voids"
msgstr ""
-#: c-decl.c:3796
+#: c-decl.c:3819
#, c-format
msgid "declaration of `%s' as array of functions"
msgstr ""
-#: c-decl.c:3801
+#: c-decl.c:3824
msgid "invalid use of structure with flexible array member"
msgstr ""
-#: c-decl.c:3820
+#: c-decl.c:3843
#, c-format
msgid "size of array `%s' has non-integer type"
msgstr ""
-#: c-decl.c:3825
+#: c-decl.c:3848
#, c-format
msgid "ISO C forbids zero-size array `%s'"
msgstr ""
-#: c-decl.c:3832
+#: c-decl.c:3855
#, c-format
msgid "size of array `%s' is negative"
msgstr ""
-#: c-decl.c:3845
+#: c-decl.c:3868
#, c-format
msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
msgstr ""
-#: c-decl.c:3848
+#: c-decl.c:3871
#, c-format
msgid "ISO C90 forbids variable-size array `%s'"
msgstr ""
-#: c-decl.c:3878 c-decl.c:4093 cp/decl.c:7680
+#: c-decl.c:3901 c-decl.c:4116 cp/decl.c:7723
#, c-format
msgid "size of array `%s' is too large"
msgstr ""
-#: c-decl.c:3904
+#: c-decl.c:3927
msgid "ISO C90 does not support flexible array members"
msgstr ""
-#: c-decl.c:3914
+#: c-decl.c:3937
msgid "array type has incomplete element type"
msgstr ""
-#: c-decl.c:3959 cp/decl.c:7277
+#: c-decl.c:3982 cp/decl.c:7320
#, c-format
msgid "`%s' declared as function returning a function"
msgstr ""
-#: c-decl.c:3964 cp/decl.c:7282
+#: c-decl.c:3987 cp/decl.c:7325
#, c-format
msgid "`%s' declared as function returning an array"
msgstr ""
-#: c-decl.c:3992
+#: c-decl.c:4015
msgid "ISO C forbids qualified void function return type"
msgstr ""
-#: c-decl.c:3996
+#: c-decl.c:4019
msgid "type qualifiers ignored on function return type"
msgstr ""
-#: c-decl.c:4025 c-decl.c:4108 c-decl.c:4232 c-decl.c:4318
+#: c-decl.c:4048 c-decl.c:4131 c-decl.c:4255 c-decl.c:4341
msgid "ISO C forbids qualified function types"
msgstr ""
-#: c-decl.c:4065 cp/decl.c:7502
+#: c-decl.c:4088 cp/decl.c:7545
msgid "invalid type modifier within pointer declarator"
msgstr ""
-#: c-decl.c:4143
+#: c-decl.c:4166
msgid "ISO C forbids const or volatile function types"
msgstr ""
-#: c-decl.c:4163 cp/decl.c:7962
+#: c-decl.c:4186 cp/decl.c:8005
#, c-format
msgid "variable or field `%s' declared void"
msgstr ""
-#: c-decl.c:4196
+#: c-decl.c:4219
msgid "attributes in parameter array declarator ignored"
msgstr ""
-#: c-decl.c:4221
+#: c-decl.c:4244
msgid "invalid type modifier within array declarator"
msgstr ""
-#: c-decl.c:4266
+#: c-decl.c:4289
#, c-format
msgid "field `%s' declared as a function"
msgstr ""
-#: c-decl.c:4272
+#: c-decl.c:4295
#, c-format
msgid "field `%s' has incomplete type"
msgstr ""
-#: c-decl.c:4298 c-decl.c:4300 c-decl.c:4302 c-decl.c:4309
+#: c-decl.c:4321 c-decl.c:4323 c-decl.c:4325 c-decl.c:4332
#, c-format
msgid "invalid storage class for function `%s'"
msgstr ""
-#: c-decl.c:4324
+#: c-decl.c:4347
msgid "`noreturn' function returns non-void value"
msgstr ""
-#: c-decl.c:4339
+#: c-decl.c:4362
msgid "cannot inline function `main'"
msgstr ""
-#: c-decl.c:4392
+#: c-decl.c:4415
msgid "variable previously declared `static' redeclared `extern'"
msgstr ""
-#: c-decl.c:4401
+#: c-decl.c:4424
msgid "%Jvariable '%D' declared `inline'"
msgstr ""
#. A mere warning is sure to result in improper semantics
#. at runtime. Don't bother to allow this to compile.
-#: c-decl.c:4429 cp/decl.c:5818
+#: c-decl.c:4452 cp/decl.c:5877
msgid "thread-local storage not supported for this target"
msgstr ""
-#: c-decl.c:4490 c-decl.c:5504
+#: c-decl.c:4513 c-decl.c:5470
msgid "function declaration isn't a prototype"
msgstr ""
-#: c-decl.c:4496
+#: c-decl.c:4519
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c-decl.c:4524
+#: c-decl.c:4547
#, c-format
msgid "parameter `%s' has incomplete type"
msgstr ""
-#: c-decl.c:4527
+#: c-decl.c:4550
msgid "parameter has incomplete type"
msgstr ""
-#: c-decl.c:4576
+#: c-decl.c:4599
msgid "\"void\" as only parameter may not be qualified"
msgstr ""
-#: c-decl.c:4597
+#: c-decl.c:4620
msgid "\"void\" must be the only parameter"
msgstr ""
-#: c-decl.c:4614
+#: c-decl.c:4637
msgid "%Jparameter \"%D\" has just a forward declaration"
msgstr ""
#. The first %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:4642
+#: c-decl.c:4665
#, c-format
msgid "\"%s %s\" declared inside parameter list"
msgstr ""
#. The %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:4646
+#: c-decl.c:4669
#, c-format
msgid "anonymous %s declared inside parameter list"
msgstr ""
-#: c-decl.c:4650
+#: c-decl.c:4673
msgid ""
"its scope is only this definition or declaration, which is probably not what "
"you want"
msgstr ""
-#: c-decl.c:4735
+#: c-decl.c:4758
#, c-format
msgid "redefinition of `union %s'"
msgstr ""
-#: c-decl.c:4737
+#: c-decl.c:4760
#, c-format
msgid "redefinition of `struct %s'"
msgstr ""
-#: c-decl.c:4805 cp/decl.c:3498
+#: c-decl.c:4828 cp/decl.c:3521
msgid "declaration does not declare anything"
msgstr ""
-#: c-decl.c:4849 c-decl.c:4865
+#: c-decl.c:4873 c-decl.c:4889
msgid "%Jduplicate member '%D'"
msgstr ""
-#: c-decl.c:4899 c-decl.c:4902
+#: c-decl.c:4923 c-decl.c:4926
#, c-format
msgid "%s defined inside parms"
msgstr ""
-#: c-decl.c:4900 c-decl.c:4903 c-decl.c:4914
+#: c-decl.c:4924 c-decl.c:4927 c-decl.c:4938
msgid "union"
msgstr ""
-#: c-decl.c:4900 c-decl.c:4903
+#: c-decl.c:4924 c-decl.c:4927
msgid "structure"
msgstr ""
-#: c-decl.c:4913
+#: c-decl.c:4937
#, c-format
msgid "%s has no %s"
msgstr ""
-#: c-decl.c:4914
+#: c-decl.c:4938
msgid "struct"
msgstr ""
-#: c-decl.c:4915
+#: c-decl.c:4939
msgid "named members"
msgstr ""
-#: c-decl.c:4915
+#: c-decl.c:4939
msgid "members"
msgstr ""
-#: c-decl.c:4954
+#: c-decl.c:4978
#, c-format
msgid "nested redefinition of `%s'"
msgstr ""
-#: c-decl.c:4966
-msgid "%Jbit-field '%D' width not an integer constant"
-msgstr ""
-
-#: c-decl.c:4977
-msgid "%Jbit-field '%D' has invalid type"
-msgstr ""
-
-#: c-decl.c:4989
-msgid "%Jbit-field '%D' type invalid in ISO C"
-msgstr ""
-
-#: c-decl.c:5000
-msgid "%Jnegative width in bit-field '%D'"
-msgstr ""
-
-#: c-decl.c:5002
-msgid "%Jwidth of '%D' exceeds its type"
-msgstr ""
-
-#: c-decl.c:5004
-msgid "%Jzero width for bit-field '%D'"
-msgstr ""
-
-#: c-decl.c:5017
-msgid "%J'%D' is narrower than values of its type"
-msgstr ""
-
-#: c-decl.c:5034
+#: c-decl.c:4998
msgid "%Jflexible array member in union"
msgstr ""
-#: c-decl.c:5036
+#: c-decl.c:5000
msgid "%Jflexible array member not at end of struct"
msgstr ""
-#: c-decl.c:5038
+#: c-decl.c:5002
msgid "%Jflexible array member in otherwise empty struct"
msgstr ""
-#: c-decl.c:5043
+#: c-decl.c:5007
msgid "%Jinvalid use of structure with flexible array member"
msgstr ""
-#: c-decl.c:5138
+#: c-decl.c:5102
msgid "union cannot be made transparent"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c-decl.c:5207
+#: c-decl.c:5171
#, c-format
msgid "redeclaration of `enum %s'"
msgstr ""
-#: c-decl.c:5238
+#: c-decl.c:5202
msgid "enum defined inside parms"
msgstr ""
-#: c-decl.c:5271
+#: c-decl.c:5235
msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c-decl.c:5374
+#: c-decl.c:5338
#, c-format
msgid "enumerator value for `%s' not integer constant"
msgstr ""
-#: c-decl.c:5387
+#: c-decl.c:5351
msgid "overflow in enumeration values"
msgstr ""
-#: c-decl.c:5392
+#: c-decl.c:5356
msgid "ISO C restricts enumerator values to range of `int'"
msgstr ""
-#: c-decl.c:5466
+#: c-decl.c:5432
msgid "return type is an incomplete type"
msgstr ""
-#: c-decl.c:5474
+#: c-decl.c:5440
msgid "return type defaults to `int'"
msgstr ""
-#: c-decl.c:5510
+#: c-decl.c:5476
msgid "%Jno previous prototype for '%D'"
msgstr ""
-#: c-decl.c:5516
+#: c-decl.c:5482
msgid "%J'%D' was used with no prototype before its definition"
msgstr ""
-#: c-decl.c:5523
+#: c-decl.c:5489
msgid "%Jno previous declaration for '%D'"
msgstr ""
-#: c-decl.c:5529
+#: c-decl.c:5495
msgid "%J`%D' was used with no declaration before its definition"
msgstr ""
-#: c-decl.c:5565 c-decl.c:6069
+#: c-decl.c:5531 c-decl.c:6037
msgid "%Jreturn type of '%D' is not `int'"
msgstr ""
-#: c-decl.c:5580
+#: c-decl.c:5546
msgid "%Jfirst argument of '%D' should be `int'"
msgstr ""
-#: c-decl.c:5589
+#: c-decl.c:5555
msgid "%Jsecond argument of '%D' should be 'char **'"
msgstr ""
-#: c-decl.c:5598
+#: c-decl.c:5564
msgid "%Jthird argument of '%D' should probably be 'char **'"
msgstr ""
-#: c-decl.c:5608
+#: c-decl.c:5574
msgid "%J'%D' takes only zero or two arguments"
msgstr ""
-#: c-decl.c:5611
+#: c-decl.c:5577
msgid "%J'%D' is normally a non-static function"
msgstr ""
-#: c-decl.c:5667
+#: c-decl.c:5633
msgid "%Jold-style parameter declarations in prototyped function definition"
msgstr ""
-#: c-decl.c:5681
+#: c-decl.c:5647
msgid "%Jparameter name omitted"
msgstr ""
-#: c-decl.c:5756
+#: c-decl.c:5722
msgid "%Jparameter name missing from parameter list"
msgstr ""
-#: c-decl.c:5766
+#: c-decl.c:5732
msgid "%J\"%D\" declared as a non-parameter"
msgstr ""
-#: c-decl.c:5771
+#: c-decl.c:5737
msgid "%Jmultiple parameters named \"%D\""
msgstr ""
-#: c-decl.c:5779
+#: c-decl.c:5745
msgid "%Jparameter \"%D\" declared void"
msgstr ""
-#: c-decl.c:5794 c-decl.c:5796
+#: c-decl.c:5760 c-decl.c:5762
msgid "%Jtype of \"%D\" defaults to \"int\""
msgstr ""
-#: c-decl.c:5810
+#: c-decl.c:5776
msgid "%Jparameter \"%D\" has incomplete type"
msgstr ""
-#: c-decl.c:5816
+#: c-decl.c:5782
msgid "%Jdeclaration for parameter \"%D\" but no such parameter"
msgstr ""
-#: c-decl.c:5868
+#: c-decl.c:5834
msgid "number of arguments doesn't match prototype"
msgstr ""
-#: c-decl.c:5869 c-decl.c:5900 c-decl.c:5907
+#: c-decl.c:5835 c-decl.c:5866 c-decl.c:5873
msgid "%Hprototype declaration"
msgstr ""
-#: c-decl.c:5898
+#: c-decl.c:5864
msgid "promoted argument \"%D\" doesn't match prototype"
msgstr ""
-#: c-decl.c:5906
+#: c-decl.c:5872
msgid "argument \"%D\" doesn't match prototype"
msgstr ""
-#: c-decl.c:6101 cp/decl.c:10817
+#: c-decl.c:6069 cp/decl.c:10876
msgid "no return statement in function returning non-void"
msgstr ""
-#: c-decl.c:6108
+#: c-decl.c:6076
msgid "this function may return with or without a value"
msgstr ""
#. If we get here, declarations have been used in a for loop without
#. the C99 for loop scope. This doesn't make much sense, so don't
#. allow it.
-#: c-decl.c:6205
+#: c-decl.c:6175
msgid "'for' loop initial declaration used outside C99 mode"
msgstr ""
-#: c-decl.c:6229
+#: c-decl.c:6199
#, c-format
msgid "'struct %s' declared in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6232
+#: c-decl.c:6202
#, c-format
msgid "'union %s' declared in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6235
+#: c-decl.c:6205
#, c-format
msgid "'enum %s' declared in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6243
+#: c-decl.c:6213
msgid "%Jdeclaration of non-variable '%D' in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6246
+#: c-decl.c:6216
msgid "%Jdeclaration of static variable '%D' in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6249
+#: c-decl.c:6219
msgid ""
"%Jdeclaration of 'extern' variable '%D' in 'for' loop initial declaration"
msgstr ""
-#: c-decl.c:6572
+#: c-decl.c:6532
msgid "%Jredefinition of global '%D'"
msgstr ""
+#: c-decl.c:6533
+msgid "%J'%D' previously defined here"
+msgstr ""
+
#: c-format.c:94 c-format.c:210
msgid "format string has invalid operand number"
msgstr ""
@@ -1975,6 +2059,7 @@ msgid "ignoring duplicate directory \"%s\"\n"
msgstr ""
#: c-incpath.c:71
+#, c-format
msgid " as it is a non-system directory that duplicates a system directory\n"
msgstr ""
@@ -1984,207 +2069,201 @@ msgid "ignoring nonexistent directory \"%s\"\n"
msgstr ""
#: c-incpath.c:273
+#, c-format
msgid "#include \"...\" search starts here:\n"
msgstr ""
#: c-incpath.c:277
+#, c-format
msgid "#include <...> search starts here:\n"
msgstr ""
#: c-incpath.c:282
+#, c-format
msgid "End of search list.\n"
msgstr ""
-#: c-lex.c:209
-msgid "too late for # directive to set debug directory"
-msgstr ""
-
-#: c-lex.c:251
+#: c-lex.c:240
msgid "badly nested C headers from preprocessor"
msgstr ""
-#: c-lex.c:292
+#: c-lex.c:281
#, c-format
msgid "ignoring #pragma %s %s"
msgstr ""
#. ... or not.
-#: c-lex.c:396
+#: c-lex.c:385
msgid "%Hstray '@' in program"
msgstr ""
-#: c-lex.c:404
+#: c-lex.c:393
#, c-format
msgid "missing terminating %c character"
msgstr ""
-#: c-lex.c:406
+#: c-lex.c:395
#, c-format
msgid "stray '%c' in program"
msgstr ""
-#: c-lex.c:408
+#: c-lex.c:397
#, c-format
msgid "stray '\\%o' in program"
msgstr ""
-#: c-lex.c:538
+#: c-lex.c:535
msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-lex.c:541
+#: c-lex.c:538
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-lex.c:557
+#: c-lex.c:554
#, c-format
msgid "integer constant is too large for \"%s\" type"
msgstr ""
-#: c-lex.c:623
+#: c-lex.c:620
#, c-format
msgid "floating constant exceeds range of \"%s\""
msgstr ""
-#: c-lex.c:699
+#: c-lex.c:696
msgid "traditional C rejects string constant concatenation"
msgstr ""
-#: c-objc-common.c:81
+#: c-objc-common.c:82
msgid ""
"%Jfunction '%F' can never be inlined because it is supressed using -fno-"
"inline"
msgstr ""
-#: c-objc-common.c:91
+#: c-objc-common.c:92
msgid ""
"%Jfunction '%F' can never be inlined because it might not be bound within "
"this unit of translation"
msgstr ""
-#: c-objc-common.c:99
+#: c-objc-common.c:100
msgid ""
"%Jfunction '%F' can never be inlined because it uses attributes conflicting "
"with inlining"
msgstr ""
-#: c-objc-common.c:114
+#: c-objc-common.c:115
msgid "%Jfunction '%F' can never be inlined because it has pending sizes"
msgstr ""
-#: c-objc-common.c:127
+#: c-objc-common.c:128
msgid ""
"%Jnested function '%F' can never be inlined because it has possibly saved "
"pending sizes"
msgstr ""
-#: c-opts.c:140
+#: c-opts.c:141
#, c-format
msgid "no class name specified with \"%s\""
msgstr ""
-#: c-opts.c:144
+#: c-opts.c:145
#, c-format
msgid "assertion missing after \"%s\""
msgstr ""
-#: c-opts.c:149
+#: c-opts.c:150
#, c-format
msgid "macro name missing after \"%s\""
msgstr ""
-#: c-opts.c:156
+#: c-opts.c:157
#, c-format
msgid "missing path after \"%s\""
msgstr ""
-#: c-opts.c:165
+#: c-opts.c:166
#, c-format
msgid "missing filename after \"%s\""
msgstr ""
-#: c-opts.c:170
+#: c-opts.c:171
#, c-format
msgid "missing makefile target after \"%s\""
msgstr ""
-#: c-opts.c:290
+#: c-opts.c:291
msgid "-I- specified twice"
msgstr ""
-#: c-opts.c:689
+#: c-opts.c:692
#, c-format
msgid "switch \"%s\" is no longer supported"
msgstr ""
-#: c-opts.c:705
-#, c-format
-msgid "switch \"%s\" is deprecated, please see documentation for details"
-msgstr ""
-
-#: c-opts.c:826
+#: c-opts.c:816
msgid ""
"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr ""
-#: c-opts.c:988
+#: c-opts.c:982
msgid "output filename specified twice"
msgstr ""
-#: c-opts.c:1110
+#: c-opts.c:1106
msgid "-Wformat-y2k ignored without -Wformat"
msgstr ""
-#: c-opts.c:1112
+#: c-opts.c:1108
msgid "-Wformat-extra-args ignored without -Wformat"
msgstr ""
-#: c-opts.c:1114
+#: c-opts.c:1110
msgid "-Wformat-zero-length ignored without -Wformat"
msgstr ""
-#: c-opts.c:1116
+#: c-opts.c:1112
msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr ""
-#: c-opts.c:1118
+#: c-opts.c:1114
msgid "-Wformat-security ignored without -Wformat"
msgstr ""
-#: c-opts.c:1120
+#: c-opts.c:1116
msgid "-Wmissing-format-attribute ignored without -Wformat"
msgstr ""
-#: c-opts.c:1134
+#: c-opts.c:1130
#, c-format
msgid "opening output file %s: %m"
msgstr ""
-#: c-opts.c:1139
+#: c-opts.c:1135
#, c-format
msgid "too many filenames given. Type %s --help for usage"
msgstr ""
-#: c-opts.c:1207
+#: c-opts.c:1213
msgid "YYDEBUG not defined"
msgstr ""
-#: c-opts.c:1252
+#: c-opts.c:1260
#, c-format
msgid "opening dependency file %s: %m"
msgstr ""
-#: c-opts.c:1262
+#: c-opts.c:1270
#, c-format
msgid "closing dependency file %s: %m"
msgstr ""
-#: c-opts.c:1265
+#: c-opts.c:1273
#, c-format
msgid "when writing output to %s: %m"
msgstr ""
-#: c-opts.c:1335
+#: c-opts.c:1343
msgid "to generate dependencies you must specify either -M or -MM"
msgstr ""
@@ -2196,90 +2275,285 @@ msgstr ""
msgid "<command line>"
msgstr ""
-#: c-pch.c:111 graph.c:402 toplev.c:1516 toplev.c:4480 f/com.c:14200
-#: java/jcf-parse.c:890 java/jcf-parse.c:1037 java/lex.c:1828
-#: objc/objc-act.c:503
+#: c-opts.c:1502
+msgid "too late for # directive to set debug directory"
+msgstr ""
+
+#. Like YYERROR but do call yyerror.
+#: c-parse.y:54 c-parse.c:5381 gengtype-yacc.c:1514 java/parse-scan.c:3063
+#: java/parse.c:6067 objc/objc-parse.y:54 objc/objc-parse.c:6644
+msgid "syntax error"
+msgstr ""
+
+#: c-parse.c:2118 gengtype-yacc.c:545 java/parse-scan.c:1932 java/parse.c:2875
+#: objc/objc-parse.c:2717
+msgid "syntax error: cannot back up"
+msgstr ""
+
+#: c-parse.y:320 objc/objc-parse.y:344
+msgid "ISO C forbids an empty source file"
+msgstr ""
+
+#: c-parse.y:349 c-typeck.c:6217 objc/objc-parse.y:374
+msgid "argument of `asm' is not a constant string"
+msgstr ""
+
+#: c-parse.y:357 objc/objc-parse.y:382
+msgid "ISO C forbids data definition with no type or storage class"
+msgstr ""
+
+#: c-parse.y:359 objc/objc-parse.y:384
+msgid "data definition has no type or storage class"
+msgstr ""
+
+#: c-parse.y:372 objc/objc-parse.y:397
+msgid "ISO C does not allow extra `;' outside of a function"
+msgstr ""
+
+#: c-parse.y:429 cppexp.c:1253
+msgid "traditional C rejects the unary plus operator"
+msgstr ""
+
+#: c-parse.y:476 objc/objc-parse.y:501
+msgid "`sizeof' applied to a bit-field"
+msgstr ""
+
+#: c-parse.y:563 objc/objc-parse.y:588
+msgid "ISO C forbids omitting the middle term of a ?: expression"
+msgstr ""
+
+#: c-parse.y:611 objc/objc-parse.y:636
+msgid "ISO C89 forbids compound literals"
+msgstr ""
+
+#: c-parse.y:625 objc/objc-parse.y:650
+msgid "ISO C forbids braced-groups within expressions"
+msgstr ""
+
+#: c-parse.y:653 objc/objc-parse.y:678
+msgid "first argument to __builtin_choose_expr not a constant"
+msgstr ""
+
+#: c-parse.y:696 objc/objc-parse.y:737
+msgid "traditional C rejects ISO C style function definitions"
+msgstr ""
+
+#: c-parse.y:699 c-parse.y:705 objc/objc-parse.y:740 objc/objc-parse.y:746
+msgid "old-style parameter declaration"
+msgstr ""
+
+#: c-parse.y:967 c-parse.y:973 c-parse.y:979 c-parse.y:985 c-parse.y:1006
+#: c-parse.y:1012 c-parse.y:1018 c-parse.y:1024 c-parse.y:1057 c-parse.y:1063
+#: c-parse.y:1069 c-parse.y:1075 c-parse.y:1120 c-parse.y:1126 c-parse.y:1132
+#: c-parse.y:1138 objc/objc-parse.y:1008 objc/objc-parse.y:1014
+#: objc/objc-parse.y:1020 objc/objc-parse.y:1026 objc/objc-parse.y:1047
+#: objc/objc-parse.y:1053 objc/objc-parse.y:1059 objc/objc-parse.y:1065
+#: objc/objc-parse.y:1098 objc/objc-parse.y:1104 objc/objc-parse.y:1110
+#: objc/objc-parse.y:1116 objc/objc-parse.y:1161 objc/objc-parse.y:1167
+#: objc/objc-parse.y:1173 objc/objc-parse.y:1179
#, c-format
-msgid "can't open %s: %m"
+msgid "`%s' is not at beginning of declaration"
+msgstr ""
+
+#: c-parse.y:1300 objc/objc-parse.y:1350
+msgid "`typeof' applied to a bit-field"
+msgstr ""
+
+#: c-parse.y:1427 objc/objc-parse.y:1477
+msgid "ISO C forbids empty initializer braces"
+msgstr ""
+
+#: c-parse.y:1441 objc/objc-parse.y:1491
+msgid "ISO C89 forbids specifying subobject to initialize"
+msgstr ""
+
+#: c-parse.y:1444 objc/objc-parse.y:1494
+msgid "obsolete use of designated initializer without `='"
+msgstr ""
+
+#: c-parse.y:1448 objc/objc-parse.y:1498
+msgid "obsolete use of designated initializer with `:'"
+msgstr ""
+
+#: c-parse.y:1475 objc/objc-parse.y:1525
+msgid "ISO C forbids specifying range of elements to initialize"
+msgstr ""
+
+#: c-parse.y:1483 c-parse.y:1514 objc/objc-parse.y:1533 objc/objc-parse.y:1564
+msgid "ISO C forbids nested functions"
+msgstr ""
+
+#: c-parse.y:1691 objc/objc-parse.y:1743
+msgid "ISO C forbids forward references to `enum' types"
+msgstr ""
+
+#: c-parse.y:1703 cp/parser.c:9282 objc/objc-parse.y:1755
+msgid "comma at end of enumerator list"
+msgstr ""
+
+#: c-parse.y:1723 objc/objc-parse.y:1775
+msgid "no semicolon at end of struct or union"
msgstr ""
-#: c-pch.c:131
+#: c-parse.y:1732 objc/objc-parse.y:1784 objc/objc-parse.y:2846
+msgid "extra semicolon in struct or union specified"
+msgstr ""
+
+#: c-parse.y:1745 objc/objc-parse.y:1800
+msgid "ISO C doesn't support unnamed structs/unions"
+msgstr ""
+
+#: c-parse.y:1754 objc/objc-parse.y:1809
+msgid "ISO C forbids member declarations with no members"
+msgstr ""
+
+#: c-parse.y:1915 objc/objc-parse.y:1970
+msgid "label at end of compound statement"
+msgstr ""
+
+#: c-parse.y:1934 objc/objc-parse.y:1989
+msgid "ISO C90 forbids mixed declarations and code"
+msgstr ""
+
+#: c-parse.y:2012 objc/objc-parse.y:2069
+msgid "ISO C forbids label declarations"
+msgstr ""
+
+#: c-parse.y:2062 objc/objc-parse.y:2119
+msgid "braced-group within expression allowed only inside a function"
+msgstr ""
+
+#: c-parse.y:2184 objc/objc-parse.y:2241
+msgid "empty body in an else-statement"
+msgstr ""
+
+#: c-parse.y:2192 objc/objc-parse.y:2249
+msgid "%Hempty body in an if-statement"
+msgstr ""
+
+#: c-parse.y:2272 cp/parser.c:6028 objc/objc-parse.y:2329
+msgid "break statement not within loop or switch"
+msgstr ""
+
+#: c-parse.y:2281 cp/parser.c:6039 objc/objc-parse.y:2338
+msgid "continue statement not within a loop"
+msgstr ""
+
+#: c-parse.y:2323 objc/objc-parse.y:2380
+msgid "ISO C forbids `goto *expr;'"
+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:2440 objc/objc-parse.y:2548
+msgid "ISO C requires a named argument before `...'"
+msgstr ""
+
+#: c-parse.y:2538 objc/objc-parse.y:2646
+msgid "`...' in old-style identifier list"
+msgstr ""
+
+#: c-parse.c:5377 gengtype-yacc.c:1510 java/parse-scan.c:3059
+#: java/parse.c:6063 objc/objc-parse.c:6640
+msgid "syntax error; also virtual memory exhausted"
+msgstr ""
+
+#: c-parse.c:5495 gengtype-yacc.c:1628 java/parse-scan.c:3177
+#: java/parse.c:6181 objc/objc-parse.c:6758
+msgid "parser stack overflow"
+msgstr ""
+
+#: c-parse.y:2968 objc/objc-parse.y:3663
+#, c-format
+msgid "syntax error at '%s' token"
+msgstr ""
+
+#: c-pch.c:112
+#, c-format
+msgid "can't create precompiled header %s: %m"
+msgstr ""
+
+#: c-pch.c:132
#, c-format
msgid "can't write to %s: %m"
msgstr ""
-#: c-pch.c:137
+#: c-pch.c:138
#, c-format
msgid "`%s' is not a valid output file"
msgstr ""
-#: c-pch.c:166 c-pch.c:182
+#: c-pch.c:167 c-pch.c:183 c-pch.c:195
#, c-format
msgid "can't write %s: %m"
msgstr ""
-#: c-pch.c:172
+#: c-pch.c:173
#, c-format
msgid "can't seek in %s: %m"
msgstr ""
-#: c-pch.c:180 c-pch.c:216 c-pch.c:244 c-pch.c:249 c-pch.c:319
+#: c-pch.c:181 c-pch.c:221 c-pch.c:249 c-pch.c:254 c-pch.c:324
#, c-format
msgid "can't read %s: %m"
msgstr ""
-#: c-pch.c:229
+#: c-pch.c:234
#, c-format
msgid "%s: not compatible with this GCC version"
msgstr ""
#. It's a PCH for the wrong language.
-#: c-pch.c:232
+#: c-pch.c:237
#, c-format
msgid "%s: not for %s"
msgstr ""
#. Not any kind of PCH.
-#: c-pch.c:236
+#: c-pch.c:241
#, c-format
msgid "%s: not a PCH file"
msgstr ""
-#: c-pch.c:255
+#: c-pch.c:260
#, c-format
msgid "%s: created on host `%.*s', but used on host `%s'"
msgstr ""
-#: c-pch.c:265
+#: c-pch.c:270
#, c-format
msgid "%s: created for target `%.*s', but used for target `%s'"
msgstr ""
-#: c-pch.c:278
+#: c-pch.c:283
#, c-format
msgid "%s: created by version `%.*s', but this is version `%s'"
msgstr ""
-#: c-pch.c:294
+#: c-pch.c:299
#, c-format
msgid "%s: created with -g%s, but used with -g%s"
msgstr ""
-#: c-pch.c:308
+#: c-pch.c:313
#, c-format
msgid "%s: had text segment at different address"
msgstr ""
-#: c-pch.c:325 cpperror.c:176 gcc.c:6534
+#: c-pch.c:330 cpperror.c:176 gcc.c:6547
#, c-format
msgid "%s: %s"
msgstr ""
-#: c-pch.c:356
+#: c-pch.c:361
msgid "calling fdopen"
msgstr ""
-#: c-pch.c:364 c-pch.c:376
+#: c-pch.c:369 c-pch.c:381
msgid "reading"
msgstr ""
@@ -2370,34 +2644,26 @@ msgstr ""
msgid "asm declaration conflicts with previous rename"
msgstr ""
-#: c-semantics.c:595 cp/parser.c:5769
-msgid "break statement not within loop or switch"
-msgstr ""
-
-#: c-semantics.c:613 cp/parser.c:5780
-msgid "continue statement not within a loop"
-msgstr ""
-
-#: c-semantics.c:701
+#: c-semantics.c:697
msgid "destructor needed for `%D'"
msgstr ""
-#: c-semantics.c:702
+#: c-semantics.c:698
msgid "where case label appears here"
msgstr ""
-#: c-semantics.c:705
+#: c-semantics.c:701
msgid ""
"(enclose actions of previous case statements requiring destructors in their "
"own scope.)"
msgstr ""
-#: c-semantics.c:741 c-typeck.c:6174 cp/semantics.c:1055
+#: c-semantics.c:737 c-typeck.c:6239 cp/semantics.c:1070
#, c-format
msgid "%s qualifier ignored on asm"
msgstr ""
-#: c-semantics.c:995
+#: c-semantics.c:991
msgid "will never be executed"
msgstr ""
@@ -2406,7 +2672,7 @@ msgstr ""
msgid "`%s' has an incomplete type"
msgstr ""
-#: c-typeck.c:142 cp/call.c:2654
+#: c-typeck.c:142 cp/call.c:2532
msgid "invalid use of void expression"
msgstr ""
@@ -2433,1202 +2699,1248 @@ msgstr ""
msgid "function types not truly compatible in ISO C"
msgstr ""
-#: c-typeck.c:610
+#: c-typeck.c:611
msgid "types are not quite compatible"
msgstr ""
-#: c-typeck.c:819
+#: c-typeck.c:820
msgid "function return types not compatible due to `volatile'"
msgstr ""
-#: c-typeck.c:965 c-typeck.c:2100
+#: c-typeck.c:966 c-typeck.c:2143
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:1338
+#: c-typeck.c:1339
#, c-format
msgid "%s has no member named `%s'"
msgstr ""
-#: c-typeck.c:1374
+#: c-typeck.c:1375
#, c-format
msgid "request for member `%s' in something not a structure or union"
msgstr ""
-#: c-typeck.c:1403
+#: c-typeck.c:1404
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:1407
+#: c-typeck.c:1408
msgid "dereferencing `void *' pointer"
msgstr ""
-#: c-typeck.c:1424 cp/typeck.c:2064
+#: c-typeck.c:1425 cp/typeck.c:2104
#, c-format
msgid "invalid type argument of `%s'"
msgstr ""
-#: c-typeck.c:1442 cp/typeck.c:2089
+#: c-typeck.c:1443 cp/typeck.c:2129
msgid "subscript missing in array reference"
msgstr ""
-#: c-typeck.c:1463 cp/typeck.c:2131
+#: c-typeck.c:1464 cp/typeck.c:2171
msgid "array subscript has type `char'"
msgstr ""
-#: c-typeck.c:1471 c-typeck.c:1560 cp/typeck.c:2135 cp/typeck.c:2221
+#: c-typeck.c:1472 c-typeck.c:1561 cp/typeck.c:2175 cp/typeck.c:2261
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:1504
+#: c-typeck.c:1505
msgid "ISO C forbids subscripting `register' array"
msgstr ""
-#: c-typeck.c:1506
+#: c-typeck.c:1507
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:1539
+#: c-typeck.c:1540
msgid "subscript has type `char'"
msgstr ""
-#: c-typeck.c:1555 cp/typeck.c:2216
+#: c-typeck.c:1556 cp/typeck.c:2256
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: c-typeck.c:1585
+#: c-typeck.c:1586
#, c-format
msgid "local declaration of `%s' hides instance variable"
msgstr ""
-#: c-typeck.c:1677
+#: c-typeck.c:1679
msgid "called object is not a function"
msgstr ""
-#: c-typeck.c:1762 cp/typeck.c:2504
+#. This situation leads to run-time undefined behavior. We can't,
+#. therefore, simply error unless we can prove that all possible
+#. executions of the program must execute the code.
+#: c-typeck.c:1711
+msgid "function called through a non-compatible type"
+msgstr ""
+
+#: c-typeck.c:1805 cp/typeck.c:2544
msgid "too many arguments to function"
msgstr ""
-#: c-typeck.c:1783
+#: c-typeck.c:1826
#, c-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:1796
+#: c-typeck.c:1839
#, c-format
msgid "%s as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1799
+#: c-typeck.c:1842
#, c-format
msgid "%s as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:1802
+#: c-typeck.c:1845
#, c-format
msgid "%s as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1805
+#: c-typeck.c:1848
#, c-format
msgid "%s as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:1808
+#: c-typeck.c:1851
#, c-format
msgid "%s as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:1811
+#: c-typeck.c:1854
#, c-format
msgid "%s as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:1821
+#: c-typeck.c:1864
#, c-format
msgid "%s as `float' rather than `double' due to prototype"
msgstr ""
-#: c-typeck.c:1839
+#: c-typeck.c:1882
#, c-format
msgid "%s with different width due to prototype"
msgstr ""
-#: c-typeck.c:1865
+#: c-typeck.c:1908
#, c-format
msgid "%s as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:1867
+#: c-typeck.c:1910
#, c-format
msgid "%s as signed due to prototype"
msgstr ""
-#: c-typeck.c:1901 cp/typeck.c:2610
+#: c-typeck.c:1944 cp/typeck.c:2650
msgid "too few arguments to function"
msgstr ""
-#: c-typeck.c:1941
+#: c-typeck.c:1984
msgid "suggest parentheses around + or - inside shift"
msgstr ""
-#: c-typeck.c:1948
+#: c-typeck.c:1991
msgid "suggest parentheses around && within ||"
msgstr ""
-#: c-typeck.c:1957
+#: c-typeck.c:2000
msgid "suggest parentheses around arithmetic in operand of |"
msgstr ""
-#: c-typeck.c:1960
+#: c-typeck.c:2003
msgid "suggest parentheses around comparison in operand of |"
msgstr ""
-#: c-typeck.c:1969
+#: c-typeck.c:2012
msgid "suggest parentheses around arithmetic in operand of ^"
msgstr ""
-#: c-typeck.c:1972
+#: c-typeck.c:2015
msgid "suggest parentheses around comparison in operand of ^"
msgstr ""
-#: c-typeck.c:1979
+#: c-typeck.c:2022
msgid "suggest parentheses around + or - in operand of &"
msgstr ""
-#: c-typeck.c:1982
+#: c-typeck.c:2025
msgid "suggest parentheses around comparison in operand of &"
msgstr ""
-#: c-typeck.c:1989
+#: c-typeck.c:2032
msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
msgstr ""
-#: c-typeck.c:2052
+#: c-typeck.c:2095
msgid "pointer of type `void *' used in subtraction"
msgstr ""
-#: c-typeck.c:2054
+#: c-typeck.c:2097
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:2148
+#: c-typeck.c:2191
msgid "wrong type argument to unary plus"
msgstr ""
-#: c-typeck.c:2161
+#: c-typeck.c:2204
msgid "wrong type argument to unary minus"
msgstr ""
-#: c-typeck.c:2178
+#: c-typeck.c:2221
msgid "ISO C does not support `~' for complex conjugation"
msgstr ""
-#: c-typeck.c:2184
+#: c-typeck.c:2227
msgid "wrong type argument to bit-complement"
msgstr ""
-#: c-typeck.c:2192
+#: c-typeck.c:2235
msgid "wrong type argument to abs"
msgstr ""
-#: c-typeck.c:2204
+#: c-typeck.c:2247
msgid "wrong type argument to conjugation"
msgstr ""
-#: c-typeck.c:2218
+#: c-typeck.c:2261
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:2261
+#: c-typeck.c:2304
msgid "ISO C does not support `++' and `--' on complex types"
msgstr ""
-#: c-typeck.c:2276 c-typeck.c:2308
+#: c-typeck.c:2319 c-typeck.c:2351
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:2278 c-typeck.c:2310
+#: c-typeck.c:2321 c-typeck.c:2353
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:2299
+#: c-typeck.c:2342
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:2301
+#: c-typeck.c:2344
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:2426
+#: c-typeck.c:2469
msgid "invalid lvalue in unary `&'"
msgstr ""
-#: c-typeck.c:2458
+#: c-typeck.c:2501
#, c-format
msgid "attempt to take address of bit-field structure member `%s'"
msgstr ""
-#. Use `%s' to print the string in case there are any escape
-#. characters in the message.
-#: c-typeck.c:2535 c-typeck.c:3910 c-typeck.c:3925 c-typeck.c:3940
-#: final.c:2779 final.c:2781 gcc.c:4561 rtl-error.c:109 toplev.c:1371
-#: config/cris/cris.c:544 cp/parser.c:1778 cp/typeck.c:4072 java/expr.c:356
-#: java/verify.c:1456 java/verify.c:1457 java/verify.c:1472
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: c-typeck.c:2591
+#: c-typeck.c:2634
msgid "use of conditional expressions as lvalues is deprecated"
msgstr ""
-#: c-typeck.c:2594
+#: c-typeck.c:2637
msgid "use of compound expressions as lvalues is deprecated"
msgstr ""
-#: c-typeck.c:2597
+#: c-typeck.c:2640
msgid "use of cast expressions as lvalues is deprecated"
msgstr ""
-#: c-typeck.c:2612
+#: c-typeck.c:2655
#, c-format
msgid "%s of read-only member `%s'"
msgstr ""
-#: c-typeck.c:2616
+#: c-typeck.c:2659
#, c-format
msgid "%s of read-only variable `%s'"
msgstr ""
-#: c-typeck.c:2619
+#: c-typeck.c:2662
#, c-format
msgid "%s of read-only location"
msgstr ""
-#: c-typeck.c:2637
+#: c-typeck.c:2680
#, c-format
msgid "cannot take address of bit-field `%s'"
msgstr ""
-#: c-typeck.c:2665 treelang/treetree.c:946
+#: c-typeck.c:2708 treelang/treetree.c:946
#, c-format
msgid "global register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:2669 treelang/treetree.c:950
+#: c-typeck.c:2712 treelang/treetree.c:950
#, c-format
msgid "register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:2676 treelang/treetree.c:957
+#: c-typeck.c:2719 treelang/treetree.c:957
#, c-format
msgid "address of global register variable `%s' requested"
msgstr ""
-#: c-typeck.c:2688
+#: c-typeck.c:2731
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c-typeck.c:2692 treelang/treetree.c:962
+#: c-typeck.c:2735 treelang/treetree.c:962
#, c-format
msgid "address of register variable `%s' requested"
msgstr ""
-#: c-typeck.c:2777
+#: c-typeck.c:2820
msgid "signed and unsigned type in conditional expression"
msgstr ""
-#: c-typeck.c:2784
+#: c-typeck.c:2827
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:2800 c-typeck.c:2807
+#: c-typeck.c:2843 c-typeck.c:2850
msgid "ISO C forbids conditional expr between `void *' and function pointer"
msgstr ""
-#: c-typeck.c:2813
+#: c-typeck.c:2856
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:2820 c-typeck.c:2830
+#: c-typeck.c:2863 c-typeck.c:2873
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:2844
+#: c-typeck.c:2887
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:2904
+#: c-typeck.c:2947
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:2935
+#: c-typeck.c:2978
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:2941
+#: c-typeck.c:2984
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:2951
+#: c-typeck.c:2994
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:2969
+#: c-typeck.c:3012
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:2977
+#: c-typeck.c:3020
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:3028
+#: c-typeck.c:3071
msgid "cast adds new qualifiers to function type"
msgstr ""
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:3033
+#: c-typeck.c:3076
msgid "cast discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:3048
+#: c-typeck.c:3091
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:3054 cp/typeck.c:4850
+#: c-typeck.c:3097 cp/typeck.c:4889
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:3059
+#: c-typeck.c:3102
msgid "cast does not match function type"
msgstr ""
-#: c-typeck.c:3066 cp/typeck.c:4857
+#: c-typeck.c:3109 cp/typeck.c:4896
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:3078
+#: c-typeck.c:3121
msgid "type-punning to incomplete type might break strict-aliasing rules"
msgstr ""
-#: c-typeck.c:3082
+#: c-typeck.c:3125
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
msgstr ""
+#: c-typeck.c:3136
+msgid "ISO C forbids conversion of function pointer to object pointer type"
+msgstr ""
+
+#: c-typeck.c:3145
+msgid "ISO C forbids conversion of object pointer to function pointer type"
+msgstr ""
+
#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
#. Reject anything strange now.
-#: c-typeck.c:3241
+#: c-typeck.c:3303
msgid "invalid lvalue in assignment"
msgstr ""
#. Convert new value to destination type.
-#: c-typeck.c:3250 c-typeck.c:3275 c-typeck.c:3292 cp/typeck.c:4969
-#: cp/typeck.c:5113
+#. Check this here to avoid odd errors when trying to convert
+#. a throw to the type of the COND_EXPR.
+#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
+#. Reject anything strange now.
+#: c-typeck.c:3312 c-typeck.c:3337 c-typeck.c:3354 cp/typeck.c:5008
+#: cp/typeck.c:5152
msgid "assignment"
msgstr ""
-#: c-typeck.c:3359
+#: c-typeck.c:3421
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:3468 c-typeck.c:3544
+#: c-typeck.c:3530 c-typeck.c:3606
#, c-format
msgid "%s makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:3472 c-typeck.c:3524
+#: c-typeck.c:3534 c-typeck.c:3586
#, c-format
msgid "%s discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:3478
+#: c-typeck.c:3540
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:3516
+#: c-typeck.c:3578
#, c-format
msgid "ISO C forbids %s between function pointer and `void *'"
msgstr ""
-#: c-typeck.c:3533
+#: c-typeck.c:3595
#, c-format
msgid "pointer targets in %s differ in signedness"
msgstr ""
-#: c-typeck.c:3549
+#: c-typeck.c:3611
#, c-format
msgid "%s from incompatible pointer type"
msgstr ""
-#: c-typeck.c:3555 c-typeck.c:4061 cp/typeck.c:1336
+#: c-typeck.c:3617 c-typeck.c:4124 cp/typeck.c:1366
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:3570
+#: c-typeck.c:3631
#, c-format
msgid "%s makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:3578
+#: c-typeck.c:3638
#, c-format
msgid "%s makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:3592 c-typeck.c:3595
+#: c-typeck.c:3652 c-typeck.c:3655
#, c-format
msgid "incompatible type for argument %d of `%s'"
msgstr ""
-#: c-typeck.c:3599
+#: c-typeck.c:3659
#, c-format
msgid "incompatible type for argument %d of indirect function call"
msgstr ""
-#: c-typeck.c:3603
+#: c-typeck.c:3663
#, c-format
msgid "incompatible types in %s"
msgstr ""
#. Function name is known; supply it.
-#: c-typeck.c:3659
+#: c-typeck.c:3719
#, c-format
msgid "passing arg of `%s'"
msgstr ""
#. Function name unknown (call through ptr).
-#: c-typeck.c:3668
+#: c-typeck.c:3728
msgid "passing arg of pointer to function"
msgstr ""
#. Function name is known; supply it.
-#: c-typeck.c:3676
+#: c-typeck.c:3736
#, c-format
msgid "passing arg %d of `%s'"
msgstr ""
#. Function name unknown (call through ptr); just give arg number.
-#: c-typeck.c:3685
+#: c-typeck.c:3745
#, c-format
msgid "passing arg %d of pointer to function"
msgstr ""
-#: c-typeck.c:3742
+#: c-typeck.c:3802
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:3913 c-typeck.c:3928 c-typeck.c:3943
+#: c-typeck.c:3973 c-typeck.c:3988 c-typeck.c:4003
#, c-format
msgid "(near initialization for `%s')"
msgstr ""
-#: c-typeck.c:3992 cp/typeck2.c:458
+#: c-typeck.c:4052 cp/typeck2.c:559
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:3999 cp/typeck2.c:465
+#: c-typeck.c:4059 cp/typeck2.c:566
msgid "int-array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:4017 cp/typeck2.c:481
+#: c-typeck.c:4077 cp/typeck2.c:581
msgid "initializer-string for array of chars is too long"
msgstr ""
-#: c-typeck.c:4084
+#: c-typeck.c:4147
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:4101 c-typeck.c:4103 c-typeck.c:4119 c-typeck.c:4140
-#: c-typeck.c:5520
+#: c-typeck.c:4164 c-typeck.c:4166 c-typeck.c:4182 c-typeck.c:4203
+#: c-typeck.c:5585
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:4135
+#: c-typeck.c:4198
msgid "initialization"
msgstr ""
-#: c-typeck.c:4146 c-typeck.c:5525
+#: c-typeck.c:4209 c-typeck.c:5590
msgid "initializer element is not computable at load time"
msgstr ""
-#: c-typeck.c:4161 cp/typeck2.c:558
+#: c-typeck.c:4224 cp/typeck2.c:658
msgid "invalid initializer"
msgstr ""
-#: c-typeck.c:4444 cp/decl.c:4422
+#: c-typeck.c:4509 cp/decl.c:4465
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c-typeck.c:4638
+#: c-typeck.c:4703
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:4658
+#: c-typeck.c:4723
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:4718
+#: c-typeck.c:4783
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:4765
+#: c-typeck.c:4830
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:4767
+#: c-typeck.c:4832
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:4798
+#: c-typeck.c:4863
msgid "missing initializer"
msgstr ""
-#: c-typeck.c:4824
+#: c-typeck.c:4889
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:4829
+#: c-typeck.c:4894
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:4914
+#: c-typeck.c:4979
msgid "initialization designators may not nest"
msgstr ""
-#: c-typeck.c:4935 c-typeck.c:5003
+#: c-typeck.c:5000 c-typeck.c:5068
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:4940 c-typeck.c:5056
+#: c-typeck.c:5005 c-typeck.c:5121
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:4999 c-typeck.c:5001
+#: c-typeck.c:5064 c-typeck.c:5066
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:5005 c-typeck.c:5008
+#: c-typeck.c:5070 c-typeck.c:5073
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:5019
+#: c-typeck.c:5084
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:5028
+#: c-typeck.c:5093
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:5068
+#: c-typeck.c:5133
#, c-format
msgid "unknown field `%s' specified in initializer"
msgstr ""
-#: c-typeck.c:5104 c-typeck.c:5125 c-typeck.c:5587
+#: c-typeck.c:5169 c-typeck.c:5190 c-typeck.c:5652
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:5795
+#: c-typeck.c:5860
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:5802 c-typeck.c:5848
+#: c-typeck.c:5867 c-typeck.c:5913
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:5863
+#: c-typeck.c:5928
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:5930
+#: c-typeck.c:5995
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:5951
+#: c-typeck.c:6016
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:6014
+#: c-typeck.c:6079
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:6043
+#: c-typeck.c:6108
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:6065
+#: c-typeck.c:6130
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:6152
-msgid "argument of `asm' is not a constant string"
-msgstr ""
-
-#: c-typeck.c:6167
+#: c-typeck.c:6232
msgid "asm template is not a string constant"
msgstr ""
-#: c-typeck.c:6199
+#: c-typeck.c:6264
msgid "invalid lvalue in asm statement"
msgstr ""
-#: c-typeck.c:6271
+#: c-typeck.c:6336
msgid "modification by `asm'"
msgstr ""
-#: c-typeck.c:6289 cp/typeck.c:5883
+#: c-typeck.c:6354 cp/typeck.c:5926
msgid "function declared `noreturn' has a `return' statement"
msgstr ""
-#: c-typeck.c:6296
+#: c-typeck.c:6361
msgid "`return' with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:6302
+#: c-typeck.c:6367
msgid "`return' with a value, in function returning void"
msgstr ""
-#: c-typeck.c:6306
+#: c-typeck.c:6371
msgid "return"
msgstr ""
-#: c-typeck.c:6358
+#: c-typeck.c:6423
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:6413 cp/semantics.c:734
+#: c-typeck.c:6478 cp/semantics.c:749
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:6423
+#: c-typeck.c:6488
msgid "`long' switch expression not converted to `int' in ISO C"
msgstr ""
-#: c-typeck.c:6464 cp/parser.c:5281
+#: c-typeck.c:6529 cp/parser.c:5538
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:6466
+#: c-typeck.c:6531
msgid "`default' label not within a switch statement"
msgstr ""
-#: c-typeck.c:6618 c-typeck.c:6652
+#: c-typeck.c:6683 c-typeck.c:6717
msgid "division by zero"
msgstr ""
-#: c-typeck.c:6697 cp/typeck.c:2888
+#: c-typeck.c:6762 cp/typeck.c:2928
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:6704 cp/typeck.c:2894
+#: c-typeck.c:6769 cp/typeck.c:2934
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:6725 cp/typeck.c:2913
+#: c-typeck.c:6790 cp/typeck.c:2953
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:6728 cp/typeck.c:2915
+#: c-typeck.c:6793 cp/typeck.c:2955
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:6749
+#: c-typeck.c:6814
msgid "shift count is negative"
msgstr ""
-#: c-typeck.c:6751
+#: c-typeck.c:6816
msgid "shift count >= width of type"
msgstr ""
-#: c-typeck.c:6768 cp/typeck.c:2950
+#: c-typeck.c:6833 cp/typeck.c:2990
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:6794 c-typeck.c:6800
+#: c-typeck.c:6859 c-typeck.c:6865
msgid "ISO C forbids comparison of `void *' with function pointer"
msgstr ""
-#: c-typeck.c:6803 c-typeck.c:6843 c-typeck.c:6871
+#: c-typeck.c:6868 c-typeck.c:6908 c-typeck.c:6936
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:6817 c-typeck.c:6822 c-typeck.c:6891 c-typeck.c:6896
+#: c-typeck.c:6882 c-typeck.c:6887 c-typeck.c:6956 c-typeck.c:6961
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:6838 c-typeck.c:6866
+#: c-typeck.c:6903 c-typeck.c:6931
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:6863
+#: c-typeck.c:6928
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:6879 c-typeck.c:6886
+#: c-typeck.c:6944 c-typeck.c:6951
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:6910 cp/typeck.c:3086
+#: c-typeck.c:6975 cp/typeck.c:3126
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: c-typeck.c:7120
+#: c-typeck.c:7185
msgid "comparison between signed and unsigned"
msgstr ""
-#: c-typeck.c:7166 cp/typeck.c:3333
+#: c-typeck.c:7231 cp/typeck.c:3373
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-typeck.c:7174 cp/typeck.c:3341
+#: c-typeck.c:7239 cp/typeck.c:3381
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
-#: calls.c:1837 tree-inline.c:1335
+#: calls.c:1838
msgid "%Jinlining failed in call to '%F'"
msgstr ""
-#: calls.c:1838 calls.c:2206 tree-inline.c:1336
+#: calls.c:1839 calls.c:2208 tree-inline.c:1339 tree-inline.c:1346
msgid "called from here"
msgstr ""
-#: calls.c:2205
+#: calls.c:2207
msgid "%Jcan't inline call to '%F'"
msgstr ""
-#: calls.c:2214
+#: calls.c:2216
msgid ""
"ignoring return value of `%D', declared with attribute warn_unused_result"
msgstr ""
-#: calls.c:2227
+#: calls.c:2229
msgid ""
"ignoring return value of function declared with attribute warn_unused_result"
msgstr ""
-#: calls.c:2237
+#: calls.c:2239
msgid "function call has aggregate value"
msgstr ""
-#: cfg.c:833
+#: cfg.c:835
#, c-format
msgid "bb %d on wrong place"
msgstr ""
-#: cfg.c:839
+#: cfg.c:841
#, c-format
msgid "prev_bb of %d should be %d, not %d"
msgstr ""
-#: cfg.c:855
+#: cfg.c:857
#, c-format
msgid "verify_flow_info: Wrong count of block %i %i"
msgstr ""
-#: cfg.c:861
+#: cfg.c:863
#, c-format
msgid "verify_flow_info: Wrong frequency of block %i %i"
msgstr ""
-#: cfg.c:869
+#: cfg.c:871
#, c-format
msgid "verify_flow_info: Duplicate edge %i->%i"
msgstr ""
-#: cfg.c:875
+#: cfg.c:877
#, c-format
msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
msgstr ""
-#: cfg.c:881
+#: cfg.c:883
#, c-format
msgid "verify_flow_info: Wrong count of edge %i->%i %i"
msgstr ""
-#: cfg.c:893
+#: cfg.c:895
#, c-format
msgid "verify_flow_info: Basic block %d succ edge is corrupted"
msgstr ""
-#: cfg.c:907 cfgrtl.c:1973
+#: cfg.c:909 cfgrtl.c:1971
#, c-format
msgid "Wrong amount of branch edges after unconditional jump %i"
msgstr ""
-#: cfg.c:915
+#: cfg.c:917
#, c-format
msgid "basic block %d pred edge is corrupted"
msgstr ""
-#: cfg.c:941
+#: cfg.c:943
#, c-format
msgid "basic block %i edge lists are corrupted"
msgstr ""
-#: cfg.c:953
+#: cfg.c:955
msgid "verify_flow_info failed"
msgstr ""
-#: cfgloop.c:1141
+#: cfgloop.c:1134
#, c-format
msgid "Size of loop %d should be %d, not %d."
msgstr ""
-#: cfgloop.c:1160
+#: cfgloop.c:1153
#, c-format
msgid "Bb %d do not belong to loop %d."
msgstr ""
-#: cfgloop.c:1178
+#: cfgloop.c:1171
#, c-format
msgid "Loop %d's header does not have exactly 2 entries."
msgstr ""
-#: cfgloop.c:1186
+#: cfgloop.c:1179
#, c-format
msgid "Loop %d's latch does not have exactly 1 successor."
msgstr ""
-#: cfgloop.c:1191
+#: cfgloop.c:1184
#, c-format
msgid "Loop %d's latch does not have header as successor."
msgstr ""
-#: cfgloop.c:1196
+#: cfgloop.c:1189
#, c-format
msgid "Loop %d's latch does not belong directly to it."
msgstr ""
-#: cfgloop.c:1202
+#: cfgloop.c:1195
#, c-format
msgid "Loop %d's header does not belong directly to it."
msgstr ""
-#: cfgloop.c:1208
+#: cfgloop.c:1201
#, c-format
msgid "Loop %d's latch is marked as part of irreducible region."
msgstr ""
-#: cfgloop.c:1238
+#: cfgloop.c:1231
#, c-format
msgid "Basic block %d should be marked irreducible."
msgstr ""
-#: cfgloop.c:1244
+#: cfgloop.c:1237
#, c-format
msgid "Basic block %d should not be marked irreducible."
msgstr ""
-#: cfgloop.c:1252
+#: cfgloop.c:1245
#, c-format
msgid "Edge from %d to %d should be marked irreducible."
msgstr ""
-#: cfgloop.c:1259
+#: cfgloop.c:1252
#, c-format
msgid "Edge from %d to %d should not be marked irreducible."
msgstr ""
-#: cfgrtl.c:1879
+#: cfgrtl.c:1877
#, c-format
msgid "end insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:1893
+#: cfgrtl.c:1891
#, c-format
msgid "insn %d is in multiple basic blocks (%d and %d)"
msgstr ""
-#: cfgrtl.c:1905
+#: cfgrtl.c:1903
#, c-format
msgid "head insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:1927
+#: cfgrtl.c:1925
msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
msgstr ""
-#: cfgrtl.c:1955
+#: cfgrtl.c:1953
#, c-format
msgid "Missing REG_EH_REGION note in the end of bb %i"
msgstr ""
-#: cfgrtl.c:1963
+#: cfgrtl.c:1961
#, c-format
msgid "Too many outgoing branch edges from bb %i"
msgstr ""
-#: cfgrtl.c:1968
+#: cfgrtl.c:1966
#, c-format
msgid "Fallthru edge after unconditional jump %i"
msgstr ""
-#: cfgrtl.c:1979
+#: cfgrtl.c:1977
#, c-format
msgid "Wrong amount of branch edges after conditional jump %i"
msgstr ""
-#: cfgrtl.c:1984
+#: cfgrtl.c:1982
#, c-format
msgid "Call edges for non-call insn in bb %i"
msgstr ""
-#: cfgrtl.c:1993
+#: cfgrtl.c:1991
#, c-format
msgid "Abnormal edges for no purpose in bb %i"
msgstr ""
-#: cfgrtl.c:2003
+#: cfgrtl.c:2001
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
msgstr ""
-#: cfgrtl.c:2007
+#: cfgrtl.c:2005
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
msgstr ""
-#: cfgrtl.c:2021 cfgrtl.c:2031
+#: cfgrtl.c:2019 cfgrtl.c:2029
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr ""
-#: cfgrtl.c:2044
+#: cfgrtl.c:2042
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
msgstr ""
-#: cfgrtl.c:2054
+#: cfgrtl.c:2052
#, c-format
msgid "in basic block %d:"
msgstr ""
-#: cfgrtl.c:2055
+#: cfgrtl.c:2053
msgid "flow control insn inside a basic block"
msgstr ""
-#: cfgrtl.c:2101
+#: cfgrtl.c:2099
#, c-format
msgid "missing barrier after block %i"
msgstr ""
-#: cfgrtl.c:2114
+#: cfgrtl.c:2112
#, c-format
msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2129
+#: cfgrtl.c:2127
#, c-format
msgid "verify_flow_info: Incorrect fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2131
+#: cfgrtl.c:2129
msgid "wrong insn in the fallthru edge"
msgstr ""
-#: cfgrtl.c:2148
+#: cfgrtl.c:2146
msgid "basic blocks not laid down consecutively"
msgstr ""
-#: cfgrtl.c:2173
+#: cfgrtl.c:2171
msgid "insn outside basic block"
msgstr ""
-#: cfgrtl.c:2181
+#: cfgrtl.c:2179
msgid "return not followed by barrier"
msgstr ""
-#: cfgrtl.c:2188
+#: cfgrtl.c:2186
#, c-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: cgraph.c:463
+#: cgraph.c:161
+msgid "function body not available"
+msgstr ""
+
+#: cgraph.c:163 cgraphunit.c:341
+msgid "redefined extern inline functions are not considered for inlining"
+msgstr ""
+
+#: cgraph.c:166 cgraphunit.c:346
+msgid "function not considered for inlining"
+msgstr ""
+
+#: cgraph.c:168 cgraphunit.c:344
+msgid "function not inlinable"
+msgstr ""
+
+#: cgraph.c:476
msgid "%D renamed after being referenced in assembly"
msgstr ""
+#: cgraphunit.c:1042
+msgid "--param large-function-growth limit reached"
+msgstr ""
+
+#: cgraphunit.c:1055
+msgid "--param large-function-growth limit reached while inlining the caller"
+msgstr ""
+
+#: cgraphunit.c:1120
+msgid "--param max-inline-insns-single limit reached"
+msgstr ""
+
+#: cgraphunit.c:1144
+msgid ""
+"--param max-inline-insns-single limit reached after inlining into the callee"
+msgstr ""
+
+#: cgraphunit.c:1221
+msgid "--param inline-unit-growth limit reached"
+msgstr ""
+
+#: cgraphunit.c:1293 cgraphunit.c:1437
+msgid "recursive inlining"
+msgstr ""
+
#: collect2.c:406
msgid "internal error"
msgstr ""
-#: collect2.c:893
+#: collect2.c:894
msgid "no arguments"
msgstr ""
-#: collect2.c:1222 collect2.c:1370 collect2.c:1403
+#: collect2.c:1226 collect2.c:1374 collect2.c:1407
#, c-format
msgid "fopen %s"
msgstr ""
-#: collect2.c:1225 collect2.c:1375 collect2.c:1406
+#: collect2.c:1229 collect2.c:1379 collect2.c:1410
#, c-format
msgid "fclose %s"
msgstr ""
-#: collect2.c:1234
+#: collect2.c:1238
#, c-format
msgid "collect2 version %s"
msgstr ""
-#: collect2.c:1324
+#: collect2.c:1328
#, c-format
msgid "%d constructor(s) found\n"
msgstr ""
-#: collect2.c:1325
+#: collect2.c:1329
#, c-format
msgid "%d destructor(s) found\n"
msgstr ""
-#: collect2.c:1326
+#: collect2.c:1330
#, c-format
msgid "%d frame table(s) found\n"
msgstr ""
-#: collect2.c:1466
+#: collect2.c:1470
#, c-format
msgid "%s terminated with signal %d [%s]%s"
msgstr ""
-#: collect2.c:1484
+#: collect2.c:1488
#, c-format
msgid "%s returned %d exit status"
msgstr ""
-#: collect2.c:1509
+#: collect2.c:1513
#, c-format
msgid "[cannot find %s]"
msgstr ""
-#: collect2.c:1524
+#: collect2.c:1528
#, c-format
msgid "cannot find `%s'"
msgstr ""
-#: collect2.c:1535 collect2.c:1538
+#: collect2.c:1539 collect2.c:1542
#, c-format
msgid "redirecting stdout: %s"
msgstr ""
-#: collect2.c:1577
+#: collect2.c:1581
#, c-format
msgid "[Leaving %s]\n"
msgstr ""
-#: collect2.c:1797
+#: collect2.c:1801
#, c-format
msgid ""
"\n"
"write_c_file - output name is %s, prefix is %s\n"
msgstr ""
-#: collect2.c:2001
+#: collect2.c:2005
msgid "cannot find `nm'"
msgstr ""
-#: collect2.c:2011 collect2.c:2440
+#: collect2.c:2015 collect2.c:2444
msgid "pipe"
msgstr ""
-#: collect2.c:2015 collect2.c:2444
+#: collect2.c:2019 collect2.c:2448
msgid "fdopen"
msgstr ""
-#: collect2.c:2041 collect2.c:2470
+#: collect2.c:2045 collect2.c:2474
#, c-format
msgid "dup2 %d 1"
msgstr ""
-#: collect2.c:2044 collect2.c:2047 collect2.c:2060 collect2.c:2473
-#: collect2.c:2476 collect2.c:2489
+#: collect2.c:2048 collect2.c:2051 collect2.c:2064 collect2.c:2477
+#: collect2.c:2480 collect2.c:2493
#, c-format
msgid "close %d"
msgstr ""
-#: collect2.c:2050 collect2.c:2479
+#: collect2.c:2054 collect2.c:2483
#, c-format
msgid "execv %s"
msgstr ""
-#: collect2.c:2104
+#: collect2.c:2108
#, c-format
msgid "init function found in object %s"
msgstr ""
-#: collect2.c:2112
+#: collect2.c:2116
#, c-format
msgid "fini function found in object %s"
msgstr ""
-#: collect2.c:2135 collect2.c:2528
+#: collect2.c:2139 collect2.c:2532
msgid "fclose"
msgstr ""
-#: collect2.c:2177
+#: collect2.c:2181
#, c-format
msgid "unable to open file '%s'"
msgstr ""
-#: collect2.c:2179
+#: collect2.c:2183
#, c-format
msgid "unable to stat file '%s'"
msgstr ""
-#: collect2.c:2185
+#: collect2.c:2189
#, c-format
msgid "unable to mmap file '%s'"
msgstr ""
-#: collect2.c:2331
+#: collect2.c:2335
msgid "not found\n"
msgstr ""
-#: collect2.c:2333 collect2.c:2507
+#: collect2.c:2337 collect2.c:2511
#, c-format
msgid "dynamic dependency %s not found"
msgstr ""
-#: collect2.c:2352
+#: collect2.c:2356
#, c-format
msgid "bad magic number in file '%s'"
msgstr ""
-#: collect2.c:2374
+#: collect2.c:2378
msgid "dynamic dependencies.\n"
msgstr ""
-#: collect2.c:2431
+#: collect2.c:2435
msgid "cannot find `ldd'"
msgstr ""
-#: collect2.c:2492
+#: collect2.c:2496
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
msgstr ""
-#: collect2.c:2519
+#: collect2.c:2523
#, c-format
msgid "unable to open dynamic dependency '%s'"
msgstr ""
-#: collect2.c:2667
+#: collect2.c:2683
#, c-format
msgid "%s: not a COFF file"
msgstr ""
-#: collect2.c:2786
+#: collect2.c:2802
#, c-format
msgid "%s: cannot open as COFF file"
msgstr ""
-#: collect2.c:2841
+#: collect2.c:2857
#, c-format
msgid "library lib%s not found"
msgstr ""
-#: combine.c:13014
+#: combine.c:13027
#, c-format
msgid ""
";; Combiner statistics: %d attempts, %d substitutions (%d requiring new "
@@ -3637,7 +3949,7 @@ msgid ""
"\n"
msgstr ""
-#: combine.c:13023
+#: combine.c:13036
#, c-format
msgid ""
"\n"
@@ -3669,11 +3981,11 @@ msgstr ""
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:657 f/com.c:1099
+#: convert.c:657 f/com.c:1101
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:661 f/com.c:1101
+#: convert.c:661 f/com.c:1103
msgid "aggregate value used where a complex was expected"
msgstr ""
@@ -3691,47 +4003,57 @@ msgstr ""
msgid "`%s' is version `%.4s', expected version `%.4s'"
msgstr ""
-#: coverage.c:256
+#: coverage.c:255 coverage.c:263
+#, c-format
+msgid "coverage mismatch for function %u while reading execution counters."
+msgstr ""
+
+#: coverage.c:257 coverage.c:340
#, c-format
-msgid "coverage mismatch for function %u"
+msgid "checksum is %x instead of %x"
msgstr ""
-#: coverage.c:262
+#: coverage.c:265 coverage.c:348
+#, c-format
+msgid "number of counters is %d instead of %d"
+msgstr ""
+
+#: coverage.c:271
#, c-format
msgid "cannot merge separate %s counters for function %u"
msgstr ""
-#: coverage.c:287
+#: coverage.c:296
#, c-format
msgid "`%s' has overflowed"
msgstr ""
-#: coverage.c:287
+#: coverage.c:296
#, c-format
msgid "`%s' is corrupted"
msgstr ""
-#: coverage.c:309
+#: coverage.c:319
#, c-format
msgid "file %s not found, execution counts assumed to be zero"
msgstr ""
-#: coverage.c:319
+#: coverage.c:329
#, c-format
msgid "no coverage for function '%s' found."
msgstr ""
-#: coverage.c:327
+#: coverage.c:337 coverage.c:345
#, c-format
-msgid "coverage mismatch for `%s'"
+msgid "coverage mismatch for function '%s' while reading counter '%s'."
msgstr ""
-#: coverage.c:442
+#: coverage.c:492
#, c-format
msgid "cannot open %s"
msgstr ""
-#: coverage.c:477
+#: coverage.c:527
#, c-format
msgid "error writing `%s'"
msgstr ""
@@ -3844,7 +4166,12 @@ msgstr ""
msgid "empty character constant"
msgstr ""
-#: cpperror.c:110
+#: cppcharset.c:1378
+#, c-format
+msgid "failure to convert %s to %s"
+msgstr ""
+
+#: cpperror.c:110 diagnostic.def:5
msgid "warning: "
msgstr ""
@@ -4000,10 +4327,6 @@ msgstr ""
msgid "the right operand of \"%s\" changes sign when promoted"
msgstr ""
-#: cppexp.c:1253
-msgid "traditional C rejects the unary plus operator"
-msgstr ""
-
#: cppexp.c:1352
msgid "comma operator in operand of #if"
msgstr ""
@@ -4012,74 +4335,74 @@ msgstr ""
msgid "division by zero in #if"
msgstr ""
-#: cppfiles.c:367
+#: cppfiles.c:370
msgid "NULL directory in find_file"
msgstr ""
-#: cppfiles.c:392
+#: cppfiles.c:397
msgid "one or more PCH files were found, but they were invalid"
msgstr ""
-#: cppfiles.c:395
+#: cppfiles.c:400
msgid "use -Winvalid-pch for more information"
msgstr ""
-#: cppfiles.c:453
+#: cppfiles.c:458
#, c-format
msgid "%s is a block device"
msgstr ""
-#: cppfiles.c:470
+#: cppfiles.c:475
#, c-format
msgid "%s is too large"
msgstr ""
-#: cppfiles.c:505
+#: cppfiles.c:510
#, c-format
msgid "%s is shorter than expected"
msgstr ""
-#: cppfiles.c:698
+#: cppfiles.c:696
#, c-format
msgid "no include path in which to search for %s"
msgstr ""
-#: cppfiles.c:940
+#: cppfiles.c:956
msgid "Multiple include guards may be useful for:\n"
msgstr ""
-#: cppinit.c:386
+#: cppinit.c:387
msgid "cppchar_t must be an unsigned type"
msgstr ""
-#: cppinit.c:390
+#: cppinit.c:391
#, c-format
msgid ""
"preprocessor arithmetic has maximum precision of %lu bits; target requires %"
"lu bits"
msgstr ""
-#: cppinit.c:397
+#: cppinit.c:398
msgid "CPP arithmetic must be at least as precise as a target int"
msgstr ""
-#: cppinit.c:400
+#: cppinit.c:401
msgid "target char is less than 8 bits wide"
msgstr ""
-#: cppinit.c:404
+#: cppinit.c:405
msgid "target wchar_t is narrower than target char"
msgstr ""
-#: cppinit.c:408
+#: cppinit.c:409
msgid "target int is narrower than target char"
msgstr ""
-#: cppinit.c:413
+#: cppinit.c:414
msgid "CPP half-integer narrower than CPP character"
msgstr ""
-#: cppinit.c:417
+#: cppinit.c:418
#, c-format
msgid ""
"CPP on this host cannot handle wide character constants over %lu bits, but "
@@ -4133,193 +4456,193 @@ msgstr ""
msgid "extra tokens at end of #%s directive"
msgstr ""
-#: cpplib.c:301
+#: cpplib.c:304
#, c-format
msgid "#%s is a GCC extension"
msgstr ""
-#: cpplib.c:313
+#: cpplib.c:316
msgid "suggest not using #elif in traditional C"
msgstr ""
-#: cpplib.c:316
+#: cpplib.c:319
#, c-format
msgid "traditional C ignores #%s with the # indented"
msgstr ""
-#: cpplib.c:320
+#: cpplib.c:323
#, c-format
msgid "suggest hiding #%s from traditional C with an indented #"
msgstr ""
-#: cpplib.c:342
+#: cpplib.c:345
msgid "embedding a directive within macro arguments is not portable"
msgstr ""
-#: cpplib.c:362
+#: cpplib.c:365
msgid "style of line directive is a GCC extension"
msgstr ""
-#: cpplib.c:412
+#: cpplib.c:415
#, c-format
msgid "invalid preprocessing directive #%s"
msgstr ""
-#: cpplib.c:481
+#: cpplib.c:484
msgid "\"defined\" cannot be used as a macro name"
msgstr ""
-#: cpplib.c:487
+#: cpplib.c:490
#, c-format
msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
msgstr ""
-#: cpplib.c:490
+#: cpplib.c:493
#, c-format
msgid "no macro name given in #%s directive"
msgstr ""
-#: cpplib.c:493
+#: cpplib.c:496
msgid "macro names must be identifiers"
msgstr ""
-#: cpplib.c:532
+#: cpplib.c:537
#, c-format
msgid "undefining \"%s\""
msgstr ""
-#: cpplib.c:602
+#: cpplib.c:609
msgid "missing terminating > character"
msgstr ""
-#: cpplib.c:655
+#: cpplib.c:662
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr ""
-#: cpplib.c:678
+#: cpplib.c:685
msgid "#include nested too deeply"
msgstr ""
-#: cpplib.c:716
+#: cpplib.c:723
msgid "#include_next in primary source file"
msgstr ""
-#: cpplib.c:742
+#: cpplib.c:749
#, c-format
msgid "invalid flag \"%s\" in line directive"
msgstr ""
-#: cpplib.c:787
+#: cpplib.c:794
#, c-format
msgid "\"%s\" after #line is not a positive integer"
msgstr ""
-#: cpplib.c:793
+#: cpplib.c:800
msgid "line number out of range"
msgstr ""
-#: cpplib.c:805 cpplib.c:878
+#: cpplib.c:812 cpplib.c:885
#, c-format
msgid "\"%s\" is not a valid filename"
msgstr ""
-#: cpplib.c:840
+#: cpplib.c:847
#, c-format
msgid "\"%s\" after # is not a positive integer"
msgstr ""
-#: cpplib.c:940
+#: cpplib.c:947
msgid "invalid #ident directive"
msgstr ""
-#: cpplib.c:1020
+#: cpplib.c:1027
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr ""
-#: cpplib.c:1023
+#: cpplib.c:1030
#, c-format
msgid "#pragma %s %s is already registered"
msgstr ""
-#: cpplib.c:1026
+#: cpplib.c:1033
#, c-format
msgid "#pragma %s is already registered"
msgstr ""
-#: cpplib.c:1171
+#: cpplib.c:1178
msgid "#pragma once in main file"
msgstr ""
-#: cpplib.c:1194
+#: cpplib.c:1201
msgid "invalid #pragma GCC poison directive"
msgstr ""
-#: cpplib.c:1203
+#: cpplib.c:1210
#, c-format
msgid "poisoning existing macro \"%s\""
msgstr ""
-#: cpplib.c:1224
+#: cpplib.c:1231
msgid "#pragma system_header ignored outside include file"
msgstr ""
-#: cpplib.c:1248
+#: cpplib.c:1255
#, c-format
msgid "cannot find source file %s"
msgstr ""
-#: cpplib.c:1252
+#: cpplib.c:1259
#, c-format
msgid "current file is older than %s"
msgstr ""
-#: cpplib.c:1366
+#: cpplib.c:1373
msgid "_Pragma takes a parenthesized string literal"
msgstr ""
-#: cpplib.c:1444
+#: cpplib.c:1451
msgid "#else without #if"
msgstr ""
-#: cpplib.c:1449
+#: cpplib.c:1456
msgid "#else after #else"
msgstr ""
-#: cpplib.c:1477
+#: cpplib.c:1484
msgid "#elif without #if"
msgstr ""
-#: cpplib.c:1482
+#: cpplib.c:1489
msgid "#elif after #else"
msgstr ""
-#: cpplib.c:1512
+#: cpplib.c:1519
msgid "#endif without #if"
msgstr ""
-#: cpplib.c:1589
+#: cpplib.c:1596
msgid "missing '(' after predicate"
msgstr ""
-#: cpplib.c:1604
+#: cpplib.c:1611
msgid "missing ')' to complete answer"
msgstr ""
-#: cpplib.c:1624
+#: cpplib.c:1631
msgid "predicate's answer is empty"
msgstr ""
-#: cpplib.c:1651
+#: cpplib.c:1658
msgid "assertion without predicate"
msgstr ""
-#: cpplib.c:1653
+#: cpplib.c:1660
msgid "predicate must be an identifier"
msgstr ""
-#: cpplib.c:1737
+#: cpplib.c:1744
#, c-format
msgid "\"%s\" re-asserted"
msgstr ""
@@ -4455,7 +4778,11 @@ msgstr ""
msgid "detected recursion whilst expanding macro \"%s\""
msgstr ""
-#: cse.c:7021
+#: cpptrad.c:911
+msgid "syntax error in macro parameter list"
+msgstr ""
+
+#: cse.c:7040
#, c-format
msgid ";; Processing block from %d to %d, %d sets.\n"
msgstr ""
@@ -4478,38 +4805,33 @@ msgstr ""
msgid "in %s, at %s:%d"
msgstr ""
-#: dominance.c:693
+#: dominance.c:763
#, c-format
msgid "dominator of %d should be %d, not %d"
msgstr ""
-#: dwarf2out.c:3213
+#: dwarf2out.c:3228
#, c-format
msgid "DW_LOC_OP %s not implemented\n"
msgstr ""
-#: dwarfout.c:2033
-msgid "%Jinternal regno botch: '%D' has regno = %d\n"
-msgstr ""
-
-#: dwarfout.c:6021
-msgid "support for the DWARF1 debugging format is deprecated"
+#: emit-rtl.c:1155
+msgid "can't access real part of complex value in hard register"
msgstr ""
-#: dwarfout.c:6114
-#, c-format
-msgid "can't get current directory: %m"
+#: emit-rtl.c:1182
+msgid "can't access imaginary part of complex value in hard register"
msgstr ""
-#: emit-rtl.c:1282
-msgid "can't access real part of complex value in hard register"
+#: emit-rtl.c:2263
+msgid "Invalid rtl sharing found in the insn"
msgstr ""
-#: emit-rtl.c:1309
-msgid "can't access imaginary part of complex value in hard register"
+#: emit-rtl.c:2265
+msgid "Shared rtx"
msgstr ""
-#: emit-rtl.c:3456
+#: emit-rtl.c:3400
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
@@ -4518,15 +4840,15 @@ msgstr ""
msgid "abort in %s, at %s:%d"
msgstr ""
-#: except.c:356
+#: except.c:357
msgid "exception handling disabled, use -fexceptions to enable"
msgstr ""
-#: except.c:2923
+#: except.c:2942
msgid "argument of `__builtin_eh_return_regno' must be constant"
msgstr ""
-#: except.c:3054
+#: except.c:3073
msgid "__builtin_eh_return not supported on this target"
msgstr ""
@@ -4534,91 +4856,91 @@ msgstr ""
msgid "stack limits not supported on this target"
msgstr ""
-#: expr.c:2989
+#: expr.c:2965
msgid "function using short complex types cannot be inline"
msgstr ""
-#: expr.c:5960 expr.c:5969 expr.c:5978 expr.c:5983 expr.c:6312 expr.c:6328
-msgid "unsupported wide integer operation"
-msgstr ""
-
-#: expr.c:6371
+#: expr.c:6311
msgid "%Jprior parameter's size depends on '%D'"
msgstr ""
-#: expr.c:6734
+#: expr.c:6678
msgid "returned value in block_exit_expr"
msgstr ""
#. We can't make a bitwise copy of this object, so fail.
-#: expr.c:8869
+#: expr.c:8823
msgid "cannot take the address of an unaligned member"
msgstr ""
-#: final.c:1057
+#: final.c:1058
msgid "negative insn length"
msgstr ""
-#: final.c:2432
+#: final.c:2429
msgid "could not split insn"
msgstr ""
-#: final.c:2774
+#: final.c:2771
msgid "invalid `asm': "
msgstr ""
-#: final.c:2957
+#: final.c:2954
msgid "nested assembly dialect alternatives"
msgstr ""
-#: final.c:2974 final.c:2986
+#: final.c:2971 final.c:2983
msgid "unterminated assembly dialect alternative"
msgstr ""
-#: final.c:3030
+#: final.c:3027
#, c-format
msgid "operand number missing after %%-letter"
msgstr ""
-#: final.c:3033 final.c:3072
+#: final.c:3030 final.c:3069
msgid "operand number out of range"
msgstr ""
-#: final.c:3091
+#: final.c:3088
#, c-format
msgid "invalid %%-code"
msgstr ""
-#: final.c:3121
+#: final.c:3118
#, c-format
msgid "`%%l' operand isn't a label"
msgstr ""
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3223 vmsdbgout.c:467 config/i386/i386.c:6712
-#: config/pdp11/pdp11.c:1645
+#. We can't handle floating point constants; PRINT_OPERAND must
+#. handle them.
+#. We can't handle floating point constants;
+#. PRINT_OPERAND must handle them.
+#: final.c:3220 vmsdbgout.c:467 config/i386/i386.c:6739
+#: config/pdp11/pdp11.c:1646
msgid "floating constant misused"
msgstr ""
-#: final.c:3279 vmsdbgout.c:524 config/i386/i386.c:6790
-#: config/pdp11/pdp11.c:1692
+#: final.c:3276 vmsdbgout.c:524 config/i386/i386.c:6817
+#: config/pdp11/pdp11.c:1693
msgid "invalid expression as operand"
msgstr ""
-#: flow.c:341
+#: flow.c:329
msgid "function might be possible candidate for attribute `noreturn'"
msgstr ""
-#: flow.c:346
+#: flow.c:334
msgid "`noreturn' function does return"
msgstr ""
-#: flow.c:367
+#: flow.c:355
msgid "control reaches end of non-void function"
msgstr ""
-#: flow.c:1610
+#: flow.c:1582
msgid "Attempt to delete prologue/epilogue insn:"
msgstr ""
@@ -4640,35 +4962,35 @@ msgstr ""
msgid "`and' of mutually exclusive equal-tests is always 0"
msgstr ""
-#: fold-const.c:8328
+#: fold-const.c:8340
msgid "fold check: original tree changed by fold"
msgstr ""
-#: function.c:883 varasm.c:1415
+#: function.c:884 varasm.c:1408
msgid "%Jsize of variable '%D' is too large"
msgstr ""
-#: function.c:3710
+#: function.c:3737
msgid "impossible constraint in `asm'"
msgstr ""
-#: function.c:5630
+#: function.c:5697
msgid "%J'%D' might be used uninitialized in this function"
msgstr ""
-#: function.c:5637
+#: function.c:5704
msgid "%Jvariable '%D' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:5656
+#: function.c:5723
msgid "%Jargument '%D' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:6432
+#: function.c:6497
msgid "function returns an aggregate"
msgstr ""
-#: function.c:6915
+#: function.c:6980
msgid "%Junused parameter '%D'"
msgstr ""
@@ -4696,80 +5018,80 @@ msgstr ""
msgid "Using built-in specs.\n"
msgstr ""
-#: gcc.c:1742
+#: gcc.c:1748
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
-#: gcc.c:1844
+#: gcc.c:1850
#, c-format
msgid "Reading specs from %s\n"
msgstr ""
-#: gcc.c:1940 gcc.c:1959
+#: gcc.c:1946 gcc.c:1965
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:1967
+#: gcc.c:1973
#, c-format
msgid "could not find specs file %s\n"
msgstr ""
-#: gcc.c:1984 gcc.c:1992 gcc.c:2001 gcc.c:2010
+#: gcc.c:1990 gcc.c:1998 gcc.c:2007 gcc.c:2016
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:2019
+#: gcc.c:2025
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr ""
-#: gcc.c:2026
+#: gcc.c:2032
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
msgstr ""
-#: gcc.c:2031
+#: gcc.c:2037
#, c-format
msgid "rename spec %s to %s\n"
msgstr ""
-#: gcc.c:2033
+#: gcc.c:2039
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
-#: gcc.c:2046
+#: gcc.c:2052
#, c-format
msgid "specs unknown %% command after %ld characters"
msgstr ""
-#: gcc.c:2057 gcc.c:2070
+#: gcc.c:2063 gcc.c:2076
#, c-format
msgid "specs file malformed after %ld characters"
msgstr ""
-#: gcc.c:2123
+#: gcc.c:2129
msgid "spec file has no spec for linking"
msgstr ""
-#: gcc.c:2628
+#: gcc.c:2634
msgid "-pipe not supported"
msgstr ""
-#: gcc.c:2683
+#: gcc.c:2696
msgid ""
"\n"
"Go ahead? (y or n) "
msgstr ""
-#: gcc.c:2809
+#: gcc.c:2822
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -4777,184 +5099,184 @@ msgid ""
"See %s for instructions."
msgstr ""
-#: gcc.c:2827
+#: gcc.c:2840
#, c-format
msgid "# %s %.2f %.2f\n"
msgstr ""
-#: gcc.c:2960
+#: gcc.c:2973
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: gcc.c:2961
+#: gcc.c:2974
msgid "Options:\n"
msgstr ""
-#: gcc.c:2963
+#: gcc.c:2976
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
msgstr ""
-#: gcc.c:2964
+#: gcc.c:2977
msgid " --help Display this information\n"
msgstr ""
-#: gcc.c:2965
+#: gcc.c:2978
msgid ""
" --target-help Display target specific command line options\n"
msgstr ""
-#: gcc.c:2967
+#: gcc.c:2980
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr ""
-#: gcc.c:2968
+#: gcc.c:2981
msgid " -dumpspecs Display all of the built in spec strings\n"
msgstr ""
-#: gcc.c:2969
+#: gcc.c:2982
msgid " -dumpversion Display the version of the compiler\n"
msgstr ""
-#: gcc.c:2970
+#: gcc.c:2983
msgid " -dumpmachine Display the compiler's target processor\n"
msgstr ""
-#: gcc.c:2971
+#: gcc.c:2984
msgid ""
" -print-search-dirs Display the directories in the compiler's search "
"path\n"
msgstr ""
-#: gcc.c:2972
+#: gcc.c:2985
msgid ""
" -print-libgcc-file-name Display the name of the compiler's companion "
"library\n"
msgstr ""
-#: gcc.c:2973
+#: gcc.c:2986
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
msgstr ""
-#: gcc.c:2974
+#: gcc.c:2987
msgid ""
" -print-prog-name=<prog> Display the full path to compiler component "
"<prog>\n"
msgstr ""
-#: gcc.c:2975
+#: gcc.c:2988
msgid ""
" -print-multi-directory Display the root directory for versions of "
"libgcc\n"
msgstr ""
-#: gcc.c:2976
+#: gcc.c:2989
msgid ""
" -print-multi-lib Display the mapping between command line options "
"and\n"
" multiple library search directories\n"
msgstr ""
-#: gcc.c:2979
+#: gcc.c:2992
msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
msgstr ""
-#: gcc.c:2980
+#: gcc.c:2993
msgid ""
" -Wa,<options> Pass comma-separated <options> on to the "
"assembler\n"
msgstr ""
-#: gcc.c:2981
+#: gcc.c:2994
msgid ""
" -Wp,<options> Pass comma-separated <options> on to the "
"preprocessor\n"
msgstr ""
-#: gcc.c:2982
+#: gcc.c:2995
msgid ""
" -Wl,<options> Pass comma-separated <options> on to the linker\n"
msgstr ""
-#: gcc.c:2983
+#: gcc.c:2996
msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
msgstr ""
-#: gcc.c:2984
+#: gcc.c:2997
msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
msgstr ""
-#: gcc.c:2985
+#: gcc.c:2998
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
msgstr ""
-#: gcc.c:2986
+#: gcc.c:2999
msgid " -save-temps Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:2987
+#: gcc.c:3000
msgid " -pipe Use pipes rather than intermediate files\n"
msgstr ""
-#: gcc.c:2988
+#: gcc.c:3001
msgid " -time Time the execution of each subprocess\n"
msgstr ""
-#: gcc.c:2989
+#: gcc.c:3002
msgid ""
" -specs=<file> Override built-in specs with the contents of "
"<file>\n"
msgstr ""
-#: gcc.c:2990
+#: gcc.c:3003
msgid ""
" -std=<standard> Assume that the input sources are for <standard>\n"
msgstr ""
-#: gcc.c:2991
+#: gcc.c:3004
msgid ""
" -B <directory> Add <directory> to the compiler's search paths\n"
msgstr ""
-#: gcc.c:2992
+#: gcc.c:3005
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
-#: gcc.c:2993
+#: gcc.c:3006
msgid ""
" -V <version> Run gcc version number <version>, if installed\n"
msgstr ""
-#: gcc.c:2994
+#: gcc.c:3007
msgid ""
" -v Display the programs invoked by the compiler\n"
msgstr ""
-#: gcc.c:2995
+#: gcc.c:3008
msgid ""
" -### Like -v but options quoted and commands not "
"executed\n"
msgstr ""
-#: gcc.c:2996
+#: gcc.c:3009
msgid ""
" -E Preprocess only; do not compile, assemble or "
"link\n"
msgstr ""
-#: gcc.c:2997
+#: gcc.c:3010
msgid " -S Compile only; do not assemble or link\n"
msgstr ""
-#: gcc.c:2998
+#: gcc.c:3011
msgid " -c Compile and assemble, but do not link\n"
msgstr ""
-#: gcc.c:2999
+#: gcc.c:3012
msgid " -o <file> Place the output into <file>\n"
msgstr ""
-#: gcc.c:3000
+#: gcc.c:3013
msgid ""
" -x <language> Specify the language of the following input "
"files\n"
@@ -4965,7 +5287,7 @@ msgid ""
"extension\n"
msgstr ""
-#: gcc.c:3007
+#: gcc.c:3020
#, c-format
msgid ""
"\n"
@@ -4974,93 +5296,89 @@ msgid ""
" other options on to these processes the -W<letter> options must be used.\n"
msgstr ""
-#: gcc.c:3128
+#: gcc.c:3141
#, c-format
msgid "`-%c' option must have argument"
msgstr ""
-#: gcc.c:3150
+#: gcc.c:3163
#, c-format
msgid "couldn't run `%s': %s"
msgstr ""
#. translate_options () has turned --version into -fversion.
-#: gcc.c:3336
+#: gcc.c:3349
#, c-format
msgid "%s (GCC) %s\n"
msgstr ""
-#: gcc.c:3337 gcov.c:423
-msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: gcc.c:3339
+#: gcc.c:3352
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
"\n"
msgstr ""
-#: gcc.c:3440
+#: gcc.c:3453
msgid "argument to `-Xlinker' is missing"
msgstr ""
-#: gcc.c:3448
+#: gcc.c:3461
msgid "argument to `-Xpreprocessor' is missing"
msgstr ""
-#: gcc.c:3455
+#: gcc.c:3468
msgid "argument to `-Xassembler' is missing"
msgstr ""
-#: gcc.c:3462
+#: gcc.c:3475
msgid "argument to `-l' is missing"
msgstr ""
-#: gcc.c:3478
+#: gcc.c:3491
msgid "argument to `-specs' is missing"
msgstr ""
-#: gcc.c:3492
+#: gcc.c:3505
msgid "argument to `-specs=' is missing"
msgstr ""
-#: gcc.c:3529
+#: gcc.c:3542
#, c-format
msgid "`-%c' must come at the start of the command line"
msgstr ""
-#: gcc.c:3538
+#: gcc.c:3551
msgid "argument to `-B' is missing"
msgstr ""
-#: gcc.c:3715
+#: gcc.c:3728
msgid "warning: -pipe ignored because -save-temps specified"
msgstr ""
-#: gcc.c:3719
+#: gcc.c:3732
msgid "warning: -pipe ignored because -time specified"
msgstr ""
-#: gcc.c:3931
+#: gcc.c:3944
msgid "argument to `-x' is missing"
msgstr ""
-#: gcc.c:3959
+#: gcc.c:3972
#, c-format
msgid "argument to `-%s' is missing"
msgstr ""
-#: gcc.c:4020
+#: gcc.c:4033
#, c-format
msgid "warning: `-x %s' after last input file has no effect"
msgstr ""
-#: gcc.c:4421
+#: gcc.c:4434
msgid "invalid specification! Bug in cc"
msgstr ""
-#: gcc.c:4575
+#: gcc.c:4588
#, c-format
msgid "%s\n"
msgstr ""
@@ -5068,127 +5386,128 @@ 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:5079
+#: gcc.c:5092
#, c-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
msgstr ""
-#: gcc.c:5088
+#: gcc.c:5101
#, c-format
msgid "warning: use of obsolete %%[ operator in specs"
msgstr ""
-#: gcc.c:5106
+#: gcc.c:5119
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr ""
-#: gcc.c:5169
+#: gcc.c:5182
#, c-format
msgid "spec failure: unrecognized spec option '%c'"
msgstr ""
-#: gcc.c:5248
+#: gcc.c:5261
#, c-format
msgid "unknown spec function `%s'"
msgstr ""
-#: gcc.c:5267
+#: gcc.c:5280
#, c-format
msgid "error in args to spec function `%s'"
msgstr ""
-#: gcc.c:5315
+#: gcc.c:5328
msgid "malformed spec function name"
msgstr ""
#. )
-#: gcc.c:5318
+#: gcc.c:5331
msgid "no arguments for spec function"
msgstr ""
-#: gcc.c:5337
+#: gcc.c:5350
msgid "malformed spec function arguments"
msgstr ""
-#: gcc.c:6063
+#: gcc.c:6076
msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC."
msgstr ""
-#: gcc.c:6073
+#: gcc.c:6086
msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC."
msgstr ""
-#: gcc.c:6166
+#: gcc.c:6179
#, c-format
msgid "unrecognized option `-%s'"
msgstr ""
-#: gcc.c:6172
+#: gcc.c:6185
#, c-format
msgid "install: %s%s\n"
msgstr ""
-#: gcc.c:6173
+#: gcc.c:6186
#, c-format
msgid "programs: %s\n"
msgstr ""
-#: gcc.c:6174
+#: gcc.c:6187
#, c-format
msgid "libraries: %s\n"
msgstr ""
-#: gcc.c:6231
+#: gcc.c:6244
+#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
msgstr ""
-#: gcc.c:6247
+#: gcc.c:6260
#, c-format
msgid "Configured with: %s\n"
msgstr ""
-#: gcc.c:6261
+#: gcc.c:6274
#, c-format
msgid "Thread model: %s\n"
msgstr ""
-#: gcc.c:6272
+#: gcc.c:6285
#, c-format
msgid "gcc version %s\n"
msgstr ""
-#: gcc.c:6274
+#: gcc.c:6287
#, c-format
msgid "gcc driver version %s executing gcc version %s\n"
msgstr ""
-#: gcc.c:6282
+#: gcc.c:6295
msgid "no input files"
msgstr ""
-#: gcc.c:6304 gcc.c:6423
+#: gcc.c:6317 gcc.c:6436
#, c-format
msgid "%s: linker input file unused because linking not done"
msgstr ""
-#: gcc.c:6307
+#: gcc.c:6320
msgid "cannot specify -o with -c or -S and multiple languages"
msgstr ""
-#: gcc.c:6342
+#: gcc.c:6355
#, c-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:6463
+#: gcc.c:6476
#, c-format
msgid "language %s not recognized"
msgstr ""
-#: gcc.c:6560
+#: gcc.c:6573
msgid "internal gcc abort"
msgstr ""
@@ -5274,6 +5593,10 @@ msgstr ""
msgid "gcov (GCC) %s\n"
msgstr ""
+#: gcov.c:423
+msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+msgstr ""
+
#: gcov.c:425
msgid ""
"This is free software; see the source for copying conditions.\n"
@@ -5469,351 +5792,32 @@ msgid "%s:source file is newer than graph file `%s'\n"
msgstr ""
#. Return if there's nothing to do, or it is too expensive.
-#: gcse.c:745
+#: gcse.c:747
msgid "GCSE disabled"
msgstr ""
-#: gcse.c:6069
+#: gcse.c:6108
msgid "NULL pointer checks disabled"
msgstr ""
-#. Return if there's nothing to do, or it is too expensive
-#: gcse.c:7930
+#. Return if there's nothing to do, or it is too expensive.
+#: gcse.c:7994
msgid "jump bypassing disabled"
msgstr ""
-#: gcse.c:7991
+#: gcse.c:8055
#, c-format
msgid "%s: %d basic blocks and %d edges/basic block"
msgstr ""
-#: gcse.c:8004
+#: gcse.c:8068
#, c-format
msgid "%s: %d basic blocks and %d registers"
msgstr ""
-#: genautomata.c:1534
-#, c-format
-msgid "Name `%s' contains quotes"
-msgstr ""
-
-#: genautomata.c:1657
-#, c-format
-msgid "invalid string `%s' in define_cpu_unit"
-msgstr ""
-
-#: genautomata.c:1688
-#, c-format
-msgid "invalid string `%s' in define_query_cpu_unit"
-msgstr ""
-
-#: genautomata.c:1719 genautomata.c:1722
-#, c-format
-msgid "invalid string `%s' in define_bypass"
-msgstr ""
-
-#: genautomata.c:1756
-#, c-format
-msgid "invalid first string `%s' in exclusion_set"
-msgstr ""
-
-#: genautomata.c:1760
-#, c-format
-msgid "invalid second string `%s' in exclusion_set"
-msgstr ""
-
-#: genautomata.c:1906
-#, c-format
-msgid "invalid string `%s' in define_automaton"
-msgstr ""
-
-#: genautomata.c:1936
-#, c-format
-msgid "invalid option `%s' in automata_option"
-msgstr ""
-
-#: genautomata.c:1957
-#, c-format
-msgid "garbage after ) in reservation `%s'"
-msgstr ""
-
-#: genautomata.c:1987 genautomata.c:2019 genautomata.c:2045
-#, c-format
-msgid "invalid `%s' in reservation `%s'"
-msgstr ""
-
-#: genautomata.c:1998
-#, c-format
-msgid "repetition `%s' <= 1 in reservation `%s'"
-msgstr ""
-
-#: genautomata.c:2467
-#, c-format
-msgid "unit `%s' in exclusion is not declared"
-msgstr ""
-
-#: genautomata.c:2469
-#, c-format
-msgid "`%s' in exclusion is not unit"
-msgstr ""
-
-#: genautomata.c:2505
-#, c-format
-msgid "unit `%s' excludes itself"
-msgstr ""
-
-#: genautomata.c:2513
-#, c-format
-msgid "units `%s' and `%s' in exclusion set belong to different automata"
-msgstr ""
-
-#: genautomata.c:2685
-#, c-format
-msgid "unit `%s' requires own absence"
-msgstr ""
-
-#: genautomata.c:2713 genautomata.c:2719
-#, c-format
-msgid "unit `%s' excludes and requires presence of `%s'"
-msgstr ""
-
-#: genautomata.c:2733 genautomata.c:2739
-#, c-format
-msgid "unit `%s' requires absence and presence of `%s'"
-msgstr ""
-
-#: genautomata.c:2818 genautomata.c:2821
-#, c-format
-msgid "repeated declaration of automaton `%s'"
-msgstr ""
-
-#: genautomata.c:2837
-#, c-format
-msgid "define_insn_reservation `%s' has negative latency time"
-msgstr ""
-
-#: genautomata.c:2843
-#, c-format
-msgid "`%s' is already used as insn reservation name"
-msgstr ""
-
-#: genautomata.c:2849
-#, c-format
-msgid "define_bypass `%s - %s' has negative latency time"
-msgstr ""
-
-#: genautomata.c:2863
-#, c-format
-msgid "automaton `%s' is not declared"
-msgstr ""
-
-#: genautomata.c:2873
-#, c-format
-msgid "define_unit `%s' without automaton when one defined"
-msgstr ""
-
-#: genautomata.c:2879
-#, c-format
-msgid "`%s' is declared as cpu unit"
-msgstr ""
-
-#: genautomata.c:2888
-#, c-format
-msgid "`%s' is declared as cpu reservation"
-msgstr ""
-
-#: genautomata.c:2898
-#, c-format
-msgid "repeated declaration of unit `%s'"
-msgstr ""
-
-#: genautomata.c:2901
-#, c-format
-msgid "repeated declaration of reservation `%s'"
-msgstr ""
-
-#: genautomata.c:2916 genautomata.c:2919
-#, c-format
-msgid "there is no insn reservation `%s'"
-msgstr ""
-
-#: genautomata.c:2936 genautomata.c:2941
-#, c-format
-msgid "the same bypass `%s - %s' is already defined"
-msgstr ""
-
-#: genautomata.c:2946
-#, c-format
-msgid "bypass `%s - %s' is already defined"
-msgstr ""
-
-#: genautomata.c:3049 genautomata.c:3051
-#, c-format
-msgid "automaton `%s' is not used"
-msgstr ""
-
-#: genautomata.c:3073
-#, c-format
-msgid "undeclared unit or reservation `%s'"
-msgstr ""
-
-#: genautomata.c:3151 genautomata.c:3153
-#, c-format
-msgid "unit `%s' is not used"
-msgstr ""
-
-#: genautomata.c:3158 genautomata.c:3160
-#, c-format
-msgid "reservation `%s' is not used"
-msgstr ""
-
-#: genautomata.c:3255
-#, c-format
-msgid "cycle in definition of reservation `%s'"
-msgstr ""
-
-#: genautomata.c:5424
-msgid "The following units do not satisfy units-automata distribution rule"
-msgstr ""
-
-#: genautomata.c:5425
-msgid " (A unit of given unit automaton should be on each reserv. altern.)"
-msgstr ""
-
-#: genautomata.c:5428
-#, c-format
-msgid "Unit %s, reserv. %s, cycle %d"
-msgstr ""
-
-#: genautomata.c:9632
-msgid "-split has no argument."
-msgstr ""
-
-#: genautomata.c:9633
-msgid "option `-split' has not been implemented yet\n"
-msgstr ""
-
-#: genautomata.c:9677 genautomata.c:9682
-#, c-format
-msgid "Automaton `%s': Insn `%s' will never be issued"
-msgstr ""
-
-#: genautomata.c:9689 genautomata.c:9692
-#, c-format
-msgid "Insn `%s' will never be issued"
-msgstr ""
-
-#: genautomata.c:9839
-msgid "Errors in DFA description"
-msgstr ""
-
-#: genautomata.c:9921
-#, c-format
-msgid "Error in writing DFA description file %s"
-msgstr ""
-
-#: genconditions.c:192
-msgid "No input file name."
-msgstr ""
-
-#: genmodes.c:115
-#, c-format
-msgid "no complex class for class %s"
-msgstr ""
-
-#: genmodes.c:128
-#, c-format
-msgid "no vector class for class %s"
-msgstr ""
-
-#: genmodes.c:152
-#, c-format
-msgid "%s:%d: duplicate definition of mode \"%s\""
-msgstr ""
-
-#: genmodes.c:154
-#, c-format
-msgid "%s:%d: previous definition here"
-msgstr ""
-
-#: genmodes.c:209 genmodes.c:551 genmodes.c:575 genmodes.c:608
-#, c-format
-msgid "%s:%d: no mode \"%s\""
-msgstr ""
-
-#: genmodes.c:215 genmodes.c:613
-#, c-format
-msgid "%s:%d: mode \"%s\" is not class %s"
-msgstr ""
-
-#: genmodes.c:223
-#, c-format
-msgid "%s:%d: mode \"%s\" already has a %s adjustment"
-msgstr ""
-
-#: genmodes.c:225
-#, c-format
-msgid "%s:%d: previous adjustment here"
-msgstr ""
-
-#: genmodes.c:248
-#, c-format
-msgid "%s:%d: (%s) field %s must be set"
-msgstr ""
-
-#: genmodes.c:253
-#, c-format
-msgid "%s:%d: (%s) field %s must not be set"
-msgstr ""
-
-#: genmodes.c:289
-#, c-format
-msgid "%s:%d: mode with no name"
-msgstr ""
-
-#: genmodes.c:294
-#, c-format
-msgid "%s:%d: %smode has no mode class"
-msgstr ""
-
-#: genmodes.c:421
-#, c-format
-msgid "%s:%d:mode name \"%s\" is too long"
-msgstr ""
-
-#: genmodes.c:436
-#, c-format
-msgid "%s:%d: float mode \"%s\" has no 'F'"
-msgstr ""
-
-#: genmodes.c:488 genmodes.c:621
-#, c-format
-msgid "%s:%d: mode name \"%s\" is too long"
-msgstr ""
-
-#: genmodes.c:556
-#, c-format
-msgid "%s:%d: mode \"%s\" is not class FLOAT"
-msgstr ""
-
-#: genmodes.c:580
-#, c-format
-msgid "%s:%d: mode \"%s\" is not class INT"
-msgstr ""
-
-#: genmodes.c:1106 genmodes.c:1138
-#, c-format
-msgid "mode %s is neither vector nor complex but contains %s"
-msgstr ""
-
-#: genmodes.c:1196
-#, c-format
-msgid "usage: %s [-h|-m] > file"
-msgstr ""
-
#: ggc-common.c:398 ggc-common.c:406 ggc-common.c:487 ggc-common.c:507
-#: ggc-page.c:2005 ggc-page.c:2037 ggc-page.c:2044 ggc-zone.c:1668
-#: ggc-zone.c:1674 ggc-zone.c:1679 ggc-zone.c:1686
+#: ggc-page.c:2030 ggc-page.c:2062 ggc-page.c:2069 ggc-zone.c:1361
+#: ggc-zone.c:1367 ggc-zone.c:1372 ggc-zone.c:1379
#, c-format
msgid "can't write PCH file: %m"
msgstr ""
@@ -5829,7 +5833,7 @@ msgid "can't write padding to PCH file: %m"
msgstr ""
#: ggc-common.c:563 ggc-common.c:571 ggc-common.c:578 ggc-common.c:581
-#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2132 ggc-zone.c:1698
+#: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2157 ggc-zone.c:1389
#, c-format
msgid "can't read PCH file: %m"
msgstr ""
@@ -5838,20 +5842,31 @@ msgstr ""
msgid "had to relocate PCH"
msgstr ""
-#: ggc-page.c:1322
+#: ggc-page.c:1325
#, c-format
msgid "open /dev/zero: %m"
msgstr ""
-#: ggc-page.c:2022 ggc-page.c:2028
+#: ggc-page.c:2047 ggc-page.c:2053
msgid "can't write PCH file"
msgstr ""
-#: ggc-simple.c:492
+#: ggc-simple.c:506
msgid "Generating PCH files is not supported when using ggc-simple.c"
msgstr ""
-#: haifa-sched.c:197
+#: global.c:356 global.c:369 global.c:383
+#, c-format
+msgid "%s cannot be used in asm here"
+msgstr ""
+
+#: graph.c:403 toplev.c:1481 toplev.c:4408 f/com.c:14202 java/jcf-parse.c:883
+#: java/jcf-parse.c:1030 java/lex.c:1828 objc/objc-act.c:503
+#, c-format
+msgid "can't open %s: %m"
+msgstr ""
+
+#: haifa-sched.c:196
#, c-format
msgid "fix_sched_param: unknown param: %s"
msgstr ""
@@ -5869,54 +5884,58 @@ msgid "function using alloca cannot be inline"
msgstr ""
#: integrate.c:176
-msgid "function using setjmp cannot be inline"
+msgid "function using longjmp cannot be inline"
msgstr ""
#: integrate.c:179
-msgid "function uses __builtin_eh_return"
+msgid "function using setjmp cannot be inline"
msgstr ""
#: integrate.c:182
+msgid "function uses __builtin_eh_return"
+msgstr ""
+
+#: integrate.c:185
msgid "function with nested functions cannot be inline"
msgstr ""
-#: integrate.c:186
+#: integrate.c:189
msgid "function with label addresses used in initializers cannot inline"
msgstr ""
-#: integrate.c:193 integrate.c:237
+#: integrate.c:196 integrate.c:240
msgid "function too large to be inline"
msgstr ""
-#: integrate.c:203
+#: integrate.c:206
msgid "no prototype, and parameter address used; cannot be inline"
msgstr ""
-#: integrate.c:210 integrate.c:255
+#: integrate.c:213 integrate.c:258
msgid "inline functions not supported for this return value type"
msgstr ""
-#: integrate.c:215
+#: integrate.c:218
msgid "function with varying-size return value cannot be inline"
msgstr ""
-#: integrate.c:222
+#: integrate.c:225
msgid "function with varying-size parameter cannot be inline"
msgstr ""
-#: integrate.c:225
+#: integrate.c:228
msgid "function with transparent unit parameter cannot be inline"
msgstr ""
-#: integrate.c:244
+#: integrate.c:247
msgid "function with computed jump cannot inline"
msgstr ""
-#: integrate.c:248
+#: integrate.c:251
msgid "function with nonlocal goto cannot be inline"
msgstr ""
-#: integrate.c:262
+#: integrate.c:265
msgid "function with target specific attribute(s) cannot be inlined"
msgstr ""
@@ -5954,85 +5973,85 @@ msgid "This switch lacks documentation"
msgstr ""
#. Eventually this should become a hard error IMO.
-#: opts.c:311
+#: opts.c:318
#, c-format
msgid "command line option \"%s\" is valid for %s but not for %s"
msgstr ""
-#: opts.c:399
+#: opts.c:406
#, c-format
msgid "missing argument to \"%s\""
msgstr ""
-#: opts.c:409
+#: opts.c:416
#, c-format
msgid "argument to \"%s\" should be a non-negative integer"
msgstr ""
-#: opts.c:455
+#: opts.c:463
#, c-format
msgid "unrecognized command line option \"%s\""
msgstr ""
-#: opts.c:638
+#: opts.c:646
msgid "-Wuninitialized is not supported without -O"
msgstr ""
-#: opts.c:1329
+#: opts.c:1350
#, c-format
msgid "unrecognized register name \"%s\""
msgstr ""
-#: opts.c:1373
+#: opts.c:1394
#, c-format
msgid "unknown tls-model \"%s\""
msgstr ""
-#: opts.c:1443
-msgid "use -gdwarf -gN for DWARF v1 level N, and -gdwarf-2 for DWARF v2"
+#: opts.c:1450
+msgid "-fwritable-strings is deprecated; see documentation for details"
msgstr ""
-#: opts.c:1521
+#: opts.c:1534
#, c-format
msgid "%s: --param arguments should be of the form NAME=VALUE"
msgstr ""
-#: opts.c:1526
+#: opts.c:1539
#, c-format
msgid "invalid --param value `%s'"
msgstr ""
-#: opts.c:1622
+#: opts.c:1635
msgid "target system does not support debug output"
msgstr ""
-#: opts.c:1629
+#: opts.c:1642
#, c-format
msgid "debug format \"%s\" conflicts with prior selection"
msgstr ""
-#: opts.c:1645
+#: opts.c:1658
#, c-format
msgid "unrecognised debug output level \"%s\""
msgstr ""
-#: opts.c:1647
+#: opts.c:1660
#, c-format
msgid "debug output level %s is too high"
msgstr ""
-#: opts.c:1666
+#: opts.c:1679
msgid "The following options are language-independent:\n"
msgstr ""
-#: opts.c:1673
+#: opts.c:1686
#, c-format
msgid ""
"The %s front end recognizes the following options:\n"
"\n"
msgstr ""
-#: opts.c:1687
+#: opts.c:1700
msgid "The --param option recognizes the following as parameters:\n"
msgstr ""
@@ -6376,7 +6395,7 @@ msgstr ""
msgid "%s: input file names must have .c suffixes: %s\n"
msgstr ""
-#: ra.c:752
+#: ra.c:750
msgid "Didn't find a coloring.\n"
msgstr ""
@@ -6403,109 +6422,109 @@ msgstr ""
msgid "output operand %d must use `&' constraint"
msgstr ""
-#: regclass.c:749
+#: regclass.c:743
#, c-format
msgid "can't use '%s' as a %s register"
msgstr ""
-#: regclass.c:764 config/ia64/ia64.c:4473 config/ia64/ia64.c:4480
+#: regclass.c:758 config/ia64/ia64.c:4640 config/ia64/ia64.c:4647
#, c-format
msgid "unknown register name: %s"
msgstr ""
-#: regclass.c:774
+#: regclass.c:768
msgid "global register variable follows a function definition"
msgstr ""
-#: regclass.c:778
+#: regclass.c:772
msgid "register used for two global register variables"
msgstr ""
-#: regclass.c:783
+#: regclass.c:777
msgid "call-clobbered register used for global register variable"
msgstr ""
-#: regrename.c:1842
+#: regrename.c:1846
#, c-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr ""
-#: regrename.c:1854
+#: regrename.c:1858
#, c-format
msgid "validate_value_data: Loop in regno chain (%u)"
msgstr ""
-#: regrename.c:1857
+#: regrename.c:1861
#, c-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr ""
-#: regrename.c:1869
+#: regrename.c:1873
#, c-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr ""
-#: reload.c:1251
+#: reload.c:1254
msgid "cannot reload integer constant operand in `asm'"
msgstr ""
-#: reload.c:1273
+#: reload.c:1276
msgid "impossible register constraint in `asm'"
msgstr ""
-#: reload.c:3501
+#: reload.c:3489
msgid "`&' constraint used with no register class"
msgstr ""
-#: reload.c:3669
+#: reload.c:3657
msgid "unable to generate reloads for:"
msgstr ""
-#: reload.c:3670 reload.c:3884
+#: reload.c:3658 reload.c:3872
msgid "inconsistent operand constraints in an `asm'"
msgstr ""
-#: reload1.c:1208
+#: reload1.c:1212
msgid "frame size too large for reliable stack checking"
msgstr ""
-#: reload1.c:1211
+#: reload1.c:1215
msgid "try reducing the number of local variables"
msgstr ""
-#: reload1.c:1856
+#: reload1.c:1868
#, c-format
msgid "can't find a register in class `%s' while reloading `asm'"
msgstr ""
-#: reload1.c:1860
+#: reload1.c:1872
#, c-format
msgid "unable to find a register to spill in class `%s'"
msgstr ""
-#: reload1.c:1862
+#: reload1.c:1874
msgid "this is the insn:"
msgstr ""
-#: reload1.c:3860
+#: reload1.c:3871
msgid "`asm' operand requires impossible reload"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:4945
+#: reload1.c:4963
msgid "could not find a spill register"
msgstr ""
-#: reload1.c:4950
+#: reload1.c:4968
msgid "`asm' operand constraint incompatible with operand size"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6572
+#: reload1.c:6590
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:6573
+#: reload1.c:6591
msgid "output operand is constant in `asm'"
msgstr ""
@@ -6517,186 +6536,194 @@ msgstr ""
msgid "insn does not satisfy its constraints:"
msgstr ""
-#: rtl.c:427
+#: rtl.c:477
#, c-format
msgid "RTL check: access of elt %d of `%s' with last elt %d in %s, at %s:%d"
msgstr ""
-#: rtl.c:437
+#: rtl.c:487
#, c-format
msgid ""
"RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
msgstr ""
-#: rtl.c:447
+#: rtl.c:497
#, c-format
msgid ""
"RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %"
"s:%d"
msgstr ""
-#: rtl.c:456
+#: rtl.c:506
#, c-format
msgid "RTL check: expected code `%s', have `%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:466
+#: rtl.c:516
#, c-format
msgid "RTL check: expected code `%s' or `%s', have `%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:477
+#: rtl.c:527
#, c-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
msgstr ""
-#: rtl.c:488
+#: rtl.c:538
#, c-format
msgid "RTL flag check: %s used with unexpected rtx code `%s' in %s, at %s:%d"
msgstr ""
-#: stmt.c:748
+#: stmt.c:750
#, c-format
msgid "jump to `%s' invalidly jumps into binding contour"
msgstr ""
-#: stmt.c:975 stmt.c:3739
+#: stmt.c:977 stmt.c:3793
msgid "%Jlabel '%D' used before containing binding contour"
msgstr ""
-#: stmt.c:1154
+#: stmt.c:1156
msgid "output operand constraint lacks `='"
msgstr ""
-#: stmt.c:1169
+#: stmt.c:1171
#, c-format
msgid "output constraint `%c' for operand %d is not at the beginning"
msgstr ""
-#: stmt.c:1191
+#: stmt.c:1193
msgid "operand constraint contains incorrectly positioned '+' or '='"
msgstr ""
-#: stmt.c:1197 stmt.c:1295
+#: stmt.c:1199 stmt.c:1301
#, c-format
msgid "`%%' constraint used with last operand"
msgstr ""
-#: stmt.c:1216
+#: stmt.c:1218
msgid "matching constraint not valid in output operand"
msgstr ""
-#: stmt.c:1286
+#: stmt.c:1260
+msgid "read-write constraint does not allow a register"
+msgstr ""
+
+#: stmt.c:1292
#, c-format
msgid "input operand constraint contains `%c'"
msgstr ""
-#: stmt.c:1326
+#: stmt.c:1334
msgid "matching constraint references invalid operand number"
msgstr ""
-#: stmt.c:1364
+#: stmt.c:1372
#, c-format
msgid "invalid punctuation `%c' in constraint"
msgstr ""
-#: stmt.c:1413
+#: stmt.c:1396
+msgid "matching constraint does not allow a register"
+msgstr ""
+
+#: stmt.c:1424
#, c-format
msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
msgstr ""
-#: stmt.c:1503
+#: stmt.c:1514
#, c-format
msgid "unknown register name `%s' in `asm'"
msgstr ""
-#: stmt.c:1511
+#: stmt.c:1522
#, c-format
msgid "PIC register `%s' clobbered in `asm'"
msgstr ""
-#: stmt.c:1560
+#: stmt.c:1571
#, c-format
msgid "more than %d operands in `asm'"
msgstr ""
-#: stmt.c:1622
+#: stmt.c:1633
#, c-format
msgid "output number %d not directly addressable"
msgstr ""
-#: stmt.c:1700
+#: stmt.c:1711
#, c-format
msgid "asm operand %d probably doesn't match constraints"
msgstr ""
-#: stmt.c:1710
+#: stmt.c:1721
#, c-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
msgstr ""
-#: stmt.c:1861
+#: stmt.c:1875
msgid "asm clobber conflict with output operand"
msgstr ""
-#: stmt.c:1866
+#: stmt.c:1880
msgid "asm clobber conflict with input operand"
msgstr ""
-#: stmt.c:1900
+#: stmt.c:1914
msgid "too many alternatives in `asm'"
msgstr ""
-#: stmt.c:1912
+#: stmt.c:1926
msgid "operand constraints for `asm' differ in number of alternatives"
msgstr ""
-#: stmt.c:1964
+#: stmt.c:1978
#, c-format
msgid "duplicate asm operand name '%s'"
msgstr ""
-#: stmt.c:2062
+#: stmt.c:2076
msgid "missing close brace for named operand"
msgstr ""
-#: stmt.c:2090
+#: stmt.c:2104
#, c-format
msgid "undefined named operand '%s'"
msgstr ""
-#: stmt.c:2146
+#: stmt.c:2161
msgid "%Hstatement with no effect"
msgstr ""
-#: stmt.c:2301
+#: stmt.c:2317
msgid "%Hvalue computed is not used"
msgstr ""
-#: stmt.c:3679
+#: stmt.c:3733
msgid "%Junused variable '%D'"
msgstr ""
-#: stmt.c:4452
+#: stmt.c:4508
msgid "%Hunreachable code at beginning of %s"
msgstr ""
-#: stmt.c:5080
+#: stmt.c:5136
#, c-format
msgid "enumeration value `%s' not handled in switch"
msgstr ""
-#: stmt.c:5105 stmt.c:5125
+#: stmt.c:5161 stmt.c:5181
#, c-format
msgid "case value `%ld' not in enumerated type"
msgstr ""
-#: stmt.c:5108 stmt.c:5128
+#: stmt.c:5164 stmt.c:5184
#, c-format
msgid "case value `%ld' not in enumerated type `%s'"
msgstr ""
-#: stmt.c:5345
+#: stmt.c:5401
msgid "switch missing default case"
msgstr ""
@@ -6708,49 +6735,49 @@ msgstr ""
msgid "variable-size type declared outside of any function"
msgstr ""
-#: stor-layout.c:513
+#: stor-layout.c:515
msgid "%Jsize of '%D' is %d bytes"
msgstr ""
-#: stor-layout.c:515
+#: stor-layout.c:517
msgid "%Jsize of '%D' is larger than %d bytes"
msgstr ""
-#: stor-layout.c:881
+#: stor-layout.c:883
msgid "%Jpacked attribute causes inefficient alignment for '%D'"
msgstr ""
-#: stor-layout.c:884
+#: stor-layout.c:886
msgid "%Jpacked attribute is unnecessary for '%D'"
msgstr ""
-#: stor-layout.c:900
+#: stor-layout.c:902
msgid "%Jpadding struct to align '%D'"
msgstr ""
-#: stor-layout.c:1243
+#: stor-layout.c:1245
msgid "padding struct size to alignment boundary"
msgstr ""
-#: stor-layout.c:1273
+#: stor-layout.c:1275
#, c-format
msgid "packed attribute causes inefficient alignment for `%s'"
msgstr ""
-#: stor-layout.c:1275
+#: stor-layout.c:1277
#, c-format
msgid "packed attribute is unnecessary for `%s'"
msgstr ""
-#: stor-layout.c:1280
+#: stor-layout.c:1282
msgid "packed attribute causes inefficient alignment"
msgstr ""
-#: stor-layout.c:1282
+#: stor-layout.c:1284
msgid "packed attribute is unnecessary"
msgstr ""
-#: targhooks.c:161
+#: targhooks.c:154
msgid "__builtin_saveregs not supported by this target"
msgstr ""
@@ -6791,6 +6818,7 @@ msgid "collect: tweaking %s in %s\n"
msgstr ""
#: tlink.c:700
+#, c-format
msgid "collect: relinking\n"
msgstr ""
@@ -6799,104 +6827,107 @@ msgstr ""
msgid "ld returned %d exit status"
msgstr ""
-#: toplev.c:1257
+#: toplev.c:1226
#, c-format
msgid "%s "
msgstr ""
-#: toplev.c:1259
+#: toplev.c:1228
#, c-format
msgid " %s"
msgstr ""
-#: toplev.c:1324
+#: toplev.c:1293
#, c-format
msgid "invalid option argument `%s'"
msgstr ""
-#: toplev.c:1387
+#: toplev.c:1356
#, c-format
msgid "getting core file size maximum limit: %m"
msgstr ""
-#: toplev.c:1390
+#: toplev.c:1359
#, c-format
msgid "setting core file size limit to maximum: %m"
msgstr ""
-#: toplev.c:1713
+#: toplev.c:1678
msgid "%J'%F' used but never defined"
msgstr ""
-#: toplev.c:1715
+#: toplev.c:1680
msgid "%J'%F' declared `static' but never defined"
msgstr ""
-#: toplev.c:1740
+#: toplev.c:1705
msgid "%J'%D' defined but not used"
msgstr ""
-#: toplev.c:1761 toplev.c:1778
+#: toplev.c:1726 toplev.c:1743
#, c-format
msgid "`%s' is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:1781
+#: toplev.c:1746
#, c-format
msgid "`%s' is deprecated"
msgstr ""
-#: toplev.c:1784
+#: toplev.c:1749
#, c-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:1787
+#: toplev.c:1752
msgid "type is deprecated"
msgstr ""
-#: toplev.c:1984
+#: toplev.c:1956
#, c-format
msgid "invalid register name `%s' for register variable"
msgstr ""
-#: toplev.c:3590
+#: toplev.c:3522
msgid ""
"branch target register load optimization is not intended to be run twice"
msgstr ""
-#: toplev.c:3757
+#: toplev.c:3689
+#, c-format
msgid ""
"\n"
"Target specific options:\n"
msgstr ""
-#: toplev.c:3771 toplev.c:3790
+#: toplev.c:3703 toplev.c:3722
#, c-format
msgid " -m%-23s [undocumented]\n"
msgstr ""
-#: toplev.c:3799
+#: toplev.c:3731
+#, c-format
msgid ""
"\n"
"There are undocumented target specific options as well.\n"
msgstr ""
-#: toplev.c:3801
+#: toplev.c:3733
+#, c-format
msgid " They exist, but they are not documented.\n"
msgstr ""
-#: toplev.c:3856
+#: toplev.c:3788
#, c-format
msgid "unrecognized gcc debugging option: %c"
msgstr ""
-#: toplev.c:3918 config/rs6000/rs6000.c:943
+#: toplev.c:3850 config/rs6000/rs6000.c:909
#, c-format
msgid "invalid option `%s'"
msgstr ""
-#: toplev.c:3933
+#: toplev.c:3865
#, c-format
msgid ""
"%s%s%s version %s (%s)\n"
@@ -6904,105 +6935,105 @@ msgid ""
"%s%s%s version %s (%s) compiled by CC.\n"
msgstr ""
-#: toplev.c:3940
+#: toplev.c:3872
#, c-format
msgid ""
"%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
msgstr ""
-#: toplev.c:3992
+#: toplev.c:3924
msgid "options passed: "
msgstr ""
-#: toplev.c:4021
+#: toplev.c:3953
msgid "options enabled: "
msgstr ""
-#: toplev.c:4079 java/jcf-write.c:3422
+#: toplev.c:4011 java/jcf-write.c:3422
#, c-format
msgid "can't open %s for writing: %m"
msgstr ""
-#: toplev.c:4162 config/sh/sh.c:6869
+#: toplev.c:4094 config/sh/sh.c:6883
msgid "created and used with different settings of -fpic"
msgstr ""
-#: toplev.c:4164 config/sh/sh.c:6871
+#: toplev.c:4096 config/sh/sh.c:6885
msgid "created and used with different settings of -fpie"
msgstr ""
-#: toplev.c:4215 config/sh/sh.c:6921
+#: toplev.c:4147 config/sh/sh.c:6935
#, c-format
msgid "created and used with differing settings of `-m%s'"
msgstr ""
-#: toplev.c:4218 config/sh/sh.c:6924
+#: toplev.c:4150 config/sh/sh.c:6938
msgid "out of memory"
msgstr ""
-#: toplev.c:4399
+#: toplev.c:4331
msgid "instruction scheduling not supported on this target machine"
msgstr ""
-#: toplev.c:4403
+#: toplev.c:4335
msgid "this target machine does not have delayed branches"
msgstr ""
-#: toplev.c:4417
+#: toplev.c:4349
#, c-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr ""
-#: toplev.c:4470
+#: toplev.c:4398
#, c-format
msgid "target system does not support the \"%s\" debug format"
msgstr ""
-#: toplev.c:4487
+#: toplev.c:4415
msgid "-ffunction-sections not supported for this target"
msgstr ""
-#: toplev.c:4492
+#: toplev.c:4420
msgid "-fdata-sections not supported for this target"
msgstr ""
-#: toplev.c:4499
+#: toplev.c:4427
msgid "-ffunction-sections disabled; it makes profiling impossible"
msgstr ""
-#: toplev.c:4506
+#: toplev.c:4434
msgid "-fprefetch-loop-arrays not supported for this target"
msgstr ""
-#: toplev.c:4512
+#: toplev.c:4440
msgid ""
"-fprefetch-loop-arrays not supported for this target (try -march switches)"
msgstr ""
-#: toplev.c:4521
+#: toplev.c:4449
msgid "-fprefetch-loop-arrays is not supported with -Os"
msgstr ""
-#: toplev.c:4527
+#: toplev.c:4455
msgid "-ffunction-sections may affect debugging on some targets"
msgstr ""
-#: toplev.c:4629
+#: toplev.c:4557
#, c-format
msgid "error writing to %s: %m"
msgstr ""
-#: toplev.c:4631 java/jcf-parse.c:909 java/jcf-write.c:3429
+#: toplev.c:4559 java/jcf-parse.c:902 java/jcf-write.c:3429
#, c-format
msgid "error closing %s: %m"
msgstr ""
-#: tree-dump.c:690
+#: tree-dump.c:692
#, c-format
msgid "could not open dump file `%s'"
msgstr ""
-#: tree-dump.c:761
+#: tree-dump.c:763
#, c-format
msgid "ignoring unknown option `%.*s' in `-fdump-%s'"
msgstr ""
@@ -7048,6 +7079,10 @@ msgid ""
"%Jfunction '%F' can never be inlined because it uses variable sized variables"
msgstr ""
+#: tree-inline.c:1338 tree-inline.c:1345
+msgid "%Jinlining failed in call to '%F': %s"
+msgstr ""
+
#: tree-optimize.c:190
msgid "%Jsize of return value of '%D' is %u bytes"
msgstr ""
@@ -7056,145 +7091,183 @@ msgstr ""
msgid "%Jsize of return value of '%D' is larger than %wd bytes"
msgstr ""
-#: tree.c:3793
+#: tree.c:3800
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:3848
+#: tree.c:3855
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:4677
+#: tree.c:4684
msgid "invalid initializer for bit string"
msgstr ""
-#: tree.c:4729
+#: tree.c:4736
#, c-format
msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:4742
+#: tree.c:4749
#, c-format
msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:4755
+#: tree.c:4762
#, c-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:4767
+#: tree.c:4774
#, c-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: varasm.c:435
+#: varasm.c:434
msgid "%J%D causes a section type conflict"
msgstr ""
-#: varasm.c:803
+#: varasm.c:796
msgid "%Jregister name not specified for '%D'"
msgstr ""
-#: varasm.c:805
+#: varasm.c:798
msgid "%Jinvalid register name for '%D'"
msgstr ""
-#: varasm.c:807
+#: varasm.c:800
msgid "%Jdata type of '%D' isn't suitable for a register"
msgstr ""
-#: varasm.c:810
+#: varasm.c:803
msgid "%Jregister specified for '%D' isn't suitable for data type"
msgstr ""
-#: varasm.c:820
+#: varasm.c:813
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:823
+#: varasm.c:816
msgid "volatile register variables don't work as you might wish"
msgstr ""
-#: varasm.c:855
+#: varasm.c:848
msgid "%Jregister name given for non-register variable '%D'"
msgstr ""
-#: varasm.c:1387
+#: varasm.c:1380
msgid "%Jstorage size of `%D' isn't known"
msgstr ""
-#: varasm.c:1441
+#: varasm.c:1434
msgid ""
"%Jalignment of '%D' is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1487
+#: varasm.c:1480
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1512
+#: varasm.c:1505
msgid ""
"%Jrequested alignment for '%D' is greater than implemented alignment of %d"
msgstr ""
-#: varasm.c:3757
+#: varasm.c:3787
msgid "initializer for integer value is too complicated"
msgstr ""
-#: varasm.c:3762
+#: varasm.c:3792
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:3828
+#: varasm.c:3858
msgid "unknown set constructor type"
msgstr ""
-#: varasm.c:4047
+#: varasm.c:4077
#, c-format
msgid "invalid initial value for member `%s'"
msgstr ""
-#: varasm.c:4234 varasm.c:4278
+#: varasm.c:4264 varasm.c:4308
msgid "%Jweak declaration of '%D' must precede definition"
msgstr ""
-#: varasm.c:4242
+#: varasm.c:4272
msgid ""
"%Jweak declaration of '%D' after first use results in unspecified behavior"
msgstr ""
-#: varasm.c:4276
+#: varasm.c:4306
msgid "%Jweak declaration of '%D' must be public"
msgstr ""
-#: varasm.c:4285
+#: varasm.c:4315
msgid "%Jweak declaration of '%D' not supported"
msgstr ""
-#: varasm.c:4314 varasm.c:4387
+#: varasm.c:4344 varasm.c:4434
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:4395
+#: varasm.c:4437
msgid "alias definitions not supported in this configuration; ignored"
msgstr ""
-#: varasm.c:4424
+#: varasm.c:4466
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
-#: varray.c:127
+#: varray.c:194
#, c-format
msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
msgstr ""
+#: varray.c:204
+#, c-format
+msgid "underflowed virtual array %s in %s, at %s:%d"
+msgstr ""
+
#. Print an error message for unrecognized stab codes.
#: xcoffout.c:173
#, c-format
msgid "no sclass for %s stab (0x%x)\n"
msgstr ""
+#.
+#. Local variables:
+#. mode:c
+#. End:
+#.
+#: diagnostic.def:1
+msgid "fatal error: "
+msgstr ""
+
+#: diagnostic.def:2
+msgid "internal compiler error: "
+msgstr ""
+
+#: diagnostic.def:3
+msgid "error: "
+msgstr ""
+
+#: diagnostic.def:4
+msgid "sorry, unimplemented: "
+msgstr ""
+
+#: diagnostic.def:6
+msgid "anachronism: "
+msgstr ""
+
+#: diagnostic.def:7
+msgid "note: "
+msgstr ""
+
+#: diagnostic.def:8
+msgid "debug: "
+msgstr ""
+
#: params.def:53
msgid ""
"The maximum number of instructions in a single function eligible for inlining"
@@ -7339,16 +7412,26 @@ msgstr ""
msgid "The maximum length of path considered in cse"
msgstr ""
-#: params.def:251
+#: params.def:243
+msgid "The maximum memory locations recorded by cselib"
+msgstr ""
+
+#: params.def:256
msgid ""
"Minimum heap expansion to trigger garbage collection, as a percentage of the "
"total size of the heap"
msgstr ""
-#: params.def:257
+#: params.def:262
msgid "Minimum heap size before we start collecting garbage, in kilobytes"
msgstr ""
+#: params.def:270
+msgid ""
+"The maximum number of instructions to search backward when looking for "
+"equivalent reload"
+msgstr ""
+
#: config/darwin-c.c:75
msgid "too many #pragma options align=reset"
msgstr ""
@@ -7424,7 +7507,7 @@ msgstr ""
msgid "bad value `%s' for -mfp-trap-mode switch"
msgstr ""
-#: config/alpha/alpha.c:324 config/rs6000/rs6000.c:1097
+#: config/alpha/alpha.c:324 config/rs6000/rs6000.c:1063
#, c-format
msgid "bad value `%s' for -mtls-size switch"
msgstr ""
@@ -7460,90 +7543,90 @@ msgstr ""
msgid "bad value `%s' for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:5386
+#: config/alpha/alpha.c:5411
#, c-format
msgid "invalid %%H value"
msgstr ""
-#: config/alpha/alpha.c:5407
+#: config/alpha/alpha.c:5432
#, c-format
msgid "invalid %%J value"
msgstr ""
-#: config/alpha/alpha.c:5423 config/ia64/ia64.c:4069
+#: config/alpha/alpha.c:5448 config/ia64/ia64.c:4243
#, c-format
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:5433 config/rs6000/rs6000.c:8880
-#: config/xtensa/xtensa.c:1975
+#: config/alpha/alpha.c:5458 config/rs6000/rs6000.c:8944
+#: config/xtensa/xtensa.c:1999
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5439 config/rs6000/rs6000.c:8799
-#: config/xtensa/xtensa.c:1942
+#: config/alpha/alpha.c:5464 config/rs6000/rs6000.c:8863
+#: config/xtensa/xtensa.c:1966
#, c-format
msgid "invalid %%N value"
msgstr ""
-#: config/alpha/alpha.c:5447 config/rs6000/rs6000.c:8827
+#: config/alpha/alpha.c:5472 config/rs6000/rs6000.c:8891
#, c-format
msgid "invalid %%P value"
msgstr ""
-#: config/alpha/alpha.c:5455
+#: config/alpha/alpha.c:5480
#, c-format
msgid "invalid %%h value"
msgstr ""
-#: config/alpha/alpha.c:5463 config/xtensa/xtensa.c:1968
+#: config/alpha/alpha.c:5488 config/xtensa/xtensa.c:1992
#, c-format
msgid "invalid %%L value"
msgstr ""
-#: config/alpha/alpha.c:5502 config/rs6000/rs6000.c:8781
+#: config/alpha/alpha.c:5527 config/rs6000/rs6000.c:8845
#, c-format
msgid "invalid %%m value"
msgstr ""
-#: config/alpha/alpha.c:5510 config/rs6000/rs6000.c:8789
+#: config/alpha/alpha.c:5535 config/rs6000/rs6000.c:8853
#, c-format
msgid "invalid %%M value"
msgstr ""
-#: config/alpha/alpha.c:5554
+#: config/alpha/alpha.c:5579
#, c-format
msgid "invalid %%U value"
msgstr ""
-#: config/alpha/alpha.c:5566 config/alpha/alpha.c:5580
-#: config/rs6000/rs6000.c:8888
+#: config/alpha/alpha.c:5591 config/alpha/alpha.c:5605
+#: config/rs6000/rs6000.c:8952
#, c-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:5603
+#: config/alpha/alpha.c:5628
#, c-format
msgid "invalid %%C value"
msgstr ""
-#: config/alpha/alpha.c:5640 config/rs6000/rs6000.c:8638
+#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:8702
#, c-format
msgid "invalid %%E value"
msgstr ""
-#: config/alpha/alpha.c:5665 config/alpha/alpha.c:5713
+#: config/alpha/alpha.c:5690 config/alpha/alpha.c:5738
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5674 config/rs6000/rs6000.c:9201
+#: config/alpha/alpha.c:5699 config/rs6000/rs6000.c:9265
#, c-format
msgid "invalid %%xn code"
msgstr ""
-#: config/alpha/alpha.c:6602 config/alpha/alpha.c:6605 config/s390/s390.c:6619
-#: config/s390/s390.c:6622
+#: config/alpha/alpha.c:6634 config/alpha/alpha.c:6637 config/s390/s390.c:6572
+#: config/s390/s390.c:6575
msgid "bad builtin fcode"
msgstr ""
@@ -7552,15 +7635,22 @@ 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.
+#. WARNING: Do not mark empty strings for translation, as calling
+#. gettext on an empty string does NOT return an empty
+#. string.
+#. 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/alpha/alpha.h:286 config/i386/i386.h:327 config/i386/i386.h:329
-#: config/i386/i386.h:331 config/ns32k/ns32k.h:140 config/rs6000/rs6000.h:297
-#: config/s390/s390.h:123 config/sparc/sparc.h:537 config/sparc/sparc.h:542
+#: config/i386/i386.h:331 config/ns32k/ns32k.h:140 config/s390/s390.h:124
+#: config/sparc/sparc.h:537 config/sparc/sparc.h:542
msgid "Use hardware fp"
msgstr ""
#: config/alpha/alpha.h:287 config/i386/i386.h:328 config/i386/i386.h:330
-#: config/rs6000/rs6000.h:299 config/sparc/sparc.h:539
-#: config/sparc/sparc.h:544
+#: config/sparc/sparc.h:539 config/sparc/sparc.h:544
msgid "Do not use hardware fp"
msgstr ""
@@ -7671,7 +7761,7 @@ msgstr ""
msgid "Tune expected memory latency"
msgstr ""
-#: config/alpha/alpha.h:365 config/ia64/ia64.h:258 config/rs6000/sysv4.h:90
+#: config/alpha/alpha.h:365 config/ia64/ia64.h:267 config/rs6000/sysv4.h:90
msgid "Specify bit size of immediate TLS offsets"
msgstr ""
@@ -7690,154 +7780,155 @@ msgstr ""
msgid "argument of `%s' attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arc/arc.c:1713 config/m32r/m32r.c:2281
+#: config/arc/arc.c:1714 config/m32r/m32r.c:2325
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:1745 config/m32r/m32r.c:2304
+#: config/arc/arc.c:1746 config/m32r/m32r.c:2348
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:1768 config/m32r/m32r.c:2375
+#: config/arc/arc.c:1769 config/m32r/m32r.c:2419
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
-#: config/arc/arc.c:1779
+#: config/arc/arc.c:1780
#, c-format
msgid "invalid operand to %%V code"
msgstr ""
#. Unknown flag.
-#: config/arc/arc.c:1786 config/m32r/m32r.c:2408 config/sparc/sparc.c:6858
+#. Undocumented flag.
+#: config/arc/arc.c:1787 config/m32r/m32r.c:2446 config/sparc/sparc.c:6985
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:519
+#: config/arm/arm.c:520
#, c-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:529 config/rs6000/rs6000.c:793 config/sparc/sparc.c:419
+#: config/arm/arm.c:530 config/rs6000/rs6000.c:759 config/sparc/sparc.c:424
#, c-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:671
+#: config/arm/arm.c:672
msgid "target CPU does not support APCS-32"
msgstr ""
-#: config/arm/arm.c:676
+#: config/arm/arm.c:677
msgid "target CPU does not support APCS-26"
msgstr ""
-#: config/arm/arm.c:682
+#: config/arm/arm.c:683
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:688
+#: config/arm/arm.c:689
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:702
+#: config/arm/arm.c:703
msgid ""
"enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:705
+#: config/arm/arm.c:706
msgid ""
"enabling callee interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:708
+#: config/arm/arm.c:709
msgid ""
"enabling caller interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:714
+#: config/arm/arm.c:715
msgid "interworking forces APCS-32 to be used"
msgstr ""
-#: config/arm/arm.c:720
+#: config/arm/arm.c:721
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:728
+#: config/arm/arm.c:729
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:731
+#: config/arm/arm.c:732
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:739
+#: config/arm/arm.c:740
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:747
+#: config/arm/arm.c:748
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:791
+#: config/arm/arm.c:792
#, c-format
msgid "invalid floating point emulation option: -mfpe-%s"
msgstr ""
-#: config/arm/arm.c:802
+#: config/arm/arm.c:803
msgid "-mfpe switch not supported by ep9312 target cpu - ignored."
msgstr ""
-#: config/arm/arm.c:822
+#: config/arm/arm.c:823
msgid "structure size boundary can only be set to 8 or 32"
msgstr ""
-#: config/arm/arm.c:830
+#: config/arm/arm.c:831
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:837
+#: config/arm/arm.c:838
#, c-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:2201 config/arm/arm.c:2219 config/avr/avr.c:4580
-#: config/c4x/c4x.c:4445 config/h8300/h8300.c:4255 config/i386/i386.c:1565
-#: config/i386/i386.c:1611 config/ip2k/ip2k.c:3234
-#: config/m68hc11/m68hc11.c:1227 config/m68k/m68k.c:344
-#: config/mcore/mcore.c:3374 config/ns32k/ns32k.c:1091
-#: config/rs6000/rs6000.c:14496 config/sh/sh.c:6723 config/sh/sh.c:6744
-#: config/sh/sh.c:6779 config/stormy16/stormy16.c:2073 config/v850/v850.c:2173
+#: config/arm/arm.c:2246 config/arm/arm.c:2264 config/avr/avr.c:4558
+#: config/c4x/c4x.c:4447 config/h8300/h8300.c:4257 config/i386/i386.c:1571
+#: config/i386/i386.c:1617 config/ip2k/ip2k.c:3169
+#: config/m68hc11/m68hc11.c:1227 config/m68k/m68k.c:333
+#: config/mcore/mcore.c:3375 config/ns32k/ns32k.c:1064
+#: config/rs6000/rs6000.c:14556 config/sh/sh.c:6737 config/sh/sh.c:6758
+#: config/sh/sh.c:6793 config/stormy16/stormy16.c:2073 config/v850/v850.c:2173
#, c-format
msgid "`%s' attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:10455
+#: config/arm/arm.c:10573
msgid "unable to compute real location of stacked parameter"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:11083 config/arm/arm.c:11120
+#: config/arm/arm.c:11201 config/arm/arm.c:11238
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:11163 config/i386/i386.c:14189 config/i386/i386.c:14223
+#: config/arm/arm.c:11281 config/i386/i386.c:14219 config/i386/i386.c:14253
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:11826
+#: config/arm/arm.c:11976
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:12071
+#: config/arm/arm.c:12226
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/pe.c:170 config/mcore/mcore.c:3240
+#: config/arm/pe.c:170 config/mcore/mcore.c:3241
msgid "%Jinitialized variable '%D' is marked dllimport"
msgstr ""
@@ -7965,92 +8056,92 @@ msgstr ""
msgid "Ignore dllimport attribute for functions"
msgstr ""
-#: config/avr/avr.c:535
+#: config/avr/avr.c:514
#, c-format
msgid "large frame pointer change (%d) with -mtiny-stack"
msgstr ""
-#: config/avr/avr.c:1123
+#: config/avr/avr.c:1101
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1131
+#: config/avr/avr.c:1109
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1144
+#: config/avr/avr.c:1122
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:1766 config/avr/avr.c:2427
+#: config/avr/avr.c:1744 config/avr/avr.c:2405
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:1800 config/avr/avr.c:1883 config/avr/avr.c:1932
-#: config/avr/avr.c:1941 config/avr/avr.c:2036 config/avr/avr.c:2205
-#: config/avr/avr.c:2461 config/avr/avr.c:2569
+#: config/avr/avr.c:1778 config/avr/avr.c:1861 config/avr/avr.c:1910
+#: config/avr/avr.c:1919 config/avr/avr.c:2014 config/avr/avr.c:2183
+#: config/avr/avr.c:2439 config/avr/avr.c:2547
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:1960 config/avr/avr.c:2121 config/avr/avr.c:2276
-#: config/avr/avr.c:2613
+#: config/avr/avr.c:1938 config/avr/avr.c:2099 config/avr/avr.c:2254
+#: config/avr/avr.c:2591
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:2836
+#: config/avr/avr.c:2814
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:2949 config/avr/avr.c:3370 config/avr/avr.c:3741
+#: config/avr/avr.c:2927 config/avr/avr.c:3348 config/avr/avr.c:3719
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/avr/avr.c:4554 config/ip2k/ip2k.c:3207
+#: config/avr/avr.c:4532 config/ip2k/ip2k.c:3144
msgid "only initialized variables can be placed into program memory area"
msgstr ""
-#: config/avr/avr.c:4648
+#: config/avr/avr.c:4626
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:4662
+#: config/avr/avr.c:4640
#, c-format
msgid "MCU `%s' supported for assembler only"
msgstr ""
-#: config/avr/avr.h:72
+#: config/avr/avr.h:73
msgid "Assume int to be 8 bit integer"
msgstr ""
-#: config/avr/avr.h:74
+#: config/avr/avr.h:75
msgid "Change the stack pointer without disabling interrupts"
msgstr ""
-#: config/avr/avr.h:76
+#: config/avr/avr.h:77
msgid "Use subroutines for function prologue/epilogue"
msgstr ""
-#: config/avr/avr.h:78
+#: config/avr/avr.h:79
msgid "Change only the low 8 bits of the stack pointer"
msgstr ""
-#: config/avr/avr.h:80
+#: config/avr/avr.h:81
msgid "Do not generate tablejump insns"
msgstr ""
-#: config/avr/avr.h:82
+#: config/avr/avr.h:83
msgid "Use rjmp/rcall (limited range) on >8K devices"
msgstr ""
-#: config/avr/avr.h:84
+#: config/avr/avr.h:85
msgid "Output instruction sizes to the asm file"
msgstr ""
-#: config/avr/avr.h:101
+#: config/avr/avr.h:102
msgid "Specify the initial stack address"
msgstr ""
-#: config/avr/avr.h:102
+#: config/avr/avr.h:103
msgid "Specify the MCU name"
msgstr ""
@@ -8062,7 +8153,7 @@ msgstr ""
#. For instance, the SH target has only positive offsets in
#. addresses. Thus sorting to put the smallest address first allows
#. the most combinations to be found.
-#: config/avr/avr.h:2266
+#: config/avr/avr.h:2267
msgid "trampolines not supported"
msgstr ""
@@ -8101,102 +8192,96 @@ msgstr ""
msgid "unknown CPU version %d, using 40.\n"
msgstr ""
-#: config/c4x/c4x.c:848
+#: config/c4x/c4x.c:850
#, c-format
msgid "ISR %s requires %d words of local vars, max is 32767"
msgstr ""
-#: config/c4x/c4x.c:1569
+#: config/c4x/c4x.c:1571
msgid "using CONST_DOUBLE for address"
msgstr ""
-#: config/c4x/c4x.c:1707
+#: config/c4x/c4x.c:1709
msgid "c4x_address_cost: Invalid addressing mode"
msgstr ""
-#: config/c4x/c4x.c:1842
+#: config/c4x/c4x.c:1844
#, c-format
msgid "c4x_print_operand: %%L inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1848
+#: config/c4x/c4x.c:1850
#, c-format
msgid "c4x_print_operand: %%N inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1889
+#: config/c4x/c4x.c:1891
#, c-format
msgid "c4x_print_operand: %%O inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1984
+#: config/c4x/c4x.c:1986
msgid "c4x_print_operand: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2025
+#: config/c4x/c4x.c:2027
msgid "c4x_print_operand_address: Bad post_modify"
msgstr ""
-#: config/c4x/c4x.c:2047
+#: config/c4x/c4x.c:2049
msgid "c4x_print_operand_address: Bad pre_modify"
msgstr ""
-#: config/c4x/c4x.c:2095 config/c4x/c4x.c:2107 config/c4x/c4x.c:2122
+#: config/c4x/c4x.c:2097 config/c4x/c4x.c:2109 config/c4x/c4x.c:2124
msgid "c4x_print_operand_address: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2373
+#: config/c4x/c4x.c:2375
msgid "c4x_rptb_insert: Cannot find start label"
msgstr ""
-#: config/c4x/c4x.c:3290 config/c4x/c4x.c:3308
+#: config/c4x/c4x.c:3292 config/c4x/c4x.c:3310
msgid "mode not QImode"
msgstr ""
-#: config/c4x/c4x.c:3378
+#: config/c4x/c4x.c:3380
msgid "invalid indirect memory address"
msgstr ""
-#: config/c4x/c4x.c:3467
+#: config/c4x/c4x.c:3469
msgid "invalid indirect (S) memory address"
msgstr ""
-#: config/c4x/c4x.c:3795
+#: config/c4x/c4x.c:3797
msgid "c4x_valid_operands: Internal error"
msgstr ""
-#: config/c4x/c4x.c:4214
+#: config/c4x/c4x.c:4216
msgid "c4x_operand_subword: invalid mode"
msgstr ""
-#: config/c4x/c4x.c:4217
+#: config/c4x/c4x.c:4219
msgid "c4x_operand_subword: invalid operand"
msgstr ""
#. We could handle these with some difficulty.
#. e.g., *p-- => *(p-=2); *(p+1).
-#: config/c4x/c4x.c:4243
+#: config/c4x/c4x.c:4245
msgid "c4x_operand_subword: invalid autoincrement"
msgstr ""
-#: config/c4x/c4x.c:4249
+#: config/c4x/c4x.c:4251
msgid "c4x_operand_subword: invalid address"
msgstr ""
-#: config/c4x/c4x.c:4260
+#: config/c4x/c4x.c:4262
msgid "c4x_operand_subword: address not offsettable"
msgstr ""
-#: config/c4x/c4x.c:4470
+#: config/c4x/c4x.c:4472
msgid "c4x_rptb_rpts_p: Repeat block top label moved\n"
msgstr ""
-#. ??? HACK. We shouldn't have flag_inline_trees at all.
-#. Name of the c4x assembler.
-#. Name of the c4x linker.
-#. Define assembler options.
-#. Define linker options.
-#. Specify the end file to link with.
#. Target compilation option flags.
#. Small memory model.
#. Use 24-bit MPYI for C3x.
@@ -8415,159 +8500,159 @@ msgstr ""
msgid "Select CPU to generate code for"
msgstr ""
-#: config/cris/cris.c:596
+#: config/cris/cris.c:597
msgid "unexpected index-type in cris_print_index"
msgstr ""
-#: config/cris/cris.c:610
+#: config/cris/cris.c:611
msgid "unexpected base-type in cris_print_base"
msgstr ""
-#: config/cris/cris.c:903
+#: config/cris/cris.c:904
#, c-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:1214
+#: config/cris/cris.c:1215
msgid "allocated but unused delay list in epilogue"
msgstr ""
-#: config/cris/cris.c:1224
+#: config/cris/cris.c:1225
msgid ""
"unexpected function type needing stack adjustment for __builtin_eh_return"
msgstr ""
-#: config/cris/cris.c:1300
+#: config/cris/cris.c:1301
msgid "invalid operand for 'b' modifier"
msgstr ""
-#: config/cris/cris.c:1313
+#: config/cris/cris.c:1314
msgid "invalid operand for 'v' modifier"
msgstr ""
-#: config/cris/cris.c:1323
+#: config/cris/cris.c:1324
msgid "invalid operand for 'P' modifier"
msgstr ""
-#: config/cris/cris.c:1330
+#: config/cris/cris.c:1331
msgid "invalid operand for 'p' modifier"
msgstr ""
-#: config/cris/cris.c:1369
+#: config/cris/cris.c:1370
msgid "invalid operand for 'z' modifier"
msgstr ""
-#: config/cris/cris.c:1400 config/cris/cris.c:1430
+#: config/cris/cris.c:1401 config/cris/cris.c:1431
msgid "invalid operand for 'H' modifier"
msgstr ""
-#: config/cris/cris.c:1406
+#: config/cris/cris.c:1407
msgid "bad register"
msgstr ""
-#: config/cris/cris.c:1444
+#: config/cris/cris.c:1445
msgid "invalid operand for 'e' modifier"
msgstr ""
-#: config/cris/cris.c:1461
+#: config/cris/cris.c:1462
msgid "invalid operand for 'm' modifier"
msgstr ""
-#: config/cris/cris.c:1486
+#: config/cris/cris.c:1487
msgid "invalid operand for 'A' modifier"
msgstr ""
-#: config/cris/cris.c:1494
+#: config/cris/cris.c:1495
msgid "invalid operand for 'D' modifier"
msgstr ""
-#: config/cris/cris.c:1508
+#: config/cris/cris.c:1509
msgid "invalid operand for 'T' modifier"
msgstr ""
-#: config/cris/cris.c:1517
+#: config/cris/cris.c:1518
msgid "invalid operand modifier letter"
msgstr ""
-#: config/cris/cris.c:1525
+#: config/cris/cris.c:1526
#, c-format
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1573
+#: config/cris/cris.c:1574
msgid "unexpected multiplicative operand"
msgstr ""
-#: config/cris/cris.c:1593
+#: config/cris/cris.c:1594
msgid "unexpected operand"
msgstr ""
-#: config/cris/cris.c:1626 config/cris/cris.c:1636
+#: config/cris/cris.c:1627 config/cris/cris.c:1637
msgid "unrecognized address"
msgstr ""
-#: config/cris/cris.c:1986
+#: config/cris/cris.c:1987
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2379
+#: config/cris/cris.c:2380
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2456 config/cris/cris.c:2518
+#: config/cris/cris.c:2457 config/cris/cris.c:2519
msgid "unrecognized supposed constant"
msgstr ""
-#: config/cris/cris.c:2563
+#: config/cris/cris.c:2564
msgid "unrecognized supposed constant in cris_global_pic_symbol"
msgstr ""
-#: config/cris/cris.c:2582
+#: config/cris/cris.c:2583
#, c-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2610
+#: config/cris/cris.c:2611
#, c-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2646
+#: config/cris/cris.c:2647
#, c-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2664
+#: config/cris/cris.c:2665
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2680
+#: config/cris/cris.c:2681
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2935 config/cris/cris.c:2980
+#: config/cris/cris.c:2936 config/cris/cris.c:2981
msgid "unexpected side-effects in address"
msgstr ""
#. Labels are never marked as global symbols.
-#: config/cris/cris.c:3075 config/cris/cris.c:3106
+#: config/cris/cris.c:3076 config/cris/cris.c:3107
msgid "unexpected PIC symbol"
msgstr ""
-#: config/cris/cris.c:3079
+#: config/cris/cris.c:3080
msgid "PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:3092 config/cris/cris.c:3175
+#: config/cris/cris.c:3093 config/cris/cris.c:3176
msgid "unexpected address expression"
msgstr ""
-#: config/cris/cris.c:3110
+#: config/cris/cris.c:3111
msgid "emitting PIC operand, but PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:3119
+#: config/cris/cris.c:3120
msgid "unexpected NOTE as addr_const:"
msgstr ""
@@ -8580,136 +8665,136 @@ msgid "For elinux, request a specified stack-size for this program"
msgstr ""
#. No "no-etrax" as it does not really imply any model. On the other hand, "etrax" implies the common (and large) subset matching all models.
-#: config/cris/cris.h:332
+#: config/cris/cris.h:334
msgid "Compile for ETRAX 4 (CRIS v3)"
msgstr ""
-#: config/cris/cris.h:337
+#: config/cris/cris.h:339
msgid "Compile for ETRAX 100 (CRIS v8)"
msgstr ""
-#: config/cris/cris.h:341
+#: config/cris/cris.h:343
msgid "Emit verbose debug information in assembly code"
msgstr ""
-#: config/cris/cris.h:344
+#: config/cris/cris.h:346
msgid "Do not use condition codes from normal instructions"
msgstr ""
-#: config/cris/cris.h:348
+#: config/cris/cris.h:350
msgid "Do not emit addressing modes with side-effect assignment"
msgstr ""
-#: config/cris/cris.h:351
+#: config/cris/cris.h:353
msgid "Do not tune stack alignment"
msgstr ""
-#: config/cris/cris.h:354
+#: config/cris/cris.h:356
msgid "Do not tune writable data alignment"
msgstr ""
-#: config/cris/cris.h:357
+#: config/cris/cris.h:359
msgid "Do not tune code and read-only data alignment"
msgstr ""
-#: config/cris/cris.h:366
+#: config/cris/cris.h:368
msgid "Align code and data to 32 bits"
msgstr ""
-#: config/cris/cris.h:379
+#: config/cris/cris.h:381
msgid "Don't align items in code or data"
msgstr ""
-#: config/cris/cris.h:382
+#: config/cris/cris.h:384
msgid "Do not emit function prologue or epilogue"
msgstr ""
#. We have to handle this m-option here since we can't wash it off in both CC1_SPEC and CC1PLUS_SPEC.
-#: config/cris/cris.h:386
+#: config/cris/cris.h:388
msgid "Use the most feature-enabling options allowed by other options"
msgstr ""
#. We must call it "override-" since calling it "no-" will cause gcc.c to forget it, if there's a "later" -mbest-lib-options. Kludgy, but needed for some multilibbed files.
-#: config/cris/cris.h:392
+#: config/cris/cris.h:394
msgid "Override -mbest-lib-options"
msgstr ""
-#: config/cris/cris.h:424
+#: config/cris/cris.h:426
msgid "Generate code for the specified chip or CPU version"
msgstr ""
-#: config/cris/cris.h:426
+#: config/cris/cris.h:428
msgid "Tune alignment for the specified chip or CPU version"
msgstr ""
-#: config/cris/cris.h:428
+#: config/cris/cris.h:430
msgid "Warn when a stackframe is larger than the specified size"
msgstr ""
#. Node: Profiling
-#: config/cris/cris.h:1014
+#: config/cris/cris.h:1016
msgid "no FUNCTION_PROFILER for CRIS"
msgstr ""
-#: config/cris/linux.h:71
+#: config/cris/linux.h:69
msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
msgstr ""
-#: config/d30v/d30v.c:219
+#: config/d30v/d30v.c:218
#, c-format
msgid "bad modes_tieable_p for register %s, mode1 %s, mode2 %s"
msgstr ""
-#: config/d30v/d30v.c:2679
+#: config/d30v/d30v.c:2678
msgid "bad insn to d30v_print_operand_address:"
msgstr ""
-#: config/d30v/d30v.c:2696 config/d30v/d30v.c:2757 config/d30v/d30v.c:2778
-#: config/d30v/d30v.c:2796
+#: config/d30v/d30v.c:2695 config/d30v/d30v.c:2756 config/d30v/d30v.c:2777
+#: config/d30v/d30v.c:2795
msgid "bad insn to d30v_print_operand_memory_reference:"
msgstr ""
-#: config/d30v/d30v.c:2864
+#: config/d30v/d30v.c:2863
msgid "bad insn to d30v_print_operand, 'f' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2873
+#: config/d30v/d30v.c:2872
msgid "bad insn to d30v_print_operand, 'A' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2880
+#: config/d30v/d30v.c:2879
msgid "bad insn to d30v_print_operand, 'M' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2934
+#: config/d30v/d30v.c:2933
msgid "bad insn to print_operand, 'F' or 'T' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2945
+#: config/d30v/d30v.c:2944
msgid "bad insn to print_operand, 'B' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2952
+#: config/d30v/d30v.c:2951
msgid "bad insn to print_operand, 'E' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2970
+#: config/d30v/d30v.c:2969
msgid "bad insn to print_operand, 'R' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2979 config/d30v/d30v.c:2987
+#: config/d30v/d30v.c:2978 config/d30v/d30v.c:2986
msgid "bad insn to print_operand, 's' modifier:"
msgstr ""
-#: config/d30v/d30v.c:3016
+#: config/d30v/d30v.c:3015
msgid "bad insn in d30v_print_operand, 0 case"
msgstr ""
-#: config/d30v/d30v.c:3314
+#: config/d30v/d30v.c:3313
msgid "d30v_emit_comparison"
msgstr ""
-#: config/d30v/d30v.c:3358
+#: config/d30v/d30v.c:3357
msgid "bad call to d30v_move_2words"
msgstr ""
@@ -8880,58 +8965,62 @@ msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/dsp16xx/dsp16xx.h:1218 config/dsp16xx/dsp16xx.h:1669
-#: config/dsp16xx/dsp16xx.h:1674
+#. This is how to output an insn to push a register on the stack.
+#. It need not be very fast code since it is used only for profiling
+#. This is how to output an insn to pop a register from the stack.
+#. It need not be very fast code since it is used only for profiling
+#: config/dsp16xx/dsp16xx.h:1216 config/dsp16xx/dsp16xx.h:1667
+#: config/dsp16xx/dsp16xx.h:1672
msgid "profiling not implemented yet"
msgstr ""
#. Emit RTL insns to initialize the variable parts of a trampoline.
#. FNADDR is an RTX for the address of the function's pure code.
#. CXT is an RTX for the static chain value for the function.
-#: config/dsp16xx/dsp16xx.h:1228 config/dsp16xx/dsp16xx.h:1240
+#: config/dsp16xx/dsp16xx.h:1226 config/dsp16xx/dsp16xx.h:1238
msgid "trampolines not yet implemented"
msgstr ""
-#: config/fr30/fr30.c:456
+#: config/fr30/fr30.c:451
msgid "fr30_print_operand_address: unhandled address"
msgstr ""
-#: config/fr30/fr30.c:483
+#: config/fr30/fr30.c:475
#, c-format
msgid "fr30_print_operand: unrecognized %%p code"
msgstr ""
-#: config/fr30/fr30.c:503
+#: config/fr30/fr30.c:495
#, c-format
msgid "fr30_print_operand: unrecognized %%b code"
msgstr ""
-#: config/fr30/fr30.c:524
+#: config/fr30/fr30.c:516
#, c-format
msgid "fr30_print_operand: unrecognized %%B code"
msgstr ""
-#: config/fr30/fr30.c:532
+#: config/fr30/fr30.c:524
#, c-format
msgid "fr30_print_operand: invalid operand to %%A code"
msgstr ""
-#: config/fr30/fr30.c:549
+#: config/fr30/fr30.c:541
#, c-format
msgid "fr30_print_operand: invalid %%x code"
msgstr ""
-#: config/fr30/fr30.c:556
+#: config/fr30/fr30.c:548
#, c-format
msgid "fr30_print_operand: invalid %%F code"
msgstr ""
-#: config/fr30/fr30.c:573
+#: config/fr30/fr30.c:565
msgid "fr30_print_operand: unknown code"
msgstr ""
-#: config/fr30/fr30.c:602 config/fr30/fr30.c:611 config/fr30/fr30.c:622
-#: config/fr30/fr30.c:635
+#: config/fr30/fr30.c:594 config/fr30/fr30.c:603 config/fr30/fr30.c:614
+#: config/fr30/fr30.c:627
msgid "fr30_print_operand: unhandled MEM"
msgstr ""
@@ -8939,136 +9028,136 @@ msgstr ""
msgid "Assume small address space"
msgstr ""
-#: config/frv/frv.c:391 config/frv/frv.c:409
+#: config/frv/frv.c:392 config/frv/frv.c:410
#, c-format
msgid "Unknown cpu: -mcpu=%s"
msgstr ""
-#: config/frv/frv.c:432
+#: config/frv/frv.c:433
msgid "-fpic and -gdwarf are incompatible (-fpic and -g/-gdwarf-2 are fine)"
msgstr ""
-#: config/frv/frv.c:2395
+#: config/frv/frv.c:2397
msgid "Bad insn to frv_print_operand_address:"
msgstr ""
-#: config/frv/frv.c:2406
+#: config/frv/frv.c:2408
msgid "Bad register to frv_print_operand_memory_reference_reg:"
msgstr ""
-#: config/frv/frv.c:2444 config/frv/frv.c:2454 config/frv/frv.c:2463
-#: config/frv/frv.c:2491 config/frv/frv.c:2504 config/frv/frv.c:2508
+#: config/frv/frv.c:2446 config/frv/frv.c:2456 config/frv/frv.c:2465
+#: config/frv/frv.c:2493 config/frv/frv.c:2506 config/frv/frv.c:2510
msgid "Bad insn to frv_print_operand_memory_reference:"
msgstr ""
-#: config/frv/frv.c:2646
+#: config/frv/frv.c:2648
msgid "Bad insn in frv_print_operand, bad const_double"
msgstr ""
-#: config/frv/frv.c:2691
+#: config/frv/frv.c:2693
msgid "Bad insn to frv_print_operand, 'C' modifier:"
msgstr ""
-#: config/frv/frv.c:2714
+#: config/frv/frv.c:2716
msgid "Bad insn to frv_print_operand, 'c' modifier:"
msgstr ""
-#: config/frv/frv.c:2739
+#: config/frv/frv.c:2741
msgid "Bad insn to frv_print_operand, 'e' modifier:"
msgstr ""
-#: config/frv/frv.c:2747
+#: config/frv/frv.c:2749
msgid "Bad insn to frv_print_operand, 'F' modifier:"
msgstr ""
-#: config/frv/frv.c:2763
+#: config/frv/frv.c:2765
msgid "Bad insn to frv_print_operand, 'f' modifier:"
msgstr ""
-#: config/frv/frv.c:2816
+#: config/frv/frv.c:2818
msgid "Bad insn to frv_print_operand, 'L' modifier:"
msgstr ""
-#: config/frv/frv.c:2829
+#: config/frv/frv.c:2831
msgid "Bad insn to frv_print_operand, 'M/N' modifier:"
msgstr ""
-#: config/frv/frv.c:2850
+#: config/frv/frv.c:2852
msgid "Bad insn to frv_print_operand, 'O' modifier:"
msgstr ""
-#: config/frv/frv.c:2868
+#: config/frv/frv.c:2870
msgid "Bad insn to frv_print_operand, P modifier:"
msgstr ""
-#: config/frv/frv.c:2888
+#: config/frv/frv.c:2890
msgid "Bad insn in frv_print_operand, z case"
msgstr ""
-#: config/frv/frv.c:2916
+#: config/frv/frv.c:2918
msgid "Bad insn in frv_print_operand, 0 case"
msgstr ""
-#: config/frv/frv.c:2921
+#: config/frv/frv.c:2923
msgid "frv_print_operand: unknown code"
msgstr ""
-#: config/frv/frv.c:5471
+#: config/frv/frv.c:5474
msgid "Bad output_move_single operand"
msgstr ""
-#: config/frv/frv.c:5598
+#: config/frv/frv.c:5601
msgid "Bad output_move_double operand"
msgstr ""
-#: config/frv/frv.c:5740
+#: config/frv/frv.c:5743
msgid "Bad output_condmove_single operand"
msgstr ""
-#: config/frv/frv.c:8019
+#: config/frv/frv.c:8031
msgid "frv_registers_update"
msgstr ""
-#: config/frv/frv.c:8176
+#: config/frv/frv.c:8188
msgid "frv_registers_used_p"
msgstr ""
-#: config/frv/frv.c:8302
+#: config/frv/frv.c:8314
msgid "frv_registers_set_p"
msgstr ""
-#: config/frv/frv.c:8898
+#: config/frv/frv.c:8910
msgid "accumulator is not a constant integer"
msgstr ""
-#: config/frv/frv.c:8903
+#: config/frv/frv.c:8915
msgid "accumulator number is out of bounds"
msgstr ""
-#: config/frv/frv.c:8914
+#: config/frv/frv.c:8926
#, c-format
msgid "inappropriate accumulator for `%s'"
msgstr ""
-#: config/frv/frv.c:8974
+#: config/frv/frv.c:8986
#, c-format
msgid "`%s' expects a constant argument"
msgstr ""
-#: config/frv/frv.c:8979
+#: config/frv/frv.c:8991
#, c-format
msgid "constant argument out of range for `%s'"
msgstr ""
-#: config/frv/frv.c:9326
+#: config/frv/frv.c:9338
msgid "media functions are not available unless -mmedia is used"
msgstr ""
-#: config/frv/frv.c:9338
+#: config/frv/frv.c:9350
msgid "this media function is only available on the fr500"
msgstr ""
-#: config/frv/frv.c:9366
+#: config/frv/frv.c:9378
msgid "this media function is only available on the fr400"
msgstr ""
@@ -9081,7 +9170,8 @@ msgstr ""
#. #else
#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
#. #endif
-#: config/frv/frv.h:505
+#: config/frv/frv.h:506
+#, c-format
msgid " (frv)"
msgstr ""
@@ -9182,169 +9272,177 @@ msgstr ""
msgid "Do not generate char instructions"
msgstr ""
-#: config/i386/i386.c:1155
+#: config/i386/i386.c:1161
#, c-format
msgid "code model %s not supported in PIC mode"
msgstr ""
-#: config/i386/i386.c:1165 config/sparc/sparc.c:382
+#: config/i386/i386.c:1171 config/sparc/sparc.c:387
#, c-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/i386/i386.c:1180
+#: config/i386/i386.c:1186
#, c-format
msgid "bad value (%s) for -masm= switch"
msgstr ""
-#: config/i386/i386.c:1183
+#: config/i386/i386.c:1189
#, c-format
msgid "code model `%s' not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:1186
+#: config/i386/i386.c:1192
msgid "code model `large' not supported yet"
msgstr ""
-#: config/i386/i386.c:1188
+#: config/i386/i386.c:1194
#, c-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:1215 config/i386/i386.c:1227
+#: config/i386/i386.c:1221 config/i386/i386.c:1233
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:1220 config/iq2000/iq2000.c:1806
+#: config/i386/i386.c:1226 config/iq2000/iq2000.c:1840
#, c-format
msgid "bad value (%s) for -march= switch"
msgstr ""
-#: config/i386/i386.c:1233
+#: config/i386/i386.c:1239
#, c-format
msgid "bad value (%s) for -mtune= switch"
msgstr ""
-#: config/i386/i386.c:1250
+#: config/i386/i386.c:1256
#, c-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1263
+#: config/i386/i386.c:1269
msgid "-malign-loops is obsolete, use -falign-loops"
msgstr ""
-#: config/i386/i386.c:1268 config/i386/i386.c:1281 config/i386/i386.c:1294
+#: config/i386/i386.c:1274 config/i386/i386.c:1287 config/i386/i386.c:1300
#, c-format
msgid "-malign-loops=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1276
+#: config/i386/i386.c:1282
msgid "-malign-jumps is obsolete, use -falign-jumps"
msgstr ""
-#: config/i386/i386.c:1289
+#: config/i386/i386.c:1295
msgid "-malign-functions is obsolete, use -falign-functions"
msgstr ""
-#: config/i386/i386.c:1327
+#: config/i386/i386.c:1333
#, c-format
msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:1339
+#: config/i386/i386.c:1345
#, c-format
msgid "-mbranch-cost=%d is not between 0 and 5"
msgstr ""
-#: config/i386/i386.c:1351
+#: config/i386/i386.c:1357
#, c-format
msgid "bad value (%s) for -mtls-dialect= switch"
msgstr ""
-#: config/i386/i386.c:1380
+#: config/i386/i386.c:1386
msgid "-malign-double makes no sense in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1382
+#: config/i386/i386.c:1388
msgid "-mrtd calling convention not supported in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1404 config/i386/i386.c:1415
+#: config/i386/i386.c:1410 config/i386/i386.c:1421
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:1420
+#: config/i386/i386.c:1426
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:1427
+#: config/i386/i386.c:1433
#, c-format
msgid "bad value (%s) for -mfpmath= switch"
msgstr ""
-#: config/i386/i386.c:1575 config/i386/i386.c:1586
+#: config/i386/i386.c:1581 config/i386/i386.c:1592
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:1579 config/i386/i386.c:1635
+#: config/i386/i386.c:1585 config/i386/i386.c:1641
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:1622
+#: config/i386/i386.c:1628
#, c-format
msgid "`%s' attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:1628
+#: config/i386/i386.c:1634
#, c-format
msgid "argument to `%s' attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:2780
+#: config/i386/i386.c:2593
+msgid "SSE vector argument without SSE enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:2609
+msgid "MMX vector argument without MMX enabled changes the ABI"
+msgstr ""
+
+#: config/i386/i386.c:2837
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6784
+#: config/i386/i386.c:6811
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:7038
+#: config/i386/i386.c:7069
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:7053
+#: config/i386/i386.c:7084
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:7368
+#: config/i386/i386.c:7399
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:7414
+#: config/i386/i386.c:7445
#, c-format
msgid "invalid operand code `%c'"
msgstr ""
-#: config/i386/i386.c:7459
+#: config/i386/i386.c:7488
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:11859
+#: config/i386/i386.c:11889
msgid "unknown insn mode"
msgstr ""
-#: config/i386/i386.c:13991 config/i386/i386.c:14027
+#: config/i386/i386.c:14021 config/i386/i386.c:14057
#, c-format
msgid "selector must be an integer constant in the range 0..%i"
msgstr ""
-#: config/i386/i386.c:14255
+#: config/i386/i386.c:14285
msgid "shift must be an immediate"
msgstr ""
-#: config/i386/i386.c:15278
+#: config/i386/i386.c:15308
#, c-format
msgid "`%s' incompatible attribute ignored"
msgstr ""
@@ -9454,7 +9552,7 @@ msgstr ""
msgid "-mbnu210 is ignored (option is obsolete)"
msgstr ""
-#: config/i386/i386-interix.h:255
+#: config/i386/i386-interix.h:256
msgid "ms-bitfields not supported for objc"
msgstr ""
@@ -9468,7 +9566,7 @@ msgstr ""
msgid "Alternate calling convention"
msgstr ""
-#: config/i386/i386.h:341 config/m68k/m68k.h:339 config/ns32k/ns32k.h:144
+#: config/i386/i386.h:341 config/m68k/m68k.h:344 config/ns32k/ns32k.h:144
msgid "Use normal calling convention"
msgstr ""
@@ -9638,8 +9736,8 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:459 config/ia64/ia64.h:260 config/rs6000/rs6000.h:416
-#: config/s390/s390.h:145 config/sparc/sparc.h:650
+#: config/i386/i386.h:459 config/ia64/ia64.h:269 config/rs6000/rs6000.h:437
+#: config/s390/s390.h:146 config/sparc/sparc.h:650
msgid "Schedule code for given CPU"
msgstr ""
@@ -9647,7 +9745,7 @@ msgstr ""
msgid "Generate floating point mathematics using given instruction set"
msgstr ""
-#: config/i386/i386.h:463 config/s390/s390.h:147
+#: config/i386/i386.h:463 config/s390/s390.h:148
msgid "Generate code for given CPU"
msgstr ""
@@ -9665,15 +9763,15 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:467 config/m68k/m68k.h:355
+#: config/i386/i386.h:467 config/m68k/m68k.h:360
msgid "Loop code aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:469 config/m68k/m68k.h:357
+#: config/i386/i386.h:469 config/m68k/m68k.h:362
msgid "Jump targets are aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:471 config/m68k/m68k.h:359
+#: config/i386/i386.h:471 config/m68k/m68k.h:364
msgid "Function starts are aligned to this power of 2"
msgstr ""
@@ -9699,7 +9797,7 @@ msgstr ""
msgid "Use given thread-local storage dialect"
msgstr ""
-#: config/i386/sco5.h:293
+#: config/i386/sco5.h:292
msgid "Generate ELF output"
msgstr ""
@@ -9756,7 +9854,7 @@ msgstr ""
msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
msgstr ""
-#: config/i960/i960.c:1456 config/m68k/m68k.c:599 config/rs6000/rs6000.c:11237
+#: config/i960/i960.c:1456 config/m68k/m68k.c:588 config/rs6000/rs6000.c:11296
msgid "stack limit expression is not supported"
msgstr ""
@@ -9879,8 +9977,8 @@ msgstr ""
msgid "Do not layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:333 config/sparc/freebsd.h:76 config/sparc/linux.h:90
-#: config/sparc/linux64.h:102 config/sparc/netbsd-elf.h:215
+#: config/i960/i960.h:333 config/sparc/freebsd.h:76 config/sparc/linux.h:91
+#: config/sparc/linux64.h:103 config/sparc/netbsd-elf.h:215
msgid "Use 64 bit long doubles"
msgstr ""
@@ -9896,58 +9994,58 @@ msgstr ""
msgid "malformed #pragma builtin"
msgstr ""
-#: config/ia64/ia64.c:1025 config/m32r/m32r.c:336
+#: config/ia64/ia64.c:1021 config/m32r/m32r.c:354
#, c-format
msgid "invalid argument of `%s' attribute"
msgstr ""
-#: config/ia64/ia64.c:1037
+#: config/ia64/ia64.c:1033
msgid "%Jan address area attribute cannot be specified for local variables"
msgstr ""
-#: config/ia64/ia64.c:1044
+#: config/ia64/ia64.c:1040
msgid "%Jaddress area of '%s' conflicts with previous declaration"
msgstr ""
-#: config/ia64/ia64.c:1051
+#: config/ia64/ia64.c:1047
msgid "%Jaddress area attribute cannot be specified for functions"
msgstr ""
-#: config/ia64/ia64.c:4114
+#: config/ia64/ia64.c:4288
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:4461
+#: config/ia64/ia64.c:4628
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:4488
+#: config/ia64/ia64.c:4655
#, c-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:4536
+#: config/ia64/ia64.c:4703
msgid "cannot optimize floating point division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:4542
+#: config/ia64/ia64.c:4709
msgid "cannot optimize integer division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:4548
+#: config/ia64/ia64.c:4715
msgid "cannot optimize square root for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:4554
+#: config/ia64/ia64.c:4721
msgid "not yet implemented: latency-optimized inline square root"
msgstr ""
-#: config/ia64/ia64.c:4566
+#: config/ia64/ia64.c:4733
#, c-format
msgid "bad value (%s) for -mtls-size= switch"
msgstr ""
-#: config/ia64/ia64.c:4582
+#: config/ia64/ia64.c:4749
#, c-format
msgid "bad value (%s) for -tune= switch"
msgstr ""
@@ -9955,135 +10053,135 @@ msgstr ""
#. This macro defines names of command options to set and clear bits in
#. `target_flags'. Its definition is an initializer with a subgrouping for
#. each command option.
-#: config/ia64/ia64.h:163
+#: config/ia64/ia64.h:172
msgid "Generate big endian code"
msgstr ""
-#: config/ia64/ia64.h:165 config/mcore/mcore.h:154
+#: config/ia64/ia64.h:174 config/mcore/mcore.h:154
msgid "Generate little endian code"
msgstr ""
-#: config/ia64/ia64.h:167
+#: config/ia64/ia64.h:176
msgid "Generate code for GNU as"
msgstr ""
-#: config/ia64/ia64.h:169
+#: config/ia64/ia64.h:178
msgid "Generate code for Intel as"
msgstr ""
-#: config/ia64/ia64.h:171
+#: config/ia64/ia64.h:180
msgid "Generate code for GNU ld"
msgstr ""
-#: config/ia64/ia64.h:173
+#: config/ia64/ia64.h:182
msgid "Generate code for Intel ld"
msgstr ""
-#: config/ia64/ia64.h:175
+#: config/ia64/ia64.h:184
msgid "Generate code without GP reg"
msgstr ""
-#: config/ia64/ia64.h:177
+#: config/ia64/ia64.h:186
msgid "Emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:179
+#: config/ia64/ia64.h:188
msgid "Don't emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:181
+#: config/ia64/ia64.h:190
msgid "Emit code for Itanium (TM) processor B step"
msgstr ""
-#: config/ia64/ia64.h:183
+#: config/ia64/ia64.h:192
msgid "Use in/loc/out register names"
msgstr ""
-#: config/ia64/ia64.h:185
+#: config/ia64/ia64.h:194
msgid "Disable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:187
+#: config/ia64/ia64.h:196
msgid "Enable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:189
+#: config/ia64/ia64.h:198
msgid "gp is constant (but save/restore gp on indirect calls)"
msgstr ""
-#: config/ia64/ia64.h:191
+#: config/ia64/ia64.h:200
msgid "Generate self-relocatable code"
msgstr ""
-#: config/ia64/ia64.h:193
+#: config/ia64/ia64.h:202
msgid "Generate inline floating point division, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:195
+#: config/ia64/ia64.h:204
msgid "Generate inline floating point division, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:197
+#: config/ia64/ia64.h:206
msgid "Generate inline integer division, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:199
+#: config/ia64/ia64.h:208
msgid "Generate inline integer division, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:201
+#: config/ia64/ia64.h:210
msgid "Generate inline square root, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:203
+#: config/ia64/ia64.h:212
msgid "Generate inline square root, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:205
+#: config/ia64/ia64.h:214
msgid "Enable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:207
+#: config/ia64/ia64.h:216
msgid "Disable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:209
+#: config/ia64/ia64.h:218
msgid "Enable earlier placing stop bits for better scheduling"
msgstr ""
-#: config/ia64/ia64.h:211
+#: config/ia64/ia64.h:220
msgid "Disable earlier placing stop bits"
msgstr ""
-#: config/ia64/ia64.h:256
+#: config/ia64/ia64.h:265
msgid "Specify range of registers to make fixed"
msgstr ""
-#: config/ip2k/ip2k.c:1100
+#: config/ip2k/ip2k.c:1074
msgid "bad operand"
msgstr ""
-#: config/iq2000/iq2000.c:1782
+#: config/iq2000/iq2000.c:1816
#, c-format
msgid "bad value (%s) for -mcpu= switch"
msgstr ""
-#: config/iq2000/iq2000.c:1811
+#: config/iq2000/iq2000.c:1845
#, c-format
msgid "The compiler does not support -march=%s."
msgstr ""
-#: config/iq2000/iq2000.c:2206
+#: config/iq2000/iq2000.c:2232
#, c-format
msgid "gp_offset (%ld) or end_offset (%ld) is less than zero."
msgstr ""
-#: config/iq2000/iq2000.c:3022
+#: config/iq2000/iq2000.c:3023
#, c-format
msgid "argument `%d' is not a constant"
msgstr ""
-#: config/iq2000/iq2000.c:3313 config/xtensa/xtensa.c:2057
+#: config/iq2000/iq2000.c:3314 config/xtensa/xtensa.c:2081
msgid "PRINT_OPERAND_ADDRESS, null pointer"
msgstr ""
@@ -10092,8 +10190,8 @@ msgstr ""
msgid "PRINT_OPERAND: Unknown punctuation '%c'"
msgstr ""
-#: config/iq2000/iq2000.c:3478 config/mips/mips.c:5324
-#: config/xtensa/xtensa.c:1911
+#: config/iq2000/iq2000.c:3478 config/mips/mips.c:5457
+#: config/xtensa/xtensa.c:1935
msgid "PRINT_OPERAND null pointer"
msgstr ""
@@ -10102,132 +10200,153 @@ msgstr ""
msgid "invalid %%P operand"
msgstr ""
-#: config/iq2000/iq2000.c:3555 config/rs6000/rs6000.c:8817
+#: config/iq2000/iq2000.c:3555 config/rs6000/rs6000.c:8881
#, c-format
msgid "invalid %%p value"
msgstr ""
-#: config/iq2000/iq2000.c:3619 config/mips/mips.c:5454
+#: config/iq2000/iq2000.c:3619 config/mips/mips.c:5587
#, c-format
msgid "invalid use of %%d, %%x, or %%X"
msgstr ""
-#: config/iq2000/iq2000.h:74 config/mn10300/mn10300.h:74
+#: config/iq2000/iq2000.h:72 config/mn10300/mn10300.h:74
msgid "No default crt0.o"
msgstr ""
-#: config/iq2000/iq2000.h:76
+#: config/iq2000/iq2000.h:74
msgid "Use GP relative sdata/sbss sections"
msgstr ""
-#: config/iq2000/iq2000.h:78
+#: config/iq2000/iq2000.h:76
msgid "Don't use GP relative sdata/sbss sections"
msgstr ""
-#: config/iq2000/iq2000.h:80 config/mips/mips.h:563
+#: config/iq2000/iq2000.h:78 config/mips/mips.h:563
msgid "Use ROM instead of RAM"
msgstr ""
-#: config/iq2000/iq2000.h:82 config/mips/mips.h:565
+#: config/iq2000/iq2000.h:80 config/mips/mips.h:565
msgid "Don't use ROM instead of RAM"
msgstr ""
-#: config/iq2000/iq2000.h:84 config/mips/mips.h:567
+#: config/iq2000/iq2000.h:82 config/mips/mips.h:567
msgid "Put uninitialized constants in ROM (needs -membedded-data)"
msgstr ""
-#: config/iq2000/iq2000.h:86 config/mips/mips.h:569
+#: config/iq2000/iq2000.h:84 config/mips/mips.h:569
msgid "Don't put uninitialized constants in ROM"
msgstr ""
-#: config/iq2000/iq2000.h:108 config/mips/mips.h:731 config/pa/pa.h:310
+#: config/iq2000/iq2000.h:106 config/mips/mips.h:731 config/pa/pa.h:310
msgid "Specify CPU for scheduling purposes"
msgstr ""
-#: config/iq2000/iq2000.h:110 config/mips/mips.h:733
+#: config/iq2000/iq2000.h:108 config/mips/mips.h:733
msgid "Specify CPU for code generation purposes"
msgstr ""
-#: config/m32r/m32r.c:159
+#: config/m32r/m32r.c:172
#, c-format
msgid "bad value (%s) for -mmodel switch"
msgstr ""
-#: config/m32r/m32r.c:168
+#: config/m32r/m32r.c:181
#, c-format
msgid "bad value (%s) for -msdata switch"
msgstr ""
-#: config/m32r/m32r.c:2251
+#: config/m32r/m32r.c:188
+#, c-format
+msgid "bad value (%s) for -flush-trap=n (0=<n<=15)"
+msgstr ""
+
+#: config/m32r/m32r.c:2295
#, c-format
msgid "invalid operand to %%s code"
msgstr ""
-#: config/m32r/m32r.c:2258
+#: config/m32r/m32r.c:2302
#, c-format
msgid "invalid operand to %%p code"
msgstr ""
-#: config/m32r/m32r.c:2313
+#: config/m32r/m32r.c:2357
msgid "bad insn for 'A'"
msgstr ""
-#: config/m32r/m32r.c:2360
+#: config/m32r/m32r.c:2404
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr ""
-#: config/m32r/m32r.c:2383
+#: config/m32r/m32r.c:2427
#, c-format
msgid "invalid operand to %%N code"
msgstr ""
-#: config/m32r/m32r.c:2422
+#: config/m32r/m32r.c:2460
msgid "pre-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2429
+#: config/m32r/m32r.c:2467
msgid "pre-decrement address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2436
+#: config/m32r/m32r.c:2474
msgid "post-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2514 config/m32r/m32r.c:2530
-#: config/rs6000/rs6000.c:14693
+#: config/m32r/m32r.c:2550 config/m32r/m32r.c:2566
+#: config/rs6000/rs6000.c:14753
msgid "bad address"
msgstr ""
-#: config/m32r/m32r.c:2535
+#: config/m32r/m32r.c:2571
msgid "lo_sum not of register"
msgstr ""
#. { "relax", TARGET_RELAX_MASK, "" }, { "no-relax", -TARGET_RELAX_MASK, "" },
-#: config/m32r/m32r.h:245
+#: config/m32r/m32r.h:277
msgid "Display compile time statistics"
msgstr ""
-#: config/m32r/m32r.h:247
+#: config/m32r/m32r.h:279
msgid "Align all loops to 32 byte boundary"
msgstr ""
-#: config/m32r/m32r.h:250
+#: config/m32r/m32r.h:282
msgid "Only issue one instruction per cycle"
msgstr ""
-#: config/m32r/m32r.h:253
+#: config/m32r/m32r.h:285
msgid "Prefer branches over conditional execution"
msgstr ""
-#: config/m32r/m32r.h:269
+#: config/m32r/m32r.h:306
msgid "Code size: small, medium or large"
msgstr ""
-#: config/m32r/m32r.h:271
+#: config/m32r/m32r.h:308
msgid "Small data area: none, sdata, use"
msgstr ""
+#: config/m32r/m32r.h:310 config/mips/mips.h:739
+msgid "Don't call any cache flush functions"
+msgstr ""
+
+#: config/m32r/m32r.h:312 config/mips/mips.h:741
+msgid "Specify cache flush function"
+msgstr ""
+
+#: config/m32r/m32r.h:314
+msgid "Don't call any cache flush trap"
+msgstr ""
+
+#: config/m32r/m32r.h:316
+msgid "Specify cache flush trap number"
+msgstr ""
+
#: config/m68hc11/m68hc11.c:269
#, c-format
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
@@ -10352,35 +10471,35 @@ msgstr ""
msgid "Indicate the number of soft registers available"
msgstr ""
-#: config/m68k/m68k.c:238
+#: config/m68k/m68k.c:227
#, c-format
msgid "-malign-loops=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:249
+#: config/m68k/m68k.c:238
msgid "-mshared-library-id= specified without -mid-shared-library"
msgstr ""
-#: config/m68k/m68k.c:252
+#: config/m68k/m68k.c:241
#, c-format
msgid "-mshared-library-id=%d is not between 0 and %d"
msgstr ""
-#: config/m68k/m68k.c:266
+#: config/m68k/m68k.c:255
msgid "cannot specify both -msep-data and -mid-shared-library"
msgstr ""
-#: config/m68k/m68k.c:281
+#: config/m68k/m68k.c:270
#, c-format
msgid "-malign-jumps=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:292
+#: config/m68k/m68k.c:281
#, c-format
msgid "-malign-functions=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:301
+#: config/m68k/m68k.c:290
msgid "-fPIC is not currently supported on the 68000 or 68010\n"
msgstr ""
@@ -10389,139 +10508,139 @@ 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/m68k/m68k.h:243 config/m68k/m68k.h:245
+#: config/m68k/m68k.h:248 config/m68k/m68k.h:250
msgid "Generate code for a 68020"
msgstr ""
-#: config/m68k/m68k.h:250 config/m68k/m68k.h:253
+#: config/m68k/m68k.h:255 config/m68k/m68k.h:258
msgid "Generate code for a 68000"
msgstr ""
-#: config/m68k/m68k.h:255
+#: config/m68k/m68k.h:260
msgid "Use the bit-field instructions"
msgstr ""
-#: config/m68k/m68k.h:257
+#: config/m68k/m68k.h:262
msgid "Do not use the bit-field instructions"
msgstr ""
-#: config/m68k/m68k.h:259
+#: config/m68k/m68k.h:264
msgid "Consider type `int' to be 16 bits wide"
msgstr ""
-#: config/m68k/m68k.h:261
+#: config/m68k/m68k.h:266
msgid "Consider type `int' to be 32 bits wide"
msgstr ""
-#: config/m68k/m68k.h:264
+#: config/m68k/m68k.h:269
msgid "Generate code with library calls for floating point"
msgstr ""
-#: config/m68k/m68k.h:266
+#: config/m68k/m68k.h:271
msgid "Generate code for a 68040, without any new instructions"
msgstr ""
-#: config/m68k/m68k.h:269
+#: config/m68k/m68k.h:274
msgid "Generate code for a 68060, without any new instructions"
msgstr ""
-#: config/m68k/m68k.h:273
+#: config/m68k/m68k.h:278
msgid "Generate code for a 68030"
msgstr ""
-#: config/m68k/m68k.h:276
+#: config/m68k/m68k.h:281
msgid "Generate code for a 68040"
msgstr ""
-#: config/m68k/m68k.h:280
+#: config/m68k/m68k.h:285
msgid "Generate code for a 68060"
msgstr ""
-#: config/m68k/m68k.h:285
+#: config/m68k/m68k.h:290
msgid "Generate code for a 520X"
msgstr ""
-#: config/m68k/m68k.h:289
+#: config/m68k/m68k.h:294
msgid "Generate code for a 5206e"
msgstr ""
-#: config/m68k/m68k.h:293
+#: config/m68k/m68k.h:298
msgid "Generate code for a 528x"
msgstr ""
-#: config/m68k/m68k.h:297
+#: config/m68k/m68k.h:302
msgid "Generate code for a 5307"
msgstr ""
-#: config/m68k/m68k.h:301
+#: config/m68k/m68k.h:306
msgid "Generate code for a 5407"
msgstr ""
-#: config/m68k/m68k.h:304
+#: config/m68k/m68k.h:309
msgid "Generate code for a 68851"
msgstr ""
-#: config/m68k/m68k.h:306
+#: config/m68k/m68k.h:311
msgid "Do no generate code for a 68851"
msgstr ""
-#: config/m68k/m68k.h:309
+#: config/m68k/m68k.h:314
msgid "Generate code for a 68302"
msgstr ""
-#: config/m68k/m68k.h:312
+#: config/m68k/m68k.h:317
msgid "Generate code for a 68332"
msgstr ""
-#: config/m68k/m68k.h:316
+#: config/m68k/m68k.h:321
msgid "Generate code for a cpu32"
msgstr ""
-#: config/m68k/m68k.h:319
+#: config/m68k/m68k.h:324
msgid "Align variables on a 32-bit boundary"
msgstr ""
-#: config/m68k/m68k.h:321
+#: config/m68k/m68k.h:326
msgid "Align variables on a 16-bit boundary"
msgstr ""
-#: config/m68k/m68k.h:323
+#: config/m68k/m68k.h:328
msgid "Enable separate data segment"
msgstr ""
-#: config/m68k/m68k.h:325
+#: config/m68k/m68k.h:330
msgid "Disable separate data segment"
msgstr ""
-#: config/m68k/m68k.h:327
+#: config/m68k/m68k.h:332
msgid "Enable ID based shared library"
msgstr ""
-#: config/m68k/m68k.h:329
+#: config/m68k/m68k.h:334
msgid "Disable ID based shared library"
msgstr ""
-#: config/m68k/m68k.h:331
+#: config/m68k/m68k.h:336
msgid "Generate pc-relative code"
msgstr ""
-#: config/m68k/m68k.h:333
+#: config/m68k/m68k.h:338
msgid "Do not use unaligned memory references"
msgstr ""
-#: config/m68k/m68k.h:335
+#: config/m68k/m68k.h:340
msgid "Use unaligned memory references"
msgstr ""
-#: config/m68k/m68k.h:337
+#: config/m68k/m68k.h:342
msgid "Use different calling convention using 'rtd'"
msgstr ""
-#: config/m68k/m68k.h:361
+#: config/m68k/m68k.h:366
msgid "ID of shared library to build"
msgstr ""
-#: config/mcore/mcore.c:2972
+#: config/mcore/mcore.c:2973
#, c-format
msgid "invalid option `-mstack-increment=%s'"
msgstr ""
@@ -10578,163 +10697,163 @@ msgstr ""
msgid "Maximum amount for a single stack increment operation"
msgstr ""
-#: config/mips/mips.c:3036 config/xtensa/xtensa.c:992
+#: config/mips/mips.c:3115 config/xtensa/xtensa.c:992
#: config/xtensa/xtensa.c:1024 config/xtensa/xtensa.c:1033
msgid "bad test"
msgstr ""
-#: config/mips/mips.c:4480
+#: config/mips/mips.c:4593
#, c-format
msgid "bad value (%s) for -mabi= switch"
msgstr ""
-#: config/mips/mips.c:4503
+#: config/mips/mips.c:4616
#, c-format
msgid ""
"-mips%s conflicts with the other architecture options, which specify a MIPS%"
"d processor"
msgstr ""
-#: config/mips/mips.c:4522
+#: config/mips/mips.c:4635
#, c-format
msgid "-march=%s is not compatible with the selected ABI"
msgstr ""
-#: config/mips/mips.c:4537
+#: config/mips/mips.c:4650
msgid "-mgp64 used with a 32-bit processor"
msgstr ""
-#: config/mips/mips.c:4539
+#: config/mips/mips.c:4652
msgid "-mgp32 used with a 64-bit ABI"
msgstr ""
-#: config/mips/mips.c:4541
+#: config/mips/mips.c:4654
msgid "-mgp64 used with a 32-bit ABI"
msgstr ""
-#: config/mips/mips.c:4559 config/mips/mips.c:4561 config/mips/mips.c:4563
-#: config/mips/mips.c:4693
+#: config/mips/mips.c:4672 config/mips/mips.c:4674 config/mips/mips.c:4676
+#: config/mips/mips.c:4804
#, c-format
msgid "unsupported combination: %s"
msgstr ""
-#: config/mips/mips.c:4657
+#: config/mips/mips.c:4768
msgid "-g is only supported using GNU as,"
msgstr ""
-#: config/mips/mips.c:4659
+#: config/mips/mips.c:4770
msgid "-g is only supported using GNU as with -mabi=32,"
msgstr ""
-#: config/mips/mips.c:4660 config/pa/pa.c:353
+#: config/mips/mips.c:4771 config/pa/pa.c:353
msgid "-g option disabled"
msgstr ""
-#: config/mips/mips.c:4688
+#: config/mips/mips.c:4799
msgid ""
"generation of Branch Likely instructions enabled, but not supported by "
"architecture"
msgstr ""
-#: config/mips/mips.c:4705
+#: config/mips/mips.c:4816
msgid "-G is incompatible with PIC code which is the default"
msgstr ""
-#: config/mips/mips.c:4733
+#: config/mips/mips.c:4844
msgid "-membedded-pic and -mabicalls are incompatible"
msgstr ""
-#: config/mips/mips.c:4736
+#: config/mips/mips.c:4847
msgid "-G and -membedded-pic are incompatible"
msgstr ""
-#: config/mips/mips.c:4768
+#: config/mips/mips.c:4879
msgid "non-PIC n64 with explicit relocations"
msgstr ""
-#: config/mips/mips.c:5134
+#: config/mips/mips.c:5267
msgid "mips_debugger_offset called with non stack/frame/arg pointer"
msgstr ""
-#: config/mips/mips.c:5261
+#: config/mips/mips.c:5394
#, c-format
msgid "internal error: %%) found without a %%( in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5275
+#: config/mips/mips.c:5408
#, c-format
msgid "internal error: %%] found without a %%[ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5288
+#: config/mips/mips.c:5421
#, c-format
msgid "internal error: %%> found without a %%< in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5301
+#: config/mips/mips.c:5434
#, c-format
msgid "internal error: %%} found without a %%{ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5315
+#: config/mips/mips.c:5448
#, c-format
msgid "PRINT_OPERAND: unknown punctuation '%c'"
msgstr ""
-#: config/mips/mips.c:5344
+#: config/mips/mips.c:5477
#, c-format
msgid "PRINT_OPERAND, invalid insn for %%C"
msgstr ""
-#: config/mips/mips.c:5361
+#: config/mips/mips.c:5494
#, c-format
msgid "PRINT_OPERAND, invalid insn for %%N"
msgstr ""
-#: config/mips/mips.c:5370
+#: config/mips/mips.c:5503
#, c-format
msgid "PRINT_OPERAND, invalid insn for %%F"
msgstr ""
-#: config/mips/mips.c:5379
+#: config/mips/mips.c:5512
#, c-format
msgid "PRINT_OPERAND, invalid insn for %%W"
msgstr ""
-#: config/mips/mips.c:5485
+#: config/mips/mips.c:5618
msgid "PRINT_OPERAND, invalid operand for relocation"
msgstr ""
-#: config/mips/mips.c:7951
+#: config/mips/mips.c:8252
#, c-format
msgid "can not handle inconsistent calls to `%s'"
msgstr ""
-#: config/mips/mips.c:9178
+#: config/mips/mips.c:9258
msgid "the cpu name must be lower case"
msgstr ""
-#: config/mips/mips.c:9200
+#: config/mips/mips.c:9280
#, c-format
msgid "bad value (%s) for %s"
msgstr ""
-#: config/mips/mips.c:9469
+#: config/mips/mips.c:9549
#, c-format
msgid "can't rewind temp file: %m"
msgstr ""
-#: config/mips/mips.c:9473
+#: config/mips/mips.c:9553
#, c-format
msgid "can't write to output file: %m"
msgstr ""
-#: config/mips/mips.c:9476
+#: config/mips/mips.c:9556
#, c-format
msgid "can't read from temp file: %m"
msgstr ""
-#: config/mips/mips.c:9479
+#: config/mips/mips.c:9559
#, c-format
msgid "can't close temp file: %m"
msgstr ""
@@ -10747,7 +10866,7 @@ msgstr ""
#. We do this here because __mips is defined below and so we can't use builtin_define_std.
#. Treat _R3000 and _R4000 like register-size defines, which is how they've historically been used.
#. Macros dependent on the C dialect.
-#. Bizzare, but needed at least for Irix.
+#. Bizarre, but needed at least for Irix.
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
@@ -10827,7 +10946,7 @@ 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:541 config/pdp11/pdp11.h:61
+#: config/mips/mips.h:541 config/pdp11/pdp11.h:61 config/rs6000/rs6000.h:314
msgid "Use hardware floating point"
msgstr ""
@@ -10895,11 +11014,11 @@ msgstr ""
msgid "Don't use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:583 config/rs6000/rs6000.h:315
+#: config/mips/mips.h:583
msgid "Don't generate fused multiply/add instructions"
msgstr ""
-#: config/mips/mips.h:585 config/rs6000/rs6000.h:313
+#: config/mips/mips.h:585 config/rs6000/rs6000.h:330
msgid "Generate fused multiply/add instructions"
msgstr ""
@@ -10967,17 +11086,9 @@ msgstr ""
msgid "Specify a Standard MIPS ISA"
msgstr ""
-#: config/mips/mips.h:739
-msgid "Don't call any cache flush functions"
-msgstr ""
-
-#: config/mips/mips.h:741
-msgid "Specify cache flush function"
-msgstr ""
-
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2425
+#: config/mips/mips.h:2403
msgid "mips16 function profiling"
msgstr ""
@@ -11068,23 +11179,6 @@ msgstr ""
msgid "MMIX Internal: This is not a constant:"
msgstr ""
-#. For these target macros, there is no generic documentation here. You
-#. should read `Using and Porting GCC' for that. Only comments specific
-#. to the MMIX target are here.
-#.
-#. There are however references to the specific texinfo node (comments
-#. with "Node:"), so there should be little or nothing amiss. Probably
-#. the opposite, since we don't have to care about old littering and
-#. soon outdated generic comments.
-#. Node: Driver
-#. User symbols are in the same name-space as built-in symbols, but we
-#. don't need the built-in symbols, so remove those and instead apply
-#. stricter operand checking. Don't warn when expanding insns.
-#. Pass on -mset-program-start=N and -mset-data-start=M to the linker.
-#. Provide default program start 0x100 unless -mno-set-program-start.
-#. Don't do this if linking relocatably, with -r. For a final link,
-#. produce mmo, unless ELF is requested or when linking relocatably.
-#. Put unused option values here.
#: config/mmix/mmix.h:132
msgid "Set start-address of the program"
msgstr ""
@@ -11156,15 +11250,15 @@ msgstr ""
msgid "Do not generate a single exit point for each function"
msgstr ""
-#: config/mn10300/linux.h:69 config/mn10300/mn10300.h:71
+#: config/mn10300/linux.h:60 config/mn10300/mn10300.h:71
msgid "Target the AM33 processor"
msgstr ""
-#: config/mn10300/linux.h:70 config/mn10300/mn10300.h:75
+#: config/mn10300/linux.h:61 config/mn10300/mn10300.h:75
msgid "Target the AM33/2.0 processor"
msgstr ""
-#: config/mn10300/linux.h:71 config/mn10300/mn10300.h:78
+#: config/mn10300/linux.h:62 config/mn10300/mn10300.h:78
msgid "Enable linker relaxations"
msgstr ""
@@ -11176,7 +11270,7 @@ msgstr ""
msgid "Do not work around hardware multiply bug"
msgstr ""
-#: config/ns32k/ns32k.h:142 config/s390/s390.h:124
+#: config/ns32k/ns32k.h:142 config/s390/s390.h:125
msgid "Don't use hardware fp"
msgstr ""
@@ -11402,7 +11496,7 @@ msgstr ""
msgid "Assume code will be linked by HP ld"
msgstr ""
-#: config/pdp11/pdp11.h:62
+#: config/pdp11/pdp11.h:62 config/rs6000/rs6000.h:316
msgid "Do not use hardware floating point"
msgstr ""
@@ -11535,160 +11629,160 @@ msgstr ""
msgid "junk at end of #pragma longcall"
msgstr ""
-#: config/rs6000/rs6000.c:827
+#: config/rs6000/rs6000.c:793
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:834
+#: config/rs6000/rs6000.c:800
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:848
+#: config/rs6000/rs6000.c:814
#, c-format
msgid "unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:860
+#: config/rs6000/rs6000.c:826
#, c-format
msgid "unknown -mtraceback arg `%s'; expecting `full', `partial' or `none'"
msgstr ""
-#: config/rs6000/rs6000.c:871
+#: config/rs6000/rs6000.c:837
#, c-format
msgid "Unknown switch -mlong-double-%s"
msgstr ""
-#: config/rs6000/rs6000.c:1042
+#: config/rs6000/rs6000.c:1008
#, c-format
msgid "unknown -m%s= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:1059
+#: config/rs6000/rs6000.c:1025
#, c-format
msgid "not configured for ABI: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:1065
+#: config/rs6000/rs6000.c:1031
#, c-format
msgid "unknown ABI specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:1079
+#: config/rs6000/rs6000.c:1045
#, c-format
msgid "unknown -malign-XXXXX option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:5297
+#: config/rs6000/rs6000.c:5358
msgid "argument 1 must be a 5-bit signed literal"
msgstr ""
-#: config/rs6000/rs6000.c:5399 config/rs6000/rs6000.c:6022
+#: config/rs6000/rs6000.c:5460 config/rs6000/rs6000.c:6083
msgid "argument 2 must be a 5-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:5439
+#: config/rs6000/rs6000.c:5500
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:5493
+#: config/rs6000/rs6000.c:5554
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:5621
+#: config/rs6000/rs6000.c:5682
msgid "argument 3 must be a 4-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:5791
+#: config/rs6000/rs6000.c:5852
#, c-format
msgid "argument to `%s' must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:5904
+#: config/rs6000/rs6000.c:5965
msgid "argument to dss must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:6142
+#: config/rs6000/rs6000.c:6203
msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:6215
+#: config/rs6000/rs6000.c:6276
msgid "argument 1 of __builtin_spe_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:8647
+#: config/rs6000/rs6000.c:8711
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:8656
+#: config/rs6000/rs6000.c:8720
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:8665
+#: config/rs6000/rs6000.c:8729
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:8700
+#: config/rs6000/rs6000.c:8764
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:8710
+#: config/rs6000/rs6000.c:8774
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:8720
+#: config/rs6000/rs6000.c:8784
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:8740 config/xtensa/xtensa.c:1961
+#: config/rs6000/rs6000.c:8804 config/xtensa/xtensa.c:1985
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:8807
+#: config/rs6000/rs6000.c:8871
#, c-format
msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:8854
+#: config/rs6000/rs6000.c:8918
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:8898
+#: config/rs6000/rs6000.c:8962
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/rs6000/rs6000.c:8940
+#: config/rs6000/rs6000.c:9004
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:8950
+#: config/rs6000/rs6000.c:9014
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:8959 config/xtensa/xtensa.c:1931
+#: config/rs6000/rs6000.c:9023 config/xtensa/xtensa.c:1955
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:13453
+#: config/rs6000/rs6000.c:13513
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/aix.h:186 config/rs6000/beos.h:32
+#: config/rs6000/aix.h:184 config/rs6000/beos.h:32
msgid "Always pass floating-point arguments in memory"
msgstr ""
-#: config/rs6000/aix.h:188 config/rs6000/beos.h:34
+#: config/rs6000/aix.h:186 config/rs6000/beos.h:34
msgid "Don't always pass floating-point arguments in memory"
msgstr ""
@@ -11733,11 +11827,15 @@ msgstr ""
msgid "-fpic is not supported; -fPIC assumed"
msgstr ""
-#: config/rs6000/linux64.h:195
+#: config/rs6000/linux64.h:96
+msgid "-m64 requires a PowerPC64 cpu"
+msgstr ""
+
+#: config/rs6000/linux64.h:201
msgid "Call mcount for profiling before a function prologue"
msgstr ""
-#: config/rs6000/linux64.h:197
+#: config/rs6000/linux64.h:203
msgid "Call mcount for profiling after a function prologue"
msgstr ""
@@ -11748,183 +11846,195 @@ 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/rs6000/rs6000.h:245
+#: config/rs6000/rs6000.h:262
msgid "Use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:248
+#: config/rs6000/rs6000.h:265
msgid "Use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:250
+#: config/rs6000/rs6000.h:267
msgid "Do not use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:253
+#: config/rs6000/rs6000.h:270
msgid "Do not use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:255
+#: config/rs6000/rs6000.h:272
msgid "Use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:258
+#: config/rs6000/rs6000.h:275
msgid "Do not use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:260
+#: config/rs6000/rs6000.h:277
msgid "Use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:262
-msgid "Don't use PowerPC General Purpose group optional instructions"
+#: config/rs6000/rs6000.h:279
+msgid "Do not use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:264
+#: config/rs6000/rs6000.h:281
msgid "Use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:266
-msgid "Don't use PowerPC Graphics group optional instructions"
+#: config/rs6000/rs6000.h:283
+msgid "Do not use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:268
+#: config/rs6000/rs6000.h:285
msgid "Use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:270
-msgid "Don't use PowerPC-64 instruction set"
+#: config/rs6000/rs6000.h:287
+msgid "Do not use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:272
+#: config/rs6000/rs6000.h:289
msgid "Use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:274
-msgid "Don't use AltiVec instructions"
+#: config/rs6000/rs6000.h:291
+msgid "Do not use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:276
+#: config/rs6000/rs6000.h:293
msgid "Use new mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:278
+#: config/rs6000/rs6000.h:295
msgid "Use old mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:281
+#: config/rs6000/rs6000.h:298
msgid "Put everything in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:283
+#: config/rs6000/rs6000.h:300
msgid "Place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:285
-msgid "Don't place floating point constants in TOC"
+#: config/rs6000/rs6000.h:302
+msgid "Do not place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:287
+#: config/rs6000/rs6000.h:304
msgid "Place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:289
-msgid "Don't place symbol+offset constants in TOC"
+#: config/rs6000/rs6000.h:306
+msgid "Do not place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:295
+#: config/rs6000/rs6000.h:312
msgid "Place variable addresses in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:301
+#: config/rs6000/rs6000.h:318
msgid "Generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:303
+#: config/rs6000/rs6000.h:320
msgid "Do not generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:305
+#: config/rs6000/rs6000.h:322
msgid "Generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:307
+#: config/rs6000/rs6000.h:324
msgid "Do not generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:309
+#: config/rs6000/rs6000.h:326
msgid "Generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:311
+#: config/rs6000/rs6000.h:328
msgid "Do not generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:319
-msgid "Don't schedule the start and end of the procedure"
+#: config/rs6000/rs6000.h:332
+msgid "Do not generate fused multiply/add instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.h:336
+msgid "Do not schedule the start and end of the procedure"
msgstr ""
-#: config/rs6000/rs6000.h:325
+#: config/rs6000/rs6000.h:342
msgid "Return all structures in memory (AIX default)"
msgstr ""
-#: config/rs6000/rs6000.h:327
+#: config/rs6000/rs6000.h:344
msgid "Return small structures in registers (SVR4 default)"
msgstr ""
-#: config/rs6000/rs6000.h:414 config/sparc/sparc.h:648
+#: config/rs6000/rs6000.h:350
+msgid "Generate single field mfcr instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.h:352
+msgid "Do not generate single field mfcr instruction"
+msgstr ""
+
+#: config/rs6000/rs6000.h:435 config/sparc/sparc.h:648
msgid "Use features of and schedule code for given CPU"
msgstr ""
-#: config/rs6000/rs6000.h:417
+#: config/rs6000/rs6000.h:438
msgid "Enable debug output"
msgstr ""
-#: config/rs6000/rs6000.h:419
+#: config/rs6000/rs6000.h:440
msgid "Select full, part, or no traceback table"
msgstr ""
-#: config/rs6000/rs6000.h:420
+#: config/rs6000/rs6000.h:441
msgid "Specify ABI to use"
msgstr ""
-#: config/rs6000/rs6000.h:422
+#: config/rs6000/rs6000.h:443
msgid "Specify size of long double (64 or 128 bits)"
msgstr ""
-#: config/rs6000/rs6000.h:424
+#: config/rs6000/rs6000.h:445
msgid "Specify yes/no if isel instructions should be generated"
msgstr ""
-#: config/rs6000/rs6000.h:426
+#: config/rs6000/rs6000.h:447
msgid "Specify yes/no if SPE SIMD instructions should be generated"
msgstr ""
-#: config/rs6000/rs6000.h:428
+#: config/rs6000/rs6000.h:449
msgid "Specify yes/no if using floating point in the GPRs"
msgstr ""
-#: config/rs6000/rs6000.h:430
+#: config/rs6000/rs6000.h:451
msgid "Specify yes/no if VRSAVE instructions should be generated for AltiVec"
msgstr ""
-#: config/rs6000/rs6000.h:432
+#: config/rs6000/rs6000.h:453
msgid "Avoid all range limits on call instructions"
msgstr ""
-#: config/rs6000/rs6000.h:435
+#: config/rs6000/rs6000.h:456
msgid "Determine which dependences between insns are considered costly"
msgstr ""
-#: config/rs6000/rs6000.h:437
+#: config/rs6000/rs6000.h:458
msgid "Specify which post scheduling nop insertion scheme to apply"
msgstr ""
-#: config/rs6000/rs6000.h:439
+#: config/rs6000/rs6000.h:460
msgid "Specify alignment of structure fields default/natural"
msgstr ""
-#: config/rs6000/rs6000.h:441
+#: config/rs6000/rs6000.h:462
msgid "Specify scheduling priority for dispatch slot restricted insns"
msgstr ""
@@ -11940,7 +12050,7 @@ 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:1895
+#: config/rs6000/rs6000.h:1926
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
@@ -12100,135 +12210,136 @@ msgstr ""
msgid "-m%s not supported in this configuration"
msgstr ""
-#: config/s390/s390.c:1057
+#: config/s390/s390.c:926
#, c-format
msgid "Unknown cpu used in -march=%s."
msgstr ""
-#: config/s390/s390.c:1076
+#: config/s390/s390.c:945
#, c-format
msgid "Unknown cpu used in -mtune=%s."
msgstr ""
-#: config/s390/s390.c:1081
+#: config/s390/s390.c:950
#, c-format
msgid "z/Architecture mode not supported on %s."
msgstr ""
-#: config/s390/s390.c:1083
+#: config/s390/s390.c:952
msgid "64-bit ABI not supported in ESA/390 mode."
msgstr ""
-#: config/s390/s390.c:3397
+#: config/s390/s390.c:3337
msgid "invalid UNSPEC as operand (1)"
msgstr ""
-#: config/s390/s390.c:3445
+#: config/s390/s390.c:3385
msgid "invalid UNSPEC as operand (2)"
msgstr ""
-#: config/s390/s390.c:3451
+#: config/s390/s390.c:3391
msgid "UNKNOWN in s390_output_symbolic_const !?"
msgstr ""
-#: config/s390/s390.c:3467
+#: config/s390/s390.c:3407
msgid "Cannot decompose address."
msgstr ""
-#: config/s390/s390.c:3630
+#: config/s390/s390.c:3578
msgid "UNKNOWN in print_operand !?"
msgstr ""
-#: config/s390/s390.c:5348
+#: config/s390/s390.c:5301
msgid "Total size of local variables exceeds architecture limit."
msgstr ""
-#: config/s390/s390.h:125
+#: config/s390/s390.h:126
msgid "Set backchain"
msgstr ""
-#: config/s390/s390.h:126
+#: config/s390/s390.h:127
msgid "Don't set backchain (faster, but debug harder"
msgstr ""
-#: config/s390/s390.h:127
+#: config/s390/s390.h:128
msgid "Use bras for executable < 64k"
msgstr ""
-#: config/s390/s390.h:128
+#: config/s390/s390.h:129
msgid "Don't use bras"
msgstr ""
-#: config/s390/s390.h:129
+#: config/s390/s390.h:130
msgid "Additional debug prints"
msgstr ""
-#: config/s390/s390.h:130
+#: config/s390/s390.h:131
msgid "Don't print additional debug prints"
msgstr ""
-#: config/s390/s390.h:131
+#: config/s390/s390.h:132
msgid "64 bit ABI"
msgstr ""
-#: config/s390/s390.h:132
+#: config/s390/s390.h:133
msgid "31 bit ABI"
msgstr ""
-#: config/s390/s390.h:133
+#: config/s390/s390.h:134
msgid "z/Architecture"
msgstr ""
-#: config/s390/s390.h:134
+#: config/s390/s390.h:135
msgid "ESA/390 architecture"
msgstr ""
-#: config/s390/s390.h:135
+#: config/s390/s390.h:136
msgid "mvcle use"
msgstr ""
-#: config/s390/s390.h:136
+#: config/s390/s390.h:137
msgid "mvc&ex"
msgstr ""
-#: config/s390/s390.h:137
+#: config/s390/s390.h:138
msgid "enable tpf OS code"
msgstr ""
-#: config/s390/s390.h:138
+#: config/s390/s390.h:139
msgid "disable tpf OS code"
msgstr ""
-#: config/s390/s390.h:139
+#: config/s390/s390.h:140
msgid "disable fused multiply/add instructions"
msgstr ""
-#: config/s390/s390.h:140
+#: config/s390/s390.h:141
msgid "enable fused multiply/add instructions"
msgstr ""
-#: config/sh/sh.c:5827
+#: config/sh/sh.c:5841
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:6729
+#: config/sh/sh.c:6743
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
#. The sp_switch attribute only has meaning for interrupt functions.
-#: config/sh/sh.c:6751 config/sh/sh.c:6786
+#. The trap_exit attribute only has meaning for interrupt functions.
+#: config/sh/sh.c:6765 config/sh/sh.c:6800
#, c-format
msgid "`%s' attribute only applies to interrupt functions"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:6758
+#: config/sh/sh.c:6772
#, c-format
msgid "`%s' attribute argument not a string constant"
msgstr ""
#. The argument must be a constant integer.
-#: config/sh/sh.c:6793
+#: config/sh/sh.c:6807
#, c-format
msgid "`%s' attribute argument not an integer constant"
msgstr ""
@@ -12240,74 +12351,74 @@ msgstr ""
msgid "Profiling is not supported on this target."
msgstr ""
-#: config/sparc/sparc.c:355
+#: config/sparc/sparc.c:360
#, c-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:362
+#: config/sparc/sparc.c:367
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:387
+#: config/sparc/sparc.c:392
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
-#: config/sparc/sparc.c:6666 config/sparc/sparc.c:6672
+#: config/sparc/sparc.c:6793 config/sparc/sparc.c:6799
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:6742
+#: config/sparc/sparc.c:6869
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:6752
+#: config/sparc/sparc.c:6879
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:6791
+#: config/sparc/sparc.c:6918
#, c-format
msgid "invalid %%c operand"
msgstr ""
-#: config/sparc/sparc.c:6792
+#: config/sparc/sparc.c:6919
#, c-format
msgid "invalid %%C operand"
msgstr ""
-#: config/sparc/sparc.c:6813
+#: config/sparc/sparc.c:6940
#, c-format
msgid "invalid %%d operand"
msgstr ""
-#: config/sparc/sparc.c:6814
+#: config/sparc/sparc.c:6941
#, c-format
msgid "invalid %%D operand"
msgstr ""
-#: config/sparc/sparc.c:6830
+#: config/sparc/sparc.c:6957
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:6844
+#: config/sparc/sparc.c:6971
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:6898
+#: config/sparc/sparc.c:7025
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:6901
+#: config/sparc/sparc.c:7028
msgid "floating point constant not a valid immediate operand"
msgstr ""
-#: config/sparc/freebsd.h:77 config/sparc/linux.h:91
-#: config/sparc/linux64.h:103 config/sparc/netbsd-elf.h:216
+#: config/sparc/freebsd.h:77 config/sparc/linux.h:92
+#: config/sparc/linux64.h:104 config/sparc/netbsd-elf.h:216
msgid "Use 128 bit long doubles"
msgstr ""
@@ -12319,7 +12430,7 @@ msgstr ""
msgid "Generate code for little endian"
msgstr ""
-#: config/sparc/sp86x-elf.h:69
+#: config/sparc/sp86x-elf.h:68
msgid "Use little-endian byte order for data"
msgstr ""
@@ -12683,56 +12794,56 @@ msgstr ""
msgid "Set the max size of data eligible for the ZDA area"
msgstr ""
-#: config/xtensa/xtensa.c:1790
+#: config/xtensa/xtensa.c:1814
msgid "boolean registers required for the floating-point option"
msgstr ""
-#: config/xtensa/xtensa.c:1844
+#: config/xtensa/xtensa.c:1868
#, c-format
msgid "-f%s is not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:1849
+#: config/xtensa/xtensa.c:1873
msgid "PIC is required but not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:1919
+#: config/xtensa/xtensa.c:1943
#, c-format
msgid "invalid %%D value"
msgstr ""
-#: config/xtensa/xtensa.c:1956
+#: config/xtensa/xtensa.c:1980
msgid "invalid mask"
msgstr ""
-#: config/xtensa/xtensa.c:1982
+#: config/xtensa/xtensa.c:2006
#, c-format
msgid "invalid %%x value"
msgstr ""
-#: config/xtensa/xtensa.c:1989
+#: config/xtensa/xtensa.c:2013
#, c-format
msgid "invalid %%d value"
msgstr ""
-#: config/xtensa/xtensa.c:2010 config/xtensa/xtensa.c:2020
+#: config/xtensa/xtensa.c:2034 config/xtensa/xtensa.c:2044
#, c-format
msgid "invalid %%t/%%b value"
msgstr ""
-#: config/xtensa/xtensa.c:2062
+#: config/xtensa/xtensa.c:2086
msgid "invalid address"
msgstr ""
-#: config/xtensa/xtensa.c:2087
+#: config/xtensa/xtensa.c:2111
msgid "no register in address"
msgstr ""
-#: config/xtensa/xtensa.c:2095
+#: config/xtensa/xtensa.c:2119
msgid "address offset not a constant"
msgstr ""
-#: config/xtensa/xtensa.c:2759
+#: config/xtensa/xtensa.c:2802
msgid "only uninitialized variables can be placed in a .bss section"
msgstr ""
@@ -12776,539 +12887,526 @@ msgstr ""
msgid "Use direct CALLn instructions for fast calls"
msgstr ""
-#: ada/misc.c:239
+#: ada/misc.c:240
#, c-format
msgid "missing argument to \"-%s\""
msgstr ""
-#: ada/misc.c:280
+#: ada/misc.c:281
msgid "`-gnat' misspelled as `-gant'"
msgstr ""
-#: cp/call.c:253
+#: cp/call.c:217
msgid "unable to call pointer to member function here"
msgstr ""
-#: cp/call.c:377
-msgid "destructors take no parameters"
-msgstr ""
-
-#: cp/call.c:381
-msgid "destructor name `~%T' does not match type `%T' of expression"
-msgstr ""
-
-#: cp/call.c:397 cp/call.c:4987
-msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
-msgstr ""
-
-#: cp/call.c:419
-msgid "request for member `%D' is ambiguous"
-msgstr ""
-
-#: cp/call.c:2350
+#: cp/call.c:2228
msgid "%s %D(%T, %T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2355
+#: cp/call.c:2233
msgid "%s %D(%T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2359
+#: cp/call.c:2237
msgid "%s %D(%T) <built-in>"
msgstr ""
-#: cp/call.c:2363
+#: cp/call.c:2241
msgid "%s %T <conversion>"
msgstr ""
-#: cp/call.c:2365
+#: cp/call.c:2243
msgid "%J%s %+#D <near match>"
msgstr ""
-#: cp/call.c:2367
+#: cp/call.c:2245
msgid "%J%s %+#D"
msgstr ""
-#: cp/call.c:2402
+#: cp/call.c:2280
msgid "candidates are:"
msgstr ""
-#: cp/call.c:2590
+#: cp/call.c:2468
msgid "conversion from `%T' to `%T' is ambiguous"
msgstr ""
-#: cp/call.c:2741 cp/call.c:2785
+#: cp/call.c:2619 cp/call.c:2663
msgid "no matching function for call to `%D(%A)'"
msgstr ""
-#: cp/call.c:2744 cp/call.c:2788
+#: cp/call.c:2622 cp/call.c:2666
msgid "call of overloaded `%D(%A)' is ambiguous"
msgstr ""
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
-#: cp/call.c:2854
+#: cp/call.c:2732
#, c-format
msgid ""
"pointer-to-member function %E cannot be called without an object; consider "
"using .* or ->*"
msgstr ""
-#: cp/call.c:2920
+#: cp/call.c:2798
msgid "no match for call to `(%T) (%A)'"
msgstr ""
-#: cp/call.c:2928
+#: cp/call.c:2806
msgid "call of `(%T) (%A)' is ambiguous"
msgstr ""
-#: cp/call.c:2961
+#: cp/call.c:2839
#, c-format
msgid "%s for ternary 'operator?:' in '%E ? %E : %E'"
msgstr ""
-#: cp/call.c:2967
+#: cp/call.c:2845
#, c-format
msgid "%s for 'operator%s' in '%E%s'"
msgstr ""
-#: cp/call.c:2971
+#: cp/call.c:2849
#, c-format
msgid "%s for 'operator[]' in '%E[%E]'"
msgstr ""
-#: cp/call.c:2976
+#: cp/call.c:2854
#, c-format
msgid "%s for '%s' in '%s %E'"
msgstr ""
-#: cp/call.c:2981
+#: cp/call.c:2859
#, c-format
msgid "%s for 'operator%s' in '%E %s %E'"
msgstr ""
-#: cp/call.c:2984
+#: cp/call.c:2862
#, c-format
msgid "%s for 'operator%s' in '%s%E'"
msgstr ""
-#: cp/call.c:3079
+#: cp/call.c:2957
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/call.c:3140
+#: cp/call.c:3018
#, c-format
msgid "`%E' has type `void' and is not a throw-expression"
msgstr ""
-#: cp/call.c:3173 cp/call.c:3364
+#: cp/call.c:3051 cp/call.c:3242
msgid "operands to ?: have different types"
msgstr ""
-#: cp/call.c:3318
+#: cp/call.c:3196
msgid "enumeral mismatch in conditional expression: `%T' vs `%T'"
msgstr ""
-#: cp/call.c:3325
+#: cp/call.c:3203
msgid "enumeral and non-enumeral type in conditional expression"
msgstr ""
-#: cp/call.c:3609
+#: cp/call.c:3487
msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead"
msgstr ""
-#: cp/call.c:3654
+#: cp/call.c:3532
msgid "using synthesized `%#D' for copy assignment"
msgstr ""
-#: cp/call.c:3656
+#: cp/call.c:3534
msgid " where cfront would use `%#D'"
msgstr ""
-#: cp/call.c:3679
+#: cp/call.c:3557
msgid "comparison between `%#T' and `%#T'"
msgstr ""
-#: cp/call.c:3925
+#: cp/call.c:3803
msgid "no suitable `operator %s' for `%T'"
msgstr ""
-#: cp/call.c:3942
+#: cp/call.c:3820
msgid "`%+#D' is private"
msgstr ""
-#: cp/call.c:3944
+#: cp/call.c:3822
msgid "`%+#D' is protected"
msgstr ""
-#: cp/call.c:3946
+#: cp/call.c:3824
msgid "`%+#D' is inaccessible"
msgstr ""
-#: cp/call.c:3947
+#: cp/call.c:3825
msgid "within this context"
msgstr ""
-#: cp/call.c:3990
+#: cp/call.c:3895
msgid "invalid conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:3992 cp/call.c:4130 cp/call.c:4132
+#: cp/call.c:3897
msgid " initializing argument %P of `%D'"
msgstr ""
-#: cp/call.c:4054 cp/call.c:4058
-msgid " initializing argument %P of `%D' from result of `%D'"
-msgstr ""
-
-#: cp/call.c:4064 cp/call.c:4067
-msgid " initializing temporary from result of `%D'"
-msgstr ""
-
-#: cp/call.c:4152
+#: cp/call.c:4050
msgid "cannot bind bitfield `%E' to `%T'"
msgstr ""
-#: cp/call.c:4155
+#: cp/call.c:4053
msgid "cannot bind packed field `%E' to `%T'"
msgstr ""
-#: cp/call.c:4158
+#: cp/call.c:4056
msgid "cannot bind rvalue `%E' to `%T'"
msgstr ""
-#. Undefined behavior [expr.call] 5.2.2/7. We used to just warn
-#. here and do a bitwise copy, but now cp_expr_size will abort if we
-#. try to do that.
-#: cp/call.c:4239
+#: cp/call.c:4144
msgid ""
"cannot pass objects of non-POD type `%#T' through `...'; call will abort at "
"runtime"
msgstr ""
#. Undefined behavior [expr.call] 5.2.2/7.
-#: cp/call.c:4264
-msgid "cannot receive objects of non-POD type `%#T' through `...'"
+#: cp/call.c:4168
+msgid ""
+"cannot receive objects of non-POD type `%#T' through `...'; call will abort "
+"at runtime"
msgstr ""
-#: cp/call.c:4302
+#: cp/call.c:4208
msgid "the default argument for parameter %d of `%D' has not yet been parsed"
msgstr ""
-#: cp/call.c:4459
+#: cp/call.c:4403
msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
msgstr ""
-#: cp/call.c:4478
+#: cp/call.c:4422
msgid "`%T' is not an accessible base of `%T'"
msgstr ""
-#: cp/call.c:4721
+#: cp/call.c:4696
msgid "could not find class$ field in java interface type `%T'"
msgstr ""
-#: cp/call.c:4961
+#: cp/call.c:4951
msgid "call to non-function `%D'"
msgstr ""
-#: cp/call.c:5065
+#: cp/call.c:4977
+msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+msgstr ""
+
+#: cp/call.c:5055
msgid "no matching function for call to `%T::%s(%A)%#V'"
msgstr ""
-#: cp/call.c:5082
+#: cp/call.c:5072
#, c-format
msgid "call of overloaded `%s(%A)' is ambiguous"
msgstr ""
-#: cp/call.c:5103
+#: cp/call.c:5093
msgid "cannot call member function `%D' without object"
msgstr ""
-#: cp/call.c:5689
+#: cp/call.c:5678
msgid "passing `%T' chooses `%T' over `%T'"
msgstr ""
-#: cp/call.c:5691 cp/name-lookup.c:4039
+#: cp/call.c:5680 cp/name-lookup.c:4057
msgid " in call to `%D'"
msgstr ""
-#: cp/call.c:5748
+#: cp/call.c:5737
msgid "choosing `%D' over `%D'"
msgstr ""
-#: cp/call.c:5749
+#: cp/call.c:5738
msgid " for conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:5751
+#: cp/call.c:5740
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:5871
+#: cp/call.c:5860
msgid ""
"ISO C++ says that these are ambiguous, even though the worst conversion for "
"the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:5875
+#: cp/call.c:5864
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:5876
+#: cp/call.c:5865
msgid "candidate 2:"
msgstr ""
-#: cp/call.c:5985
+#: cp/call.c:5974
msgid "could not convert `%E' to `%T'"
msgstr ""
-#: cp/call.c:6090
+#: cp/call.c:6079
msgid ""
"invalid initialization of non-const reference of type '%T' from a temporary "
"of type '%T'"
msgstr ""
-#: cp/call.c:6094
+#: cp/call.c:6083
msgid ""
"invalid initialization of reference of type '%T' from expression of type '%T'"
msgstr ""
-#: cp/class.c:282
+#: cp/class.c:281
msgid ""
"cannot convert from base `%T' to derived type `%T' via virtual base `%T'"
msgstr ""
-#: cp/class.c:924
+#: cp/class.c:764
+msgid "Java class '%T' cannot have an implicit non-trivial destructor"
+msgstr ""
+
+#: cp/class.c:765
+msgid "Java class '%T' cannot have a destructor"
+msgstr ""
+
+#: cp/class.c:933
msgid "`%#D' and `%#D' cannot be overloaded"
msgstr ""
-#: cp/class.c:1007
+#: cp/class.c:1016
msgid "duplicate enum value `%D'"
msgstr ""
-#: cp/class.c:1010
+#: cp/class.c:1019
msgid "duplicate field `%D' (as enum and non-enum)"
msgstr ""
-#: cp/class.c:1017
+#: cp/class.c:1026
msgid "duplicate nested type `%D'"
msgstr ""
-#: cp/class.c:1028
+#: cp/class.c:1037
msgid "duplicate field `%D' (as type and non-type)"
msgstr ""
-#: cp/class.c:1032
+#: cp/class.c:1041
msgid "duplicate member `%D'"
msgstr ""
-#: cp/class.c:1070
+#: cp/class.c:1079
msgid "conflicting access specifications for method `%D', ignored"
msgstr ""
-#: cp/class.c:1072
+#: cp/class.c:1081
#, c-format
msgid "conflicting access specifications for field `%s', ignored"
msgstr ""
-#: cp/class.c:1122
+#: cp/class.c:1131
msgid "`%D' names constructor"
msgstr ""
-#: cp/class.c:1127
+#: cp/class.c:1136
msgid "`%D' invalid in `%T'"
msgstr ""
-#: cp/class.c:1135
+#: cp/class.c:1144
msgid "no members matching `%D' in `%#T'"
msgstr ""
-#: cp/class.c:1167 cp/class.c:1175
+#: cp/class.c:1176 cp/class.c:1184
msgid "`%D' invalid in `%#T'"
msgstr ""
-#: cp/class.c:1168
+#: cp/class.c:1177
msgid " because of local method `%#D' with same name"
msgstr ""
-#: cp/class.c:1176
+#: cp/class.c:1185
msgid " because of local member `%#D' with same name"
msgstr ""
-#: cp/class.c:1246
+#: cp/class.c:1255
msgid "base class `%#T' has a non-virtual destructor"
msgstr ""
-#: cp/class.c:1266
+#: cp/class.c:1275
msgid ""
"base `%T' with only non-default constructor in class without a constructor"
msgstr ""
-#: cp/class.c:1650
+#: cp/class.c:1659
msgid "all member functions in class `%T' are private"
msgstr ""
-#: cp/class.c:1661
+#: cp/class.c:1670
msgid "`%#T' only defines a private destructor and has no friends"
msgstr ""
-#: cp/class.c:1703
+#: cp/class.c:1712
msgid "`%#T' only defines private constructors and has no friends"
msgstr ""
-#: cp/class.c:2084
+#: cp/class.c:2097
msgid "no unique final overrider for `%D' in `%T'"
msgstr ""
#. Here we know it is a hider, and no overrider exists.
-#: cp/class.c:2519
+#: cp/class.c:2542
msgid "`%D' was hidden"
msgstr ""
-#: cp/class.c:2520
+#: cp/class.c:2543
msgid " by `%D'"
msgstr ""
-#: cp/class.c:2561
+#: cp/class.c:2584
msgid "ISO C++ forbids member `%D' with same name as enclosing class"
msgstr ""
-#: cp/class.c:2566 cp/decl2.c:1186
+#: cp/class.c:2589 cp/decl2.c:1167
msgid "`%#D' invalid; an anonymous union can only have non-static data members"
msgstr ""
-#: cp/class.c:2572 cp/decl2.c:1193
+#: cp/class.c:2595 cp/decl2.c:1174
msgid "private member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:2575 cp/decl2.c:1195
+#: cp/class.c:2598 cp/decl2.c:1176
msgid "protected member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:2694
+#: cp/class.c:2717
msgid ""
"vtable layout for class `%T' may not be ABI-compliant and may change in a "
"future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/class.c:2754
+#: cp/class.c:2777
msgid "bit-field `%#D' with non-integral type"
msgstr ""
-#: cp/class.c:2774
+#: cp/class.c:2797
msgid "bit-field `%D' width not an integer constant"
msgstr ""
-#: cp/class.c:2780
+#: cp/class.c:2803
msgid "negative width in bit-field `%D'"
msgstr ""
-#: cp/class.c:2785
+#: cp/class.c:2808
msgid "zero width for bit-field `%D'"
msgstr ""
-#: cp/class.c:2791
+#: cp/class.c:2814
msgid "width of `%D' exceeds its type"
msgstr ""
-#: cp/class.c:2800
+#: cp/class.c:2823
msgid "`%D' is too small to hold all values of `%#T'"
msgstr ""
-#: cp/class.c:2862
+#: cp/class.c:2885
msgid "member `%#D' with constructor not allowed in union"
msgstr ""
-#: cp/class.c:2865
+#: cp/class.c:2888
msgid "member `%#D' with destructor not allowed in union"
msgstr ""
-#: cp/class.c:2868
+#: cp/class.c:2891
msgid "member `%#D' with copy assignment operator not allowed in union"
msgstr ""
-#: cp/class.c:2895
+#: cp/class.c:2918
msgid "multiple fields in union `%T' initialized"
msgstr ""
-#: cp/class.c:2964
+#: cp/class.c:2987
msgid "ignoring packed attribute on unpacked non-POD field `%#D'"
msgstr ""
-#: cp/class.c:3016
+#: cp/class.c:3039
msgid "field `%D' in local class cannot be static"
msgstr ""
-#: cp/class.c:3022
+#: cp/class.c:3045
msgid "field `%D' invalidly declared function type"
msgstr ""
-#: cp/class.c:3029
+#: cp/class.c:3052
msgid "field `%D' invalidly declared method type"
msgstr ""
#. Unions cannot have static members.
-#: cp/class.c:3047
+#: cp/class.c:3070
msgid "field `%D' declared static in union"
msgstr ""
-#: cp/class.c:3074
+#: cp/class.c:3097
msgid "non-static reference `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3109
+#: cp/class.c:3132
msgid "non-static const member `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3124
+#: cp/class.c:3147
msgid "field `%#D' with same name as class"
msgstr ""
-#: cp/class.c:3142
+#: cp/class.c:3165
msgid "`%#T' has pointer data members"
msgstr ""
-#: cp/class.c:3146
+#: cp/class.c:3169
msgid " but does not override `%T(const %T&)'"
msgstr ""
-#: cp/class.c:3148
+#: cp/class.c:3171
msgid " or `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3151
+#: cp/class.c:3174
msgid " but does not override `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3578
+#: cp/class.c:3604
msgid ""
"offset of empty base `%T' may not be ABI-compliant and maychange in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:3687
+#: cp/class.c:3714
msgid "class `%T' will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3774
+#: cp/class.c:3801
msgid "initializer specified for non-virtual method `%D'"
msgstr ""
-#: cp/class.c:4459
+#: cp/class.c:4489
msgid ""
"offset of virtual base `%T' is not ABI-compliant and may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4549
+#: cp/class.c:4579
msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgstr ""
-#: cp/class.c:4562
+#: cp/class.c:4592
msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
msgstr ""
-#: cp/class.c:4736
+#: cp/class.c:4766
msgid ""
"size assigned to `%T' may not be ABI-compliant and may change in a future "
"version of GCC"
@@ -13316,77 +13414,77 @@ msgstr ""
#. Versions of G++ before G++ 3.4 did not reset the
#. DECL_MODE.
-#: cp/class.c:4775
+#: cp/class.c:4805
msgid ""
"the offset of `%D' may not be ABI-compliant and may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4798
+#: cp/class.c:4828
msgid ""
"offset of `%D' is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:4807
+#: cp/class.c:4837
msgid ""
"`%D' contains empty classes which may cause base classes to be placed at "
"different locations in a future version of GCC"
msgstr ""
-#: cp/class.c:4866
+#: cp/class.c:4896
msgid ""
"layout of classes derived from empty class `%T' may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4994 cp/semantics.c:2036
+#: cp/class.c:5026 cp/semantics.c:2029
msgid "redefinition of `%#T'"
msgstr ""
-#: cp/class.c:5160
+#: cp/class.c:5196
msgid "`%#T' has virtual functions but non-virtual destructor"
msgstr ""
-#: cp/class.c:5239
+#: cp/class.c:5275
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:5681
+#: cp/class.c:5717
#, c-format
msgid "language string `\"%s\"' not recognized"
msgstr ""
-#: cp/class.c:5769
+#: cp/class.c:5805
msgid ""
"cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgstr ""
-#: cp/class.c:5894
+#: cp/class.c:5930
msgid "no matches converting function `%D' to type `%#T'"
msgstr ""
-#: cp/class.c:5917
+#: cp/class.c:5953
msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
msgstr ""
-#: cp/class.c:5943
+#: cp/class.c:5979
msgid "assuming pointer to member `%D'"
msgstr ""
-#: cp/class.c:5946
+#: cp/class.c:5982
#, c-format
msgid "(a pointer to member can only be formed with `&%E')"
msgstr ""
-#: cp/class.c:5991 cp/class.c:6173 cp/class.c:6180
+#: cp/class.c:6027 cp/class.c:6209 cp/class.c:6216
msgid "not enough type information"
msgstr ""
-#: cp/class.c:6008
+#: cp/class.c:6044
msgid "argument of type `%T' does not match `%T'"
msgstr ""
-#: cp/class.c:6157
+#: cp/class.c:6193
msgid "invalid operation on uninstantiated type"
msgstr ""
@@ -13395,15 +13493,15 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:6417 cp/decl.c:1229 cp/name-lookup.c:491 cp/pt.c:1959
+#: cp/class.c:6451 cp/decl.c:1225 cp/name-lookup.c:495 cp/pt.c:2093
msgid "declaration of `%#D'"
msgstr ""
-#: cp/class.c:6418
+#: cp/class.c:6452
msgid "changes meaning of `%D' from `%+#D'"
msgstr ""
-#: cp/cp-lang.c:394
+#: cp/cp-lang.c:398
msgid "inter-module optimisations not implemented yet"
msgstr ""
@@ -13459,182 +13557,183 @@ msgstr ""
msgid "conversion from `%T' to non-scalar type `%T' requested"
msgstr ""
-#: cp/cvt.c:849
+#: cp/cvt.c:850
msgid "object of incomplete type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:852
+#: cp/cvt.c:853
msgid "object of type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:868
+#: cp/cvt.c:869
msgid "object `%E' of incomplete type `%T' will not be accessed in %s"
msgstr ""
#. [over.over] enumerates the places where we can take the address
#. of an overloaded function, and this is not one of them.
-#: cp/cvt.c:884
+#: cp/cvt.c:885
#, c-format
msgid "%s cannot resolve address of overloaded function"
msgstr ""
#. Only warn when there is no &.
-#: cp/cvt.c:890
+#: cp/cvt.c:891
#, c-format
msgid "%s is a reference, not call, to function `%E'"
msgstr ""
-#: cp/cvt.c:897
+#: cp/cvt.c:898
#, c-format
msgid "%s has no effect"
msgstr ""
-#: cp/cvt.c:1008
+#: cp/cvt.c:1009
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1080
+#: cp/cvt.c:1081
msgid "ambiguous default type conversion from `%T'"
msgstr ""
-#: cp/cvt.c:1082
+#: cp/cvt.c:1083
msgid " candidate conversions include `%D' and `%D'"
msgstr ""
-#. Folks should explicitly indicate the appropriate alphabet for
-#. each demangling. Providing a default would allow the
-#. question to go unconsidered.
-#: cp/cxxfilt.c:238
-msgid "Internal error: no symbol alphabet for current style"
-msgstr ""
-
-#: cp/decl.c:378
+#: cp/decl.c:374
msgid "label `%D' used but not defined"
msgstr ""
-#: cp/decl.c:385
+#: cp/decl.c:381
msgid "label `%D' defined but not used"
msgstr ""
-#: cp/decl.c:1137 cp/decl.c:1556
+#: cp/decl.c:1133 cp/decl.c:1559
msgid "previous declaration of `%D'"
msgstr ""
-#: cp/decl.c:1186
+#: cp/decl.c:1181
+msgid "%Jfunction '%D' redeclared as inline"
+msgstr ""
+
+#: cp/decl.c:1182
msgid "%Jprevious declaration of '%D' with attribute noinline"
msgstr ""
-#: cp/decl.c:1195
+#: cp/decl.c:1189
+msgid "%Jfunction '%D' redeclared with attribute noinline"
+msgstr ""
+
+#: cp/decl.c:1191
msgid "%Jprevious declaration of '%D' was inline"
msgstr ""
-#: cp/decl.c:1216 cp/decl.c:1254
+#: cp/decl.c:1212 cp/decl.c:1250
msgid "shadowing %s function `%#D'"
msgstr ""
-#: cp/decl.c:1225
+#: cp/decl.c:1221
msgid "library function `%#D' redeclared as non-function `%#D'"
msgstr ""
-#: cp/decl.c:1230
+#: cp/decl.c:1226
msgid "conflicts with built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:1249 cp/decl.c:1354 cp/decl.c:1370
+#: cp/decl.c:1245 cp/decl.c:1357 cp/decl.c:1373
msgid "new declaration `%#D'"
msgstr ""
-#: cp/decl.c:1250
+#: cp/decl.c:1246
msgid "ambiguates built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:1314
+#: cp/decl.c:1317
msgid "`%#D' redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:1317
+#: cp/decl.c:1320
msgid "previous declaration of `%#D'"
msgstr ""
-#: cp/decl.c:1339
+#: cp/decl.c:1342
msgid "declaration of template `%#D'"
msgstr ""
-#: cp/decl.c:1340 cp/name-lookup.c:492
+#: cp/decl.c:1343 cp/name-lookup.c:496
msgid "conflicts with previous declaration `%#D'"
msgstr ""
-#: cp/decl.c:1355 cp/decl.c:1371
+#: cp/decl.c:1358 cp/decl.c:1374
msgid "ambiguates old declaration `%#D'"
msgstr ""
-#: cp/decl.c:1363
+#: cp/decl.c:1366
msgid "declaration of C function `%#D' conflicts with"
msgstr ""
-#: cp/decl.c:1365
+#: cp/decl.c:1368
msgid "previous declaration `%#D' here"
msgstr ""
-#: cp/decl.c:1381
+#: cp/decl.c:1384
msgid "conflicting declaration '%#D'"
msgstr ""
-#: cp/decl.c:1382
+#: cp/decl.c:1385
msgid "'%D' has a previous declaration as `%#D'"
msgstr ""
-#: cp/decl.c:1435
+#: cp/decl.c:1438
msgid "`%#D' previously defined here"
msgstr ""
-#: cp/decl.c:1436
+#: cp/decl.c:1439
msgid "`%#D' previously declared here"
msgstr ""
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:1445
+#: cp/decl.c:1448
msgid "prototype for `%#D'"
msgstr ""
-#: cp/decl.c:1446
+#: cp/decl.c:1449
msgid "%Jfollows non-prototype definition here"
msgstr ""
-#: cp/decl.c:1458
+#: cp/decl.c:1461
msgid "previous declaration of `%#D' with %L linkage"
msgstr ""
-#: cp/decl.c:1460
+#: cp/decl.c:1463
msgid "conflicts with new declaration with %L linkage"
msgstr ""
-#: cp/decl.c:1483 cp/decl.c:1490
+#: cp/decl.c:1486 cp/decl.c:1493
msgid "default argument given for parameter %d of `%#D'"
msgstr ""
-#: cp/decl.c:1485 cp/decl.c:1492
+#: cp/decl.c:1488 cp/decl.c:1495
msgid "after previous specification in `%#D'"
msgstr ""
-#: cp/decl.c:1501
+#: cp/decl.c:1504
msgid "`%#D' was used before it was declared inline"
msgstr ""
-#: cp/decl.c:1502
+#: cp/decl.c:1505
msgid "%Jprevious non-inline declaration here"
msgstr ""
-#: cp/decl.c:1555
+#: cp/decl.c:1558
msgid "redundant redeclaration of `%D' in same scope"
msgstr ""
-#: cp/decl.c:1638
+#: cp/decl.c:1649
#, c-format
msgid "declaration of `%F' throws different exceptions"
msgstr ""
-#: cp/decl.c:1640
+#: cp/decl.c:1651
#, c-format
msgid "than previous declaration `%F'"
msgstr ""
@@ -13647,495 +13746,507 @@ msgstr ""
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
-#: cp/decl.c:1787
+#: cp/decl.c:1798
msgid "explicit specialization of %D after first use"
msgstr ""
-#: cp/decl.c:1953
+#: cp/decl.c:1880
+msgid "%J'%D': visibility attribute ignored because it"
+msgstr ""
+
+#: cp/decl.c:1882
+msgid "%Jconflicts with previous declaration here"
+msgstr ""
+
+#: cp/decl.c:1976
msgid "implicit declaration of function `%#D'"
msgstr ""
-#: cp/decl.c:2101
+#: cp/decl.c:2124
#, c-format
msgid "label `%s' referenced outside of any function"
msgstr ""
-#: cp/decl.c:2198 cp/decl.c:2222 cp/decl.c:2310
+#: cp/decl.c:2221 cp/decl.c:2245 cp/decl.c:2333
msgid "jump to label `%D'"
msgstr ""
-#: cp/decl.c:2200 cp/decl.c:2224
+#: cp/decl.c:2223 cp/decl.c:2247
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:2203 cp/decl.c:2227
+#: cp/decl.c:2226 cp/decl.c:2250
msgid "%H from here"
msgstr ""
-#: cp/decl.c:2208
+#: cp/decl.c:2231
msgid " crosses initialization of `%#D'"
msgstr ""
-#: cp/decl.c:2211 cp/decl.c:2326
+#: cp/decl.c:2234 cp/decl.c:2349
msgid " enters scope of non-POD `%#D'"
msgstr ""
-#: cp/decl.c:2231 cp/decl.c:2330
+#: cp/decl.c:2254 cp/decl.c:2353
msgid " enters try block"
msgstr ""
-#: cp/decl.c:2233 cp/decl.c:2332
+#: cp/decl.c:2256 cp/decl.c:2355
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:2311
+#: cp/decl.c:2334
msgid " from here"
msgstr ""
#. Can't skip init of __exception_info.
-#: cp/decl.c:2322
+#: cp/decl.c:2345
msgid "%J enters catch block"
msgstr ""
-#: cp/decl.c:2324
+#: cp/decl.c:2347
msgid " skips initialization of `%#D'"
msgstr ""
-#: cp/decl.c:2358
+#: cp/decl.c:2381
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:2361
+#: cp/decl.c:2384
msgid "duplicate label `%D'"
msgstr ""
-#: cp/decl.c:2589 cp/parser.c:3008
+#: cp/decl.c:2612 cp/parser.c:3178
msgid "`%D' used without template parameters"
msgstr ""
-#: cp/decl.c:2599 cp/decl.c:2615 cp/decl.c:2703
+#: cp/decl.c:2622 cp/decl.c:2638 cp/decl.c:2726
msgid "no class template named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:2636 cp/decl.c:2646 cp/decl.c:2666
+#: cp/decl.c:2659 cp/decl.c:2669 cp/decl.c:2689
msgid "no type named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:3393
+#: cp/decl.c:3416
msgid "%Jan anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:3411
+#: cp/decl.c:3434
msgid "member %#D' with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3414
+#: cp/decl.c:3437
msgid "member %#D' with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3417
+#: cp/decl.c:3440
msgid ""
"member %#D' with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3457
+#: cp/decl.c:3480
msgid "redeclaration of C++ built-in type `%T'"
msgstr ""
-#: cp/decl.c:3495
+#: cp/decl.c:3518
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:3521
+#: cp/decl.c:3544
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:3529
+#: cp/decl.c:3552
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:3536
+#: cp/decl.c:3559
msgid "`%D' can only be specified for functions"
msgstr ""
-#: cp/decl.c:3538
+#: cp/decl.c:3561
msgid "`%D' can only be specified inside a class"
msgstr ""
-#: cp/decl.c:3540
+#: cp/decl.c:3563
msgid "`%D' can only be specified for constructors"
msgstr ""
-#: cp/decl.c:3543
+#: cp/decl.c:3566
msgid "`%D' can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:3685 cp/decl2.c:883
+#: cp/decl.c:3708 cp/decl2.c:861
msgid "typedef `%D' is initialized (use __typeof__ instead)"
msgstr ""
-#: cp/decl.c:3690
+#: cp/decl.c:3713
msgid "function `%#D' is initialized like a variable"
msgstr ""
-#: cp/decl.c:3702
+#: cp/decl.c:3725
msgid "declaration of `%#D' has `extern' and is initialized"
msgstr ""
-#: cp/decl.c:3735
+#: cp/decl.c:3758
msgid "`%#D' is not a static member of `%#T'"
msgstr ""
-#: cp/decl.c:3741
+#: cp/decl.c:3764
msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
msgstr ""
-#: cp/decl.c:3752
+#: cp/decl.c:3775
msgid "duplicate initialization of %D"
msgstr ""
-#: cp/decl.c:3781
+#: cp/decl.c:3806
msgid "declaration of `%#D' outside of class is not definition"
msgstr ""
-#: cp/decl.c:3832
+#: cp/decl.c:3857
msgid "variable `%#D' has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:3840 cp/decl.c:4383
+#: cp/decl.c:3865 cp/decl.c:4426
msgid "elements of array `%#D' have incomplete type"
msgstr ""
-#: cp/decl.c:3856
+#: cp/decl.c:3881
msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:3898
+#: cp/decl.c:3923
msgid "`%D' declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:3904
+#: cp/decl.c:3929
msgid "ISO C++ forbids use of initializer list to initialize reference `%D'"
msgstr ""
-#: cp/decl.c:3932
+#: cp/decl.c:3957
msgid "cannot initialize `%T' from `%T'"
msgstr ""
-#: cp/decl.c:3964
+#: cp/decl.c:3989
msgid "initializer fails to determine size of `%D'"
msgstr ""
-#: cp/decl.c:3969
+#: cp/decl.c:3994
msgid "array size missing in `%D'"
msgstr ""
-#: cp/decl.c:3981
+#: cp/decl.c:4006
msgid "zero-size array `%D'"
msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4018
+#: cp/decl.c:4043
msgid "storage size of `%D' isn't known"
msgstr ""
-#: cp/decl.c:4040
+#: cp/decl.c:4065
msgid "storage size of `%D' isn't constant"
msgstr ""
-#: cp/decl.c:4095
+#: cp/decl.c:4120
msgid ""
"sorry: semantics of inline function static data `%#D' are wrong (you'll wind "
"up with multiple copies)"
msgstr ""
-#: cp/decl.c:4096
+#: cp/decl.c:4121
msgid "%J you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4122
+#: cp/decl.c:4147
msgid "uninitialized const `%D'"
msgstr ""
-#: cp/decl.c:4201
+#: cp/decl.c:4226
msgid "brace-enclosed initializer used to initialize `%T'"
msgstr ""
-#: cp/decl.c:4264
+#: cp/decl.c:4290
msgid "initializer for `%T' must be brace-enclosed"
msgstr ""
-#: cp/decl.c:4279
+#: cp/decl.c:4307
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/decl.c:4283
+#: cp/decl.c:4311
msgid "`%T' has no non-static data member named `%D'"
msgstr ""
-#: cp/decl.c:4340
+#: cp/decl.c:4359
+msgid "name `%D' used in a GNU-style designated initializer for an array"
+msgstr ""
+
+#: cp/decl.c:4382
msgid "too many initializers for `%T'"
msgstr ""
-#: cp/decl.c:4377
+#: cp/decl.c:4420
msgid "variable-sized object `%D' may not be initialized"
msgstr ""
-#: cp/decl.c:4388
+#: cp/decl.c:4431
msgid "`%D' has incomplete type"
msgstr ""
-#: cp/decl.c:4443
+#: cp/decl.c:4486
msgid "`%D' must be initialized by constructor, not by `{...}'"
msgstr ""
-#: cp/decl.c:4484
+#: cp/decl.c:4530
msgid "structure `%D' with uninitialized const members"
msgstr ""
-#: cp/decl.c:4486
+#: cp/decl.c:4532
msgid "structure `%D' with uninitialized reference members"
msgstr ""
-#: cp/decl.c:4667
+#: cp/decl.c:4713
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:4684
+#: cp/decl.c:4730
msgid "cannot initialize `%D' to namespace `%D'"
msgstr ""
-#: cp/decl.c:4734
+#: cp/decl.c:4780
msgid "shadowing previous type declaration of `%#D'"
msgstr ""
-#: cp/decl.c:4770
+#: cp/decl.c:4816
msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
msgstr ""
-#: cp/decl.c:4785
+#: cp/decl.c:4831
msgid "`%D' is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:5256
+#: cp/decl.c:5313
msgid "invalid catch parameter"
msgstr ""
-#: cp/decl.c:5370
+#: cp/decl.c:5427
msgid "destructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:5373
+#: cp/decl.c:5430
msgid "constructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:5395
+#: cp/decl.c:5452
msgid "`%D' declared as a `virtual' %s"
msgstr ""
-#: cp/decl.c:5397
+#: cp/decl.c:5454
msgid "`%D' declared as an `inline' %s"
msgstr ""
-#: cp/decl.c:5399
+#: cp/decl.c:5456
msgid ""
"`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgstr ""
-#: cp/decl.c:5402
+#: cp/decl.c:5459
msgid "`%D' declared as a friend"
msgstr ""
-#: cp/decl.c:5408
+#: cp/decl.c:5465
msgid "`%D' declared with an exception specification"
msgstr ""
-#: cp/decl.c:5487
+#: cp/decl.c:5544
msgid "cannot declare `::main' to be a template"
msgstr ""
-#: cp/decl.c:5489
+#: cp/decl.c:5546
msgid "cannot declare `::main' to be inline"
msgstr ""
-#: cp/decl.c:5491
+#: cp/decl.c:5548
msgid "cannot declare `::main' to be static"
msgstr ""
-#: cp/decl.c:5494
+#: cp/decl.c:5551
msgid "`main' must return `int'"
msgstr ""
-#: cp/decl.c:5522
+#: cp/decl.c:5579
msgid "non-local function `%#D' uses anonymous type"
msgstr ""
-#: cp/decl.c:5525
+#: cp/decl.c:5582
msgid ""
"`%#D' does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:5531
+#: cp/decl.c:5588
msgid "non-local function `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:5555
+#: cp/decl.c:5612
msgid "%smember function `%D' cannot have `%T' method qualifier"
msgstr ""
-#: cp/decl.c:5579
+#: cp/decl.c:5636
msgid "defining explicit specialization `%D' in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:5589
+#: cp/decl.c:5646
msgid "invalid use of template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/decl.c:5616
+#: cp/decl.c:5673
msgid ""
"default arguments are not allowed in declaration of friend template "
"specialization `%D'"
msgstr ""
-#: cp/decl.c:5623
+#: cp/decl.c:5680
msgid ""
"`inline' is not allowed in declaration of friend template specialization `%D'"
msgstr ""
-#: cp/decl.c:5682
+#: cp/decl.c:5741
msgid "definition of implicitly-declared `%D'"
msgstr ""
-#: cp/decl.c:5700 cp/decl2.c:764
+#: cp/decl.c:5759 cp/decl2.c:744
msgid "no `%#D' member function declared in class `%T'"
msgstr ""
-#: cp/decl.c:5834
+#: cp/decl.c:5893
msgid "non-local variable `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:5949
+#: cp/decl.c:6008
msgid ""
"invalid in-class initialization of static data member of non-integral type `%"
"T'"
msgstr ""
-#: cp/decl.c:5958
+#: cp/decl.c:6017
msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgstr ""
-#: cp/decl.c:5961
+#: cp/decl.c:6020
msgid ""
"ISO C++ forbids initialization of member constant `%D' of non-integral type `"
"%T'"
msgstr ""
-#: cp/decl.c:6009
-msgid "size of array `%D' has non-integer type"
+#: cp/decl.c:6039
+msgid "size of array `%D' has non-integral type `%T'"
msgstr ""
-#: cp/decl.c:6011
-msgid "size of array has non-integer type"
+#: cp/decl.c:6041
+msgid "size of array has non-integral type `%T'"
msgstr ""
-#: cp/decl.c:6031
+#: cp/decl.c:6077
msgid "size of array `%D' is negative"
msgstr ""
-#: cp/decl.c:6033
+#: cp/decl.c:6079
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:6042
+#: cp/decl.c:6087
msgid "ISO C++ forbids zero-size array `%D'"
msgstr ""
-#: cp/decl.c:6044
+#: cp/decl.c:6089
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:6051
+#: cp/decl.c:6096
msgid "size of array `%D' is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:6054
+#: cp/decl.c:6099
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:6072
+#: cp/decl.c:6104
msgid "ISO C++ forbids variable-size array `%D'"
msgstr ""
-#: cp/decl.c:6075
+#: cp/decl.c:6106
msgid "ISO C++ forbids variable-size array"
msgstr ""
-#: cp/decl.c:6086
+#: cp/decl.c:6128
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:6179
+#: cp/decl.c:6222
msgid "declaration of `%D' as %s"
msgstr ""
-#: cp/decl.c:6181
+#: cp/decl.c:6224
#, c-format
msgid "creating %s"
msgstr ""
-#: cp/decl.c:6193
+#: cp/decl.c:6236
msgid ""
"declaration of `%D' as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: cp/decl.c:6196
+#: cp/decl.c:6239
msgid ""
"multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:6224
+#: cp/decl.c:6267
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:6231
+#: cp/decl.c:6274
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:6237
+#: cp/decl.c:6280
msgid "operator `%T' declared to return `%T'"
msgstr ""
-#: cp/decl.c:6239
+#: cp/decl.c:6282
msgid "return type specified for `operator %T'"
msgstr ""
-#: cp/decl.c:6382
+#: cp/decl.c:6425
msgid "destructors must be member functions"
msgstr ""
-#: cp/decl.c:6401
+#: cp/decl.c:6444
msgid "destructor `%T' must match class name `%T'"
msgstr ""
-#: cp/decl.c:6464
+#: cp/decl.c:6507
msgid "declarator-id missing; using reserved word `%D'"
msgstr ""
-#: cp/decl.c:6518
+#: cp/decl.c:6561
msgid "type `%T' is not derived from type `%T'"
msgstr ""
#. Parse error puts this typespec where
#. a declarator should go.
-#: cp/decl.c:6581
+#: cp/decl.c:6624
msgid "`%T' specified as declarator-id"
msgstr ""
-#: cp/decl.c:6583
+#: cp/decl.c:6626
msgid " perhaps you want `%T' for a constructor"
msgstr ""
@@ -14143,300 +14254,300 @@ msgstr ""
#. decl-specifier like in
#. std::allocator alloc;
#. Handle that gracefully.
-#: cp/decl.c:6605
+#: cp/decl.c:6648
#, c-format
msgid "invalid use of template-name '%E' in a declarator"
msgstr ""
-#: cp/decl.c:6625
+#: cp/decl.c:6668
msgid "declaration of `%D' as non-function"
msgstr ""
-#: cp/decl.c:6702
+#: cp/decl.c:6745
msgid "`bool' is now a keyword"
msgstr ""
-#: cp/decl.c:6704
+#: cp/decl.c:6747
msgid "extraneous `%T' ignored"
msgstr ""
-#: cp/decl.c:6720 cp/decl.c:6764
+#: cp/decl.c:6763 cp/decl.c:6807
msgid "multiple declarations `%T' and `%T'"
msgstr ""
-#: cp/decl.c:6733
+#: cp/decl.c:6776
msgid "ISO C++ does not support `long long'"
msgstr ""
-#: cp/decl.c:6837 cp/decl.c:6840
+#: cp/decl.c:6880 cp/decl.c:6883
#, c-format
msgid "ISO C++ forbids declaration of `%s' with no type"
msgstr ""
-#: cp/decl.c:6871
+#: cp/decl.c:6914
#, c-format
msgid "short, signed or unsigned invalid for `%s'"
msgstr ""
-#: cp/decl.c:6876
+#: cp/decl.c:6919
#, c-format
msgid "long and short specified together for `%s'"
msgstr ""
-#: cp/decl.c:6887
+#: cp/decl.c:6930
#, c-format
msgid "signed and unsigned given together for `%s'"
msgstr ""
-#: cp/decl.c:6996
+#: cp/decl.c:7039
msgid "qualifiers are not allowed on declaration of `operator %T'"
msgstr ""
-#: cp/decl.c:7018
+#: cp/decl.c:7061
msgid "member `%D' cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:7027
+#: cp/decl.c:7070
msgid "`%T::%D' is not a valid declarator"
msgstr ""
-#: cp/decl.c:7039
+#: cp/decl.c:7082
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:7043
+#: cp/decl.c:7086
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:7056
+#: cp/decl.c:7099
msgid "virtual outside class declaration"
msgstr ""
-#: cp/decl.c:7115
+#: cp/decl.c:7158
#, c-format
msgid "storage class specified for %s `%s'"
msgstr ""
-#: cp/decl.c:7150
+#: cp/decl.c:7193
#, c-format
msgid "top-level declaration of `%s' specifies `auto'"
msgstr ""
-#: cp/decl.c:7162
+#: cp/decl.c:7205
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:7327
+#: cp/decl.c:7370
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:7330
+#: cp/decl.c:7373
#, c-format
msgid "destructors may not be `%s'"
msgstr ""
-#: cp/decl.c:7351
+#: cp/decl.c:7394
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:7354
+#: cp/decl.c:7397
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:7359
+#: cp/decl.c:7402
#, c-format
msgid "constructors may not be `%s'"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7412
msgid "return value type specifier for constructor ignored"
msgstr ""
-#: cp/decl.c:7388
+#: cp/decl.c:7431
#, c-format
msgid "can't initialize friend function `%s'"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:7392
+#: cp/decl.c:7435
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:7397
+#: cp/decl.c:7440
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:7399
+#: cp/decl.c:7442
#, c-format
msgid "can't define friend function `%s' in a local class definition"
msgstr ""
-#: cp/decl.c:7420
+#: cp/decl.c:7463
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:7440 cp/decl.c:7447
+#: cp/decl.c:7483 cp/decl.c:7490
msgid "cannot declare reference to `%#T'"
msgstr ""
-#: cp/decl.c:7441
+#: cp/decl.c:7484
msgid "cannot declare pointer to `%#T'"
msgstr ""
-#: cp/decl.c:7446
+#: cp/decl.c:7489
msgid "cannot declare pointer to `%#T' member"
msgstr ""
-#: cp/decl.c:7584
+#: cp/decl.c:7627
msgid "extra qualification `%T::' on member `%s' ignored"
msgstr ""
-#: cp/decl.c:7596
+#: cp/decl.c:7639
msgid "cannot declare member function `%T::%s' within `%T'"
msgstr ""
-#: cp/decl.c:7611
+#: cp/decl.c:7654
msgid "cannot declare member `%T::%s' within `%T'"
msgstr ""
-#: cp/decl.c:7691
+#: cp/decl.c:7734
msgid "data member may not have variably modified type `%T'"
msgstr ""
-#: cp/decl.c:7693
+#: cp/decl.c:7736
msgid "parameter may not have variably modified type `%T'"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:7701
+#: cp/decl.c:7744
msgid "only declarations of constructors can be `explicit'"
msgstr ""
-#: cp/decl.c:7709
+#: cp/decl.c:7752
#, c-format
msgid "non-member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:7714
+#: cp/decl.c:7757
#, c-format
msgid "non-object member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:7720
+#: cp/decl.c:7763
#, c-format
msgid "function `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:7725
+#: cp/decl.c:7768
#, c-format
msgid "static `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:7730
+#: cp/decl.c:7773
#, c-format
msgid "const `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:7743
+#: cp/decl.c:7786
msgid "template-id `%D' used as a declarator"
msgstr ""
-#: cp/decl.c:7764
+#: cp/decl.c:7807
msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:7772
+#: cp/decl.c:7815
msgid "%Jtypedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:7818
+#: cp/decl.c:7861
msgid "%Jinvalid type qualifier for non-member function type"
msgstr ""
-#: cp/decl.c:7882
+#: cp/decl.c:7925
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:7887
+#: cp/decl.c:7930
msgid "`inline' specified for friend class declaration"
msgstr ""
-#: cp/decl.c:7895
+#: cp/decl.c:7938
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:7897
+#: cp/decl.c:7940
msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
msgstr ""
-#: cp/decl.c:7901
+#: cp/decl.c:7944
msgid "friend declaration requires class-key, i.e. `friend %#T'"
msgstr ""
-#: cp/decl.c:7914
+#: cp/decl.c:7957
msgid "trying to make class `%T' a friend of global scope"
msgstr ""
-#: cp/decl.c:7925
+#: cp/decl.c:7968
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:7944
+#: cp/decl.c:7987
msgid "abstract declarator `%T' used as declaration"
msgstr ""
-#: cp/decl.c:7956
+#: cp/decl.c:7999
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:7965
+#: cp/decl.c:8008
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:7975
+#: cp/decl.c:8018
msgid "cannot use `::' in parameter declaration"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:8020
+#: cp/decl.c:8063
msgid "invalid use of `::'"
msgstr ""
-#: cp/decl.c:8032
+#: cp/decl.c:8075
msgid "function `%D' cannot be declared friend"
msgstr ""
-#: cp/decl.c:8044
+#: cp/decl.c:8087
msgid "can't make `%D' into a method -- not in a class"
msgstr ""
-#: cp/decl.c:8053
+#: cp/decl.c:8096
msgid "function `%D' declared virtual inside a union"
msgstr ""
-#: cp/decl.c:8065
+#: cp/decl.c:8108
msgid "`%D' cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:8142
+#: cp/decl.c:8185
msgid "field `%D' has incomplete type"
msgstr ""
-#: cp/decl.c:8144
+#: cp/decl.c:8187
msgid "name `%T' has incomplete type"
msgstr ""
-#: cp/decl.c:8153
+#: cp/decl.c:8196
msgid " in instantiation of template `%T'"
msgstr ""
-#: cp/decl.c:8163
+#: cp/decl.c:8206
#, c-format
msgid "`%s' is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:8174
+#: cp/decl.c:8217
msgid "member functions are implicitly friends of their class"
msgstr ""
@@ -14452,102 +14563,102 @@ msgstr ""
#. the rest of the compiler does not correctly
#. handle the initialization unless the member is
#. static so we make it static below.
-#: cp/decl.c:8215
+#: cp/decl.c:8258
msgid "ISO C++ forbids initialization of member `%D'"
msgstr ""
-#: cp/decl.c:8217
+#: cp/decl.c:8260
msgid "making `%D' static"
msgstr ""
-#: cp/decl.c:8240
+#: cp/decl.c:8283
msgid ""
"ISO C++ forbids static data member `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:8280
+#: cp/decl.c:8323
#, c-format
msgid "storage class `auto' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:8282
+#: cp/decl.c:8325
#, c-format
msgid "storage class `register' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:8284
+#: cp/decl.c:8327
#, c-format
msgid "storage class `__thread' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:8295
+#: cp/decl.c:8338
#, c-format
msgid ""
"storage class `static' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:8297
+#: cp/decl.c:8340
#, c-format
msgid ""
"storage class `inline' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:8304
+#: cp/decl.c:8347
#, c-format
msgid "virtual non-class function `%s'"
msgstr ""
-#: cp/decl.c:8334
+#: cp/decl.c:8377
msgid "cannot declare member function `%D' to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:8340
+#: cp/decl.c:8383
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:8368
+#: cp/decl.c:8411
msgid ""
"`static' may not be used when defining (as opposed to declaring) a static "
"data member"
msgstr ""
-#: cp/decl.c:8374
+#: cp/decl.c:8417
msgid "static member `%D' declared `register'"
msgstr ""
-#: cp/decl.c:8379
+#: cp/decl.c:8422
msgid "cannot explicitly declare member `%#D' to have extern linkage"
msgstr ""
-#: cp/decl.c:8521
+#: cp/decl.c:8564
msgid "default argument for `%#D' has type `%T'"
msgstr ""
-#: cp/decl.c:8524
+#: cp/decl.c:8567
msgid "default argument for parameter of type `%T' has type `%T'"
msgstr ""
-#: cp/decl.c:8541
+#: cp/decl.c:8584
msgid "default argument `%E' uses local variable `%D'"
msgstr ""
-#: cp/decl.c:8585
+#: cp/decl.c:8628
#, c-format
msgid "invalid string constant `%E'"
msgstr ""
-#: cp/decl.c:8587
+#: cp/decl.c:8630
msgid ""
"invalid integer constant in parameter list, did you forget to give parameter "
"name?"
msgstr ""
-#: cp/decl.c:8625
+#: cp/decl.c:8668
msgid "parameter `%D' invalidly declared method type"
msgstr ""
-#: cp/decl.c:8649
+#: cp/decl.c:8692
msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgstr ""
@@ -14566,94 +14677,94 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:8808
+#: cp/decl.c:8851
msgid "invalid constructor; you probably meant `%T (const %T&)'"
msgstr ""
-#: cp/decl.c:8948
+#: cp/decl.c:8991
msgid "`%D' must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:8954
+#: cp/decl.c:8997
msgid ""
"`%D' must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:8971
+#: cp/decl.c:9014
msgid "`%D' must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:9006
+#: cp/decl.c:9049
#, c-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:9013
+#: cp/decl.c:9056
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:9063
+#: cp/decl.c:9106
msgid "postfix `%D' must take `int' as its argument"
msgstr ""
-#: cp/decl.c:9067
+#: cp/decl.c:9110
msgid "postfix `%D' must take `int' as its second argument"
msgstr ""
-#: cp/decl.c:9074
+#: cp/decl.c:9117
msgid "`%D' must take either zero or one argument"
msgstr ""
-#: cp/decl.c:9076
+#: cp/decl.c:9119
msgid "`%D' must take either one or two arguments"
msgstr ""
-#: cp/decl.c:9097
+#: cp/decl.c:9140
msgid "prefix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:9103
+#: cp/decl.c:9146
msgid "postfix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:9112
+#: cp/decl.c:9155
msgid "`%D' must take `void'"
msgstr ""
-#: cp/decl.c:9114 cp/decl.c:9122
+#: cp/decl.c:9157 cp/decl.c:9165
msgid "`%D' must take exactly one argument"
msgstr ""
-#: cp/decl.c:9124
+#: cp/decl.c:9167
msgid "`%D' must take exactly two arguments"
msgstr ""
-#: cp/decl.c:9132
+#: cp/decl.c:9175
msgid "user-defined `%D' always evaluates both arguments"
msgstr ""
-#: cp/decl.c:9146
+#: cp/decl.c:9189
msgid "`%D' should return by value"
msgstr ""
-#: cp/decl.c:9158 cp/decl.c:9161
+#: cp/decl.c:9201 cp/decl.c:9204
msgid "`%D' cannot have default arguments"
msgstr ""
-#: cp/decl.c:9221
+#: cp/decl.c:9264
msgid "using typedef-name `%D' after `%s'"
msgstr ""
-#: cp/decl.c:9227
+#: cp/decl.c:9270
msgid "using template type parameter `%T' after `%s'"
msgstr ""
-#: cp/decl.c:9235
+#: cp/decl.c:9278
msgid "`%T' referred to as `%s'"
msgstr ""
-#: cp/decl.c:9241
+#: cp/decl.c:9284
msgid "`%T' referred to as enum"
msgstr ""
@@ -14664,35 +14775,43 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:9256
+#: cp/decl.c:9299
msgid "template argument required for `%s %T'"
msgstr ""
-#: cp/decl.c:9402
+#: cp/decl.c:9445
msgid "use of enum `%#D' without previous declaration"
msgstr ""
-#: cp/decl.c:9479
+#: cp/decl.c:9530
msgid "derived union `%T' invalid"
msgstr ""
-#: cp/decl.c:9532
+#: cp/decl.c:9583
msgid "base type `%T' fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:9540
+#: cp/decl.c:9591
msgid "recursive type `%T' undefined"
msgstr ""
-#: cp/decl.c:9542
+#: cp/decl.c:9593
msgid "duplicate base type `%T' invalid"
msgstr ""
-#: cp/decl.c:9654
+#: cp/decl.c:9671
+msgid "Java class '%T' cannot have multiple bases"
+msgstr ""
+
+#: cp/decl.c:9673
+msgid "Java class '%T' cannot have virtual bases"
+msgstr ""
+
+#: cp/decl.c:9713
msgid "multiple definition of `%#T'"
msgstr ""
-#: cp/decl.c:9655
+#: cp/decl.c:9714
msgid "%Jprevious definition here"
msgstr ""
@@ -14700,47 +14819,47 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:9790
+#: cp/decl.c:9849
msgid "no integral type can represent all of the enumerator values for `%T'"
msgstr ""
-#: cp/decl.c:9880
+#: cp/decl.c:9939
msgid "enumerator value for `%D' not integer constant"
msgstr ""
-#: cp/decl.c:9900
+#: cp/decl.c:9959
msgid "overflow in enumeration values at `%D'"
msgstr ""
-#: cp/decl.c:9969
+#: cp/decl.c:10028
msgid "return type `%#T' is incomplete"
msgstr ""
-#: cp/decl.c:10089
+#: cp/decl.c:10148
msgid "return type for `main' changed to `int'"
msgstr ""
-#: cp/decl.c:10119
+#: cp/decl.c:10178
msgid "`%D' implicitly declared before its definition"
msgstr ""
-#: cp/decl.c:10141 cp/typeck.c:5968
+#: cp/decl.c:10200 cp/typeck.c:6011
msgid "`operator=' should return a reference to `*this'"
msgstr ""
-#: cp/decl.c:10414
+#: cp/decl.c:10472
msgid "parameter `%D' declared void"
msgstr ""
-#: cp/decl.c:10879
+#: cp/decl.c:10938
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:10896
+#: cp/decl.c:10955
msgid "`%D' is already defined in class `%T'"
msgstr ""
-#: cp/decl.c:11109
+#: cp/decl.c:11168
msgid "static member function `%#D' declared with type qualifiers"
msgstr ""
@@ -14749,160 +14868,152 @@ msgstr ""
msgid "duplicate type qualifiers in %s declaration"
msgstr ""
-#: cp/decl2.c:180
-msgid "template `%#D' instantiated in file without #pragma interface"
-msgstr ""
-
-#: cp/decl2.c:185
-msgid "template `%#D' defined in file without #pragma interface"
-msgstr ""
-
-#: cp/decl2.c:346
+#: cp/decl2.c:316
msgid "name missing for member function"
msgstr ""
-#: cp/decl2.c:438 cp/decl2.c:452
+#: cp/decl2.c:408 cp/decl2.c:422
msgid "ambiguous conversion for array subscript"
msgstr ""
-#: cp/decl2.c:446
+#: cp/decl2.c:416
msgid "invalid types `%T[%T]' for array subscript"
msgstr ""
-#: cp/decl2.c:494
+#: cp/decl2.c:464
msgid "type `%#T' argument given to `delete', expected pointer"
msgstr ""
-#: cp/decl2.c:502
+#: cp/decl2.c:472
msgid "anachronistic use of array size in vector delete"
msgstr ""
-#: cp/decl2.c:512
+#: cp/decl2.c:482
msgid ""
"cannot delete a function. Only pointer-to-objects are valid arguments to "
"`delete'"
msgstr ""
-#: cp/decl2.c:519
+#: cp/decl2.c:489
msgid "deleting `%T' is undefined"
msgstr ""
-#: cp/decl2.c:527
+#: cp/decl2.c:497
msgid "deleting array `%#D'"
msgstr ""
#. 14.5.2.2 [temp.mem]
#.
#. A local class shall not have member templates.
-#: cp/decl2.c:560
+#: cp/decl2.c:530
msgid "invalid declaration of member template `%#D' in local class"
msgstr ""
-#: cp/decl2.c:569
+#: cp/decl2.c:539
msgid "invalid use of `virtual' in template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:579 cp/pt.c:2696
+#: cp/decl2.c:549 cp/pt.c:2830
msgid "template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:627
+#: cp/decl2.c:598
msgid "Java method '%D' has non-Java return type `%T'"
msgstr ""
-#: cp/decl2.c:636
+#: cp/decl2.c:614
msgid "Java method '%D' has non-Java parameter type `%T'"
msgstr ""
-#: cp/decl2.c:725
+#: cp/decl2.c:705
msgid "prototype for `%#D' does not match any in class `%T'"
msgstr ""
-#: cp/decl2.c:804
+#: cp/decl2.c:784
msgid "local class `%#T' shall not have static data member `%#D'"
msgstr ""
-#: cp/decl2.c:812
+#: cp/decl2.c:792
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl2.c:815
+#: cp/decl2.c:795
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl2.c:900
+#: cp/decl2.c:878
msgid "member `%D' conflicts with virtual function table field name"
msgstr ""
-#: cp/decl2.c:917
+#: cp/decl2.c:895
msgid "`%D' is already defined in `%T'"
msgstr ""
-#: cp/decl2.c:964
+#: cp/decl2.c:942
msgid "field initializer is not constant"
msgstr ""
-#: cp/decl2.c:988
+#: cp/decl2.c:970
msgid "`asm' specifiers are not permitted on non-static data members"
msgstr ""
-#: cp/decl2.c:1039
+#: cp/decl2.c:1020
msgid "cannot declare `%D' to be a bit-field type"
msgstr ""
-#: cp/decl2.c:1049
+#: cp/decl2.c:1030
msgid "cannot declare bit-field `%D' with function type"
msgstr ""
-#: cp/decl2.c:1056
+#: cp/decl2.c:1037
msgid "`%D' is already defined in the class %T"
msgstr ""
-#: cp/decl2.c:1063
+#: cp/decl2.c:1044
msgid "static member `%D' cannot be a bit-field"
msgstr ""
-#: cp/decl2.c:1122
+#: cp/decl2.c:1103
msgid "initializer specified for non-member function `%D'"
msgstr ""
-#: cp/decl2.c:1126
+#: cp/decl2.c:1107
msgid "invalid initializer for virtual method `%D'"
msgstr ""
-#: cp/decl2.c:1173
+#: cp/decl2.c:1154
msgid "anonymous struct not inside named type"
msgstr ""
-#: cp/decl2.c:1243
+#: cp/decl2.c:1224
msgid "namespace-scope anonymous aggregates must be static"
msgstr ""
-#: cp/decl2.c:1250
+#: cp/decl2.c:1231
msgid "anonymous union with no members"
msgstr ""
-#: cp/decl2.c:1284
+#: cp/decl2.c:1265
msgid "`operator new' must return type `%T'"
msgstr ""
-#: cp/decl2.c:1292
+#: cp/decl2.c:1273
msgid "`operator new' takes type `size_t' (`%T') as first parameter"
msgstr ""
-#: cp/decl2.c:1318
+#: cp/decl2.c:1299
msgid "`operator delete' must return type `%T'"
msgstr ""
-#: cp/decl2.c:1326
+#: cp/decl2.c:1307
msgid "`operator delete' takes type `%T' as first parameter"
msgstr ""
-#: cp/decl2.c:2828
+#: cp/decl2.c:2814
msgid "inline function `%D' used but never defined"
msgstr ""
-#: cp/decl2.c:2974
+#: cp/decl2.c:2960
msgid "default argument missing for parameter %P of `%+#D'"
msgstr ""
@@ -14930,83 +15041,87 @@ msgstr ""
msgid "mixing C++ and Java catches in a single translation unit"
msgstr ""
-#: cp/except.c:627
+#: cp/except.c:630
msgid "throwing NULL, which has integral, not pointer type"
msgstr ""
-#: cp/except.c:714
+#: cp/except.c:653 cp/init.c:2029
+msgid "`%D' should never be overloaded"
+msgstr ""
+
+#: cp/except.c:722
msgid " in thrown expression"
msgstr ""
-#: cp/except.c:835
+#: cp/except.c:843
msgid ""
"expression '%E' of abstract class type '%T' cannot be used in throw-"
"expression"
msgstr ""
-#: cp/except.c:917
+#: cp/except.c:925
msgid "exception of type `%T' will be caught"
msgstr ""
-#: cp/except.c:920
+#: cp/except.c:928
msgid " by earlier handler for `%T'"
msgstr ""
-#: cp/except.c:941
+#: cp/except.c:949
msgid "`...' handler must be the last handler for its try block"
msgstr ""
-#: cp/friend.c:161
+#: cp/friend.c:151
msgid "`%D' is already a friend of class `%T'"
msgstr ""
-#: cp/friend.c:212
+#: cp/friend.c:202
msgid "invalid type `%T' declared `friend'"
msgstr ""
#. [temp.friend]
#. Friend declarations shall not declare partial
#. specializations.
-#: cp/friend.c:228
+#: cp/friend.c:218
msgid "partial specialization `%T' declared `friend'"
msgstr ""
-#: cp/friend.c:238
+#: cp/friend.c:228
msgid "class `%T' is implicitly friends with itself"
msgstr ""
#. template <class T> friend typename S<T>::X;
-#: cp/friend.c:256
+#: cp/friend.c:246
msgid "typename type `%#T' declared `friend'"
msgstr ""
#. template <class T> friend class T;
-#: cp/friend.c:262
+#: cp/friend.c:252
msgid "template parameter type `%T' declared `friend'"
msgstr ""
#. template <class T> friend class A; where A is not a template
-#: cp/friend.c:268
+#: cp/friend.c:258
msgid "`%#T' is not a template"
msgstr ""
-#: cp/friend.c:287
+#: cp/friend.c:277
msgid "`%D' is already a friend of `%T'"
msgstr ""
-#: cp/friend.c:297
+#: cp/friend.c:287
msgid "`%T' is already a friend of `%T'"
msgstr ""
-#: cp/friend.c:394
+#: cp/friend.c:413
msgid "member `%D' declared as friend before type `%T' defined"
msgstr ""
-#: cp/friend.c:449
+#: cp/friend.c:470
msgid "friend declaration `%#D' declares a non-template function"
msgstr ""
-#: cp/friend.c:452
+#: cp/friend.c:473
msgid ""
"(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-"
@@ -15018,81 +15133,85 @@ msgstr ""
msgid "argument to `%s' missing\n"
msgstr ""
-#: cp/init.c:315
+#: cp/init.c:318
msgid "`%D' should be initialized in the member initialization list"
msgstr ""
-#: cp/init.c:365
+#: cp/init.c:368
msgid "default-initialization of `%#D', which has reference type"
msgstr ""
-#: cp/init.c:370
+#: cp/init.c:373
msgid "uninitialized reference member `%D'"
msgstr ""
-#: cp/init.c:508
+#: cp/init.c:511
msgid "`%D' will be initialized after"
msgstr ""
-#: cp/init.c:511
+#: cp/init.c:514
msgid "base `%T' will be initialized after"
msgstr ""
-#: cp/init.c:514
+#: cp/init.c:517
msgid " `%#D'"
msgstr ""
-#: cp/init.c:516
+#: cp/init.c:519
msgid " base `%T'"
msgstr ""
-#: cp/init.c:532
+#: cp/init.c:520
+msgid " when initialized here"
+msgstr ""
+
+#: cp/init.c:536
msgid "multiple initializations given for `%D'"
msgstr ""
-#: cp/init.c:534
+#: cp/init.c:538
msgid "multiple initializations given for base `%T'"
msgstr ""
-#: cp/init.c:601
+#: cp/init.c:605
msgid "initializations for multiple members of `%T'"
msgstr ""
-#: cp/init.c:658
+#: cp/init.c:662
msgid ""
"base class `%#T' should be explicitly initialized in the copy constructor"
msgstr ""
-#: cp/init.c:888 cp/init.c:907
+#: cp/init.c:892 cp/init.c:911
msgid "class `%T' does not have any field named `%D'"
msgstr ""
-#: cp/init.c:894
+#: cp/init.c:898
msgid ""
"`%#D' is a static data member; it can only be initialized at its definition"
msgstr ""
-#: cp/init.c:901
+#: cp/init.c:905
msgid "`%#D' is not a non-static data member of `%T'"
msgstr ""
-#: cp/init.c:940
+#: cp/init.c:944
msgid "unnamed initializer for `%T', which has no base classes"
msgstr ""
-#: cp/init.c:947
+#: cp/init.c:951
msgid "unnamed initializer for `%T', which uses multiple inheritance"
msgstr ""
-#: cp/init.c:1002
+#: cp/init.c:1006
msgid "'%D' is both a direct base and an indirect virtual base"
msgstr ""
-#: cp/init.c:1010
+#: cp/init.c:1014
msgid "type `%D' is not a direct or virtual base of `%T'"
msgstr ""
-#: cp/init.c:1013
+#: cp/init.c:1017
msgid "type `%D' is not a direct base of `%T'"
msgstr ""
@@ -15108,108 +15227,122 @@ msgstr ""
#. COMPLEX zees(1.0, 0.0)[10];
#. }
#.
-#: cp/init.c:1105
+#: cp/init.c:1109
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1298
+#: cp/init.c:1303
msgid "`%T' is not an aggregate type"
msgstr ""
-#: cp/init.c:1319
+#: cp/init.c:1324
msgid "`%T' fails to be an aggregate typedef"
msgstr ""
-#: cp/init.c:1328
+#: cp/init.c:1333
msgid "type `%T' is of non-aggregate type"
msgstr ""
-#: cp/init.c:1420 cp/typeck.c:1767
+#: cp/init.c:1425 cp/typeck.c:1798
msgid "qualified type `%T' does not match destructor name `~%T'"
msgstr ""
-#: cp/init.c:1428
+#: cp/init.c:1433
msgid "incomplete type `%T' does not have member `%D'"
msgstr ""
-#: cp/init.c:1447
+#: cp/init.c:1452
msgid "`%D' is not a member of type `%T'"
msgstr ""
-#: cp/init.c:1466
+#: cp/init.c:1471
msgid "invalid pointer to bit-field `%D'"
msgstr ""
-#: cp/init.c:1565
+#: cp/init.c:1573
msgid "invalid use of non-static member function `%D'"
msgstr ""
-#: cp/init.c:1570 cp/semantics.c:1221
+#: cp/init.c:1579 cp/semantics.c:1236
msgid "invalid use of non-static data member `%D'"
msgstr ""
-#: cp/init.c:1705
+#: cp/init.c:1718
msgid "new of array type fails to specify size"
msgstr ""
-#: cp/init.c:1716
+#: cp/init.c:1729
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:1722
+#: cp/init.c:1735
msgid "zero size array reserves no space"
msgstr ""
-#: cp/init.c:1788
+#: cp/init.c:1801
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:1794
+#: cp/init.c:1807
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:1840
+#: cp/init.c:1853
msgid "call to Java constructor, while `jclass' undefined"
msgstr ""
-#: cp/init.c:1856
+#: cp/init.c:1869
msgid "can't find class$"
msgstr ""
-#: cp/init.c:1982
+#: cp/init.c:1995
msgid "invalid type `void' for new"
msgstr ""
-#: cp/init.c:1992
+#: cp/init.c:2005
msgid "uninitialized const in `new' of `%#T'"
msgstr ""
-#: cp/init.c:2010
+#: cp/init.c:2024
#, c-format
msgid "call to Java constructor with `%s' undefined"
msgstr ""
-#: cp/init.c:2161
+#: cp/init.c:2065
+msgid "request for member `%D' is ambiguous"
+msgstr ""
+
+#: cp/init.c:2189
msgid "ISO C++ forbids initialization in array new"
msgstr ""
-#: cp/init.c:2185
+#: cp/init.c:2213
msgid "ISO C++ forbids aggregate initializer to new"
msgstr ""
-#: cp/init.c:2628
+#: cp/init.c:2658
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:2685
+#: cp/init.c:2715
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:2858
+#: cp/init.c:2876
+msgid "possible problem detected in invocation of delete operator:"
+msgstr ""
+
+#: cp/init.c:2879
+msgid ""
+"neither the destructor nor the class-specific operator delete will be "
+"called, even if they are declared when the class is defined."
+msgstr ""
+
+#: cp/init.c:2900
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3122
+#: cp/init.c:3165
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -15217,42 +15350,42 @@ msgstr ""
msgid "type name expected before `*'"
msgstr ""
-#: cp/lex.c:522
+#: cp/lex.c:501
#, c-format
msgid "junk at end of #pragma %s"
msgstr ""
-#: cp/lex.c:529
+#: cp/lex.c:508
#, c-format
msgid "invalid #pragma %s"
msgstr ""
-#: cp/lex.c:537
+#: cp/lex.c:516
msgid "#pragma vtable no longer supported"
msgstr ""
-#: cp/lex.c:611
+#: cp/lex.c:590
#, c-format
msgid "#pragma implementation for %s appears after file is included"
msgstr ""
-#: cp/lex.c:635
+#: cp/lex.c:614
msgid "junk at end of #pragma GCC java_exceptions"
msgstr ""
-#: cp/lex.c:649
+#: cp/lex.c:628
msgid "`%D' not defined"
msgstr ""
-#: cp/lex.c:652
+#: cp/lex.c:631
msgid "`%D' was not declared in this scope"
msgstr ""
-#: cp/lex.c:660
+#: cp/lex.c:639
msgid "`%D' undeclared (first use this function)"
msgstr ""
-#: cp/lex.c:664
+#: cp/lex.c:643
msgid ""
"(Each undeclared identifier is reported only once for each function it "
"appears in.)"
@@ -15268,48 +15401,48 @@ msgstr ""
#. Note that we have the exact wording of the following message in
#. the manual (trouble.texi, node "Name lookup"), so they need to
#. be kept in synch.
-#: cp/lex.c:695
+#: cp/lex.c:674
msgid ""
"there are no arguments to `%D' that depend on a template parameter, so a "
"declaration of `%D' must be available"
msgstr ""
-#: cp/lex.c:704
+#: cp/lex.c:683
msgid ""
"(if you use `-fpermissive', G++ will accept your code, but allowing the use "
"of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:2000
+#: cp/mangle.c:2036
msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
msgstr ""
-#: cp/mangle.c:2053
+#: cp/mangle.c:2089
msgid "omitted middle operand to `?:' operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2325
+#: cp/mangle.c:2388
msgid "the mangled name of `%D' will change in a future version of GCC"
msgstr ""
-#: cp/method.c:450
+#: cp/method.c:456
msgid "generic thunk code fails for method `%#D' which uses `...'"
msgstr ""
-#: cp/method.c:673
+#: cp/method.c:681
msgid "non-static const member `%#D', can't use default assignment operator"
msgstr ""
-#: cp/method.c:678
+#: cp/method.c:686
msgid ""
"non-static reference member `%#D', can't use default assignment operator"
msgstr ""
-#: cp/name-lookup.c:646
+#: cp/name-lookup.c:649
msgid "`%#D' used prior to declaration"
msgstr ""
-#: cp/name-lookup.c:677
+#: cp/name-lookup.c:680
msgid "redeclaration of `wchar_t' as `%T'"
msgstr ""
@@ -15319,154 +15452,154 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:709
+#: cp/name-lookup.c:712
msgid "invalid redeclaration of `%D'"
msgstr ""
-#: cp/name-lookup.c:710
+#: cp/name-lookup.c:713
msgid "as `%D'"
msgstr ""
-#: cp/name-lookup.c:798
+#: cp/name-lookup.c:801
msgid "type mismatch with previous external decl of `%#D'"
msgstr ""
-#: cp/name-lookup.c:799
+#: cp/name-lookup.c:802
msgid "previous external decl of `%#D'"
msgstr ""
-#: cp/name-lookup.c:841
+#: cp/name-lookup.c:844
msgid "`%D' was previously implicitly declared to return `int'"
msgstr ""
-#: cp/name-lookup.c:899
+#: cp/name-lookup.c:902
msgid "extern declaration of `%#D' doesn't match"
msgstr ""
-#: cp/name-lookup.c:900
+#: cp/name-lookup.c:903
msgid "global declaration `%#D'"
msgstr ""
-#: cp/name-lookup.c:936
+#: cp/name-lookup.c:939
msgid "declaration of `%#D' shadows a parameter"
msgstr ""
-#: cp/name-lookup.c:957
+#: cp/name-lookup.c:960
#, c-format
msgid "declaration of `%s' shadows a member of `this'"
msgstr ""
-#: cp/name-lookup.c:1133
+#: cp/name-lookup.c:1136
msgid "name lookup of `%D' changed"
msgstr ""
-#: cp/name-lookup.c:1135
+#: cp/name-lookup.c:1138
msgid " matches this `%D' under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1137
+#: cp/name-lookup.c:1140
msgid " matches this `%D' under old rules"
msgstr ""
-#: cp/name-lookup.c:1151 cp/name-lookup.c:1158
+#: cp/name-lookup.c:1154 cp/name-lookup.c:1161
msgid "name lookup of `%D' changed for new ISO `for' scoping"
msgstr ""
-#: cp/name-lookup.c:1153
+#: cp/name-lookup.c:1156
msgid " cannot use obsolete binding at `%D' because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1160
+#: cp/name-lookup.c:1163
msgid " using obsolete binding at `%D'"
msgstr ""
-#: cp/name-lookup.c:1213
+#: cp/name-lookup.c:1216
#, c-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1216
+#: cp/name-lookup.c:1219
#, c-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1335
+#: cp/name-lookup.c:1338
msgid "XXX is_class_level != (current_scope == class_scope)\n"
msgstr ""
-#: cp/name-lookup.c:1972
+#: cp/name-lookup.c:1975
msgid "`%#D' hides constructor for `%#T'"
msgstr ""
-#: cp/name-lookup.c:1987
+#: cp/name-lookup.c:1990
msgid "`%#D' conflicts with previous using declaration `%#D'"
msgstr ""
-#: cp/name-lookup.c:1999
+#: cp/name-lookup.c:2002
msgid "previous non-function declaration `%#D'"
msgstr ""
-#: cp/name-lookup.c:2000
+#: cp/name-lookup.c:2003
msgid "conflicts with function declaration `%#D'"
msgstr ""
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2077
+#: cp/name-lookup.c:2080
msgid "a using-declaration cannot specify a template-id. Try `using %D'"
msgstr ""
-#: cp/name-lookup.c:2083
+#: cp/name-lookup.c:2086
msgid "namespace `%D' not allowed in using-declaration"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2091 cp/name-lookup.c:2113 cp/name-lookup.c:3283
+#: cp/name-lookup.c:2094 cp/name-lookup.c:2108 cp/name-lookup.c:3283
msgid "`%T' is not a namespace"
msgstr ""
-#: cp/name-lookup.c:2137
+#: cp/name-lookup.c:2132
msgid "`%D' not declared"
msgstr ""
#. If the OLD_FN was really declared, the
#. declarations don't match.
-#: cp/name-lookup.c:2149 cp/name-lookup.c:2191 cp/name-lookup.c:2216
+#: cp/name-lookup.c:2144 cp/name-lookup.c:2186 cp/name-lookup.c:2211
msgid "`%D' is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:2222
+#: cp/name-lookup.c:2217
msgid "using declaration `%D' introduced ambiguous type `%T'"
msgstr ""
#. Definition isn't the kind we were looking for.
-#: cp/name-lookup.c:2382 cp/name-lookup.c:2401
+#: cp/name-lookup.c:2376 cp/name-lookup.c:2395
msgid "`%#D' redeclared as %C"
msgstr ""
-#: cp/name-lookup.c:2811
+#: cp/name-lookup.c:2805
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:2818
+#: cp/name-lookup.c:2812
msgid "using-declaration cannot name destructor"
msgstr ""
-#: cp/name-lookup.c:2914
+#: cp/name-lookup.c:2908
msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgstr ""
-#: cp/name-lookup.c:2954
+#: cp/name-lookup.c:2948
msgid "`%D' should have been declared inside `%D'"
msgstr ""
-#: cp/name-lookup.c:3017
+#: cp/name-lookup.c:3012
msgid "namespace alias `%D' not allowed here, assuming `%D'"
msgstr ""
#. The parser did not find it, so it's not there.
-#: cp/name-lookup.c:3126
+#: cp/name-lookup.c:3127
msgid "unknown namespace `%D'"
msgstr ""
@@ -15508,7 +15641,7 @@ msgstr ""
#. This happens for A::B where B is a template, and there are no
#. template arguments.
-#: cp/name-lookup.c:3536 cp/typeck.c:1742
+#: cp/name-lookup.c:3536 cp/typeck.c:1773
msgid "invalid use of `%D'"
msgstr ""
@@ -15520,207 +15653,262 @@ msgstr ""
msgid "`%D' undeclared in namespace `%D'"
msgstr ""
-#: cp/name-lookup.c:4037
+#: cp/name-lookup.c:4055
msgid "`%D' is not a function,"
msgstr ""
-#: cp/name-lookup.c:4038
+#: cp/name-lookup.c:4056
msgid " conflict with `%D'"
msgstr ""
-#: cp/name-lookup.c:4773
+#: cp/name-lookup.c:4794
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:4782
+#: cp/name-lookup.c:4803
msgid "XXX leaving pop_everything ()\n"
msgstr ""
-#: cp/parser.c:594
+#: cp/parser.c:609
msgid "invalid token"
msgstr ""
-#: cp/parser.c:1800
+#: cp/parser.c:1806
+msgid "`%D::%D' has not been declared"
+msgstr ""
+
+#: cp/parser.c:1809 cp/semantics.c:2284
+msgid "`::%D' has not been declared"
+msgstr ""
+
+#: cp/parser.c:1811
+msgid "`%D' has not been declared"
+msgstr ""
+
+#: cp/parser.c:1814
+msgid "`%D::%D' %s"
+msgstr ""
+
+#: cp/parser.c:1816
+msgid "`::%D' %s"
+msgstr ""
+
+#: cp/parser.c:1818
+msgid "`%D' %s"
+msgstr ""
+
+#: cp/parser.c:1870
msgid "new types may not be defined in a return type"
msgstr ""
-#: cp/parser.c:1809
+#: cp/parser.c:1888 cp/pt.c:4185
+msgid "`%T' is not a template"
+msgstr ""
+
+#: cp/parser.c:1890
+#, c-format
+msgid "`%s' is not a template"
+msgstr ""
+
+#: cp/parser.c:1892
+msgid "invalid template-id"
+msgstr ""
+
+#: cp/parser.c:1927
#, c-format
msgid "%s cannot appear in a constant-expression"
msgstr ""
#. Issue an error message.
-#: cp/parser.c:1836
+#: cp/parser.c:1954
#, c-format
msgid "`%s' does not name a type"
msgstr ""
-#: cp/parser.c:1867
+#: cp/parser.c:1985
msgid "(perhaps `typename %T::%s' was intended)"
msgstr ""
-#: cp/parser.c:2277
+#: cp/parser.c:2407
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:2286
+#: cp/parser.c:2416
msgid "statement-expressions are allowed only inside functions"
msgstr ""
-#: cp/parser.c:2337
+#: cp/parser.c:2467
msgid "`this' may not be used in this context"
msgstr ""
-#: cp/parser.c:2464
+#: cp/parser.c:2617
msgid "local variable `%D' may not appear in this context"
msgstr ""
-#: cp/parser.c:2820
+#: cp/parser.c:2982
msgid "typedef-name `%D' used as destructor declarator"
msgstr ""
-#: cp/parser.c:3013
-msgid "`%T::%D' is not a class-name or namespace-name"
-msgstr ""
-
-#: cp/parser.c:3017
-msgid "`::%D' is not a class-name or namespace-name"
-msgstr ""
-
-#: cp/parser.c:3021
-msgid "`%D::%D' is not a class-name or namespace-name"
-msgstr ""
-
-#: cp/parser.c:3026
-msgid "`%D' is not a class-name or namespace-name"
-msgstr ""
-
-#: cp/parser.c:3454
+#: cp/parser.c:3627
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:4368
+#: cp/parser.c:4599
msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:4540
+#: cp/parser.c:4775
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:5271
+#: cp/parser.c:5528
#, c-format
msgid "case label `%E' not within a switch statement"
msgstr ""
-#: cp/parser.c:5811
+#: cp/parser.c:6070
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:5931
+#: cp/parser.c:6190
msgid "extra `;'"
msgstr ""
-#: cp/parser.c:6226
+#: cp/parser.c:6485
msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:6360
+#: cp/parser.c:6623
msgid "duplicate `friend'"
msgstr ""
-#: cp/parser.c:6818
+#: cp/parser.c:6772
+msgid "class definition may not be declared a friend"
+msgstr ""
+
+#: cp/parser.c:7086
msgid "only constructors take base initializers"
msgstr ""
-#: cp/parser.c:6869
+#: cp/parser.c:7137
msgid "anachronistic old-style base class initializer"
msgstr ""
#. Warn that we do not support `export'.
-#: cp/parser.c:7259
+#: cp/parser.c:7530
msgid "keyword `export' not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:8411 cp/pt.c:3993
-msgid "`%T' is not a template"
+#. Otherwise, emit an error about the invalid digraph, but continue
+#. parsing because we got our argument list.
+#: cp/parser.c:7890
+msgid "`<::' cannot begin a template-argument list"
+msgstr ""
+
+#: cp/parser.c:7891
+msgid ""
+"`<:' is an alternate spelling for `['. Insert whitespace between `<' and `::'"
+msgstr ""
+
+#: cp/parser.c:7898
+msgid "(if you use `-fpermissive' G++ will accept your code)"
+msgstr ""
+
+#. Explain what went wrong.
+#: cp/parser.c:8070
+msgid "non-template `%D' used as template"
msgstr ""
-#: cp/parser.c:8528
+#: cp/parser.c:8071
+msgid "(use `%T::template %D' to indicate that it is a template)"
+msgstr ""
+
+#: cp/parser.c:9000
msgid "using `typename' outside of template"
msgstr ""
-#: cp/parser.c:8644
+#: cp/parser.c:9122
msgid "expected type-name"
msgstr ""
-#: cp/parser.c:8795
-msgid "comma at end of enumerator list"
+#: cp/parser.c:9181
+msgid "type attributes are honored only at type definition"
msgstr ""
#. [namespace.udecl]
#.
#. A using declaration shall not name a template-id.
-#: cp/parser.c:9071
+#: cp/parser.c:9565
msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:9090
-msgid "`%D::%D' has not been declared"
-msgstr ""
-
-#: cp/parser.c:9093 cp/semantics.c:2291
-msgid "`::%D' has not been declared"
-msgstr ""
-
-#: cp/parser.c:9390
+#: cp/parser.c:9891
msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:9392
+#: cp/parser.c:9893
msgid "attributes are not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:9507
+#: cp/parser.c:10026
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:10625
+#: cp/parser.c:11223
msgid "file ends in default argument"
msgstr ""
-#: cp/parser.c:10681
+#: cp/parser.c:11279
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:10684
+#: cp/parser.c:11282
msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:11613
+#: cp/parser.c:12007
msgid "declaration of `%D' in `%D' which does not enclose `%D'"
msgstr ""
-#: cp/parser.c:11625
+#: cp/parser.c:12020
msgid "extra qualification ignored"
msgstr ""
-#: cp/parser.c:11845
+#: cp/parser.c:12031
+msgid "an explicit specialization must be preceded by 'template <>'"
+msgstr ""
+
+#: cp/parser.c:12311
msgid "extra semicolon"
msgstr ""
-#: cp/parser.c:11863
+#: cp/parser.c:12329
msgid "a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:11894
+#: cp/parser.c:12360
msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:13118
+#: cp/parser.c:12531
+msgid "pure-specifier on function-definition"
+msgstr ""
+
+#: cp/parser.c:12804
+msgid "keyword `typename' not allowed outside of templates"
+msgstr ""
+
+#: cp/parser.c:12806
+msgid ""
+"keyword `typename' not allowed in this context (the base class is implicitly "
+"a type)"
+msgstr ""
+
+#: cp/parser.c:13624
msgid "reference to `%D' is ambiguous"
msgstr ""
-#: cp/parser.c:13290
+#: cp/parser.c:13798
msgid "too few template-parameter-lists"
msgstr ""
@@ -15728,35 +15916,40 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:13305
+#: cp/parser.c:13813
msgid "too many template-parameter-lists"
msgstr ""
#. If begin_function_definition didn't like the definition, skip
#. the entire function.
-#: cp/parser.c:13580
+#: cp/parser.c:14090
msgid "invalid function declaration"
msgstr ""
#. Issue an error message.
-#: cp/parser.c:13617
+#: cp/parser.c:14127
msgid "named return values are no longer supported"
msgstr ""
-#: cp/parser.c:14212
-#, c-format
-msgid "expected %s"
+#: cp/parser.c:14455
+msgid "`>>' should be `> >' within a nested template argument list"
+msgstr ""
+
+#. If this is not a nested template argument list, the '>>' is
+#. a typo for '>'. Emit an error message and continue.
+#: cp/parser.c:14463
+msgid "spurious `>>', use `>' to terminate a template argument list"
msgstr ""
-#: cp/parser.c:14358
+#: cp/parser.c:14950
msgid "`%s' tag used in naming `%#T'"
msgstr ""
-#: cp/parser.c:14378
+#: cp/parser.c:14970
msgid "%D redeclared with different access"
msgstr ""
-#: cp/parser.c:14395
+#: cp/parser.c:14987
msgid "`template' (as a disambiguator) is only allowed within templates"
msgstr ""
@@ -15796,61 +15989,61 @@ msgstr ""
msgid "explicit specialization of non-template `%T'"
msgstr ""
-#: cp/pt.c:933
+#: cp/pt.c:1067
msgid "specialization of %D after instantiation"
msgstr ""
-#: cp/pt.c:1058
+#: cp/pt.c:1192
msgid "%s %+#D"
msgstr ""
-#: cp/pt.c:1107
+#: cp/pt.c:1241
msgid "`%D' is not a function template"
msgstr ""
-#: cp/pt.c:1246
+#: cp/pt.c:1380
msgid "template-id `%D' for `%+D' does not match any template declaration"
msgstr ""
-#: cp/pt.c:1254
+#: cp/pt.c:1388
msgid "ambiguous template specialization `%D' for `%+D'"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:1477 cp/pt.c:1551
+#: cp/pt.c:1611 cp/pt.c:1685
msgid "template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/pt.c:1490
+#: cp/pt.c:1624
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:1496
+#: cp/pt.c:1630
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:1502
+#: cp/pt.c:1636
msgid "too many template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1518
+#: cp/pt.c:1652
msgid "too few template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1535
+#: cp/pt.c:1669
msgid "explicit specialization not preceded by `template <>'"
msgstr ""
-#: cp/pt.c:1548
+#: cp/pt.c:1682
msgid "partial specialization `%D' of function template"
msgstr ""
-#: cp/pt.c:1580
+#: cp/pt.c:1714
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:1584
+#: cp/pt.c:1718
msgid "template specialization with C linkage"
msgstr ""
@@ -15862,106 +16055,106 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:1668
+#: cp/pt.c:1802
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:1712
+#: cp/pt.c:1846
msgid "no member function `%D' declared in `%T'"
msgstr ""
#. There are two many template parameter lists.
-#: cp/pt.c:1867
+#: cp/pt.c:2001
msgid "too many template parameter lists in declaration of `%T'"
msgstr ""
-#: cp/pt.c:1960
+#: cp/pt.c:2094
msgid " shadows template parm `%#D'"
msgstr ""
-#: cp/pt.c:2357
+#: cp/pt.c:2491
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:2361
+#: cp/pt.c:2495
msgid " `%D'"
msgstr ""
-#: cp/pt.c:2373
+#: cp/pt.c:2507
msgid "partial specialization `%T' does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:2398
+#: cp/pt.c:2532
#, c-format
msgid "template argument `%E' involves template parameter(s)"
msgstr ""
-#: cp/pt.c:2442
+#: cp/pt.c:2576
msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgstr ""
-#: cp/pt.c:2527
+#: cp/pt.c:2661
msgid "no default argument for `%D'"
msgstr ""
-#: cp/pt.c:2676
+#: cp/pt.c:2810
msgid "template with C linkage"
msgstr ""
-#: cp/pt.c:2679
+#: cp/pt.c:2813
msgid "template class without a name"
msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:2686
+#: cp/pt.c:2820
msgid "destructor `%D' declared as member template"
msgstr ""
-#: cp/pt.c:2766
+#: cp/pt.c:2900
msgid "`%D' does not declare a template type"
msgstr ""
-#: cp/pt.c:2772
+#: cp/pt.c:2906
msgid "template definition of non-template `%#D'"
msgstr ""
-#: cp/pt.c:2813
+#: cp/pt.c:2947
msgid "expected %d levels of template parms for `%#D', got %d"
msgstr ""
-#: cp/pt.c:2825
+#: cp/pt.c:2959
msgid "got %d template parameters for `%#D'"
msgstr ""
-#: cp/pt.c:2828
+#: cp/pt.c:2962
msgid "got %d template parameters for `%#T'"
msgstr ""
-#: cp/pt.c:2830
+#: cp/pt.c:2964
#, c-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:2910
+#: cp/pt.c:3042
msgid "`%T' is not a template type"
msgstr ""
-#: cp/pt.c:2926
+#: cp/pt.c:3058
msgid "previous declaration `%D'"
msgstr ""
-#: cp/pt.c:2927
+#: cp/pt.c:3059
#, c-format
msgid "used %d template parameter%s instead of %d"
msgstr ""
-#: cp/pt.c:2943
+#: cp/pt.c:3075
msgid "template parameter `%#D'"
msgstr ""
-#: cp/pt.c:2944
+#: cp/pt.c:3076
msgid "redeclared here as `%#D'"
msgstr ""
@@ -15969,275 +16162,285 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:2954
+#: cp/pt.c:3086
msgid "redefinition of default argument for `%#D'"
msgstr ""
-#: cp/pt.c:2955
+#: cp/pt.c:3087
msgid "%J original definition appeared here"
msgstr ""
-#: cp/pt.c:3044
+#: cp/pt.c:3235
#, c-format
msgid "`%E' is not a valid template argument"
msgstr ""
-#: cp/pt.c:3048
+#: cp/pt.c:3239
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:3050
+#: cp/pt.c:3241
msgid "it must be the address of an object with external linkage"
msgstr ""
-#: cp/pt.c:3053
+#: cp/pt.c:3244
msgid "it must be a pointer-to-member of the form `&X::Y'"
msgstr ""
-#: cp/pt.c:3064
+#: cp/pt.c:3255
#, c-format
msgid ""
"string literal %E is not a valid template argument because it is the address "
"of an object with static linkage"
msgstr ""
-#: cp/pt.c:3079
+#: cp/pt.c:3270
#, c-format
msgid "address of non-extern `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:3088
+#: cp/pt.c:3279
#, c-format
msgid "non-constant `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:3096
+#: cp/pt.c:3287
msgid "type '%T' cannot be used as a value for a non-type template-parameter"
msgstr ""
-#: cp/pt.c:3099
+#: cp/pt.c:3290
msgid "invalid use of '%D' as a non-type template-argument"
msgstr ""
-#: cp/pt.c:3101
+#: cp/pt.c:3292
#, c-format
msgid "invalid use of '%E' as a non-type template-argument"
msgstr ""
-#: cp/pt.c:3465
+#: cp/pt.c:3657
#, c-format
msgid "to refer to a type member of a template parameter, use `typename %E'"
msgstr ""
-#: cp/pt.c:3478 cp/pt.c:3496 cp/pt.c:3535
+#: cp/pt.c:3670 cp/pt.c:3688 cp/pt.c:3727
msgid "type/value mismatch at argument %d in template parameter list for `%D'"
msgstr ""
-#: cp/pt.c:3481
+#: cp/pt.c:3673
msgid " expected a constant of type `%T', got `%T'"
msgstr ""
-#: cp/pt.c:3485
+#: cp/pt.c:3677
#, c-format
msgid " expected a class template, got `%E'"
msgstr ""
-#: cp/pt.c:3487
+#: cp/pt.c:3679
#, c-format
msgid " expected a type, got `%E'"
msgstr ""
-#: cp/pt.c:3499
+#: cp/pt.c:3691
msgid " expected a type, got `%T'"
msgstr ""
-#: cp/pt.c:3501
+#: cp/pt.c:3693
msgid " expected a class template, got `%T'"
msgstr ""
-#: cp/pt.c:3537
+#: cp/pt.c:3729
msgid " expected a template of type `%D', got `%D'"
msgstr ""
-#: cp/pt.c:3572
+#: cp/pt.c:3764
msgid "could not convert template argument `%E' to `%T'"
msgstr ""
-#: cp/pt.c:3612
+#: cp/pt.c:3804
#, c-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:3616
+#: cp/pt.c:3808
msgid "provided for `%D'"
msgstr ""
-#: cp/pt.c:3644
+#: cp/pt.c:3836
#, c-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:3865
+#: cp/pt.c:4057
msgid "non-template used as template"
msgstr ""
-#: cp/pt.c:4005
+#: cp/pt.c:4197
msgid "non-template type `%T' used as a template"
msgstr ""
-#: cp/pt.c:4007
+#: cp/pt.c:4199
msgid "for template declaration `%D'"
msgstr ""
-#: cp/pt.c:4636
+#: cp/pt.c:4846
msgid ""
"template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN "
"to increase the maximum) instantiating `%D'"
msgstr ""
-#: cp/pt.c:5073
+#: cp/pt.c:5286
msgid "ambiguous class template instantiation for `%#T'"
msgstr ""
-#: cp/pt.c:5079
+#: cp/pt.c:5292
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:6090 cp/pt.c:6210
+#: cp/pt.c:6291 cp/pt.c:6411
msgid "instantiation of `%D' as type `%T'"
msgstr ""
-#: cp/pt.c:6252
+#: cp/pt.c:6453
msgid "invalid parameter type `%T'"
msgstr ""
-#: cp/pt.c:6254
+#: cp/pt.c:6455
msgid "in declaration `%D'"
msgstr ""
-#: cp/pt.c:6328
+#: cp/pt.c:6529
msgid "creating pointer to member function of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6484
+#: cp/pt.c:6668
msgid "creating array with size zero"
msgstr ""
-#: cp/pt.c:6498
+#: cp/pt.c:6682
#, c-format
msgid "creating array with size zero (`%E')"
msgstr ""
-#: cp/pt.c:6737
+#: cp/pt.c:6921
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:6739
+#: cp/pt.c:6923
msgid "forming %s to reference type `%T'"
msgstr ""
-#: cp/pt.c:6776
+#: cp/pt.c:6960
msgid "creating pointer to member of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6782
+#: cp/pt.c:6966
msgid "creating pointer to member reference type `%T'"
msgstr ""
-#: cp/pt.c:6867
+#: cp/pt.c:7052
msgid "creating array of `%T'"
msgstr ""
-#: cp/pt.c:6910
+#: cp/pt.c:7058
+msgid "creating array of `%T', which is an abstract class type"
+msgstr ""
+
+#: cp/pt.c:7102
msgid "`%T' is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:7023
+#: cp/pt.c:7215
#, c-format
msgid "use of `%s' in template"
msgstr ""
-#: cp/pt.c:7134
+#: cp/pt.c:7327
+#, c-format
+msgid ""
+"dependent-name `%E' is parsed as a non-type, but instantiation yields a type"
+msgstr ""
+
+#: cp/pt.c:7329
#, c-format
-msgid "`%E' names a type, but a non-type is expected"
+msgid "say `typename %E' if a type is meant"
msgstr ""
-#: cp/pt.c:8393
+#: cp/pt.c:8586
msgid "`%T' uses anonymous type"
msgstr ""
-#: cp/pt.c:8395
+#: cp/pt.c:8588
msgid "`%T' uses local type `%T'"
msgstr ""
-#: cp/pt.c:8403
+#: cp/pt.c:8596
msgid "`%T' is a variably modified type"
msgstr ""
-#: cp/pt.c:8414
+#: cp/pt.c:8607
#, c-format
msgid "integral expression `%E' is not constant"
msgstr ""
-#: cp/pt.c:8419
+#: cp/pt.c:8612
msgid " trying to instantiate `%D'"
msgstr ""
-#: cp/pt.c:8938
+#: cp/pt.c:9125
msgid "incomplete type unification"
msgstr ""
-#: cp/pt.c:9885
+#: cp/pt.c:10072
#, c-format
msgid "use of `%s' in template type unification"
msgstr ""
-#: cp/pt.c:10313 cp/pt.c:10385
+#: cp/pt.c:10506 cp/pt.c:10578
msgid "explicit instantiation of non-template `%#D'"
msgstr ""
-#: cp/pt.c:10329 cp/pt.c:10380
+#: cp/pt.c:10522 cp/pt.c:10573
msgid "no matching template for `%D' found"
msgstr ""
-#: cp/pt.c:10335
+#: cp/pt.c:10528
msgid "explicit instantiation of `%#D'"
msgstr ""
-#: cp/pt.c:10372
+#: cp/pt.c:10565
msgid "duplicate explicit instantiation of `%#D'"
msgstr ""
-#: cp/pt.c:10397
+#: cp/pt.c:10587
msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
msgstr ""
-#: cp/pt.c:10401 cp/pt.c:10487
+#: cp/pt.c:10591 cp/pt.c:10672
msgid "storage class `%D' applied to template instantiation"
msgstr ""
-#: cp/pt.c:10454
+#: cp/pt.c:10644
msgid "explicit instantiation of non-template type `%T'"
msgstr ""
-#: cp/pt.c:10468
+#: cp/pt.c:10653
msgid "explicit instantiation of `%#T' before definition of template"
msgstr ""
-#: cp/pt.c:10476
+#: cp/pt.c:10661
#, c-format
msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
msgstr ""
-#: cp/pt.c:10520
+#: cp/pt.c:10705
msgid "duplicate explicit instantiation of `%#T'"
msgstr ""
-#: cp/pt.c:10922
+#: cp/pt.c:11086
msgid "explicit instantiation of `%D' but no definition available"
msgstr ""
-#: cp/pt.c:11342
+#: cp/pt.c:11520
msgid "`%#T' is not a valid type for a template constant parameter"
msgstr ""
@@ -16284,211 +16487,223 @@ msgstr ""
msgid "`%T' is an inaccessible base of `%T'"
msgstr ""
-#: cp/search.c:1746
+#: cp/search.c:1756
msgid "invalid covariant return type for `%#D'"
msgstr ""
-#: cp/search.c:1747 cp/search.c:1753
+#: cp/search.c:1757 cp/search.c:1763
msgid " overriding `%#D'"
msgstr ""
-#: cp/search.c:1751
+#: cp/search.c:1761
msgid "conflicting return type specified for `%#D'"
msgstr ""
-#: cp/search.c:1765
+#: cp/search.c:1775
#, c-format
msgid "looser throw specifier for `%#F'"
msgstr ""
-#: cp/search.c:1766
+#: cp/search.c:1776
#, c-format
msgid " overriding `%#F'"
msgstr ""
#. A static member function cannot match an inherited
#. virtual member function.
-#: cp/search.c:1856
+#: cp/search.c:1866
msgid "`%#D' cannot be declared"
msgstr ""
-#: cp/search.c:1857
+#: cp/search.c:1867
msgid " since `%#D' declared in base class"
msgstr ""
-#: cp/search.c:1934
+#: cp/search.c:1944
msgid "`%#D' needs a final overrider"
msgstr ""
-#: cp/semantics.c:1077
+#: cp/semantics.c:1092
#, c-format
msgid "type of asm operand `%E' could not be determined"
msgstr ""
-#: cp/semantics.c:1218
+#: cp/semantics.c:1233
msgid "invalid use of member `%D' in static member function"
msgstr ""
-#: cp/semantics.c:1222 cp/semantics.c:1261
+#: cp/semantics.c:1237 cp/semantics.c:1276
msgid "from this location"
msgstr ""
-#: cp/semantics.c:1260
+#: cp/semantics.c:1275
msgid "object missing in reference to `%D'"
msgstr ""
-#: cp/semantics.c:1706
+#: cp/semantics.c:1721
msgid "arguments to destructor are not allowed"
msgstr ""
-#: cp/semantics.c:1754
+#: cp/semantics.c:1769
msgid "`this' is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:1760
+#: cp/semantics.c:1775
msgid "invalid use of `this' in non-member function"
msgstr ""
-#: cp/semantics.c:1762
+#: cp/semantics.c:1777
msgid "invalid use of `this' at top level"
msgstr ""
-#: cp/semantics.c:1789
-msgid "calling type `%T' like a method"
-msgstr ""
-
-#: cp/semantics.c:1822
+#: cp/semantics.c:1801
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:1828
+#: cp/semantics.c:1807
msgid "`%E' is not of type `%T'"
msgstr ""
-#: cp/semantics.c:1939
+#: cp/semantics.c:1918
msgid "template type parameters must use the keyword `class' or `typename'"
msgstr ""
-#: cp/semantics.c:1976
-msgid "invalid default template argument"
+#: cp/semantics.c:1962
+msgid ""
+"invalid use of type `%T' as a default value for a template template-parameter"
+msgstr ""
+
+#: cp/semantics.c:1965
+msgid ""
+"invalid use of `%D' as a default value for a template template-parameter"
+msgstr ""
+
+#: cp/semantics.c:1969
+msgid "invalid default argument for a template template parameter"
msgstr ""
-#: cp/semantics.c:2011
+#: cp/semantics.c:2004
msgid "definition of `%#T' inside template parameter list"
msgstr ""
-#: cp/semantics.c:2022
+#: cp/semantics.c:2015
msgid "invalid definition of qualified type `%T'"
msgstr ""
-#: cp/semantics.c:2037
+#: cp/semantics.c:2030
msgid "previous definition of `%#T'"
msgstr ""
-#: cp/semantics.c:2232
+#: cp/semantics.c:2225
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2241
+#: cp/semantics.c:2234
msgid "base class `%T' has cv qualifiers"
msgstr ""
-#: cp/semantics.c:2273
+#: cp/semantics.c:2266
msgid "multiple declarators in template declaration"
msgstr ""
-#: cp/semantics.c:2284
+#: cp/semantics.c:2277
msgid "incomplete type `%T' used in nested name specifier"
msgstr ""
-#: cp/semantics.c:2286 cp/typeck.c:1585
+#: cp/semantics.c:2279 cp/typeck.c:1616
msgid "`%D' is not a member of `%T'"
msgstr ""
-#: cp/semantics.c:2289
+#: cp/semantics.c:2282
msgid "`%D' is not a member of `%D'"
msgstr ""
-#: cp/semantics.c:2539
+#: cp/semantics.c:2400
+msgid ""
+"template parameter `%D' of type `%T' is not allowed in an integral constant "
+"expression because it is not of integral or enumeration type"
+msgstr ""
+
+#: cp/semantics.c:2553
msgid "`%D' cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:2548
+#: cp/semantics.c:2562
msgid "use of namespace `%D' as expression"
msgstr ""
-#: cp/semantics.c:2553
+#: cp/semantics.c:2567
msgid "use of class template `%T' as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:2559
+#: cp/semantics.c:2573
msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:2619
+#: cp/semantics.c:2633
#, c-format
msgid "use of %s from containing function"
msgstr ""
-#: cp/semantics.c:2622
+#: cp/semantics.c:2636
msgid " `%#D' declared here"
msgstr ""
-#: cp/semantics.c:2673
+#: cp/semantics.c:2687
#, c-format
msgid "type of `%E' is unknown"
msgstr ""
-#: cp/tree.c:221
+#: cp/tree.c:222
#, c-format
msgid "non-lvalue in %s"
msgstr ""
-#: cp/tree.c:528
+#: cp/tree.c:539
msgid "`%V' qualifiers cannot be applied to `%T'"
msgstr ""
-#: cp/tree.c:1818
+#: cp/tree.c:1830
#, c-format
msgid "`%s' attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:1847
+#: cp/tree.c:1859
#, c-format
msgid "`%s' attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:1853
+#: cp/tree.c:1865
#, c-format
msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:1877
+#: cp/tree.c:1889
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:1898
+#: cp/tree.c:1910
#, c-format
msgid ""
"can only use `%s' attribute on file-scope definitions of objects of class "
"type"
msgstr ""
-#: cp/tree.c:1906
+#: cp/tree.c:1918
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:1916
+#: cp/tree.c:1928
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:1926
+#: cp/tree.c:1938
#, c-format
msgid "`%s' attribute is not supported on this platform"
msgstr ""
-#: cp/tree.c:2452
+#: cp/tree.c:2459
#, c-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -16507,175 +16722,175 @@ msgstr ""
msgid "%s between distinct pointer-to-member types `%T' and `%T' lacks a cast"
msgstr ""
-#: cp/typeck.c:1206
+#: cp/typeck.c:1235
#, c-format
msgid "invalid application of `%s' to a member function"
msgstr ""
-#: cp/typeck.c:1238
+#: cp/typeck.c:1268
#, c-format
msgid "invalid application of `%s' to a bit-field"
msgstr ""
-#: cp/typeck.c:1243
+#: cp/typeck.c:1273
#, c-format
msgid "ISO C++ forbids applying `%s' to an expression of function type"
msgstr ""
-#: cp/typeck.c:1312
+#: cp/typeck.c:1342
msgid "invalid use of non-static member function"
msgstr ""
-#: cp/typeck.c:1446
+#: cp/typeck.c:1476
msgid "deprecated conversion from string constant to `%T'"
msgstr ""
-#: cp/typeck.c:1556 cp/typeck.c:1839
+#: cp/typeck.c:1587 cp/typeck.c:1874
msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgstr ""
-#: cp/typeck.c:1583
+#: cp/typeck.c:1614
#, c-format
msgid "invalid use of nonstatic data member '%E'"
msgstr ""
-#: cp/typeck.c:1635 cp/typeck.c:1657
+#: cp/typeck.c:1666 cp/typeck.c:1688
msgid "invalid access to non-static data member `%D' of NULL object"
msgstr ""
-#: cp/typeck.c:1637 cp/typeck.c:1659
+#: cp/typeck.c:1668 cp/typeck.c:1690
msgid "(perhaps the `offsetof' macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:1773
-msgid "destructor name `%T' does not match type `%T' of expression"
+#: cp/typeck.c:1804
+msgid "the type being destroyed is '%T', but the destructor refers to `%T'"
msgstr ""
-#: cp/typeck.c:1884
+#: cp/typeck.c:1924
msgid "`%D::%D' is not a member of `%T'"
msgstr ""
-#: cp/typeck.c:1895
+#: cp/typeck.c:1935
msgid "`%T' is not a base of `%T'"
msgstr ""
-#: cp/typeck.c:1914
+#: cp/typeck.c:1954
msgid "'%D' has no member named '%E'"
msgstr ""
-#: cp/typeck.c:1929
+#: cp/typeck.c:1969
msgid "`%D' is not a member template function"
msgstr ""
#. A pointer to incomplete type (other than cv void) can be
#. dereferenced [expr.unary.op]/1
-#: cp/typeck.c:2035
+#: cp/typeck.c:2075
msgid "`%T' is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2060
+#: cp/typeck.c:2100
#, c-format
msgid "invalid use of `%s' on pointer to member"
msgstr ""
-#: cp/typeck.c:2066
+#: cp/typeck.c:2106
msgid "invalid type argument"
msgstr ""
-#: cp/typeck.c:2172
+#: cp/typeck.c:2212
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2183
+#: cp/typeck.c:2223
msgid "subscripting array declared `register'"
msgstr ""
-#: cp/typeck.c:2266
+#: cp/typeck.c:2306
#, c-format
msgid "object missing in use of `%E'"
msgstr ""
-#: cp/typeck.c:2368
+#: cp/typeck.c:2408
msgid "ISO C++ forbids calling `::main' from within program"
msgstr ""
-#: cp/typeck.c:2393
+#: cp/typeck.c:2433
#, c-format
msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgstr ""
-#: cp/typeck.c:2406
+#: cp/typeck.c:2446
#, c-format
msgid "`%E' cannot be used as a function"
msgstr ""
-#: cp/typeck.c:2499
+#: cp/typeck.c:2539
msgid "too many arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:2501 cp/typeck.c:2607
+#: cp/typeck.c:2541 cp/typeck.c:2647
msgid "at this point in file"
msgstr ""
-#: cp/typeck.c:2538
+#: cp/typeck.c:2578
msgid "parameter %P of `%D' has incomplete type `%T'"
msgstr ""
-#: cp/typeck.c:2541
+#: cp/typeck.c:2581
msgid "parameter %P has incomplete type `%T'"
msgstr ""
-#: cp/typeck.c:2605
+#: cp/typeck.c:2645
msgid "too few arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:2750 cp/typeck.c:2760
+#: cp/typeck.c:2790 cp/typeck.c:2800
msgid "assuming cast to type `%T' from overloaded function"
msgstr ""
-#: cp/typeck.c:2821
+#: cp/typeck.c:2861
#, c-format
msgid "division by zero in `%E / 0'"
msgstr ""
-#: cp/typeck.c:2823
+#: cp/typeck.c:2863
#, c-format
msgid "division by zero in `%E / 0.'"
msgstr ""
-#: cp/typeck.c:2852
+#: cp/typeck.c:2892
#, c-format
msgid "division by zero in `%E %% 0'"
msgstr ""
-#: cp/typeck.c:2854
+#: cp/typeck.c:2894
#, c-format
msgid "division by zero in `%E %% 0.'"
msgstr ""
-#: cp/typeck.c:2934
+#: cp/typeck.c:2974
#, c-format
msgid "%s rotate count is negative"
msgstr ""
-#: cp/typeck.c:2937
+#: cp/typeck.c:2977
#, c-format
msgid "%s rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:2971 cp/typeck.c:2976 cp/typeck.c:3067 cp/typeck.c:3072
+#: cp/typeck.c:3011 cp/typeck.c:3016 cp/typeck.c:3107 cp/typeck.c:3112
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:3253
+#: cp/typeck.c:3293
msgid "comparison between types `%#T' and `%#T'"
msgstr ""
-#: cp/typeck.c:3289
+#: cp/typeck.c:3329
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: cp/typeck.c:3354
+#: cp/typeck.c:3394
msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgstr ""
@@ -16683,294 +16898,294 @@ msgstr ""
#. performed. Note that pointer-difference and pointer-addition
#. have already been handled above, and so we don't end up here in
#. that case.
-#: cp/typeck.c:3376
+#: cp/typeck.c:3416
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:3440
+#: cp/typeck.c:3479
msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgstr ""
-#: cp/typeck.c:3442
+#: cp/typeck.c:3481
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:3444
+#: cp/typeck.c:3483
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:3456
+#: cp/typeck.c:3495
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:3511
+#: cp/typeck.c:3550
#, c-format
msgid ""
"invalid use of '%E' to form a pointer-to-member-function. Use a qualified-"
"id."
msgstr ""
-#: cp/typeck.c:3517
+#: cp/typeck.c:3556
#, c-format
msgid ""
"parenthesis around '%E' cannot be used to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:3539
+#: cp/typeck.c:3578
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:3774
+#: cp/typeck.c:3813
#, c-format
msgid "ISO C++ forbids %sing an enum"
msgstr ""
-#: cp/typeck.c:3785
+#: cp/typeck.c:3824
msgid "cannot %s a pointer to incomplete type `%T'"
msgstr ""
-#: cp/typeck.c:3791
+#: cp/typeck.c:3830
msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgstr ""
-#: cp/typeck.c:3816
+#: cp/typeck.c:3855
msgid "cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:3850
+#: cp/typeck.c:3889
msgid "invalid use of `--' on bool variable `%D'"
msgstr ""
#. ARM $3.4
-#: cp/typeck.c:3881
+#: cp/typeck.c:3920
msgid "ISO C++ forbids taking address of function `::main'"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:3952
+#: cp/typeck.c:3991
msgid ""
"ISO C++ forbids taking the address of an unqualified or parenthesized non-"
"static member function to form a pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:3957
+#: cp/typeck.c:3996
msgid ""
"ISO C++ forbids taking the address of a bound member function to form a "
"pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:3985
+#: cp/typeck.c:4024
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4001
+#: cp/typeck.c:4040
msgid "unary `&'"
msgstr ""
-#: cp/typeck.c:4030
+#: cp/typeck.c:4069
msgid "attempt to take address of bit-field structure member `%D'"
msgstr ""
-#: cp/typeck.c:4144
+#: cp/typeck.c:4183
msgid "taking address of destructor"
msgstr ""
-#: cp/typeck.c:4157
+#: cp/typeck.c:4196
msgid "taking address of bound pointer-to-member expression"
msgstr ""
-#: cp/typeck.c:4165
+#: cp/typeck.c:4204
msgid "cannot create pointer to reference member `%D'"
msgstr ""
-#: cp/typeck.c:4227
+#: cp/typeck.c:4266
msgid "cannot take the address of `this', which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:4246
+#: cp/typeck.c:4285
msgid "address requested for `%D', which is declared `register'"
msgstr ""
-#: cp/typeck.c:4314
+#: cp/typeck.c:4353
#, c-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:4387
+#: cp/typeck.c:4426
msgid "%s from type `%T' to type `%T' casts away constness"
msgstr ""
-#: cp/typeck.c:4579
+#: cp/typeck.c:4618
msgid "invalid static_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4619
+#: cp/typeck.c:4658
msgid ""
"invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4639
+#: cp/typeck.c:4678
msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgstr ""
-#: cp/typeck.c:4658
+#: cp/typeck.c:4697
msgid ""
"ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:4664
+#: cp/typeck.c:4703
msgid "invalid reinterpret_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4692
+#: cp/typeck.c:4731
msgid ""
"invalid use of const_cast with type `%T', which is not a pointer, reference, "
"nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:4695
+#: cp/typeck.c:4734
msgid ""
"invalid use of const_cast with type `%T', which is a pointer or reference to "
"a function type"
msgstr ""
-#: cp/typeck.c:4718
+#: cp/typeck.c:4757
msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4735
+#: cp/typeck.c:4774
msgid "invalid const_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:4775 cp/typeck.c:4780
+#: cp/typeck.c:4814 cp/typeck.c:4819
msgid "ISO C++ forbids casting to an array type `%T'"
msgstr ""
-#: cp/typeck.c:4788
+#: cp/typeck.c:4827
msgid "invalid cast to function type `%T'"
msgstr ""
-#: cp/typeck.c:4844
+#: cp/typeck.c:4883
msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgstr ""
-#: cp/typeck.c:4890
+#: cp/typeck.c:4929
msgid "cast from `%T' to `%T' increases required alignment of target type"
msgstr ""
-#: cp/typeck.c:5054
+#: cp/typeck.c:5093
msgid " in evaluation of `%Q(%#T, %#T)'"
msgstr ""
-#: cp/typeck.c:5096
+#: cp/typeck.c:5135
msgid "ISO C++ forbids cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:5160
+#: cp/typeck.c:5208
msgid "incompatible types in assignment of `%T' to `%T'"
msgstr ""
-#: cp/typeck.c:5167
+#: cp/typeck.c:5215
msgid "ISO C++ forbids assignment of arrays"
msgstr ""
-#: cp/typeck.c:5269
+#: cp/typeck.c:5314
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:5277
+#: cp/typeck.c:5322
msgid " in pointer to member conversion"
msgstr ""
#. This is a reinterpret cast, we choose to do nothing.
-#: cp/typeck.c:5287 cp/typeck.c:5302
+#: cp/typeck.c:5332 cp/typeck.c:5347
msgid "pointer to member cast via virtual base `%T'"
msgstr ""
-#: cp/typeck.c:5305
+#: cp/typeck.c:5350
msgid "pointer to member conversion via virtual base `%T'"
msgstr ""
-#: cp/typeck.c:5375
+#: cp/typeck.c:5420
msgid "invalid conversion to type `%T' from type `%T'"
msgstr ""
-#: cp/typeck.c:5531
+#: cp/typeck.c:5576
msgid "passing NULL used for non-pointer %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5534
+#: cp/typeck.c:5579
msgid "%s to non-pointer type `%T' from NULL"
msgstr ""
-#: cp/typeck.c:5542
+#: cp/typeck.c:5587
msgid "passing `%T' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5545
+#: cp/typeck.c:5590
msgid "%s to `%T' from `%T'"
msgstr ""
-#: cp/typeck.c:5555
+#: cp/typeck.c:5600
msgid "passing negative value `%E' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:5558
+#: cp/typeck.c:5603
msgid "%s of negative value `%E' to `%T'"
msgstr ""
-#: cp/typeck.c:5648
+#: cp/typeck.c:5691
msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgstr ""
-#: cp/typeck.c:5651
+#: cp/typeck.c:5694
msgid "cannot convert `%T' to `%T' in %s"
msgstr ""
-#: cp/typeck.c:5728 cp/typeck.c:5730
+#: cp/typeck.c:5771 cp/typeck.c:5773
msgid "in passing argument %P of `%+D'"
msgstr ""
-#: cp/typeck.c:5837
+#: cp/typeck.c:5880
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:5844
+#: cp/typeck.c:5887
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:5856
+#: cp/typeck.c:5899
msgid "reference to local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:5859
+#: cp/typeck.c:5902
msgid "address of local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:5889
+#: cp/typeck.c:5932
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:5897
+#: cp/typeck.c:5940
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:5900
+#: cp/typeck.c:5943
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:5923
+#: cp/typeck.c:5966
msgid "return-statement with no value, in function returning '%T'"
msgstr ""
-#: cp/typeck.c:5940
+#: cp/typeck.c:5983
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:5962
+#: cp/typeck.c:6005
msgid ""
"`operator new' must not return NULL unless it is declared `throw()' (or -"
"fcheck-new is in effect)"
@@ -17016,133 +17231,133 @@ msgstr ""
msgid " since type `%T' has abstract virtual functions"
msgstr ""
-#: cp/typeck2.c:325
+#: cp/typeck2.c:426
msgid "constructor syntax used, but no constructor declared for type `%T'"
msgstr ""
-#: cp/typeck2.c:338
+#: cp/typeck2.c:439
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:443
+#: cp/typeck2.c:544
msgid "initializing array with parameter list"
msgstr ""
-#: cp/typeck2.c:499
+#: cp/typeck2.c:599
msgid "initializer for scalar variable requires one element"
msgstr ""
-#: cp/typeck2.c:506
+#: cp/typeck2.c:606
msgid "braces around scalar initializer for `%T'"
msgstr ""
-#: cp/typeck2.c:509
+#: cp/typeck2.c:609
msgid "ignoring extra initializers for `%T'"
msgstr ""
-#: cp/typeck2.c:521
+#: cp/typeck2.c:621
msgid "variable-sized object of type `%T' may not be initialized"
msgstr ""
-#: cp/typeck2.c:531
+#: cp/typeck2.c:631
msgid "subobject of type `%T' must be initialized by constructor, not by `%E'"
msgstr ""
-#: cp/typeck2.c:596
+#: cp/typeck2.c:696
msgid "aggregate has a partly bracketed initializer"
msgstr ""
-#: cp/typeck2.c:634 cp/typeck2.c:739
+#: cp/typeck2.c:734 cp/typeck2.c:839
msgid "non-trivial labeled initializers"
msgstr ""
-#: cp/typeck2.c:651
+#: cp/typeck2.c:751
msgid "non-empty initializer for array of empty elements"
msgstr ""
-#: cp/typeck2.c:705
+#: cp/typeck2.c:805
msgid "initializer list for object of class with virtual base classes"
msgstr ""
-#: cp/typeck2.c:711
+#: cp/typeck2.c:811
msgid "initializer list for object of class with base classes"
msgstr ""
-#: cp/typeck2.c:717
+#: cp/typeck2.c:817
msgid "initializer list for object using virtual functions"
msgstr ""
-#: cp/typeck2.c:779 cp/typeck2.c:795
+#: cp/typeck2.c:879 cp/typeck2.c:895
msgid "missing initializer for member `%D'"
msgstr ""
-#: cp/typeck2.c:784
+#: cp/typeck2.c:884
msgid "uninitialized const member `%D'"
msgstr ""
-#: cp/typeck2.c:786
+#: cp/typeck2.c:886
msgid "member `%D' with uninitialized const fields"
msgstr ""
-#: cp/typeck2.c:789
+#: cp/typeck2.c:889
msgid "member `%D' is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:836
+#: cp/typeck2.c:936
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:848
+#: cp/typeck2.c:948
msgid "no field `%D' in union being initialized"
msgstr ""
-#: cp/typeck2.c:856
+#: cp/typeck2.c:956
msgid "union `%T' with no named members cannot be initialized"
msgstr ""
-#: cp/typeck2.c:892
+#: cp/typeck2.c:992
msgid "excess elements in aggregate initializer"
msgstr ""
-#: cp/typeck2.c:1000
+#: cp/typeck2.c:1100
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1013
+#: cp/typeck2.c:1113
msgid "base operand of `->' has non-pointer type `%T'"
msgstr ""
-#: cp/typeck2.c:1037
+#: cp/typeck2.c:1137
msgid "result of `operator->()' yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1039
+#: cp/typeck2.c:1139
msgid "base operand of `->' is not a pointer"
msgstr ""
-#: cp/typeck2.c:1062
+#: cp/typeck2.c:1162
msgid "`%E' cannot be used as a member pointer, since it is of type `%T'"
msgstr ""
-#: cp/typeck2.c:1070
+#: cp/typeck2.c:1170
msgid ""
"cannot apply member pointer `%E' to `%E', which is of non-aggregate type `%T'"
msgstr ""
-#: cp/typeck2.c:1080
+#: cp/typeck2.c:1180
msgid "member type `%T::' incompatible with object type `%T'"
msgstr ""
-#: cp/typeck2.c:1296
+#: cp/typeck2.c:1396
msgid "call to function `%D' which throws incomplete type `%#T'"
msgstr ""
-#: cp/typeck2.c:1299
+#: cp/typeck2.c:1399
msgid "call to function which throws incomplete type `%#T'"
msgstr ""
#. XXX Not i18n clean.
-#: cp/cp-tree.h:3752
+#: cp/cp-tree.h:3756
#, c-format
msgid "%s is deprecated, please see the documentation for details"
msgstr ""
@@ -17171,87 +17386,88 @@ msgstr ""
msgid "[REPORT BUG!!]"
msgstr ""
-#: f/com.c:3123
+#: f/com.c:3125
#, no-c-format
msgid "ASSIGN'ed label cannot fit into `%A' at %0 -- using wider sibling"
msgstr ""
-#: f/com.c:11563
+#: f/com.c:11565
msgid "no INTEGER type can hold a pointer on this configuration"
msgstr ""
-#: f/com.c:11837
+#: f/com.c:11839
#, c-format
msgid "configuration: REAL, INTEGER, and LOGICAL are %d bits wide,"
msgstr ""
-#: f/com.c:11839
+#: f/com.c:11841
#, c-format
msgid "and pointers are %d bits wide, but g77 doesn't yet work"
msgstr ""
-#: f/com.c:11841
+#: f/com.c:11843
msgid "properly unless they all are 32 bits wide"
msgstr ""
-#: f/com.c:11842
+#: f/com.c:11844
msgid "Please keep this in mind before you report bugs."
msgstr ""
#. I/O will probably crash.
-#: f/com.c:11850
+#: f/com.c:11852
#, c-format
msgid "configuration: char * holds %d bits, but ftnlen only %d"
msgstr ""
#. ASSIGN 10 TO I will crash.
-#: f/com.c:11859
+#: f/com.c:11861
#, c-format
msgid ""
"configuration: char * holds %d bits, but INTEGER only %d --\n"
" ASSIGN statement might fail"
msgstr ""
-#: f/com.c:13675
+#: f/com.c:13677
msgid "In statement function"
msgstr ""
-#: f/com.c:13685
+#: f/com.c:13687
+#, c-format
msgid "Outside of any program unit:\n"
msgstr ""
-#: f/com.c:15281
+#: f/com.c:15283
#, no-c-format
msgid "%A from %B at %0%C"
msgstr ""
-#: f/com.c:15591
+#: f/com.c:15593
#, no-c-format
msgid "At %0, INCLUDE file %A exists, but is not readable"
msgstr ""
-#: f/com.c:15626
+#: f/com.c:15628
#, no-c-format
msgid "At %0, INCLUDE nesting too deep"
msgstr ""
-#: f/expr.c:8705
+#: f/expr.c:8706
#, no-c-format
msgid "Two arithmetic operators in a row at %0 and %1 -- use parentheses"
msgstr ""
-#: f/expr.c:8755
+#: f/expr.c:8756
#, no-c-format
msgid "Operator at %0 has lower precedence than that at %1 -- use parentheses"
msgstr ""
-#: f/expr.c:9616
+#: f/expr.c:9639
#, no-c-format
msgid ""
"Use .EQV./.NEQV. instead of .EQ./.NE. at %0 for LOGICAL operands at %1 and %2"
msgstr ""
-#: f/expr.c:9987
+#: f/expr.c:10010
#, no-c-format
msgid "Unsupported operand for ** at %1 -- converting to default INTEGER"
msgstr ""
@@ -18428,72 +18644,72 @@ msgstr ""
msgid "%Jfinal field '%D' may not have been initialized"
msgstr ""
-#: java/class.c:514 java/class.c:538
+#: java/class.c:592 java/class.c:616
msgid "internal error - too many interface type"
msgstr ""
-#: java/class.c:637
+#: java/class.c:715
msgid "bad method signature"
msgstr ""
-#: java/class.c:681
+#: java/class.c:759
msgid "misplaced ConstantValue attribute (not in any field)"
msgstr ""
-#: java/class.c:683
+#: java/class.c:761
#, c-format
msgid "duplicate ConstantValue attribute for field '%s'"
msgstr ""
-#: java/class.c:694
+#: java/class.c:772
#, c-format
msgid "ConstantValue attribute of field '%s' has wrong type"
msgstr ""
-#: java/class.c:983
+#: java/class.c:1067
#, c-format
msgid "field '%s' not found in class"
msgstr ""
-#: java/class.c:1240
+#: java/class.c:1324
msgid "%Jabstract method in non-abstract class"
msgstr ""
-#: java/class.c:2033
+#: java/class.c:2140
msgid "%Jnon-static method '%D' overrides static method"
msgstr ""
-#: java/decl.c:1058
+#: java/decl.c:1018
msgid "%J'%D' used prior to declaration"
msgstr ""
-#: java/decl.c:1099
+#: java/decl.c:1059
#, c-format
msgid "declaration of `%s' shadows a parameter"
msgstr ""
-#: java/decl.c:1102
+#: java/decl.c:1062
#, c-format
msgid "declaration of `%s' shadows a symbol from the parameter list"
msgstr ""
-#: java/decl.c:1401
+#: java/decl.c:1361
msgid "%Jlabel '%D' used but not defined"
msgstr ""
-#: java/decl.c:1406
+#: java/decl.c:1366
msgid "%Jlabel '%D' defined but not used"
msgstr ""
-#: java/decl.c:1534
+#: java/decl.c:1494
msgid "%JIn %D: overlapped variable and exception ranges at %d"
msgstr ""
-#: java/decl.c:1612
+#: java/decl.c:1572
msgid "bad type in parameter debug info"
msgstr ""
-#: java/decl.c:1621
+#: java/decl.c:1581
msgid "%Jbad PC range for debug info for local '%D'"
msgstr ""
@@ -18512,80 +18728,80 @@ msgstr ""
msgid "field `%s' not found"
msgstr ""
-#: java/expr.c:1655
+#: java/expr.c:1658
msgid "ret instruction not implemented"
msgstr ""
-#: java/expr.c:1810
+#: java/expr.c:1815
#, c-format
msgid "method '%s' not found in class"
msgstr ""
-#: java/expr.c:2010
+#: java/expr.c:2020
#, c-format
msgid "failed to find class '%s'"
msgstr ""
-#: java/expr.c:2020
+#: java/expr.c:2030
#, c-format
msgid "class '%s' has no method named '%s' matching signature '%s'"
msgstr ""
-#: java/expr.c:2030
+#: java/expr.c:2040
msgid "invokestatic on non static method"
msgstr ""
-#: java/expr.c:2035
+#: java/expr.c:2045
msgid "invokestatic on abstract method"
msgstr ""
-#: java/expr.c:2043
+#: java/expr.c:2053
msgid "invoke[non-static] on static method"
msgstr ""
-#: java/expr.c:2342
+#: java/expr.c:2352
#, c-format
msgid "missing field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2348
+#: java/expr.c:2358
#, c-format
msgid "mismatching signature for field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2370
+#: java/expr.c:2380
msgid "%Jassignment to final field '%D' not in field's class"
msgstr ""
-#: java/expr.c:2375
+#: java/expr.c:2385
msgid "%Jassignment to final static field `%D' not in class initializer"
msgstr ""
-#: java/expr.c:2383
+#: java/expr.c:2393
msgid "%Jassignment to final field '%D' not in constructor"
msgstr ""
-#: java/expr.c:2625
+#: java/expr.c:2636
#, c-format
msgid "can't expand %s"
msgstr ""
-#: java/expr.c:2797
+#: java/expr.c:2808
msgid "invalid PC in line number table"
msgstr ""
-#: java/expr.c:2843
+#: java/expr.c:2854
#, c-format
msgid "unreachable bytecode from %d to before %d"
msgstr ""
-#: java/expr.c:2881
+#: java/expr.c:2892
#, c-format
msgid "unreachable bytecode from %d to the end of the method"
msgstr ""
#. duplicate code from LOAD macro
-#: java/expr.c:3195
+#: java/expr.c:3206
msgid "unrecogized wide sub-instruction"
msgstr ""
@@ -18596,62 +18812,62 @@ msgid ""
"file `%s' used instead"
msgstr ""
-#: java/jcf-parse.c:334
+#: java/jcf-parse.c:330
msgid "bad string constant"
msgstr ""
-#: java/jcf-parse.c:352
+#: java/jcf-parse.c:348
#, c-format
msgid "bad value constant type %d, index %d"
msgstr ""
-#: java/jcf-parse.c:517
+#: java/jcf-parse.c:514
#, c-format
msgid "can't reopen %s: %m"
msgstr ""
-#: java/jcf-parse.c:522
+#: java/jcf-parse.c:519
#, c-format
msgid "can't close %s: %m"
msgstr ""
-#: java/jcf-parse.c:606
+#: java/jcf-parse.c:604
#, c-format
msgid "cannot find file for class %s"
msgstr ""
-#: java/jcf-parse.c:617
+#: java/jcf-parse.c:615
msgid "not a valid Java .class file"
msgstr ""
-#: java/jcf-parse.c:620
+#: java/jcf-parse.c:618
msgid "error while parsing constant pool"
msgstr ""
-#: java/jcf-parse.c:623
+#: java/jcf-parse.c:621
#, c-format
msgid "error in constant pool entry #%d\n"
msgstr ""
#. FIXME - where was first time
-#: java/jcf-parse.c:635
+#: java/jcf-parse.c:633
#, c-format
msgid "reading class %s for the second time from %s"
msgstr ""
-#: java/jcf-parse.c:653
+#: java/jcf-parse.c:651
msgid "error while parsing fields"
msgstr ""
-#: java/jcf-parse.c:656
+#: java/jcf-parse.c:654
msgid "error while parsing methods"
msgstr ""
-#: java/jcf-parse.c:659
+#: java/jcf-parse.c:657
msgid "error while parsing final attributes"
msgstr ""
-#: java/jcf-parse.c:673
+#: java/jcf-parse.c:671
#, c-format
msgid ""
"the `java.lang.Object' that was found in `%s' didn't have the special zero-"
@@ -18660,29 +18876,29 @@ msgid ""
"info page describing how to set the classpath"
msgstr ""
-#: java/jcf-parse.c:756
+#: java/jcf-parse.c:749
msgid "missing Code attribute"
msgstr ""
-#: java/jcf-parse.c:988
+#: java/jcf-parse.c:981
msgid "%Hsource file seen twice on command line and will be compiled only once"
msgstr ""
-#: java/jcf-parse.c:1004
+#: java/jcf-parse.c:997
msgid "no input file specified"
msgstr ""
-#: java/jcf-parse.c:1033
+#: java/jcf-parse.c:1026
#, c-format
msgid "can't close input file %s: %m"
msgstr ""
-#: java/jcf-parse.c:1071
+#: java/jcf-parse.c:1064
#, c-format
msgid "bad zip/jar file %s"
msgstr ""
-#: java/jcf-parse.c:1255
+#: java/jcf-parse.c:1236
#, c-format
msgid "error while reading %s from zip file"
msgstr ""
@@ -18754,11 +18970,11 @@ msgstr ""
msgid "cannot specify `main' class when not linking"
msgstr ""
-#: java/lang.c:735
+#: java/lang.c:740
msgid "can't do dependency tracking with input from stdin"
msgstr ""
-#: java/lang.c:751
+#: java/lang.c:756
msgid "couldn't determine target name for dependency tracking"
msgstr ""
@@ -18781,6 +18997,268 @@ msgstr ""
msgid "internal error - invalid Utf8 name"
msgstr ""
+#: java/parse-scan.y:880
+#: java/parse.y:949 java/parse.y:1290
+#: java/parse.y:1351 java/parse.y:1555
+#: java/parse.y:1777 java/parse.y:1786
+#: java/parse.y:1797 java/parse.y:1808
+#: java/parse.y:1820 java/parse.y:1835
+#: java/parse.y:1852 java/parse.y:1854
+#: java/parse.y:1935 java/parse.y:2106
+#: java/parse.y:2168 java/parse.y:2320
+#: java/parse.y:2332 java/parse.y:2339
+#: java/parse.y:2346 java/parse.y:2357
+#: java/parse.y:2359 java/parse.y:2397
+#: java/parse.y:2399 java/parse.y:2401
+#: java/parse.y:2422 java/parse.y:2424
+#: java/parse.y:2426 java/parse.y:2442
+#: java/parse.y:2444 java/parse.y:2465
+#: java/parse.y:2467 java/parse.y:2469
+#: java/parse.y:2497 java/parse.y:2499
+#: java/parse.y:2501 java/parse.y:2503
+#: java/parse.y:2521 java/parse.y:2523
+#: java/parse.y:2534 java/parse.y:2545
+#: java/parse.y:2556 java/parse.y:2567
+#: java/parse.y:2578 java/parse.y:2591
+#: java/parse.y:2595 java/parse.y:2597
+#: java/parse.y:2610
+msgid "Missing term"
+msgstr ""
+
+#: java/parse-scan.y:882
+#: java/parse.y:721 java/parse.y:759
+#: java/parse.y:784 java/parse.y:970
+#: java/parse.y:1325 java/parse.y:1531
+#: java/parse.y:1533 java/parse.y:1762
+#: java/parse.y:1788 java/parse.y:1799
+#: java/parse.y:1810 java/parse.y:1822
+#: java/parse.y:1837
+msgid "';' expected"
+msgstr ""
+
+#: java/parse.y:719 java/parse.y:757
+msgid "Missing name"
+msgstr ""
+
+#: java/parse.y:782
+msgid "'*' expected"
+msgstr ""
+
+#: java/parse.y:796
+msgid "Class or interface declaration expected"
+msgstr ""
+
+#: java/parse.y:833 java/parse.y:835
+msgid "Missing class name"
+msgstr ""
+
+#: java/parse.y:838 java/parse.y:842
+#: java/parse.y:850 java/parse.y:1010
+#: java/parse.y:1271 java/parse.y:1273
+#: java/parse.y:1597 java/parse.y:1848
+#: java/parse.y:1880 java/parse.y:1942
+msgid "'{' expected"
+msgstr ""
+
+#: java/parse.y:852
+msgid "Missing super class name"
+msgstr ""
+
+#: java/parse.y:862 java/parse.y:878
+msgid "Missing interface name"
+msgstr ""
+
+#: java/parse.y:964
+msgid "Missing variable initializer"
+msgstr ""
+
+#: java/parse.y:981
+msgid "Invalid declaration"
+msgstr ""
+
+#: java/parse.y:984 java/parse.y:1069
+#: java/parse.y:2143 java/parse.y:2165
+#: java/parse.y:2169 java/parse.y:2204
+#: java/parse.y:2281 java/parse.y:2291
+msgid "']' expected"
+msgstr ""
+
+#: java/parse.y:988
+msgid "Unbalanced ']'"
+msgstr ""
+
+#: java/parse.y:1024
+msgid "Invalid method declaration, method name required"
+msgstr ""
+
+#: java/parse.y:1029 java/parse.y:1034
+#: java/parse.y:1039 java/parse.y:2026
+msgid "Identifier expected"
+msgstr ""
+
+#: java/parse.y:1044
+msgid "Invalid method declaration, return type required"
+msgstr ""
+
+#: java/parse.y:1067 java/parse.y:1511
+#: java/parse.y:1518 java/parse.y:1527
+#: java/parse.y:1529 java/parse.y:1557
+#: java/parse.y:1665 java/parse.y:1971
+#: java/parse.y:2024
+msgid "')' expected"
+msgstr ""
+
+#: java/parse.y:1083
+msgid "Missing formal parameter term"
+msgstr ""
+
+#: java/parse.y:1098 java/parse.y:1103
+msgid "Missing identifier"
+msgstr ""
+
+#: java/parse.y:1123 java/parse.y:1132
+msgid "Missing class type term"
+msgstr ""
+
+#: java/parse.y:1288
+msgid "Invalid interface type"
+msgstr ""
+
+#: java/parse.y:1475 java/parse.y:1644
+#: java/parse.y:1646
+msgid "':' expected"
+msgstr ""
+
+#: java/parse.y:1497 java/parse.y:1502
+#: java/parse.y:1507
+msgid "Invalid expression statement"
+msgstr ""
+
+#: java/parse.y:1525 java/parse.y:1553
+#: java/parse.y:1593 java/parse.y:1661
+#: java/parse.y:1729 java/parse.y:1850
+#: java/parse.y:1928 java/parse.y:2018
+#: java/parse.y:2020 java/parse.y:2028
+#: java/parse.y:2264 java/parse.y:2266
+msgid "'(' expected"
+msgstr ""
+
+#: java/parse.y:1595
+msgid "Missing term or ')'"
+msgstr ""
+
+#: java/parse.y:1642
+msgid "Missing or invalid constant expression"
+msgstr ""
+
+#: java/parse.y:1663
+msgid "Missing term and ')' expected"
+msgstr ""
+
+#: java/parse.y:1702
+msgid "Invalid control expression"
+msgstr ""
+
+#: java/parse.y:1704 java/parse.y:1706
+msgid "Invalid update expression"
+msgstr ""
+
+#: java/parse.y:1731
+msgid "Invalid init statement"
+msgstr ""
+
+#: java/parse.y:1931
+msgid "Missing term or ')' expected"
+msgstr ""
+
+#: java/parse.y:1973
+msgid "'class' or 'this' expected"
+msgstr ""
+
+#: java/parse.y:1975 java/parse.y:1977
+msgid "'class' expected"
+msgstr ""
+
+#: java/parse.y:2022
+msgid "')' or term expected"
+msgstr ""
+
+#: java/parse.y:2141
+msgid "'[' expected"
+msgstr ""
+
+#: java/parse.y:2219
+msgid "Field expected"
+msgstr ""
+
+#: java/parse.y:2276 java/parse.y:2286
+msgid "Missing term and ']' expected"
+msgstr ""
+
+#: java/parse.y:2390
+msgid "']' expected, invalid type expression"
+msgstr ""
+
+#: java/parse.y:2393
+msgid "Invalid type expression"
+msgstr ""
+
+#: java/parse.y:2505
+msgid "Invalid reference type"
+msgstr ""
+
+#: java/parse.y:2977
+msgid "Constructor invocation must be first thing in a constructor"
+msgstr ""
+
+#: java/parse.y:2979
+msgid "Only constructors can invoke constructors"
+msgstr ""
+
+#: java/parse.y:2987
+#, c-format
+msgid ": `%s' JDK1.1(TM) feature"
+msgstr ""
+
+#: java/parse.y:3046 java/parse.y:3048
+#, c-format
+msgid ""
+"%s.\n"
+"%s"
+msgstr ""
+
+#: java/parse.y:6908
+#, c-format
+msgid "malformed .zip archive in CLASSPATH: %s"
+msgstr ""
+
+#: java/parse.y:6979
+#, c-format
+msgid ""
+"Can't find default package `%s'. Check the CLASSPATH environment variable "
+"and the access to the archives"
+msgstr ""
+
+#: java/parse.y:12192
+#, c-format
+msgid "missing static field `%s'"
+msgstr ""
+
+#: java/parse.y:12197
+#, c-format
+msgid "not a static field `%s'"
+msgstr ""
+
+#: java/parse.y:12240
+#, c-format
+msgid "No case for %s"
+msgstr ""
+
+#: java/parse.y:13172
+#, c-format
+msgid "unregistered operator %s"
+msgstr ""
+
#: java/typeck.c:530
msgid "junk at end of signature string"
msgstr ""
@@ -18828,13 +19306,13 @@ msgstr ""
msgid "protocol `%s' has circular dependency"
msgstr ""
-#: objc/objc-act.c:1074 objc/objc-act.c:5985
+#: objc/objc-act.c:1074 objc/objc-act.c:5982
#, c-format
msgid "cannot find protocol declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:1408 objc/objc-act.c:2645 objc/objc-act.c:6516
-#: objc/objc-act.c:6825 objc/objc-act.c:6878 objc/objc-act.c:6903
+#: objc/objc-act.c:1408 objc/objc-act.c:2645 objc/objc-act.c:6513
+#: objc/objc-act.c:6822 objc/objc-act.c:6875 objc/objc-act.c:6900
#, c-format
msgid "cannot find interface declaration for `%s'"
msgstr ""
@@ -18859,8 +19337,8 @@ msgstr ""
msgid "`%s' is not an Objective-C class name or alias"
msgstr ""
-#: objc/objc-act.c:2500 objc/objc-act.c:2518 objc/objc-act.c:6772
-#: objc/objc-act.c:7062 objc/objc-act.c:7091
+#: objc/objc-act.c:2500 objc/objc-act.c:2518 objc/objc-act.c:6769
+#: objc/objc-act.c:7059 objc/objc-act.c:7088
msgid "Objective-C declarations may only appear in global scope"
msgstr ""
@@ -18874,7 +19352,7 @@ msgstr ""
msgid "class `%s' already exists"
msgstr ""
-#: objc/objc-act.c:2532 objc/objc-act.c:6794
+#: objc/objc-act.c:2532 objc/objc-act.c:6791
#, c-format
msgid "`%s' redeclared as different kind of symbol"
msgstr ""
@@ -18969,7 +19447,7 @@ msgstr ""
msgid "`...' as arguments.)"
msgstr ""
-#: objc/objc-act.c:6082
+#: objc/objc-act.c:6079
#, c-format
msgid "undeclared selector `%s'"
msgstr ""
@@ -18983,139 +19461,147 @@ 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:6124
+#: objc/objc-act.c:6121
#, c-format
msgid "instance variable `%s' accessed in class method"
msgstr ""
-#: objc/objc-act.c:6330
+#: objc/objc-act.c:6327
#, c-format
msgid "duplicate declaration of method `%c%s'"
msgstr ""
-#: objc/objc-act.c:6371
+#: objc/objc-act.c:6368
#, c-format
msgid "duplicate interface declaration for category `%s(%s)'"
msgstr ""
-#: objc/objc-act.c:6401
+#: objc/objc-act.c:6398
#, c-format
msgid "illegal reference type specified for instance variable `%s'"
msgstr ""
-#: objc/objc-act.c:6417
+#: objc/objc-act.c:6414
#, c-format
msgid "instance variable `%s' has unknown size"
msgstr ""
#. vtable pointers are Real Bad(tm), since Obj-C cannot initialize them
-#: objc/objc-act.c:6431
+#: objc/objc-act.c:6428
#, c-format
msgid "type `%s' has virtual member functions"
msgstr ""
-#: objc/objc-act.c:6432
+#: objc/objc-act.c:6429
#, c-format
msgid "illegal aggregate type `%s' specified for instance variable `%s'"
msgstr ""
-#: objc/objc-act.c:6440
+#: objc/objc-act.c:6437
#, c-format
msgid "type `%s' has a user-defined constructor"
msgstr ""
-#: objc/objc-act.c:6442
+#: objc/objc-act.c:6439
#, c-format
msgid "type `%s' has a user-defined destructor"
msgstr ""
-#: objc/objc-act.c:6443
+#: objc/objc-act.c:6440
msgid ""
"C++ constructors and destructors will not be invoked for Objective-C fields"
msgstr ""
-#: objc/objc-act.c:6493
+#: objc/objc-act.c:6490
#, c-format
msgid "instance variable `%s' is declared private"
msgstr ""
-#: objc/objc-act.c:6542
+#: objc/objc-act.c:6539
#, c-format
msgid "instance variable `%s' is %s; this will be a hard error in the future"
msgstr ""
-#: objc/objc-act.c:6549
+#: objc/objc-act.c:6546
#, c-format
msgid "instance variable `%s' is declared %s"
msgstr ""
-#: objc/objc-act.c:6559
+#: objc/objc-act.c:6556
msgid "static access to object of type `id'"
msgstr ""
-#: objc/objc-act.c:6581 objc/objc-act.c:6669
+#: objc/objc-act.c:6578 objc/objc-act.c:6666
#, c-format
msgid "incomplete implementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:6585 objc/objc-act.c:6674
+#: objc/objc-act.c:6582 objc/objc-act.c:6671
#, c-format
msgid "incomplete implementation of category `%s'"
msgstr ""
-#: objc/objc-act.c:6590 objc/objc-act.c:6679
+#: objc/objc-act.c:6587 objc/objc-act.c:6676
#, c-format
msgid "method definition for `%c%s' not found"
msgstr ""
-#: objc/objc-act.c:6720
+#: objc/objc-act.c:6717
#, c-format
msgid "%s `%s' does not fully implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:6778 objc/objc-act.c:8806
+#: objc/objc-act.c:6775 objc/objc-act.c:8803
msgid "`@end' missing in implementation context"
msgstr ""
-#: objc/objc-act.c:6808
+#: objc/objc-act.c:6805
#, c-format
msgid "reimplementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:6839
+#: objc/objc-act.c:6836
#, c-format
msgid "conflicting super class name `%s'"
msgstr ""
-#: objc/objc-act.c:6841
+#: objc/objc-act.c:6838
#, c-format
msgid "previous declaration of `%s'"
msgstr ""
-#: objc/objc-act.c:6855 objc/objc-act.c:6857
+#: objc/objc-act.c:6852 objc/objc-act.c:6854
#, c-format
msgid "duplicate interface declaration for class `%s'"
msgstr ""
-#: objc/objc-act.c:7124
+#: objc/objc-act.c:7121
#, c-format
msgid "duplicate declaration for protocol `%s'"
msgstr ""
#. Add a readable method name to the warning.
-#: objc/objc-act.c:7616
+#: objc/objc-act.c:7613
msgid "%J%s `%c%s'"
msgstr ""
-#: objc/objc-act.c:7911
+#: objc/objc-act.c:7908
#, c-format
msgid "no super class declared in interface for `%s'"
msgstr ""
-#: objc/objc-act.c:7959
+#: objc/objc-act.c:7956
msgid "[super ...] must appear in a method context"
msgstr ""
+#: objc/objc-parse.y:2700
+msgid "`@end' must appear in an implementation context"
+msgstr ""
+
+#: objc/objc-parse.y:2913
+msgid "method definition not in class context"
+msgstr ""
+
#: options.c:24
msgid "Display this information"
msgstr ""
@@ -19967,70 +20453,72 @@ msgid "Recognize GNU-defined keywords"
msgstr ""
#: options.c:795
-msgid "Output GNU ld formatted global initializers"
-msgstr ""
-
-#: options.c:798
msgid "Generate code for GNU runtime environment"
msgstr ""
-#: options.c:801
+#: options.c:798
msgid "Enable guessing of branch probabilities"
msgstr ""
-#: options.c:816
+#: options.c:813
msgid "Assume normal C execution environment"
msgstr ""
-#: options.c:819
+#: options.c:816
msgid "Enable support for huge objects"
msgstr ""
-#: options.c:822
+#: options.c:819
msgid "Process #ident directives"
msgstr ""
-#: options.c:825
+#: options.c:822
msgid "Perform conversion of conditional jumps to branchless equivalents"
msgstr ""
-#: options.c:828
+#: options.c:825
msgid "Perform conversion of conditional jumps to conditional execution"
msgstr ""
-#: options.c:831
+#: options.c:828
msgid "Export functions even if they can be inlined"
msgstr ""
-#: options.c:834
+#: options.c:831
msgid "Emit implicit instantiations of inline templates"
msgstr ""
-#: options.c:837
+#: options.c:834
msgid "Emit implicit instantiations of templates"
msgstr ""
-#: options.c:840
+#: options.c:837
msgid "Use offset tables for virtual method calls"
msgstr ""
-#: options.c:843
+#: options.c:840
msgid "Do not generate .size directives"
msgstr ""
-#: options.c:846
+#: options.c:843
msgid "Initialize local vars and arrays to zero"
msgstr ""
-#: options.c:849
+#: options.c:846
msgid "Pay attention to the \"inline\" keyword"
msgstr ""
-#: options.c:858
+#: options.c:855
msgid ""
"-finline-limit=<number>\tLimit the size of inlined functions to <number>"
msgstr ""
+#: options.c:858
+msgid ""
+"-finput-charset=<cset> Specify the default character set for source "
+"files."
+msgstr ""
+
#: options.c:861
msgid "Instrument function entry and exit with profiling calls"
msgstr ""
@@ -20154,12 +20642,12 @@ msgid "Enable Objective-C exception and synchronization syntax"
msgstr ""
#: options.c:966
-#: options.c:1293
+#: options.c:1290
msgid "Perform loop unrolling for all loops"
msgstr ""
#: options.c:969
-#: options.c:1296
+#: options.c:1293
msgid "Perform loop unrolling when iteration count is known"
msgstr ""
@@ -20240,619 +20728,610 @@ msgid "Insert arc-based program profiling code"
msgstr ""
#: options.c:1038
-msgid "Insert code to profile values of expressions"
+msgid ""
+"Enable common options for generating profile info for profile feedback "
+"directed optimizations"
+msgstr ""
+
+#: options.c:1041
+msgid ""
+"Enable common options for performing profile feedback directed optimizations"
msgstr ""
#: options.c:1044
+msgid "Insert code to profile values of expressions"
+msgstr ""
+
+#: options.c:1050
msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
msgstr ""
-#: options.c:1047
+#: options.c:1053
msgid "Strength reduce all loop general induction variables"
msgstr ""
-#: options.c:1050
+#: options.c:1056
msgid "Return small aggregates in registers"
msgstr ""
-#: options.c:1053
+#: options.c:1059
msgid "Enables a register move optimization"
msgstr ""
-#: options.c:1056
+#: options.c:1062
msgid "Perform a register renaming optimization pass"
msgstr ""
-#: options.c:1059
+#: options.c:1065
msgid "Reorder basic blocks to improve code placement"
msgstr ""
-#: options.c:1062
+#: options.c:1068
msgid "Reorder functions to improve code placement"
msgstr ""
-#: options.c:1065
+#: options.c:1071
msgid ""
"Used in Fix-and-Continue mode to indicate that object files may be swapped "
"in at runtime"
msgstr ""
-#: options.c:1068
+#: options.c:1074
msgid "Enable automatic template instantiation"
msgstr ""
-#: options.c:1071
+#: options.c:1077
msgid "Add a common subexpression elimination pass after loop optimizations"
msgstr ""
-#: options.c:1074
+#: options.c:1080
msgid "Run the loop optimizer twice"
msgstr ""
-#: options.c:1077
+#: options.c:1083
msgid "Disable optimizations that assume default FP rounding behavior"
msgstr ""
-#: options.c:1080
+#: options.c:1086
msgid "Generate run time type descriptor information"
msgstr ""
-#: options.c:1083
+#: options.c:1089
msgid "Enable scheduling across basic blocks"
msgstr ""
-#: options.c:1086
+#: options.c:1092
msgid "Allow speculative motion of non-loads"
msgstr ""
-#: options.c:1089
+#: options.c:1095
msgid "Allow speculative motion of some loads"
msgstr ""
-#: options.c:1092
+#: options.c:1098
msgid "Allow speculative motion of more loads"
msgstr ""
-#: options.c:1095
+#: options.c:1101
msgid "Allow premature scheduling of queued insns"
msgstr ""
-#: options.c:1098
+#: options.c:1104
msgid ""
"Set dependence distance checking in premature scheduling of queued insns"
msgstr ""
-#: options.c:1101
+#: options.c:1107
msgid ""
"-fsched-stalled-insns-dep=<number> Set dependence distance checking in "
"premature scheduling of queued insns"
msgstr ""
-#: options.c:1104
+#: options.c:1110
msgid ""
"-fsched-stalled-insns=<number> Set number of queued insns that can be "
"prematurely scheduled"
msgstr ""
-#: options.c:1107
+#: options.c:1113
msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler"
msgstr ""
-#: options.c:1110
+#: options.c:1116
msgid "If scheduling post reload, do superblock scheduling"
msgstr ""
-#: options.c:1113
+#: options.c:1119
msgid "If scheduling post reload, do trace scheduling"
msgstr ""
-#: options.c:1116
+#: options.c:1122
msgid "Reschedule instructions before register allocation"
msgstr ""
-#: options.c:1119
+#: options.c:1125
msgid "Reschedule instructions after register allocation"
msgstr ""
-#: options.c:1122
+#: options.c:1128
msgid "Allow appending a second underscore to externals"
msgstr ""
-#: options.c:1125
+#: options.c:1131
msgid "Mark data as shared rather than private"
msgstr ""
-#: options.c:1128
+#: options.c:1134
msgid "Use the same size for double as for float"
msgstr ""
-#: options.c:1131
+#: options.c:1137
msgid "Use the narrowest integer type possible for enumeration types"
msgstr ""
-#: options.c:1134
+#: options.c:1140
msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
msgstr ""
-#: options.c:1140
+#: options.c:1146
msgid "Disable optimizations observable by IEEE signaling NaNs"
msgstr ""
-#: options.c:1143
+#: options.c:1149
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
msgstr ""
-#: options.c:1146
+#: options.c:1152
msgid "Make \"char\" signed by default"
msgstr ""
-#: options.c:1149
+#: options.c:1155
msgid "Do not print names of program units as they are compiled"
msgstr ""
-#: options.c:1152
+#: options.c:1158
msgid "Convert floating point constants to single precision constants"
msgstr ""
-#: options.c:1155
+#: options.c:1161
msgid "Internally convert most source to lowercase"
msgstr ""
-#: options.c:1158
+#: options.c:1164
msgid "Internally preserve source case"
msgstr ""
-#: options.c:1161
-msgid "Internally convert most source to uppercase"
-msgstr ""
-
#: options.c:1167
-msgid "Enable static single assignment optimizations"
-msgstr ""
-
-#: options.c:1170
-msgid "Enable SSA conditional constant propagation"
+msgid "Internally convert most source to uppercase"
msgstr ""
#: options.c:1173
-msgid "Enable aggressive SSA dead code elimination"
-msgstr ""
-
-#: options.c:1176
msgid "Insert stack checking code into the program"
msgstr ""
-#: options.c:1182
+#: options.c:1179
msgid ""
"-fstack-limit-register=<register>\tTrap if the stack goes past <register>"
msgstr ""
-#: options.c:1185
+#: options.c:1182
msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>"
msgstr ""
-#: options.c:1188
+#: options.c:1185
msgid "Display statistics accumulated during compilation"
msgstr ""
-#: options.c:1191
+#: options.c:1188
msgid "Enable assignability checks for stores into object arrays"
msgstr ""
-#: options.c:1194
+#: options.c:1191
msgid "Perform strength reduction optimizations"
msgstr ""
-#: options.c:1197
+#: options.c:1194
msgid "Assume strict aliasing rules apply"
msgstr ""
-#: options.c:1206
+#: options.c:1203
msgid "Symbol names spelled in mixed case"
msgstr ""
-#: options.c:1209
+#: options.c:1206
msgid "Symbol names in lowercase"
msgstr ""
-#: options.c:1212
+#: options.c:1209
msgid "Symbol names in uppercase"
msgstr ""
-#: options.c:1215
+#: options.c:1212
msgid "Check for syntax errors, then stop"
msgstr ""
-#: options.c:1218
+#: options.c:1215
msgid "-ftabstop=<number>\tDistance between tab stops for column reporting"
msgstr ""
-#: options.c:1221
+#: options.c:1218
msgid "-ftemplate-depth-<number>\tSpecify maximum template instantiation depth"
msgstr ""
-#: options.c:1224
+#: options.c:1221
msgid "Create data files needed by \"gcov\""
msgstr ""
-#: options.c:1230
+#: options.c:1227
msgid "Perform jump threading optimizations"
msgstr ""
-#: options.c:1233
+#: options.c:1230
msgid "Report the time taken by each compiler pass"
msgstr ""
-#: options.c:1236
+#: options.c:1233
msgid ""
"-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the "
"default thread-local storage code generation model"
msgstr ""
-#: options.c:1239
+#: options.c:1236
msgid "Perform superblock formation via tail duplication"
msgstr ""
-#: options.c:1242
+#: options.c:1239
msgid "Assume floating-point operations can trap"
msgstr ""
-#: options.c:1245
+#: options.c:1242
msgid "Trap for signed overflow in addition, subtraction and multiplication"
msgstr ""
-#: options.c:1248
+#: options.c:1245
msgid "Make prefix-radix non-decimal constants be typeless"
msgstr ""
-#: options.c:1251
+#: options.c:1248
msgid "Allow all ugly features"
msgstr ""
-#: options.c:1254
+#: options.c:1251
msgid "Hollerith and typeless can be passed as arguments"
msgstr ""
-#: options.c:1257
+#: options.c:1254
msgid "Allow ordinary copying of ASSIGN'ed vars"
msgstr ""
-#: options.c:1260
+#: options.c:1257
msgid "Dummy array dimensioned to (1) is assumed-size"
msgstr ""
-#: options.c:1263
+#: options.c:1260
msgid "Trailing comma in procedure call denotes null argument"
msgstr ""
-#: options.c:1266
+#: options.c:1263
msgid "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z"
msgstr ""
-#: options.c:1269
+#: options.c:1266
msgid "Initialization via DATA and PARAMETER is not type-compatible"
msgstr ""
-#: options.c:1272
+#: options.c:1269
msgid "Allow INTEGER and LOGICAL interchangeability"
msgstr ""
-#: options.c:1275
+#: options.c:1272
msgid "Append underscores to externals"
msgstr ""
-#: options.c:1278
+#: options.c:1275
msgid "Compile whole compilation unit at a time"
msgstr ""
-#: options.c:1281
+#: options.c:1278
msgid "Delete libU77 intrinsics"
msgstr ""
-#: options.c:1284
+#: options.c:1281
msgid "Disable libU77 intrinsics"
msgstr ""
-#: options.c:1287
+#: options.c:1284
msgid "Enable libU77 intrinsics"
msgstr ""
-#: options.c:1290
+#: options.c:1287
msgid "Hide libU77 intrinsics"
msgstr ""
-#: options.c:1299
+#: options.c:1296
msgid "Allow math optimizations that may violate IEEE or ISO standards"
msgstr ""
-#: options.c:1302
+#: options.c:1299
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
msgstr ""
-#: options.c:1305
+#: options.c:1302
msgid "Make \"char\" unsigned by default"
msgstr ""
-#: options.c:1308
+#: options.c:1305
msgid "Perform loop unswitching"
msgstr ""
-#: options.c:1311
+#: options.c:1308
msgid "Just generate unwind tables for exception handling"
msgstr ""
-#: options.c:1317
+#: options.c:1314
msgid "Use __cxa_atexit to register destructors"
msgstr ""
-#: options.c:1323
+#: options.c:1320
msgid "Add extra commentary to assembler output"
msgstr ""
-#: options.c:1326
+#: options.c:1323
msgid "Print g77-specific version information and run internal tests"
msgstr ""
-#: options.c:1329
+#: options.c:1326
msgid "Use expression value profiles in optimizations"
msgstr ""
-#: options.c:1332
+#: options.c:1329
msgid "Discard unused virtual functions"
msgstr ""
-#: options.c:1335
+#: options.c:1332
msgid "Implement vtables using thunks"
msgstr ""
-#: options.c:1338
+#: options.c:1335
msgid "Program is written in VXT (Digital-like) FORTRAN"
msgstr ""
-#: options.c:1341
+#: options.c:1338
msgid "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports"
msgstr ""
-#: options.c:1344
+#: options.c:1341
msgid "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
msgstr ""
-#: options.c:1347
+#: options.c:1344
msgid "Enable non-FORTRAN-77 intrinsics VXT FORTRAN supports"
msgstr ""
-#: options.c:1350
+#: options.c:1347
msgid "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports"
msgstr ""
-#: options.c:1356
+#: options.c:1353
msgid "Emit common-like symbols as weak symbols"
msgstr ""
-#: options.c:1359
+#: options.c:1356
msgid "Construct webs and split unrelated uses of single variable"
msgstr ""
-#: options.c:1362
+#: options.c:1359
msgid ""
"-fwide-exec-charset=<cset>\tConvert all wide strings and character constants "
"to character set <cset>"
msgstr ""
-#: options.c:1365
+#: options.c:1362
msgid "Generate a #line directive pointing at the current working directory"
msgstr ""
-#: options.c:1368
+#: options.c:1365
msgid "Assume signed arithmetic overflow wraps around"
msgstr ""
-#: options.c:1371
+#: options.c:1368
msgid "Store strings in writable data section"
msgstr ""
-#: options.c:1374
+#: options.c:1371
msgid "Emit cross referencing information"
msgstr ""
-#: options.c:1377
+#: options.c:1374
msgid "Print internal debugging-related information"
msgstr ""
-#: options.c:1380
+#: options.c:1377
msgid "Put zero initialized data in the bss section"
msgstr ""
-#: options.c:1383
+#: options.c:1380
msgid ""
"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
msgstr ""
-#: options.c:1386
+#: options.c:1383
msgid "Treat initial values of 0 like non-zero values"
msgstr ""
-#: options.c:1389
+#: options.c:1386
msgid "Generate debug information in default format"
msgstr ""
-#: options.c:1395
+#: options.c:1392
msgid "Generate debug information in COFF format"
msgstr ""
-#: options.c:1398
-msgid "Generate debug information in DWARF v1 format"
-msgstr ""
-
-#: options.c:1401
-msgid "Generate debug information in extended DWARF v1 format"
-msgstr ""
-
-#: options.c:1404
+#: options.c:1395
msgid "Generate debug information in DWARF v2 format"
msgstr ""
-#: options.c:1407
+#: options.c:1398
msgid "Dump declarations to a .decl file"
msgstr ""
-#: options.c:1410
+#: options.c:1401
msgid "Generate debug information in default extended format"
msgstr ""
-#: options.c:1413
+#: options.c:1404
msgid "-gnat<options>\tSpecify options to GNAT"
msgstr ""
-#: options.c:1416
+#: options.c:1407
msgid "Generate debug information in STABS format"
msgstr ""
-#: options.c:1419
+#: options.c:1410
msgid "Generate debug information in extended STABS format"
msgstr ""
-#: options.c:1422
+#: options.c:1413
msgid "Generate debug information in VMS format"
msgstr ""
-#: options.c:1425
+#: options.c:1416
msgid "Generate debug information in XCOFF format"
msgstr ""
-#: options.c:1428
+#: options.c:1419
msgid "Generate debug information in extended XCOFF format"
msgstr ""
-#: options.c:1431
+#: options.c:1422
msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path"
msgstr ""
-#: options.c:1434
+#: options.c:1425
msgid "-imacros <file>\tAccept definition of macros in <file>"
msgstr ""
-#: options.c:1437
+#: options.c:1428
msgid "-include <file>\tInclude the contents of <file> before other files"
msgstr ""
-#: options.c:1440
+#: options.c:1431
msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options"
msgstr ""
-#: options.c:1443
+#: options.c:1434
msgid "-isysroot <dir>\tSet <dir> to be the system root directory"
msgstr ""
-#: options.c:1446
+#: options.c:1437
msgid "-isystem <dir>\tAdd <dir> to the start of the system include path"
msgstr ""
-#: options.c:1449
+#: options.c:1440
msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path"
msgstr ""
-#: options.c:1452
+#: options.c:1443
msgid "-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path"
msgstr ""
-#: options.c:1464
+#: options.c:1455
msgid ""
"Do not search standard system include directories (those specified with -"
"isystem will still be used)"
msgstr ""
-#: options.c:1467
+#: options.c:1458
msgid "Do not search standard system include directories for C++"
msgstr ""
-#: options.c:1473
+#: options.c:1464
msgid "-o <file>\tPlace output into <file>"
msgstr ""
-#: options.c:1476
+#: options.c:1467
msgid "Enable function profiling"
msgstr ""
-#: options.c:1479
+#: options.c:1470
msgid "Issue warnings needed for strict compliance to the standard"
msgstr ""
-#: options.c:1482
+#: options.c:1473
msgid "Like -pedantic but issue them as errors"
msgstr ""
-#: options.c:1485
+#: options.c:1476
msgid "Generate C header of platform-specific features"
msgstr ""
-#: options.c:1488
+#: options.c:1479
msgid "Do not display functions compiled or elapsed time"
msgstr ""
-#: options.c:1491
+#: options.c:1482
msgid "Remap file names when including files"
msgstr ""
-#: options.c:1494
+#: options.c:1485
msgid "Conform to the ISO 1998 C++ standard"
msgstr ""
-#: options.c:1497
+#: options.c:1488
msgid "Conform to the ISO 1990 C standard"
msgstr ""
-#: options.c:1500
+#: options.c:1491
msgid "Conform to the ISO 1999 C standard"
msgstr ""
-#: options.c:1503
-#: options.c:1524
-#: options.c:1527
+#: options.c:1494
+#: options.c:1515
+#: options.c:1518
msgid "Deprecated in favor of -std=c99"
msgstr ""
-#: options.c:1506
+#: options.c:1497
msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgstr ""
-#: options.c:1509
+#: options.c:1500
msgid "Conform to the ISO 1990 C standard with GNU extensions"
msgstr ""
-#: options.c:1512
+#: options.c:1503
msgid "Conform to the ISO 1999 C standard with GNU extensions"
msgstr ""
-#: options.c:1515
+#: options.c:1506
msgid "Deprecated in favor of -std=gnu99"
msgstr ""
-#: options.c:1518
+#: options.c:1509
msgid "Deprecated in favor of -std=c89"
msgstr ""
-#: options.c:1521
+#: options.c:1512
msgid "Conform to the ISO 1990 C standard as amended in 1994"
msgstr ""
-#: options.c:1530
+#: options.c:1521
msgid "Enable traditional preprocessing"
msgstr ""
-#: options.c:1533
+#: options.c:1524
msgid "-trigraphs\tSupport ISO C trigraphs"
msgstr ""
-#: options.c:1536
+#: options.c:1527
msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
-#: options.c:1539
+#: options.c:1530
msgid "Enable verbose output"
msgstr ""
-#: options.c:1545
+#: options.c:1536
msgid "Suppress warnings"
msgstr ""
@@ -20860,11 +21339,11 @@ msgstr ""
msgid " conflicting code gen style switches are used"
msgstr ""
-#: gcc.c:742
+#: gcc.c:743
msgid "GCC does not support -C or -CC without -E"
msgstr ""
-#: gcc.c:766 java/jvspec.c:80 ada/lang-specs.h:34
+#: gcc.c:767 java/jvspec.c:80 ada/lang-specs.h:34
msgid "-pg and -fomit-frame-pointer are incompatible"
msgstr ""
@@ -20884,23 +21363,15 @@ msgstr ""
msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr ""
-#: java/lang-specs.h:34
-msgid "-fjni and -femit-class-files are incompatible"
-msgstr ""
-
-#: java/lang-specs.h:35
-msgid "-fjni and -femit-class-file are incompatible"
-msgstr ""
-
-#: java/lang-specs.h:36 java/lang-specs.h:37
-msgid "-femit-class-file should used along with -fsyntax-only"
+#: config/i386/mingw32.h:58 config/i386/cygwin.h:70
+msgid "shared and mdll are not compatible"
msgstr ""
#: config/mips/mips.h:975
msgid "-pipe is not supported"
msgstr ""
-#: config/mips/mips.h:1129 config/arc/arc.h:63
+#: config/mips/mips.h:1130 config/arc/arc.h:63
msgid "may not use both -EB and -EL"
msgstr ""
@@ -20940,20 +21411,24 @@ msgstr ""
msgid "-private_bundle not allowed with -dynamiclib"
msgstr ""
-#: config/i386/mingw32.h:58 config/i386/cygwin.h:70
-msgid "shared and mdll are not compatible"
+#: config/vax/netbsd-elf.h:42
+msgid "The -shared option is not currently supported for VAX ELF."
msgstr ""
-#: treelang/lang-specs.h:52
-msgid "-pg or -p and -fomit-frame-pointer are incompatible"
+#: config/i386/sco5.h:191
+msgid "-pg not supported on this platform"
msgstr ""
-#: config/mips/r3900.h:35
-msgid "-mhard-float not supported"
+#: config/i386/sco5.h:192
+msgid "-p and -pp specified - pick one"
msgstr ""
-#: config/mips/r3900.h:37
-msgid "-msingle-float and -msoft-float can not both be specified"
+#: config/i386/sco5.h:266
+msgid "-G and -static are mutually exclusive"
+msgstr ""
+
+#: treelang/lang-specs.h:52
+msgid "-pg or -p and -fomit-frame-pointer are incompatible"
msgstr ""
#: f/lang-specs.h:38
@@ -20964,17 +21439,21 @@ msgstr ""
msgid "GCC does not support -CC without using -E"
msgstr ""
-#: config/rs6000/sysv4.h:1080 config/i386/freebsd-aout.h:215
-msgid "`-p' not supported; use `-pg' and gprof(1)"
+#: config/mips/r3900.h:35
+msgid "-mhard-float not supported"
msgstr ""
-#: config/vax/netbsd-elf.h:42
-msgid "The -shared option is not currently supported for VAX ELF."
+#: config/mips/r3900.h:37
+msgid "-msingle-float and -msoft-float can not both be specified"
msgstr ""
-#: config/sparc/linux64.h:207 config/sparc/linux64.h:218
+#: config/rs6000/sysv4.h:1094 config/i386/freebsd-aout.h:215
+msgid "`-p' not supported; use `-pg' and gprof(1)"
+msgstr ""
+
+#: config/sparc/linux64.h:208 config/sparc/linux64.h:219
#: config/sparc/netbsd-elf.h:140 config/sparc/netbsd-elf.h:159
-#: config/sparc/sol2-bi.h:166 config/sparc/sol2-bi.h:176
+#: config/sparc/sol2-bi.h:195 config/sparc/sol2-bi.h:205
msgid "may not use both -m32 and -m64"
msgstr ""
@@ -20982,24 +21461,29 @@ msgstr ""
msgid "profiling not supported with -mg\n"
msgstr ""
-#: config/i386/sco5.h:192
-msgid "-pg not supported on this platform"
+#: config/i386/cygwin.h:29
+msgid "mno-cygwin and mno-win32 are not compatible"
msgstr ""
-#: config/i386/sco5.h:193
-msgid "-p and -pp specified - pick one"
+#: ada/lang-specs.h:36
+msgid "one of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada"
msgstr ""
-#: config/i386/sco5.h:267
-msgid "-G and -static are mutually exclusive"
+#: config/sparc/sol2-bi.h:167 config/sparc/sol2-bi.h:172
+#: config/sparc/sol2-gld-bi.h:17 config/sparc/sol2-gld-bi.h:22
+msgid "does not support multilib"
msgstr ""
-#: config/i386/cygwin.h:29
-msgid "mno-cygwin and mno-win32 are not compatible"
+#: java/lang-specs.h:34
+msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
-#: ada/lang-specs.h:36
-msgid "one of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada"
+#: java/lang-specs.h:35
+msgid "-fjni and -femit-class-file are incompatible"
+msgstr ""
+
+#: java/lang-specs.h:36 java/lang-specs.h:37
+msgid "-femit-class-file should used along with -fsyntax-only"
msgstr ""
#: config/mcore/mcore.h:65
diff --git a/gcc/postreload.c b/gcc/postreload.c
index 8d288d8f91e..6f567f07f9e 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -1,6 +1,6 @@
/* Perform simple optimizations to clean up the result of reload.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -423,6 +423,15 @@ reload_cse_simplify_operands (rtx insn, rtx testreg)
|| GET_CODE (SET_SRC (set)) == ZERO_EXTEND
|| GET_CODE (SET_SRC (set)) == SIGN_EXTEND)
; /* Continue ordinary processing. */
+#ifdef CANNOT_CHANGE_MODE_CLASS
+ /* If the register cannot change mode to word_mode, it follows that
+ it cannot have been used in word_mode. */
+ else if (GET_CODE (SET_DEST (set)) == REG
+ && CANNOT_CHANGE_MODE_CLASS (GET_MODE (SET_DEST (set)),
+ word_mode,
+ REGNO_REG_CLASS (REGNO (SET_DEST (set)))))
+ ; /* Continue ordinary processing. */
+#endif
/* If this is a straight load, make the extension explicit. */
else if (GET_CODE (SET_DEST (set)) == REG
&& recog_data.n_operands == 2
diff --git a/gcc/ra.h b/gcc/ra.h
index a746d91a559..252d85cadbd 100644
--- a/gcc/ra.h
+++ b/gcc/ra.h
@@ -1,5 +1,5 @@
/* Graph coloring register allocator
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Matz <matz@suse.de>
and Daniel Berlin <dan@cgsoftware.com>.
diff --git a/gcc/real.c b/gcc/real.c
index 5d9bc41dcb7..d70aaad69f6 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -1769,7 +1769,7 @@ real_from_string (REAL_VALUE_TYPE *r, const char *str)
else if (*str == '+')
str++;
- if (str[0] == '0' && str[1] == 'x')
+ if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
{
/* Hexadecimal floating point. */
int pos = SIGNIFICAND_BITS - 4, d;
@@ -3230,19 +3230,24 @@ static void
encode_ibm_extended (const struct real_format *fmt, long *buf,
const REAL_VALUE_TYPE *r)
{
- REAL_VALUE_TYPE u, v;
+ REAL_VALUE_TYPE u, normr, v;
const struct real_format *base_fmt;
base_fmt = fmt->qnan_msb_set ? &ieee_double_format : &mips_double_format;
+ /* Renormlize R before doing any arithmetic on it. */
+ normr = *r;
+ if (normr.class == rvc_normal)
+ normalize (&normr);
+
/* u = IEEE double precision portion of significand. */
- u = *r;
+ u = normr;
round_for_format (base_fmt, &u);
encode_ieee_double (base_fmt, &buf[0], &u);
- if (r->class == rvc_normal)
+ if (u.class == rvc_normal)
{
- do_add (&v, r, &u, 1);
+ do_add (&v, &normr, &u, 1);
round_for_format (base_fmt, &v);
encode_ieee_double (base_fmt, &buf[2], &v);
}
diff --git a/gcc/recog.c b/gcc/recog.c
index d2338e6c9c2..2224c5ac8f4 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1,6 +1,6 @@
/* Subroutines used by or related to instruction recognition.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998
- 1999, 2000, 2001, 2002, 2003, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 8ebae4be70c..9a6c89bf310 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -1,6 +1,6 @@
/* Register to Stack convert for GNU compiler.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/regmove.c b/gcc/regmove.c
index d5b35cc1d4d..8dcd05486f2 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -1,6 +1,6 @@
/* Move registers around to reduce number of move instructions needed.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/reload.c b/gcc/reload.c
index 361a5029cee..e105ac9a715 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1,6 +1,6 @@
/* Search an insn for pseudo regs that must be in hard regs and are not.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -173,6 +173,7 @@ struct decomposition
static rtx secondary_memlocs[NUM_MACHINE_MODES];
static rtx secondary_memlocs_elim[NUM_MACHINE_MODES][MAX_RECOG_OPERANDS];
+static int secondary_memlocs_elim_used = 0;
#endif
/* The instruction we are doing reloads for;
@@ -644,6 +645,8 @@ get_secondary_mem (rtx x ATTRIBUTE_UNUSED, enum machine_mode mode,
}
secondary_memlocs_elim[(int) mode][opnum] = loc;
+ if (secondary_memlocs_elim_used <= (int)mode)
+ secondary_memlocs_elim_used = (int)mode + 1;
return loc;
}
@@ -2540,7 +2543,12 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
/* The eliminated forms of any secondary memory locations are per-insn, so
clear them out here. */
- memset (secondary_memlocs_elim, 0, sizeof secondary_memlocs_elim);
+ if (secondary_memlocs_elim_used)
+ {
+ memset (secondary_memlocs_elim, 0,
+ sizeof (secondary_memlocs_elim[0]) * secondary_memlocs_elim_used);
+ secondary_memlocs_elim_used = 0;
+ }
#endif
/* Dispose quickly of (set (reg..) (reg..)) if both have hard regs and it
@@ -2605,7 +2613,17 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
if (i == noperands - 1)
abort ();
- commutative = i;
+ /* We currently only support one commutative pair of
+ operands. Some existing asm code currently uses more
+ than one pair. Previously, that would usually work,
+ but sometimes it would crash the compiler. We
+ continue supporting that case as well as we can by
+ silently ignoring all but the first pair. In the
+ future we may handle it correctly. */
+ if (commutative < 0)
+ commutative = i;
+ else if (!this_insn_is_asm)
+ abort ();
}
else if (ISDIGIT (c))
{
@@ -2979,9 +2997,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
break;
case '%':
- /* The last operand should not be marked commutative. */
- if (i != noperands - 1)
- commutative = i;
+ /* We only support one commutative marker, the first
+ one. We already set commutative above. */
break;
case '?':
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 9a0ad894746..d53b27be6d6 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -1,6 +1,6 @@
/* Reload pseudo regs into hard regs for insns that require hard regs.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -4316,6 +4316,7 @@ reload_reg_free_p (unsigned int regno, int opnum, enum reload_type type)
/* In use for anything means we can't use it for RELOAD_OTHER. */
if (TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ || TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno))
return 0;
@@ -4494,6 +4495,7 @@ reload_reg_reaches_end_p (unsigned int regno, int opnum, enum reload_type type)
return 0;
return (! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ && ! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
&& ! TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
&& ! TEST_HARD_REG_BIT (reload_reg_used, regno));
@@ -6963,25 +6965,25 @@ emit_reload_insns (struct insn_chain *chain)
reloads for the operand. The RELOAD_OTHER output reloads are
output in descending order by reload number. */
- emit_insn_before (other_input_address_reload_insns, insn);
- emit_insn_before (other_input_reload_insns, insn);
+ emit_insn_before_sameloc (other_input_address_reload_insns, insn);
+ emit_insn_before_sameloc (other_input_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
- emit_insn_before (inpaddr_address_reload_insns[j], insn);
- emit_insn_before (input_address_reload_insns[j], insn);
- emit_insn_before (input_reload_insns[j], insn);
+ emit_insn_before_sameloc (inpaddr_address_reload_insns[j], insn);
+ emit_insn_before_sameloc (input_address_reload_insns[j], insn);
+ emit_insn_before_sameloc (input_reload_insns[j], insn);
}
- emit_insn_before (other_operand_reload_insns, insn);
- emit_insn_before (operand_reload_insns, insn);
+ emit_insn_before_sameloc (other_operand_reload_insns, insn);
+ emit_insn_before_sameloc (operand_reload_insns, insn);
for (j = 0; j < reload_n_operands; j++)
{
- rtx x = emit_insn_after (outaddr_address_reload_insns[j], insn);
- x = emit_insn_after (output_address_reload_insns[j], x);
- x = emit_insn_after (output_reload_insns[j], x);
- emit_insn_after (other_output_reload_insns[j], x);
+ rtx x = emit_insn_after_sameloc (outaddr_address_reload_insns[j], insn);
+ x = emit_insn_after_sameloc (output_address_reload_insns[j], x);
+ x = emit_insn_after_sameloc (output_reload_insns[j], x);
+ emit_insn_after_sameloc (other_output_reload_insns[j], x);
}
/* For all the spill regs newly reloaded in this instruction,
diff --git a/gcc/reorg.c b/gcc/reorg.c
index ec15a4fb6bc..e4585c9f468 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -1,6 +1,6 @@
/* Perform instruction reorganizations for delay slot filling.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu).
Hacked by Michael Tiemann (tiemann@cygnus.com).
diff --git a/gcc/rtl.h b/gcc/rtl.h
index cd7b2aeac81..993f3117a03 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1573,6 +1573,19 @@ extern rtx next_label (rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);
+#define emit_insn_before_sameloc(INSN, BEFORE) \
+ emit_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
+#define emit_jump_insn_before_sameloc(INSN, BEFORE) \
+ emit_jump_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
+#define emit_call_insn_before_sameloc(INSN, BEFORE) \
+ emit_call_insn_before_setloc (INSN, BEFORE, INSN_LOCATOR (BEFORE))
+#define emit_insn_after_sameloc(INSN, AFTER) \
+ emit_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
+#define emit_jump_insn_after_sameloc(INSN, AFTER) \
+ emit_jump_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
+#define emit_call_insn_after_sameloc(INSN, AFTER) \
+ emit_call_insn_after_setloc (INSN, AFTER, INSN_LOCATOR (AFTER))
+
/* In cfglayout.c */
extern tree choose_inner_scope (tree, tree);
extern int insn_line (rtx);
@@ -1998,6 +2011,7 @@ extern int cse_main (rtx, int, int, FILE *);
#endif
extern void cse_end_of_basic_block (rtx, struct cse_basic_block_data *,
int, int, int);
+extern void cse_condition_code_reg (void);
/* In jump.c */
extern int comparison_dominates_p (enum rtx_code, enum rtx_code);
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 15c4879eb0b..fcb426db3de 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1,6 +1,6 @@
/* Analyze RTL for C-Compiler
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -133,10 +133,14 @@ rtx_unstable_p (rtx x)
int
rtx_varies_p (rtx x, int for_alias)
{
- RTX_CODE code = GET_CODE (x);
+ RTX_CODE code;
int i;
const char *fmt;
+ if (!x)
+ return 0;
+
+ code = GET_CODE (x);
switch (code)
{
case MEM:
@@ -2703,7 +2707,6 @@ int
replace_label (rtx *x, void *data)
{
rtx l = *x;
- rtx tmp;
rtx old_label = ((replace_label_data *) data)->r1;
rtx new_label = ((replace_label_data *) data)->r2;
bool update_label_nuses = ((replace_label_data *) data)->update_label_nuses;
@@ -2711,12 +2714,10 @@ replace_label (rtx *x, void *data)
if (l == NULL_RTX)
return 0;
- if (GET_CODE (l) == MEM
- && (tmp = XEXP (l, 0)) != NULL_RTX
- && GET_CODE (tmp) == SYMBOL_REF
- && CONSTANT_POOL_ADDRESS_P (tmp))
+ if (GET_CODE (l) == SYMBOL_REF
+ && CONSTANT_POOL_ADDRESS_P (l))
{
- rtx c = get_pool_constant (tmp);
+ rtx c = get_pool_constant (l);
if (rtx_referenced_p (old_label, c))
{
rtx new_c, new_l;
@@ -2732,7 +2733,7 @@ replace_label (rtx *x, void *data)
/* Add the new constant NEW_C to constant pool and replace
the old reference to constant by new reference. */
- new_l = force_const_mem (get_pool_mode (tmp), new_c);
+ new_l = XEXP (force_const_mem (get_pool_mode (l), new_c), 0);
*x = replace_rtx (l, l, new_l);
}
return 0;
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 6c92f968d38..9bc7a11182f 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1,7 +1,7 @@
/* Instruction scheduling pass. This file computes dependencies between
instructions.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c
index c553cddd183..c95bb4537e6 100644
--- a/gcc/sched-ebb.c
+++ b/gcc/sched-ebb.c
@@ -1,6 +1,6 @@
/* Instruction scheduling pass.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index b6380ebb821..3d620475315 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -1,6 +1,6 @@
/* Output sdb-format symbol table information from GNU compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 51585c80b0b..00e85c6aad1 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2539,6 +2539,8 @@ simplify_relational_operation (enum rtx_code code, enum machine_mode mode,
&& ! ((GET_CODE (op0) == REG || GET_CODE (trueop0) == CONST_INT)
&& (GET_CODE (op1) == REG || GET_CODE (trueop1) == CONST_INT))
&& 0 != (tem = simplify_binary_operation (MINUS, mode, op0, op1))
+ /* We cannot do this for == or != if tem is a nonzero address. */
+ && ((code != EQ && code != NE) || ! nonzero_address_p (tem))
&& code != GTU && code != GEU && code != LTU && code != LEU)
return simplify_relational_operation (signed_condition (code),
mode, tem, const0_rtx);
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 6288341a48f..0fde5581367 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -529,9 +529,9 @@ expand_computed_goto (tree exp)
{
cfun->computed_goto_common_reg = copy_to_mode_reg (Pmode, x);
cfun->computed_goto_common_label = gen_label_rtx ();
- emit_label (cfun->computed_goto_common_label);
do_pending_stack_adjust ();
+ emit_label (cfun->computed_goto_common_label);
emit_indirect_jump (cfun->computed_goto_common_reg);
current_function_has_computed_jump = 1;
@@ -1106,8 +1106,7 @@ expand_asm (tree string, int vol)
if (TREE_CODE (string) == ADDR_EXPR)
string = TREE_OPERAND (string, 0);
- body = gen_rtx_ASM_INPUT (VOIDmode,
- ggc_strdup (TREE_STRING_POINTER (string)));
+ body = gen_rtx_ASM_INPUT (VOIDmode, TREE_STRING_POINTER (string));
MEM_VOLATILE_P (body) = vol;
@@ -1669,7 +1668,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode
: GET_MODE (output_rtx[0])),
- ggc_strdup (TREE_STRING_POINTER (string)),
+ TREE_STRING_POINTER (string),
empty_string, 0, argvec, constraintvec,
locus.file, locus.line);
@@ -1750,8 +1749,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
ASM_OPERANDS_INPUT (body, i) = op;
ASM_OPERANDS_INPUT_CONSTRAINT_EXP (body, i)
- = gen_rtx_ASM_INPUT (TYPE_MODE (type),
- ggc_strdup (constraints[i + noutputs]));
+ = gen_rtx_ASM_INPUT (TYPE_MODE (type), constraints[i + noutputs]);
if (decl_conflicts_with_clobbers_p (val, clobbered_regs))
clobber_conflict_found = 1;
@@ -1792,7 +1790,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
if (noutputs == 1 && nclobbers == 0)
{
- ASM_OPERANDS_OUTPUT_CONSTRAINT (body) = ggc_strdup (constraints[0]);
+ ASM_OPERANDS_OUTPUT_CONSTRAINT (body) = constraints[0];
emit_insn (gen_rtx_SET (VOIDmode, output_rtx[0], body));
}
@@ -1820,9 +1818,8 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
output_rtx[i],
gen_rtx_ASM_OPERANDS
(GET_MODE (output_rtx[i]),
- ggc_strdup (TREE_STRING_POINTER (string)),
- ggc_strdup (constraints[i]),
- i, argvec, constraintvec,
+ TREE_STRING_POINTER (string),
+ constraints[i], i, argvec, constraintvec,
locus.file, locus.line));
MEM_VOLATILE_P (SET_SRC (XVECEXP (body, 0, i))) = vol;
diff --git a/gcc/system.h b/gcc/system.h
index f402c99e84a..c5792b6543d 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -1,6 +1,7 @@
/* Get common system includes and various definitions and declarations based
on autoconf macros.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -485,16 +486,21 @@ extern int snprintf (char *, size_t, const char *, ...);
#define HOST_BIT_BUCKET "/dev/null"
#endif
-/* Be conservative and only use enum bitfields with GCC. Likewise for
- char bitfields.
+/* Be conservative and only use enum bitfields with GCC.
FIXME: provide a complete autoconf test for buggy enum bitfields. */
#if (GCC_VERSION > 2000)
#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
-#define CHAR_BITFIELD __extension__ unsigned char
#else
#define ENUM_BITFIELD(TYPE) unsigned int
-#define CHAR_BITFIELD unsigned int
+#endif
+
+/* We only use bool bitfields with gcc3. Some supposedly C99
+ compilers don't handle them correctly. */
+#if (GCC_VERSION >= 3000)
+#define BOOL_BITFIELD _Bool
+#else
+#define BOOL_BITFIELD unsigned int
#endif
#ifndef offsetof
diff --git a/gcc/target-def.h b/gcc/target-def.h
index 9ff668d3f14..321cd08a2c1 100644
--- a/gcc/target-def.h
+++ b/gcc/target-def.h
@@ -1,5 +1,5 @@
/* Default initializers for a generic GCC target.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
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
@@ -314,6 +314,10 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define TARGET_ENCODE_SECTION_INFO default_encode_section_info
#endif
+#define TARGET_FIXED_CONDITION_CODE_REGS hook_bool_uintp_uintp_false
+
+#define TARGET_CC_MODES_COMPATIBLE default_cc_modes_compatible
+
#define TARGET_MACHINE_DEPENDENT_REORG 0
#define TARGET_BUILD_BUILTIN_VA_LIST std_build_builtin_va_list
@@ -380,6 +384,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
TARGET_RTX_COSTS, \
TARGET_ADDRESS_COST, \
TARGET_DWARF_REGISTER_SPAN, \
+ TARGET_FIXED_CONDITION_CODE_REGS, \
+ TARGET_CC_MODES_COMPATIBLE, \
TARGET_MACHINE_DEPENDENT_REORG, \
TARGET_BUILD_BUILTIN_VA_LIST, \
TARGET_GET_PCH_VALIDITY, \
diff --git a/gcc/target.h b/gcc/target.h
index f63b078aaf6..21a12f0ec3a 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -1,5 +1,5 @@
/* Data structure definitions for a generic GCC target.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
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
@@ -377,6 +377,23 @@ struct gcc_target
hook should return NULL_RTX. */
rtx (* dwarf_register_span) (rtx);
+ /* Fetch the fixed register(s) which hold condition codes, for
+ targets where it makes sense to look for duplicate assignments to
+ the condition codes. This should return true if there is such a
+ register, false otherwise. The arguments should be set to the
+ fixed register numbers. Up to two condition code registers are
+ supported. If there is only one for this target, the int pointed
+ at by the second argument should be set to -1. */
+ bool (* fixed_condition_code_regs) (unsigned int *, unsigned int *);
+
+ /* If two condition code modes are compatible, return a condition
+ code mode which is compatible with both, such that a comparison
+ done in the returned mode will work for both of the original
+ modes. If the condition code modes are not compatible, return
+ VOIDmode. */
+ enum machine_mode (* cc_modes_compatible) (enum machine_mode,
+ enum machine_mode);
+
/* Do machine-dependent code transformations. Called just before
delayed-branch scheduling. */
void (* machine_dependent_reorg) (void);
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 79a3a7d5a13..308ada6057c 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1,5 +1,5 @@
/* Default target hook functions.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -70,6 +70,14 @@ default_external_libcall (rtx fun ATTRIBUTE_UNUSED)
#endif
}
+enum machine_mode
+default_cc_modes_compatible (enum machine_mode m1, enum machine_mode m2)
+{
+ if (m1 == m2)
+ return m1;
+ return VOIDmode;
+}
+
bool
default_promote_function_args (tree fntype ATTRIBUTE_UNUSED)
{
diff --git a/gcc/targhooks.h b/gcc/targhooks.h
index e5c5a2a5596..63525fe04b7 100644
--- a/gcc/targhooks.h
+++ b/gcc/targhooks.h
@@ -1,5 +1,5 @@
/* Default target hook functions.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -20,6 +20,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
extern void default_external_libcall (rtx);
+extern enum machine_mode default_cc_modes_compatible (enum machine_mode,
+ enum machine_mode);
+
extern bool default_promote_function_args (tree);
extern bool default_promote_function_return (tree);
extern bool default_promote_prototypes (tree);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d08f1feee16..59d61d26181 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,624 @@
+2004-03-01 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14369
+ * g++.dg/template/cond4.C: New test.
+
+ PR c++/14360
+ * g++.old-deja/g++.ns/koenig5.C: Remove some error markers.
+
+ PR c++/14361
+ * g++.dg/parse/defarg7.C: New test.
+
+ PR c++/14359
+ * g++.dg/template/friend26.C: New test.
+
+ PR c++/14324
+ * g++.dg/abi/mangle21.C: New test.
+
+ PR c++/14260
+ * g++.dg/parse/constructor2.C: New test.
+
+ PR c++/14337
+ * g++.dg/template/sfinae1.C: New test.
+
+2004-02-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR middle-end/13448
+ * gcc.dg/inline-5.c: New test.
+ * gcc.dg/always-inline.c: Split out tests into ...
+ * gcc.dg/always-inline2.c: ... this and ...
+ * gcc.dg/always-inline3.c: ... this.
+
+ PR debug/12103
+ * g++.dg/debug/crash1.C: New test.
+
+2004-02-27 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14284
+ * g++.dg/template/ttp8.C: New test.
+
+2004-02-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14278
+ * g++.dg/parse/comma1.C: New test.
+
+2004-02-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * gcc.dg/builtins-config.h: Use #elif.
+
+2004-02-26 Michael Matz <matz@suse.de>
+
+ * gcc.dg/20000724-1.c: Add regparm attribute to decl and def.
+ * gcc.dg/991214-1.c: Likewise.
+ * gcc.dg/i386-asm-1.c: Likewise.
+
+2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14246
+ * g++.dg/other/crash-3.C: New test.
+
+2004-02-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * g++.dg/opt/inline4.C (dg-final): Robustify regexp.
+ * g++.dg/opt/inline6.C (dg-final): Robustify regexp.
+
+ * gcc.dg/builtins-config.h (HAVE_C99_RUNTIME): Don't define for PA
+ HP-UX.
+
+2004-02-25 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * g++.dg/eh/simd-1.C: Tweak again for SPARC.
+ * g++.dg/eh/simd-2.C: Likewise.
+
+2004-02-24 Michael Matz <matz@suse.de>
+
+ * gcc.dg/i386-regparm.c: New test.
+
+2004-02-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/14106
+ * g++.dg/ext/typeof9.C: New test.
+
+2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14250
+ * g++.dg/other/switch1.C: New test.
+
+2004-02-23 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/cast-function-1.c: Adjust for new informative message.
+ * gcc.dg/va-arg-1.c: Likewise.
+
+2004-02-22 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/14209
+ * gcc.c-torture/execute/20040218-1.c: New test.
+
+2004-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * lib/target-supports.exp (check_alias_available): Don't mangle
+ function `g' in test program.
+
+2004-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * lib/target-supports.exp (check_profiling_available): Check
+ argument to determine whether we support a profiling type.
+ * lib/gcc-dg.exp (dg-require-profiling): Pass argument to
+ check_profiling_available.
+ * g++.dg/bprob/bprob.exp: Likewise
+ * g77.dg/bprob/bprob.exp: Likewise.
+ * gcc.misc-tests/bprob.exp: Likewise.
+ * g++.old-deja/g++.law/profile1.C: Pass profiling type to
+ dg-require-profiling and delete expected error handling.
+ * gcc.dg/20021014-1.c: Likewise.
+ * gcc.dg/nest.c: Likewise.
+
+2004-02-20 Falk Hueffner <falk@debian.org>
+
+ PR target/14201
+ * gcc.c-torture/compile/fix-trunc-mem-1.c: New test.
+
+2004-02-20 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14173
+ * g++.dg/ext/packed5.C: New test.
+
+ PR c++/14199
+ * g++.dg/warn/Wunused-5.C: New test.
+
+2004-02-20 Josef Zlomek <zlomekj@suse.cz>
+
+ Backport from mainline:
+ 2004-02-14 Josef Zlomek <zlomekj@suse.cz>
+
+ * gcc.c-torture/compile/20040214-2.c: New test.
+
+2004-02-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14186
+ * g++.dg/lookup/member1.C: New test.
+
+2004-02-19 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/parse/attr-ctor1.C: XFAIL on hppa.
+ * g++.dg/opt/template1.C: Robustify assembler regexp
+
+2004-02-19 Alan Modra <amodra@bigpond.net.au>
+
+ * gcc.c-torture/compile/complex-1.c: New.
+
+2004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14181
+ * g++.dg/parse/new2.C: New test.
+
+2004-02-18 Paul Brook <paul@codesourcery.com>
+
+ * gcc.c-torture/compile/libcall-1.c: New test.
+
+2004-02-18 Paul Brook <paul@codesourcery.com>
+
+ PR debug/12934
+ * gcc.dg/debug/debug-7.c: New test.
+
+2004-02-17 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/11326
+ * g++.dg/abi/structret1.C: New test.
+
+2004-02-17 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gcc.dg/20040217-1.c: New test.
+
+2004-02-17 Zack Weinberg <zack@codesourcery.com>
+
+ * gcc.c-torture/execute/990208-1.x: Delete.
+
+2004-02-17 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20040208-2.x: New file.
+
+2004-02-17 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/i386-cpuid.h (bit_CMOV): Define.
+ (i386_cpuid): No need to test if cpuid is available on AMD64.
+ Fix assembly, so that it works onboth i386 and AMD64.
+ * gcc.dg/i386-sse-6.c: Include stdio.h, stdlib.h and string.h.
+ (vecInLong): Fix s[] member type to unsigned int.
+ (vecInWord): Remove type.
+ (mmx_tests, sse_tests, dump64_16, dump64_32, dump64_64): Remove.
+ (a64, b64, c64, d64, e64): Remove.
+ (main): Pass if CPU has no MMX, SSE, SSE2 or CMOV support.
+ Remove unused variable. Remove initialization of removed variables.
+ Don't call mmx_tests nor sse_tests.
+ (reference_mmx, reference_sse): Remove.
+ (check): Add return stmt.
+ * gcc.dg/i386-sse-7.c: New test.
+ * gcc.dg/i386-mmx-4.c: New test.
+
+2004-02-16 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/execute/20020720-1.x: XFAIL on SPARC with -fPIC.
+
+2004-02-15 Roger Sayle <roger@eyesopen.com>
+
+ Backport from mainline:
+
+ 2004-02-07 Roger Sayle <roger@eyesopen.com>
+ PR middle-end/13696
+ * g++.dg/opt/fold1.C: New test case.
+
+ 2004-02-09 Roger Sayle <roger@eyesopen.com>
+ * gcc.c-torture/compile/20040209-1.c: New test case.
+
+ 2004-02-10 Paolo Bonzini <bonzini@gnu.org>
+ PR c/14092
+ * gcc.dg/pr14092-1.c: New testcase.
+
+2004-02-15 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13971
+ * g++.dg/expr/cond4.C: New test.
+
+ PR c++/14086
+ * g++.dg/lookup/crash2.C: New test.
+
+2004-02-14 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/14116
+ * g++.dg/ext/typeof8.C: New test.
+
+2004-02-14 Richard Sandiford <rsandifo@redhat.com>
+
+ Backport from mainline:
+
+ 2004-02-08 Richard Sandiford <rsandifo@redhat.com>
+ * gcc.c-torture/execute/20040208-[12].c: New tests.
+
+2004-02-14 Eric Botcazou <ebotcazou@act-europe.fr>
+
+ * gcc.c-torture/compile/20040214-1.c: New test.
+
+2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13635
+ * g++.dg/template/spec11.C: New test.
+
+2004-02-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14122
+ * g++.dg/template/array4.C: New test.
+
+ PR c++/14108
+ * g++.dg/inherit/thunk2.C: New test.
+
+2004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13927
+ * g++.dg/other/error8.C: New test.
+
+2004-02-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14083
+ * call.c (build_conditional_expr): Call force_rvalue on the
+ non-void operand in the case that one result is a throw-expression
+ and the other is not.
+
+2004-02-12 Alan Modra <amodra@bigpond.net.au>
+
+ * gcc.dg/debug/20020327-1.c: Disable for powerpc64.
+
+2004-02-12 Nathaniel Smith <njs@codesourcery.com>
+
+ * lib/scanasm.exp (dg-scan): Quote pattern before display.
+
+2004-02-12 Hartmut Penner <hpenner@de.ibm.com>
+
+ * gcc.dg/ppc64-abi-3.c: New.
+
+2004-02-12 Hartmut Penner <hpenner@de.ibm.com>
+
+ * g++.dg/simd-2.C: xfail on ppc64-linux.
+
+2004-02-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ PR c/456
+ * gcc.dg/cpp/c90-if-comma-1.c, gcc.dg/cpp/c99-if-comma-1.c: New
+ tests.
+
+2004-02-10 Alan Modra <amodra@bigpond.net.au>
+
+ * gcc.dg/cpp/assert4.c: Fix typo last change.
+
+ * gcc.dg/cpp/assert4.c: Handle powerpc64.
+
+ * gcc.dg/debug/20020327-1.c: xfail for powerpc64.
+
+2004-02-08 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc.dg/c90-init-1.c: Adjust expected error messages.
+
+2004-02-08 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * g++.dg/eh/simd-2.C: Adjust line numbers for SPARC.
+
+2004-02-08 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/execute/va-arg-25.x: XFAIL only on SPARC 64-bit.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ Bug 13856
+ * gcc.dg/visibility-8.c: New testcase.
+
+2004-02-07 Geoffrey Keating <geoffk@geoffk.org>
+ Andrew Pinski <pinskia@physics.uc.edu>
+
+ * objc.dg/call-super-2.m: Include stddef.h for size_t.
+ Update line numbers for the including of stddef.h.
+
+2004-02-07 Zack Weinberg <zack@codesourcery.com>
+
+ * gcc.c-torture/execute/string-opt-15.c: Define memcmp with void *
+ arguments.
+ * gcc.dg/fwritable-strings-1.c: Expect the deprecation notice.
+
+2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14033
+ * g++.dg/other/crash-2.C: New test.
+
+2004-02-06 Falk Hueffner <falk@debian.org>
+
+ PR target/12898
+ * gcc.c-torture/compile/20040121-1.c: New test.
+
+2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14028
+ * g++.dg/parse/angle-bracket2.C: New test.
+
+2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR middle-end/13750
+ Revert:
+ 2004-01-15 Geoffrey Keating <geoffk@apple.com>
+ PR pch/13361
+ * testsuite/g++.dg/pch/wchar-1.C: New.
+ * testsuite/g++.dg/pch/wchar-1.Hs: New.
+
+2004-02-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13932
+ * g++.dg/warn/conv2.C: New test.
+
+ * lib/file-format.exp (gcc_target_object_format): Use
+ ${tool}_target_compile, not gcc_target_compile.
+ * lib/target-supports.exp (check_alias_available): Likewise.
+ (check_gc_sections_available): Likewise.
+ * g++.dg/ext/attrib10.C: Use dg-require-alias.
+ * g++.old-deja/g++.ext/attrib5.C: Use dg-require-weak and
+ dg-require-alias.
+
+2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13086
+ * g++.dg/warn/incomplete1.C: Remove xfail.
+
+2004-02-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13969
+ * g++.dg/template/static6.C: New test.
+
+2004-02-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * objc.dg/encode-2.m, objc.dg/encode-3.m, objc.dg/encode-4.m: Fix
+ tests for systems where `char' is unsigned by default.
+
+2003-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13997
+ * g++.dg/template/partial3.C: New test.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13950
+ * g++.dg/template/lookup4.C: New test.
+
+ PR c++/13970
+ * g++.dg/parse/error14.C: New test.
+
+2004-02-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13925
+ * g++.dg/template/lookup5.C: New test.
+
+ PR c++/14002
+ * g++.dg/parse/template13.C: New test.
+
+ PR c++/13978
+ * g++.dg/template/koenig4.C: New test.
+
+ PR c++/13968
+ * g++.dg/template/crash17.C: New test.
+
+ PR c++/13975
+ * g++.dg/parse/error13.C: New test.
+ * g++.old-deja/g++.robertl/eb125.C: Tweak error messages.
+
+2004-02-02 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/10858
+ * g++.dg/template/sizeof7.C: New test.
+
+2004-02-02 Eric Christopher <echristo@redhat.com>
+ Zack Weinberg <zack@codesourcery.com>
+
+ * gcc.c-torture/execute/wchar_t-1.c: Add -finput-charset.
+
+2004-02-02 Zack Weinberg <zack@codesourcery.com>
+
+ * g++.dg/eh/forced1.C, g++.dg/eh/forced2.C, g++.dg/eh/forced3.C
+ * g++.dg/eh/forced4.C: XFAIL ia64-hp-hpux11.*.
+ * g++.dg/eh/ia64-1.C: Test branch regs only #ifdef __LP64__.
+ * gcc.dg/cleanup-5.c: Run only on Linux targets.
+
+2004-02-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ DR206
+ PR c++/13813
+ * g++.dg/template/member4.C: New test.
+
+2004-02-02 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13113
+ * g++.old-deja/g++.mike/net36.C: Adjust error messages.
+
+ PR c++/13854
+ * g++.dg/ext/attrib13.C: New test.
+
+ PR c++/13907
+ * g++.dg/conversion/op2.C: New test.
+
+2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/titype-1.c: Fix pasto.
+
+2004-02-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13957
+ * g++.dg/template/non-type-template-argument-1.C,
+ g++.dg/template/qualified-id1.C: Update dg-error marks.
+ * g++.dg/template/nontype6.C: New test.
+
+2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/titype-1.c: New test.
+
+2004-01-30 Michael Matz <matz@suse.de>
+
+ * g++.dg/ext/case-range1.C, g++.dg/ext/case-range2.C,
+ g++.dg/ext/case-range3.C: New tests.
+
+2004-01-31 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/12884
+ * g77.f-torture/execute/12884.f: New test
+
+2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13683
+ * g++.dg/template/sizeof6.C: New test.
+
+2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/fwritable-strings-1.c: New test.
+
+2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/compile/20040130-1.c: New test.
+
+2004-01-29 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ * g++.dg/parse/error11.C: New test.
+ * g++.dg/parse/error12.C: Likewise.
+
+2004-01-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13883
+ * g++.dg/template/ctor3.C: New test.
+
+2004-01-28 Ziemowit Laski <zlaski@apple.com>
+
+ * objc.dg/proto-qual-1.m (ROUND, aligned_sizeof): New.
+ (scan_initial, main): Use aligned_sizeof instead of sizeof.
+
+2004-01-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13791
+ * g++.dg/ext/attrib12.C: New test.
+
+2004-01-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13736
+ * g++.dg/parse/cast2.C: New test.
+
+2004-01-27 James E Wilson <wilson@specifixinc.com>
+
+ * objc.dg/encode-2.m (main): New local string. Set depending on
+ sizeof long. Use in sscanf call.
+ * objc.dg/encode-3.m (main): New local string. Set depending on
+ sizeof long. Use in scan_initial call.
+
+2004-01-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * objc.dg/call-super-2.m: Make LP64-safe.
+ * objc.dg/desig-init-1.m: Likewise.
+
+2004-01-27 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * gcc.dg/arm-mmx-1.c: New test.
+
+2004-01-27 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/20040127-1.c: New test.
+ * gcc.dg/20040127-2.c: New test.
+
+2004-01-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * objc.dg/stret-1.m (glob): Renamed to globa.
+
+2004-01-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13363
+ * g++.dg/expr/for1.C: New test.
+
+2004-01-26 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/sparc-ret.c: Run only in 32-bit mode. Don't scan
+ the assembly output if -m64 is passed.
+
+2004-01-25 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13833
+ * g++.dg/template/cond3.C: New test.
+
+2004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/13810
+ * g++.dg/template/ttp7.C: New test.
+
+2004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13797
+ * g++.dg/template/nontype4.C: New test.
+ * g++.dg/template/nontype5.C: Likewise.
+
+2004-01-25 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.dg/torture/mips-clobber-at.c: New test.
+
+2004-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/20040123-1.c: New test.
+
+2004-01-23 Zack Weinberg <zack@codesourcery.com>
+
+ PR 18314
+ * gcc.dg/builtins-30.c: New testcase.
+
+2004-01-22 Hartmut Penner <hpenner@de.ibm.com>
+
+ * gcc.dg/ppc64-abi-2.c: New test.
+
+2004-01-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/struct-by-value-2.c: New test.
+
+2004-01-21 Andrew Pinski <apinski@apple.com>
+
+ PR target/13785
+ * gcc.dg/20030121-1.c: New test.
+
+2004-01-22 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gcc.dg/20030123-1.c: Add -fno-omit-frame-pointer option. Do not
+ clobber frame pointer register in asm statement.
+
+2004-01-21 Zack Weinberg <zack@codesourcery.com>
+
+ * gcc.dg/noncompile/20020213-1.c: Add another dg-warning line.
+
+2004-01-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13592
+ * g++.dg/other/error1.C (class foo): Tweak error message.
+
+2004-01-19 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13592
+ * g++.dg/template/call2.C: New test.
+
+2004-01-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/tls/alias-1.c: Add dg-warning for unsupported visibility
+ attribute on sparc*-sun-solaris2.*.
+
+2004-01-18 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/13710
+ * g++.dg/ext/typeof7.C: New test.
+
+2004-01-17 Ziemowit Laski <zlaski@apple.com>
+
+ * objc.dg/stret-1.m: New.
+ * objc.dg/stret-2.m: New.
+
+2004-01-17 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/11895
+ * g++.dg/ext/vector1.C: New test.
+
2004-01-16 Mark Mitchell <mark@codesourcery.com>
PR c++/13574
@@ -20230,4 +20851,3 @@ rlsruhe.de>
correspond to c-torture 1.11.
* New file.
-
diff --git a/gcc/testsuite/g++.dg/abi/mangle21.C b/gcc/testsuite/g++.dg/abi/mangle21.C
new file mode 100644
index 00000000000..f457d600cd8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle21.C
@@ -0,0 +1,13 @@
+// PR c++/14324
+// { dg-do assemble }
+
+extern "C" {
+
+void fun1(void)
+{
+ do { static int xyz __attribute__((unused)) = 1; } while (0);
+ do { static int xyz __attribute__((unused)) = 2; } while (0);
+ do { static int xyz __attribute__((unused)) = 3; } while (0);
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/abi/structret1.C b/gcc/testsuite/g++.dg/abi/structret1.C
new file mode 100644
index 00000000000..e9d4fd0ff9f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/structret1.C
@@ -0,0 +1,31 @@
+// { dg-do run { target ia64-*-* } }
+// { dg-options "-fabi-version=0" }
+
+extern "C" void abort ();
+
+struct ConstructedObject {
+ ConstructedObject() {};
+ ~ConstructedObject() {};
+ ConstructedObject(const ConstructedObject &from) {};
+};
+
+struct FrameworkObject {
+ ConstructedObject action();
+};
+
+ConstructedObject FrameworkObject::action() {
+ void *r32, *r33;
+
+ asm("mov %0 = r32\nmov %1 = r33" : "=r"(r32), "=r"(r33) : );
+ if (this != r33) {
+ abort ();
+ }
+}
+
+int main()
+{
+ FrameworkObject slawa;
+ slawa.action();
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/bprob/bprob.exp b/gcc/testsuite/g++.dg/bprob/bprob.exp
index bef57836cf1..ea458fa1797 100644
--- a/gcc/testsuite/g++.dg/bprob/bprob.exp
+++ b/gcc/testsuite/g++.dg/bprob/bprob.exp
@@ -21,7 +21,7 @@ load_lib target-supports.exp
# Some targets don't have any implementation of __bb_init_func or are
# missing other needed machinery.
-if { ![check_profiling_available] } {
+if { ![check_profiling_available "-fprofile-arcs"] } {
return
}
diff --git a/gcc/testsuite/g++.dg/conversion/op2.C b/gcc/testsuite/g++.dg/conversion/op2.C
new file mode 100644
index 00000000000..b400988108d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/conversion/op2.C
@@ -0,0 +1,16 @@
+// PR c++/13907
+
+struct A {
+ operator int & ();
+ operator const int & () const;
+};
+
+
+void f(int &);
+void f(const int &);
+
+
+int main() {
+ const A x = A();
+ f(x);
+}
diff --git a/gcc/testsuite/g++.dg/debug/crash1.C b/gcc/testsuite/g++.dg/debug/crash1.C
new file mode 100644
index 00000000000..4fba256b7cc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/crash1.C
@@ -0,0 +1,17 @@
+template <typename T>
+class foo
+{
+ T t;
+};
+
+class bar;
+typedef foo<bar> foobar;
+
+class obj
+{
+ virtual foobar* yeah() = 0;
+};
+
+class bar : virtual public obj
+{
+};
diff --git a/gcc/testsuite/g++.dg/eh/cond2.C b/gcc/testsuite/g++.dg/eh/cond2.C
new file mode 100644
index 00000000000..e4b45f7a46f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/cond2.C
@@ -0,0 +1,19 @@
+// PR c++/14083
+
+struct A {
+ A() throw() { }
+ A(const A&) throw() { }
+};
+
+struct X {
+ A a;
+ X();
+ X& operator=(const X& __str);
+};
+
+bool operator==(const X& __lhs, const char* __rhs);
+
+int main() {
+ X x;
+ x=="" ? x : throw 1;
+}
diff --git a/gcc/testsuite/g++.dg/eh/forced1.C b/gcc/testsuite/g++.dg/eh/forced1.C
index 8f090fa9df5..7244a35f36c 100644
--- a/gcc/testsuite/g++.dg/eh/forced1.C
+++ b/gcc/testsuite/g++.dg/eh/forced1.C
@@ -1,4 +1,5 @@
-// { dg-do run }
+// HP-UX libunwind.so doesn't provide _Unwind_ForcedUnwind.
+// { dg-do run { xfail "ia64-hp-hpux11.*" } }
// Test that forced unwinding runs all cleanups. Also tests that
// rethrowing doesn't call the exception object destructor.
diff --git a/gcc/testsuite/g++.dg/eh/forced2.C b/gcc/testsuite/g++.dg/eh/forced2.C
index ebfda5554f2..b8ace620dbe 100644
--- a/gcc/testsuite/g++.dg/eh/forced2.C
+++ b/gcc/testsuite/g++.dg/eh/forced2.C
@@ -1,4 +1,5 @@
-// { dg-do run }
+// HP-UX libunwind.so doesn't provide _Unwind_ForcedUnwind.
+// { dg-do run { xfail "ia64-hp-hpux11.*" } }
// Test that leaving the catch block without rethrowing
// does call the exception object destructor.
diff --git a/gcc/testsuite/g++.dg/eh/forced3.C b/gcc/testsuite/g++.dg/eh/forced3.C
index 2de421c4412..29d65d91551 100644
--- a/gcc/testsuite/g++.dg/eh/forced3.C
+++ b/gcc/testsuite/g++.dg/eh/forced3.C
@@ -1,4 +1,5 @@
-// { dg-do run }
+// HP-UX libunwind.so doesn't provide _Unwind_ForcedUnwind.
+// { dg-do run { xfail "ia64-hp-hpux11.*" } }
// Test that forced unwinding calls std::unexpected going
// throw a nothrow function.
diff --git a/gcc/testsuite/g++.dg/eh/forced4.C b/gcc/testsuite/g++.dg/eh/forced4.C
index be03a7544b6..88b48c82b0a 100644
--- a/gcc/testsuite/g++.dg/eh/forced4.C
+++ b/gcc/testsuite/g++.dg/eh/forced4.C
@@ -1,4 +1,5 @@
-// { dg-do run }
+// HP-UX libunwind.so doesn't provide _Unwind_ForcedUnwind.
+// { dg-do run { xfail "ia64-hp-hpux11.*" } }
// Test that forced unwinding does not call std::unexpected going
// throw a function with a non-empty exception spec.
diff --git a/gcc/testsuite/g++.dg/eh/ia64-1.C b/gcc/testsuite/g++.dg/eh/ia64-1.C
index a1b731c8d80..17ef7f8b78c 100644
--- a/gcc/testsuite/g++.dg/eh/ia64-1.C
+++ b/gcc/testsuite/g++.dg/eh/ia64-1.C
@@ -1,10 +1,13 @@
// Test whether call saved float and branch regs are restored properly
+// We can't do this test for branch regs in ILP32 mode.
// { dg-do run { target ia64-*-* } }
// { dg-options "-O2" }
extern "C" void abort (void);
+#ifdef __LP64__
char buf[128];
+#endif
void __attribute__((noinline))
bar (void)
@@ -28,13 +31,17 @@ main (void)
register double f5 __asm ("f5");
register double f16 __asm ("f16");
register double f17 __asm ("f17");
+#ifdef __LP64__
register void *b1 __asm ("b1");
register void *b2 __asm ("b2");
register void *b3 __asm ("b3");
register void *b4 __asm ("b4");
register void *b5 __asm ("b5");
+#endif
f2 = 12.0; f3 = 13.0; f4 = 14.0; f5 = 15.0; f16 = 16.0; f17 = 17.0;
+#ifdef __LP64__
b1 = &buf[1]; b2 = &buf[2]; b3 = &buf[3]; b4 = &buf[4]; b5 = &buf[5];
+#endif
try
{
foo ();
@@ -43,8 +50,10 @@ main (void)
if (f2 != 12.0 || f3 != 13.0 || f4 != 14.0
|| f5 != 15.0 || f16 != 16.0 || f17 != 17.0)
abort ();
+#ifdef __LP64__
if (b1 != &buf[1] || b2 != &buf[2] || b3 != &buf[3]
|| b4 != &buf[4] || b5 != &buf[5])
abort ();
+#endif
return 0;
}
diff --git a/gcc/testsuite/g++.dg/eh/simd-1.C b/gcc/testsuite/g++.dg/eh/simd-1.C
index d10a74ab274..a8b180b6f45 100644
--- a/gcc/testsuite/g++.dg/eh/simd-1.C
+++ b/gcc/testsuite/g++.dg/eh/simd-1.C
@@ -3,7 +3,7 @@
// { dg-options "-O" }
// { dg-options "-O -w" { target i?86-*-* } }
// { dg-do run }
-// { dg-error "" "PR target/12916" { target sparc*-*-* } 11 }
+// { dg-error "" "PR target/12916" { target sparc*-*-* } 0 }
typedef int __attribute__((mode(V2SI))) vecint;
diff --git a/gcc/testsuite/g++.dg/eh/simd-2.C b/gcc/testsuite/g++.dg/eh/simd-2.C
index 81c4025a12e..3b4b02d3841 100644
--- a/gcc/testsuite/g++.dg/eh/simd-2.C
+++ b/gcc/testsuite/g++.dg/eh/simd-2.C
@@ -2,8 +2,9 @@
// Contributed by Aldy Hernandez (aldy@quesejoda.com).
// { dg-options "-O" }
// { dg-options "-O -w" { target i?86-*-* } }
-// { dg-do run }
-// { dg-error "" "PR target/12916" { target sparc*-*-* } 11 }
+// { dg-options "-O -w -maltivec" { target powerpc64-*-linux* } }
+// { dg-do run { xfail "powerpc64-*-linux*"} }
+// { dg-error "" "PR target/12916" { target sparc*-*-* } 0 }
typedef int __attribute__((mode(V4SI))) vecint;
@@ -43,6 +44,10 @@ void f1 (void)
int main ()
{
+#if defined(__powerpc64__) && defined(__linux__)
+ // Don't run on ppc64-linux, since not always AltiVec regs available
+ return -1;
+#endif
f1 ();
return 0;
}
diff --git a/gcc/testsuite/g++.dg/expr/cond4.C b/gcc/testsuite/g++.dg/expr/cond4.C
new file mode 100644
index 00000000000..fff5c8b185d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/cond4.C
@@ -0,0 +1,16 @@
+// PR c++/13971
+
+struct QChar {
+ static const QChar null;
+};
+struct QCharRef {
+ operator QChar() const;
+};
+struct QString {
+ QCharRef operator[](int i);
+};
+
+QChar fillParagraph(QString s, int psi) {
+ return psi ? QChar::null : s[psi];
+}
+
diff --git a/gcc/testsuite/g++.dg/expr/for1.C b/gcc/testsuite/g++.dg/expr/for1.C
new file mode 100644
index 00000000000..baffd424a41
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/for1.C
@@ -0,0 +1,14 @@
+// PR c++/13663
+
+struct S {
+ void f();
+};
+
+void g(int);
+void g(double);
+
+void h () {
+ S s;
+ for (;;s.f); // { dg-error "" }
+ for (;;g); // { dg-error "" }
+}
diff --git a/gcc/testsuite/g++.dg/ext/attrib10.C b/gcc/testsuite/g++.dg/ext/attrib10.C
index 6d04cb855b7..99459c78242 100644
--- a/gcc/testsuite/g++.dg/ext/attrib10.C
+++ b/gcc/testsuite/g++.dg/ext/attrib10.C
@@ -1,4 +1,5 @@
// PR c++/12795
+// { dg-require-alias "" }
void foo()
{
diff --git a/gcc/testsuite/g++.dg/ext/attrib12.C b/gcc/testsuite/g++.dg/ext/attrib12.C
new file mode 100644
index 00000000000..aea93781df8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attrib12.C
@@ -0,0 +1,16 @@
+// PR c++/13791
+
+template <typename T> struct O {
+ struct __attribute__((packed)) I {
+ int i;
+ char c;
+ };
+
+ I* foo();
+};
+
+template <typename T>
+typename O<T>::I*
+O<T>::foo() { return 0; }
+
+template class O<int>;
diff --git a/gcc/testsuite/g++.dg/ext/attrib13.C b/gcc/testsuite/g++.dg/ext/attrib13.C
new file mode 100644
index 00000000000..22ea97ae706
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attrib13.C
@@ -0,0 +1,4 @@
+// PR c++/13854
+
+extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__));
+extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__));
diff --git a/gcc/testsuite/g++.dg/ext/case-range1.C b/gcc/testsuite/g++.dg/ext/case-range1.C
new file mode 100644
index 00000000000..0e313d6b602
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/case-range1.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// Tests if case ranges (a GNU extension) are accepted
+// { dg-options "" }
+const int low = -2;
+const int high = 15;
+
+template <typename T>
+T f2 (T i)
+{
+ switch (i)
+ {
+ case low ... high : return i + 1;
+ default : return 0;
+ }
+}
+
+int f (int i)
+{
+ switch (i) {
+ case 1 ... 10: return i + 1;
+ default: return f2 (i);
+ }
+}
diff --git a/gcc/testsuite/g++.dg/ext/case-range2.C b/gcc/testsuite/g++.dg/ext/case-range2.C
new file mode 100644
index 00000000000..33befbd588a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/case-range2.C
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// Tests if case ranges (a GNU extension) correctly emit messages
+// about overlapping ranges.
+// { dg-options "" }
+
+const int low = -2;
+const int high = 15;
+
+template <typename T>
+T f2 (T i)
+{
+ switch (i)
+ {
+ case low ... high : return i + 1; // { dg-error "" }
+ case 5 : return i + 2; // { dg-error "duplicate" }
+ default : return 0;
+ }
+}
+
+int f (int i)
+{
+ switch (i) {
+ case 1 ... 10: return i + 1; // { dg-error "" }
+ case 3 ... 5 : return i + 3; // { dg-error "duplicate" }
+ default: return f2 (i); // { dg-error "" }
+ }
+}
diff --git a/gcc/testsuite/g++.dg/ext/case-range3.C b/gcc/testsuite/g++.dg/ext/case-range3.C
new file mode 100644
index 00000000000..569ce627455
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/case-range3.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// Tests if case ranges (a GNU extension) emit errors in ISO mode
+// { dg-options "-pedantic" }
+const int low = -2;
+const int high = 15;
+
+template <typename T>
+T f2 (T i)
+{
+ switch (i)
+ {
+ case low ... high : return i + 1; // { dg-error "non-standard" }
+ default : return 0;
+ }
+}
+
+int f (int i)
+{
+ switch (i) {
+ case 1 ... 10: return i + 1; // { dg-error "non-standard" }
+ default: return f2 (i); // { dg-error "" }
+ }
+}
diff --git a/gcc/testsuite/g++.dg/ext/packed5.C b/gcc/testsuite/g++.dg/ext/packed5.C
new file mode 100644
index 00000000000..caf14d89c29
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/packed5.C
@@ -0,0 +1,16 @@
+// PR c++/14173
+
+struct A;
+
+void foo(const A&);
+
+struct A
+{
+ A(const A&);
+};
+
+struct B
+{
+ A a;
+ A bar() { return a; }
+};
diff --git a/gcc/testsuite/g++.dg/ext/typeof7.C b/gcc/testsuite/g++.dg/ext/typeof7.C
new file mode 100644
index 00000000000..6c426931bbb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/typeof7.C
@@ -0,0 +1,6 @@
+// PR c++/13635
+// { dg-options "" }
+
+template<int n> class X {template<class Y> typeof(Y::y) foo();};
+X<0> x;
+
diff --git a/gcc/testsuite/g++.dg/ext/typeof8.C b/gcc/testsuite/g++.dg/ext/typeof8.C
new file mode 100644
index 00000000000..8e6523484e7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/typeof8.C
@@ -0,0 +1,12 @@
+// PR c++/14116
+// Any use of typeof in a templete was causing an ICE.
+// { dg-options "" }
+
+struct vector { typedef int iterator; };
+vector read_queue;
+template <class T> void f(){
+ typedef typeof (read_queue) read_queue_t;
+ read_queue_t::iterator it;
+}
+
+
diff --git a/gcc/testsuite/g++.dg/ext/typeof9.C b/gcc/testsuite/g++.dg/ext/typeof9.C
new file mode 100644
index 00000000000..1547c0f2f6c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/typeof9.C
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+// Origin: gcc-bug@vogtner.de
+
+// PR c++/14106: ICE with typeof of function template.
+
+template<class T>
+void j (T i)
+{
+}
+
+template<typename T>
+void instanciate () {
+ static void (*fp) (T) = j;
+ __typeof__ (j) *p; // { dg-error "unknown|invalid" }
+}
+template void instanciate<float>();
diff --git a/gcc/testsuite/g++.dg/ext/vector1.C b/gcc/testsuite/g++.dg/ext/vector1.C
new file mode 100644
index 00000000000..c6f0e0409c5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/vector1.C
@@ -0,0 +1,5 @@
+// PR c++/11895
+// This used to ICE in reshape_init.
+// testcase from fnf@ninemoons.com
+
+ __attribute__((vector_size(16))) int a1 = { 100, 200, 300, 400 };
diff --git a/gcc/testsuite/g++.dg/inherit/thunk2.C b/gcc/testsuite/g++.dg/inherit/thunk2.C
new file mode 100644
index 00000000000..094891c7a14
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/thunk2.C
@@ -0,0 +1,19 @@
+// PR c++/14108
+
+class ClassC {
+public:
+ ~ClassC();
+};
+
+class ClassA {
+ virtual ClassC f();
+};
+
+class ClassB : public virtual ClassA {
+ virtual ClassC f();
+};
+
+ClassC ClassB::f() {
+ return ClassC();
+}
+
diff --git a/gcc/testsuite/g++.dg/lookup/crash2.C b/gcc/testsuite/g++.dg/lookup/crash2.C
new file mode 100644
index 00000000000..82735245f48
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/crash2.C
@@ -0,0 +1,20 @@
+// PR c++/14086
+
+struct ClassA
+{
+ ClassA();
+};
+
+struct ClassB
+{
+ enum Enum {ClassB}; // { dg-error "" }
+ ClassA key;
+
+ ClassB();
+ virtual ~ClassB();
+};
+
+
+ClassB::ClassB()
+{
+}
diff --git a/gcc/testsuite/g++.dg/lookup/member1.C b/gcc/testsuite/g++.dg/lookup/member1.C
new file mode 100644
index 00000000000..82bb657f508
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/member1.C
@@ -0,0 +1,11 @@
+// PR c++/14186
+
+struct Base
+{
+ enum { Derived };
+};
+
+class Derived : public Base
+{
+ Derived();
+};
diff --git a/gcc/testsuite/g++.dg/opt/fold1.C b/gcc/testsuite/g++.dg/opt/fold1.C
new file mode 100644
index 00000000000..98f1b519115
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/fold1.C
@@ -0,0 +1,17 @@
+// PR middle-end/13696
+// { dg-do compile }
+// { dg-options "-O2" }
+
+extern void x(unsigned long*);
+
+enum e { red, blue, green };
+
+struct s {
+ unsigned long l;
+};
+struct s map[1][256];
+
+void
+f(int i,e j) {
+ x(&(map[i][j].l));
+}
diff --git a/gcc/testsuite/g++.dg/opt/inline4.C b/gcc/testsuite/g++.dg/opt/inline4.C
index 1db4fe1860b..2eaad115fc1 100644
--- a/gcc/testsuite/g++.dg/opt/inline4.C
+++ b/gcc/testsuite/g++.dg/opt/inline4.C
@@ -10,4 +10,4 @@ void h() {
g<250>();
}
-// { dg-final { scan-assembler-not "_Z1g" } }
+// { dg-final { scan-assembler-not "\n_?_Z1gILi\[0-9\]+EEvv\[: \t\n\]" } }
diff --git a/gcc/testsuite/g++.dg/opt/inline6.C b/gcc/testsuite/g++.dg/opt/inline6.C
index 21872210558..b1616c7e721 100644
--- a/gcc/testsuite/g++.dg/opt/inline6.C
+++ b/gcc/testsuite/g++.dg/opt/inline6.C
@@ -1,6 +1,6 @@
// PR c++/13081
// { dg-options "-O2" }
-// { dg-final { scan-assembler-not "foo" } }
+// { dg-final { scan-assembler-not "\n_?_Z3fooIlET_S0_\[: \t\n\]" } }
template<typename T> T foo(T);
diff --git a/gcc/testsuite/g++.dg/opt/template1.C b/gcc/testsuite/g++.dg/opt/template1.C
index 9003be1ee17..f2543469391 100644
--- a/gcc/testsuite/g++.dg/opt/template1.C
+++ b/gcc/testsuite/g++.dg/opt/template1.C
@@ -1,5 +1,5 @@
// { dg-options "-O2" }
-// { dg-final { scan-assembler-not "foo1" } }
+// { dg-final { scan-assembler-not "\n_?_ZN1AILi0EE4foo1Ev\[: \t\n\]" } }
template <int>
struct A {
diff --git a/gcc/testsuite/g++.dg/other/crash-2.C b/gcc/testsuite/g++.dg/other/crash-2.C
new file mode 100644
index 00000000000..3a19f3ba8ab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/crash-2.C
@@ -0,0 +1,13 @@
+// { dg-do compile }
+// { dg-options "-finline -finline-functions" }
+// Contributed by Hans Buchmann <hans dot buchmann at fhso dot ch>
+// PR c++/14033: ICE while inlining a function with incomplete parameter
+
+struct A; // { dg-error "forward declaration" }
+void foo(A a) {} // { dg-error "incomplete" }
+struct A {};
+
+void bar(void)
+{
+ foo(A());
+}
diff --git a/gcc/testsuite/g++.dg/other/crash-3.C b/gcc/testsuite/g++.dg/other/crash-3.C
new file mode 100644
index 00000000000..d13821dee79
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/crash-3.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-g" }
+// Contributed by: <schmid at snake dot iap dot physik dot tu-darmstadt dot de>
+// and Niall Douglas <s_gccbugzilla at nedprod dot com>
+// PR c++/14246: ice in write_template_arg_literal while mangling boolean
+// expressions.
+
+namespace N1 {
+
+ template <typename T>
+ struct A {
+ enum { Yes = (sizeof(T) == 1) };
+ };
+
+ template<bool T>
+ struct B {
+ void foo(void);
+ };
+
+ template struct B< !A<int>::Yes >;
+
+}
+
+
+namespace N2 {
+
+ template<bool> struct A {};
+ A<!false> a;
+
+}
+
diff --git a/gcc/testsuite/g++.dg/other/error1.C b/gcc/testsuite/g++.dg/other/error1.C
index a55fcc60cf6..927efef8bbb 100644
--- a/gcc/testsuite/g++.dg/other/error1.C
+++ b/gcc/testsuite/g++.dg/other/error1.C
@@ -10,6 +10,6 @@ class foo {
int fudge[40];
int bar [40];
inline int access(int i) {
- return bar(i); // { dg-error "call to non-function `foo::bar'" "" }
+ return bar(i); // { dg-error "cannot be used as a function" "" }
}
};
diff --git a/gcc/testsuite/g++.dg/other/error8.C b/gcc/testsuite/g++.dg/other/error8.C
new file mode 100644
index 00000000000..d427e3c4c61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/error8.C
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// Contributed by: Michael Elizabeth Chastain
+// <mec dot gnu at mindspring dot com>
+// PR c++/13927: Wrong error message for redeclartion of type from union
+
+void foo(void)
+{
+ union { int alpha; int beta; }; // { dg-error "previous declaration `int alpha'" }
+ double alpha; // { dg-error "declaration of" }
+}
+
+// This checks both the templated version, and the position of the diagnostic
+// (which is currently wrong).
+template <int>
+void tfoo(void)
+{
+ union {
+ int alpha; // { dg-error "" "" { xfail *-*-* } }
+ int beta;
+ }; // { dg-bogus "" "misplaced position of the declaration" { xfail *-*-* } }
+ double alpha; // { dg-error "" "" }
+}
+
+// The duplicated error messages are xfailed for now (tracked in the PR)
+// { dg-bogus "" "duplicate error messages" { xfail *-*-* } 8 }
+// { dg-bogus "" "duplicate error messages" { xfail *-*-* } 9 }
diff --git a/gcc/testsuite/g++.dg/other/nontype-1.C b/gcc/testsuite/g++.dg/other/nontype-1.C
new file mode 100644
index 00000000000..5a1fcd97821
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/nontype-1.C
@@ -0,0 +1,7 @@
+template <class Op>
+bool asfun(Op f,
+ Op::first_argument_type a, // { dg-error "not a type" }
+ Op::second_argument_type b) // { dg-error "not a type" }
+{ // { dg-error "no type" }
+ return Op(a, b);
+}
diff --git a/gcc/testsuite/g++.dg/other/profile1.C b/gcc/testsuite/g++.dg/other/profile1.C
new file mode 100644
index 00000000000..bc92460830b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/profile1.C
@@ -0,0 +1,51 @@
+// PR 11767
+// { dg-do run }
+// { dg-options "-fnon-call-exceptions -fprofile-arcs" }
+
+#include <string>
+
+typedef unsigned long ACE_UINT32;
+extern "C" void abort();
+
+static ACE_UINT32 const msc_maxCurrencyID = 9999;
+
+class ResourceBalanceType2
+{
+ public:
+ explicit ResourceBalanceType2(
+ ACE_UINT32 resourceBalanceTypeID,
+ ACE_UINT32 isoValue,
+ const std::string& rc_shortName,
+ const std::string& rc_symbol
+ );
+ public:
+ const ACE_UINT32 mc_resBalTypeID;
+ const ACE_UINT32 mc_isoValue;
+ const std::string mc_shortName;
+ const std::string mc_symbol;
+};
+
+void f(){}
+
+ResourceBalanceType2::ResourceBalanceType2(
+ ACE_UINT32 resourceBalanceTypeID,
+ ACE_UINT32 isoValue,
+ const std::string& rc_shortName,
+ const std::string& rc_symbol)
+ : mc_resBalTypeID(resourceBalanceTypeID),
+ mc_isoValue(isoValue),
+ mc_shortName(rc_shortName),
+ mc_symbol(rc_symbol)
+{
+ bool isGreater = (mc_isoValue > msc_maxCurrencyID);
+ f();
+ bool temp = mc_isoValue > msc_maxCurrencyID;
+ if (!isGreater) abort();
+ if (!temp) abort();
+}
+
+int main (int argc, char * argv[])
+{
+ ACE_UINT32 const mc_isoValue = 10000;
+ ResourceBalanceType2 rbResourceBalanceType2(3, mc_isoValue, "ATM", "M");
+}
diff --git a/gcc/testsuite/g++.dg/other/switch1.C b/gcc/testsuite/g++.dg/other/switch1.C
new file mode 100644
index 00000000000..a22d2b573fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/switch1.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+// Contributed by: Nick Savoiu <savoiu at ics dot uci dot edu>
+// PR c++/14250: Incomplete type in switch statement
+
+template <typename T>
+struct A {
+ operator int();
+};
+
+struct C1 {
+ static A<void> t1;
+
+ void fun()
+ {
+ switch(t1)
+ {
+ default: break;
+ }
+ }
+};
diff --git a/gcc/testsuite/g++.dg/parse/angle-bracket2.C b/gcc/testsuite/g++.dg/parse/angle-bracket2.C
new file mode 100644
index 00000000000..fb758e33f76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/angle-bracket2.C
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// Contributed by MattyT <mattyt-bugzilla at tpg dot com dot au>
+// PR c++/14028: Parser accepts invalid unbalanced bracket.
+
+template <int> struct A {};
+template <typename TP> class B : public A<4 {}; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/attr-ctor1.C b/gcc/testsuite/g++.dg/parse/attr-ctor1.C
index 4f8cd1dde66..d48543cf100 100644
--- a/gcc/testsuite/g++.dg/parse/attr-ctor1.C
+++ b/gcc/testsuite/g++.dg/parse/attr-ctor1.C
@@ -2,7 +2,9 @@
// Origin: <petr@scssoft.com>
// { dg-do compile }
+// Requires section attribute support
+
class A
{
- __attribute__((section("whatever"))) A();
+ __attribute__((section("whatever"))) A(); // { dg-bogus "" "" { xfail hppa*-*-hpux* } }
};
diff --git a/gcc/testsuite/g++.dg/parse/cast2.C b/gcc/testsuite/g++.dg/parse/cast2.C
new file mode 100644
index 00000000000..d447bb4baec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/cast2.C
@@ -0,0 +1,13 @@
+// PR c++/13736
+
+struct string
+{
+ string() {}
+ string(const string&) {}
+ string(const char*) {}
+};
+
+int main()
+{
+ string s2(string( (const char*)("")));
+}
diff --git a/gcc/testsuite/g++.dg/parse/comma1.C b/gcc/testsuite/g++.dg/parse/comma1.C
new file mode 100644
index 00000000000..33d222cbc04
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/comma1.C
@@ -0,0 +1,13 @@
+// PR c++/14278
+
+struct X {
+ X (int p);
+};
+
+struct A {
+ A(X);
+};
+
+void *p_fun;
+
+A a(X ((*(int (*)(int, int)) p_fun)(0, 0)));
diff --git a/gcc/testsuite/g++.dg/parse/constructor2.C b/gcc/testsuite/g++.dg/parse/constructor2.C
new file mode 100644
index 00000000000..e514e9397e9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/constructor2.C
@@ -0,0 +1,11 @@
+// PR c++/14260
+
+template <class TClass>
+class T
+{
+public:
+ T(short,short f=0) {}
+ T<TClass>(int f) {}
+ T<TClass>(int f=0,const char* b=0) {}
+};
+
diff --git a/gcc/testsuite/g++.dg/parse/defarg7.C b/gcc/testsuite/g++.dg/parse/defarg7.C
new file mode 100644
index 00000000000..c1f75ce8f18
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/defarg7.C
@@ -0,0 +1,5 @@
+// PR c++/14361
+
+class A {
+ A ( int n=0 int n ); // { dg-error "" }
+};
diff --git a/gcc/testsuite/g++.dg/parse/error11.C b/gcc/testsuite/g++.dg/parse/error11.C
new file mode 100644
index 00000000000..6b3deec178a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error11.C
@@ -0,0 +1,53 @@
+// { dg-do compile }
+// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
+// Try to find out when the digraph '<:' is used as a mistake, and parse it
+// correctly to avoid cascaded errors.
+
+struct B;
+
+template <class A>
+struct Foo
+{
+ template <class T>
+ struct Nested
+ {
+ static void method(void) {}
+ };
+
+ void method(void) {
+ typename Foo<::B>::template Nested<::B> n; // { dg-error "cannot begin|alternate spelling" }
+ n.template Nested<B>::method();
+ n.template Nested<::B>::method(); // { dg-error "cannot begin|alternate spelling" }
+ Nested<B>::method();
+ Nested<::B>::method(); // { dg-error "cannot begin|alternate spelling" }
+ }
+};
+
+template <int N> struct Foo2 {};
+template struct Foo2<::B>; // { dg-error "cannot begin|alternate spelling|type/value mismatch|expected a constant" }
+
+int value = 0;
+
+void func(void)
+{
+ Foo<::B> f; // { dg-error "cannot begin|alternate spelling" }
+ f.Foo<B>::method();
+ f.Foo<::B>::method(); // { dg-error "cannot begin|alternate spelling" }
+
+ // Check cases where we the token sequence is the correct one, but there
+ // was no digraph or whitespaces in the middle, so we should not emit
+ // the special error message.
+ Foo<: :B> k2; // { dg-bogus "cannot begin|alternate spelling" "smart error should not be triggered here" }
+ Foo[:B> k1; // { dg-bogus "cannot begin|alternate spelling" "smart error should not be triggered here" }
+// { dg-error "" "" { target *-*-* } 40 }
+// { dg-error "" "" { target *-*-* } 41 }
+
+ int Foo[2];
+ Foo[::value] = 0;
+}
+
+template struct Foo<::B>; // { dg-error "cannot begin|alternate spelling" }
+
+// On the first error message, an additional note about the use of
+// -fpermissive should be present
+// { dg-error "-fpermissive" "" { target *-*-* } 18 }
diff --git a/gcc/testsuite/g++.dg/parse/error12.C b/gcc/testsuite/g++.dg/parse/error12.C
new file mode 100644
index 00000000000..ea04fd06d11
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error12.C
@@ -0,0 +1,12 @@
+// { dg-do compile }
+// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
+// Make sure the error about '<:' can be turned into a warning
+// { dg-options "-fpermissive" }
+
+struct B;
+
+template <class A>
+struct Foo {};
+
+Foo<::B> foo; // { dg-bogus "error" "error in place of warning" }
+// { dg-error "" "" { target *-*-* } 11 }
diff --git a/gcc/testsuite/g++.dg/parse/error13.C b/gcc/testsuite/g++.dg/parse/error13.C
new file mode 100644
index 00000000000..15642e39ed7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error13.C
@@ -0,0 +1,13 @@
+// PR c++/13975
+
+public: // { dg-error "" }
+
+int i;
+
+protected: // { dg-error "" }
+
+int j;
+
+private: // { dg-error "" }
+
+int k;
diff --git a/gcc/testsuite/g++.dg/parse/error14.C b/gcc/testsuite/g++.dg/parse/error14.C
new file mode 100644
index 00000000000..4b230453867
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error14.C
@@ -0,0 +1,22 @@
+// PR c++/13970
+
+struct X
+{
+ template< typename Z > Z Zunc()
+ {
+ return Z();
+ }
+
+ template< typename Z > void Zinc()
+ {
+ }
+
+ void tst()
+ {
+ Zunc<int>();
+
+ Zinc<int>( //);
+ // }
+
+}; // { dg-error "" }
+
diff --git a/gcc/testsuite/g++.dg/parse/new2.C b/gcc/testsuite/g++.dg/parse/new2.C
new file mode 100644
index 00000000000..d233b68caf4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/new2.C
@@ -0,0 +1,9 @@
+// { dg-do compile }
+// Contributed by David Daney <daney at gcc dot gnu dot org>
+// PR c++/14181: Cryptic error message for ill-formed new expressions
+
+void f1(void)
+{
+ (void)new (char*)[10]; // { dg-error "parenthesized|parentheses" }
+ (void)new char*[10];
+}
diff --git a/gcc/testsuite/g++.dg/parse/template13.C b/gcc/testsuite/g++.dg/parse/template13.C
new file mode 100644
index 00000000000..b1c03690be5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/template13.C
@@ -0,0 +1,10 @@
+// PR c++/14002
+
+template <typename T> void foo (T x) { x; }
+
+void bar() { foo(0); }
+
+struct A
+{
+ friend void foo<int> (int);
+};
diff --git a/gcc/testsuite/g++.dg/pch/wchar-1.C b/gcc/testsuite/g++.dg/pch/wchar-1.C
deleted file mode 100644
index 6cb5fe15e4c..00000000000
--- a/gcc/testsuite/g++.dg/pch/wchar-1.C
+++ /dev/null
@@ -1 +0,0 @@
-#include "wchar-1.H"
diff --git a/gcc/testsuite/g++.dg/pch/wchar-1.Hs b/gcc/testsuite/g++.dg/pch/wchar-1.Hs
deleted file mode 100644
index 431908b88b1..00000000000
--- a/gcc/testsuite/g++.dg/pch/wchar-1.Hs
+++ /dev/null
@@ -1,2 +0,0 @@
-#include <stddef.h>
-const wchar_t test_var[] = L"wide string";
diff --git a/gcc/testsuite/g++.dg/template/array4.C b/gcc/testsuite/g++.dg/template/array4.C
new file mode 100644
index 00000000000..c72782b10ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/array4.C
@@ -0,0 +1,11 @@
+// PR c++/14122
+
+extern const char str[];
+
+template <const char* P>
+struct A
+{
+ template <const char* R> void foo();
+};
+
+template class A<str>;
diff --git a/gcc/testsuite/g++.dg/template/call2.C b/gcc/testsuite/g++.dg/template/call2.C
new file mode 100644
index 00000000000..86d5c2e82b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/call2.C
@@ -0,0 +1,14 @@
+// PR c++/13592
+
+struct S {
+ void operator()(int);
+};
+
+struct A {
+ template <typename> void foo();
+ S s;
+};
+
+template <typename> void A::foo() {
+ s(0);
+}
diff --git a/gcc/testsuite/g++.dg/template/cond3.C b/gcc/testsuite/g++.dg/template/cond3.C
new file mode 100644
index 00000000000..788b3754a61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/cond3.C
@@ -0,0 +1,15 @@
+// PR c++/13833
+
+struct X {
+ template <typename T>
+ X & operator << (const T &t);
+ X & operator<< (int& (*p) (int&));
+};
+
+X x;
+
+template <int> void foo () {
+ x << (1 ? "ok" : "failed");
+}
+
+template void foo<1>();
diff --git a/gcc/testsuite/g++.dg/template/cond4.C b/gcc/testsuite/g++.dg/template/cond4.C
new file mode 100644
index 00000000000..35416ba798f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/cond4.C
@@ -0,0 +1,20 @@
+// PR c++/14369
+
+struct A { };
+
+template<class T>
+struct X : A {
+ const A* bar() const
+ { return this; }
+
+ const A& foo() const;
+};
+
+template<class T>
+const A& X<T>::foo() const
+{
+ const A* t = bar();
+ return *(t ? t : throw 0);
+}
+
+
diff --git a/gcc/testsuite/g++.dg/template/crash17.C b/gcc/testsuite/g++.dg/template/crash17.C
new file mode 100644
index 00000000000..9fa826b999d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash17.C
@@ -0,0 +1,19 @@
+template <int I>
+struct A {
+};
+
+template <typename T>
+struct B {
+ typedef typename T::type type;
+ static const type j = T::j;
+
+ A<j> b;
+};
+
+struct C {
+ typedef int type;
+ static const int j = 3;
+};
+
+int i = B<C>::j;
+
diff --git a/gcc/testsuite/g++.dg/template/ctor3.C b/gcc/testsuite/g++.dg/template/ctor3.C
new file mode 100644
index 00000000000..d3eb2c3f8a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ctor3.C
@@ -0,0 +1,19 @@
+struct A {};
+struct B;
+
+template <class TP> struct X: virtual A {
+ template <class TP2> X(TP2* ptr) {}
+ template <class TP2> X(const X<TP2>) {}
+};
+
+struct Y : X<B> {
+ Y(A* a) : X<B>(a) {}
+};
+
+void func1(X<B>);
+
+void func2() {
+ A a;
+ Y y(&a);
+ func1(X<A>(&a));
+}
diff --git a/gcc/testsuite/g++.dg/template/friend26.C b/gcc/testsuite/g++.dg/template/friend26.C
new file mode 100644
index 00000000000..3cf659df402
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend26.C
@@ -0,0 +1,15 @@
+// PR c++/14359
+
+template<typename> struct A {};
+
+template<typename> struct B
+{
+ template<typename T> friend void foo(const A<T>& a, const B&) { a; }
+};
+
+void bar()
+{
+ A<void> a;
+ B<void> b;
+ foo(a,b);
+}
diff --git a/gcc/testsuite/g++.dg/template/koenig4.C b/gcc/testsuite/g++.dg/template/koenig4.C
new file mode 100644
index 00000000000..31e41fcf97f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/koenig4.C
@@ -0,0 +1,12 @@
+// PR c++/13978
+
+namespace ns {
+ template <class TP> void func1(TP* t);
+ struct A {};
+}
+
+template < class TP >
+void func2() {
+ func1( new ns::A() );
+}
+
diff --git a/gcc/testsuite/g++.dg/template/lookup4.C b/gcc/testsuite/g++.dg/template/lookup4.C
new file mode 100644
index 00000000000..d64006133c3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/lookup4.C
@@ -0,0 +1,6 @@
+// PR c++/13950
+
+template <class T> struct Base {};
+template <class T> struct Derived: public Base<T> {
+ typename Derived::template Base<double>* p1; // { dg-error "" }
+};
diff --git a/gcc/testsuite/g++.dg/template/lookup5.C b/gcc/testsuite/g++.dg/template/lookup5.C
new file mode 100644
index 00000000000..022202a7158
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/lookup5.C
@@ -0,0 +1,17 @@
+// PR c++/13925
+
+namespace N {
+ template <class T> void f(T);
+
+ namespace M {
+ class A {
+ friend void f<int>(int);
+ };
+ }
+
+ template <class T> void f(T) {}
+ template <> void f<int>(int )
+ {
+ f<long>(0);
+ }
+}
diff --git a/gcc/testsuite/g++.dg/template/member4.C b/gcc/testsuite/g++.dg/template/member4.C
new file mode 100644
index 00000000000..290fbb566c2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/member4.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+// Contributed by Matty T. <mattyt-bugzilla at tpg dot com dot au>
+// PR c++/13813 [DR206]: Check semantic constraints of members of
+// non-dependent type at instantiation time.
+
+
+// DR206 explains that this is ill-formed, no diagnostic required. We emit
+// a diagnostic instead.
+class E;
+template < class A > class Z {
+ A a;
+ E e; // { dg-error "incomplete type" }
+};
+
+
+// Nested classes are always dependent names.
+template < class A > class Y {
+ class F;
+ F e; // { dg-bogus "" "nested classes are always dependent, see DR108 and DR224" }
+};
diff --git a/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C b/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
index 273017635c3..9d400d5b104 100644
--- a/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
+++ b/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
@@ -6,7 +6,7 @@ template <bool> struct C {};
template <typename T> struct D
{
- C<T::X> c; // { dg-error "names a type" }
+ C<T::X> c; // { dg-error "parsed as a non-type|if a type is meant" }
};
-D<B> d; // { dg-error "" }
+D<B> d; // { dg-error "instantiated from here" }
diff --git a/gcc/testsuite/g++.dg/template/nontype4.C b/gcc/testsuite/g++.dg/template/nontype4.C
new file mode 100644
index 00000000000..43ef2b0ce6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/nontype4.C
@@ -0,0 +1,14 @@
+// { dg-do compile }
+
+// Origin: Ivan Godard <igodard@pacbell.net>
+// Volker Reichelt <reichelt@gcc.gnu.org>
+
+// PR c++/13797: ICE invalid nontype template parameter
+
+template <int> struct A
+{
+ typedef A<0> B; // { dg-error "not a valid type|conflict" }
+ template <B> struct B {}; // { dg-error "not a valid type|declaration" }
+};
+
+A<0> a; // { dg-error "instantiated" }
diff --git a/gcc/testsuite/g++.dg/template/nontype5.C b/gcc/testsuite/g++.dg/template/nontype5.C
new file mode 100644
index 00000000000..e53b6c1a654
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/nontype5.C
@@ -0,0 +1,14 @@
+// { dg-do compile }
+
+// Origin: Ivan Godard <igodard@pacbell.net>
+// Volker Reichelt <reichelt@gcc.gnu.org>
+
+// PR c++/13797: ICE invalid nontype template parameter
+
+template <int> struct A
+{
+ typedef A<0> B;
+ template <B> struct C {}; // { dg-error "not a valid type" }
+};
+
+A<0> a; // { dg-error "instantiated" }
diff --git a/gcc/testsuite/g++.dg/template/nontype6.C b/gcc/testsuite/g++.dg/template/nontype6.C
new file mode 100644
index 00000000000..43470ccdb1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/nontype6.C
@@ -0,0 +1,19 @@
+// { dg-do compile }
+// Origin: <v dot haisman at sh dot cvut dot cz>
+// PR c++/13957: Improved error message for type in template (when non-type
+// is expected).
+
+template <class T>
+struct A
+{
+ typedef int type;
+};
+
+template <class T>
+void func(void)
+{
+ (void)A<T>::type(); // { dg-error "if a type is meant" }
+// { dg-error "parsed as a non-type" "" { target *-*-* } 15 }
+}
+
+template void func<float>(void); // { dg-error "instantiated from here" }
diff --git a/gcc/testsuite/g++.dg/template/partial3.C b/gcc/testsuite/g++.dg/template/partial3.C
new file mode 100644
index 00000000000..9862675148e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/partial3.C
@@ -0,0 +1,14 @@
+// { dg-do compile }
+// Origin: John Maddock <john at johnmaddock dot co dot uk>
+// PR c++/13997: Error while matching partial specialization of array type
+
+template <typename T>
+struct is_array;
+
+template <typename T, unsigned int N>
+struct is_array<T[N]>;
+
+template <typename T, unsigned int N>
+struct is_array<const T[N]> {};
+
+template struct is_array<int const[2]>;
diff --git a/gcc/testsuite/g++.dg/template/qualified-id1.C b/gcc/testsuite/g++.dg/template/qualified-id1.C
index bbe23c2743b..967764281c0 100644
--- a/gcc/testsuite/g++.dg/template/qualified-id1.C
+++ b/gcc/testsuite/g++.dg/template/qualified-id1.C
@@ -16,8 +16,8 @@ template <> struct A::B<false> {};
template <typename T> void foo()
{
- T::C (); // { dg-error "names a type" "" }
- T::template B<false>(); // { dg-error "names a type" "" }
+ T::C (); // { dg-error "parsed as a non-type|if a type is meant" "" }
+ T::template B<false>(); // { dg-error "parsed as a non-type|if a type is meant" "" }
}
void bar()
diff --git a/gcc/testsuite/g++.dg/template/sfinae1.C b/gcc/testsuite/g++.dg/template/sfinae1.C
new file mode 100644
index 00000000000..47db4115452
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sfinae1.C
@@ -0,0 +1,21 @@
+// PR c++/14337
+
+template <bool> struct Constraint;
+template <> struct Constraint<true> { typedef int Result; };
+
+template <typename T>
+struct IsInt { static const bool value = false; };
+
+template <>
+struct IsInt<int> { static const bool value = true; };
+
+template <typename T>
+typename Constraint<IsInt<T>::value>::Result foo(T);
+
+template <typename T>
+typename Constraint<!IsInt<T>::value>::Result foo(T);
+
+template <typename>
+void bar() {
+ foo(1);
+}
diff --git a/gcc/testsuite/g++.dg/template/sizeof6.C b/gcc/testsuite/g++.dg/template/sizeof6.C
new file mode 100644
index 00000000000..3ef3794b5b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sizeof6.C
@@ -0,0 +1,13 @@
+// { dg-do compile }
+// Contributed by Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
+// PR c++/13683: bogus warning about passing non-PODs through ellipsis
+
+struct B {};
+struct NonPOD : B {};
+
+struct A
+{
+ static int check(...);
+ static NonPOD GetNonPOD(void);
+ enum { value = sizeof(A::check(A::GetNonPOD())) };
+};
diff --git a/gcc/testsuite/g++.dg/template/sizeof7.C b/gcc/testsuite/g++.dg/template/sizeof7.C
new file mode 100644
index 00000000000..d41de080db3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sizeof7.C
@@ -0,0 +1,15 @@
+// { dg-do compile }
+// Testcase by: bangerth@dealii.org
+// PR c++/10858: failure with calling a method inside sizeof in a template
+
+ template <int> struct P {};
+
+ void bar ();
+
+ template <class T> struct X {
+ static int foo(void (*)());
+ P<sizeof(foo(&bar))> p;
+ };
+
+ template class X<int>;
+
diff --git a/gcc/testsuite/g++.dg/template/spec11.C b/gcc/testsuite/g++.dg/template/spec11.C
new file mode 100644
index 00000000000..36d93a94ee1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/spec11.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+// Origin: jhbrown@bluefinrobotics.com
+
+// PR c++/13635: ICE explicit specialization of member function template
+
+template <class foo>
+class bar {
+public:
+ template <class baz>
+ int func(baz *x);
+};
+
+template <>
+template <class baz>
+int bar<double>::func(baz *x) { return 5;}
+
+template <>
+template <>
+int bar<double>::func(int *x) { return 5;}
diff --git a/gcc/testsuite/g++.dg/template/static6.C b/gcc/testsuite/g++.dg/template/static6.C
new file mode 100644
index 00000000000..30ecae94067
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/static6.C
@@ -0,0 +1,14 @@
+// PR c++/13969
+
+struct B {
+ static const int N=10;
+};
+
+template <int> struct X {};
+
+template <typename> struct S {
+ static const int N = B::N;
+ X<N> x;
+};
+
+template class S<float>;
diff --git a/gcc/testsuite/g++.dg/template/ttp7.C b/gcc/testsuite/g++.dg/template/ttp7.C
new file mode 100644
index 00000000000..0bcaa8f7292
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp7.C
@@ -0,0 +1,16 @@
+// { dg-do compile }
+// Contributed by Andrew Pinski <pinskia at gcc dot gnu dot org>
+// PR c++/13810: ICE while parsing invalid default argument for a
+// template template parameter.
+
+struct X;
+template<int> struct A {};
+
+template<template<int> class = X > struct B1 {}; // { dg-error "as a default value" }
+template<template<int> class = A<0> > struct B2 {}; // { dg-error "as a default value" }
+
+template <typename T>
+struct S {
+ template <template <typename> class = S> struct I1 {}; // { dg-error "as a default value" }
+ template <template <typename> class = ::S> struct I2 {};
+};
diff --git a/gcc/testsuite/g++.dg/template/ttp8.C b/gcc/testsuite/g++.dg/template/ttp8.C
new file mode 100644
index 00000000000..99f99b965a1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp8.C
@@ -0,0 +1,16 @@
+// { dg-do compile }
+// Contributed by: Niall Douglas <s_gccbugzilla at netprod dot com>
+// PR c++/14284: Failure to select specialization
+
+template<typename> struct S;
+template<template<class> class> struct I {};
+
+template<class, int> struct Match;
+
+template<template<class> class C>
+struct Match<I<C>, 0> {};
+
+template<template<class> class C, int i>
+struct Match<I<C>, i>;
+
+Match<I<S>, 0> v;
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-5.C b/gcc/testsuite/g++.dg/warn/Wunused-5.C
new file mode 100644
index 00000000000..06d1a0516bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-5.C
@@ -0,0 +1,13 @@
+// PR c++/14199
+// { dg-options "-W -Wall -Wunused" }
+
+struct X {
+ static void foo ();
+};
+
+template <typename T>
+void foo (const T &t) {
+ t.foo();
+}
+
+template void foo (const X &);
diff --git a/gcc/testsuite/g++.dg/warn/conv2.C b/gcc/testsuite/g++.dg/warn/conv2.C
new file mode 100644
index 00000000000..e3466002218
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/conv2.C
@@ -0,0 +1,3 @@
+// PR c++/13932
+
+int i = 1.; // { dg-warning "converting" }
diff --git a/gcc/testsuite/g++.dg/warn/incomplete1.C b/gcc/testsuite/g++.dg/warn/incomplete1.C
index f4d074aa085..389f8bd539e 100644
--- a/gcc/testsuite/g++.dg/warn/incomplete1.C
+++ b/gcc/testsuite/g++.dg/warn/incomplete1.C
@@ -16,6 +16,6 @@ A *a; // { dg-warning "`a' has incomplete type" "" }
int
main (int argc, char **argv)
{
- delete a; // { dg-warning "delete" "" { xfail *-*-* } }
+ delete a; // { dg-warning "delete" "" }
return 0;
}
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C b/gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
index 84063834f1d..93d15d08d90 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
@@ -1,4 +1,8 @@
-// { dg-do assemble }
-// { dg-options "" }
+// { dg-do run { xfail *-*-* } }
+// { dg-options "-w -fpermissive" }
-int *foo = new int[1](0); // { dg-bogus "" }
+int *foo = new int[1](42); // { dg-bogus "" }
+int main ()
+{
+ return foo[0] != 42;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/attrib5.C b/gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
index 7a77d6154d3..545f12803b0 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
@@ -1,5 +1,7 @@
-// { dg-do run { xfail alpha*-dec-osf* *-*-hms i?86-pc-cygwin *-*-coff hppa2*-hp-hpux11* } }
+// { dg-do run { xfail alpha*-dec-osf* *-*-hms i?86-pc-cygwin *-*-coff } }
// Test that attributes weak and alias coexist.
+// { dg-require-weak "" }
+// { dg-require-alias "" }
extern "C" {
void f () __attribute__((weak, alias ("_f")));
diff --git a/gcc/testsuite/g++.old-deja/g++.law/profile1.C b/gcc/testsuite/g++.old-deja/g++.law/profile1.C
index 9ca4a915469..2fa633ba17e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/profile1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/profile1.C
@@ -1,5 +1,5 @@
-// { dg-do run { xfail mips*-*-* i[3456]86-*-sco3.2v5* } }
-// { dg-require-profiling "" }
+// { dg-do run { xfail i[3456]86-*-sco3.2v5* } }
+// { dg-require-profiling "-pg" }
// { dg-options "-pg" }
// { dg-options "-pg -static" { target hppa*-*-hpux* } }
// GROUPS passed profiling
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index c7951654c26..502c4f42ad0 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -71,8 +71,8 @@ void test1()
func(new B(A(10).addr()));
}catch(int){
}
- CHECK(new_done==1);
- CHECK(ctor_done==2);
+ CHECK(ctor_done==1);
+ CHECK(new_done==2);
CHECK(func_done==3);
CHECK(dtor_done==4);
CHECK(delete_done==0);
@@ -86,10 +86,10 @@ void test2()
func(new B(A(10).addr()));
}catch(int){
}
- CHECK(new_done==1);
- CHECK(ctor_done==0);
+ CHECK(ctor_done==1);
+ CHECK(new_done==2);
CHECK(func_done==0);
- CHECK(dtor_done==0);
+ CHECK(dtor_done==3);
CHECK(delete_done==0);
}
@@ -101,11 +101,11 @@ void test3()
func(new B(A(10).addr()));
}catch(int){
}
- CHECK(new_done==1);
- CHECK(ctor_done==2);
+ CHECK(new_done==0);
+ CHECK(ctor_done==1);
CHECK(func_done==0);
CHECK(dtor_done==0);
- CHECK(delete_done==3);
+ CHECK(delete_done==0);
}
int main()
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net36.C b/gcc/testsuite/g++.old-deja/g++.mike/net36.C
index 3ffa60e37a2..98b38eedb48 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net36.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net36.C
@@ -11,7 +11,7 @@ typedef void (A::*handler) (X*);
class B {
public:
- void setHandler(handler);
+ void setHandler(handler); // { dg-error "candidate" }
};
void f(B* b) {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
index 84af9f1edf5..d84fc8dbf41 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
@@ -1,16 +1,18 @@
// { dg-do assemble }
// To find function pointers in Koenig lookup is ok as long as we only find one.
namespace A{
- void foo(); // { dg-error "" }
+ void foo();
struct X{};
void (*bar)(X*)=0;
}
using A::X;
-void (*foo)(X*)=0; // { dg-error "" }
+void (*foo)(X*)=0;
void g()
{
- foo(new X); // { dg-error "" } both objects and functions found
+ foo(new X); // ok -- DR 218 says that we find the global
+ // foo variable first, and therefore do not
+ // perform argument-dependent lookup.
bar(new X); // ok
}
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
index 915fbe6794b..b06823685e4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
@@ -17,6 +17,6 @@ class test_square
template <class BOX> void test(BOX *the_box) // { dg-error "" } semicolon missing
{x
the_box->print();
- }; // { dg-error "" }
+ };
template void test<> (test_box *); // { dg-error "" }
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
deleted file mode 100644
index c27aa8d2df7..00000000000
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
+++ /dev/null
@@ -1,19 +0,0 @@
-//Build don't link:
-#include <vector>
-#include <algorithm>
-
-template <class T> class Expr
-{
-public :
-Expr(){};
-Expr(const T&){};
-};
-
-template <class T >
-inline bool compare(const Expr<T> a, const Expr<T> b){ return true; };
-
-int main()
-{
- std::vector<int> a(3);
- std::sort( a.begin(), a.end(), compare ); // ERROR - no matching function
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb58.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
index 566cf9a7831..04ec92a30af 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
@@ -1,5 +1,5 @@
// { dg-do run }
-// { dg-options "" }
+// { dg-options "-w -fpermissive" }
// Test for g++ array init extension
class A {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb63.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
index a1601f80f9f..a49fb02641c 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
@@ -1,5 +1,5 @@
// { dg-do run }
-// { dg-options "" }
+// { dg-options "-w -fpermissive" }
//This uses GNU extensions, so disable -ansi
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/g77.dg/bprob/bprob.exp b/gcc/testsuite/g77.dg/bprob/bprob.exp
index 6eb45be2e36..e453f4e66f8 100644
--- a/gcc/testsuite/g77.dg/bprob/bprob.exp
+++ b/gcc/testsuite/g77.dg/bprob/bprob.exp
@@ -21,7 +21,7 @@ load_lib target-supports.exp
# Some targets don't have any implementation of __bb_init_func or are
# missing other needed machinery.
-if { ![check_profiling_available] } {
+if { ![check_profiling_available "-fprofile-arcs"] } {
return
}
diff --git a/gcc/testsuite/g77.f-torture/execute/12884.f b/gcc/testsuite/g77.f-torture/execute/12884.f
new file mode 100644
index 00000000000..6e2d894a3bf
--- /dev/null
+++ b/gcc/testsuite/g77.f-torture/execute/12884.f
@@ -0,0 +1,32 @@
+ IMPLICIT NONE
+C properly handle a "/" in a $<NAME> $END namelist
+C pr12884 --
+C error in reading a namelist when it is preceded by a line with a SLASH
+C
+ CHARACTER*80 DL(7)
+ DATA DL /'$file',
+ 1 'oms omsmc.i2',
+ 2 'pseu pseudo/PSN',
+ 3 '$end',
+ 4 '$CNTRL',
+ 5 'ispher=1,NOSYM=2,RUNFLG=3,noprop=4,',
+ 6 '$END'/
+C $file is not a valid namelist, but it still
+C is parsed by the runtime
+ INTEGER*4 ISPHER,NOSYM,RUNFLG,NOPROP /-1 /
+ INTEGER I
+ NAMELIST /CNTRL/ ISPHER,NOSYM,RUNFLG,NOPROP
+C make a unique datafile
+ OPEN(UNIT=9,STATUS='SCRATCH')
+ WRITE(9,*,ERR=100)(DL(I),I=1,7)
+ REWIND(9)
+ READ(9,NML=CNTRL,ERR=100)
+ CLOSE(9)
+ IF (ISPHER.NE.1.OR.NOSYM.NE.2.OR.RUNFLG.NE.3.OR.NOPROP.NE.4)THEN
+ CALL ABORT
+ ENDIF
+C all is well at this point !!
+ STOP
+ 100 PRINT*,'FILE ERROR(S)'
+ CALL ABORT
+ END
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040121-1.c b/gcc/testsuite/gcc.c-torture/compile/20040121-1.c
new file mode 100644
index 00000000000..2039472fd4e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20040121-1.c
@@ -0,0 +1,41 @@
+/* PR target/12898
+ 0x8000 needs multiple instructions to be emitted on Alpha; the
+ fluff around it causes it to be emitted in a no_new_pseudos
+ context, which triggered a problem in alpha.c. */
+
+void f (const char *, ...);
+int g (void);
+void *p (void);
+
+int isymBase, ilineBase, sym_hdr, want_line, proc_desc;
+char *lines;
+
+void print_file_desc (int *fdp)
+{
+ char *str_base = p ();
+ int symi, pdi = g ();
+
+ for (symi = 0; isymBase;)
+ {
+ int proc_ptr = proc_desc + pdi;
+ f("1", isymBase, proc_ptr + *fdp, str_base);
+ if (want_line && *fdp)
+ {
+ int delta;
+ long cur_line = proc_ptr;
+ char *line_ptr = lines + proc_ptr;
+ char *line_end = p ();
+
+ f("2", sym_hdr);
+ while (line_ptr < line_end)
+ {
+ delta = *line_ptr;
+ if (delta)
+ line_ptr++;
+ else
+ delta = line_ptr[1] ^ 0x8000;
+ f("3", cur_line, delta);
+ }
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040130-1.c b/gcc/testsuite/gcc.c-torture/compile/20040130-1.c
new file mode 100644
index 00000000000..0edcea44ede
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20040130-1.c
@@ -0,0 +1,24 @@
+/* PR target/11475 */
+/* Origin: <heinrich.brand@fujitsu-siemens.com> */
+
+/* This used to fail on SPARC because of a broken pattern. */
+
+#pragma pack(2)
+
+struct
+{
+ unsigned char G936:7;
+ unsigned short G937:6;
+ unsigned int :4;
+ unsigned short :14;
+ unsigned int G938:8;
+ unsigned int :30;
+ unsigned short :16;
+ unsigned int :18;
+ unsigned short G939:9;
+} G928b;
+
+void TestG928(void)
+{
+ G928b.G936 |= G928b.G939;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040209-1.c b/gcc/testsuite/gcc.c-torture/compile/20040209-1.c
new file mode 100644
index 00000000000..d256d58e34b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20040209-1.c
@@ -0,0 +1,9 @@
+/* The following code used to ICE in fold_convert. */
+
+float ceilf(float);
+
+int foo(float x)
+{
+ return (double)ceilf(x);
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040214-1.c b/gcc/testsuite/gcc.c-torture/compile/20040214-1.c
new file mode 100644
index 00000000000..90b09dcdbab
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20040214-1.c
@@ -0,0 +1,7 @@
+void foo(void)
+{
+ char c;
+
+ for (c = -75; c <= 75; c++)
+ ;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040214-2.c b/gcc/testsuite/gcc.c-torture/compile/20040214-2.c
new file mode 100644
index 00000000000..352d5a5d764
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20040214-2.c
@@ -0,0 +1,57 @@
+/* http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01307.html */
+
+typedef struct xdef xdef;
+struct xdef
+{
+ char xtyp;
+ xdef *next;
+ int y;
+};
+
+extern void b ();
+extern void *foo (void *bar);
+extern void *foo2 (void *bar1, void *bar2);
+extern void *qwe;
+
+static void
+c (xdef * xp)
+{
+ b (xp);
+}
+static void
+a (xdef ** xpp)
+{
+ xdef *xp;
+ xp = *xpp;
+
+ foo (xp);
+ xp = foo2 (xp, qwe);
+ b (xp->next);
+ foo (xp);
+ if (xp->y)
+ {
+ foo (xp);
+ if (xp)
+ {
+ xdef *p = foo2 (xp, qwe);
+ foo2 (xp, p);
+ xp = foo (p);
+ }
+ else
+ {
+ foo2 (foo(*xpp), *xpp);
+ }
+ }
+ *xpp = foo2 (xpp, qwe);
+}
+
+void
+b (xdef ** xpp)
+{
+ xdef *xp = *xpp;
+ if (!xp)
+ return;
+ if (xp->xtyp == 0)
+ a (xpp);
+ c (xp);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/complex-1.c b/gcc/testsuite/gcc.c-torture/compile/complex-1.c
new file mode 100644
index 00000000000..6ba9f04694d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/complex-1.c
@@ -0,0 +1,12 @@
+extern void u (int, int);
+extern void v (float, float);
+
+void f (__complex__ int x)
+{
+ u (0, x);
+}
+
+void g (__complex__ float x)
+{
+ v (0, x);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c b/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c
new file mode 100644
index 00000000000..739726db92b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c
@@ -0,0 +1,12 @@
+/* PR target/14201 */
+/* Excercise float -> integer in memory patterns. */
+/* { dg-options "-mieee" { target alpha*-*-* } } */
+
+void f1 (float v, int *p) { *p = v; }
+void f2 (float v, unsigned int*p) { *p = v; }
+void f3 (float v, long long *p) { *p = v; }
+void f4 (float v, unsigned long long *p) { *p = v; }
+void f5 (double v, int *p) { *p = v; }
+void f6 (double v, unsigned int *p) { *p = v; }
+void f7 (double v, long long *p) { *p = v; }
+void f8 (double v, unsigned long long *p) { *p = v; }
diff --git a/gcc/testsuite/gcc.c-torture/compile/libcall-1.c b/gcc/testsuite/gcc.c-torture/compile/libcall-1.c
new file mode 100644
index 00000000000..c1b1cfc6139
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/libcall-1.c
@@ -0,0 +1,14 @@
+/* Failed on ARM because rtx_varies_p didn't like the REG_EQUAL notes
+ generated for libcalls.
+ http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01518.html */
+static const char digs[] = "0123456789ABCDEF";
+int __attribute__((pure)) bar();
+
+int foo (int i)
+{
+ int len;
+ if (i)
+ return 0;
+ len = bar();
+ return digs[len];
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020720-1.x b/gcc/testsuite/gcc.c-torture/execute/20020720-1.x
index 2520c74f2b4..1f7137b153a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20020720-1.x
+++ b/gcc/testsuite/gcc.c-torture/execute/20020720-1.x
@@ -11,6 +11,19 @@
# and can make the optimization.
# Don't XFAIL at -O0, that should never fail.
+if { [istarget "sparc*-*-*"] } {
+ set torture_eval_before_compile {
+ global compiler_conditional_xfail_data
+ set compiler_conditional_xfail_data {
+ "PR opt/10348" \
+ { "*-*-*" } \
+ { "-fpic" "-fPIC" } \
+ { "-O0" }
+ }
+ }
+ return 0
+}
+
set torture_eval_before_compile {
global compiler_conditional_xfail_data
set compiler_conditional_xfail_data {
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040208-1.c b/gcc/testsuite/gcc.c-torture/execute/20040208-1.c
new file mode 100644
index 00000000000..02357591072
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040208-1.c
@@ -0,0 +1,10 @@
+int main ()
+{
+ long double x;
+
+ x = 0x1.0p-500L;
+ x *= 0x1.0p-522L;
+ if (x != 0x1.0p-1022L)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040208-2.c b/gcc/testsuite/gcc.c-torture/execute/20040208-2.c
new file mode 100644
index 00000000000..d8a5afc9462
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040208-2.c
@@ -0,0 +1,11 @@
+int main ()
+{
+ long double x, y;
+
+ x = 0x1.fffffffffffff8p1022L;
+ x *= 2;
+ y = 0x1.fffffffffffff8p1023L;
+ if (memcmp (&x, &y, sizeof (x)) != 0)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040208-2.x b/gcc/testsuite/gcc.c-torture/execute/20040208-2.x
new file mode 100644
index 00000000000..6c7d3d55003
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040208-2.x
@@ -0,0 +1 @@
+return [expr ![istarget mips*-*-irix6*]]
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040218-1.c b/gcc/testsuite/gcc.c-torture/execute/20040218-1.c
new file mode 100644
index 00000000000..4d1541af8bf
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040218-1.c
@@ -0,0 +1,37 @@
+/* PR target/14209. Bug in cris.md, shrinking access size of
+ postincrement.
+ Origin: <hp@axis.com>. */
+
+long int xb (long int *y) __attribute__ ((__noinline__));
+long int xw (long int *y) __attribute__ ((__noinline__));
+short int yb (short int *y) __attribute__ ((__noinline__));
+
+long int xb (long int *y)
+{
+ long int xx = *y & 255;
+ return xx + y[1];
+}
+
+long int xw (long int *y)
+{
+ long int xx = *y & 65535;
+ return xx + y[1];
+}
+
+short int yb (short int *y)
+{
+ short int xx = *y & 255;
+ return xx + y[1];
+}
+
+int main (void)
+{
+ long int y[] = {-1, 16000};
+ short int yw[] = {-1, 16000};
+
+ if (xb (y) != 16255
+ || xw (y) != 81535
+ || yb (yw) != 16255)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040302-1.c b/gcc/testsuite/gcc.c-torture/execute/20040302-1.c
new file mode 100644
index 00000000000..07056c43f4e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040302-1.c
@@ -0,0 +1,24 @@
+int code[]={0,0,0,0,1};
+
+void foo(int x) {
+ volatile int b;
+ b = 0xffffffff;
+}
+
+void bar(int *pc) {
+ static const void *l[] = {&&lab0, &&end};
+
+ foo(0);
+ goto *l[*pc];
+ lab0:
+ foo(0);
+ pc++;
+ goto *l[*pc];
+ end:
+ return;
+}
+
+int main() {
+ bar(code);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/990208-1.x b/gcc/testsuite/gcc.c-torture/execute/990208-1.x
deleted file mode 100644
index c1710099151..00000000000
--- a/gcc/testsuite/gcc.c-torture/execute/990208-1.x
+++ /dev/null
@@ -1,14 +0,0 @@
-# Doesn't work at -O3 because of ifcvt.c optimizations which
-# cause the 2 inlined labels to be at the same location.
-
-set torture_eval_before_execute {
-
- set compiler_conditional_xfail_data {
- "ifcvt transforms 2 inlined labels to the same address" \
- { "ia64-*-*" "arm*-*-*" "strongarm*-*-*" "xscale*-*-*" } \
- { "-O3" } \
- { "" }
- }
-}
-
-return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/string-opt-15.c b/gcc/testsuite/gcc.c-torture/execute/string-opt-15.c
index 2cf73da151c..e2395d4dfeb 100644
--- a/gcc/testsuite/gcc.c-torture/execute/string-opt-15.c
+++ b/gcc/testsuite/gcc.c-torture/execute/string-opt-15.c
@@ -39,7 +39,7 @@ main ()
should abort. */
__attribute__ ((noinline))
static int
-memcmp (const char *p1, const char *p2, size_t len)
+memcmp (const void *p1, const void *p2, size_t len)
{
abort ();
}
diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-25.x b/gcc/testsuite/gcc.c-torture/execute/va-arg-25.x
index 1658fbcc8ca..ff301be355a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/va-arg-25.x
+++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-25.x
@@ -1,12 +1,24 @@
-# This doesn't work on sparc*-*-*.
+# This doesn't work on SPARC 64-bit.
-set torture_eval_before_compile {
- global compiler_conditional_xfail_data
- set compiler_conditional_xfail_data {
- "PR target/12916" \
- { "sparc*-*-*" } \
- { "*" } \
- { "" }
+if { [istarget "sparc64-*-*"] || [istarget "sparcv9-*-*"] } {
+ set torture_eval_before_compile {
+ global compiler_conditional_xfail_data
+ set compiler_conditional_xfail_data {
+ "PR target/12916" \
+ { "*-*-*" } \
+ { "*" } \
+ { "-m32" }
+ }
+ }
+} elseif { [istarget "sparc-*-*"] } {
+ set torture_eval_before_compile {
+ global compiler_conditional_xfail_data
+ set compiler_conditional_xfail_data {
+ "PR target/12916" \
+ { "*-*-*" } \
+ { "-m64" } \
+ { "" }
+ }
}
}
diff --git a/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c b/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
index 3efdcf5a038..7e90cc08f5e 100644
--- a/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
@@ -1,3 +1,4 @@
+/* { dg-options "-finput-charset=utf-8" } */
typedef __WCHAR_TYPE__ wchar_t;
wchar_t x[] = L"Ä";
wchar_t y = L'Ä';
diff --git a/gcc/testsuite/gcc.dg/20000724-1.c b/gcc/testsuite/gcc.dg/20000724-1.c
index 5027d6e9746..3c4f2c39409 100644
--- a/gcc/testsuite/gcc.dg/20000724-1.c
+++ b/gcc/testsuite/gcc.dg/20000724-1.c
@@ -22,7 +22,7 @@ int baz(void *x)
void do_check (struct s *) asm ("do_check") __attribute__((regparm(1)));
-void do_check(struct s *x)
+void __attribute__((regparm(1))) do_check(struct s *x)
{
if (x->a.a || x->b || x->c.a.a)
abort();
diff --git a/gcc/testsuite/gcc.dg/20021014-1.c b/gcc/testsuite/gcc.dg/20021014-1.c
index 1e2b76c7614..67f88ae2f6b 100644
--- a/gcc/testsuite/gcc.dg/20021014-1.c
+++ b/gcc/testsuite/gcc.dg/20021014-1.c
@@ -1,17 +1,9 @@
/* { dg-do run } */
-/* { dg-require-profiling "" } */
+/* { dg-require-profiling "-p" } */
/* { dg-options "-O2 -p" } */
/* { dg-options "-O2 -p -static" { target hppa*-*-hpux* } } */
/* { dg-error "profiler" "No profiler support" { target xstormy16-*-* } 0 } */
/* { dg-error "" "consider using `-pg' instead of `-p' with gprof(1)" { target *-*-freebsd* } 0 } */
-/* Support for -p on solaris2 relies on mcrt1.o which comes with the
- vendor compiler. We cannot reiably predict the directory where the
- vendor compiler (and thus mcrt1.o) is installed so we can't
- necessarily find mcrt1.o even if we have it. */
-/* { dg-error "mcrt1.o" "Optional vendor profiler support missing" { target *-*-solaris2* } 0 } */
-/* Support for -p on irix relies on libprof1.a which doesn't appear to
- exist on any irix6 system currently posting testsuite results. */
-/* { dg-error "libprof1.a" "Profiler support missing" { target mips*-*-irix* } 0 } */
extern void abort (void);
extern void exit (int);
diff --git a/gcc/testsuite/gcc.dg/20030121-1.c b/gcc/testsuite/gcc.dg/20030121-1.c
new file mode 100644
index 00000000000..212d875cbd2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20030121-1.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target powerpc*-*-darwin* } } */
+/* { dg-options "-O2 -force_cpusubtype_ALL -mpowerpc64" } */
+
+long long (*y)(int t);
+long long get_alias_set (int t)
+{
+ return y(t);
+}
diff --git a/gcc/testsuite/gcc.dg/20030123-1.c b/gcc/testsuite/gcc.dg/20030123-1.c
index 1f5858808c4..e4e49ab0916 100644
--- a/gcc/testsuite/gcc.dg/20030123-1.c
+++ b/gcc/testsuite/gcc.dg/20030123-1.c
@@ -1,7 +1,7 @@
/* This used to ICE due to a reload bug on s390*. */
/* { dg-do compile { target s390*-*-* } } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -fno-omit-frame-pointer" } */
void func (char *p);
@@ -10,7 +10,7 @@ void test (void)
char *p = alloca (4096);
long idx;
- asm ("" : "=r" (idx) : : "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
+ asm ("" : "=r" (idx) : : "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12");
func (p + idx + 1);
}
diff --git a/gcc/testsuite/gcc.dg/20040123-1.c b/gcc/testsuite/gcc.dg/20040123-1.c
new file mode 100644
index 00000000000..2a73382dd94
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20040123-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "abort" } } */
+
+extern void abort (void);
+extern char a[];
+
+void foo (void)
+{
+ if ((void *) a == (void *) 0x4000UL)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/20040127-1.c b/gcc/testsuite/gcc.dg/20040127-1.c
new file mode 100644
index 00000000000..0ea6062a5a9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20040127-1.c
@@ -0,0 +1,24 @@
+/* PR target/10904 */
+/* Origin: <kminola@eng.umd.edu> */
+
+/* Verify that the register allocator correctly aligns
+ floating-point registers on SPARC64. */
+
+/* { dg-do assemble } */
+/* { dg-options "-O2" } */
+
+extern int foo1();
+extern int foo2();
+
+void foo(int n, int b)
+{
+ int i, a;
+
+ foo1();
+
+ a = (long)(b * ((double) 0.1));
+
+ for (i=0; i < n; i++) {
+ foo2(a);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/20040127-2.c b/gcc/testsuite/gcc.dg/20040127-2.c
new file mode 100644
index 00000000000..6e56dd8fc10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20040127-2.c
@@ -0,0 +1,32 @@
+/* PR target/13058 */
+/* Origin: Lloyd Parkes <lloyd@must-have-coffee.gen.nz> */
+/* Reduced testcase by Falk Hueffner <falk@debian.org> */
+
+/* Verify that the register allocator correctly aligns
+ floating-point registers on SPARC64. */
+
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+typedef struct { int ThumbnailSize; } ImageInfo_t;
+
+double ConvertAnyFormat(void)
+{
+ return 0;
+}
+
+void ProcessExifDir(ImageInfo_t *ImageInfoP, int NumDirEntries)
+{
+ unsigned int ThumbnailSize;
+
+ for (; NumDirEntries;) {
+ Get16u();
+ switch (NumDirEntries) {
+ case 0x0201:
+ case 0x0202:
+ ThumbnailSize = ConvertAnyFormat();
+ }
+ }
+
+ ImageInfoP->ThumbnailSize = ThumbnailSize;
+}
diff --git a/gcc/testsuite/gcc.dg/20040217-1.c b/gcc/testsuite/gcc.dg/20040217-1.c
new file mode 100644
index 00000000000..7ca7388fe7c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20040217-1.c
@@ -0,0 +1,19 @@
+/* This used to ICE on s390x due to a bug in simplify_if_then_else. */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+extern void use (int);
+void test (void)
+{
+ union
+ {
+ unsigned long ul;
+ signed char sc;
+ } u;
+
+ u.sc = 8;
+ u.sc &= 25;
+
+ use (u.sc);
+}
+
diff --git a/gcc/testsuite/gcc.dg/991214-1.c b/gcc/testsuite/gcc.dg/991214-1.c
index c8e3a04049d..68b6b927916 100644
--- a/gcc/testsuite/gcc.dg/991214-1.c
+++ b/gcc/testsuite/gcc.dg/991214-1.c
@@ -4,7 +4,7 @@
/* Test against a problem with the combiner substituting explicit hard reg
references when it shouldn't. */
void foo (int, int) __attribute__ ((regparm (3)));
-void foo (int x, int y)
+void __attribute__((regparm(3))) foo (int x, int y)
{
__asm__ __volatile__("" : : "d" (x), "r" (y));
}
diff --git a/gcc/testsuite/gcc.dg/always_inline.c b/gcc/testsuite/gcc.dg/always_inline.c
index 9480470a95a..2177f642f60 100644
--- a/gcc/testsuite/gcc.dg/always_inline.c
+++ b/gcc/testsuite/gcc.dg/always_inline.c
@@ -1,18 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Winline -O2" } */
#include <stdarg.h>
-inline __attribute__ ((always_inline)) void t(void); /* { dg-error "body not available" "" } */
-void
-q(void)
-{
- t(); /* { dg-error "called from here" "" } */
-}
-inline __attribute__ ((always_inline)) void
-q2(void)
-{ /* { dg-error "recursive" "" } */
- q2(); /* { dg-error "called from here" "" } */
- q2(); /* { dg-error "called from here" "" } */
-}
inline __attribute__ ((always_inline)) void
e(int t, ...)
{ /* { dg-error "variable argument" "" } */
diff --git a/gcc/testsuite/gcc.dg/always_inline2.c b/gcc/testsuite/gcc.dg/always_inline2.c
new file mode 100644
index 00000000000..fa6528d1fac
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/always_inline2.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-Winline -O2" } */
+inline __attribute__ ((always_inline)) void t(void); /* { dg-error "body not available" "" } */
+void
+q(void)
+{
+ t(); /* { dg-error "called from here" "" } */
+}
diff --git a/gcc/testsuite/gcc.dg/always_inline3.c b/gcc/testsuite/gcc.dg/always_inline3.c
new file mode 100644
index 00000000000..b183770adc0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/always_inline3.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-Winline -O2" } */
+inline __attribute__ ((always_inline)) void
+q2(void)
+{ /* { dg-error "recursive" "" } */
+ q2(); /* { dg-error "called from here" "" } */
+ q2(); /* { dg-error "called from here" "" } */
+}
diff --git a/gcc/testsuite/gcc.dg/arm-mmx-1.c b/gcc/testsuite/gcc.dg/arm-mmx-1.c
new file mode 100644
index 00000000000..4f95d8d1fed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/arm-mmx-1.c
@@ -0,0 +1,26 @@
+/* Verify that if IP is saved to ensure stack alignment, we don't load
+ it into sp. */
+/* { dg-do compile { target arm*-*-* strongarm*-*-* xscale*-*-*} } */
+/* { dg-options "-O -mno-apcs-frame -mcpu=iwmmxt" } */
+/* { dg-final { scan-assembler "ldmfd\[ ]sp!.*ip,\[ ]*pc" } } */
+
+/* This function uses all the call-saved registers, namely r4, r5, r6,
+ r7, r8, r9, sl, fp. Since we also save pc, that leaves an odd
+ number of registers, and the compiler will push ip to align the
+ stack. Make sure that we restore ip into ip, not into sp as is
+ done when using a frame pointer. The -mno-apcs-frame option
+ permits the frame pointer to be used as an ordinary register. */
+int
+foo(int *a, int *b, int *c, int *d, int *tot)
+{
+ int i, j, k, l, m, n, o;
+
+ *tot = 0;
+ for (i = *a; i < *b; i += *c)
+ for (j = *a; j < *b; j += *d)
+ for (k = *a; k < *c; k += *d)
+ for (l = *b; k < *c; k += *d)
+ for (m = *d; k < *c; k += *b)
+ *tot += i + j + k + l + m;
+ return *tot;
+}
diff --git a/gcc/testsuite/gcc.dg/builtins-30.c b/gcc/testsuite/gcc.dg/builtins-30.c
new file mode 100644
index 00000000000..c910fe4e7e6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtins-30.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -Wshadow" } */
+
+extern double strtod (const char *, char **);
+#define UNUSED __attribute__ ((unused))
+
+/* A built-in function may be overridden by an old-style definition
+ specifying too few arguments... */
+double nan ()
+{ /* { dg-warning "shadowing built-in" } */
+ return strtod ("nan", 0);
+}
+
+/* the right number, but the wrong type, arguments... */
+float nanf (foo)
+ int foo UNUSED; /* { dg-warning "shadowing built-in" } */
+{
+ return strtod ("nan", 0);
+}
+
+/* or too many arguments. */
+long double nanl (foo, bar)
+ const char *foo UNUSED; /* { dg-warning "shadowing built-in" } */
+ int bar UNUSED;
+{
+ return strtod ("nan", 0);
+}
diff --git a/gcc/testsuite/gcc.dg/builtins-config.h b/gcc/testsuite/gcc.dg/builtins-config.h
index 11f7c11ee4f..220a2aa8518 100644
--- a/gcc/testsuite/gcc.dg/builtins-config.h
+++ b/gcc/testsuite/gcc.dg/builtins-config.h
@@ -9,7 +9,9 @@
indicating whether or not TARGET_C99_FUNCTIONS is set, but it does
not presently do that.) */
-#if defined(sun)
+#if defined(__hppa) && defined(__hpux)
+/* PA HP-UX doesn't have the entire C99 runtime. */
+#elif defined(sun)
/* Solaris doesn't have the entire C99 runtime. */
#else
/* Newlib has the "f" variants of the math functions, but not the "l"
diff --git a/gcc/testsuite/gcc.dg/c90-init-1.c b/gcc/testsuite/gcc.dg/c90-init-1.c
index 1ea0bdb4006..68308d3e266 100644
--- a/gcc/testsuite/gcc.dg/c90-init-1.c
+++ b/gcc/testsuite/gcc.dg/c90-init-1.c
@@ -7,10 +7,10 @@ struct A {
int B;
short C[2];
};
-int a[10] = { 10, [4] = 15 }; /* { dg-error "ISO C89 forbids specifying subobject to initialize" } */
-struct A b = { .B = 2 }; /* { dg-error "ISO C89 forbids specifying subobject to initialize" } */
-struct A c[] = { [3].C[1] = 1 }; /* { dg-error "ISO C89 forbids specifying subobject to initialize" } */
-struct A d[] = { [4 ... 6].C[0 ... 1] = 2 }; /* { dg-error "(forbids specifying range of elements to initialize)|(ISO C89 forbids specifying subobject to initialize)" } */
+int a[10] = { 10, [4] = 15 }; /* { dg-error "ISO (C89|C90) forbids specifying subobject to initialize" } */
+struct A b = { .B = 2 }; /* { dg-error "ISO (C89|C90) forbids specifying subobject to initialize" } */
+struct A c[] = { [3].C[1] = 1 }; /* { dg-error "ISO (C89|C90) forbids specifying subobject to initialize" } */
+struct A d[] = { [4 ... 6].C[0 ... 1] = 2 }; /* { dg-error "(forbids specifying range of elements to initialize)|(ISO (C89|C90) forbids specifying subobject to initialize)" } */
int e[] = { [2] 2 }; /* { dg-error "use of designated initializer without" } */
struct A f = { C: { 0, 1 } }; /* { dg-error "use of designated initializer with " } */
int g;
diff --git a/gcc/testsuite/gcc.dg/cast-function-1.c b/gcc/testsuite/gcc.dg/cast-function-1.c
index 44cb1839623..8ed7d5da41c 100644
--- a/gcc/testsuite/gcc.dg/cast-function-1.c
+++ b/gcc/testsuite/gcc.dg/cast-function-1.c
@@ -22,19 +22,19 @@ void bar(void)
int i;
str_t s;
- d = ((double (*) (int)) foo1) (i); /* { dg-warning "non-compatible" } */
- i = ((int (*) (double)) foo1) (d); /* { dg-warning "non-compatible" } */
- s = ((str_t (*) (int)) foo1) (i); /* { dg-warning "non-compatible" } */
- ((void (*) (int)) foo1) (d); /* { dg-warning "non-compatible" } */
- i = ((int (*) (int)) foo1) (i); /* { dg-bogus "non-compatible" } */
- (void) foo1 (i); /* { dg-bogus "non-compatible" } */
-
- d = ((double (*) (int)) foo2) (i); /* { dg-warning "non-compatible" } */
- i = ((int (*) (double)) foo2) (d); /* { dg-bogus "non-compatible" } */
- s = ((str_t (*) (int)) foo2) (i); /* { dg-warning "non-compatible" } */
- ((void (*) (int)) foo2) (d); /* { dg-warning "non-compatible" } */
- i = ((int (*) (int)) foo2) (i); /* { dg-bogus "non-compatible" } */
- (void) foo2 (i); /* { dg-bogus "non-compatible" } */
+ d = ((double (*) (int)) foo1) (i); /* { dg-warning "non-compatible|abort" } */
+ i = ((int (*) (double)) foo1) (d); /* { dg-warning "non-compatible|abort" } */
+ s = ((str_t (*) (int)) foo1) (i); /* { dg-warning "non-compatible|abort" } */
+ ((void (*) (int)) foo1) (d); /* { dg-warning "non-compatible|abort" } */
+ i = ((int (*) (int)) foo1) (i); /* { dg-bogus "non-compatible|abort" } */
+ (void) foo1 (i); /* { dg-bogus "non-compatible|abort" } */
+
+ d = ((double (*) (int)) foo2) (i); /* { dg-warning "non-compatible|abort" } */
+ i = ((int (*) (double)) foo2) (d); /* { dg-bogus "non-compatible|abort" } */
+ s = ((str_t (*) (int)) foo2) (i); /* { dg-warning "non-compatible|abort" } */
+ ((void (*) (int)) foo2) (d); /* { dg-warning "non-compatible|abort" } */
+ i = ((int (*) (int)) foo2) (i); /* { dg-bogus "non-compatible|abort" } */
+ (void) foo2 (i); /* { dg-bogus "non-compatible|abort" } */
}
int foo1(int arg)
diff --git a/gcc/testsuite/gcc.dg/cleanup-5.c b/gcc/testsuite/gcc.dg/cleanup-5.c
index f5306db4752..4b8468aa733 100644
--- a/gcc/testsuite/gcc.dg/cleanup-5.c
+++ b/gcc/testsuite/gcc.dg/cleanup-5.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* alpha*-*-linux* powerpc*-*-linux* s390*-*-linux* sparc*-*-linux* mips*-*-linux* } } */
/* { dg-options "-fexceptions" } */
/* Verify that cleanups work with exception handling. */
diff --git a/gcc/testsuite/gcc.dg/cpp/assert4.c b/gcc/testsuite/gcc.dg/cpp/assert4.c
index e71baf2bb35..20063b96e2e 100644
--- a/gcc/testsuite/gcc.dg/cpp/assert4.c
+++ b/gcc/testsuite/gcc.dg/cpp/assert4.c
@@ -360,10 +360,19 @@
#endif
#if defined __powerpc__
-# if !#cpu(powerpc) || !#machine(powerpc)
-# error
-# endif
-#elif #cpu(powerpc) || #machine(powerpc)
+# if defined __powerpc64__
+# if (#cpu(powerpc) || #machine(powerpc) \
+ || !#cpu(powerpc64) || !#machine(powerpc64))
+# error
+# endif
+# else
+# if (!#cpu(powerpc) || !#machine(powerpc) \
+ || #cpu(powerpc64) || #machine(powerpc64))
+# error
+# endif
+# endif
+#elif (#cpu(powerpc) || #machine(powerpc) \
+ || #cpu(powerpc64) || #machine(powerpc64))
# error
#endif
diff --git a/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c b/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c
new file mode 100644
index 00000000000..c00403f16ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c
@@ -0,0 +1,11 @@
+/* Test for commas in constant expressions in #if: not permitted in C90
+ but permitted in unevaluated subexpressions in C99. */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do preprocess } */
+/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
+
+#if (1, 2) /* { dg-error "comma" "evaluated comma" } */
+#endif
+
+#if 1 || (1, 2) /* { dg-error "comma" "unevaluated comma" } */
+#endif
diff --git a/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c b/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c
new file mode 100644
index 00000000000..cb8eb6f7363
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c
@@ -0,0 +1,11 @@
+/* Test for commas in constant expressions in #if: not permitted in C90
+ but permitted in unevaluated subexpressions in C99. */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do preprocess } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+
+#if (1, 2) /* { dg-error "comma" "evaluated comma" } */
+#endif
+
+#if 1 || (1, 2)
+#endif
diff --git a/gcc/testsuite/gcc.dg/darwin-longlong.c b/gcc/testsuite/gcc.dg/darwin-longlong.c
new file mode 100644
index 00000000000..1e7b0ceb058
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/darwin-longlong.c
@@ -0,0 +1,38 @@
+/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-options "-mcpu=G5" } */
+
+#include <signal.h>
+
+void
+sig_ill_handler (int sig)
+{
+ exit(0);
+}
+
+
+int msw(long long in)
+{
+ union {
+ long long ll;
+ int i[2];
+ } ud;
+ ud.ll = in;
+ return ud.i[0];
+}
+
+int main()
+{
+
+ /* Exit on systems without 64bit instructions. */
+ signal (SIGILL, sig_ill_handler);
+#ifdef __MACH__
+ asm volatile ("extsw r0,r0");
+#else
+ asm volatile ("extsw 0,0");
+#endif
+ signal (SIGILL, SIG_DFL);
+
+ if (msw(1) != 0)
+ abort();
+ exit(0);
+}
diff --git a/gcc/testsuite/gcc.dg/debug/20020327-1.c b/gcc/testsuite/gcc.dg/debug/20020327-1.c
index 3ad1b1b98a8..49d00a16cc7 100644
--- a/gcc/testsuite/gcc.dg/debug/20020327-1.c
+++ b/gcc/testsuite/gcc.dg/debug/20020327-1.c
@@ -1,4 +1,12 @@
/* { dg-do link } */
+#ifndef __powerpc64__
+/* Fails on powerpc64-linux due to the function Letext using a global
+ .Letext symbol that conflicts with .Letext emitted by gcc with
+ -gstabs. Some day the linker will be fixed to not require global
+ "dot" syms, but for now disable this test entirely for powerpc64.
+ Using xfail doesn't work, nor does dg-excess-errors because some
+ combinations of command line options won't cause this test to fail. */
void Letext (void) { }
+#endif
int main() { return 0; }
diff --git a/gcc/testsuite/gcc.dg/debug/debug-7.c b/gcc/testsuite/gcc.dg/debug/debug-7.c
new file mode 100644
index 00000000000..d424e91f304
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/debug-7.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-dA" } */
+/* PR debug/12934. */
+
+static inline int foo ()
+{
+ return 42;
+}
+
+void bar (int *);
+
+void baz ()
+{
+ int a[foo ()];
+ bar (a);
+}
diff --git a/gcc/testsuite/gcc.dg/fwritable-strings-1.c b/gcc/testsuite/gcc.dg/fwritable-strings-1.c
new file mode 100644
index 00000000000..652a0845fd0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fwritable-strings-1.c
@@ -0,0 +1,18 @@
+/* PR c/12818 */
+/* Origin: <fnf@ninemoons.com> */
+
+/* { dg-do run } */
+/* { dg-options "-fwritable-strings" } */
+/* { dg-error "-fwritable-strings is deprecated" "" { target *-*-* } 0 } */
+
+extern void abort(void);
+
+char *names[] = {"alice", "bob", "john"};
+
+int main (void)
+{
+ if (names[1][0] != 'b')
+ abort();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/i386-asm-1.c b/gcc/testsuite/gcc.dg/i386-asm-1.c
index aae0de845b3..bf7aa1d0c4b 100644
--- a/gcc/testsuite/gcc.dg/i386-asm-1.c
+++ b/gcc/testsuite/gcc.dg/i386-asm-1.c
@@ -2,7 +2,7 @@
/* { dg-do run { target i?86-*-* } } */
/* { dg-options "-O2" } */
-static int bar(int x) __asm__("bar");
+static int bar(int x) __asm__("bar") __attribute__((regparm(1)));
static int __attribute__((regparm(1), noinline, used))
bar(int x)
{
diff --git a/gcc/testsuite/gcc.dg/i386-cpuid.h b/gcc/testsuite/gcc.dg/i386-cpuid.h
index f8e72dbb5d9..dc300e4482b 100644
--- a/gcc/testsuite/gcc.dg/i386-cpuid.h
+++ b/gcc/testsuite/gcc.dg/i386-cpuid.h
@@ -2,6 +2,7 @@
Used by 20020523-2.c and i386-sse-6.c, and possibly others. */
/* Plagarized from 20020523-2.c. */
+#define bit_CMOV (1 << 15)
#define bit_MMX (1 << 23)
#define bit_SSE (1 << 25)
#define bit_SSE2 (1 << 26)
@@ -17,27 +18,39 @@ i386_cpuid (void)
{
int fl1, fl2;
- /* See if we can use cpuid. */
+#ifndef __x86_64__
+ /* See if we can use cpuid. On AMD64 we always can. */
__asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;"
"pushl %0; popfl; pushfl; popl %0; popfl"
: "=&r" (fl1), "=&r" (fl2)
: "i" (0x00200000));
if (((fl1 ^ fl2) & 0x00200000) == 0)
return (0);
+#endif
/* Host supports cpuid. See if cpuid gives capabilities, try
CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we
don't need their CPUID values here, and %ebx may be the PIC
register. */
- __asm__ ("push %%ecx ; push %%ebx ; cpuid ; pop %%ebx ; pop %%ecx"
+#ifdef __x86_64__
+ __asm__ ("pushq %%rcx; pushq %%rbx; cpuid; popq %%rbx; popq %%rcx"
+ : "=a" (fl1) : "0" (0) : "rdx", "cc");
+#else
+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx"
: "=a" (fl1) : "0" (0) : "edx", "cc");
+#endif
if (fl1 == 0)
return (0);
/* Invoke CPUID(1), return %edx; caller can examine bits to
determine what's supported. */
- __asm__ ("push %%ecx ; push %%ebx ; cpuid ; pop %%ebx ; pop %%ecx" : "=d" (fl2) : "a" (1) : "cc");
+#ifdef __x86_64__
+ __asm__ ("pushq %%rcx; pushq %%rbx; cpuid; popq %%rbx; popq %%rcx"
+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc");
+#else
+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx"
+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc");
+#endif
return fl2;
}
-
diff --git a/gcc/testsuite/gcc.dg/i386-mmx-4.c b/gcc/testsuite/gcc.dg/i386-mmx-4.c
new file mode 100644
index 00000000000..071baf7860c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/i386-mmx-4.c
@@ -0,0 +1,245 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -mmmx" } */
+#include <mmintrin.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "i386-cpuid.h"
+
+#ifndef NOINLINE
+#define NOINLINE __attribute__ ((noinline))
+#endif
+
+#define SHIFT (4)
+
+typedef union {
+ __m64 v;
+ unsigned char c[8];
+ unsigned short int s[4];
+ unsigned long long t;
+ unsigned int u[2];
+}vecInWord;
+
+void mmx_tests (void) NOINLINE;
+void dump64_16 (char *, char *, vecInWord);
+void dump64_32 (char *, char *, vecInWord);
+void dump64_64 (char *, char *, vecInWord);
+int check (const char *, const char *[]);
+
+char buf[8000];
+char comparison[8000];
+static int errors = 0;
+
+vecInWord a64, b64, c64, d64, e64;
+__m64 m64_16, s64, m64_32, m64_64;
+
+const char *reference_mmx[] = {
+ "_mm_srai_pi16 0012 0012 0012 0012 \n",
+ "_mm_sra_pi16 0012 0012 0012 0012 \n",
+ "_mm_srai_pi32 00123456 00123456 \n",
+ "_mm_sra_pi32 00123456 00123456 \n",
+ "_mm_srli_pi16 0012 0012 0012 0012 \n",
+ "_mm_srl_pi16 0012 0012 0012 0012 \n",
+ "_mm_srli_pi32 00123456 00123456 \n",
+ "_mm_srl_pi32 00123456 00123456 \n",
+ "_mm_srli_si64 00123456789abcde\n",
+ "_mm_srl_si64 00123456789abcde\n",
+ "_mm_slli_pi16 1230 1230 1230 1230 \n",
+ "_mm_sll_pi16 1230 1230 1230 1230 \n",
+ "_mm_slli_pi32 12345670 12345670 \n",
+ "_mm_sll_pi32 12345670 12345670 \n",
+ "_mm_slli_si64 123456789abcdef0\n",
+ "_mm_sll_si64 123456789abcdef0\n",
+ ""
+};
+
+int main()
+{
+ unsigned long cpu_facilities;
+
+ cpu_facilities = i386_cpuid ();
+
+ if ((cpu_facilities & bit_MMX) == 0)
+ exit (0);
+
+ d64.u[0] = 0x01234567;
+ d64.u[1] = 0x01234567;
+
+ m64_32 = d64.v;
+
+ e64.t = 0x0123456789abcdefULL;
+
+ m64_64 = e64.v;
+
+ a64.s[0] = 0x0123;
+ a64.s[1] = 0x0123;
+ a64.s[2] = 0x0123;
+ a64.s[3] = 0x0123;
+
+ m64_16 = a64.v;
+
+ b64.s[0] = SHIFT;
+ b64.s[1] = 0;
+ b64.s[2] = 0;
+ b64.s[3] = 0;
+
+ s64 = b64.v;
+
+ if (cpu_facilities & bit_MMX)
+ {
+ mmx_tests();
+ check (buf, reference_mmx);
+#ifdef DEBUG
+ printf ("mmx testing:\n");
+ printf (buf);
+ printf ("\ncomparison:\n");
+ printf (comparison);
+#endif
+ buf[0] = '\0';
+ }
+
+ if (errors != 0)
+ abort ();
+ exit (0);
+}
+
+void NOINLINE
+mmx_tests (void)
+{
+ /* psraw */
+ c64.v = _mm_srai_pi16 (m64_16, SHIFT);
+ dump64_16 (buf, "_mm_srai_pi16", c64);
+ c64.v = _mm_sra_pi16 (m64_16, s64);
+ dump64_16 (buf, "_mm_sra_pi16", c64);
+
+ /* psrad */
+ c64.v = _mm_srai_pi32 (m64_32, SHIFT);
+ dump64_32 (buf, "_mm_srai_pi32", c64);
+ c64.v = _mm_sra_pi32 (m64_32, s64);
+ dump64_32 (buf, "_mm_sra_pi32", c64);
+
+ /* psrlw */
+ c64.v = _mm_srli_pi16 (m64_16, SHIFT);
+ dump64_16 (buf, "_mm_srli_pi16", c64);
+ c64.v = _mm_srl_pi16 (m64_16, s64);
+ dump64_16 (buf, "_mm_srl_pi16", c64);
+
+ /* psrld */
+ c64.v = _mm_srli_pi32 (m64_32, SHIFT);
+ dump64_32 (buf, "_mm_srli_pi32", c64);
+ c64.v = _mm_srl_pi32 (m64_32, s64);
+ dump64_32 (buf, "_mm_srl_pi32", c64);
+
+ /* psrlq */
+ c64.v = _mm_srli_si64 (m64_64, SHIFT);
+ dump64_64 (buf, "_mm_srli_si64", c64);
+ c64.v = _mm_srl_si64 (m64_64, s64);
+ dump64_64 (buf, "_mm_srl_si64", c64);
+
+ /* psllw */
+ c64.v = _mm_slli_pi16 (m64_16, SHIFT);
+ dump64_16 (buf, "_mm_slli_pi16", c64);
+ c64.v = _mm_sll_pi16 (m64_16, s64);
+ dump64_16 (buf, "_mm_sll_pi16", c64);
+
+ /* pslld */
+ c64.v = _mm_slli_pi32 (m64_32, SHIFT);
+ dump64_32 (buf, "_mm_slli_pi32", c64);
+ c64.v = _mm_sll_pi32 (m64_32, s64);
+ dump64_32 (buf, "_mm_sll_pi32", c64);
+
+ /* psllq */
+ c64.v = _mm_slli_si64 (m64_64, SHIFT);
+ dump64_64 (buf, "_mm_slli_si64", c64);
+ c64.v = _mm_sll_si64 (m64_64, s64);
+ dump64_64 (buf, "_mm_sll_si64", c64);
+}
+
+void
+dump64_16 (char *buf, char *name, vecInWord x)
+{
+ int i;
+ char *p = buf + strlen (buf);
+
+ sprintf (p, "%s ", name);
+ p += strlen (p);
+
+ for (i=0; i<4; i++)
+ {
+ sprintf (p, "%4.4x ", x.s[i]);
+ p += strlen (p);
+ }
+ strcat (p, "\n");
+}
+
+void
+dump64_32 (char *buf, char *name, vecInWord x)
+{
+ int i;
+ char *p = buf + strlen (buf);
+
+ sprintf (p, "%s ", name);
+ p += strlen (p);
+
+ for (i=0; i<2; i++)
+ {
+ sprintf (p, "%8.8x ", x.u[i]);
+ p += strlen (p);
+ }
+ strcat (p, "\n");
+}
+
+void
+dump64_64 (char *buf, char *name, vecInWord x)
+{
+ char *p = buf + strlen (buf);
+
+ sprintf (p, "%s ", name);
+ p += strlen (p);
+
+ sprintf (p, "%16.16llx\n", x.t);
+}
+
+int
+check (const char *input, const char *reference[])
+{
+ int broken, i, j, len;
+ const char *p_input;
+ char *p_comparison;
+ int new_errors = 0;
+
+ p_comparison = &comparison[0];
+ p_input = input;
+
+ for (i = 0; *reference[i] != '\0'; i++)
+ {
+ broken = 0;
+ len = strlen (reference[i]);
+ for (j = 0; j < len; j++)
+ {
+ /* Ignore the terminating NUL characters at the end of every string in 'reference[]'. */
+ if (!broken && *p_input != reference[i][j])
+ {
+ *p_comparison = '\0';
+ strcat (p_comparison, " >>> ");
+ p_comparison += strlen (p_comparison);
+ new_errors++;
+ broken = 1;
+ }
+ *p_comparison = *p_input;
+ p_comparison++;
+ p_input++;
+ }
+ if (broken)
+ {
+ *p_comparison = '\0';
+ strcat (p_comparison, "expected:\n");
+ strcat (p_comparison, reference[i]);
+ p_comparison += strlen (p_comparison);
+ }
+ }
+ *p_comparison = '\0';
+ strcat (p_comparison, new_errors ? "failure\n\n" : "O.K.\n\n") ;
+ errors += new_errors;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/i386-regparm.c b/gcc/testsuite/gcc.dg/i386-regparm.c
new file mode 100644
index 00000000000..18206ea7fc3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/i386-regparm.c
@@ -0,0 +1,9 @@
+/* { dg-do compile { target i?86-*-* } } */
+/* { dg-options "-W -Wall" } */
+
+/* Verify that GCC correctly detects non-matching regparm attributes. */
+int __attribute__((regparm(3))) f (void); /* { dg-error "previous" } */
+
+int __attribute__((regparm(2))) f (void) { /* { dg-error "conflicting" } */
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/i386-sse-6.c b/gcc/testsuite/gcc.dg/i386-sse-6.c
index ca18132ce30..6642891485b 100644
--- a/gcc/testsuite/gcc.dg/i386-sse-6.c
+++ b/gcc/testsuite/gcc.dg/i386-sse-6.c
@@ -1,6 +1,9 @@
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -msse2" } */
#include <xmmintrin.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include "i386-cpuid.h"
#ifndef NOINLINE
@@ -11,26 +14,13 @@
typedef union {
__m128i v;
- unsigned long s[4];
+ unsigned int s[4];
unsigned short int t[8];
unsigned long long u[2];
unsigned char c[16];
}vecInLong;
-typedef union {
- __m64 v;
- unsigned char c[8];
- unsigned short int s[4];
- unsigned long long t;
- unsigned int u[2];
-}vecInWord;
-
-void mmx_tests (void) NOINLINE;
-void sse_tests (void) NOINLINE;
void sse2_tests (void) NOINLINE;
-void dump64_16 (char *, char *, vecInWord);
-void dump64_32 (char *, char *, vecInWord);
-void dump64_64 (char *, char *, vecInWord);
void dump128_16 (char *, char *, vecInLong);
void dump128_32 (char *, char *, vecInLong);
void dump128_64 (char *, char *, vecInLong);
@@ -42,35 +32,9 @@ char comparison[8000];
static int errors = 0;
vecInLong a128, b128, c128, d128, e128, f128;
-vecInWord a64, b64, c64, d64, e64;
__m128i m128_16, m128_32, s128, m128_64, m128_128;
__m64 m64_16, s64, m64_32, m64_64;
-const char *reference_mmx[] = {
- "_mm_srai_pi16 0012 0012 0012 0012 \n",
- "_mm_sra_pi16 0012 0012 0012 0012 \n",
- "_mm_srai_pi32 00123456 00123456 \n",
- "_mm_sra_pi32 00123456 00123456 \n",
- "_mm_srli_pi16 0012 0012 0012 0012 \n",
- "_mm_srl_pi16 0012 0012 0012 0012 \n",
- "_mm_srli_pi32 00123456 00123456 \n",
- "_mm_srl_pi32 00123456 00123456 \n",
- "_mm_srli_si64 00123456789abcde\n",
- "_mm_srl_si64 00123456789abcde\n",
- "_mm_slli_pi16 1230 1230 1230 1230 \n",
- "_mm_sll_pi16 1230 1230 1230 1230 \n",
- "_mm_slli_pi32 12345670 12345670 \n",
- "_mm_sll_pi32 12345670 12345670 \n",
- "_mm_slli_si64 123456789abcdef0\n",
- "_mm_sll_si64 123456789abcdef0\n",
- ""
-};
-
-const char *reference_sse[] = {
- "_mm_shuffle_pi16 0123 4567 89ab cdef \n",
- ""
-};
-
const char *reference_sse2[] = {
"_mm_srai_epi16 0012 0012 0012 0012 0012 0012 0012 0012 \n",
"_mm_sra_epi16 0012 0012 0012 0012 0012 0012 0012 0012 \n",
@@ -98,12 +62,13 @@ const char *reference_sse2[] = {
int main()
{
- unsigned long *p;
unsigned long cpu_facilities;
cpu_facilities = i386_cpuid ();
- if (!cpu_facilities) /* If host has no vector support, pass. */
+ if ((cpu_facilities & (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
+ != (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
+ /* If host has no vector support, pass. */
exit (0);
a128.s[0] = 0x01234567;
@@ -136,22 +101,6 @@ int main()
m128_128 = e128.v;
- d64.u[0] = 0x01234567;
- d64.u[1] = 0x01234567;
-
- m64_32 = d64.v;
-
- e64.t = 0x0123456789abcdefULL;
-
- m64_64 = e64.v;
-
- a64.s[0] = 0x0123;
- a64.s[1] = 0x0123;
- a64.s[2] = 0x0123;
- a64.s[3] = 0x0123;
-
- m64_16 = a64.v;
-
b128.s[0] = SHIFT;
b128.s[1] = 0;
b128.s[2] = 0;
@@ -159,39 +108,6 @@ int main()
s128 = b128.v;
- b64.s[0] = SHIFT;
- b64.s[1] = 0;
- b64.s[2] = 0;
- b64.s[3] = 0;
-
- s64 = b64.v;
-
- if (cpu_facilities & bit_MMX)
- {
- mmx_tests();
- check (buf, reference_mmx);
-#ifdef DEBUG
- printf ("mmx testing:\n");
- printf (buf);
- printf ("\ncomparison:\n");
- printf (comparison);
-#endif
- buf[0] = '\0';
- }
-
- if (cpu_facilities & bit_SSE)
- {
- sse_tests();
- check (buf, reference_sse);
-#ifdef DEBUG
- printf ("sse testing:\n");
- printf (buf);
- printf ("\ncomparison:\n");
- printf (comparison);
-#endif
- buf[0] = '\0';
- }
-
if (cpu_facilities & bit_SSE2)
{
sse2_tests();
@@ -211,66 +127,6 @@ int main()
}
void NOINLINE
-mmx_tests (void)
-{
- /* psraw */
- c64.v = _mm_srai_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_srai_pi16", c64);
- c64.v = _mm_sra_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_sra_pi16", c64);
-
- /* psrad */
- c64.v = _mm_srai_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_srai_pi32", c64);
- c64.v = _mm_sra_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_sra_pi32", c64);
-
- /* psrlw */
- c64.v = _mm_srli_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_srli_pi16", c64);
- c64.v = _mm_srl_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_srl_pi16", c64);
-
- /* psrld */
- c64.v = _mm_srli_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_srli_pi32", c64);
- c64.v = _mm_srl_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_srl_pi32", c64);
-
- /* psrlq */
- c64.v = _mm_srli_si64 (m64_64, SHIFT);
- dump64_64 (buf, "_mm_srli_si64", c64);
- c64.v = _mm_srl_si64 (m64_64, s64);
- dump64_64 (buf, "_mm_srl_si64", c64);
-
- /* psllw */
- c64.v = _mm_slli_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_slli_pi16", c64);
- c64.v = _mm_sll_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_sll_pi16", c64);
-
- /* pslld */
- c64.v = _mm_slli_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_slli_pi32", c64);
- c64.v = _mm_sll_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_sll_pi32", c64);
-
- /* psllq */
- c64.v = _mm_slli_si64 (m64_64, SHIFT);
- dump64_64 (buf, "_mm_slli_si64", c64);
- c64.v = _mm_sll_si64 (m64_64, s64);
- dump64_64 (buf, "_mm_sll_si64", c64);
-}
-
-void NOINLINE
-sse_tests (void)
-{
- /* pshufw */
- c64.v = _mm_shuffle_pi16 (m64_64, 0x1b);
- dump64_16 (buf, "_mm_shuffle_pi16", c64);
-}
-
-void NOINLINE
sse2_tests (void)
{
/* psraw */
@@ -345,52 +201,6 @@ sse2_tests (void)
}
void
-dump64_16 (char *buf, char *name, vecInWord x)
-{
- int i;
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
- for (i=0; i<4; i++)
- {
- sprintf (p, "%4.4x ", x.s[i]);
- p += strlen (p);
- }
- strcat (p, "\n");
-}
-
-void
-dump64_32 (char *buf, char *name, vecInWord x)
-{
- int i;
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
- for (i=0; i<2; i++)
- {
- sprintf (p, "%8.8x ", x.u[i]);
- p += strlen (p);
- }
- strcat (p, "\n");
-}
-
-void
-dump64_64 (char *buf, char *name, vecInWord x)
-{
- int i;
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
- sprintf (p, "%16.16llx\n", x.t);
-}
-
-void
dump128_16 (char *buf, char *name, vecInLong x)
{
int i;
@@ -502,4 +312,5 @@ check (const char *input, const char *reference[])
*p_comparison = '\0';
strcat (p_comparison, new_errors ? "failure\n\n" : "O.K.\n\n") ;
errors += new_errors;
+ return 0;
}
diff --git a/gcc/testsuite/gcc.dg/i386-sse-7.c b/gcc/testsuite/gcc.dg/i386-sse-7.c
new file mode 100644
index 00000000000..62e06e94ac8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/i386-sse-7.c
@@ -0,0 +1,139 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -msse" } */
+#include <xmmintrin.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "i386-cpuid.h"
+
+#ifndef NOINLINE
+#define NOINLINE __attribute__ ((noinline))
+#endif
+
+#define SHIFT (4)
+
+typedef union {
+ __m64 v;
+ unsigned char c[8];
+ unsigned short int s[4];
+ unsigned long long t;
+ unsigned int u[2];
+}vecInWord;
+
+void sse_tests (void) NOINLINE;
+void dump64_16 (char *, char *, vecInWord);
+int check (const char *, const char *[]);
+
+char buf[8000];
+char comparison[8000];
+static int errors = 0;
+
+vecInWord c64, e64;
+__m64 m64_64;
+
+const char *reference_sse[] = {
+ "_mm_shuffle_pi16 0123 4567 89ab cdef \n",
+ ""
+};
+
+int main()
+{
+ unsigned long cpu_facilities;
+
+ cpu_facilities = i386_cpuid ();
+
+ if ((cpu_facilities & (bit_MMX | bit_SSE | bit_CMOV))
+ != (bit_MMX | bit_SSE | bit_CMOV))
+ /* If host has no vector support, pass. */
+ exit (0);
+
+ e64.t = 0x0123456789abcdefULL;
+
+ m64_64 = e64.v;
+
+ if (cpu_facilities & bit_SSE)
+ {
+ sse_tests();
+ check (buf, reference_sse);
+#ifdef DEBUG
+ printf ("sse testing:\n");
+ printf (buf);
+ printf ("\ncomparison:\n");
+ printf (comparison);
+#endif
+ buf[0] = '\0';
+ }
+
+ if (errors != 0)
+ abort ();
+ exit (0);
+}
+
+void NOINLINE
+sse_tests (void)
+{
+ /* pshufw */
+ c64.v = _mm_shuffle_pi16 (m64_64, 0x1b);
+ dump64_16 (buf, "_mm_shuffle_pi16", c64);
+}
+
+void
+dump64_16 (char *buf, char *name, vecInWord x)
+{
+ int i;
+ char *p = buf + strlen (buf);
+
+ sprintf (p, "%s ", name);
+ p += strlen (p);
+
+ for (i=0; i<4; i++)
+ {
+ sprintf (p, "%4.4x ", x.s[i]);
+ p += strlen (p);
+ }
+ strcat (p, "\n");
+}
+
+int
+check (const char *input, const char *reference[])
+{
+ int broken, i, j, len;
+ const char *p_input;
+ char *p_comparison;
+ int new_errors = 0;
+
+ p_comparison = &comparison[0];
+ p_input = input;
+
+ for (i = 0; *reference[i] != '\0'; i++)
+ {
+ broken = 0;
+ len = strlen (reference[i]);
+ for (j = 0; j < len; j++)
+ {
+ /* Ignore the terminating NUL characters at the end of every string in 'reference[]'. */
+ if (!broken && *p_input != reference[i][j])
+ {
+ *p_comparison = '\0';
+ strcat (p_comparison, " >>> ");
+ p_comparison += strlen (p_comparison);
+ new_errors++;
+ broken = 1;
+ }
+ *p_comparison = *p_input;
+ p_comparison++;
+ p_input++;
+ }
+ if (broken)
+ {
+ *p_comparison = '\0';
+ strcat (p_comparison, "expected:\n");
+ strcat (p_comparison, reference[i]);
+ p_comparison += strlen (p_comparison);
+ }
+ }
+ *p_comparison = '\0';
+ strcat (p_comparison, new_errors ? "failure\n\n" : "O.K.\n\n") ;
+ errors += new_errors;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/inline-5.c b/gcc/testsuite/gcc.dg/inline-5.c
new file mode 100644
index 00000000000..d72fad65610
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/inline-5.c
@@ -0,0 +1,13 @@
+/* PR middle-end/13448 */
+
+/* { dg-options "-O3" } */
+
+void funct (const int n)
+{
+ n++; /* { dg-error "" } */
+}
+
+int main () {
+ funct (1);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/nest.c b/gcc/testsuite/gcc.dg/nest.c
index 872feade581..264dde26f05 100644
--- a/gcc/testsuite/gcc.dg/nest.c
+++ b/gcc/testsuite/gcc.dg/nest.c
@@ -1,12 +1,9 @@
/* PR 5967, PR 7114 */
/* { dg-do run } */
-/* { dg-require-profiling "" } */
+/* { dg-require-profiling "-pg" } */
/* { dg-options "-O2 -pg" } */
/* { dg-options "-O2 -pg -static" { target hppa*-*-hpux* } } */
/* { dg-error "profiler" "No profiler support" { target xstormy16-*-* } 0 } */
-/* Support for -pg on irix relies on gcrt1.o which doesn't exist yet.
- See: http://gcc.gnu.org/ml/gcc/2002-10/msg00169.html */
-/* { dg-error "gcrt1.o" "Profiler support missing" { target mips*-*-irix* } 0 } */
/* { dg-error "-pg not supported" "Profiler support missing" { target *-*-sco3.2v5* } 0 } */
long foo (long x)
diff --git a/gcc/testsuite/gcc.dg/noncompile/20020213-1.c b/gcc/testsuite/gcc.dg/noncompile/20020213-1.c
index 079daf01e2f..77798b57c4b 100644
--- a/gcc/testsuite/gcc.dg/noncompile/20020213-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/20020213-1.c
@@ -24,6 +24,7 @@ int main ()
return 0;
}
+/* { dg-warning "passing arg 2 of" "2nd incompatible" { target *-*-* } 15 } */
/* { dg-warning "passing arg 1 of" "1st incompatible" { target *-*-* } 16 } */
/* { dg-warning "passing arg 2 of" "2nd incompatible" { target *-*-* } 16 } */
/* { dg-warning "passing arg 1 of" "1st incompatible" { target *-*-* } 18 } */
diff --git a/gcc/testsuite/gcc.dg/ppc64-abi-2.c b/gcc/testsuite/gcc.dg/ppc64-abi-2.c
new file mode 100644
index 00000000000..ab0e1a14710
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ppc64-abi-2.c
@@ -0,0 +1,405 @@
+/* { dg-do run { target powerpc64-*-linux* } } */
+/* { dg-options "-O2 -fprofile -mprofile-kernel -maltivec -mabi=altivec" } */
+#include <stdarg.h>
+#include <signal.h>
+#include <altivec.h>
+
+/* Testcase to check for ABI compliance of parameter passing
+ for the PowerPC64 ABI. */
+
+void __attribute__((no_instrument_function))
+sig_ill_handler (int sig)
+{
+ exit(0);
+}
+
+extern void abort (void);
+
+typedef struct
+{
+ unsigned long gprs[8];
+ double fprs[13];
+ long pad;
+ vector int vrs[12];
+} reg_parms_t;
+
+reg_parms_t gparms;
+
+/* _mcount call is done on Linux ppc64 early in the prologue.
+ my_mcount will provide a entry point _mcount,
+ which will save all register to gparms.
+ Note that _mcount need to restore lr to original value,
+ therefor use ctr to return.
+*/
+
+void __attribute__((no_instrument_function))
+my_mcount()
+{
+ asm volatile (".type _mcount,@function\n\t"
+ ".globl _mcount\n\t"
+ "_mcount:\n\t"
+ "mflr 0\n\t"
+ "mtctr 0\n\t"
+ "ld 0,16(1)\n\t"
+ "mtlr 0\n\t"
+ "ld 11,gparms@got(2)\n\t"
+ "std 3,0(11)\n\t"
+ "std 4,8(11)\n\t"
+ "std 5,16(11)\n\t"
+ "std 6,24(11)\n\t"
+ "std 7,32(11)\n\t"
+ "std 8,40(11)\n\t"
+ "std 9,48(11)\n\t"
+ "std 10,56(11)\n\t"
+ "stfd 1,64(11)\n\t"
+ "stfd 2,72(11)\n\t"
+ "stfd 3,80(11)\n\t"
+ "stfd 4,88(11)\n\t"
+ "stfd 5,96(11)\n\t"
+ "stfd 6,104(11)\n\t"
+ "stfd 7,112(11)\n\t"
+ "stfd 8,120(11)\n\t"
+ "stfd 9,128(11)\n\t"
+ "stfd 10,136(11)\n\t"
+ "stfd 11,144(11)\n\t"
+ "stfd 12,152(11)\n\t"
+ "stfd 13,160(11)\n\t"
+ "li 3,176\n\t"
+ "stvx 2,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 3,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 4,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 5,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 6,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 7,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 8,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 9,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 10,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 11,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 12,3,11\n\t"
+ "addi 3,3,16\n\t"
+ "stvx 13,3,11\n\t"
+ "ld 3,0(11)\n\t"
+ "bctr");
+}
+
+/* Stackframe structure relevant for parameter passing. */
+typedef union
+{
+ double d;
+ unsigned long l;
+ unsigned int i[2];
+} parm_t;
+
+typedef struct sf
+{
+ struct sf *backchain;
+ long a1;
+ long a2;
+ long a3;
+ long a4;
+ long a5;
+ parm_t slot[100];
+} stack_frame_t;
+
+typedef union
+{
+ unsigned int i[4];
+ unsigned long l[2];
+ vector int v;
+} vector_int_t;
+
+/* Paramter passing.
+ s : gpr 3
+ v : vpr 2
+ i : gpr 7
+*/
+void __attribute__ ((noinline))
+fcvi (char *s, vector int v, int i)
+{
+ reg_parms_t lparms = gparms;
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ if (!vec_all_eq (v, lparms.vrs[0]))
+ abort ();
+
+ if ((long) i != lparms.gprs[4])
+ abort();
+}
+/* Paramter passing.
+ s : gpr 3
+ v : vpr 2
+ w : vpr 3
+*/
+
+void __attribute__ ((noinline))
+fcvv (char *s, vector int v, vector int w)
+{
+ vector int a, c = {6, 8, 10, 12};
+ reg_parms_t lparms = gparms;
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ if (!vec_all_eq (v, lparms.vrs[0]))
+ abort ();
+
+ if (!vec_all_eq (w, lparms.vrs[1]))
+ abort ();
+
+ a = vec_add (v,w);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+}
+
+/* Paramter passing.
+ s : gpr 3
+ i : gpr 4
+ v : vpr 2
+ w : vpr 3
+*/
+void __attribute__ ((noinline))
+fcivv (char *s, int i, vector int v, vector int w)
+{
+ vector int a, c = {6, 8, 10, 12};
+ reg_parms_t lparms = gparms;
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ if ((long) i != lparms.gprs[1])
+ abort();
+
+ if (!vec_all_eq (v, lparms.vrs[0]))
+ abort ();
+
+ if (!vec_all_eq (w, lparms.vrs[1]))
+ abort ();
+
+ a = vec_add (v,w);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+}
+
+/* Paramter passing.
+ s : gpr 3
+ v : slot 2-3
+ w : slot 4-5
+*/
+
+void __attribute__ ((noinline))
+fcevv (char *s, ...)
+{
+ vector int a, c = {6, 8, 10, 12};
+ vector int v,w;
+ stack_frame_t *sp;
+ reg_parms_t lparms = gparms;
+ va_list arg;
+
+ va_start (arg, s);
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ v = va_arg(arg, vector int);
+ w = va_arg(arg, vector int);
+ a = vec_add (v,w);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+
+ /* Go back one frame. */
+ sp = __builtin_frame_address(0);
+ sp = sp->backchain;
+
+ if (sp->slot[2].l != 0x100000002ULL
+ || sp->slot[4].l != 0x500000006ULL)
+ abort();
+}
+
+/* Paramter passing.
+ s : gpr 3
+ i : gpr 4
+ j : gpr 5
+ v : slot 4-5
+ w : slot 6-7
+*/
+void __attribute__ ((noinline))
+fciievv (char *s, int i, int j, ...)
+{
+ vector int a, c = {6, 8, 10, 12};
+ vector int v,w;
+ stack_frame_t *sp;
+ reg_parms_t lparms = gparms;
+ va_list arg;
+
+ va_start (arg, j);
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ if ((long) i != lparms.gprs[1])
+ abort();
+
+ if ((long) j != lparms.gprs[2])
+ abort();
+
+ v = va_arg(arg, vector int);
+ w = va_arg(arg, vector int);
+ a = vec_add (v,w);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+
+ sp = __builtin_frame_address(0);
+ sp = sp->backchain;
+
+ if (sp->slot[4].l != 0x100000002ULL
+ || sp->slot[6].l != 0x500000006ULL)
+ abort();
+}
+
+void __attribute__ ((noinline))
+fcvevv (char *s, vector int x, ...)
+{
+ vector int a, c = {7, 10, 13, 16};
+ vector int v,w;
+ stack_frame_t *sp;
+ reg_parms_t lparms = gparms;
+ va_list arg;
+
+ va_start (arg, x);
+
+ v = va_arg(arg, vector int);
+ w = va_arg(arg, vector int);
+
+ a = vec_add (v,w);
+ a = vec_add (a, x);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+
+ sp = __builtin_frame_address(0);
+ sp = sp->backchain;
+
+ if (sp->slot[4].l != 0x100000002ULL
+ || sp->slot[6].l != 0x500000006ULL)
+ abort();
+}
+
+void fnp_cvvvv();
+
+int __attribute__((no_instrument_function, noinline))
+main1()
+{
+ char *s = "vv";
+ vector int v = {1, 2, 3, 4};
+ vector int w = {5, 6, 7, 8};
+
+ fcvi (s, v, 2);
+ fcvv (s, v, w);
+ fnp_cvvvv (s, v, w, v, w);
+ fcivv (s, 1, v, w);
+ fcevv (s, v, w);
+ fciievv (s, 1, 2, v, w);
+ fcvevv (s, v, v, w);
+ return 0;
+}
+
+int __attribute__((no_instrument_function))
+main()
+{
+ /* Exit on systems without altivec. */
+ signal (SIGILL, sig_ill_handler);
+ /* Altivec instruction, 'vor %v0,%v0,%v0'. */
+ asm volatile (".long 0x10000484");
+ signal (SIGILL, SIG_DFL);
+
+ return main1 ();
+}
+
+/* Paramter passing.
+ Function called with no prototype.
+ s : gpr 3
+ v : vpr 2 gpr 5-6
+ w : vpr 3 gpr 7-8
+ x : vpr 4 gpr 9-10
+ y : vpr 5 slot 8-9
+*/
+void
+fnp_cvvvv (char *s, vector int v, vector int w,
+ vector int x, vector int y)
+{
+ vector int a, c = {12, 16, 20, 24};
+ reg_parms_t lparms = gparms;
+ stack_frame_t *sp;
+ vector_int_t v0, v1, v2, v3;
+
+ if (s != (char *) lparms.gprs[0])
+ abort();
+
+ if (!vec_all_eq (v, lparms.vrs[0]))
+ abort ();
+
+ if (!vec_all_eq (w, lparms.vrs[1]))
+ abort ();
+
+ if (!vec_all_eq (x, lparms.vrs[2]))
+ abort ();
+
+ if (!vec_all_eq (y, lparms.vrs[3]))
+ abort ();
+
+ a = vec_add (v,w);
+ a = vec_add (a,x);
+ a = vec_add (a,y);
+
+ if (!vec_all_eq (a, c))
+ abort ();
+
+ v0.v = lparms.vrs[0];
+ v1.v = lparms.vrs[1];
+ v2.v = lparms.vrs[2];
+ v3.v = lparms.vrs[3];
+
+ if (v0.l[0] != lparms.gprs[2])
+ abort ();
+
+ if (v0.l[1] != lparms.gprs[3])
+ abort ();
+
+ if (v1.l[0] != lparms.gprs[4])
+ abort ();
+
+ if (v1.l[1] != lparms.gprs[5])
+ abort ();
+
+ if (v2.l[0] != lparms.gprs[6])
+ abort ();
+
+ if (v2.l[1] != lparms.gprs[7])
+ abort ();
+
+ sp = __builtin_frame_address(0);
+ sp = sp->backchain;
+
+ if (sp->slot[8].l != v3.l[0])
+ abort ();
+
+ if (sp->slot[9].l != v3.l[1])
+ abort ();
+}
+
diff --git a/gcc/testsuite/gcc.dg/ppc64-abi-3.c b/gcc/testsuite/gcc.dg/ppc64-abi-3.c
new file mode 100644
index 00000000000..58f161dae6c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ppc64-abi-3.c
@@ -0,0 +1,28 @@
+/* { dg-do compile { target powerpc64-*-linux* } } */
+/* { dg-options "-Wall" } */
+/* Testcase to check for ABI compliance of parameter passing
+ for the PowerPC64 ABI. */
+
+typedef int __attribute__((mode(V4SI))) v4si;
+typedef int __attribute__((mode(V2SI))) v2si;
+
+v4si
+f(v4si v)
+{ /* { dg-error "altivec instructions are disabled" } */
+ return v;
+}
+
+v2si
+g(v2si v)
+{
+ return v;
+}
+
+int
+main()
+{
+ v4si v;
+ v2si w;
+ v = f (v); /* { dg-error "altivec instructions are disabled" } */
+ w = g (w);
+}
diff --git a/gcc/testsuite/gcc.dg/pr14092-1.c b/gcc/testsuite/gcc.dg/pr14092-1.c
new file mode 100644
index 00000000000..927ecf6aa3b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr14092-1.c
@@ -0,0 +1,20 @@
+/* PR c/14092
+ * Origin: bonzini@gnu.org
+ * rejects-valid
+ */
+/* { dg-do compile } */
+
+/* Define this so that we are more portable. The testcase in the
+ PR failed on 64-bit hosts. */
+typedef int __attribute__ ((mode (__pointer__))) intptr_t;
+
+typedef struct _PLCI {
+ unsigned char x;
+ unsigned char buf[1];
+} PLCI;
+
+void nl_ind(PLCI * plci)
+{
+ plci->x = -((intptr_t)(plci->buf)) & 3;
+}
+
diff --git a/gcc/testsuite/gcc.dg/sparc-ret.c b/gcc/testsuite/gcc.dg/sparc-ret.c
index 629bbb155ef..3a4ddea58ec 100644
--- a/gcc/testsuite/gcc.dg/sparc-ret.c
+++ b/gcc/testsuite/gcc.dg/sparc-ret.c
@@ -3,8 +3,8 @@
Making sure that Ultrasparc return instructions do not read
below the stack. */
-/* { dg-do compile { target sparc*-*-* } } */
-/* { dg-options "-mcpu=ultrasparc -O -m32" } */
+/* { dg-do compile { target sparc-*-* } } */
+/* { dg-options "-mcpu=ultrasparc -O" } */
int bar (int a, int b, int c, int d, int e, int f, int g, int h)
@@ -14,7 +14,7 @@ int bar (int a, int b, int c, int d, int e, int f, int g, int h)
toto (&res);
return h;
}
-/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*ld\[ \t\]*\\\[%sp\\+96\\\]" } } */
+/* { dg-final { global compiler_flags; if ![string match "*-m64 *" $compiler_flags] { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*ld\[ \t\]*\\\[%sp\\+96\\\]" } } } */
int bar2 ()
{
@@ -23,5 +23,4 @@ int bar2 ()
toto (&res);
return res;
}
-/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*nop" } } */
-
+/* { dg-final { global compiler_flags; if ![string match "*-m64 *" $compiler_flags] { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*nop" } } } */
diff --git a/gcc/testsuite/gcc.dg/struct-by-value-2.c b/gcc/testsuite/gcc.dg/struct-by-value-2.c
new file mode 100644
index 00000000000..8d5d0bb01c7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/struct-by-value-2.c
@@ -0,0 +1,15 @@
+/* This testcase caused a sanity check to abort on SPARC64
+ because of a discrepancy between two functions involved
+ in the calculation of structure layout. */
+
+/* { dg-do compile } */
+
+struct S { float f1; int i1; int i2; float f2; };
+
+extern void foo(struct S);
+
+void bar(void)
+{
+ struct S s;
+ foo(s);
+}
diff --git a/gcc/testsuite/gcc.dg/titype-1.c b/gcc/testsuite/gcc.dg/titype-1.c
new file mode 100644
index 00000000000..ee41db9778a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/titype-1.c
@@ -0,0 +1,34 @@
+/* { dg-do run } */
+
+/* Not all platforms support TImode integers. */
+#if defined(__LP64__) || defined(__sparc__)
+typedef int TItype __attribute__ ((mode (TI))); /* { dg-error "no data type for mode" "TI" { target sparc-sun-solaris2.[0-6]* } } */
+#else
+typedef long TItype;
+#endif
+
+#include <stdarg.h>
+
+extern void abort(void);
+
+
+void foo(int i, ...)
+{
+ TItype q;
+ va_list va;
+
+ va_start(va, i);
+ q = va_arg(va, TItype);
+ va_end(va);
+
+ if (q != 5)
+ abort();
+}
+
+int main(void)
+{
+ TItype q = 5;
+
+ foo(1, q);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tls/alias-1.c b/gcc/testsuite/gcc.dg/tls/alias-1.c
index 3372da3d10c..fa8dd29d94b 100644
--- a/gcc/testsuite/gcc.dg/tls/alias-1.c
+++ b/gcc/testsuite/gcc.dg/tls/alias-1.c
@@ -1,4 +1,5 @@
/* { dg-do link } */
+/* { dg-warning "visibility" "unsupported" { target sparc*-sun-solaris2.* } 22 } */
/* Test that encode_section_info handles the change from externally
defined to locally defined (via hidden). Extracted from glibc. */
diff --git a/gcc/testsuite/gcc.dg/torture/mips-clobber-at.c b/gcc/testsuite/gcc.dg/torture/mips-clobber-at.c
new file mode 100644
index 00000000000..7f936984a8d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/mips-clobber-at.c
@@ -0,0 +1,4 @@
+/* "$1" used to be mapped to the internal frame pointer. */
+/* { dg-do compile { target mips*-*-* } } */
+/* { dg-options "" } */
+int foo () { asm volatile ("#" ::: "$1"); }
diff --git a/gcc/testsuite/gcc.dg/va-arg-1.c b/gcc/testsuite/gcc.dg/va-arg-1.c
index a14823725da..ecd0e4d84bf 100644
--- a/gcc/testsuite/gcc.dg/va-arg-1.c
+++ b/gcc/testsuite/gcc.dg/va-arg-1.c
@@ -7,7 +7,7 @@ volatile int i;
void foo()
{
- i = va_arg(v, char); /* { dg-warning "is promoted to|so you should" "char" } */
- i = va_arg(v, short); /* { dg-warning "is promoted to" "short" } */
- i = va_arg(v, float); /* { dg-warning "is promoted to" "float" } */
+ i = va_arg(v, char); /* { dg-warning "is promoted to|so you should|abort" "char" } */
+ i = va_arg(v, short); /* { dg-warning "is promoted to|abort" "short" } */
+ i = va_arg(v, float); /* { dg-warning "is promoted to|abort" "float" } */
}
diff --git a/gcc/testsuite/gcc.dg/visibility-8.c b/gcc/testsuite/gcc.dg/visibility-8.c
new file mode 100644
index 00000000000..fc3a1055757
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/visibility-8.c
@@ -0,0 +1,16 @@
+/* Test hidden visibility on built-in functions (for libc). PR 13856. */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+/* { dg-require-visibility "" } */
+/* { dg-final { scan-assembler "\\.hidden.*__GI_fputs_unlocked" } } */
+
+int fputs_unlocked (const char *restrict, int *restrict)
+ __asm__ ("__GI_fputs_unlocked")
+ __attribute__ ((visibility ("hidden")));
+
+int
+fputs_unlocked (str, fp)
+ const char *str;
+ int *fp;
+{
+}
diff --git a/gcc/testsuite/gcc.misc-tests/bprob.exp b/gcc/testsuite/gcc.misc-tests/bprob.exp
index 5afbdb1c847..8fde6829f83 100644
--- a/gcc/testsuite/gcc.misc-tests/bprob.exp
+++ b/gcc/testsuite/gcc.misc-tests/bprob.exp
@@ -21,7 +21,7 @@ load_lib target-supports.exp
# Some targets don't have any implementation of __bb_init_func or are
# missing other needed machinery.
-if { ![check_profiling_available] } {
+if { ![check_profiling_available "-fprofile-arcs"] } {
return
}
diff --git a/gcc/testsuite/lib/file-format.exp b/gcc/testsuite/lib/file-format.exp
index a4168b6d614..ab69f930614 100644
--- a/gcc/testsuite/lib/file-format.exp
+++ b/gcc/testsuite/lib/file-format.exp
@@ -24,6 +24,7 @@
proc gcc_target_object_format { } {
global gcc_target_object_format_saved
+ global tool
if [info exists gcc_target_object_format_saved] {
verbose "gcc_target_object_format returning saved $gcc_target_object_format_saved" 2
@@ -33,7 +34,7 @@ proc gcc_target_object_format { } {
puts $open_file "void foo(void) { }"
close $open_file
- gcc_target_compile objfmtst.c objfmtst.o object ""
+ ${tool}_target_compile objfmtst.c objfmtst.o object ""
catch {
set output [exec $objdump_name --file-headers objfmtst.o ]
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index c6776679389..c5f589eea27 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -324,7 +324,7 @@ proc dg-require-gc-sections { args } {
# If this target does not support profiling, skip this test.
proc dg-require-profiling { args } {
- if { ![ check_profiling_available ] } {
+ if { ![ check_profiling_available ${args} ] } {
upvar dg-do-what dg-do-what
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
return
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index cf414fb25cd..79d93cbf089 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -48,11 +48,14 @@ proc dg-scan { name positive testcase output_file orig_args } {
set text [read $fd]
close $fd
- set match [regexp -- [lindex $orig_args 0] $text]
+ set pattern [lindex $orig_args 0]
+ set printable_pattern [string map {\t \\t \n \\n \r \\r \\ \\\\} $pattern]
+
+ set match [regexp -- $pattern $text]
if { $match == $positive } {
- pass "$testcase $name [lindex $orig_args 0]"
+ pass "$testcase $name $printable_pattern"
} else {
- fail "$testcase $name [lindex $orig_args 0]"
+ fail "$testcase $name $printable_pattern"
}
}
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index bff0a4f4441..485a8d75dd9 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -99,7 +99,8 @@ proc check_visibility_available { } {
proc check_alias_available { } {
global alias_available_saved
-
+ global tool
+
if [info exists alias_available_saved] {
verbose "check_alias_available returning saved $alias_available_saved" 2
} else {
@@ -108,9 +109,10 @@ proc check_alias_available { } {
# Compile a small test program. The definition of "g" is
# necessary to keep the Solaris assembler from complaining
# about the program.
+ puts $f "#ifdef __cplusplus\nextern \"C\"\n#endif\n"
puts $f "void g() {} void f() __attribute__((alias(\"g\")));"
close $f
- set lines [gcc_target_compile "tmp.c" "tmp.o" object ""]
+ set lines [${tool}_target_compile "tmp.c" "tmp.o" object ""]
file delete "tmp.c"
if [string match "" $lines] then {
@@ -148,10 +150,11 @@ proc check_alias_available { } {
proc check_gc_sections_available { } {
global gc_sections_available_saved
+ global tool
if {![info exists gc_sections_available_saved]} {
# Check if the ld used by gcc supports --gc-sections.
- set gcc_ld [lindex [gcc_target_compile "-print-prog-name=ld" "" "none" ""] 0]
+ set gcc_ld [lindex [${tool}_target_compile "-print-prog-name=ld" "" "none" ""] 0]
set ld_output [remote_exec host "$gcc_ld" "--help"]
if { [ string first "--gc-sections" $ld_output ] >= 0 } {
set gc_sections_available_saved 1
@@ -164,9 +167,32 @@ proc check_gc_sections_available { } {
# Return true if profiling is supported on the target.
-proc check_profiling_available { } {
+proc check_profiling_available { test_what } {
global profiling_available_saved
+ verbose "Profiling argument is <$test_what>" 1
+
+ # These conditions depend on the argument so examine them before
+ # looking at the cache variable.
+
+ # Support for -p on solaris2 relies on mcrt1.o which comes with the
+ # vendor compiler. We cannot reliably predict the directory where the
+ # vendor compiler (and thus mcrt1.o) is installed so we can't
+ # necessarily find mcrt1.o even if we have it.
+ if { [istarget *-*-solaris2*] && [lindex $test_what 1] == "-p" } {
+ return 0
+ }
+
+ # Support for -p on irix relies on libprof1.a which doesn't appear to
+ # exist on any irix6 system currently posting testsuite results.
+ # Support for -pg on irix relies on gcrt1.o which doesn't exist yet.
+ # See: http://gcc.gnu.org/ml/gcc/2002-10/msg00169.html
+ if { [istarget mips*-*-irix*]
+ && ([lindex $test_what 1] == "-p" || [lindex $test_what 1] == "-pg") } {
+ return 0
+ }
+
+ # Now examine the cache variable.
if {![info exists profiling_available_saved]} {
# Some targets don't have any implementation of __bb_init_func or are
# missing other needed machinery.
diff --git a/gcc/testsuite/objc.dg/call-super-2.m b/gcc/testsuite/objc.dg/call-super-2.m
index cd7db41bffe..41eafc83780 100644
--- a/gcc/testsuite/objc.dg/call-super-2.m
+++ b/gcc/testsuite/objc.dg/call-super-2.m
@@ -3,6 +3,7 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do compile } */
+#include <stddef.h>
#include <objc/objc.h>
#include <objc/Object.h>
@@ -44,11 +45,11 @@
@implementation Derived
+ (int) class_func1
{
- int i = (int)[self class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
- /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 47 } */
- /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 47 } */
- /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 47 } */
- return i + (int)[super class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+ int i = (size_t)[self class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
+ /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 48 } */
+ /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 48 } */
+ /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 48 } */
+ return i + (size_t)[super class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
}
+ (int) class_func2
{
@@ -65,12 +66,12 @@
}
+ (int) class_func5
{
- int i = (int)[Derived class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
- return i + (int)[Object class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+ int i = (size_t)[Derived class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
+ return i + (size_t)[Object class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
}
+ (int) class_func6
{
- return (int)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+ return (size_t)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
}
+ (int) class_func7
{
@@ -78,8 +79,8 @@
}
- (int) instance_func1
{
- int i = (int)[self instance_func0]; /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
- return i + (int)[super instance_func0]; /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
+ int i = (size_t)[self instance_func0]; /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
+ return i + (size_t)[super instance_func0]; /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
}
- (int) instance_func2
{
@@ -95,12 +96,12 @@
}
- (int) instance_func5
{
- int i = (int)[Derived instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+instance_func1." } */
- return i + (int)[Object instance_func1]; /* { dg-warning ".Object. may not respond to .\\+instance_func1." } */
+ int i = (size_t)[Derived instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+instance_func1." } */
+ return i + (size_t)[Object instance_func1]; /* { dg-warning ".Object. may not respond to .\\+instance_func1." } */
}
- (int) instance_func6
{
- return (int)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+ return (size_t)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
}
- (int) instance_func7
{
@@ -111,11 +112,11 @@
@implementation Derived (Categ)
+ (int) categ_class_func1
{
- int i = (int)[self class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
+ int i = (size_t)[self class_func0]; /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
i += [self class_func1];
i += [self categ_class_func2];
- i += (int)[self categ_instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+categ_instance_func1." } */
- return i + (int)[super class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+ i += (size_t)[self categ_instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+categ_instance_func1." } */
+ return i + (size_t)[super class_func0]; /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
}
+ (int) categ_class_func2
{
@@ -124,13 +125,13 @@
}
- (int) categ_instance_func1
{
- int i = (int)[self instance_func0]; /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
+ int i = (size_t)[self instance_func0]; /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
i += [(Derived <Func> *)self categ_instance_func2];
- i += (int)[(Object <Func> *)self categ_instance_func2]; /* { dg-warning ".Object. may not respond to .\\-categ_instance_func2." } */
- /* { dg-warning ".\\-categ_instance_func2. not implemented by protocol" "" { target *-*-* } 129 } */
- i += (int)[(id <Func>)self categ_instance_func2]; /* { dg-warning ".\\-categ_instance_func2. not implemented by protocol" } */
+ i += (size_t)[(Object <Func> *)self categ_instance_func2]; /* { dg-warning ".Object. may not respond to .\\-categ_instance_func2." } */
+ /* { dg-warning ".\\-categ_instance_func2. not implemented by protocol" "" { target *-*-* } 130 } */
+ i += (size_t)[(id <Func>)self categ_instance_func2]; /* { dg-warning ".\\-categ_instance_func2. not implemented by protocol" } */
i += [(id)self categ_instance_func2];
- return i + (int)[super instance_func0]; /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
+ return i + (size_t)[super instance_func0]; /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
}
- (int) categ_instance_func2
{
diff --git a/gcc/testsuite/objc.dg/desig-init-1.m b/gcc/testsuite/objc.dg/desig-init-1.m
index 44abe440d7b..cd56324f403 100644
--- a/gcc/testsuite/objc.dg/desig-init-1.m
+++ b/gcc/testsuite/objc.dg/desig-init-1.m
@@ -22,7 +22,7 @@
0,
[Cls meth1],
[2 + 1] = 3,
- [2 * 2 ... 5] = (int)[0 meth2], /* { dg-warning "invalid receiver type" } */
+ [2 * 2 ... 5] = (size_t)[0 meth2], /* { dg-warning "invalid receiver type" } */
/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */
/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 25 } */
/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 25 } */
diff --git a/gcc/testsuite/objc.dg/encode-2.m b/gcc/testsuite/objc.dg/encode-2.m
index ebfd8d3fa2d..b9003696c02 100644
--- a/gcc/testsuite/objc.dg/encode-2.m
+++ b/gcc/testsuite/objc.dg/encode-2.m
@@ -6,7 +6,7 @@
- The k-th parameter (k > 1) has offset equal to the
sum of:
- the offset of the k-1-st paramter
- - the int-promoted size of the k-1-st parameter.
+ - the (void *)-promoted size of the k-1-st parameter.
Note that the encoded offsets need not correspond
to the actual placement of parameters (relative to 'self')
@@ -39,7 +39,7 @@ typedef struct { float x, y; } XXPoint;
typedef struct { float width, height; } XXSize;
typedef struct _XXRect { XXPoint origin; XXSize size; } XXRect;
-(id)setRect:(XXRect)r withInt:(int)i;
--(void) char:(char)c float:(float)f double:(double)d long:(long)l;
+-(void) char:(signed char)c float:(float)f double:(double)d long:(long)l;
@end
XXRect my_rect;
@@ -57,7 +57,7 @@ unsigned offs1, offs2, offs3, offs4, offs5, offs6, offs7;
CHECK_IF(offs == offs1);
return nil;
}
--(void) char:(char)c float:(float)f double:(double)d long:(long)l {
+-(void) char:(signed char)c float:(float)f double:(double)d long:(long)l {
unsigned offs = sizeof(self);
CHECK_IF(offs == offs3);
offs += sizeof(_cmd);
@@ -78,6 +78,7 @@ int main(void) {
Foo *foo = [[Foo alloc] init];
Class fooClass = OBJC_GETCLASS("Foo");
METHOD meth;
+ const char *string;
meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(setRect:withInt:));
offs2 = 9999;
@@ -88,8 +89,12 @@ int main(void) {
meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(char:float:double:long:));
offs2 = 9999;
- sscanf(meth->method_types, "v%u@%u:%uc%uf%ud%ul%u", &offs1, &offs2, &offs3,
- &offs4, &offs5, &offs6, &offs7);
+ if (sizeof (long) == 8)
+ string = "v%u@%u:%uc%uf%ud%uq%u";
+ else
+ string = "v%u@%u:%uc%uf%ud%ul%u";
+ sscanf(meth->method_types, string, &offs1, &offs2, &offs3,
+ &offs4, &offs5, &offs6, &offs7);
CHECK_IF(!offs2);
[foo char:'c' float:2.3 double:3.5 long:2345L];
diff --git a/gcc/testsuite/objc.dg/encode-3.m b/gcc/testsuite/objc.dg/encode-3.m
index b30b956b157..20a85b43bdf 100644
--- a/gcc/testsuite/objc.dg/encode-3.m
+++ b/gcc/testsuite/objc.dg/encode-3.m
@@ -28,7 +28,7 @@ union __XXAngle { unsigned int alpha, beta; };
typedef struct { float x, y; union __XXAngle a; } XXPoint;
typedef struct { double width, height; } XXSize;
typedef struct _XXRect { XXPoint origin; XXSize size; struct _XXRect *next; } XXRect;
-- (void) char:(char)c float:(float)f double:(double)d unsigned:(unsigned)u short:(short)s long:(long)l;
+- (void) char:(signed char)c float:(float)f double:(double)d unsigned:(unsigned)u short:(short)s long:(long)l;
- (void *)setRect:(XXRect)r withBool:(ProtoBool)b withInt:(int)i;
+ (Enum *)getEnum:(XXPoint *)pt enum:(enum Enum)e bool:(ObjCBool)b;
+ (ProtoBool **)getBool:(ObjCBool **)b;
@@ -46,8 +46,14 @@ static void scan_initial(const char *pattern) {
}
int main(void) {
+ const char *string;
+
meth = [proto descriptionForInstanceMethod: @selector(char:float:double:unsigned:short:long:)];
- scan_initial("v%u@%u:%uc%uf%ud%uI%us%ul%u");
+ if (sizeof (long) == 8)
+ string = "v%u@%u:%uc%uf%ud%uI%us%uq%u";
+ else
+ string = "v%u@%u:%uc%uf%ud%uI%us%ul%u";
+ scan_initial(string);
CHECK_IF(offs3 == offs2 + sizeof(int) && offs4 == offs3 + sizeof(float));
CHECK_IF(offs5 == offs4 + sizeof(double) && offs6 == offs5 + sizeof(unsigned));
CHECK_IF(offs7 == offs6 + sizeof(int) && totsize == offs7 + sizeof(long));
diff --git a/gcc/testsuite/objc.dg/encode-4.m b/gcc/testsuite/objc.dg/encode-4.m
index 1f179e1dad5..a754c6955cb 100644
--- a/gcc/testsuite/objc.dg/encode-4.m
+++ b/gcc/testsuite/objc.dg/encode-4.m
@@ -31,7 +31,7 @@ struct Nested {
};
@interface Int1: Object {
- char a, b;
+ signed char a, b;
Int2 *int2;
struct Nested nested;
}
diff --git a/gcc/testsuite/objc.dg/proto-qual-1.m b/gcc/testsuite/objc.dg/proto-qual-1.m
index 6ae12909380..0f1c3102d27 100644
--- a/gcc/testsuite/objc.dg/proto-qual-1.m
+++ b/gcc/testsuite/objc.dg/proto-qual-1.m
@@ -8,6 +8,10 @@
#include <objc/objc-api.h>
#endif
+/* The encoded parameter sizes will be rounded up to match pointer alignment. */
+#define ROUND(s,a) (a * ((s + a - 1) / a))
+#define aligned_sizeof(T) ROUND(sizeof(T),__alignof(void *))
+
extern int sscanf(const char *str, const char *format, ...);
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -34,15 +38,15 @@ static void scan_initial(const char *pattern) {
totsize = offs0 = offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = offs7 = (unsigned)-1;
sscanf(meth->types, pattern, &totsize, &offs0, &offs1, &offs2, &offs3,
&offs4, &offs5, &offs6, &offs7);
- CHECK_IF(!offs0 && offs1 == sizeof(id) && offs2 == offs1 + sizeof(SEL) && totsize >= offs2);
+ CHECK_IF(!offs0 && offs1 == aligned_sizeof(id) && offs2 == offs1 + aligned_sizeof(SEL) && totsize >= offs2);
}
int main(void) {
meth = [proto descriptionForInstanceMethod: @selector(address:with:)];
scan_initial("O@%u@%u:%uNR@%uo^^S%u");
- CHECK_IF(offs3 == offs2 + sizeof(id) && totsize == offs3 + sizeof(unsigned));
+ CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(unsigned));
meth = [proto descriptionForClassMethod: @selector(retainArgument:with:)];
scan_initial("Vv%u@%u:%uOo@%un^*%u");
- CHECK_IF(offs3 == offs2 + sizeof(id) && totsize == offs3 + sizeof(char **));
+ CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(char **));
return 0;
}
diff --git a/gcc/testsuite/objc.dg/stret-1.m b/gcc/testsuite/objc.dg/stret-1.m
new file mode 100644
index 00000000000..7e13b32e338
--- /dev/null
+++ b/gcc/testsuite/objc.dg/stret-1.m
@@ -0,0 +1,62 @@
+/* Test for handling of struct-returning methods. */
+/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do run } */
+
+#include <objc/Object.h>
+
+extern void abort(void);
+#define CHECK_IF(expr) if(!(expr)) abort()
+
+struct astruct {
+ float a, b;
+} globa = { 1.0, 2.0 };
+
+struct bstruct {
+ float a, b, c, d, e, f;
+} globb = { 1, 2, 3, 4, 5, 6 };
+
+@interface foo : Object
+- (struct astruct) stret;
+- (struct bstruct) stretb;
+@end
+
+@implementation foo : Object
+- (struct astruct) stret { return globa; }
+- (struct bstruct) stretb { return globb; }
+@end
+
+@interface bar: foo
+- (struct astruct) stret;
+- (struct bstruct) stretb;
+@end
+
+@implementation bar
+- (struct astruct) stret { struct astruct a = [super stret]; a.b = 77; return a; }
+- (struct bstruct) stretb { struct bstruct b = [super stretb]; b.e = 99; return b; }
+@end
+
+int main(void)
+{
+ foo *obj = [foo new];
+ bar *obj2 = [bar new];
+ struct astruct loc, loc2;
+ struct bstruct locb, locb2;
+
+ loc = [obj stret];
+ CHECK_IF(loc.a == 1.0 && loc.b == 2.0);
+
+ locb = [obj stretb];
+ CHECK_IF(locb.f == 6 && locb.c == 3);
+ CHECK_IF(locb.e == 5 && locb.b == 2);
+ CHECK_IF(locb.d == 4 && locb.a == 1);
+
+ loc2 = [obj2 stret];
+ CHECK_IF(loc2.a == 1.0 && loc2.b == 77);
+
+ locb2 = [obj2 stretb];
+ CHECK_IF(locb2.f == 6 && locb2.c == 3);
+ CHECK_IF(locb2.e == 99 && locb2.b == 2);
+ CHECK_IF(locb2.d == 4 && locb2.a == 1);
+
+ return 0;
+}
diff --git a/gcc/testsuite/objc.dg/stret-2.m b/gcc/testsuite/objc.dg/stret-2.m
new file mode 100644
index 00000000000..dd9a2e8e5b2
--- /dev/null
+++ b/gcc/testsuite/objc.dg/stret-2.m
@@ -0,0 +1,46 @@
+/* Test for handling of struct-returning methods
+ for the Mac OS X ("NeXT") runtime (which uses specialized entry
+ points). */
+/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#include <objc/Object.h>
+
+struct astruct {
+ float a, b;
+} glob = { 1.0, 2.0 };
+
+struct bstruct {
+ float a, b, c, d, e, f;
+} globb = { 1, 2, 3, 4, 5, 6 };
+
+@interface foo : Object
+- (struct astruct) stret;
+- (struct bstruct) stretb;
+@end
+
+@implementation foo : Object
+- (struct astruct) stret { return glob; }
+- (struct bstruct) stretb { return globb; }
+@end
+
+@interface bar: foo
+- (struct astruct) stret;
+- (struct bstruct) stretb;
+@end
+
+@implementation bar
+- (struct astruct) stret { return [super stret]; }
+- (struct bstruct) stretb { return [super stretb]; }
+@end
+
+struct astruct afunc(foo *foo_obj) {
+ return [foo_obj stret];
+}
+
+/* { dg-final { scan-assembler "objc_msgSend_stret" } } */
+/* { dg-final { scan-assembler "objc_msgSendSuper_stret" } } */
+
+/* { dg-final { scan-assembler-not "objc_msgSend\[^_S\]" } } */
+/* { dg-final { scan-assembler-not "objc_msgSendSuper\[^_\]" } } */
+
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 3ac7d737393..dfaeea42f2f 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -78,6 +78,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "opts.h"
#include "coverage.h"
#include "value-prof.h"
+#include "alloc-pool.h"
#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
#include "dwarf2out.h"
@@ -96,6 +97,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
declarations for e.g. AIX 4.x. */
#endif
+#ifndef HAVE_conditional_execution
+#define HAVE_conditional_execution 0
+#endif
+
/* Carry information from ASM_DECLARE_OBJECT_NAME
to ASM_FINISH_DECLARE_OBJECT. */
@@ -276,8 +281,8 @@ enum dump_file_index
DFI_postreload,
DFI_flow2,
DFI_peephole2,
- DFI_rnreg,
DFI_ce3,
+ DFI_rnreg,
DFI_bbro,
DFI_branch_target_load,
DFI_sched2,
@@ -327,8 +332,8 @@ static struct dump_file_info dump_file[DFI_MAX] =
{ "postreload", 'o', 1, 0, 0 },
{ "flow2", 'w', 1, 0, 0 },
{ "peephole2", 'z', 1, 0, 0 },
- { "rnreg", 'n', 1, 0, 0 },
{ "ce3", 'E', 1, 0, 0 },
+ { "rnreg", 'n', 1, 0, 0 },
{ "bbro", 'B', 1, 0, 0 },
{ "btl", 'd', 1, 0, 0 }, /* Yes, duplicate enable switch. */
{ "sched2", 'R', 1, 0, 0 },
@@ -994,6 +999,23 @@ int flag_evaluation_order = 0;
/* Add or remove a leading underscore from user symbols. */
int flag_leading_underscore = -1;
+/* The version of the C++ ABI in use. The following values are
+ allowed:
+
+ 0: The version of the ABI believed most conformant with the
+ C++ ABI specification. This ABI may change as bugs are
+ discovered and fixed. Therefore, 0 will not necessarily
+ indicate the same ABI in different versions of G++.
+
+ 1: The version of the ABI first used in G++ 3.2.
+
+ 2: The version of the ABI first used in G++ 3.4.
+
+ Additional positive integers will be assigned as new versions of
+ the ABI become the default version of the ABI. */
+
+int flag_abi_version = 2;
+
/* The user symbol prefix after having resolved same. */
const char *user_label_prefix;
@@ -2294,12 +2316,14 @@ rest_of_handle_regrename (tree decl, rtx insns)
static void
rest_of_handle_reorder_blocks (tree decl, rtx insns)
{
+ bool changed;
open_dump_file (DFI_bbro, decl);
/* Last attempt to optimize CFG, as scheduling, peepholing and insn
splitting possibly introduced more crossjumping opportunities. */
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE
- | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
+ changed = cleanup_cfg (CLEANUP_EXPENSIVE
+ | (!HAVE_conditional_execution
+ ? CLEANUP_UPDATE_LIFE : 0));
if (flag_sched2_use_traces && flag_schedule_insns_after_reload)
tracer ();
@@ -2307,8 +2331,16 @@ rest_of_handle_reorder_blocks (tree decl, rtx insns)
reorder_basic_blocks ();
if (flag_reorder_blocks
|| (flag_sched2_use_traces && flag_schedule_insns_after_reload))
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE);
-
+ changed |= cleanup_cfg (CLEANUP_EXPENSIVE
+ | (!HAVE_conditional_execution
+ ? CLEANUP_UPDATE_LIFE : 0));
+
+ /* On conditional execution targets we can not update the life cheaply, so
+ we deffer the updating to after both cleanups. This may lose some cases
+ but should not be terribly bad. */
+ if (changed && HAVE_conditional_execution)
+ update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES,
+ PROP_DEATH_NOTES | PROP_REG_INFO);
close_dump_file (DFI_bbro, print_rtl_with_bb, insns);
}
@@ -2796,6 +2828,7 @@ rest_of_handle_life (tree decl, rtx insns)
life_analysis (insns, rtl_dump_file, PROP_FINAL);
if (optimize)
cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_UPDATE_LIFE
+ | CLEANUP_LOG_LINKS
| (flag_thread_jumps ? CLEANUP_THREADING : 0));
timevar_pop (TV_FLOW);
@@ -2885,6 +2918,13 @@ rest_of_handle_cse2 (tree decl, rtx insns)
dump_flow_info (rtl_dump_file);
/* CFG is no longer maintained up-to-date. */
tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
+
+ /* Run a pass to eliminate duplicated assignments to condition code
+ registers. We have to run this after bypass_jumps, because it
+ makes it harder for that pass to determine whether a jump can be
+ bypassed safely. */
+ cse_condition_code_reg ();
+
purge_all_dead_edges (0);
delete_trivially_dead_insns (insns, max_reg_num ());
@@ -3286,6 +3326,9 @@ rest_of_compilation (tree decl)
if (flag_loop_optimize)
rest_of_handle_loop_optimize (decl, insns);
+
+ if (flag_gcse)
+ rest_of_handle_jump_bypass (decl, insns);
}
timevar_push (TV_FLOW);
@@ -3313,16 +3356,11 @@ rest_of_compilation (tree decl)
if (flag_tracer)
rest_of_handle_tracer (decl, insns);
- if (optimize > 0)
- {
- if (flag_unswitch_loops
+ if (optimize > 0
+ && (flag_unswitch_loops
|| flag_peel_loops
- || flag_unroll_loops)
- rest_of_handle_loop2 (decl, insns);
-
- if (flag_gcse)
- rest_of_handle_jump_bypass (decl, insns);
- }
+ || flag_unroll_loops))
+ rest_of_handle_loop2 (decl, insns);
if (flag_web)
rest_of_handle_web (decl, insns);
@@ -3440,7 +3478,7 @@ rest_of_compilation (tree decl)
if (optimize)
{
- life_analysis (insns, rtl_dump_file, PROP_FINAL);
+ life_analysis (insns, rtl_dump_file, PROP_POSTRELOAD);
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE
| (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
@@ -3474,16 +3512,22 @@ rest_of_compilation (tree decl)
}
#endif
+ open_dump_file (DFI_ce3, decl);
+ if (optimize)
+ /* Last attempt to optimize CFG, as scheduling, peepholing and insn
+ splitting possibly introduced more crossjumping opportunities. */
+ cleanup_cfg (CLEANUP_EXPENSIVE
+ | CLEANUP_UPDATE_LIFE
+ | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
if (flag_if_conversion2)
{
timevar_push (TV_IFCVT2);
- open_dump_file (DFI_ce3, decl);
if_convert (1);
- close_dump_file (DFI_ce3, print_rtl_with_bb, insns);
timevar_pop (TV_IFCVT2);
}
+ close_dump_file (DFI_ce3, print_rtl_with_bb, insns);
if (optimize > 0)
{
@@ -4563,6 +4607,8 @@ finalize (void)
stringpool_statistics ();
dump_tree_statistics ();
dump_rtx_statistics ();
+ dump_varray_statistics ();
+ dump_alloc_pool_statistics ();
}
/* Free up memory for the benefit of leak detectors. */
diff --git a/gcc/toplev.h b/gcc/toplev.h
index 3c1a1eb3021..d823d54353d 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -1,5 +1,6 @@
/* toplev.h - Various declarations for functions found in toplev.c
- Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index ea8edcf70dc..dac0f040e4f 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1,5 +1,5 @@
/* Control and data flow functions for trees.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
@@ -39,7 +39,7 @@ Boston, MA 02111-1307, USA. */
#include "langhooks.h"
#include "cgraph.h"
#include "intl.h"
-
+#include "diagnostic.h"
/* This should be eventually be generalized to other languages, but
this would require a shared function-as-trees infrastructure. */
@@ -95,9 +95,6 @@ typedef struct inline_data
int in_target_cleanup_p;
/* A list of the functions current function has inlined. */
varray_type inlined_fns;
- /* The approximate number of instructions we have inlined in the
- current call stack. */
- int inlined_insns;
/* We use the same mechanism to build clones that we do to perform
inlining. However, there are a few places where we need to
distinguish between those two situations. This flag is true if
@@ -575,8 +572,11 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
/* Local variables and labels need to be replaced by equivalent
variables. We don't want to copy static variables; there's only
one of those, no matter how many times we inline the containing
- function. */
- else if ((*lang_hooks.tree_inlining.auto_var_in_fn_p) (*tp, fn))
+ function.
+ We do not also want to copy the label which we put into
+ GOTO_STMT which replaced RETURN_STMT. */
+ else if (*tp != id->ret_label
+ && (*lang_hooks.tree_inlining.auto_var_in_fn_p) (*tp, fn))
{
tree new_decl;
@@ -1569,11 +1569,6 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
the equivalent inlined version either. */
TREE_USED (*tp) = 1;
- /* Our function now has more statements than it did before. */
- DECL_ESTIMATED_INSNS (VARRAY_TREE (id->fns, 0)) += DECL_ESTIMATED_INSNS (fn);
- /* For accounting, subtract one for the saved call/ret. */
- id->inlined_insns += DECL_ESTIMATED_INSNS (fn) - 1;
-
/* Update callgraph if needed. */
if (id->decl)
{
@@ -1590,11 +1585,6 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
}
VARRAY_POP (id->fns);
- /* If we've returned to the top level, clear out the record of how
- much inlining has been done. */
- if (VARRAY_ACTIVE_SIZE (id->fns) == id->first_inlined_fn)
- id->inlined_insns = 0;
-
/* Don't walk into subtrees. We've already handled them above. */
*walk_subtrees = 0;
@@ -1626,6 +1616,12 @@ optimize_inline_calls (tree fn)
inline_data id;
tree prev_fn;
+ /* There is no point in performing inlining if errors have already
+ occurred -- and we might crash if we try to inline invalid
+ code. */
+ if (errorcount || sorrycount)
+ return;
+
/* Clear out ID. */
memset (&id, 0, sizeof (id));
@@ -1634,9 +1630,6 @@ optimize_inline_calls (tree fn)
/* Don't allow recursion into FN. */
VARRAY_TREE_INIT (id.fns, 32, "fns");
VARRAY_PUSH_TREE (id.fns, fn);
- if (!DECL_ESTIMATED_INSNS (fn))
- DECL_ESTIMATED_INSNS (fn)
- = (*lang_hooks.tree_inlining.estimate_num_insns) (fn);
/* Or any functions that aren't finished yet. */
prev_fn = NULL_TREE;
if (current_function_decl)
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index f1957ab20e7..9df5adbd79e 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -1,5 +1,5 @@
/* Control and data flow functions for trees.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -65,13 +65,13 @@ clear_decl_rtl (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, void *data)
{
case VAR_DECL:
nonstatic_p = !TREE_STATIC (t) && !DECL_EXTERNAL (t);
- local_p = DECL_CONTEXT (t) == data;
+ local_p = decl_function_context (t) == data;
break;
case PARM_DECL:
case LABEL_DECL:
nonstatic_p = true;
- local_p = DECL_CONTEXT (t) == data;
+ local_p = decl_function_context (t) == data;
break;
case RESULT_DECL:
@@ -205,18 +205,20 @@ tree_rest_of_compilation (tree fndecl, bool nested_p)
walk_tree_without_duplicates (&DECL_SAVED_TREE (fndecl),
clear_decl_rtl,
fndecl);
-
- if (DECL_SAVED_INSNS (fndecl) == 0 && !nested_p && !flag_inline_trees)
+ if (!cgraph_function_possibly_inlined_p (fndecl))
{
- /* 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.
- For a nested function, this is done in c_pop_function_context.
- If rest_of_compilation set this to 0, leave it 0. */
- if (DECL_INITIAL (fndecl) != 0)
- DECL_INITIAL (fndecl) = error_mark_node;
-
- DECL_ARGUMENTS (fndecl) = 0;
+ DECL_SAVED_TREE (fndecl) = NULL;
+ if (DECL_SAVED_INSNS (fndecl) == 0
+ && !cgraph_node (fndecl)->origin)
+ {
+ /* 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.
+ For a nested function, this is done in c_pop_function_context.
+ If rest_of_compilation set this to 0, leave it 0. */
+ if (DECL_INITIAL (fndecl) != 0)
+ DECL_INITIAL (fndecl) = error_mark_node;
+ }
}
input_location = saved_loc;
diff --git a/gcc/tree.c b/gcc/tree.c
index da94c4a5893..14933ca6e4c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -168,8 +168,7 @@ tree_size (tree node)
case REAL_CST: return sizeof (struct tree_real_cst);
case COMPLEX_CST: return sizeof (struct tree_complex);
case VECTOR_CST: return sizeof (struct tree_vector);
- case STRING_CST:
- return sizeof (struct tree_string) + TREE_STRING_LENGTH (node);
+ case STRING_CST: return sizeof (struct tree_string);
default:
return (*lang_hooks.tree_size) (code);
}
@@ -213,8 +212,8 @@ make_node (enum tree_code code)
struct tree_common ttmp;
/* We can't allocate a TREE_VEC without knowing how many elements
- it will have; likewise a STRING_CST without knowing the length. */
- if (code == TREE_VEC || code == STRING_CST)
+ it will have. */
+ if (code == TREE_VEC)
abort ();
TREE_SET_CODE ((tree)&ttmp, code);
@@ -526,23 +525,10 @@ build_real_from_int_cst (tree type, tree i)
tree
build_string (int len, const char *str)
{
- tree s;
- size_t length;
-
- length = len + sizeof (struct tree_string);
-
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int) c_kind]++;
- tree_node_sizes[(int) c_kind] += length;
-#endif
+ tree s = make_node (STRING_CST);
- s = ggc_alloc_tree (length);
-
- memset (s, 0, sizeof (struct tree_common));
- TREE_SET_CODE (s, STRING_CST);
TREE_STRING_LENGTH (s) = len;
- memcpy ((char *) TREE_STRING_POINTER (s), str, len);
- ((char *) TREE_STRING_POINTER (s))[len] = '\0';
+ TREE_STRING_POINTER (s) = ggc_alloc_string (str, len);
return s;
}
@@ -1656,6 +1642,13 @@ unsafe_for_reeval (tree expr)
unsafeness = 1;
break;
+ case EXIT_BLOCK_EXPR:
+ /* EXIT_BLOCK_LABELED_BLOCK, a.k.a. TREE_OPERAND (expr, 0), holds
+ a reference to an ancestor LABELED_BLOCK, so we need to avoid
+ unbounded recursion in the 'e' traversal code below. */
+ exp = EXIT_BLOCK_RETURN (expr);
+ return exp ? unsafe_for_reeval (exp) : 0;
+
default:
tmp = (*lang_hooks.unsafe_for_reeval) (expr);
if (tmp >= 0)
@@ -4863,6 +4856,10 @@ build_common_tree_nodes (int signed_char)
unsigned_intSI_type_node = make_unsigned_type (GET_MODE_BITSIZE (SImode));
unsigned_intDI_type_node = make_unsigned_type (GET_MODE_BITSIZE (DImode));
unsigned_intTI_type_node = make_unsigned_type (GET_MODE_BITSIZE (TImode));
+
+ access_public_node = get_identifier ("public");
+ access_protected_node = get_identifier ("protected");
+ access_private_node = get_identifier ("private");
}
/* Call this function after calling build_common_tree_nodes and set_sizetype.
diff --git a/gcc/tree.def b/gcc/tree.def
index 48028ee351f..78919740da3 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -274,7 +274,7 @@ DEFTREECODE (COMPLEX_CST, "complex_cst", 'c', 0)
/* Contents are in TREE_VECTOR_CST_ELTS field. */
DEFTREECODE (VECTOR_CST, "vector_cst", 'c', 0)
-/* Contents are TREE_STRING_LENGTH and the actual contents of the string. */
+/* Contents are TREE_STRING_LENGTH and TREE_STRING_POINTER fields. */
DEFTREECODE (STRING_CST, "string_cst", 'c', 0)
/* Declarations. All references to names are represented as ..._DECL
diff --git a/gcc/tree.h b/gcc/tree.h
index 7503fa5aaef..96de4a46760 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -210,6 +210,8 @@ struct tree_common GTY(())
TREE_PROTECTED in
BLOCK
..._DECL
+ CALL_FROM_THUNK_P in
+ CALL_EXPR
side_effects_flag:
@@ -265,6 +267,7 @@ struct tree_common GTY(())
TREE_DEPRECATED in
..._DECL
+
*/
/* Define accessors for the fields that all tree nodes have
@@ -623,6 +626,10 @@ extern void tree_operand_check_failed (int, enum tree_code,
argument list. */
#define CALL_EXPR_HAS_RETURN_SLOT_ADDR(NODE) ((NODE)->common.private_flag)
+/* In a CALL_EXPR, means that the call is the jump from a thunk to the
+ thunked-to function. */
+#define CALL_FROM_THUNK_P(NODE) ((NODE)->common.protected_flag)
+
/* In a type, nonzero means that all objects of the type are guaranteed by the
language or front-end to be properly aligned, so we can indicate that a MEM
of this type is aligned at least to the alignment of the type, even if it
@@ -700,13 +707,13 @@ struct tree_real_cst GTY(())
/* In a STRING_CST */
#define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
-#define TREE_STRING_POINTER(NODE) (STRING_CST_CHECK (NODE)->string.str)
+#define TREE_STRING_POINTER(NODE) (STRING_CST_CHECK (NODE)->string.pointer)
struct tree_string GTY(())
{
struct tree_common common;
int length;
- const char str[1];
+ const char *pointer;
};
/* In a COMPLEX_CST node. */
@@ -1620,13 +1627,6 @@ struct tree_type GTY(())
#define DECL_POINTER_ALIAS_SET_KNOWN_P(NODE) \
(DECL_POINTER_ALIAS_SET (NODE) != - 1)
-/* In a FUNCTION_DECL for which DECL_BUILT_IN does not hold, this is
- the approximate number of statements in this function. There is
- no need for this number to be exact; it is only used in various
- heuristics regarding optimization. */
-#define DECL_ESTIMATED_INSNS(NODE) \
- (FUNCTION_DECL_CHECK (NODE)->decl.u1.i)
-
/* Nonzero for a decl which is at file scope. */
#define DECL_FILE_SCOPE_P(EXP) \
(! DECL_CONTEXT (EXP) \
@@ -1816,6 +1816,10 @@ enum tree_index
TI_BITSIZE_ONE,
TI_BITSIZE_UNIT,
+ TI_PUBLIC,
+ TI_PROTECTED,
+ TI_PRIVATE,
+
TI_BOOLEAN_FALSE,
TI_BOOLEAN_TRUE,
@@ -1901,9 +1905,9 @@ extern GTY(()) tree global_trees[TI_MAX];
#define bitsize_unit_node global_trees[TI_BITSIZE_UNIT]
/* Base access nodes. */
-#define access_public_node NULL_TREE
-#define access_protected_node size_zero_node
-#define access_private_node size_one_node
+#define access_public_node global_trees[TI_PUBLIC]
+#define access_protected_node global_trees[TI_PROTECTED]
+#define access_private_node global_trees[TI_PRIVATE]
#define null_pointer_node global_trees[TI_NULL_POINTER]
diff --git a/gcc/treelang/ChangeLog b/gcc/treelang/ChangeLog
index e4281b080a8..eba0aefcf6e 100644
--- a/gcc/treelang/ChangeLog
+++ b/gcc/treelang/ChangeLog
@@ -1,3 +1,13 @@
+2004-01-30 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in (doc/treelang.dvi): Use $(abs_docdir).
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Make-lang.in: Replace $(docdir) with doc.
+ (treelang.info, treelang.srcinfo): New rules.
+ (treelang.man, treelang.man): Dummy entries.
+
2004-01-15 Kelley Cook <kcook@gcc.gnu.org>
* Make-lang.in (TREE_GENERATED): Delete reference to $(parsedir).
diff --git a/gcc/treelang/Make-lang.in b/gcc/treelang/Make-lang.in
index 1cb438ad8eb..d0d50288e11 100644
--- a/gcc/treelang/Make-lang.in
+++ b/gcc/treelang/Make-lang.in
@@ -139,29 +139,29 @@ treelang.all.cross:
treelang.start.encap:
treelang.rest.encap:
+treelang.man:
+treelang.srcman:
treelang.tags: force
cd $(srcdir)/treelang; etags -o TAGS.sub *.y *.l *.c *.h; \
etags --include TAGS.sub --include ../TAGS.sub
-info:: $(docobjdir)/treelang.info
-dvi:: $(docobjdir)/treelang.dvi
+treelang.info: doc/treelang.info
-$(docobjdir)/treelang.info: treelang/treelang.texi \
- $(docdir)/include/gcc-common.texi \
- $(docdir)/include/gpl.texi \
- $(docdir)/include/fdl.texi \
- $(docdir)/include/funding.texi \
- stmp-docobjdir
+treelang.srcinfo: doc/treelang.info
+ -cp -p $^ $(srcdir)/doc
+
+dvi:: doc/treelang.dvi
+
+doc/treelang.info: treelang/treelang.texi $(docdir)/include/gcc-common.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/funding.texi
$(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -o $@ $<
-$(docobjdir)/treelang.dvi: treelang/treelang.texi \
- $(docdir)/include/gcc-common.texi \
- $(docdir)/include/gpl.texi \
- $(docdir)/include/fdl.texi \
- $(docdir)/include/funding.texi \
- stmp-docobjdir
- $(TEXI2DVI) -I $(docdir)/include -o $@ $<
+doc/treelang.dvi: treelang/treelang.texi $(docdir)/include/gcc-common.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/funding.texi
+ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $<
#
# Install hooks:
diff --git a/gcc/unwind-dw2-fde.h b/gcc/unwind-dw2-fde.h
index 89e038a0575..16ffa9496c2 100644
--- a/gcc/unwind-dw2-fde.h
+++ b/gcc/unwind-dw2-fde.h
@@ -1,5 +1,5 @@
/* Subroutines needed for unwinding stack frames for exception handling. */
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
Free Software Foundation, Inc.
Contributed by Jason Merrill <jason@cygnus.com>.
diff --git a/gcc/unwind-pe.h b/gcc/unwind-pe.h
index 52e618c1aff..398165749a5 100644
--- a/gcc/unwind-pe.h
+++ b/gcc/unwind-pe.h
@@ -1,5 +1,5 @@
/* Exception handling and frame unwind runtime interface routines.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/unwind.h b/gcc/unwind.h
index 64768c0139b..21f3feb86bc 100644
--- a/gcc/unwind.h
+++ b/gcc/unwind.h
@@ -1,5 +1,5 @@
/* Exception handling and frame unwind runtime interface routines.
- Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
diff --git a/gcc/varasm.c b/gcc/varasm.c
index e44d288dbc8..7af71bf196f 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -2057,7 +2057,7 @@ struct rtx_const GTY(())
/* Uniquize all constants that appear in memory.
Each constant in memory thus far output is recorded
- in `const_hash_table'. */
+ in `const_desc_table'. */
struct constant_descriptor_tree GTY(())
{
@@ -2104,9 +2104,18 @@ const_hash_1 (const tree exp)
return real_hash (TREE_REAL_CST_PTR (exp));
case STRING_CST:
- p = TREE_STRING_POINTER (exp);
- len = TREE_STRING_LENGTH (exp);
+ if (flag_writable_strings)
+ {
+ p = (char *) &exp;
+ len = sizeof exp;
+ }
+ else
+ {
+ p = TREE_STRING_POINTER (exp);
+ len = TREE_STRING_LENGTH (exp);
+ }
break;
+
case COMPLEX_CST:
return (const_hash_1 (TREE_REALPART (exp)) * 5
+ const_hash_1 (TREE_IMAGPART (exp)));
@@ -2221,7 +2230,7 @@ compare_constant (const tree t1, const tree t2)
case STRING_CST:
if (flag_writable_strings)
- return 0;
+ return t1 == t2;
if (TYPE_MODE (TREE_TYPE (t1)) != TYPE_MODE (TREE_TYPE (t2)))
return 0;
@@ -2425,7 +2434,10 @@ build_constant_desc (tree exp)
struct constant_descriptor_tree *desc;
desc = ggc_alloc (sizeof (*desc));
- desc->value = copy_constant (exp);
+ if (flag_writable_strings && TREE_CODE (exp) == STRING_CST)
+ desc->value = exp;
+ else
+ desc->value = copy_constant (exp);
/* Create a string containing the label name, in LABEL. */
labelno = const_labelno++;
@@ -2466,7 +2478,7 @@ build_constant_desc (tree exp)
If DEFER is nonzero, this constant can be deferred and output only
if referenced in the function after all optimizations.
- The const_hash_table records which constants already have label strings. */
+ `const_desc_table' records which constants already have label strings. */
rtx
output_constant_def (tree exp, int defer)
diff --git a/gcc/varray.c b/gcc/varray.c
index dd4640d5d77..177d2f16f18 100644
--- a/gcc/varray.c
+++ b/gcc/varray.c
@@ -1,5 +1,5 @@
/* Virtual array support.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
@@ -27,9 +27,60 @@
#include "tm.h"
#include "varray.h"
#include "ggc.h"
+#include "hashtab.h"
#define VARRAY_HDR_SIZE (sizeof (struct varray_head_tag) - sizeof (varray_data))
+#ifdef GATHER_STATISTICS
+
+/* Store infromation about each particular varray. */
+struct varray_descriptor
+{
+ const char *name;
+ int allocated;
+ int created;
+ int resized;
+ int copied;
+};
+
+/* Hashtable mapping varray names to descriptors. */
+static htab_t varray_hash;
+
+/* Hashtable helpers. */
+static hashval_t
+hash_descriptor (const void *p)
+{
+ const struct varray_descriptor *d = p;
+ return htab_hash_pointer (d->name);
+}
+static int
+eq_descriptor (const void *p1, const void *p2)
+{
+ const struct varray_descriptor *d = p1;
+ return d->name == p2;
+}
+
+/* For given name, return descriptor, create new if needed. */
+static struct varray_descriptor *
+varray_descriptor (const char *name)
+{
+ struct varray_descriptor **slot;
+
+ if (!varray_hash)
+ varray_hash = htab_create (10, hash_descriptor, eq_descriptor, NULL);
+
+ slot = (struct varray_descriptor **)
+ htab_find_slot_with_hash (varray_hash, name,
+ htab_hash_pointer (name),
+ 1);
+ if (*slot)
+ return *slot;
+ *slot = xcalloc (sizeof (**slot), 1);
+ (*slot)->name = name;
+ return *slot;
+}
+#endif
+
/* Do not add any more non-GC items here. Please either remove or GC
those items that are not GCed. */
@@ -67,6 +118,12 @@ varray_init (size_t num_elements, enum varray_data_enum element_kind,
{
size_t data_size = num_elements * element[element_kind].size;
varray_type ptr;
+#ifdef GATHER_STATISTICS
+ struct varray_descriptor *desc = varray_descriptor (name);
+
+ desc->created++;
+ desc->allocated += data_size + VARRAY_HDR_SIZE;
+#endif
if (element[element_kind].uses_ggc)
ptr = ggc_alloc_cleared (VARRAY_HDR_SIZE + data_size);
else
@@ -85,12 +142,20 @@ varray_type
varray_grow (varray_type va, size_t n)
{
size_t old_elements = va->num_elements;
-
if (n != old_elements)
{
size_t elem_size = element[va->type].size;
size_t old_data_size = old_elements * elem_size;
size_t data_size = n * elem_size;
+#ifdef GATHER_STATISTICS
+ struct varray_descriptor *desc = varray_descriptor (va->name);
+ varray_type oldva = va;
+
+ if (data_size > old_data_size)
+ desc->allocated += data_size - old_data_size;
+ desc->resized ++;
+#endif
+
if (element[va->type].uses_ggc)
va = ggc_realloc (va, VARRAY_HDR_SIZE + data_size);
@@ -99,6 +164,10 @@ varray_grow (varray_type va, size_t n)
va->num_elements = n;
if (n > old_elements)
memset (&va->data.c[old_data_size], 0, data_size - old_data_size);
+#ifdef GATHER_STATISTICS
+ if (oldva != va)
+ desc->copied++;
+#endif
}
return va;
@@ -137,3 +206,43 @@ varray_underflow (varray_type va, const char *file, int line,
}
#endif
+
+/* Output per-varray statistics. */
+#ifdef GATHER_STATISTICS
+struct output_info
+{
+ int count;
+ int size;
+};
+static int
+print_statistics (void **slot, void *b)
+{
+ struct varray_descriptor *d = (struct varray_descriptor *) *slot;
+ struct output_info *i = (struct output_info *) b;
+
+ if (d->allocated)
+ {
+ fprintf (stderr, "%-21s %6d %10d %7d %7d\n", d->name,
+ d->created, d->allocated, d->resized, d->copied);
+ i->size += d->allocated;
+ i->count += d->created;
+ }
+ return 1;
+}
+#endif
+void dump_varray_statistics (void)
+{
+#ifdef GATHER_STATISTICS
+ struct output_info info;
+
+ fprintf (stderr, "\nVARRAY Kind Count Bytes Resized copied\n");
+ fprintf (stderr, "-------------------------------------------------------\n");
+ info.count = 0;
+ info.size = 0;
+ htab_traverse (varray_hash, print_statistics, &info);
+ fprintf (stderr, "-------------------------------------------------------\n");
+ fprintf (stderr, "%-20s %7d %10d\n",
+ "Total", info.count, info.size);
+ fprintf (stderr, "-------------------------------------------------------\n");
+#endif
+}
diff --git a/gcc/varray.h b/gcc/varray.h
index 9cc6ea5fffe..194d10cd563 100644
--- a/gcc/varray.h
+++ b/gcc/varray.h
@@ -1,5 +1,5 @@
/* Virtual array support.
- Copyright (C) 1998, 1999, 2000, 2002, 2003
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
@@ -223,6 +223,8 @@ extern varray_type varray_grow (varray_type, size_t);
extern void varray_clear (varray_type);
+extern void dump_varray_statistics (void);
+
/* Check for VARRAY_xxx macros being in bound. */
#if defined ENABLE_CHECKING && (GCC_VERSION >= 2007)
extern void varray_check_failed (varray_type, size_t, const char *, int,
diff --git a/gcc/version.c b/gcc/version.c
index 45303176bb0..2b71b906f6c 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -5,7 +5,7 @@
please modify this string to indicate that, e.g. by putting your
organization's name in parentheses at the end of the string. */
-const char version_string[] = "3.4.0 20040116 (experimental)";
+const char version_string[] = "3.4.0 20040303 (prerelease)";
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/libf2c/ChangeLog b/libf2c/ChangeLog
index e54f66e856d..74e49e90834 100644
--- a/libf2c/ChangeLog
+++ b/libf2c/ChangeLog
@@ -1,3 +1,17 @@
+Thu Feb 5 15:08:08 2004 Geoffrey Keating <geoffk@apple.com>
+
+ PR 12179
+ * aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Use 'gcc', not 'gcc-lib'.
+ Add comment about poorly-named variables.
+ * Makefile.in (libsubdir): Use 'gcc', not 'gcc-lib'.
+ * configure: Regenerate.
+
+2004-01-31 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/12884
+ * libI77/rsne.c: Enable reading a '/' when reading
+ a '$' delimited namelist.
+
2004-01-14 Kelley Cook <kcook@gcc.gnu.org>
* libF77/configure.in: Update to AC_PREREQ(2.13)
diff --git a/libf2c/Makefile.in b/libf2c/Makefile.in
index 7a2c1d9be9a..120bd7c4017 100644
--- a/libf2c/Makefile.in
+++ b/libf2c/Makefile.in
@@ -42,7 +42,7 @@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
top_builddir = .
libdir = $(exec_prefix)/lib
-libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)
+libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)
#
# Versions should start at 0:0:0 - See libtool manual.
VERSION_MAJOR=0
diff --git a/libf2c/aclocal.m4 b/libf2c/aclocal.m4
index 9c513b62d89..b84eda0d2cf 100644
--- a/libf2c/aclocal.m4
+++ b/libf2c/aclocal.m4
@@ -194,9 +194,10 @@ AC_SUBST(gcc_version_trigger)
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
- # is selected.
+ # is selected. FIXME: "toolexecdir" is a misnomer, there are no
+ # executables installed there.
changequote(,)dnl
- glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
changequote([,])dnl
fi
@@ -209,7 +210,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then
glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/lib'
else
- glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
glibcpp_toolexeclibdir='$(libdir)'
fi
multi_os_directory=`$CC -print-multi-os-directory`
diff --git a/libf2c/configure b/libf2c/configure
index 29474cd6d9f..2636d32c70e 100755
--- a/libf2c/configure
+++ b/libf2c/configure
@@ -1193,7 +1193,7 @@ else
if { (eval echo configure:1194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.$ac_ext | *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -1250,8 +1250,9 @@ gcc_version=`echo ${gcc_version_full} | sed -e 's/\(^ *\) .*/\1/'`
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
- # is selected.
- glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ # is selected. FIXME: "toolexecdir" is a misnomer, there are no
+ # executables installed there.
+ glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
fi
@@ -1263,7 +1264,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then
glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/lib'
else
- glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
glibcpp_toolexeclibdir='$(libdir)'
fi
multi_os_directory=`$CC -print-multi-os-directory`
@@ -1360,7 +1361,7 @@ ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1364: checking for ld used by GCC" >&5
+echo "configure:1365: checking for ld used by GCC" >&5
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
@@ -1390,10 +1391,10 @@ echo "configure:1364: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1394: checking for GNU ld" >&5
+echo "configure:1395: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1397: checking for non-GNU ld" >&5
+echo "configure:1398: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1428,7 +1429,7 @@ else
fi
test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1432: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1433: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1445,7 +1446,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-echo "configure:1449: checking for $LD option to reload object files" >&5
+echo "configure:1450: checking for $LD option to reload object files" >&5
if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1457,7 +1458,7 @@ reload_flag=$lt_cv_ld_reload_flag
test -n "$reload_flag" && reload_flag=" $reload_flag"
echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1461: checking for BSD-compatible nm" >&5
+echo "configure:1462: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1495,7 +1496,7 @@ NM="$lt_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
-echo "configure:1499: checking how to recognise dependant libraries" >&5
+echo "configure:1500: checking how to recognise dependant libraries" >&5
if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1534,6 +1535,7 @@ cygwin* | mingw* |pw32*)
;;
darwin* | rhapsody*)
+ # this will be overwritten by pass_all, but leave it in just in case
lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
lt_cv_file_magic_cmd='/usr/bin/file -L'
case "$host_os" in
@@ -1544,6 +1546,7 @@ darwin* | rhapsody*)
lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
;;
esac
+ lt_cv_deplibs_check_method=pass_all
;;
freebsd* )
@@ -1668,13 +1671,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:1672: checking for object suffix" >&5
+echo "configure:1675: checking for object suffix" >&5
if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
rm -f conftest*
echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:1678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
for ac_file in conftest.*; do
case $ac_file in
*.c) ;;
@@ -1698,7 +1701,7 @@ case $deplibs_check_method in
file_magic*)
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
-echo "configure:1702: checking for ${ac_tool_prefix}file" >&5
+echo "configure:1705: checking for ${ac_tool_prefix}file" >&5
if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1760,7 +1763,7 @@ fi
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
echo $ac_n "checking for file""... $ac_c" 1>&6
-echo "configure:1764: checking for file" >&5
+echo "configure:1767: checking for file" >&5
if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1831,7 +1834,7 @@ esac
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1835: checking for $ac_word" >&5
+echo "configure:1838: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1863,7 +1866,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1867: checking for $ac_word" >&5
+echo "configure:1870: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1898,7 +1901,7 @@ fi
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1902: checking for $ac_word" >&5
+echo "configure:1905: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1930,7 +1933,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1934: checking for $ac_word" >&5
+echo "configure:1937: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1997,8 +2000,8 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
case $host in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 2001 "configure"' > conftest.$ac_ext
- if { (eval echo configure:2002: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2004 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if test "$lt_cv_prog_gnu_ld" = yes; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
@@ -2031,7 +2034,7 @@ case $host in
ia64-*-hpux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
- if { (eval echo configure:2035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:2038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*ELF-32*)
HPUX_IA64_MODE="32"
@@ -2047,7 +2050,7 @@ ia64-*-hpux*)
x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
- if { (eval echo configure:2051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:2054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
case $host in
@@ -2091,7 +2094,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:2095: checking whether the C compiler needs -belf" >&5
+echo "configure:2098: checking whether the C compiler needs -belf" >&5
if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2104,14 +2107,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2108 "configure"
+#line 2111 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -2235,7 +2238,7 @@ else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2239: checking for $ac_word" >&5
+echo "configure:2242: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2275,7 +2278,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2279: checking for a BSD compatible install" >&5
+echo "configure:2282: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2328,7 +2331,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:2332: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:2335: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2357,7 +2360,7 @@ fi
# Sanity check for the cross-compilation case:
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2361: checking how to run the C preprocessor" >&5
+echo "configure:2364: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2372,13 +2375,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 2376 "configure"
+#line 2379 "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:2382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2385: \"$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
:
@@ -2389,13 +2392,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2393 "configure"
+#line 2396 "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:2399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2402: \"$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
:
@@ -2406,13 +2409,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2410 "configure"
+#line 2413 "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:2416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2419: \"$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
:
@@ -2438,17 +2441,17 @@ echo "$ac_t""$CPP" 1>&6
ac_safe=`echo "stdio.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for stdio.h""... $ac_c" 1>&6
-echo "configure:2442: checking for stdio.h" >&5
+echo "configure:2445: checking for stdio.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 2447 "configure"
+#line 2450 "configure"
#include "confdefs.h"
#include <stdio.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2452: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2455: \"$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*
@@ -2476,12 +2479,12 @@ fi
echo $ac_n "checking for built-in g77 integer types""... $ac_c" 1>&6
-echo "configure:2480: checking for built-in g77 integer types" >&5
+echo "configure:2483: checking for built-in g77 integer types" >&5
if eval "test \"`echo '$''{'libf2c_cv_has_g77_builtin_types'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2485 "configure"
+#line 2488 "configure"
#include "confdefs.h"
int main() {
@@ -2491,7 +2494,7 @@ __g77_longint g77l;
__g77_ulongint g77ul;
; return 0; }
EOF
-if { (eval echo configure:2495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libf2c_cv_has_g77_builtin_types=yes
else
@@ -2928,7 +2931,7 @@ if test "$no_recursion" != yes; then
fi
fi
- cd "$ac_popdir"
+ cd $ac_popdir
done
fi
diff --git a/libf2c/libI77/rsne.c b/libf2c/libI77/rsne.c
index f233a4ad9f8..0975e000c70 100644
--- a/libf2c/libI77/rsne.c
+++ b/libf2c/libI77/rsne.c
@@ -278,6 +278,7 @@ x_rsne (cilist * a)
char *vaddr;
long iva, ivae;
dimen dimens[MAXDIM], substr;
+ int dollarsign_delimited;
if (!Alpha['a'])
nl_init ();
@@ -285,14 +286,16 @@ x_rsne (cilist * a)
f__formatted = 1;
got1 = 0;
top:
+ dollarsign_delimited = 0;
for (;;)
switch (GETC (ch))
{
case EOF:
eof:
err (a->ciend, (EOF), where0);
- case '&':
case '$':
+ dollarsign_delimited = 1;
+ case '&':
goto have_amp;
#ifndef No_Namelist_Questions
case '?':
@@ -329,6 +332,8 @@ have_amp:
case EOF:
err (a->ciend, EOF, where0);
case '/':
+ if (dollarsign_delimited)
+ continue;
case '&':
case '$':
if (f__external)
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 2b7baf99a68..f39864e9dc7 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,43 @@
+2004-01-25 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
+ when the structure return address is passed in %o0.
+ (ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
+ (ffi_v9_layout_struct): Align the field following a nested structure
+ on a word boundary. Use memmove instead of memcpy.
+ (ffi_call): Update call to ffi_V9_return_struct.
+ (ffi_prep_closure): Define 'ctx' only for V8.
+ (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
+ and ffi_closure_sparc_inner_v9.
+ (ffi_closure_sparc_inner_v8): Return long doubles by reference.
+ Always skip the structure return address. For structures and long
+ doubles, copy the argument directly.
+ (ffi_closure_sparc_inner_v9): Skip the structure return address only
+ if required. Shift the maximum floating-point slot accordingly. For
+ big structures, copy the argument directly; otherwise, left-justify the
+ argument and call ffi_v9_layout_struct to lay out the structure on
+ the stack.
+ * src/sparc/v8.S: Undef STACKFRAME before defining it.
+ (ffi_closure_v8): Pass the structure return address. Update call to
+ ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling.
+ Skip the 'unimp' insn when returning long doubles and structures.
+ * src/sparc/v9.S: Undef STACKFRAME before defining it.
+ (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit
+ FFI_TYPE_INT handling. Load structures both in integers and
+ floating-point registers on return.
+ * README: Update status of the SPARC port.
+
+2004-01-24 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
+ as of type ffi_arg.
+ * testsuite/libffi.call/struct3.c (main): Fix CHECK.
+
+2004-01-22 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
+ value as of type ffi_arg, not unsigned int.
+
2004-01-12 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
diff --git a/libffi/README b/libffi/README
index 21a7735bf74..1fc27470d0a 100644
--- a/libffi/README
+++ b/libffi/README
@@ -46,7 +46,7 @@ Supported Platforms and Prerequisites
Libffi has been ported to:
- SunOS 4.1.3 & Solaris 2.x (Sparc v8)
+ SunOS 4.1.3 & Solaris 2.x (SPARC-V8, SPARC-V9)
Irix 5.3 & 6.2 (System V/o32 & n32)
@@ -306,15 +306,9 @@ Platform Specific Notes
There are no known problems with the x86 port.
- Sun Sparc - SunOS 4.1.3 & Solaris 2.x
+ Sun SPARC - SunOS 4.1.3 & Solaris 2.x
-------------------------------------
-There's a bug in the structure passing code for sparc processors.
-Struct arguments that are passed in value actually end up being passed
-by reference. This will be fixed Real Soon Now.
-
-"long long" values are not supported yet.
-
You must use GNU Make to build libffi on Sun platforms.
MIPS - Irix 5.3 & 6.x
diff --git a/libffi/src/sparc/ffi.c b/libffi/src/sparc/ffi.c
index a08e65ac571..ad15bee986c 100644
--- a/libffi/src/sparc/ffi.c
+++ b/libffi/src/sparc/ffi.c
@@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 1996, 2003 Red Hat, Inc.
+ ffi.c - Copyright (c) 1996, 2003, 2004 Red Hat, Inc.
- Sparc Foreign Function Interface
+ SPARC Foreign Function Interface
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -28,11 +28,6 @@
#include <stdlib.h>
-#ifdef SPARC64
-extern void ffi_closure_v9(void);
-#else
-extern void ffi_closure_v8(void);
-#endif
/* ffi_prep_args is called by the assembly routine once stack space
has been allocated for the function's arguments */
@@ -154,6 +149,7 @@ int ffi_prep_args_v9(char *stack, extended_cif *ecif)
ecif->cif->rtype->size > 32)
{
*(unsigned long long *) argp = (unsigned long)ecif->rvalue;
+ argp += sizeof(long long);
tmp = 1;
}
@@ -326,7 +322,7 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK;
}
-int ffi_V9_return_struct(ffi_type *arg, int off, char *ret, char *intg, char *flt)
+int ffi_v9_layout_struct(ffi_type *arg, int off, char *ret, char *intg, char *flt)
{
ffi_type **ptr = &arg->elements[0];
@@ -338,18 +334,19 @@ int ffi_V9_return_struct(ffi_type *arg, int off, char *ret, char *intg, char *fl
switch ((*ptr)->type)
{
case FFI_TYPE_STRUCT:
- off = ffi_V9_return_struct(*ptr, off, ret, intg, flt);
+ off = ffi_v9_layout_struct(*ptr, off, ret, intg, flt);
+ off = ALIGN(off, FFI_SIZEOF_ARG);
break;
case FFI_TYPE_FLOAT:
case FFI_TYPE_DOUBLE:
#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
case FFI_TYPE_LONGDOUBLE:
#endif
- memcpy(ret + off, flt + off, (*ptr)->size);
+ memmove(ret + off, flt + off, (*ptr)->size);
off += (*ptr)->size;
break;
default:
- memcpy(ret + off, intg + off, (*ptr)->size);
+ memmove(ret + off, intg + off, (*ptr)->size);
off += (*ptr)->size;
break;
}
@@ -358,10 +355,14 @@ int ffi_V9_return_struct(ffi_type *arg, int off, char *ret, char *intg, char *fl
return off;
}
-extern int ffi_call_V8(void *, extended_cif *, unsigned,
+
+#ifdef SPARC64
+extern int ffi_call_v9(void *, extended_cif *, unsigned,
unsigned, unsigned *, void (*fn)());
-extern int ffi_call_V9(void *, extended_cif *, unsigned,
+#else
+extern int ffi_call_v8(void *, extended_cif *, unsigned,
unsigned, unsigned *, void (*fn)());
+#endif
void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
{
@@ -394,16 +395,16 @@ void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
/* We don't yet support calling 32bit code from 64bit */
FFI_ASSERT(0);
#else
- ffi_call_V8(ffi_prep_args_v8, &ecif, cif->bytes,
+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
cif->flags, rvalue, fn);
#endif
break;
case FFI_V9:
#ifdef SPARC64
- ffi_call_V9(ffi_prep_args_v9, &ecif, cif->bytes,
+ ffi_call_v9(ffi_prep_args_v9, &ecif, cif->bytes,
cif->flags, rval, fn);
if (rvalue && rval && cif->rtype->type == FFI_TYPE_STRUCT)
- ffi_V9_return_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32);
+ ffi_v9_layout_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32);
#else
/* And vice versa */
FFI_ASSERT(0);
@@ -416,6 +417,13 @@ void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
}
+
+#ifdef SPARC64
+extern void ffi_closure_v9(void);
+#else
+extern void ffi_closure_v8(void);
+#endif
+
ffi_status
ffi_prep_closure (ffi_closure* closure,
ffi_cif* cif,
@@ -424,8 +432,6 @@ ffi_prep_closure (ffi_closure* closure,
{
unsigned int *tramp = (unsigned int *) &closure->tramp[0];
unsigned long fn;
- unsigned long ctx = (unsigned long) closure;
-
#ifdef SPARC64
/* Trampoline address is equal to the closure address. We take advantage
of that to reduce the trampoline size by 8 bytes. */
@@ -437,6 +443,7 @@ ffi_prep_closure (ffi_closure* closure,
tramp[3] = 0x01000000; /* nop */
*((unsigned long *) &tramp[4]) = fn;
#else
+ unsigned long ctx = (unsigned long) closure;
FFI_ASSERT (cif->abi == FFI_V8);
fn = (unsigned long) ffi_closure_v8;
tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */
@@ -462,49 +469,122 @@ ffi_prep_closure (ffi_closure* closure,
}
int
-ffi_closure_sparc_inner(ffi_closure *closure,
- void *rvalue, unsigned long *gpr, double *fpr)
+ffi_closure_sparc_inner_v8(ffi_closure *closure,
+ void *rvalue, unsigned long *gpr)
{
ffi_cif *cif;
- void **avalue;
ffi_type **arg_types;
- int i, avn, argn;
+ void **avalue;
+ int i, argn;
cif = closure->cif;
+ arg_types = cif->arg_types;
avalue = alloca(cif->nargs * sizeof(void *));
- argn = 0;
+ /* Copy the caller's structure return address so that the closure
+ returns the data directly to the caller. */
+ if (cif->flags == FFI_TYPE_STRUCT
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ || cif->flags == FFI_TYPE_LONGDOUBLE
+#endif
+ )
+ rvalue = (void *) gpr[0];
+
+ /* Always skip the structure return address. */
+ argn = 1;
+
+ /* Grab the addresses of the arguments from the stack frame. */
+ for (i = 0; i < cif->nargs; i++)
+ {
+ if (arg_types[i]->type == FFI_TYPE_STRUCT
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ || arg_types[i]->type == FFI_TYPE_LONGDOUBLE
+#endif
+ )
+ {
+ /* Straight copy of invisible reference. */
+ avalue[i] = (void *)gpr[argn++];
+ }
+ else
+ {
+ /* Always right-justify. */
+ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size;
+ }
+ }
- /* Copy the caller's structure return address to that the closure
+ /* Invoke the closure. */
+ (closure->fun) (cif, rvalue, avalue, closure->user_data);
+
+ /* Tell ffi_closure_sparc how to perform return type promotions. */
+ return cif->rtype->type;
+}
+
+int
+ffi_closure_sparc_inner_v9(ffi_closure *closure,
+ void *rvalue, unsigned long *gpr, double *fpr)
+{
+ ffi_cif *cif;
+ ffi_type **arg_types;
+ void **avalue;
+ int i, argn, fp_slot_max;
+
+ cif = closure->cif;
+ arg_types = cif->arg_types;
+ avalue = alloca(cif->nargs * sizeof(void *));
+
+ /* Copy the caller's structure return address so that the closure
returns the data directly to the caller. */
- if (cif->flags == FFI_TYPE_STRUCT)
+ if (cif->flags == FFI_TYPE_VOID
+ && cif->rtype->type == FFI_TYPE_STRUCT)
{
rvalue = (void *) gpr[0];
+ /* Skip the structure return address. */
argn = 1;
}
+ else
+ argn = 0;
+
+ fp_slot_max = 16 - argn;
- i = 0;
- avn = cif->nargs;
- arg_types = cif->arg_types;
-
/* Grab the addresses of the arguments from the stack frame. */
- while (i < avn)
+ for (i = 0; i < cif->nargs; i++)
{
- /* Assume big-endian. FIXME */
- argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ if (arg_types[i]->type == FFI_TYPE_STRUCT)
+ {
+ if (arg_types[i]->size > 16)
+ {
+ /* Straight copy of invisible reference. */
+ avalue[i] = (void *)gpr[argn++];
+ }
+ else
+ {
+ /* Left-justify. */
+ ffi_v9_layout_struct(arg_types[i],
+ 0,
+ (char *) &gpr[argn],
+ (char *) &gpr[argn],
+ (char *) &fpr[argn]);
+ avalue[i] = &gpr[argn];
+ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ }
+ }
+ else
+ {
+ /* Right-justify. */
+ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
-#ifdef SPARC64
- if (i < 16 && (arg_types[i]->type == FFI_TYPE_FLOAT
- || arg_types[i]->type == FFI_TYPE_DOUBLE
+ if (i < fp_slot_max
+ && (arg_types[i]->type == FFI_TYPE_FLOAT
+ || arg_types[i]->type == FFI_TYPE_DOUBLE
#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- || arg_types[i]->type == FFI_TYPE_LONGDOUBLE
+ || arg_types[i]->type == FFI_TYPE_LONGDOUBLE
#endif
- ))
- avalue[i] = ((char *) &fpr[argn]) - arg_types[i]->size;
- else
-#endif
- avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size;
- i++;
+ ))
+ avalue[i] = ((char *) &fpr[argn]) - arg_types[i]->size;
+ else
+ avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size;
+ }
}
/* Invoke the closure. */
diff --git a/libffi/src/sparc/v8.S b/libffi/src/sparc/v8.S
index 880aae1f69e..aaa7be7b4c8 100644
--- a/libffi/src/sparc/v8.S
+++ b/libffi/src/sparc/v8.S
@@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
- v8.S - Copyright (c) 1996, 1997, 2003 Red Hat, Inc.
+ v8.S - Copyright (c) 1996, 1997, 2003, 2004 Red Hat, Inc.
- Sparc Foreign Function Interface
+ SPARC Foreign Function Interface
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,11 +32,11 @@
.text
.align 8
-.globl ffi_call_V8
-.globl _ffi_call_V8
+.globl ffi_call_v8
+.globl _ffi_call_v8
-ffi_call_V8:
-_ffi_call_V8:
+ffi_call_v8:
+_ffi_call_v8:
.LLFB1:
save %sp, -STACKFRAME, %sp
.LLCFI0:
@@ -92,10 +92,11 @@ longlong:
restore
.LLFE1:
-.ffi_call_V8_end:
- .size ffi_call_V8,.ffi_call_V8_end-ffi_call_V8
+.ffi_call_v8_end:
+ .size ffi_call_v8,.ffi_call_v8_end-ffi_call_v8
+#undef STACKFRAME
#define STACKFRAME 104 /* 16*4 register window +
1*4 struct return +
6*4 args backing store +
@@ -128,14 +129,17 @@ ffi_closure_v8:
! Call ffi_closure_sparc_inner to do the bulk of the work.
mov %g2, %o0
add %fp, -8, %o1
- add %fp, 68, %o2
- call ffi_closure_sparc_inner
- mov 0, %o3
+ call ffi_closure_sparc_inner_v8
+ add %fp, 64, %o2
! Load up the return value in the proper type.
+ ! See ffi_prep_cif_machdep for the list of cases.
cmp %o0, FFI_TYPE_VOID
be done1
+ cmp %o0, FFI_TYPE_INT
+ be integer
+
cmp %o0, FFI_TYPE_FLOAT
be,a done1
ld [%fp-8], %f0
@@ -144,19 +148,26 @@ ffi_closure_v8:
be,a done1
ldd [%fp-8], %f0
- cmp %o0, FFI_TYPE_SINT64
- be,a integer
- ld [%fp-4], %i1
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ cmp %o0, FFI_TYPE_LONGDOUBLE
+ be done2
+#endif
+
+ cmp %o0, FFI_TYPE_STRUCT
+ be done2
- cmp %o0, FFI_TYPE_UINT64
- be,a integer
- ld [%fp-4], %i1
+ ! FFI_TYPE_SINT64
+ ld [%fp-4], %i1
integer:
ld [%fp-8], %i0
done1:
- ret
+ jmp %i7+8
+ restore
+done2:
+ ! Skip 'unimp'.
+ jmp %i7+12
restore
.LLFE2:
diff --git a/libffi/src/sparc/v9.S b/libffi/src/sparc/v9.S
index 03b487bb54d..d640e0232d5 100644
--- a/libffi/src/sparc/v9.S
+++ b/libffi/src/sparc/v9.S
@@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
- v9.S - Copyright (c) 2000, 2003 Red Hat, Inc.
+ v9.S - Copyright (c) 2000, 2003, 2004 Red Hat, Inc.
- Sparc 64bit Foreign Function Interface
+ SPARC 64-bit Foreign Function Interface
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -37,11 +37,11 @@
.text
.align 8
-.globl ffi_call_V9
-.globl _ffi_call_V9
+.globl ffi_call_v9
+.globl _ffi_call_v9
-ffi_call_V9:
-_ffi_call_V9:
+ffi_call_v9:
+_ffi_call_v9:
.LLFB1:
save %sp, -STACKFRAME, %sp
.LLCFI0:
@@ -87,7 +87,7 @@ _ffi_call_V9:
cmp %i3, FFI_TYPE_INT
be,a,pt %icc, done
- stx %o0, [%i4] ! (delay)
+ stx %o0, [%i4+0] ! (delay)
cmp %i3, FFI_TYPE_FLOAT
be,a,pn %icc, done
@@ -123,13 +123,14 @@ dostruct:
restore
.LLFE1:
-.ffi_call_V9_end:
- .size ffi_call_V9,.ffi_call_V9_end-ffi_call_V9
+.ffi_call_v9_end:
+ .size ffi_call_v9,.ffi_call_v9_end-ffi_call_v9
-#define STACKFRAME 320 /* 16*8 register window +
+#undef STACKFRAME
+#define STACKFRAME 336 /* 16*8 register window +
6*8 args backing store +
- 18*8 locals */
+ 20*8 locals */
#define FP %fp+STACK_BIAS
/* ffi_closure_v9(...)
@@ -173,46 +174,55 @@ ffi_closure_v9:
! Call ffi_closure_sparc_inner to do the bulk of the work.
mov %g1, %o0
- add %fp, STACK_BIAS-144, %o1
+ add %fp, STACK_BIAS-160, %o1
add %fp, STACK_BIAS+128, %o2
- call ffi_closure_sparc_inner
- add %fp, STACK_BIAS-128, %o3
+ call ffi_closure_sparc_inner_v9
+ add %fp, STACK_BIAS-128, %o3
! Load up the return value in the proper type.
+ ! See ffi_prep_cif_machdep for the list of cases.
cmp %o0, FFI_TYPE_VOID
be,pn %icc, done1
+ cmp %o0, FFI_TYPE_INT
+ be,pn %icc, integer
+
cmp %o0, FFI_TYPE_FLOAT
be,a,pn %icc, done1
- ld [FP-144], %f0
+ ld [FP-160], %f0
cmp %o0, FFI_TYPE_DOUBLE
be,a,pn %icc, done1
- ldd [FP-144], %f0
+ ldd [FP-160], %f0
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
cmp %o0, FFI_TYPE_LONGDOUBLE
be,a,pn %icc, longdouble1
- ldd [FP-144], %f0
+ ldd [FP-160], %f0
+#endif
- cmp %o0, FFI_TYPE_STRUCT
- be,pn %icc, struct1
+ ! FFI_TYPE_STRUCT
+ ldx [FP-152], %i1
+ ldx [FP-144], %i2
+ ldx [FP-136], %i3
+ ldd [FP-160], %f0
+ ldd [FP-152], %f2
+ ldd [FP-144], %f4
+ ldd [FP-136], %f6
- ! FFI_TYPE_UINT64 | FFI_TYPE_SINT64 | FFI_TYPE_POINTER
- ldx [FP-144], %i0
+integer:
+ ldx [FP-160], %i0
done1:
ret
restore
-struct1:
- ldx [FP-136], %i2
- ret
- restore
-
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
longdouble1:
- ldd [FP-136], %f2
+ ldd [FP-152], %f2
ret
restore
+#endif
.LLFE2:
.ffi_closure_v9_end:
diff --git a/libffi/testsuite/libffi.call/cls_uint.c b/libffi/testsuite/libffi.call/cls_uint.c
index 501e179fd7f..e24e7bd44b6 100644
--- a/libffi/testsuite/libffi.call/cls_uint.c
+++ b/libffi/testsuite/libffi.call/cls_uint.c
@@ -10,10 +10,10 @@
static void cls_ret_uint_fn(ffi_cif* cif,void* resp,void** args,
void* userdata)
{
- *(unsigned int*)resp = *(unsigned int *)args[0];
+ *(ffi_arg *)resp = *(unsigned int *)args[0];
printf("%d: %d\n",*(unsigned int *)args[0],
- *(unsigned int *)resp);
+ *(ffi_arg *)resp);
}
typedef unsigned int (*cls_ret_uint)(unsigned int);
diff --git a/libffi/testsuite/libffi.call/pyobjc-tc.c b/libffi/testsuite/libffi.call/pyobjc-tc.c
index ac092de3327..017323cbc80 100644
--- a/libffi/testsuite/libffi.call/pyobjc-tc.c
+++ b/libffi/testsuite/libffi.call/pyobjc-tc.c
@@ -93,7 +93,7 @@ int main(void)
int o = 0;
int l = 42;
char* m = "myMethod";
- int result;
+ ffi_arg result;
values[0] = &o;
values[1] = &m;
diff --git a/libffi/testsuite/libffi.call/struct3.c b/libffi/testsuite/libffi.call/struct3.c
index c994b8fa3b2..e0bb09b0788 100644
--- a/libffi/testsuite/libffi.call/struct3.c
+++ b/libffi/testsuite/libffi.call/struct3.c
@@ -52,7 +52,7 @@ int main (void)
printf ("%d %d\n", ts3_result->si, -(compare_value*2));
- CHECK(ts3_result->si == -(ts3_arg.si*2));
+ CHECK(ts3_result->si == -(compare_value*2));
free (ts3_result);
exit(0);
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 30295c21d3e..ca257dfd75a 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,51 @@
+2004-02-25 Ian Lance Taylor <ian@wasabisystems.com>
+
+ Taken from mainline:
+
+ 2004-02-24 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
+ D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
+ D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
+ * cp-demangle.c (cplus_demangle_builtin_types): Change char and
+ short types to D_PRINT_DEFAULT. Change other integer types to use
+ new D_PRINT_* values where appropriate. Change float types to
+ D_PRINT_FLOAT.
+ (d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
+ values.
+ * testsuite/demangle-expected: Adjust two test cases.
+
+ * cp-demangle.c (d_print_function_type): Print a space before the
+ parenthesis around the function type in more cases.
+ * testsuite/demangle-expected: Adjust one test case.
+
+ * cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
+ parentheses around a cast.
+ * testsuite/demangle-expected: Adjust two test cases to match new
+ output.
+
+ * cp-demangle.c (__cxa_demangle): Pass DMGL_PARAMS to d_demangle.
+
+ * cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
+ push more than one of the same CV-qualifier on the top of the
+ stack.
+ (d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
+ move the CV-qualifiers to apply to the element type instead.
+ (d_print_array_type): When checking the modifiers, keep looking
+ past ones which have been printed already.
+ * testsuite/demangle-expected: Add three test cases.
+
+ 2004-02-23 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c (__cxa_demangle): Adjust last patch to handle
+ empty string correctly.
+
+ * cp-demangle.c (__cxa_demangle): It is not an error if status is
+ not NULL. It is an error if the mangled name is the same as a
+ built-in type name.
+ (main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
+ than cplus_demangle_v3.
+
2004-01-15 Kazu Hirata <kazu@cs.umass.edu>
* strdup.c (strdup): Constify the argument.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 19f191ed8b8..fe4b36712d3 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1748,31 +1748,33 @@ CP_STATIC_IF_GLIBCPP_V3
const struct demangle_builtin_type_info
cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT] =
{
- /* a */ { NL ("signed char"), NL ("signed char"), D_PRINT_INT },
+ /* a */ { NL ("signed char"), NL ("signed char"), D_PRINT_DEFAULT },
/* b */ { NL ("bool"), NL ("boolean"), D_PRINT_BOOL },
- /* c */ { NL ("char"), NL ("byte"), D_PRINT_INT },
- /* d */ { NL ("double"), NL ("double"), D_PRINT_DEFAULT },
- /* e */ { NL ("long double"), NL ("long double"), D_PRINT_DEFAULT },
- /* f */ { NL ("float"), NL ("float"), D_PRINT_DEFAULT },
- /* g */ { NL ("__float128"), NL ("__float128"), D_PRINT_DEFAULT },
- /* h */ { NL ("unsigned char"), NL ("unsigned char"), D_PRINT_INT },
+ /* c */ { NL ("char"), NL ("byte"), D_PRINT_DEFAULT },
+ /* d */ { NL ("double"), NL ("double"), D_PRINT_FLOAT },
+ /* e */ { NL ("long double"), NL ("long double"), D_PRINT_FLOAT },
+ /* f */ { NL ("float"), NL ("float"), D_PRINT_FLOAT },
+ /* g */ { NL ("__float128"), NL ("__float128"), D_PRINT_FLOAT },
+ /* h */ { NL ("unsigned char"), NL ("unsigned char"), D_PRINT_DEFAULT },
/* i */ { NL ("int"), NL ("int"), D_PRINT_INT },
- /* j */ { NL ("unsigned int"), NL ("unsigned"), D_PRINT_INT },
+ /* j */ { NL ("unsigned int"), NL ("unsigned"), D_PRINT_UNSIGNED },
/* k */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
/* l */ { NL ("long"), NL ("long"), D_PRINT_LONG },
- /* m */ { NL ("unsigned long"), NL ("unsigned long"), D_PRINT_LONG },
+ /* m */ { NL ("unsigned long"), NL ("unsigned long"), D_PRINT_UNSIGNED_LONG },
/* n */ { NL ("__int128"), NL ("__int128"), D_PRINT_DEFAULT },
- /* o */ { NL ("unsigned __int128"), NL ("unsigned __int128"), D_PRINT_DEFAULT },
+ /* o */ { NL ("unsigned __int128"), NL ("unsigned __int128"),
+ D_PRINT_DEFAULT },
/* p */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
/* q */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
/* r */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
- /* s */ { NL ("short"), NL ("short"), D_PRINT_INT },
- /* t */ { NL ("unsigned short"), NL ("unsigned short"), D_PRINT_INT },
+ /* s */ { NL ("short"), NL ("short"), D_PRINT_DEFAULT },
+ /* t */ { NL ("unsigned short"), NL ("unsigned short"), D_PRINT_DEFAULT },
/* u */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
/* v */ { NL ("void"), NL ("void"), D_PRINT_VOID },
- /* w */ { NL ("wchar_t"), NL ("char"), D_PRINT_INT },
- /* x */ { NL ("long long"), NL ("long"), D_PRINT_DEFAULT },
- /* y */ { NL ("unsigned long long"), NL ("unsigned long long"), D_PRINT_DEFAULT },
+ /* w */ { NL ("wchar_t"), NL ("char"), D_PRINT_DEFAULT },
+ /* x */ { NL ("long long"), NL ("long"), D_PRINT_LONG_LONG },
+ /* y */ { NL ("unsigned long long"), NL ("unsigned long long"),
+ D_PRINT_UNSIGNED_LONG_LONG },
/* z */ { NL ("..."), NL ("..."), D_PRINT_DEFAULT },
};
@@ -3050,6 +3052,30 @@ d_print_comp (dpi, dc)
case DEMANGLE_COMPONENT_RESTRICT:
case DEMANGLE_COMPONENT_VOLATILE:
case DEMANGLE_COMPONENT_CONST:
+ {
+ struct d_print_mod *pdpm;
+
+ /* When printing arrays, it's possible to have cases where the
+ same CV-qualifier gets pushed on the stack multiple times.
+ We only need to print it once. */
+
+ for (pdpm = dpi->modifiers; pdpm != NULL; pdpm = pdpm->next)
+ {
+ if (! pdpm->printed)
+ {
+ if (pdpm->mod->type != DEMANGLE_COMPONENT_RESTRICT
+ && pdpm->mod->type != DEMANGLE_COMPONENT_VOLATILE
+ && pdpm->mod->type != DEMANGLE_COMPONENT_CONST)
+ break;
+ if (pdpm->mod->type == dc->type)
+ {
+ d_print_comp (dpi, d_left (dc));
+ return;
+ }
+ }
+ }
+ }
+ /* Fall through. */
case DEMANGLE_COMPONENT_RESTRICT_THIS:
case DEMANGLE_COMPONENT_VOLATILE_THIS:
case DEMANGLE_COMPONENT_CONST_THIS:
@@ -3125,24 +3151,65 @@ d_print_comp (dpi, dc)
case DEMANGLE_COMPONENT_ARRAY_TYPE:
{
- struct d_print_mod dpm;
+ struct d_print_mod *hold_modifiers;
+ struct d_print_mod adpm[4];
+ unsigned int i;
+ struct d_print_mod *pdpm;
/* We must pass this type down as a modifier in order to print
- multi-dimensional arrays correctly. */
+ multi-dimensional arrays correctly. If the array itself is
+ CV-qualified, we act as though the element type were
+ CV-qualified. We do this by copying the modifiers down
+ rather than fiddling pointers, so that we don't wind up
+ with a d_print_mod higher on the stack pointing into our
+ stack frame after we return. */
- dpm.next = dpi->modifiers;
- dpi->modifiers = &dpm;
- dpm.mod = dc;
- dpm.printed = 0;
- dpm.templates = dpi->templates;
+ hold_modifiers = dpi->modifiers;
+
+ adpm[0].next = hold_modifiers;
+ dpi->modifiers = &adpm[0];
+ adpm[0].mod = dc;
+ adpm[0].printed = 0;
+ adpm[0].templates = dpi->templates;
+
+ i = 1;
+ pdpm = hold_modifiers;
+ while (pdpm != NULL
+ && (pdpm->mod->type == DEMANGLE_COMPONENT_RESTRICT
+ || pdpm->mod->type == DEMANGLE_COMPONENT_VOLATILE
+ || pdpm->mod->type == DEMANGLE_COMPONENT_CONST))
+ {
+ if (! pdpm->printed)
+ {
+ if (i >= sizeof adpm / sizeof adpm[0])
+ {
+ d_print_error (dpi);
+ return;
+ }
+
+ adpm[i] = *pdpm;
+ adpm[i].next = dpi->modifiers;
+ dpi->modifiers = &adpm[i];
+ pdpm->printed = 1;
+ ++i;
+ }
+
+ pdpm = pdpm->next;
+ }
d_print_comp (dpi, d_right (dc));
- dpi->modifiers = dpm.next;
+ dpi->modifiers = hold_modifiers;
- if (dpm.printed)
+ if (adpm[0].printed)
return;
+ while (i > 1)
+ {
+ --i;
+ d_print_mod (dpi, adpm[i].mod);
+ }
+
d_print_array_type (dpi, dc, dpi->modifiers);
return;
@@ -3212,15 +3279,13 @@ d_print_comp (dpi, dc)
d_print_expr_op (dpi, d_left (dc));
else
{
- d_append_string_constant (dpi, "((");
+ d_append_char (dpi, '(');
d_print_cast (dpi, d_left (dc));
d_append_char (dpi, ')');
}
d_append_char (dpi, '(');
d_print_comp (dpi, d_right (dc));
d_append_char (dpi, ')');
- if (d_left (dc)->type == DEMANGLE_COMPONENT_CAST)
- d_append_char (dpi, ')');
return;
case DEMANGLE_COMPONENT_BINARY:
@@ -3284,62 +3349,86 @@ d_print_comp (dpi, dc)
case DEMANGLE_COMPONENT_LITERAL:
case DEMANGLE_COMPONENT_LITERAL_NEG:
- /* For some builtin types, produce simpler output. */
- if (d_left (dc)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE)
- {
- switch (d_left (dc)->u.s_builtin.type->print)
- {
- case D_PRINT_INT:
- if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME)
- {
- if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
- d_append_char (dpi, '-');
- d_print_comp (dpi, d_right (dc));
- return;
- }
- break;
+ {
+ enum d_builtin_type_print tp;
- case D_PRINT_LONG:
- if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME)
- {
- if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
- d_append_char (dpi, '-');
- d_print_comp (dpi, d_right (dc));
- d_append_char (dpi, 'l');
- return;
- }
- break;
+ /* For some builtin types, produce simpler output. */
+ tp = D_PRINT_DEFAULT;
+ if (d_left (dc)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE)
+ {
+ tp = d_left (dc)->u.s_builtin.type->print;
+ switch (tp)
+ {
+ case D_PRINT_INT:
+ case D_PRINT_UNSIGNED:
+ case D_PRINT_LONG:
+ case D_PRINT_UNSIGNED_LONG:
+ case D_PRINT_LONG_LONG:
+ case D_PRINT_UNSIGNED_LONG_LONG:
+ if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME)
+ {
+ if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
+ d_append_char (dpi, '-');
+ d_print_comp (dpi, d_right (dc));
+ switch (tp)
+ {
+ default:
+ break;
+ case D_PRINT_UNSIGNED:
+ d_append_char (dpi, 'u');
+ break;
+ case D_PRINT_LONG:
+ d_append_char (dpi, 'l');
+ break;
+ case D_PRINT_UNSIGNED_LONG:
+ d_append_string_constant (dpi, "ul");
+ break;
+ case D_PRINT_LONG_LONG:
+ d_append_string_constant (dpi, "ll");
+ break;
+ case D_PRINT_UNSIGNED_LONG_LONG:
+ d_append_string_constant (dpi, "ull");
+ break;
+ }
+ return;
+ }
+ break;
- case D_PRINT_BOOL:
- if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME
- && d_right (dc)->u.s_name.len == 1
- && dc->type == DEMANGLE_COMPONENT_LITERAL)
- {
- switch (d_right (dc)->u.s_name.s[0])
- {
- case '0':
- d_append_string_constant (dpi, "false");
- return;
- case '1':
- d_append_string_constant (dpi, "true");
- return;
- default:
- break;
- }
- }
- break;
+ case D_PRINT_BOOL:
+ if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME
+ && d_right (dc)->u.s_name.len == 1
+ && dc->type == DEMANGLE_COMPONENT_LITERAL)
+ {
+ switch (d_right (dc)->u.s_name.s[0])
+ {
+ case '0':
+ d_append_string_constant (dpi, "false");
+ return;
+ case '1':
+ d_append_string_constant (dpi, "true");
+ return;
+ default:
+ break;
+ }
+ }
+ break;
- default:
- break;
- }
- }
+ default:
+ break;
+ }
+ }
- d_append_char (dpi, '(');
- d_print_comp (dpi, d_left (dc));
- d_append_char (dpi, ')');
- if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
- d_append_char (dpi, '-');
- d_print_comp (dpi, d_right (dc));
+ d_append_char (dpi, '(');
+ d_print_comp (dpi, d_left (dc));
+ d_append_char (dpi, ')');
+ if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
+ d_append_char (dpi, '-');
+ if (tp == D_PRINT_FLOAT)
+ d_append_char (dpi, '[');
+ d_print_comp (dpi, d_right (dc));
+ if (tp == D_PRINT_FLOAT)
+ d_append_char (dpi, ']');
+ }
return;
default:
@@ -3549,11 +3638,13 @@ d_print_function_type (dpi, dc, mods)
{
int need_paren;
int saw_mod;
+ int need_space;
struct d_print_mod *p;
struct d_print_mod *hold_modifiers;
need_paren = 0;
saw_mod = 0;
+ need_space = 0;
for (p = mods; p != NULL; p = p->next)
{
if (p->printed)
@@ -3562,15 +3653,18 @@ d_print_function_type (dpi, dc, mods)
saw_mod = 1;
switch (p->mod->type)
{
+ case DEMANGLE_COMPONENT_POINTER:
+ case DEMANGLE_COMPONENT_REFERENCE:
+ need_paren = 1;
+ break;
case DEMANGLE_COMPONENT_RESTRICT:
case DEMANGLE_COMPONENT_VOLATILE:
case DEMANGLE_COMPONENT_CONST:
case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
- case DEMANGLE_COMPONENT_POINTER:
- case DEMANGLE_COMPONENT_REFERENCE:
case DEMANGLE_COMPONENT_COMPLEX:
case DEMANGLE_COMPONENT_IMAGINARY:
case DEMANGLE_COMPONENT_PTRMEM_TYPE:
+ need_space = 1;
need_paren = 1;
break;
case DEMANGLE_COMPONENT_RESTRICT_THIS:
@@ -3589,18 +3683,14 @@ d_print_function_type (dpi, dc, mods)
if (need_paren)
{
- switch (d_last_char (dpi))
+ if (! need_space)
{
- case ' ':
- case '(':
- case '*':
- break;
-
- default:
- d_append_char (dpi, ' ');
- break;
+ if (d_last_char (dpi) != '('
+ && d_last_char (dpi) != '*')
+ need_space = 1;
}
-
+ if (need_space && d_last_char (dpi) != ' ')
+ d_append_char (dpi, ' ');
d_append_char (dpi, '(');
}
@@ -3643,19 +3733,19 @@ d_print_array_type (dpi, dc, mods)
need_paren = 0;
for (p = mods; p != NULL; p = p->next)
{
- if (p->printed)
- break;
-
- if (p->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE)
- {
- need_space = 0;
- break;
- }
- else
+ if (! p->printed)
{
- need_paren = 1;
- need_space = 1;
- break;
+ if (p->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE)
+ {
+ need_space = 0;
+ break;
+ }
+ else
+ {
+ need_paren = 1;
+ need_space = 1;
+ break;
+ }
}
}
@@ -3944,29 +4034,46 @@ __cxa_demangle (mangled_name, output_buffer, length, status)
char *demangled;
size_t alc;
- if (status == NULL)
- return NULL;
-
if (mangled_name == NULL)
{
- *status = -3;
+ if (status != NULL)
+ *status = -3;
return NULL;
}
if (output_buffer != NULL && length == NULL)
{
- *status = -3;
+ if (status != NULL)
+ *status = -3;
+ return NULL;
+ }
+
+ /* The specification for __cxa_demangle() is that if the mangled
+ name could be either an extern "C" identifier, or an internal
+ built-in type name, then we resolve it as the identifier. All
+ internal built-in type names are a single lower case character.
+ Frankly, this simplistic disambiguation doesn't make sense to me,
+ but it is documented, so we implement it here. */
+ if (IS_LOWER (mangled_name[0])
+ && mangled_name[1] == '\0'
+ && cplus_demangle_builtin_types[mangled_name[0] - 'a'].name != NULL)
+ {
+ if (status != NULL)
+ *status = -2;
return NULL;
}
- demangled = d_demangle (mangled_name, DMGL_TYPES, &alc);
+ demangled = d_demangle (mangled_name, DMGL_PARAMS | DMGL_TYPES, &alc);
if (demangled == NULL)
{
- if (alc == 1)
- *status = -1;
- else
- *status = -2;
+ if (status != NULL)
+ {
+ if (alc == 1)
+ *status = -1;
+ else
+ *status = -2;
+ }
return NULL;
}
@@ -3990,7 +4097,8 @@ __cxa_demangle (mangled_name, output_buffer, length, status)
}
}
- *status = 0;
+ if (status != NULL)
+ *status = 0;
return demangled;
}
@@ -4296,7 +4404,11 @@ main (argc, argv)
if (dyn_string_length (mangled) > 0)
{
+#ifdef IN_GLIBCPP_V3
+ s = __cxa_demangle (dyn_string_buf (mangled), NULL, NULL, NULL);
+#else
s = cplus_demangle_v3 (dyn_string_buf (mangled), options);
+#endif
if (s != NULL)
{
@@ -4328,9 +4440,16 @@ main (argc, argv)
for (i = optind; i < argc; ++i)
{
char *s;
+#ifdef IN_GLIBCPP_V3
+ int status;
+#endif
/* Attempt to demangle. */
+#ifdef IN_GLIBCPP_V3
+ s = __cxa_demangle (argv[i], NULL, NULL, &status);
+#else
s = cplus_demangle_v3 (argv[i], options);
+#endif
/* If it worked, print the demangled name. */
if (s != NULL)
@@ -4339,7 +4458,13 @@ main (argc, argv)
free (s);
}
else
- fprintf (stderr, "Failed: %s\n", argv[i]);
+ {
+#ifdef IN_GLIBCPP_V3
+ fprintf (stderr, "Failed: %s (status %d)\n", argv[i], status);
+#else
+ fprintf (stderr, "Failed: %s\n", argv[i]);
+#endif
+ }
}
}
diff --git a/libiberty/cp-demangle.h b/libiberty/cp-demangle.h
index d3c57ce3766..eea086862d6 100644
--- a/libiberty/cp-demangle.h
+++ b/libiberty/cp-demangle.h
@@ -53,10 +53,20 @@ enum d_builtin_type_print
D_PRINT_DEFAULT,
/* Print as integer. */
D_PRINT_INT,
- /* Print as long, with trailing `l'. */
+ /* Print as unsigned integer, with trailing "u". */
+ D_PRINT_UNSIGNED,
+ /* Print as long, with trailing "l". */
D_PRINT_LONG,
+ /* Print as unsigned long, with trailing "ul". */
+ D_PRINT_UNSIGNED_LONG,
+ /* Print as long long, with trailing "ll". */
+ D_PRINT_LONG_LONG,
+ /* Print as unsigned long long, with trailing "ull". */
+ D_PRINT_UNSIGNED_LONG_LONG,
/* Print as bool. */
D_PRINT_BOOL,
+ /* Print as float--put value in square brackets. */
+ D_PRINT_FLOAT,
/* Print in usual way, but here to detect void. */
D_PRINT_VOID
};
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 25e88309b76..9a3f0b9da8d 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -3591,13 +3591,13 @@ hairyfunc5
# This is from gcc PR 8861
--format=gnu-v3 --no-params
_Z1fILi1ELc120EEv1AIXplT_cviLd810000000000000000703DAD7A370C5EEE
-void f<1, 120>(A<(1) + (((int)((double)810000000000000000703DAD7A370C5)))>)
-f<1, 120>
+void f<1, (char)120>(A<(1) + ((int)((double)[810000000000000000703DAD7A370C5]))>)
+f<1, (char)120>
#
# This is also from gcc PR 8861
--format=gnu-v3 --no-params
_Z1fILi1EEv1AIXplT_cvingLf3f800000EEE
-void f<1>(A<(1) + (((int)(-((float)3f800000))))>)
+void f<1>(A<(1) + ((int)(-((float)[3f800000])))>)
f<1>
#
# This is from a libstdc++ debug mode patch.
@@ -3635,7 +3635,7 @@ std::operator< <file_path, std::string>
# More hairy qualifier handling.
--format=gnu-v3 --no-params
_Z9hairyfuncM1YKFPVPFrPA2_PM1XKFKPA3_ilEPcEiE
-hairyfunc(int (* const (X::** (* restrict (* volatile*(Y::*)(int) const)(char*)) [2])(long) const) [3])
+hairyfunc(int (* const (X::** (* restrict (* volatile* (Y::*)(int) const)(char*)) [2])(long) const) [3])
hairyfunc
#
# Check that negative numbers are handled correctly.
@@ -3681,6 +3681,24 @@ _ZNK5boost6spirit5matchI13rcs_deltatextEcvMNS0_4impl5dummyEFvvEEv
boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()() const
boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()
#
+# Multi-dimensional arrays with qualifiers on the inner dimensions.
+--format=gnu-v3 --no-params
+_Z3fooIA6_KiEvA9_KT_rVPrS4_
+void foo<int const [6]>(int const [9][6], int restrict const (* volatile restrict) [9][6])
+foo<int const [6]>
+#
+# From PR libstdc++/12736
+--format=gnu-v3 --no-params
+_Z3fooIA3_iEvRKT_
+void foo<int [3]>(int const (&) [3])
+foo<int [3]>
+#
+# Related to PR libstdc++/12736
+--format=gnu-v3 --no-params
+_Z3fooIPA3_iEvRKT_
+void foo<int (*) [3]>(int (* const&) [3])
+foo<int (*) [3]>
+#
# Test GNU V3 constructor and destructor identification.
# 0 means it is not a constructor/destructor.
# Other integers correspond to enum gnu_v3_{c,d}tor_kinds in demangle.h.
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 517aea5b2c4..031509cf48a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,151 @@
+2004-02-25 Andrew Haley <aph@redhat.com>
+
+ PR java/14296:
+ * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Make sure
+ we have a valid method index.
+
+2004-02-14 Per Bothner <per@bothner.com>
+
+ * java/nio/channels/spi/AbstractInterruptibleChannel.java (close):
+ Set closed before calling implCloseChannel, as in the spec.
+
+2004-02-08 Per Bothner <per@bothner.com>
+
+ * java/nio/ByteBuffer.java (shiftDown): New helper method.
+ * java/nio/natDirectByteBufferImpl.cc (shiftDown): New implementation.
+ * java/nio/ByteBufferImpl.java (compact): Use new shiftDown method.
+ * sava/nio/ByteBufferHelper.java: Remove redundant 'final' specifiers.
+ Pass ByteOrder parameter to most methods, since the underlying
+ ByteBuffer's order isn't always what we should use.
+ * java/nio/ByteBufferImpl.java: Pass byte-order various places.
+ * java/nio/DirectByteBufferImpl.java: Likewise.
+ Use ByteBufferHelper methods.
+ * java/nio/MappedByteBufferImpl.java: Likewise.
+ (compact): Use shiftDown.
+ * java/nio/CharViewBufferImpl.java (<init>): Pass byte-order.
+ (get, put): Use ByteBufferHelper.
+ (compact): Use new shiftDown method.
+ (duplicate(boolean)): New helper method.
+ (duplicate, asReadOnlyBuffer): Use it.
+ (order): Return endian field.
+ * java/nio/DoubleViewBufferImpl.java: Likewise.
+ * java/nio/FloatViewBufferImpl.java: Likewise.
+ * java/nio/IntViewBufferImpl.java: Likewise.
+ * java/nio/LongViewBufferImpl.java: Likewise.
+ * java/nio/ShortViewBufferImpl.java: Likewise.
+ * java/nio/CharViewBufferImpl.java (subsequence): Redundant test.
+ * java/nio/DirectByteBufferImpl.java (shiftDown): New native method.
+ (compact): Re-implement using shiftDown.
+
+2004-02-05 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/nio/NIOServerSocket.java
+ (impl): Unused, removed.
+ * gnu/java/nio/SocketChannelImpl.java
+ (finnishConnect): Don't throw NoConnectionPendingException if not
+ connected or no connection pending.
+
+2004-02-03 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/natPosixProcess.cc (startProcess): Handle case where
+ PATH or LD_LIBRARY_PATH is not set in parent environment.
+
+2004-02-03 Mohan Embar <gnustuff@thisiscool.com>
+
+ * gnu/java/nio/DatagramChannelImpl.java
+ (inChannelOperation): New field.
+ (isInChannelOperation): New accessor.
+ (setInChannelOperation): New modifier.
+ (receive): Use capacity() - position() of destination
+ buffer instead of remaining(). Set and reset our "in
+ channel operation indicator" before and after delegating
+ the receive to our datagram socket. Removed testing code.
+ Update destination buffer's current position if it is
+ backed by a byte array (hasArray() is true).
+ (send): Set and reset our "in channel operation indicator"
+ before and after delegating the send to our datagram socket.
+ Removed testing code. Update source buffer's current position
+ if it is backed by a byte array (hasArray() is true).
+ * gnu/java/nio/SocketChannelImpl.java (read(ByteBuffer)):
+ Use capacity() - position() of destination buffer instead
+ of remaining().
+ * java/net/DatagramSocket.java (receive): Don't throw an
+ IllegalBlockingModeException if we have a non-blocking
+ channel which initiated this operation.
+ (send): Likewise.
+
+2004-02-03 Mohan Embar <gnustuff@thisiscool.com>
+
+ * gnu/java/net/PlainSocketImpl.java
+ (inChannelOperation): New field.
+ (isInChannelOperation): New accessor.
+ (setInChannelOperation): New modifier.
+ * gnu/java/nio/ServerSocketChannelImpl.java
+ (accept): Set and reset our server socket's PlainSocketImpl's
+ "in channel operation" indicator before and after delegating
+ the accept to our server socket.
+ * gnu/java/nio/SocketChannelImpl.java
+ (connect): Set and reset our socket's PlainSocketImpl's "in channel
+ operation" indicator before and after delegating the operation to
+ our socket.
+ (read): Likewise.
+ (write): Likewise.
+ * java/net/ServerSocket.java (implAccept): Don't throw an
+ IllegalBlockingModeException if we have a non-blocking
+ channel which initiated this accept operation.
+ * java/net/Socket.java (connect): Don't throw an
+ IllegalBlockingModeException if we have a non-blocking
+ channel which initiated this connect operation.
+ * java/nio/channels/spi/AbstractSelectableChannel.java
+ (configureBlocking): Only call implConfigureBlocking() if
+ the desired blocking mode is different from our current one.
+
+2004-01-24 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/net/protocol/http/Connection.java
+ (connect): Don't initialize bufferedOutputStream if not needed.
+ (sendRequest): Set property for content length if content is present.
+ Write content only if present.
+ (getOutputStream): Check if already connected, dont connect,
+ initalize bufferedOutputStream if needed.
+
+2004-01-24 Michael Koch <konqueror@gmx.de>
+
+ * Makefile.am: Added library version to gtk peer lib.
+ * Makefile.in: Regenerated.
+
+2004-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ * include/powerpc-signal.h: Add #ifndef __powerpc64__ around the
+ header. For __powerpc64__ provide the default-signal.h definitions
+ for now.
+ * include/x86_64-signal.h [!__x86_64__]: Include java-signal-aux.h
+ instead of the dummy definitions.
+ * configure.host (x86_64-*): Remove CHECKREFSPEC, add DIVIDESPEC.
+ (powerpc64*-*): Remove with_libffi_default.
+ Only add -mminimal-toc for 64-bit compilations.
+ * configure.in: Use powerpc-signal.h on powerpc64 as well.
+ (x86_64-*-linux*): Set SIGNAL_HANDLER_AUX.
+ Link SIGNAL_HANDLER_AUX to include/java-signal-aux.h.
+ * configure: Rebuilt.
+
+2004-01-21 Tom Tromey <tromey@redhat.com>
+
+ PR java/13468:
+ * Makefile.in: Rebuilt.
+ * Makefile.am (interpret.lo): New target.
+
+2004-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (lib_org_w3c_dom_la_LIBADD,
+ lib_org_w3c_dom_la_LDFLAGS): New.
+ (lib_org_xml_sax_la_LIBADD, lib_org_xml_sax_la_LDFLAGS): New.
+ * Makefile.in: Rebuilt.
+
+2004-01-19 Matthias Klose <doko@debian.org>
+
+ * libtool-version: Increased `current' to 5.
+
2004-01-16 Andrew Haley <aph@redhat.com>
* sysdep/x86-64/locks.h: Don't use in/out memory constraints.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index de91f8942f0..fa90b3f1580 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -281,6 +281,9 @@ jni/classpath/native_state.h \
jni/classpath/primlib.h
lib_gnu_java_awt_peer_gtk_la_LIBADD = $(GTK_LIBS) $(GLIB_LIBS) $(LIBART_LIBS) $(CAIRO_LIBS) $(PANGOFT2_LIBS)
+lib_gnu_java_awt_peer_gtk_la_LDFLAGS = \
+## The mysterious backslash is consumed by make.
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
lib_org_w3c_dom_la_SOURCES = org/w3c/dom/Attr.java \
org/w3c/dom/CDATASection.java \
@@ -307,6 +310,11 @@ org/w3c/dom/traversal/DocumentTraversal.java \
org/w3c/dom/traversal/NodeFilter.java \
org/w3c/dom/traversal/NodeIterator.java \
org/w3c/dom/traversal/TreeWalker.java
+## See jv_convert_LDADD.
+lib_org_w3c_dom_la_LIBADD = -L$(here)/.libs libgcj.la
+lib_org_w3c_dom_la_LDFLAGS = -rpath $(toolexeclibdir) \
+## The mysterious backslash is consumed by make.
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
lib_org_xml_sax_la_SOURCES = org/xml/sax/ext/DeclHandler.java \
org/xml/sax/ext/LexicalHandler.java \
@@ -338,6 +346,11 @@ org/xml/sax/SAXNotSupportedException.java \
org/xml/sax/SAXParseException.java \
org/xml/sax/XMLFilter.java \
org/xml/sax/XMLReader.java
+## See jv_convert_LDADD.
+lib_org_xml_sax_la_LIBADD = -L$(here)/.libs libgcj.la
+lib_org_xml_sax_la_LDFLAGS = -rpath $(toolexeclibdir) \
+## The mysterious backslash is consumed by make.
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
lib_gnu_awt_xlib_la_SOURCES = $(x_nat_source_files)
EXTRA_lib_gnu_awt_xlib_la_SOURCES = $(x_java_source_files)
@@ -439,6 +452,13 @@ $(nat_files) $(x_nat_files): %.lo: %.cc
$(c_files): %.lo: %.c
$(LTCOMPILE) -c -o $@ $<
+## A special rule for interpret.lo for the time being. Our current
+## approach to stack-trace handling is fragile and will not work with
+## unit-at-a-time. So, for now we disable it. This will be fixed by
+## a larger patch in the future.
+interpret.lo: interpret.cc
+ $(LTCXXCOMPILE) -fno-unit-at-a-time -c -o $@ $<
+
$(extra_cc_files): %.lo: %.cc
$(LTCXXCOMPILE) -c -o $@ $<
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index d6cfda3545f..2f5eefca665 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -370,6 +370,9 @@ jni/classpath/primlib.h
lib_gnu_java_awt_peer_gtk_la_LIBADD = $(GTK_LIBS) $(GLIB_LIBS) $(LIBART_LIBS) $(CAIRO_LIBS) $(PANGOFT2_LIBS)
+lib_gnu_java_awt_peer_gtk_la_LDFLAGS = \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
lib_org_w3c_dom_la_SOURCES = org/w3c/dom/Attr.java \
org/w3c/dom/CDATASection.java \
@@ -397,6 +400,10 @@ org/w3c/dom/traversal/NodeFilter.java \
org/w3c/dom/traversal/NodeIterator.java \
org/w3c/dom/traversal/TreeWalker.java
+lib_org_w3c_dom_la_LIBADD = -L$(here)/.libs libgcj.la
+lib_org_w3c_dom_la_LDFLAGS = -rpath $(toolexeclibdir) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
lib_org_xml_sax_la_SOURCES = org/xml/sax/ext/DeclHandler.java \
org/xml/sax/ext/LexicalHandler.java \
@@ -429,6 +436,10 @@ org/xml/sax/SAXParseException.java \
org/xml/sax/XMLFilter.java \
org/xml/sax/XMLReader.java
+lib_org_xml_sax_la_LIBADD = -L$(here)/.libs libgcj.la
+lib_org_xml_sax_la_LDFLAGS = -rpath $(toolexeclibdir) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
lib_gnu_awt_xlib_la_SOURCES = $(x_nat_source_files)
EXTRA_lib_gnu_awt_xlib_la_SOURCES = $(x_java_source_files)
@@ -2681,8 +2692,7 @@ java/nio/natDirectByteBufferImpl.lo \
java/nio/channels/natFileChannelImpl.lo java/text/natCollator.lo \
java/util/natResourceBundle.lo java/util/natTimeZone.lo \
java/util/zip/natDeflater.lo java/util/zip/natInflater.lo
-lib_org_xml_sax_la_LDFLAGS =
-lib_org_xml_sax_la_LIBADD =
+lib_org_xml_sax_la_DEPENDENCIES = libgcj.la
lib_org_xml_sax_la_OBJECTS = org/xml/sax/ext/DeclHandler.lo \
org/xml/sax/ext/LexicalHandler.lo \
org/xml/sax/helpers/AttributeListImpl.lo \
@@ -2704,8 +2714,7 @@ org/xml/sax/SAXException.lo org/xml/sax/SAXNotRecognizedException.lo \
org/xml/sax/SAXNotSupportedException.lo \
org/xml/sax/SAXParseException.lo org/xml/sax/XMLFilter.lo \
org/xml/sax/XMLReader.lo
-lib_org_w3c_dom_la_LDFLAGS =
-lib_org_w3c_dom_la_LIBADD =
+lib_org_w3c_dom_la_DEPENDENCIES = libgcj.la
lib_org_w3c_dom_la_OBJECTS = org/w3c/dom/Attr.lo \
org/w3c/dom/CDATASection.lo org/w3c/dom/CharacterData.lo \
org/w3c/dom/Comment.lo org/w3c/dom/DOMException.lo \
@@ -2721,7 +2730,6 @@ org/w3c/dom/traversal/DocumentTraversal.lo \
org/w3c/dom/traversal/NodeFilter.lo \
org/w3c/dom/traversal/NodeIterator.lo \
org/w3c/dom/traversal/TreeWalker.lo
-lib_gnu_java_awt_peer_gtk_la_LDFLAGS =
lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES =
@GTK_CAIRO_FALSE@lib_gnu_java_awt_peer_gtk_la_OBJECTS = \
@GTK_CAIRO_FALSE@gnu/java/awt/peer/gtk/GdkClasspathFontPeer.lo \
@@ -5235,6 +5243,9 @@ $(nat_files) $(x_nat_files): %.lo: %.cc
$(c_files): %.lo: %.c
$(LTCOMPILE) -c -o $@ $<
+interpret.lo: interpret.cc
+ $(LTCXXCOMPILE) -fno-unit-at-a-time -c -o $@ $<
+
$(extra_cc_files): %.lo: %.cc
$(LTCXXCOMPILE) -c -o $@ $<
diff --git a/libjava/configure b/libjava/configure
index 399aa6078fd..6e837132128 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -9015,6 +9015,7 @@ test -n "$PERL" || PERL="false"
SYSDEP_SOURCES=
+SIGNAL_HANDLER_AUX=
case "${host}" in
i?86-*-linux*)
@@ -9030,7 +9031,7 @@ case "${host}" in
ia64-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
;;
- powerpc-*-linux*)
+ powerpc*-*-linux*)
SIGNAL_HANDLER=include/powerpc-signal.h
;;
alpha*-*-linux*)
@@ -9041,6 +9042,7 @@ case "${host}" in
;;
x86_64*-*-linux*)
SIGNAL_HANDLER=include/x86_64-signal.h
+ SIGNAL_HANDLER_AUX=include/i386-signal.h
;;
sparc*-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
@@ -9062,6 +9064,7 @@ esac
# If we're using sjlj exceptions, forget what we just learned.
if test "$enable_sjlj_exceptions" = yes; then
SIGNAL_HANDLER=include/default-signal.h
+ SIGNAL_HANDLER_AUX=
fi
# Define here any compiler flags that you need in order to make backtrace() work.
@@ -9075,6 +9078,10 @@ esac
+if test -z "$SIGNAL_HANDLER_AUX"; then
+ SIGNAL_HANDLER_AUX=$SIGNAL_HANDLER
+fi
+
if test "${multilib}" = "yes"; then
@@ -9573,8 +9580,8 @@ fi; done
EOF
cat >> $CONFIG_STATUS <<EOF
-ac_sources="include/$PLATFORMH java/io/natFile${FILE-${PLATFORM}}.cc java/io/natFileDescriptor${FILE-${PLATFORM}}.cc java/lang/${PLATFORM}Process.java java/lang/nat${PLATFORM}Process.cc java/net/natInetAddress${PLATFORMNET}.cc java/net/natNetworkInterface${PLATFORMNET}.cc gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc gnu/java/nio/natPipeImpl${PLATFORM}.cc gnu/java/nio/natSelectorImpl${PLATFORM}.cc include/$GCHDR include/$THREADH sysdep/$sysdeps_dir/locks.h $SIGNAL_HANDLER"
-ac_dests="include/platform.h java/io/natFile.cc java/io/natFileDescriptor.cc java/lang/ConcreteProcess.java java/lang/natConcreteProcess.cc java/net/natInetAddress.cc java/net/natNetworkInterface.cc gnu/java/net/natPlainSocketImpl.cc gnu/java/net/natPlainDatagramSocketImpl.cc gnu/java/nio/natPipeImpl.cc gnu/java/nio/natSelectorImpl.cc include/java-gc.h include/java-threads.h sysdep/locks.h include/java-signal.h"
+ac_sources="include/$PLATFORMH java/io/natFile${FILE-${PLATFORM}}.cc java/io/natFileDescriptor${FILE-${PLATFORM}}.cc java/lang/${PLATFORM}Process.java java/lang/nat${PLATFORM}Process.cc java/net/natInetAddress${PLATFORMNET}.cc java/net/natNetworkInterface${PLATFORMNET}.cc gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc gnu/java/nio/natPipeImpl${PLATFORM}.cc gnu/java/nio/natSelectorImpl${PLATFORM}.cc include/$GCHDR include/$THREADH sysdep/$sysdeps_dir/locks.h $SIGNAL_HANDLER $SIGNAL_HANDLER_AUX"
+ac_dests="include/platform.h java/io/natFile.cc java/io/natFileDescriptor.cc java/lang/ConcreteProcess.java java/lang/natConcreteProcess.cc java/net/natInetAddress.cc java/net/natNetworkInterface.cc gnu/java/net/natPlainSocketImpl.cc gnu/java/net/natPlainDatagramSocketImpl.cc gnu/java/nio/natPipeImpl.cc gnu/java/nio/natSelectorImpl.cc include/java-gc.h include/java-threads.h sysdep/locks.h include/java-signal.h include/java-signal-aux.h"
EOF
cat >> $CONFIG_STATUS <<\EOF
diff --git a/libjava/configure.host b/libjava/configure.host
index 2d04bbca934..6e19f0cbd17 100644
--- a/libjava/configure.host
+++ b/libjava/configure.host
@@ -99,11 +99,11 @@ case "${host}" in
slow_pthread_self=yes
;;
x86_64-*)
- CHECKREFSPEC="%{m32:-fcheck-references}"
sysdeps_dir=x86-64
libgcj_flags="${libgcj_flags} -ffloat-store -fno-omit-frame-pointer"
libgcj_cxxflags=
libgcj_cflags=
+ DIVIDESPEC=-f%{m32:no-}use-divide-subroutine
enable_hash_synchronization_default=yes
slow_pthread_self=yes
libgcj_interpreter=yes
@@ -116,11 +116,11 @@ case "${host}" in
IEEESPEC=-mieee
;;
powerpc64*-*)
- with_libffi_default=yes
- libgcj_interpreter=yes
- libgcj_flags="${libgcj_flags} -mminimal-toc"
- # this may not be correct
sysdeps_dir=powerpc
+ libgcj_interpreter=yes
+ if [ x`$CC -print-multi-os-directory` = x../lib64 ]; then
+ libgcj_flags="${libgcj_flags} -mminimal-toc"
+ fi
enable_hash_synchronization_default=yes
slow_pthread_self=yes
;;
diff --git a/libjava/configure.in b/libjava/configure.in
index 015831c95b2..26f39cc3359 100644
--- a/libjava/configure.in
+++ b/libjava/configure.in
@@ -1128,6 +1128,7 @@ AC_FUNC_MMAP
AC_CHECK_PROGS(PERL, perl, false)
SYSDEP_SOURCES=
+SIGNAL_HANDLER_AUX=
case "${host}" in
i?86-*-linux*)
@@ -1143,7 +1144,7 @@ case "${host}" in
ia64-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
;;
- powerpc-*-linux*)
+ powerpc*-*-linux*)
SIGNAL_HANDLER=include/powerpc-signal.h
;;
alpha*-*-linux*)
@@ -1154,6 +1155,7 @@ case "${host}" in
;;
x86_64*-*-linux*)
SIGNAL_HANDLER=include/x86_64-signal.h
+ SIGNAL_HANDLER_AUX=include/i386-signal.h
;;
sparc*-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
@@ -1175,6 +1177,7 @@ esac
# If we're using sjlj exceptions, forget what we just learned.
if test "$enable_sjlj_exceptions" = yes; then
SIGNAL_HANDLER=include/default-signal.h
+ SIGNAL_HANDLER_AUX=
fi
# Define here any compiler flags that you need in order to make backtrace() work.
@@ -1188,7 +1191,12 @@ AC_SUBST(BACKTRACESPEC)
AC_SUBST(SYSDEP_SOURCES)
-AC_LINK_FILES($SIGNAL_HANDLER, include/java-signal.h)
+if test -z "$SIGNAL_HANDLER_AUX"; then
+ SIGNAL_HANDLER_AUX=$SIGNAL_HANDLER
+fi
+
+AC_LINK_FILES($SIGNAL_HANDLER $SIGNAL_HANDLER_AUX,
+ include/java-signal.h include/java-signal-aux.h)
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
diff --git a/libjava/gnu/java/net/PlainSocketImpl.java b/libjava/gnu/java/net/PlainSocketImpl.java
index 80139115cfe..08267838b8a 100644
--- a/libjava/gnu/java/net/PlainSocketImpl.java
+++ b/libjava/gnu/java/net/PlainSocketImpl.java
@@ -120,6 +120,33 @@ public final class PlainSocketImpl extends SocketImpl
private OutputStream out;
/**
+ * Indicates whether a channel initiated whatever operation
+ * is being invoked on this socket.
+ */
+ private boolean inChannelOperation;
+
+ /**
+ * Indicates whether we should ignore whether any associated
+ * channel is set to non-blocking mode. Certain operations
+ * throw an <code>IllegalBlockingModeException</code> if the
+ * associated channel is in non-blocking mode, <i>except</i>
+ * if the operation is invoked by the channel itself.
+ */
+ public final boolean isInChannelOperation()
+ {
+ return inChannelOperation;
+ }
+
+ /**
+ * Sets our indicator of whether an I/O operation is being
+ * initiated by a channel.
+ */
+ public final void setInChannelOperation(boolean b)
+ {
+ inChannelOperation = b;
+ }
+
+ /**
* Default do nothing constructor
*/
public PlainSocketImpl()
diff --git a/libjava/gnu/java/net/protocol/http/Connection.java b/libjava/gnu/java/net/protocol/http/Connection.java
index b785f2334bf..ac369f4ee6e 100644
--- a/libjava/gnu/java/net/protocol/http/Connection.java
+++ b/libjava/gnu/java/net/protocol/http/Connection.java
@@ -168,7 +168,6 @@ public final class Connection extends HttpURLConnection
inputStream =
new DataInputStream(new BufferedInputStream(socket.getInputStream()));
outputStream = new BufferedOutputStream (socket.getOutputStream());
- bufferedOutputStream = new ByteArrayOutputStream (256); //default is too small
sendRequest();
receiveReply();
@@ -226,7 +225,8 @@ public final class Connection extends HttpURLConnection
setRequestProperty ("Content-type", "application/x-www-form-urlencoded");
// Set correct content length.
- setRequestProperty ("Content-length", String.valueOf (bufferedOutputStream.size()));
+ if (bufferedOutputStream != null)
+ setRequestProperty ("Content-length", String.valueOf (bufferedOutputStream.size()));
// Write all req_props name-value pairs to the output writer.
Iterator itr = getRequestProperties().entrySet().iterator();
@@ -242,8 +242,11 @@ public final class Connection extends HttpURLConnection
outputWriter.flush();
// Write content
- bufferedOutputStream.writeTo (outputStream);
- outputStream.flush();
+ if (bufferedOutputStream != null)
+ {
+ bufferedOutputStream.writeTo (outputStream);
+ outputStream.flush();
+ }
}
/**
@@ -382,12 +385,16 @@ public final class Connection extends HttpURLConnection
*/
public OutputStream getOutputStream() throws IOException
{
+ if (connected)
+ throw new ProtocolException
+ ("You cannot get an output stream for an existing http connection");
+
if (!doOutput)
throw new ProtocolException
("Want output stream while haven't setDoOutput(true)");
- if (!connected)
- connect();
+ if (bufferedOutputStream == null)
+ bufferedOutputStream = new ByteArrayOutputStream (256); //default is too small
return bufferedOutputStream;
}
diff --git a/libjava/gnu/java/nio/DatagramChannelImpl.java b/libjava/gnu/java/nio/DatagramChannelImpl.java
index 3531803900a..109322daaf8 100644
--- a/libjava/gnu/java/nio/DatagramChannelImpl.java
+++ b/libjava/gnu/java/nio/DatagramChannelImpl.java
@@ -57,6 +57,33 @@ public final class DatagramChannelImpl extends DatagramChannel
{
private NIODatagramSocket socket;
+ /**
+ * Indicates whether this channel initiated whatever operation
+ * is being invoked on our datagram socket.
+ */
+ private boolean inChannelOperation;
+
+ /**
+ * Indicates whether our datagram socket should ignore whether
+ * we are set to non-blocking mode. Certain operations on our
+ * socket throw an <code>IllegalBlockingModeException</code> if
+ * we are in non-blocking mode, <i>except</i> if the operation
+ * is initiated by us.
+ */
+ public final boolean isInChannelOperation()
+ {
+ return inChannelOperation;
+ }
+
+ /**
+ * Sets our indicator of whether we are initiating an I/O operation
+ * on our socket.
+ */
+ public final void setInChannelOperation(boolean b)
+ {
+ inChannelOperation = b;
+ }
+
protected DatagramChannelImpl (SelectorProvider provider)
throws IOException
{
@@ -178,7 +205,7 @@ public final class DatagramChannelImpl extends DatagramChannel
try
{
DatagramPacket packet;
- int len = dst.remaining();
+ int len = dst.capacity() - dst.position();
if (dst.hasArray())
{
@@ -196,23 +223,23 @@ public final class DatagramChannelImpl extends DatagramChannel
try
{
begin();
+ setInChannelOperation(true);
socket.receive (packet);
completed = true;
}
finally
{
end (completed);
+ setInChannelOperation(false);
}
if (!dst.hasArray())
{
dst.put (packet.getData(), packet.getOffset(), packet.getLength());
}
-
- // FIMXE: remove this testing code.
- for (int i = 0; i < packet.getLength(); i++)
+ else
{
- System.out.println ("Byte " + i + " has value " + packet.getData() [packet.getOffset() + i]);
+ dst.position (dst.position() + packet.getLength());
}
return packet.getSocketAddress();
@@ -246,13 +273,25 @@ public final class DatagramChannelImpl extends DatagramChannel
DatagramPacket packet = new DatagramPacket (buffer, offset, len, target);
- // FIMXE: remove this testing code.
- for (int i = 0; i < packet.getLength(); i++)
+ boolean completed = false;
+ try
+ {
+ begin();
+ setInChannelOperation(true);
+ socket.send(packet);
+ completed = true;
+ }
+ finally
+ {
+ end (completed);
+ setInChannelOperation(false);
+ }
+
+ if (src.hasArray())
{
- System.out.println ("Byte " + i + " has value " + packet.getData() [packet.getOffset() + i]);
+ src.position (src.position() + len);
}
- socket.send (packet);
return len;
}
}
diff --git a/libjava/gnu/java/nio/NIOServerSocket.java b/libjava/gnu/java/nio/NIOServerSocket.java
index 89def3bb5ee..3164247765b 100644
--- a/libjava/gnu/java/nio/NIOServerSocket.java
+++ b/libjava/gnu/java/nio/NIOServerSocket.java
@@ -1,5 +1,5 @@
/* NIOServerSocket.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -50,7 +50,6 @@ import java.nio.channels.SocketChannel;
*/
public final class NIOServerSocket extends ServerSocket
{
- private PlainSocketImpl impl;
private ServerSocketChannelImpl channel;
protected NIOServerSocket (ServerSocketChannelImpl channel)
diff --git a/libjava/gnu/java/nio/ServerSocketChannelImpl.java b/libjava/gnu/java/nio/ServerSocketChannelImpl.java
index fd975d20a7a..e26d23699ad 100644
--- a/libjava/gnu/java/nio/ServerSocketChannelImpl.java
+++ b/libjava/gnu/java/nio/ServerSocketChannelImpl.java
@@ -107,6 +107,11 @@ public final class ServerSocketChannelImpl extends ServerSocketChannel
try
{
+ begin();
+ serverSocket.getPlainSocketImpl().setInChannelOperation(true);
+ // indicate that a channel is initiating the accept operation
+ // so that the socket ignores the fact that we might be in
+ // non-blocking mode.
NIOSocket socket = (NIOSocket) serverSocket.accept();
completed = true;
return socket.getChannel();
@@ -117,6 +122,7 @@ public final class ServerSocketChannelImpl extends ServerSocketChannel
}
finally
{
+ serverSocket.getPlainSocketImpl().setInChannelOperation(false);
end (completed);
}
}
diff --git a/libjava/gnu/java/nio/SocketChannelImpl.java b/libjava/gnu/java/nio/SocketChannelImpl.java
index efb5fec481b..d4dd6e05653 100644
--- a/libjava/gnu/java/nio/SocketChannelImpl.java
+++ b/libjava/gnu/java/nio/SocketChannelImpl.java
@@ -1,5 +1,5 @@
/* SocketChannelImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -136,23 +136,35 @@ public final class SocketChannelImpl extends SocketChannel
if (((InetSocketAddress) remote).isUnresolved())
throw new UnresolvedAddressException();
- if (isBlocking())
- {
- // Do blocking connect.
- socket.connect (remote);
- return true;
- }
-
- // Do non-blocking connect.
try
{
- socket.connect (remote, NIOConstants.DEFAULT_TIMEOUT);
- return true;
+ socket.getPlainSocketImpl().setInChannelOperation(true);
+ // indicate that a channel is initiating the accept operation
+ // so that the socket ignores the fact that we might be in
+ // non-blocking mode.
+
+ if (isBlocking())
+ {
+ // Do blocking connect.
+ socket.connect (remote);
+ return true;
+ }
+
+ // Do non-blocking connect.
+ try
+ {
+ socket.connect (remote, NIOConstants.DEFAULT_TIMEOUT);
+ return true;
+ }
+ catch (SocketTimeoutException e)
+ {
+ connectionPending = true;
+ return false;
+ }
}
- catch (SocketTimeoutException e)
+ finally
{
- connectionPending = true;
- return false;
+ socket.getPlainSocketImpl().setInChannelOperation(false);
}
}
@@ -162,7 +174,7 @@ public final class SocketChannelImpl extends SocketChannel
if (!isOpen())
throw new ClosedChannelException();
- if (!connectionPending)
+ if (!isConnected() && !connectionPending)
throw new NoConnectionPendingException();
if (isConnected())
@@ -214,7 +226,7 @@ public final class SocketChannelImpl extends SocketChannel
int offset = 0;
InputStream input = socket.getInputStream();
int available = input.available();
- int len = dst.remaining();
+ int len = dst.capacity() - dst.position();
if (available == 0)
return 0;
@@ -238,12 +250,14 @@ public final class SocketChannelImpl extends SocketChannel
try
{
begin();
+ socket.getPlainSocketImpl().setInChannelOperation(true);
readBytes = input.read (data, offset, len);
completed = true;
}
finally
{
end (completed);
+ socket.getPlainSocketImpl().setInChannelOperation(false);
}
if (readBytes > 0)
@@ -301,7 +315,20 @@ public final class SocketChannelImpl extends SocketChannel
}
OutputStream output = socket.getOutputStream();
- output.write (data, offset, len);
+ boolean completed = false;
+
+ try
+ {
+ begin();
+ socket.getPlainSocketImpl().setInChannelOperation(true);
+ output.write (data, offset, len);
+ completed = true;
+ }
+ finally
+ {
+ end (completed);
+ socket.getPlainSocketImpl().setInChannelOperation(false);
+ }
if (src.hasArray())
{
diff --git a/libjava/include/powerpc-signal.h b/libjava/include/powerpc-signal.h
index 39cdf893710..386fb18291a 100644
--- a/libjava/include/powerpc-signal.h
+++ b/libjava/include/powerpc-signal.h
@@ -13,13 +13,15 @@ details. */
#ifndef JAVA_SIGNAL_H
# define JAVA_SIGNAL_H 1
-# include <signal.h>
-# include <sys/syscall.h>
+# ifndef __powerpc64__
-# define HANDLE_SEGV 1
-# undef HANDLE_FPE
+# include <signal.h>
+# include <sys/syscall.h>
-# define SIGNAL_HANDLER(_name) \
+# define HANDLE_SEGV 1
+# undef HANDLE_FPE
+
+# define SIGNAL_HANDLER(_name) \
static void _name (int /* _signal */, struct sigcontext *_sc)
/* PPC either leaves PC pointing at a faulting instruction or the
@@ -27,7 +29,7 @@ details. */
the former, so we adjust the saved PC to point to the following
instruction. This is what the handler in libgcc expects. */
-# define MAKE_THROW_FRAME(_exception) \
+# define MAKE_THROW_FRAME(_exception) \
do \
{ \
_sc->regs->nip += 4; \
@@ -58,7 +60,7 @@ struct kernel_old_sigaction {
void (*k_sa_restorer) (void);
};
-# define INIT_SEGV \
+# define INIT_SEGV \
do \
{ \
struct kernel_old_sigaction kact; \
@@ -69,7 +71,7 @@ do \
} \
while (0)
-# define INIT_FPE \
+# define INIT_FPE \
do \
{ \
struct kernel_old_sigaction kact; \
@@ -78,7 +80,15 @@ do \
kact.k_sa_flags = 0; \
syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
} \
-while (0)
+while (0)
-#endif /* JAVA_SIGNAL_H */
+# else
+# undef HANDLE_SEGV
+# undef HANDLE_FPE
+
+# define INIT_SEGV do {} while (0)
+# define INIT_FPE do {} while (0)
+# endif
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h
index eb034473f9e..ab59e5e69bc 100644
--- a/libjava/include/x86_64-signal.h
+++ b/libjava/include/x86_64-signal.h
@@ -10,14 +10,14 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
+#ifdef __x86_64__
+
#ifndef JAVA_SIGNAL_H
#define JAVA_SIGNAL_H 1
#include <signal.h>
#include <sys/syscall.h>
-#ifdef __x86_64__
-
#define HANDLE_SEGV 1
#define SIGNAL_HANDLER(_name) \
@@ -80,16 +80,13 @@ while (0)
* go away if all systems ever have pthreads libraries that are
* compiled with unwind info. */
-#else /* __x86_64__ */
+#endif /* JAVA_SIGNAL_H */
-/* This is for the 32-bit subsystem on on x86-64. Catching signals
- doesn't yet work on that target. */
+#else /* __x86_64__ */
-#undef HANDLE_SEGV
-#undef HANDLE_FPE
+/* This is for the 32-bit subsystem on on x86-64. */
-#define INIT_SEGV do {} while (0)
-#define INIT_FPE do {} while (0)
+#define sigcontext_struct sigcontext
+#include <java-signal-aux.h>
#endif /* __x86_64__ */
-#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/java/lang/natPosixProcess.cc b/libjava/java/lang/natPosixProcess.cc
index ef469242fd6..a6dfc1ada28 100644
--- a/libjava/java/lang/natPosixProcess.cc
+++ b/libjava/java/lang/natPosixProcess.cc
@@ -1,6 +1,6 @@
// natPosixProcess.cc - Native side of POSIX process code.
-/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation
This file is part of libgcj.
@@ -207,7 +207,7 @@ java::lang::ConcreteProcess::startProcess (jstringArray progarray,
char *path_val = getenv ("PATH");
char *ld_path_val = getenv ("LD_LIBRARY_PATH");
environ = env;
- if (getenv ("PATH") == NULL)
+ if (path_val && getenv ("PATH") == NULL)
{
char *path_env = (char *) _Jv_Malloc (strlen (path_val)
+ 5 + 1);
@@ -215,7 +215,7 @@ java::lang::ConcreteProcess::startProcess (jstringArray progarray,
strcat (path_env, path_val);
putenv (path_env);
}
- if (getenv ("LD_LIBRARY_PATH") == NULL)
+ if (ld_path_val && getenv ("LD_LIBRARY_PATH") == NULL)
{
char *ld_path_env
= (char *) _Jv_Malloc (strlen (ld_path_val) + 16 + 1);
diff --git a/libjava/java/lang/reflect/natMethod.cc b/libjava/java/lang/reflect/natMethod.cc
index ed122ea2441..736103b63dd 100644
--- a/libjava/java/lang/reflect/natMethod.cc
+++ b/libjava/java/lang/reflect/natMethod.cc
@@ -466,7 +466,16 @@ _Jv_CallAnyMethodA (jobject obj,
void *ncode;
- if (is_virtual_call && ! Modifier::isFinal (meth->accflags))
+ // FIXME: If a vtable index is -1 at this point it is invalid, so we
+ // have to use the ncode.
+ //
+ // This can happen because methods in final classes don't have
+ // vtable entries, but _Jv_isVirtualMethod() doesn't know that. We
+ // could solve this problem by allocating a vtable index for methods
+ // in final classes.
+ if (is_virtual_call
+ && ! Modifier::isFinal (meth->accflags)
+ && (_Jv_ushort)-1 != meth->index)
{
_Jv_VTable *vtable = *(_Jv_VTable **) obj;
ncode = vtable->get_method (meth->index);
diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java
index c9c0f5d0f03..c5920a09424 100644
--- a/libjava/java/net/DatagramSocket.java
+++ b/libjava/java/net/DatagramSocket.java
@@ -39,6 +39,7 @@ exception statement from your version. */
package java.net;
import gnu.java.net.PlainDatagramSocketImpl;
+import gnu.java.nio.DatagramChannelImpl;
import java.io.IOException;
import java.nio.channels.DatagramChannel;
import java.nio.channels.IllegalBlockingModeException;
@@ -565,7 +566,8 @@ public class DatagramSocket
("Socket connected to a multicast address my not receive");
if (getChannel() != null
- && !getChannel().isBlocking ())
+ && !getChannel().isBlocking ()
+ && !((DatagramChannelImpl) getChannel()).isInChannelOperation())
throw new IllegalBlockingModeException ();
getImpl().receive(p);
@@ -618,7 +620,8 @@ public class DatagramSocket
// use getTimeToLive for TTL val.
if (getChannel() != null
- && !getChannel().isBlocking ())
+ && !getChannel().isBlocking ()
+ && !((DatagramChannelImpl) getChannel()).isInChannelOperation())
throw new IllegalBlockingModeException ();
getImpl().send(p);
diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java
index 9a2d82d9c76..c660aada966 100644
--- a/libjava/java/net/ServerSocket.java
+++ b/libjava/java/net/ServerSocket.java
@@ -345,9 +345,14 @@ public class ServerSocket
if (isClosed())
throw new SocketException("ServerSocket is closed");
+ // The Sun spec says that if we have an associated channel and
+ // it is in non-blocking mode, we throw an IllegalBlockingModeException.
+ // However, in our implementation if the channel itself initiated this
+ // operation, then we must honor it regardless of its blocking mode.
if (getChannel() != null
- && !getChannel().isBlocking())
- throw new IllegalBlockingModeException();
+ && !getChannel().isBlocking ()
+ && !((PlainSocketImpl) getImpl()).isInChannelOperation())
+ throw new IllegalBlockingModeException ();
impl.accept(socket.getImpl());
}
diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java
index 9322e929ec3..7d325060813 100644
--- a/libjava/java/net/Socket.java
+++ b/libjava/java/net/Socket.java
@@ -420,8 +420,13 @@ public class Socket
if (! (endpoint instanceof InetSocketAddress))
throw new IllegalArgumentException("unsupported address type");
+ // The Sun spec says that if we have an associated channel and
+ // it is in non-blocking mode, we throw an IllegalBlockingModeException.
+ // However, in our implementation if the channel itself initiated this
+ // operation, then we must honor it regardless of its blocking mode.
if (getChannel() != null
- && !getChannel().isBlocking ())
+ && !getChannel().isBlocking ()
+ && !((PlainSocketImpl) getImpl()).isInChannelOperation())
throw new IllegalBlockingModeException ();
if (!isBound ())
diff --git a/libjava/java/nio/ByteBuffer.java b/libjava/java/nio/ByteBuffer.java
index 3be797750d0..9ca20618c45 100644
--- a/libjava/java/nio/ByteBuffer.java
+++ b/libjava/java/nio/ByteBuffer.java
@@ -1,5 +1,5 @@
/* ByteBuffer.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -382,8 +382,14 @@ public abstract class ByteBuffer extends Buffer
*/
public abstract ByteBuffer compact ();
+ void shiftDown (int dst_offset, int src_offset, int count)
+ {
+ for (int i = 0; i < count; i++)
+ put(dst_offset + i, get(src_offset + i));
+ }
+
/**
- * Tells wether or not this buffer is direct.
+ * Tells whether or not this buffer is direct.
*/
public abstract boolean isDirect ();
diff --git a/libjava/java/nio/ByteBufferHelper.java b/libjava/java/nio/ByteBufferHelper.java
index 23e133c86b3..c3dcfbe4f2f 100644
--- a/libjava/java/nio/ByteBufferHelper.java
+++ b/libjava/java/nio/ByteBufferHelper.java
@@ -1,5 +1,5 @@
/* ByteBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -42,58 +42,58 @@ package java.nio;
*/
final class ByteBufferHelper
{
- private static final void checkRemainingForRead (ByteBuffer buffer, int bytes)
+ private static void checkRemainingForRead (ByteBuffer buffer, int bytes)
{
if (buffer.remaining() < bytes)
throw new BufferUnderflowException();
}
- private static final void checkRemainingForWrite (ByteBuffer buffer, int bytes)
+ private static void checkRemainingForWrite (ByteBuffer buffer, int bytes)
{
if (buffer.remaining() < bytes)
throw new BufferOverflowException();
}
- private static final void checkAvailableForRead (ByteBuffer buffer,
- int index, int bytes)
+ private static void checkAvailableForRead (ByteBuffer buffer,
+ int index, int bytes)
{
if (buffer.limit() < (index + bytes))
throw new BufferUnderflowException();
}
- private static final void checkAvailableForWrite (ByteBuffer buffer,
- int index, int bytes)
+ private static void checkAvailableForWrite (ByteBuffer buffer,
+ int index, int bytes)
{
if (buffer.limit() < (index + bytes))
throw new BufferOverflowException();
}
- public static final char getChar (ByteBuffer buffer)
+ public static char getChar (ByteBuffer buffer, ByteOrder order)
{
- return (char) getShort (buffer);
+ return (char) getShort (buffer, order);
}
- public static final ByteBuffer putChar (ByteBuffer buffer, char value)
+ public static void putChar (ByteBuffer buffer, char value, ByteOrder order)
{
- return putShort (buffer, (short) value);
+ putShort (buffer, (short) value, order);
}
- public static final char getChar (ByteBuffer buffer, int index)
+ public static char getChar (ByteBuffer buffer, int index, ByteOrder order)
{
- return (char) getShort (buffer, index);
+ return (char) getShort (buffer, index, order);
}
- public static final ByteBuffer putChar (ByteBuffer buffer, int index,
- char value)
+ public static void putChar (ByteBuffer buffer, int index,
+ char value, ByteOrder order)
{
- return putShort (buffer, index, (short) value);
+ putShort (buffer, index, (short) value, order);
}
- public static final short getShort (ByteBuffer buffer)
+ public static short getShort (ByteBuffer buffer, ByteOrder order)
{
checkRemainingForRead (buffer, 2);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return (short) ((buffer.get() & 0xff)
+ (buffer.get() << 8));
@@ -103,11 +103,11 @@ final class ByteBufferHelper
+ (buffer.get() & 0xff));
}
- public static final ByteBuffer putShort (ByteBuffer buffer, short value)
+ public static void putShort (ByteBuffer buffer, short value, ByteOrder order)
{
checkRemainingForWrite (buffer, 2);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put ((byte) value);
buffer.put ((byte) (value >> 8));
@@ -117,15 +117,14 @@ final class ByteBufferHelper
buffer.put ((byte) (value >> 8));
buffer.put ((byte) value);
}
-
- return buffer;
}
- public static final short getShort (ByteBuffer buffer, int index)
+ public static short getShort (ByteBuffer buffer,
+ int index, ByteOrder order)
{
checkAvailableForRead (buffer, index, 2);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return (short) ((buffer.get (index) & 0xff)
+ (buffer.get (++index) << 8));
@@ -135,12 +134,12 @@ final class ByteBufferHelper
+ (buffer.get (++index) & 0xff));
}
- public static final ByteBuffer putShort (ByteBuffer buffer, int index,
- short value)
+ public static void putShort (ByteBuffer buffer, int index,
+ short value, ByteOrder order)
{
checkAvailableForWrite (buffer, index, 2);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
buffer.put (++index, (byte) (value >> 8));
@@ -150,15 +149,13 @@ final class ByteBufferHelper
buffer.put (index, (byte) (value >> 8));
buffer.put (++index, (byte) value);
}
-
- return buffer;
}
- public static final int getInt (ByteBuffer buffer)
+ public static int getInt (ByteBuffer buffer, ByteOrder order)
{
checkRemainingForRead (buffer, 4);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get() & 0xff)
+ ((buffer.get() & 0xff) << 8)
@@ -172,11 +169,11 @@ final class ByteBufferHelper
+ (buffer.get() & 0xff));
}
- public static final ByteBuffer putInt (ByteBuffer buffer, int value)
+ public static void putInt (ByteBuffer buffer, int value, ByteOrder order)
{
checkRemainingForWrite (buffer, 4);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put ((byte) value);
buffer.put ((byte) (value >> 8));
@@ -190,15 +187,13 @@ final class ByteBufferHelper
buffer.put ((byte) (value >> 8));
buffer.put ((byte) value);
}
-
- return buffer;
}
- public static final int getInt (ByteBuffer buffer, int index)
+ public static int getInt (ByteBuffer buffer, int index, ByteOrder order)
{
checkAvailableForRead (buffer, index, 4);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get (index) & 0xff)
+ ((buffer.get (++index) & 0xff) << 8)
@@ -212,12 +207,12 @@ final class ByteBufferHelper
+ (buffer.get (++index) & 0xff));
}
- public static final ByteBuffer putInt (ByteBuffer buffer, int index,
- int value)
+ public static void putInt (ByteBuffer buffer, int index,
+ int value, ByteOrder order)
{
checkAvailableForWrite (buffer, index, 4);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
buffer.put (++index, (byte) (value >> 8));
@@ -231,15 +226,13 @@ final class ByteBufferHelper
buffer.put (++index, (byte) (value >> 8));
buffer.put (++index, (byte) value);
}
-
- return buffer;
}
- public static final long getLong (ByteBuffer buffer)
+ public static long getLong (ByteBuffer buffer, ByteOrder order)
{
checkRemainingForRead (buffer, 8);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get() & 0xff)
+ (((buffer.get() & 0xff)) << 8)
@@ -261,11 +254,11 @@ final class ByteBufferHelper
+ (buffer.get() & 0xff));
}
- public static final ByteBuffer putLong (ByteBuffer buffer, long value)
+ public static void putLong (ByteBuffer buffer, long value, ByteOrder order)
{
checkRemainingForWrite (buffer, 8);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put ((byte) value);
buffer.put ((byte) (value >> 8));
@@ -287,15 +280,13 @@ final class ByteBufferHelper
buffer.put ((byte) (value >> 8));
buffer.put ((byte) value);
}
-
- return buffer;
}
- public static final long getLong (ByteBuffer buffer, int index)
+ public static long getLong (ByteBuffer buffer, int index, ByteOrder order)
{
checkAvailableForRead (buffer, index, 8);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get (index) & 0xff)
+ ((buffer.get (++index) & 0xff) << 8)
@@ -317,12 +308,12 @@ final class ByteBufferHelper
+ (buffer.get (++index) & 0xff));
}
- public static final ByteBuffer putLong (ByteBuffer buffer, int index,
- long value)
+ public static void putLong (ByteBuffer buffer, int index,
+ long value, ByteOrder order)
{
checkAvailableForWrite (buffer, index, 8);
- if (buffer.order() == ByteOrder.LITTLE_ENDIAN)
+ if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
buffer.put (++index, (byte) (value >> 8));
@@ -344,50 +335,47 @@ final class ByteBufferHelper
buffer.put (++index, (byte) (value >> 8));
buffer.put (++index, (byte) value);
}
-
- return buffer;
}
- public static final float getFloat (ByteBuffer buffer)
+ public static float getFloat (ByteBuffer buffer, ByteOrder order)
{
- return Float.intBitsToFloat (getInt (buffer));
+ return Float.intBitsToFloat (getInt (buffer, order));
}
- public static final ByteBuffer putFloat (ByteBuffer buffer, float value)
+ public static void putFloat (ByteBuffer buffer, float value, ByteOrder order)
{
- return putInt (buffer, Float.floatToRawIntBits (value));
+ putInt (buffer, Float.floatToRawIntBits (value), order);
}
- public static final float getFloat (ByteBuffer buffer, int index)
+ public static float getFloat (ByteBuffer buffer, int index, ByteOrder order)
{
- return Float.intBitsToFloat (getInt (buffer, index));
+ return Float.intBitsToFloat (getInt (buffer, index, order));
}
- public static final ByteBuffer putFloat (ByteBuffer buffer, int index,
- float value)
+ public static void putFloat (ByteBuffer buffer, int index,
+ float value, ByteOrder order)
{
- return putInt (buffer, index, Float.floatToRawIntBits (value));
+ putInt (buffer, index, Float.floatToRawIntBits (value), order);
}
- public static final double getDouble (ByteBuffer buffer)
+ public static double getDouble (ByteBuffer buffer, ByteOrder order)
{
- return Double.longBitsToDouble (getLong (buffer));
+ return Double.longBitsToDouble (getLong (buffer, order));
}
- public static final ByteBuffer putDouble (ByteBuffer buffer, double value)
+ public static void putDouble (ByteBuffer buffer, double value, ByteOrder order)
{
- return putLong (buffer, Double.doubleToLongBits (value));
+ putLong (buffer, Double.doubleToLongBits (value), order);
}
- public static final double getDouble (ByteBuffer buffer, int index)
+ public static double getDouble (ByteBuffer buffer, int index, ByteOrder order)
{
- return Double.longBitsToDouble (getLong (buffer, index));
+ return Double.longBitsToDouble (getLong (buffer, index, order));
}
- public static final ByteBuffer putDouble (ByteBuffer buffer, int index,
- double value)
+ public static void putDouble (ByteBuffer buffer, int index,
+ double value, ByteOrder order)
{
- return putLong (buffer, index, Double.doubleToLongBits (value));
+ putLong (buffer, index, Double.doubleToLongBits (value), order);
}
-
} // ByteBufferHelper
diff --git a/libjava/java/nio/ByteBufferImpl.java b/libjava/java/nio/ByteBufferImpl.java
index 76c965d7322..6a3814862c9 100644
--- a/libjava/java/nio/ByteBufferImpl.java
+++ b/libjava/java/nio/ByteBufferImpl.java
@@ -1,5 +1,5 @@
/* ByteBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -58,32 +58,32 @@ final class ByteBufferImpl extends ByteBuffer
public CharBuffer asCharBuffer ()
{
- return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public ShortBuffer asShortBuffer ()
{
- return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public IntBuffer asIntBuffer ()
{
- return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public LongBuffer asLongBuffer ()
{
- return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public FloatBuffer asFloatBuffer ()
{
- return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public DoubleBuffer asDoubleBuffer ()
{
- return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public boolean isReadOnly ()
@@ -108,15 +108,14 @@ final class ByteBufferImpl extends ByteBuffer
public ByteBuffer compact ()
{
- int copied = 0;
-
- while (remaining () > 0)
+ int pos = position();
+ if (pos > 0)
{
- put (copied, get ());
- copied++;
+ int count = remaining();
+ shiftDown(0, pos, count);
+ position(count);
+ limit(capacity());
}
-
- position (copied);
return this;
}
@@ -182,121 +181,133 @@ final class ByteBufferImpl extends ByteBuffer
final public char getChar ()
{
- return ByteBufferHelper.getChar (this);
+ return ByteBufferHelper.getChar(this, order());
}
final public ByteBuffer putChar (char value)
{
- return ByteBufferHelper.putChar (this, value);
+ ByteBufferHelper.putChar(this, value, order());
+ return this;
}
final public char getChar (int index)
{
- return ByteBufferHelper.getChar (this, index);
+ return ByteBufferHelper.getChar(this, index, order());
}
final public ByteBuffer putChar (int index, char value)
{
- return ByteBufferHelper.putChar (this, index, value);
+ ByteBufferHelper.putChar(this, index, value, order());
+ return this;
}
final public short getShort ()
{
- return ByteBufferHelper.getShort (this);
+ return ByteBufferHelper.getShort(this, order());
}
final public ByteBuffer putShort (short value)
{
- return ByteBufferHelper.putShort (this, value);
+ ByteBufferHelper.putShort(this, value, order());
+ return this;
}
final public short getShort (int index)
{
- return ByteBufferHelper.getShort (this, index);
+ return ByteBufferHelper.getShort(this, index, order());
}
final public ByteBuffer putShort (int index, short value)
{
- return ByteBufferHelper.putShort (this, index, value);
+ ByteBufferHelper.putShort(this, index, value, order());
+ return this;
}
final public int getInt ()
{
- return ByteBufferHelper.getInt (this);
+ return ByteBufferHelper.getInt(this, order());
}
final public ByteBuffer putInt (int value)
{
- return ByteBufferHelper.putInt (this, value);
+ ByteBufferHelper.putInt(this, value, order());
+ return this;
}
final public int getInt (int index)
{
- return ByteBufferHelper.getInt (this, index);
+ return ByteBufferHelper.getInt(this, index, order());
}
final public ByteBuffer putInt (int index, int value)
{
- return ByteBufferHelper.putInt (this, index, value);
+ ByteBufferHelper.putInt(this, index, value, order());
+ return this;
}
final public long getLong ()
{
- return ByteBufferHelper.getLong (this);
+ return ByteBufferHelper.getLong(this, order());
}
final public ByteBuffer putLong (long value)
{
- return ByteBufferHelper.putLong (this, value);
+ ByteBufferHelper.putLong (this, value, order());
+ return this;
}
final public long getLong (int index)
{
- return ByteBufferHelper.getLong (this, index);
+ return ByteBufferHelper.getLong (this, index, order());
}
final public ByteBuffer putLong (int index, long value)
{
- return ByteBufferHelper.putLong (this, index, value);
+ ByteBufferHelper.putLong (this, index, value, order());
+ return this;
}
final public float getFloat ()
{
- return ByteBufferHelper.getFloat (this);
+ return ByteBufferHelper.getFloat (this, order());
}
final public ByteBuffer putFloat (float value)
{
- return ByteBufferHelper.putFloat (this, value);
+ ByteBufferHelper.putFloat (this, value, order());
+ return this;
}
- final public float getFloat (int index)
+ public final float getFloat (int index)
{
- return ByteBufferHelper.getFloat (this, index);
+ return ByteBufferHelper.getFloat (this, index, order());
}
- public final ByteBuffer putFloat (int index, float value)
+ final public ByteBuffer putFloat (int index, float value)
{
- return ByteBufferHelper.putFloat (this, index, value);
+ ByteBufferHelper.putFloat (this, index, value, order());
+ return this;
}
final public double getDouble ()
{
- return ByteBufferHelper.getDouble (this);
+ return ByteBufferHelper.getDouble (this, order());
}
final public ByteBuffer putDouble (double value)
{
- return ByteBufferHelper.putDouble (this, value);
+ ByteBufferHelper.putDouble (this, value, order());
+ return this;
}
final public double getDouble (int index)
{
- return ByteBufferHelper.getDouble (this, index);
+ return ByteBufferHelper.getDouble (this, index, order());
}
final public ByteBuffer putDouble (int index, double value)
{
- return ByteBufferHelper.putDouble (this, index, value);
+ ByteBufferHelper.putDouble (this, index, value, order());
+ return this;
}
}
diff --git a/libjava/java/nio/CharViewBufferImpl.java b/libjava/java/nio/CharViewBufferImpl.java
index 6da6d59afeb..b1cc9071724 100644
--- a/libjava/java/nio/CharViewBufferImpl.java
+++ b/libjava/java/nio/CharViewBufferImpl.java
@@ -1,5 +1,5 @@
/* CharViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class CharViewBufferImpl extends CharBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public CharViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from CharByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public CharViewBufferImpl (ByteBuffer bb, int offset, int capacity,
- int limit, int position, int mark,
- boolean readOnly)
+ int limit, int position, int mark,
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from CharViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public char get ()
{
- char result = bb.getChar ((position () << 1) + offset);
- position (position () + 1);
+ int p = position();
+ char result = ByteBufferHelper.getChar(bb, (p << 1) + offset, endian);
+ position(p + 1);
return result;
}
public char get (int index)
{
- return bb.getChar ((index << 1) + offset);
+ return ByteBufferHelper.getChar(bb, (index << 1) + offset, endian);
}
public CharBuffer put (char value)
{
- bb.putChar ((position () << 1) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putChar(bb, (p << 1) + offset, value, endian);
+ position(p + 1);
return this;
}
public CharBuffer put (int index, char value)
{
- bb.putChar ((index << 1) + offset, value);
+ ByteBufferHelper.putChar(bb, (index << 1) + offset, value, endian);
return this;
}
@@ -95,59 +88,54 @@ class CharViewBufferImpl extends CharBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putChar ((i >> 1) + offset,
- bb.getChar (((i + position ()) >> 1) + offset));
- }
-
+ bb.shiftDown(offset, offset + 2 * position(), 2 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public CharBuffer duplicate ()
- {
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new CharViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
- }
-
public CharBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
return new CharViewBufferImpl (bb, (position () >> 1) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ remaining (), remaining (), 0, -1,
+ isReadOnly (), endian);
}
+ CharBuffer duplicate (boolean readOnly)
+ {
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new CharViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
+ }
+
+ public CharBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
+ public CharBuffer asReadOnlyBuffer ()
+ {
+ return duplicate(true);
+ }
+
public CharSequence subSequence (int start, int end)
{
if (start < 0
- || start > length ()
|| end < start
|| end > length ())
throw new IndexOutOfBoundsException ();
- return new CharViewBufferImpl (bb, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
+ return new CharViewBufferImpl (bb, array_offset, capacity (),
+ position () + end, position () + start,
+ -1, isReadOnly (), endian);
}
- public CharBuffer asReadOnlyBuffer ()
- {
- // Create a copy of this object that shares its content and is read-only
- return new CharViewBufferImpl (bb, (position () >> 1) + offset,
- remaining (), remaining (), 0, -1, true);
- }
-
public boolean isReadOnly ()
{
return readOnly;
@@ -160,6 +148,6 @@ class CharViewBufferImpl extends CharBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/DirectByteBufferImpl.java b/libjava/java/nio/DirectByteBufferImpl.java
index a54c20693fe..37b96a7c02e 100644
--- a/libjava/java/nio/DirectByteBufferImpl.java
+++ b/libjava/java/nio/DirectByteBufferImpl.java
@@ -1,5 +1,5 @@
/* DirectByteBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -117,18 +117,18 @@ class DirectByteBufferImpl extends ByteBuffer
return this;
}
+ native void shiftDown (int dst_offset, int src_offset, int count);
+
public ByteBuffer compact ()
{
- // FIXME this can sure be optimized using memcpy()
- int copied = 0;
-
- while (remaining () > 0)
+ int pos = position();
+ if (pos > 0)
{
- put (copied, get ());
- copied++;
+ int count = remaining();
+ shiftDown(0, pos, count);
+ position(count);
+ limit(capacity());
}
-
- position (copied);
return this;
}
@@ -161,197 +161,163 @@ class DirectByteBufferImpl extends ByteBuffer
public CharBuffer asCharBuffer ()
{
- return new CharViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new CharViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
public DoubleBuffer asDoubleBuffer ()
{
- return new DoubleViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new DoubleViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
public FloatBuffer asFloatBuffer ()
{
- return new FloatViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new FloatViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
public IntBuffer asIntBuffer ()
{
- return new IntViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new IntViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
public LongBuffer asLongBuffer ()
{
- return new LongViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new LongViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
public ShortBuffer asShortBuffer ()
{
- return new ShortViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+ return new ShortViewBufferImpl (this, position (), remaining (), remaining (), 0, -1, isReadOnly (), order());
}
final public char getChar ()
{
- // FIXME: this handles little endian only
- return (char) (((get () & 0xff) << 8)
- + (get () & 0xff));
+ return ByteBufferHelper.getChar(this, order());
}
final public ByteBuffer putChar (char value)
{
- // FIXME: this handles little endian only
- put ((byte) ((((int) value) & 0xff00) >> 8));
- put ((byte) (((int) value) & 0x00ff));
+ ByteBufferHelper.putChar(this, value, order());
return this;
}
final public char getChar (int index)
{
- // FIXME: this handles little endian only
- return (char) (((get (index) & 0xff) << 8)
- + (get (index + 1) & 0xff));
+ return ByteBufferHelper.getChar(this, index, order());
}
final public ByteBuffer putChar (int index, char value)
{
- // FIXME: this handles little endian only
- put (index, (byte) ((((int) value) & 0xff00) >> 8));
- put (index + 1, (byte) (((int) value) & 0x00ff));
+ ByteBufferHelper.putChar(this, index, value, order());
return this;
}
final public short getShort ()
{
- // FIXME: this handles little endian only
- return (short) (((get () & 0xff) << 8)
- + (get () & 0xff));
+ return ByteBufferHelper.getShort(this, order());
}
final public ByteBuffer putShort (short value)
{
- // FIXME: this handles little endian only
- put ((byte) ((((int) value) & 0xff00) >> 8));
- put ((byte) (((int) value) & 0x00ff));
+ ByteBufferHelper.putShort(this, value, order());
return this;
}
final public short getShort (int index)
{
- // FIXME: this handles little endian only
- return (short) (((get (index) & 0xff) << 8)
- + (get (index + 1) & 0xff));
+ return ByteBufferHelper.getShort(this, index, order());
}
final public ByteBuffer putShort (int index, short value)
{
- // FIXME: this handles little endian only
- put (index, (byte) ((((int) value) & 0xff00) >> 8));
- put (index + 1, (byte) (((int) value) & 0x00ff));
+ ByteBufferHelper.putShort(this, index, value, order());
return this;
}
final public int getInt ()
{
- // FIXME: this handles little endian only
- return (int) (((get () & 0xff) << 24)
- + ((get () & 0xff) << 16)
- + ((get () & 0xff) << 8)
- + (get () & 0xff));
+ return ByteBufferHelper.getInt(this, order());
}
final public ByteBuffer putInt (int value)
{
- // FIXME: this handles little endian only
- put ((byte) ((((int) value) & 0xff000000) >> 24));
- put ((byte) ((((int) value) & 0x00ff0000) >> 16));
- put ((byte) ((((int) value) & 0x0000ff00) >> 8));
- put ((byte) (((int) value) & 0x000000ff));
+ ByteBufferHelper.putInt(this, value, order());
return this;
}
final public int getInt (int index)
{
- // FIXME: this handles little endian only
- return (int) (((get (index) & 0xff) << 24)
- + ((get (index + 1) & 0xff) << 16)
- + ((get (index + 2) & 0xff) << 8)
- + (get (index + 3) & 0xff));
+ return ByteBufferHelper.getInt(this, index, order());
}
final public ByteBuffer putInt (int index, int value)
{
- // FIXME: this handles little endian only
- put (index, (byte) ((((int) value) & 0xff000000) >> 24));
- put (index + 1, (byte) ((((int) value) & 0x00ff0000) >> 16));
- put (index + 2, (byte) ((((int) value) & 0x0000ff00) >> 8));
- put (index + 3, (byte) (((int) value) & 0x000000ff));
+ ByteBufferHelper.putInt(this, index, value, order());
return this;
}
final public long getLong ()
{
- // FIXME: this handles little endian only
- return (long) (((get () & 0xff) << 56)
- + ((get () & 0xff) << 48)
- + ((get () & 0xff) << 40)
- + ((get () & 0xff) << 32)
- + ((get () & 0xff) << 24)
- + ((get () & 0xff) << 16)
- + ((get () & 0xff) << 8)
- + (get () & 0xff));
+ return ByteBufferHelper.getLong(this, order());
}
final public ByteBuffer putLong (long value)
{
- return ByteBufferHelper.putLong (this, value);
+ ByteBufferHelper.putLong (this, value, order());
+ return this;
}
final public long getLong (int index)
{
- return ByteBufferHelper.getLong (this, index);
+ return ByteBufferHelper.getLong (this, index, order());
}
final public ByteBuffer putLong (int index, long value)
{
- return ByteBufferHelper.putLong (this, index, value);
+ ByteBufferHelper.putLong (this, index, value, order());
+ return this;
}
final public float getFloat ()
{
- return ByteBufferHelper.getFloat (this);
+ return ByteBufferHelper.getFloat (this, order());
}
final public ByteBuffer putFloat (float value)
{
- return ByteBufferHelper.putFloat (this, value);
+ ByteBufferHelper.putFloat (this, value, order());
+ return this;
}
public final float getFloat (int index)
{
- return ByteBufferHelper.getFloat (this, index);
+ return ByteBufferHelper.getFloat (this, index, order());
}
final public ByteBuffer putFloat (int index, float value)
{
- return ByteBufferHelper.putFloat (this, index, value);
+ ByteBufferHelper.putFloat (this, index, value, order());
+ return this;
}
final public double getDouble ()
{
- return ByteBufferHelper.getDouble (this);
+ return ByteBufferHelper.getDouble (this, order());
}
final public ByteBuffer putDouble (double value)
{
- return ByteBufferHelper.putDouble (this, value);
+ ByteBufferHelper.putDouble (this, value, order());
+ return this;
}
final public double getDouble (int index)
{
- return ByteBufferHelper.getDouble (this, index);
+ return ByteBufferHelper.getDouble (this, index, order());
}
final public ByteBuffer putDouble (int index, double value)
{
- return ByteBufferHelper.putDouble (this, index, value);
+ ByteBufferHelper.putDouble (this, index, value, order());
+ return this;
}
}
diff --git a/libjava/java/nio/DoubleViewBufferImpl.java b/libjava/java/nio/DoubleViewBufferImpl.java
index 480b97f6d03..ac27746ba0d 100644
--- a/libjava/java/nio/DoubleViewBufferImpl.java
+++ b/libjava/java/nio/DoubleViewBufferImpl.java
@@ -1,5 +1,5 @@
/* DoubleViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class DoubleViewBufferImpl extends DoubleBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public DoubleViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from DoubleByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public DoubleViewBufferImpl (ByteBuffer bb, int offset, int capacity,
int limit, int position, int mark,
- boolean readOnly)
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from DoubleViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public double get ()
{
- double result = bb.getDouble ((position () << 3) + offset);
- position (position () + 1);
+ int p = position();
+ double result = ByteBufferHelper.getDouble(bb, (p << 3) + offset, endian);
+ position(p + 1);
return result;
}
public double get (int index)
{
- return bb.getDouble ((index << 3) + offset);
+ return ByteBufferHelper.getDouble(bb, (index << 3) + offset, endian);
}
public DoubleBuffer put (double value)
{
- bb.putDouble ((position () << 3) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putDouble(bb, (p << 3) + offset, value, endian);
+ position(p + 1);
return this;
}
public DoubleBuffer put (int index, double value)
{
- bb.putDouble ((index << 3) + offset, value);
+ ByteBufferHelper.putDouble(bb, (index << 3) + offset, value, endian);
return this;
}
@@ -95,48 +88,41 @@ class DoubleViewBufferImpl extends DoubleBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putDouble ((i >> 3) + offset,
- bb.getDouble (((i + position ()) >> 3) + offset));
- }
-
+ bb.shiftDown(offset, offset + 8 * position(), 8 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public DoubleBuffer duplicate ()
+ public DoubleBuffer slice ()
{
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new DoubleViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
+ return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
+ remaining(), remaining(), 0, -1,
+ readOnly, endian);
}
- public DoubleBuffer slice ()
+ DoubleBuffer duplicate (boolean readOnly)
{
- // Create a sliced copy of this object that shares its content.
- return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new DoubleViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
}
+ public DoubleBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
public DoubleBuffer asReadOnlyBuffer ()
{
- // Create a copy of this object that shares its content and is read-only
- return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
- remaining (), remaining (), 0, -1, true);
+ return duplicate(true);
}
-
+
public boolean isReadOnly ()
{
return readOnly;
@@ -149,6 +135,6 @@ class DoubleViewBufferImpl extends DoubleBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/FloatViewBufferImpl.java b/libjava/java/nio/FloatViewBufferImpl.java
index e44cd5e18fd..88bc92553ab 100644
--- a/libjava/java/nio/FloatViewBufferImpl.java
+++ b/libjava/java/nio/FloatViewBufferImpl.java
@@ -1,5 +1,5 @@
/* FloatViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class FloatViewBufferImpl extends FloatBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public FloatViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from FloatByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public FloatViewBufferImpl (ByteBuffer bb, int offset, int capacity,
- int limit, int position, int mark,
- boolean readOnly)
+ int limit, int position, int mark,
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from FloatViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public float get ()
{
- float result = bb.getFloat ((position () << 2) + offset);
- position (position () + 1);
+ int p = position();
+ float result = ByteBufferHelper.getFloat(bb, (p << 2) + offset, endian);
+ position(p + 1);
return result;
}
public float get (int index)
{
- return bb.getFloat ((index << 2) + offset);
+ return ByteBufferHelper.getFloat(bb, (index << 2) + offset, endian);
}
public FloatBuffer put (float value)
{
- bb.putFloat ((position () << 2) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putFloat(bb, (p << 2) + offset, value, endian);
+ position(p + 1);
return this;
}
public FloatBuffer put (int index, float value)
{
- bb.putFloat ((index << 2) + offset, value);
+ ByteBufferHelper.putFloat(bb, (index << 2) + offset, value, endian);
return this;
}
@@ -95,48 +88,42 @@ class FloatViewBufferImpl extends FloatBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putFloat ((i >> 2) + offset,
- bb.getFloat (((i + position ()) >> 2) + offset));
- }
-
+ bb.shiftDown(offset, offset + 4 * position(), 4 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public FloatBuffer duplicate ()
- {
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new FloatViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
- }
-
public FloatBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ remaining(), remaining(), 0, -1,
+ readOnly, endian);
}
- public FloatBuffer asReadOnlyBuffer ()
+ FloatBuffer duplicate (boolean readOnly)
{
- // Create a copy of this object that shares its content and is read-only
- return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
- remaining (), remaining (), 0, -1, true);
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new FloatViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
}
+ public FloatBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
+ public FloatBuffer asReadOnlyBuffer ()
+ {
+ return duplicate(true);
+ }
+
public boolean isReadOnly ()
{
return readOnly;
@@ -149,6 +136,6 @@ class FloatViewBufferImpl extends FloatBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/IntViewBufferImpl.java b/libjava/java/nio/IntViewBufferImpl.java
index e60f3cb99a4..8e384c9017d 100644
--- a/libjava/java/nio/IntViewBufferImpl.java
+++ b/libjava/java/nio/IntViewBufferImpl.java
@@ -1,5 +1,5 @@
/* IntViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class IntViewBufferImpl extends IntBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public IntViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from IntByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public IntViewBufferImpl (ByteBuffer bb, int offset, int capacity,
- int limit, int position, int mark,
- boolean readOnly)
+ int limit, int position, int mark,
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from IntViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public int get ()
{
- int result = bb.getInt ((position () << 2) + offset);
- position (position () + 1);
+ int p = position();
+ int result = ByteBufferHelper.getInt(bb, (p << 2) + offset, endian);
+ position(p + 1);
return result;
}
public int get (int index)
{
- return bb.getInt ((index << 2) + offset);
+ return ByteBufferHelper.getInt(bb, (index << 2) + offset, endian);
}
public IntBuffer put (int value)
{
- bb.putInt ((position () << 2) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putInt(bb, (p << 2) + offset, value, endian);
+ position(p + 1);
return this;
}
public IntBuffer put (int index, int value)
{
- bb.putInt ((index << 2) + offset, value);
+ ByteBufferHelper.putInt(bb, (index << 2) + offset, value, endian);
return this;
}
@@ -95,48 +88,42 @@ class IntViewBufferImpl extends IntBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putInt ((i >> 2) + offset,
- bb.getInt (((i + position ()) >> 2) + offset));
- }
-
+ bb.shiftDown(offset, offset + 4 * position(), 4 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public IntBuffer duplicate ()
- {
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new IntViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
- }
-
public IntBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
return new IntViewBufferImpl (bb, (position () >> 2) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ remaining(), remaining(), 0, -1,
+ readOnly, endian);
}
- public IntBuffer asReadOnlyBuffer ()
+ IntBuffer duplicate (boolean readOnly)
{
- // Create a copy of this object that shares its content and is read-only
- return new IntViewBufferImpl (bb, (position () >> 2) + offset,
- remaining (), remaining (), 0, -1, true);
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new IntViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
}
+ public IntBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
+ public IntBuffer asReadOnlyBuffer ()
+ {
+ return duplicate(true);
+ }
+
public boolean isReadOnly ()
{
return readOnly;
@@ -149,6 +136,6 @@ class IntViewBufferImpl extends IntBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/LongViewBufferImpl.java b/libjava/java/nio/LongViewBufferImpl.java
index c7ada48658f..a405ec871a5 100644
--- a/libjava/java/nio/LongViewBufferImpl.java
+++ b/libjava/java/nio/LongViewBufferImpl.java
@@ -1,5 +1,5 @@
/* LongViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class LongViewBufferImpl extends LongBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public LongViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from LongByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public LongViewBufferImpl (ByteBuffer bb, int offset, int capacity,
- int limit, int position, int mark,
- boolean readOnly)
+ int limit, int position, int mark,
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from LongViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public long get ()
{
- long result = bb.getLong ((position () << 3) + offset);
- position (position () + 1);
+ int p = position();
+ long result = ByteBufferHelper.getLong(bb, (p << 3) + offset, endian);
+ position(p + 1);
return result;
}
public long get (int index)
{
- return bb.getLong ((index << 3) + offset);
+ return ByteBufferHelper.getLong(bb, (index << 3) + offset, endian);
}
public LongBuffer put (long value)
{
- bb.putLong ((position () << 3) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putLong(bb, (p << 3) + offset, value, endian);
+ position(p + 1);
return this;
}
public LongBuffer put (int index, long value)
{
- bb.putLong ((index << 3) + offset, value);
+ ByteBufferHelper.putLong(bb, (index << 3) + offset, value, endian);
return this;
}
@@ -95,48 +88,42 @@ class LongViewBufferImpl extends LongBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putLong ((i >> 3) + offset,
- bb.getLong (((i + position ()) >> 3) + offset));
- }
-
+ bb.shiftDown(offset, offset + 8 * position(), 8 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public LongBuffer duplicate ()
- {
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new LongViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
- }
-
public LongBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
return new LongViewBufferImpl (bb, (position () >> 3) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ remaining(), remaining(), 0, -1,
+ readOnly, endian);
}
- public LongBuffer asReadOnlyBuffer ()
+ LongBuffer duplicate (boolean readOnly)
{
- // Create a copy of this object that shares its content and is read-only
- return new LongViewBufferImpl (bb, (position () >> 3) + offset,
- remaining (), remaining (), 0, -1, true);
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new LongViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
}
+ public LongBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
+ public LongBuffer asReadOnlyBuffer ()
+ {
+ return duplicate(true);
+ }
+
public boolean isReadOnly ()
{
return readOnly;
@@ -149,6 +136,6 @@ class LongViewBufferImpl extends LongBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/MappedByteBufferImpl.java b/libjava/java/nio/MappedByteBufferImpl.java
index 47673c66aa4..f1d892f146f 100644
--- a/libjava/java/nio/MappedByteBufferImpl.java
+++ b/libjava/java/nio/MappedByteBufferImpl.java
@@ -1,5 +1,5 @@
/* MappedByteBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -111,15 +111,14 @@ public class MappedByteBufferImpl extends MappedByteBuffer
public ByteBuffer compact ()
{
- int copied = 0;
-
- while (remaining () > 0)
+ int pos = position();
+ if (pos > 0)
{
- put (copied, get ());
- copied++;
+ int count = remaining();
+ shiftDown(0, pos, count);
+ position(count);
+ limit(capacity());
}
-
- position (copied);
return this;
}
@@ -145,151 +144,163 @@ public class MappedByteBufferImpl extends MappedByteBuffer
public CharBuffer asCharBuffer ()
{
- return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public ShortBuffer asShortBuffer ()
{
- return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public IntBuffer asIntBuffer ()
{
- return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public LongBuffer asLongBuffer ()
{
- return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public FloatBuffer asFloatBuffer ()
{
- return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public DoubleBuffer asDoubleBuffer ()
{
- return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+ return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
- public final char getChar()
+ final public char getChar ()
{
- return ByteBufferHelper.getChar (this);
+ return ByteBufferHelper.getChar(this, order());
}
- public final ByteBuffer putChar (char value)
+ final public ByteBuffer putChar (char value)
{
- return ByteBufferHelper.putChar (this, value);
+ ByteBufferHelper.putChar(this, value, order());
+ return this;
}
- public final char getChar (int index)
+ final public char getChar (int index)
{
- return ByteBufferHelper.getChar (this, index);
+ return ByteBufferHelper.getChar(this, index, order());
}
- public final ByteBuffer putChar (int index, char value)
+ final public ByteBuffer putChar (int index, char value)
{
- return ByteBufferHelper.putChar (this, index, value);
+ ByteBufferHelper.putChar(this, index, value, order());
+ return this;
}
- public final short getShort()
+ final public short getShort ()
{
- return ByteBufferHelper.getShort (this);
+ return ByteBufferHelper.getShort(this, order());
}
- public final ByteBuffer putShort (short value)
+ final public ByteBuffer putShort (short value)
{
- return ByteBufferHelper.putShort (this, value);
+ ByteBufferHelper.putShort(this, value, order());
+ return this;
}
- public final short getShort (int index)
+ final public short getShort (int index)
{
- return ByteBufferHelper.getShort (this, index);
+ return ByteBufferHelper.getShort(this, index, order());
}
- public final ByteBuffer putShort (int index, short value)
+ final public ByteBuffer putShort (int index, short value)
{
- return ByteBufferHelper.putShort (this, index, value);
+ ByteBufferHelper.putShort(this, index, value, order());
+ return this;
}
- public final int getInt()
+ final public int getInt ()
{
- return ByteBufferHelper.getInt (this);
+ return ByteBufferHelper.getInt(this, order());
}
- public final ByteBuffer putInt (int value)
+ final public ByteBuffer putInt (int value)
{
- return ByteBufferHelper.putInt (this, value);
+ ByteBufferHelper.putInt(this, value, order());
+ return this;
}
- public final int getInt (int index)
+ final public int getInt (int index)
{
- return ByteBufferHelper.getInt (this, index);
+ return ByteBufferHelper.getInt(this, index, order());
}
- public final ByteBuffer putInt (int index, int value)
+ final public ByteBuffer putInt (int index, int value)
{
- return ByteBufferHelper.putInt (this, index, value);
+ ByteBufferHelper.putInt(this, index, value, order());
+ return this;
}
- public final long getLong()
+ final public long getLong ()
{
- return ByteBufferHelper.getLong (this);
+ return ByteBufferHelper.getLong(this, order());
}
- public final ByteBuffer putLong (long value)
+ final public ByteBuffer putLong (long value)
{
- return ByteBufferHelper.putLong (this, value);
+ ByteBufferHelper.putLong (this, value, order());
+ return this;
}
- public final long getLong (int index)
+ final public long getLong (int index)
{
- return ByteBufferHelper.getLong (this, index);
+ return ByteBufferHelper.getLong (this, index, order());
}
- public final ByteBuffer putLong (int index, long value)
+ final public ByteBuffer putLong (int index, long value)
{
- return ByteBufferHelper.putLong (this, index, value);
+ ByteBufferHelper.putLong (this, index, value, order());
+ return this;
}
- public final float getFloat()
+ final public float getFloat ()
{
- return ByteBufferHelper.getFloat (this);
+ return ByteBufferHelper.getFloat (this, order());
}
- public final ByteBuffer putFloat (float value)
+ final public ByteBuffer putFloat (float value)
{
- return ByteBufferHelper.putFloat (this, value);
+ ByteBufferHelper.putFloat (this, value, order());
+ return this;
}
public final float getFloat (int index)
{
- return ByteBufferHelper.getFloat (this, index);
+ return ByteBufferHelper.getFloat (this, index, order());
}
- public final ByteBuffer putFloat (int index, float value)
+ final public ByteBuffer putFloat (int index, float value)
{
- return ByteBufferHelper.putFloat (this, index, value);
+ ByteBufferHelper.putFloat (this, index, value, order());
+ return this;
}
- public final double getDouble()
+ final public double getDouble ()
{
- return ByteBufferHelper.getDouble (this);
+ return ByteBufferHelper.getDouble (this, order());
}
- public final ByteBuffer putDouble (double value)
+ final public ByteBuffer putDouble (double value)
{
- return ByteBufferHelper.putDouble (this, value);
+ ByteBufferHelper.putDouble (this, value, order());
+ return this;
}
- public final double getDouble (int index)
+ final public double getDouble (int index)
{
- return ByteBufferHelper.getDouble (this, index);
+ return ByteBufferHelper.getDouble (this, index, order());
}
- public final ByteBuffer putDouble (int index, double value)
+ final public ByteBuffer putDouble (int index, double value)
{
- return ByteBufferHelper.putDouble (this, index, value);
+ ByteBufferHelper.putDouble (this, index, value, order());
+ return this;
}
}
diff --git a/libjava/java/nio/ShortViewBufferImpl.java b/libjava/java/nio/ShortViewBufferImpl.java
index 9594642ba89..b217f1cb553 100644
--- a/libjava/java/nio/ShortViewBufferImpl.java
+++ b/libjava/java/nio/ShortViewBufferImpl.java
@@ -1,5 +1,5 @@
/* ShortViewBufferImpl.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,54 +40,47 @@ package java.nio;
class ShortViewBufferImpl extends ShortBuffer
{
- private boolean readOnly;
+ /** Position in bb (i.e. a byte offset) where this buffer starts. */
private int offset;
private ByteBuffer bb;
+ private boolean readOnly;
private ByteOrder endian;
- public ShortViewBufferImpl (ByteBuffer bb, boolean readOnly)
- {
- super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
- this.bb = bb;
- this.readOnly = readOnly;
- // FIXME: What if this is called from ShortByteBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
- }
-
public ShortViewBufferImpl (ByteBuffer bb, int offset, int capacity,
- int limit, int position, int mark,
- boolean readOnly)
+ int limit, int position, int mark,
+ boolean readOnly, ByteOrder endian)
{
super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
this.bb = bb;
this.offset = offset;
this.readOnly = readOnly;
- // FIXME: What if this is called from ShortViewBufferImpl and ByteBuffer has changed its endianess ?
- this.endian = bb.order ();
+ this.endian = endian;
}
public short get ()
{
- short result = bb.getShort ((position () << 1) + offset);
- position (position () + 1);
+ int p = position();
+ short result = ByteBufferHelper.getShort(bb, (p << 1) + offset, endian);
+ position(p + 1);
return result;
}
public short get (int index)
{
- return bb.getShort ((index << 1) + offset);
+ return ByteBufferHelper.getShort(bb, (index << 1) + offset, endian);
}
public ShortBuffer put (short value)
{
- bb.putShort ((position () << 1) + offset, value);
- position (position () + 1);
+ int p = position();
+ ByteBufferHelper.putShort(bb, (p << 1) + offset, value, endian);
+ position(p + 1);
return this;
}
public ShortBuffer put (int index, short value)
{
- bb.putShort ((index << 1) + offset, value);
+ ByteBufferHelper.putShort(bb, (index << 1) + offset, value, endian);
return this;
}
@@ -95,48 +88,42 @@ class ShortViewBufferImpl extends ShortBuffer
{
if (position () > 0)
{
- // Copy all data from position() to limit() to the beginning of the
- // buffer, set position to end of data and limit to capacity
- // XXX: This can surely be optimized, for direct and non-direct buffers
-
int count = limit () - position ();
-
- for (int i = 0; i < count; i++)
- {
- bb.putShort ((i >> 1) + offset,
- bb.getShort (((i + position ()) >> 1) + offset));
- }
-
+ bb.shiftDown(offset, offset + 2 * position(), 2 * count);
position (count);
limit (capacity ());
}
-
return this;
}
- public ShortBuffer duplicate ()
- {
- // Create a copy of this object that shares its content
- // FIXME: mark is not correct
- return new ShortViewBufferImpl (bb, offset, capacity (), limit (),
- position (), -1, isReadOnly ());
- }
-
public ShortBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
- remaining (), remaining (), 0, -1,
- isReadOnly ());
+ remaining(), remaining(), 0, -1,
+ readOnly, endian);
}
- public ShortBuffer asReadOnlyBuffer ()
+ ShortBuffer duplicate (boolean readOnly)
{
- // Create a copy of this object that shares its content and is read-only
- return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
- remaining (), remaining (), 0, -1, true);
+ int pos = position();
+ reset();
+ int mark = position();
+ position(pos);
+ return new ShortViewBufferImpl (bb, offset, capacity(), limit(),
+ pos, mark, readOnly, endian);
}
+ public ShortBuffer duplicate ()
+ {
+ return duplicate(readOnly);
+ }
+
+ public ShortBuffer asReadOnlyBuffer ()
+ {
+ return duplicate(true);
+ }
+
public boolean isReadOnly ()
{
return readOnly;
@@ -149,6 +136,6 @@ class ShortViewBufferImpl extends ShortBuffer
public ByteOrder order ()
{
- return ByteOrder.LITTLE_ENDIAN;
+ return endian;
}
}
diff --git a/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
index 0cf798eaf57..5d9f886ac39 100644
--- a/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
@@ -74,8 +74,8 @@ public abstract class AbstractInterruptibleChannel
{
if (!closed)
{
- implCloseChannel();
closed = true;
+ implCloseChannel();
}
}
diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
index 17d6a2eaea1..c0a654f0748 100644
--- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
@@ -80,8 +80,11 @@ public abstract class AbstractSelectableChannel extends SelectableChannel
{
synchronized (blockingLock())
{
- implConfigureBlocking(blocking);
- this.blocking = blocking;
+ if (this.blocking != blocking)
+ {
+ implConfigureBlocking(blocking);
+ this.blocking = blocking;
+ }
}
return this;
diff --git a/libjava/java/nio/natDirectByteBufferImpl.cc b/libjava/java/nio/natDirectByteBufferImpl.cc
index 2ceea170551..7ff06ffa030 100644
--- a/libjava/java/nio/natDirectByteBufferImpl.cc
+++ b/libjava/java/nio/natDirectByteBufferImpl.cc
@@ -43,3 +43,12 @@ java::nio::DirectByteBufferImpl::putImpl (jint index, jbyte value)
jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index;
*pointer = value;
}
+
+void
+java::nio::DirectByteBufferImpl::shiftDown
+(jint dst_offset, jint src_offset, jint count)
+{
+ jbyte* dst = reinterpret_cast<jbyte*> (address) + offset + dst_offset;
+ jbyte* src = reinterpret_cast<jbyte*> (address) + offset + src_offset;
+ ::memmove(dst, src, count);
+}
diff --git a/libjava/libltdl/ChangeLog b/libjava/libltdl/ChangeLog
index 67edbdd80cb..184607ac563 100644
--- a/libjava/libltdl/ChangeLog
+++ b/libjava/libltdl/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-22 Matthias Klose <doko@debian.org>
+
+ * config.guess: Update from version 2003-10-07 to 2004-02-16.
+ * config.sub: Update from version 2003-10-07 to 2004-02-16.
+
2003-08-07 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* configure.in: Don't initialize GCINCS to boehm-gc/include.
diff --git a/libjava/libltdl/config.guess b/libjava/libltdl/config.guess
index 11271623bbd..00ccf89e18b 100755
--- a/libjava/libltdl/config.guess
+++ b/libjava/libltdl/config.guess
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2003-10-07'
+timestamp='2004-02-16'
# 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
@@ -197,12 +197,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit 0 ;;
+ amd64:OpenBSD:*:*)
+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -221,6 +227,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ pegasos:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -236,6 +245,15 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -307,6 +325,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
@@ -399,6 +420,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
@@ -742,6 +766,11 @@ EOF
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
@@ -986,6 +1015,9 @@ EOF
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit 0 ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1172,7 +1204,7 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
- NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1216,6 +1248,9 @@ EOF
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
diff --git a/libjava/libltdl/config.sub b/libjava/libltdl/config.sub
index 79657cd1822..d2e3557ac40 100755
--- a/libjava/libltdl/config.sub
+++ b/libjava/libltdl/config.sub
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2003-10-07'
+timestamp='2004-02-16'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,8 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -362,6 +363,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -379,6 +383,9 @@ case $basic_machine in
amd64)
basic_machine=x86_64-pc
;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -438,6 +445,10 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
crds | unos)
basic_machine=m68k-crds
;;
@@ -743,6 +754,10 @@ case $basic_machine in
basic_machine=or32-unknown
os=-coff
;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
@@ -963,6 +978,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -1131,19 +1150,20 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1182,6 +1202,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1203,6 +1226,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
@@ -1225,6 +1251,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1473,9 +1502,15 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
+ -tpf*)
+ vendor=ibm
+ ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
diff --git a/libjava/libtool-version b/libjava/libtool-version
index 8c0164a94a0..08b615589a2 100644
--- a/libjava/libtool-version
+++ b/libjava/libtool-version
@@ -3,4 +3,4 @@
# a separate file so that version updates don't involve re-running
# automake.
# CURRENT:REVISION:AGE
-4:0:0
+5:0:0
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 069a1f9dc51..ed063862366 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,12 @@
+2004-03-01 Michael Matz <matz@suse.de>
+
+ * Makefile.in (ALL_CFLAGS): Add -fno-strict-aliasing.
+
+2004-01-17 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR target/10781
+ * encoding.c (rs6000_special_round_type_align): Define.
+
2004-01-14 Adam Fedor <fedor@gnu.org>
PR libobjc/12155
diff --git a/libobjc/Makefile.in b/libobjc/Makefile.in
index 1e6c337a6e0..ad91e72b30a 100644
--- a/libobjc/Makefile.in
+++ b/libobjc/Makefile.in
@@ -71,7 +71,7 @@ CFLAGS = @CFLAGS@
WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes
GTHREAD_FLAGS=@GTHREAD_FLAGS@
ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(WARN_CFLAGS) \
- $(GTHREAD_FLAGS) -DIN_GCC -DIN_TARGET_LIBS
+ $(GTHREAD_FLAGS) -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing
# Libtool
# The following strings describe the version of the obj-C library
diff --git a/libobjc/encoding.c b/libobjc/encoding.c
index bed0653cff7..17bc8d4e2e1 100644
--- a/libobjc/encoding.c
+++ b/libobjc/encoding.c
@@ -88,6 +88,17 @@ Boston, MA 02111-1307, USA. */
eliminate the warning. */
static int __attribute__ ((__unused__)) target_flags = 0;
+
+/* FIXME: while this file has no business including tm.h, this
+ definitely has no business defining this macro but it
+ is only way around without really rewritting this file,
+ should look after the branch of 3.4 to fix this. */
+#define rs6000_special_round_type_align(STRUCT, COMPUTED, SPECIFIED) \
+ ((TYPE_FIELDS (STRUCT) != 0 \
+ && DECL_MODE (TYPE_FIELDS (STRUCT)) == DFmode) \
+ ? MAX (MAX (COMPUTED, SPECIFIED), 64) \
+ : MAX (COMPUTED, SPECIFIED))
+
/*
return the size of an object specified by type
*/
diff --git a/libstdc++-v3/.cvsignore b/libstdc++-v3/.cvsignore
new file mode 100644
index 00000000000..d89921897ae
--- /dev/null
+++ b/libstdc++-v3/.cvsignore
@@ -0,0 +1 @@
+autom4te.cache
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9e45eb0ce3b..1fd95cb008d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,535 @@
+2004-03-01 David Billinghurst <David.Billinghurst@riotinto.com>
+
+ * testsuite/lib/libstdc++.exp (v3-list-tests): Use
+ testsuite_files from correct multilib blddir when running
+ testsuite.
+
+2004-02-26 David Edelsohn <edelsohn@gnu.org>
+
+ * 22_locale/collate/compare/wchar_t/2.cc: Change input-charset
+ from iso-8859-1 to ISO8859-1.
+ * 22_locale/collate/compare/wchar_t/wrapped_env.cc: Same.
+ * 22_locale/collate/compare/wchar_t/wrapped_locale.cc: Same.
+ * 22_locale/collate/hash/wchar_t/2.cc: Same.
+ * 22_locale/collate/hash/wchar_t/wrapped_env.cc: Same.
+ * 22_locale/collate/hash/wchar_t/wrapped_locale.cc: Same.
+ * 22_locale/collate/transform/wchar_t/2.cc: Same.
+ * 22_locale/collate/transform/wchar_t/wrapped_env.cc: Same.
+ * 22_locale/collate/transform/wchar_t/wrapped_locale.cc: Same.
+
+2004-02-26 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * testsuite/demangle/abi_examples/01.cc: Expect error -2.
+ * testsuite/demangle/abi_examples/02.cc: Likewise.
+ * testsuite/demangle/regression/cw-11.cc: Likewise.
+ * testsuite/demangle/regression/cw-16.cc: Change two expected
+ results to match libiberty demangler output.
+
+2004-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/10246
+ * libsupc++/Makefile.am: Use libiberty demangler.
+ (c_sources): Add cp-demangle.c.
+ * libsupc++/Makefile.in: Regenerate.
+ * src/Makefile.am (sources): Remove demangle.cc.
+ * src/Makefile.in: Regenerate.
+ * include/Makefile.am (bits_headers): Move demangle.h.
+ (ext_headers): ...here.
+ * include/Makefile.in: Regenerate.
+ * include/bits/demangle.h: Move...
+ * include/ext/demangle.h: ...here.
+ * src/demangle.cc: Remove.
+
+2004-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/demangle.h: Add type template parameter to all
+ templates with just an Allocator template parameter.
+
+2004-02-25 Carlo Wood <carlo@alinoe.com>
+
+ * bits/demangle.h
+ namespace __gnu_cxx::demangler
+ (session<Allocator>::qualifier_list_Allocator): Add
+ (session<Allocator>::M_qualifier_list_alloc): Add
+ (session<Allocator>::decode_type_with_postfix):
+ Use M_qualifier_list_alloc instead of calling operator new/delete.
+
+2004-02-25 David Billinghurst <David.Billinghurst@riotinto.com>
+
+ PR bootstrap/14207
+ Revert patch of 2004-02-17, as it breaks mips-sgi-irix6.5 -o32
+ (Almost certainly a target issue)
+ * include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+ num_get<>::_M_extract_int, money_get<>::do_get): Simplify
+ grouping fidelity conditional.
+
+2004-02-24 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/14252
+ * include/bits/postypes.h (class streamoff): Add operator++(),
+ operator++(int), operator--() and operator--(int).
+ * testsuite/27_io/fpos/14252.cc: New.
+
+2004-02-24 Richard Sandiford <rsandifo@redhat.com>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int): Fix bounds
+ error in handling of hex constants.
+
+2004-02-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * libsupc++/vterminate.cc (__gnu_cxx::__verbose_terminate_handler):
+ Only use fputs, not write.
+
+2004-02-23 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/14248
+ * include/bits/stl_bvector.h (bit_vector): Move non-standard
+ typedef from here...
+ * include/backward/bvector.h: ... to here.
+
+2004-02-21 Mark Mitchell <mark@codesourcery.com>
+
+ * libsupc++/vterminate.cc
+ (__gnu_cxx::__verbose_terminate_handler): Guard against recursive
+ calls to terminate.
+ * src/demangle.cc (__cxa_demangle): Wrap in try-catch block.
+
+ * testsuite/testsuite_hooks.cc (__gnu_test::set_memory_limits): Do
+ not set RLIMIT_AS on HP-UX.
+
+2004-02-20 Mark Mitchell <mark@codesourcery.com>
+
+ * testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Open
+ FIFO for writing with ios_base::in|ios_base::out.
+ * testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+ * testsuite/27_io/objects/char/7.cc: Likewise.
+ * testsuite/27_io/objects/char/9661-1.cc: Open FIFO for writing
+ with "r+".
+
+2004-02-20 Paolo Carlini <pcarlini@suse.de>
+
+ * config/io/basic_file_stdio.cc (__gnu_internal::xwritev):
+ Rewrite, avoiding recursion.
+ (__gnu_internal::xwrite): Minor tweaks.
+
+2004-02-20 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13731 (final part: writev)
+ * config/io/basic_file_stdio.cc (__gnu_internal::xwritev):
+ New, a wrapper around writev() handling partial writes.
+ (__basic_file<char>::xwrite): Move to __gnu_internal and make
+ static.
+ (__basic_file<char>::xsputn): Update call.
+ (__basic_file<char>::xsputn_2): Likewise.
+ * config/io/basic_file_stdio.h (__basic_file<char>::xwrite):
+ Don't declare, now static.
+
+2004-02-20 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13731 (first part: write)
+ * config/io/basic_file_stdio.h (__basic_file<char>::xwrite):
+ New, declare.
+ * config/io/basic_file_stdio.cc (__basic_file<char>::xwrite):
+ Define it: a wrapper around write() handling partial write.
+ (__basic_file<char>::xsputn): Use it.
+ (__basic_file<char>::xsputn_2): Likewise.
+
+2004-02-17 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+ num_get<>::_M_extract_int, money_get<>::do_get): Simplify
+ grouping fidelity conditional.
+
+2004-02-16 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/overflow/char/13858.cc:
+ Qualify exception with std::.
+ * testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+2004-02-16 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/ext/enc_filebuf/char/13189.cc: Don't check
+ for now that the catch block is not reached.
+ * testsuite/ext/enc_filebuf/wchar_t/13189.cc: Likewise.
+
+2004-02-16 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
+ Fix parsing of the remaining sign characters.
+ * 22_locale/money_get/get/char/2.cc: Tweak: now, correctly,
+ the input is scanned 'til eof.
+ * 22_locale/money_get/get/char/4.cc: Likewise.
+ * 22_locale/money_get/get/wchar_t/2.cc: Likewise.
+ * 22_locale/money_get/get/wchar_t/4.cc: Likewise.
+ * 22_locale/money_get/get/char/8.cc: Tweak: override do_neg_format,
+ not do_pos_format: the former is the only one that matters during
+ input.
+ * 22_locale/money_get/get/wchar_t/8.cc: Likewise.
+
+ * 22_locale/money_get/get/char/6.cc: Minor tweak.
+ * 22_locale/money_get/get/wchar_t/6.cc: Likewise.
+
+2004-02-15 David Asher <david.asher@cavium.com>
+
+ PR libstdc++/11352
+ * include/bits/locale_facets.tcc (__pad<>::_S_pad): Don't
+ access __olds beyond __oldlen.
+
+2004-02-14 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Make
+ sure the exception is actually thrown.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+2004-02-14 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13858
+ * include/bits/fstream.tcc (basic_filebuf<>::_M_convert_to_external):
+ In case of conversion errors, throw ios_failure; simplify.
+ * testsuite/27_io/basic_filebuf/overflow/char/13858.cc: New.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Tweak,
+ previously we didn't throw in case of conversion errors, instead
+ just returned eof().
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Ditto.
+
+ * include/bits/fstream.tcc (basic_filebuf<>::overflow):
+ Trivial simplification of a conditional.
+
+2004-02-11 Paolo Carlini <pcarlini@suse.de>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/14078
+ * include/std/std_istream.h (operator>>(__istream_type& (*)
+ (__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)),
+ operator>>(ios_base& (*)(ios_base&))): Declare inline.
+ * include/std/std_ostream.h (operator<<(__ostream_type& (*)
+ (__ostream_type&)), operator<<(__ios_type& (*)(__ios_type&)),
+ operator<<(ios_base& (*) (ios_base&))): Likewise.
+ * testsuite/performance/fmtflags_manipulators.cc: New.
+
+2004-02-10 Loren J. Rittle <ljrittle@acm.org>
+
+ PR libstdc++/14098
+ * config/linker-map.gnu: Add typeinfo and typeinfo name for
+ __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >.
+
+ PR libstdc++/14097
+ * config/linker-map.gnu: Add typeinfo and typeinfo name for
+ __gnu_cxx::stdio_filebuf<char, std::char_traits<char> >.
+
+ * include/ext/pool_allocator.h: Include c++config.h.
+ * include/ext/mt_allocator.h: Include c++config.h.
+
+ * testsuite/ext/stdio_filebuf/char/10063-2.cc: Treat unbuffered.
+ * testsuite/ext/stdio_filebuf/char/10063-3.cc: New test. Like -2 but
+ use __gnu_cxx::stdio_sync_filebuf<char> instead; allow buffered stream.
+
+ * testsuite/27_io/ios_base/storage/11584.cc: Correct new and
+ delete declarations, add include and test variable.
+
+2004-02-10 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/14071
+ * src/locale_init.cc (locale::global(const locale&)): Use
+ locale::name() in order to decide whether calling setlocale.
+ * testsuite/22_locale/locale/global_locale_objects/14071.cc: New.
+
+ * include/bits/locale_classes.h (locale::_Impl::_M_check_same_name()):
+ Avoid computing &= unnecessarily.
+
+2004-02-09 James E Wilson <wilson@specifixinc.com>
+
+ PR libstdc++/5625
+ * libsuspc++/eh_personality.cc (PERSONALITY_FUNCTION): Use
+ __builtin_extend_pointer.
+
+2004-02-09 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/14072
+ * include/bits/basic_ios.tcc (basic_ios<>::_M_cache_locale):
+ Don't leave dangling pointers.
+ * testsuite/27_io/basic_ios/imbue/14072.cc: New.
+ * testsuite/22_locale/numpunct/members/pod/2.cc: Tweak, the num_put
+ facet is needed in the final test.
+
+2004-02-09 Bernardo Innocenti <bernie@develer.com>
+
+ * crossconfig.m4: Don't enable _GLIBCXX_USE_LFS on *-uclinux*.
+ * configure: Regenerate.
+
+2004-02-08 Richard Henderson <rth@redhat.com>
+
+ PR libstdc++/14026
+ * libsupc++/eh_catch.cc (__cxa_begin_catch): Don't adjust
+ uncaughtExceptions during nested catch rethrow.
+ * testsuite/18_support/14026.cc: New.
+
+2004-02-05 Geoffrey Keating <geoffk@apple.com>
+
+ PR 12179
+ * .cvsignore: New.
+ * acinclude.m4 (GLIBCXX_EXPORT_INSTALL_INFO): Use 'gcc', not
+ 'gcc-lib'. Add comment about poorly-named variables.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2004-02-06 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale/facets.tcc (money_get::do_get(string_type&)):
+ Minor tweak to a comment.
+
+2004-02-06 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
+ Thousands-sep are always optional; thousands-sep are not allowed
+ after the decimal_point.
+ * testsuite/22_locale/money_get/get/char/12.cc: New.
+ * testsuite/22_locale/money_get/get/char/13.cc: New.
+ * testsuite/22_locale/money_get/get/wchar_t/12.cc: New.
+ * testsuite/22_locale/money_get/get/wchar_t/13.cc: New.
+
+ * testsuite/22_locale/money_get/get/char/1.cc: Clean-up.
+ * testsuite/22_locale/money_get/get/char/2.cc: Likewise.
+ * testsuite/22_locale/money_get/get/char/3.cc: Likewise.
+ * testsuite/22_locale/money_get/get/char/4.cc: Likewise.
+ * testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+ * testsuite/22_locale/money_get/get/wchar_t/2.cc: Likewise.
+ * testsuite/22_locale/money_get/get/wchar_t/3.cc: Likewise.
+ * testsuite/22_locale/money_get/get/wchar_t/4.cc: Likewise.
+
+ * testsuite/22_locale/money_get/get/char/9.cc: Fix citation from
+ the standard.
+ * testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.
+
+2004-02-06 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/open/char/9507.cc:
+ Adjust timings.
+
+2004-02-05 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/os/irix/irix6.5/os_defines.h (_GLIBCXX_FIONREAD_TAKES_OFF_T):
+ Define.
+ * config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc): Use
+ it to decide whether FIONREAD should take an off_t or int argument.
+
+2004-02-04 Benjamin Kosnik <bkoz@redhat.com>
+ Zack Weinberg <zack@codesourcery.com>
+
+ * config/io/basic_file_stdio.cc (__gnu_internal::fopen_mode):
+ New function.
+ (__basic_file<char>::sys_open, __basic_file<char>::open): Use it.
+ (__basic_file<char>::_M_open_mode): Delete.
+ * config/io/basic_file_stdio.cc: Delete declaration of _M_open_mode.
+
+ * testsuite/27_io/basic_filebuf/close/char/9964.cc
+ * testsuite/27_io/basic_filebuf/open/char/9507.cc:
+ Correct flags to filebuf::open calls.
+
+2004-02-04 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/21_strings/basic_string/cons/char/6.cc: New.
+ * testsuite/21_strings/basic_string/cons/wchar_t/6.cc: New.
+ * testsuite/performance/string_cons_input_iterator.cc: New.
+
+ * include/bits/basic_string.h (_Rep::operator[]): Remove, unused.
+
+ * include/bits/basic_string.tcc (_S_construct(_InIterator,
+ _InIterator, const _Alloc&, input_iterator_tag)): Simplify
+ the double loop, streamline.
+
+ * include/bits/basic_string.h (_S_create(size_t,
+ const _Alloc&): Change signature to take two size_type
+ arguments.
+ * include/bits/basic_string.tcc (_S_construct(_InIterator,
+ _InIterator, const _Alloc&, input_iterator_tag)): Update
+ call, tweak a bit.
+ (_S_construct(_InIterator, _InIterator, const _Alloc&,
+ forward_iterator_tag)): Likewise.
+ (_S_construct(size_type, _CharT, const _Alloc&)): Likewise.
+ (_M_mutate(size_type, size_type, size_type)): Don't
+ implement the exponential growth policy, demand it to
+ _S_create, update call and simplify.
+ (_M_clone(const _Alloc&, size_type)): Likewise.
+ (_S_create(size_type, size_type, const _Alloc&)): Implement
+ the growth policy, simplify otherwise.
+
+ * include/bits/basic_string.h (c_str()): Simplify, due to
+ 21.3.4 the internal representation is always kept null-terminated;
+ consistently fix comments.
+
+ * include/bits/basic_string.tcc (_S_construct(size_type,
+ _CharT, const _Alloc&)): Remove redundant try/catch.
+ (_M_mutate(size_type, size_type, size_type)): Ditto.
+ (_M_clone(const _Alloc&, size_type)): Ditto.
+
+2004-02-02 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/gslice.h, include/bits/gslice_array.h,
+ include/bits/indirect_array.h, include/bits/mask_array.h,
+ include/bits/slice_array.h, include/bits/stl_numeric.h,
+ include/std/std_valarray.h: Update copyright years.
+
+2004-02-02 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/gslice.h (gslice): Document.
+ * include/bits/gslice_array.h (gslice_array): Document.
+ * include/bits/indirect_array (indirect_array): Document.
+ * include/bits/mask_array (mask_array): Document.
+ * include/bits/slice_array.h (slice,slice_array): Document.
+ * include/bits/stl_numeric.h (accumulate, inner_product, partial_sum,
+ adjacent_difference): Document
+ * include/std/std_valarray.h (valarray): Document.
+
+2004-02-02 Eric Christopher <echristo@redhat.com>
+ Zack Weinberg <zack@codesourcery.com>
+
+ * testsuite/22_locale/collate/compare/wchar_t/2.cc: Remove xfail. Use
+ -finput-charset.
+ * testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc: Ditto.
+ * testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc: Ditto
+ * testsuite/22_locale/collate/hash/wchar_t/2.cc: Ditto.
+ * testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc: Ditto.
+ * testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc: Ditto.
+ * testsuite/22_locale/collate/transform/wchar_t/2.cc: Ditto.
+ * testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc: Ditto.
+ * testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+ Ditto.
+
+2004-02-02 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/vector.tcc (vector::_M_insert_aux(iterator)):
+ Remove, unused.
+
+2004-02-02 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13976
+ * include/ext/malloc_allocator.h (malloc_allocator::allocate,
+ deallocate): Make the second parameter unnamed, to void unused
+ parameter warnings.
+ * include/ext/mt_allocator.h (__mt_alloc::allocate): Ditto.
+ * include/ext/new_allocator.h (new_allocator::allocate,
+ deallocate): Ditto.
+
+2004-01-27 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/generic/c_locale.cc: Fix throw messages
+ to use the __N marker.
+ * config/locale/gnu/c_locale.cc: Likewise.
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h:
+ Likewise.
+ * docs/html/17_intro/C++STYLE: Likewise.
+ * include/bits/basic_ios.tcc: Likewise.
+ * include/bits/basic_string.tcc: Likewise.
+ * include/bits/fstream.tcc: Likewise.
+ * include/bits/vector.tcc: Likewise.
+ * include/ext/ropeimpl.h: Likewise.
+ * include/std/std_bitset.h: Likewise.
+ * src/ios.cc: Likewise.
+ * src/locale.cc: Likewise.
+ * src/localename.cc: Likewise.
+
+2003-01-27 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/codecvt.h, include/bits/locale_facets.h,
+ include/bits/postypes.h, include/bits/stl_bvector.h,
+ include/bits/stl_multiset.h, include/bits/stl_set.h,
+ include/bits/stream_iterator.h, include/bits/streambuf_iterator.h,
+ include/std/std_complex.h: Document.
+
+2004-01-27 Jerry Quinn <jlquinn@optonline.net>
+
+ PR libstdc++/11584
+ * include/bits/ios_base.h (ios_base::_M_grow_words): Add
+ iword/pword selector.
+ (ios_base::iword, ios_base::pword): Use it.
+ * src/ios.cc (ios_base::_M_grow_words): Clear _M_word_zero
+ iword or pword member on alloc failure.
+ * testsuite/27_io/ios_base/storage/11584.cc: New test.
+
+2004-01-27 Ulrich Weigand <uweigand@de.ibm.com>
+ PJ Darcy <darcypj@us.ibm.com>
+
+ * configure.host: Add support for *-tpf.
+ * crossconfig.m4: Likewise.
+ * configure: Regenerate.
+ * config/os/tpf: New directory.
+ * config/os/tpf/os_defines.h: New file.
+ * config/os/tpf/ctype_base.h: Likewise.
+ * config/os/tpf/ctype_inline.h: Likewise.
+ * config/os/tpf/ctype_noninline.h: Likewise.
+
+2004-01-27 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13884
+ * include/bits/sstream.tcc: Guard use of extern template.
+
+2004-01-26 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.h (replace(iterator, iterator,
+ const basic_string&)): Remove _GLIBCXX_DEBUG_PEDASSERT.
+ (replace(iterator, iterator, const _CharT*)): Ditto.
+ (replace(iterator, iterator, const _CharT*, size_type)):
+ Add missing _GLIBCXX_DEBUG_PEDASSERT.
+
+2004-01-26 Andreas Schwab <schwab@suse.de>
+
+ * config/locale/gnu/monetary_members.cc: Restore locale before
+ rethrowing exception.
+
+2004-01-25 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/performance/string_append.cc: Increase number
+ of iterations.
+
+2004-01-23 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13838
+ * include/debug/bitset (operator|=): Fix typo.
+ * testsuite/23_containers/bitset/operations/13838.cc: New.
+
+2004-01-23 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13831
+ * include/bits/fstream.tcc (underflow): Remove unused
+ variable.
+ * include/bits/streambuf_iterator.h (equal): Ditto.
+ * include/bits/locale_facets.h (_M_convert_from_char): Ditto.
+
+2004-01-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ PR c/13814
+ * config/linker-map.gnu (nan): Delete.
+ * libmath/mathconf.h (NAN, nan): Delete.
+ * linkage.m4 (nan): Don't check for it.
+ * libmath/nan.c: Delete file.
+
+ * config.h.in, configure: Regenerate.
+
+2004-01-22 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc
+ (money_put::do_put(..., long double)): Use the basic_string
+ constructor for char arrays, not that for C-strings, to pass
+ __digits to do_put(..., const string_type&): __ws isn't
+ null-terminated.
+
+2004-01-18 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.tcc (_M_clone): Null-terminate.
+ * testsuite/21_strings/basic_string/element_access/char/4.cc: New.
+ * testsuite/21_strings/basic_string/element_access/wchar_t/4.cc:
+ Ditto.
+
2004-01-16 Danny Smith <dannysmith@users.sourceforge.net>
* testsuite/testsuite_hooks.cc (try_mkfifo): Avoid calling
@@ -19,15 +551,15 @@
... here, change signature to take a const char* and a size_t
for the grouping; not a template anymore.
(__add_grouping, num_put::_M_group_int, num_put::_M_group_float):
- Likewise change signature and tweak consistently.
+ Likewise change signature and tweak consistently.
(num_get::_M_extract_float, num_get::_M_extract_int,
num_put::_M_insert_int, num_put::_M_insert_float,
money_get::do_get(string_type&), money_get::do_put(string_type)):
- Update callers.
+ Update callers.
* config/locale/generic/numeric_members.cc
- (numpunct<>::_M_initialize_numpunct): Assign the new member.
+ (numpunct<>::_M_initialize_numpunct): Assign the new member.
* config/locale/gnu/numeric_members.cc
- (numpunct<>::_M_initialize_numpunct): Likewise.
+ (numpunct<>::_M_initialize_numpunct): Likewise.
* src/locale-inst.cc (__add_grouping): Tweak signature.
(__verify_grouping): Don't instantiate, not a template anymore.
@@ -42,13 +574,13 @@
* include/ext/mt_allocator.h: Fixups.
* testsuite/performance/allocator.cc: Enable __mt_alloc tests.
* testsuite/performance/allocator_thread.cc: Same.
-
+
2004-01-13 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/performance/ifstream_extract_float.cc: Add higher
precision tests.
* testsuite/performance/ofstream_insert_float.cc: Same.
-
+
2004-01-13 Paolo Carlini <pcarlini@suse.de>
* src/locale-misc-inst.cc (__convert_from_v(long),
@@ -174,7 +706,7 @@
* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Ditto.
* testsuite/27_io/objects/wchar_t/13582-1_xin.cc: Ditto.
* testsuite/27_io/objects/wchar_t/13582-1_xin.in: Ditto.
-
+
2004-01-10 Paolo Carlini <pcarlini@suse.de>
* docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
@@ -204,35 +736,35 @@
* config.h.in: Regenerate.
* aclocal.m4: Same.
* configure: Same.
-
+
2004-01-07 Gawain Bolton <gp.bolton@computer.org>
* include/bits/stl_list.h:
* include/bits/list.tc:
* src/list.cc:
- Performance enhancements for destructor, push_front(),
- push_back(), pop_front(), pop_back(), sort()
- Eliminated static_casts where possible.
- Moved code out of header files into new src/list.cc
- implementation file for library where possible.
- Remove inheritance from iterator class and create separate
- classes for non-constant and constant iterators.
+ Performance enhancements for destructor, push_front(),
+ push_back(), pop_front(), pop_back(), sort()
+ Eliminated static_casts where possible.
+ Moved code out of header files into new src/list.cc
+ implementation file for library where possible.
+ Remove inheritance from iterator class and create separate
+ classes for non-constant and constant iterators.
* include/bits/stl_tree.h (_Rb_tree class):
- * src/tree.cc:
- Only erase contents in destructor.
- Eliminate unnecessary initialization in assignment operator.
- Optimize for the nominal case by not checking whether
- container is empty in clear().
- Re-order test in _M_insert() to improve performance.
- Move initialization of new node's left & right pointers to
- src/tree.cc to where new node's colour is initialized
- and to reduce the amount of inline code.
- Use _M_leftmost() and _M_end() to improve readability where
- appropriate.
- Create separate classes for non-constant and constant
- iterators to clarify code, avoid extra template parameters and
- casting away constness.
-
+ * src/tree.cc:
+ Only erase contents in destructor.
+ Eliminate unnecessary initialization in assignment operator.
+ Optimize for the nominal case by not checking whether
+ container is empty in clear().
+ Re-order test in _M_insert() to improve performance.
+ Move initialization of new node's left & right pointers to
+ src/tree.cc to where new node's colour is initialized
+ and to reduce the amount of inline code.
+ Use _M_leftmost() and _M_end() to improve readability where
+ appropriate.
+ Create separate classes for non-constant and constant
+ iterators to clarify code, avoid extra template parameters and
+ casting away constness.
+
2004-01-07 Benjamin Kosnik <bkoz@redhat.com>
* src/Makefile.am (sources): Add list.cc, tree.cc.
@@ -244,7 +776,7 @@
* testsuite/23_containers/set/operators/1_neg.cc: Add excess errors.
* bits/stl_vector.h: Column wrap comments.
-
+
2004-01-07 Loren J. Rittle <ljrittle@acm.org>
(re-open) PR libstdc++/12658
@@ -286,7 +818,7 @@
redundant #include.
2004-01-06 Benjamin Kosnik <bkoz@redhat.com>
- Stefan Olsson <stefan@snon.net>
+ Stefan Olsson <stefan@snon.net>
* scripts/check_performance: Use -pthread.
* testsuite/performance/allocator.cc: Tweaks, add list.
@@ -392,8623 +924,3 @@
Dimension _M_atoms_out and _M_atoms_in one position smaller.
(__numpunct_cache<>::_M_cache): Don't zero terminate _M_atoms_out
and _M_atoms_in.
-
-2003-12-31 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_int,
- num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
- _first_ look for thousands_sep, then for decimal_point and
- finally for digits.
- (num_get::_M_extract_float): After the decimal_point or
- 'e'/'E', decimal_point and thousands_sep just break out the
- parsing loop.
- * testsuite/22_locale/num_get/get/char/11.cc: Add tests.
- * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
-
-2003-12-30 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/13369
- * include/bits/locale_facets.tcc (__verify_grouping):
- Fix to deal properly with __grouping_tmp.size() >
- __grouping.size().
- * testsuite/22_locale/num_get/get/char/13.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/13.cc: Ditto.
-
-2003-12-29 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facets.h (ctype.narrow,widen): Add cast.
-
-2003-12-29 Paolo Carlini <pcarlini@suse.de>
-
- * acinclude.m4 (GLIBCXX_CHECK_LFS): Add -fno-exceptions
- to CXXFLAGS.
- * aclocal.m4: Regenerate.
- * configure: Likewise.
-
-2003-12-29 Mark Mitchell <mark@codesourcery.com>
-
- * acconfig.h: Add _GLIBCXX_USE_C99_MATH.
- * acinclude.m4 (GLIBCXX_ENABLE_C99): Define GLIBCXX_USE_C99_MATH.
- * configure.ac: Define HAVE_S_ISREG and HAVE_S_IFREG when
- targeting newlib.
- * aclocal.m4: Regenerated.
- * config.h.in: Likewise.
- * configure: Likewise.
- * Makefile.in: Likewise.
- * include/Makefile.in: Likewise.
- * libmath/Makefile.in: Likewise.
- * libsupc++/Makefile.in: Likewise.
- * testsuite/Makefile.in: Likewise.
- * src/Makefile.in: Likewise.
- * po/Makefile.in: Likewise.
- * include/c_std/std_cmath.h (_GLIBCXX_USE_C99): Replace with ...
- (_GLIBCXX_USE_C99_MATH): ... this.
-
- * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: XFAIL for
- arm-none-elf.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Likewise.
- * testsuite/27_io/basic_istream/readsome/char/6476-2.cc: Likewise.
- * testsuite/27_io/objects/char/9.cc: Likewise.
- * testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
-
-2003-12-28 Paolo Carlini <pcarlini@suse.de>
-
- * include/ext/pool_allocator.h (class __pool_alloc): Use
- operator new and operator delete.
-
-2003-12-24 Andrew Pinski <pinskia@physics.uc.edu>
-
- * config/cpu/i386/atomicity.h (__exchange_and_add): Fix output
- constraint.
-
- PR libstdc++/13480
- * config/cpu/i386/atomicity.h: Split up read-write memory operand.
-
-2003-12-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/new_allocator.h (new_allocator): Proper allocator class.
- (__new_alloc): Delete.
- * include/ext/malloc_allocator.h (malloc_allocator): Same.
- (__malloc_alloc): Delete.
- * include/ext/mt_allocator.h: Same, but weakly.
- * include/ext/debug_allocator.h: Convert to the new style.
- * include/ext/pool_allocator.h: Use global new and delete directly.
- * include/backward/alloc.h: Don't inject malloc_allocator, or
- debug_allocator.
- * testsuite/ext/allocators.cc: Minimal fixups for usage of new
- classes. Comment out tests with __pool_alloc for now.
- * testsuite/performance/allocator.cc: Same.
-
-2003-12-22 Matt Austern <austern@apple.com>
-
- * include/bits/stl_bvector.h (_Bvector_alloc_base): Eliminate.
- (_Bvector_base): Inherit directly from word allocator.
- * include/bits/stl_tree.h (_Rb_tree_alloc_base): Eliminate.
- (_Rb_tree_base): Eliminate.
- (_Rb_tree): Inherit directly from node allocator.
- * include/ext/slist (_Alist_alloc_base): Eliminate.
- (_Slist_base): Inherit direcly from node allocator.
-
-2003-12-22 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/18_support/numeric_limits.cc: Add _GLIBCXX_ASSERT to
- dg-options in testcases that use VERIFY.
- * testsuite/23_containers/vector/invalidation/1.cc: Same.
- * testsuite/23_containers/vector/invalidation/2.cc: Same.
- * testsuite/23_containers/vector/invalidation/3.cc: Same.
- * testsuite/23_containers/vector/invalidation/4.cc: Same.
- * testsuite/23_containers/vector/resize/1.cc: Same.
- * testsuite/26_numerics/complex_value.cc: Same.
- * testsuite/27_io/ios_base/storage/1.cc: Same.
- * testsuite/27_io/ios_base/storage/2.cc: Same.
- * testsuite/27_io/ios_base/storage/3.cc: Same.
- * testsuite/27_io/manipulators/standard/char/2.cc: Same.
- * testsuite/backward/11460.cc: Same.
- * testsuite/backward/strstream_members.cc: Same.
-
- * include/ext/hash_set (class hash_multiset): Fix typo.
-
-2003-12-22 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/objects/char/5.cc: Don't use stdc++.h.gch.
- * testsuite/27_io/objects/wchar_t/5.cc: Same.
- * docs/html/test.html: Add docs for constructing test files that
- don't use stdc++.h.gch.
- * scripts/testsuite_flags.in (PCHFLAGS): Move to --cxxpchflags.
- * testsuite/libstdc++-dg/normal.exp: Compute DEFAULT_CXXFLAGS
- differently.
-
- * include/bits/ios_base.h (ios_base::Init::_S_initialized): Remove.
- * src/ios_init.cc: Same.
- * config/linker-map.gnu: Same.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Adjust line numbers.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
-
-2003-12-22 Andrew Pinski <pinskia@physics.uc.edu>
-
- PR libstdc++/13462
- * include/bits/stl_multiset.h (__gnu_norm::multiset): Define pointer
- as allocator's pointer, likewise for reference, const_pointer, and
- const_reference.
- * include/bits/stl_set.h (__gnu_norm::set): Likewise.
- * include/ext/hash_set (__gnu_ext::hash_set): Likewise.
- (__gnu_ext::hash_multiset): Likewise.
-
-2003-12-22 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_int,
- num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
- first look for decimal_point and thousands_sep, when parsing
- sign, leading zeros (and 0, Ox, 0X for integer types) too.
- * testsuite/22_locale/num_get/get/char/12.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
-
- * testsuite/22_locale/num_get/get/char/11.cc: Add a comment.
- * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
-
-2003-12-20 Jason Merrill <jason@redhat.com>
-
- * config/cpu/powerpc/atomicity.h: Fix oversight in previous
- change.
-
-2003-12-20 Jerry Quinn <jlquinn@optonline.net>
-
- * docs/doxygen/TODO: Update.
- * include/bits/locale_classes.h (locale, facet, id): Document.
- * include/bits/locale_facets.tcc (has_facet, use_facet): Document.
-
-2003-12-19 Jason Merrill <jason@redhat.com>
-
- * config/cpu/cris/atomicity.h: Remove memory clobbers.
- * config/cpu/mips/atomicity.h: Likewise.
- * config/cpu/i486/atomicity.h: Remove memory clobbers.
- Split up read-write memory operand.
- * config/cpu/m68k/atomicity.h: Likewise.
- * config/cpu/powerpc/atomicity.h: Make memory I/O explicit.
- * config/cpu/s390/atomicity.h: Likewise.
- * config/cpu/sparc/atomicity.h: Likewise.
-
-2003-12-20 Carlo Wood <carlo@alinoe.com>
-
- * bits/demangle.h
- namespace __gnu_cxx::demangler
- (session<Allocator>::decode_encoding): Put the postfix
- of the return type of (member) functions after the function
- instead of after the return type.
-
-2003-12-19 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facet.h
- (__ctype_abstract_base,ctype<charT>,ctype<char>,ctype<wchar_t>):
- Document.
-
-2003-12-19 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_int,
- num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
- first look for decimal_point and thousands_sep.
- * testsuite/22_locale/num_get/get/char/11.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
-
-2003-12-19 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- When __found_sci becomes true stop eating thousands separators
- and the decimal radix separator.
- * testsuite/22_locale/num_get/get/char/9.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/9.cc: Likewise.
-
- * config/locale/generic/c_locale.cc (__convert_to_v): Don't
- check that *__sanity == '\0': parsing may stop earlier, still
- be successful.
- * config/locale/gnu/c_locale.cc: Likewise.
- * testsuite/22_locale/num_get/get/char/10.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
- Tweak in one place accordingly.
-
- * testsuite/22_locale/money_get/get/char/1.cc: Fix typo.
- * testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
-
-2003-12-18 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/stl_list.h: Formatting tweaks.
- * include/bits/list.tcc: Same.
-
-2003-12-18 Matt Austern <austern@apple.com>
-
- * include/bits/demangle.h: Fix allocator type correctness,
- i.e. make sure that when we instantiate a container with a value
- type and an allocator, the allocator's value type matches the
- container's.
- * include/bits/stl_deque.h (_Deque_alloc_base): Eliminate.
- (_Deque_base): inherit directly from the deque's allocator. Use
- rebinding instead of _Alloc_traits. Pick up data members from
- _Deque_alloc_base.
- * include/bits/stl_list.h (_List_alloc_base): Eliminate.
- (_List_base): Inherit directly from the list's allocator. Use
- rebinding instead of _Alloc_traits. Pick up data members from
- _List_alloc_base.
- * include/bits/stl_vector.h (_Vector_alloc_base): Eliminate
- (_Vector_base): Inherit directly from the vector's allocator. Use
- rebinding instead of _Alloc_traits. Pick up data members from
- _Vector_alloc_base.
- * include/ext/hashtable.h: Fix allocator type correctness (the
- vector of buckets must be passed an allocator for objects of
- type _Node*). Use rebinding instead of _Alloc_traits.
-
-2003-12-17 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
- Use narrow to get from __format[__i] a char __c representing a
- formatting code, don't use it to compare *__beg to __format[__i].
- * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: New.
-
-2003-12-17 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/performance/container_benchmark.cc: Tweak outputs.
-
- * testsuite/performance/list_create_fill_sort.cc: Shrink a
- bit some outputs.
-
- * testsuite/testsuite_performance.h: Widen a few output fields.
-
- * testsuite/performance/ifstream_extract_int.cc: New.
-
-2003-12-16 Phil Edwards <phil@codesourcery.com>
-
- * configure.ac (AM_INIT_AUTOMAKE): Don't warn about GNU Make.
- * configure: Regenerated.
- * Makefile.am (check-%): New catch-all forwarding target.
- * Makefile.in: Regenerated.
-
-2003-12-16 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/performance/container_benchmark.cc: New, a
- benchmark developed by Bjarne Stroustrup and Alexander
- Stepanov and made available with no restrictions.
-
- * testsuite/testsuite_performance.h (report_header): New,
- useful to produce header lines in the reports.
-
-2003-12-16 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/21_strings/howto.html: Document shrink-to-fit reserve().
- * docs/html/faq/index.html: Reducing vector's capacity() to size().
- * docs/html/documentation.html, docs/html/faq/index.txt: Regenerate.
-
-2003-12-16 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/performance/narrow_widen_char.cc: Tweak the
- number of iterations for each test.
- * testsuite/performance/narrow_widen_wchar_t.cc: Add a
- missing clear_counters.
-
-2003-12-16 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/11723
- * include/bits/locale_facets.h: Add _M_bit and _M_wmask,
- used to speed up the computation of ctype::do_is.
- * config/locale/generic/ctype_members.cc
- (_M_initialize_ctype): Fill _M_bit and _M_wmask.
- (ctype::do_is): Use _M_bit and _M_wmask.
- * config/locale/gnu/ctype_members.cc: Likewise.
- * testsuite/performance/is_wchar_t.cc: New.
-
- * testsuite/performance/narrow_widen_wchar_t.cc: Tweak
- string literal (incorrect citation ;)
-
- * include/bits/locale_facets.h: Minor tweaks, const
- correctness, unsigned -> size_t.
-
-2003-12-16 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facets.h (widen, narrow): Uncomment the
- intended code.
-
-2003-12-15 Jerry Quinn <jlquinn@optonline.net>
-
- * config/os/aix/ctype_noninline.h,
- config/os/bsd/freebsd/ctype_noninline.h,
- config/os/bsd/netbsd/ctype_noninline.h,
- config/os/djgpp/ctype_noninline.h,
- config/os/generic/ctype_noninline.h,
- config/os/gnu-linux/ctype_noninline.h,
- config/os/hpux/ctype_noninline.h,
- config/os/irix/irix5.2/ctype_noninline.h,
- config/os/irix/irix6.5/ctype_noninline.h,
- config/os/mingw32/ctype_noninline.h,
- config/os/newlib/ctype_noninline.h,
- config/os/qnx/qnx6.1/ctype_noninline.h,
- config/os/solaris/solaris2.5/ctype_noninline.h,
- config/os/solaris/solaris2.6/ctype_noninline.h,
- config/os/solaris/solaris2.7/ctype_noninline.h,
- config/os/vxworks/ctype_noninline.h,
- config/os/windiss/ctype_noninline.h (ctype): Initialize
- _M_narrow, _M_widen.
- * include/bits/locale_facets.h (_M_widen, _M_widen_ok,
- _M_narrow, _M_narrow_ok): New.
- (widen, narrow): Use tables to bypass virtual functions.
- (_M_widen_init, _M_narrow_init): New.
-
-2003-12-15 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/ios_base.h (Init::_S_initialized): Change into
- declaration.
- * src/ios_init.cc (Init::_S_initialized): Add definition.
-
-2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/12658
- * include/Makefile.am (bits_headers): Add concurrence.h.
- * include/Makefile.in: Regenerated.
- * include/bits/concurrence.h: New.
- * src/locale_init.cc: Use it.
- (locale::locale): Lock critical regions.
- (locale::global): Same.
-
-2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/basic_string.h: Change _*_references to _*_refcount.
- * include/bits/locale_classes.h: Same.
- * src/locale.cc: Same.
- * src/locale_name.cc: Same.
- * src/locale_init.cc: Same.
-
-2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/12855
- * include/bits/ios_base.h (Init::_S_ios_base_init): Change to
- _S_refcount, make atomic.
- * src/ios.cc: Adjust definition.
- * src/ios_init.cc (ios_base::Init::Init): Use __exchange_and_add,
- and __atomic_add.
- (ios_base::Init::~Init): Same.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
-
-2003-12-15 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::do_get(bool&)):
- Fail as soon as the begins of both truename and falsename
- stop to match; always leave __beg one position beyond the
- last char successfully matched.
- * testsuite/22_locale/num_get/get/char/8.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/8.cc: Likewise.
-
-2003-12-15 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.h (_M_widen): Reserve space
- for all the possible widened chars.
- * config/locale/generic/ctype_members.cc (_M_initialize_ctype):
- Compute at construction time all the possible widened chars.
- (do_widen): Tweak, simplify.
- * config/locale/gnu/ctype_members.cc: Likewise.
- * testsuite/performance/narrow_widen_wchar_t.cc: Add tests
- for the array versions.
-
-2003-12-12 Paolo Carlini <pcarlini@suse.de>
- Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/13341
- * include/bits/locale_facets.h (ctype<wchar_t>): Declare
- _M_initialize_ctype() and _M_narrow_ok, _M_narrow and _M_widen.
- * src/ctype.cc (ctype<wchar_t>::ctype(size_t),
- ctype<wchar_t>::ctype(__c_locale, size_t)): Use
- _M_initialize_ctype to fill _M_narrow and _M_widen.
- (ctype_byname<wchar_t>::ctype_byname(const char*, size_t)):
- Likewise.
- * config/locale/generic/ctype_members.cc (do_narrow, do_widen)
- Use _M_narrow and _M_widen when possible, instead of calling
- wctob and btowc, respectively.
- (_M_initialize_ctype): Define, it fills at construction time
- _M_narrow and _M_widen.
- * config/locale/gnu/ctype_members.cc: Likewise.
- * testsuite/performance/narrow_widen_wchar_t.cc: New.
-
-2003-12-12 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/faq/index.txt: Regenerate after adding <link> tags.
-
-2003-12-11 Neil Ferguson <nferguso@eso.org>
- Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/basic_string.tcc (reserve): Allow shrink-to-fit.
- * testsuite/21_strings/basic_string/capacity/1.cc: Tweak.
- * testsuite/21_strings/basic_string/capacity/char/1.cc: Ditto.
- * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Ditto.
-
-2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/6243
- * testsuite/lib/libstdc++.exp (v3-init): Add
- original_ld_library_path, calculate ld_library path, set
- LD_LIBRARY_PATH to both. Based on libjava.exp.
-
-2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
- Alexandre Oliva <aoliva@redhat.com>
-
- PR libstdc++/11612
- * testsuite/Makefile.am (GLIBCXX_DIR): New.
- (GLIBGCC_DIR): New.
- (CXXLINK): Use both with -R so libtool links the correct libs.
-
-2003-12-10 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/13217
- * include/bits/fstream.tcc (underflow): Deal gracefully with
- read errors: throw ios_base::failure.
-
-2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/10063
- * config/io/basic_file_stdio.cc (__basic_file::sys_open): Sync.
- * testsuite/ext/stdio_filebuf/char/10063-1.cc: New.
- * testsuite/ext/stdio_filebuf/char/10063-2.cc: New.
-
-2003-12-10 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_put::do_put(void*)):
- Remove the try/catch, not necessary.
-
-2003-12-10 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/22_locale/locale/cons/12438.cc: Tweak memory
- limit and iterations to avoid spurious failures on some
- 64 bit machines.
-
-2003-12-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/linker-map.gnu: Remove private ios_base members from
- export list.
-
- * config/cpu/alpha/atomicity.h: Consistently format.
- * config/cpu/cris/atomicity.h: Same.
- * config/cpu/generic/atomicity.h: Same.
- * config/cpu/hppa/atomicity.h: Same.
- * config/cpu/i386/atomicity.h: Same.
- * config/cpu/i486/atomicity.h: Same.
- * config/cpu/ia64/atomicity.h: Same.
- * config/cpu/m68k/atomicity.h: Same.
- * config/cpu/mips/atomicity.h: Same.
- * config/cpu/powerpc/atomicity.h: Same.
- * config/cpu/s390/atomicity.h: Same.
- * config/cpu/sparc/atomicity.h: Same.
-
-2003-12-09 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/13296
- * acinclude.m4 (GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS): Remove.
- * aclocal.m4: Regenerate.
- * configure.ac: Remove call to GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS.
- * conigure: Regenerate.
- * src/Makefile.am (libstdc___la_LDFLAGS): Remove LIBUNWIND_FLAGS.
- * src/Makefile.in: Regenerate.
- * docs/html/17_intro/configury.html: Modify.
-
-2003-12-09 Paolo Carlini <pcaelini@suse.de>
-
- * include/bits/demangle.h (struct implementation_details):
- Keep in comments the names of the unused parameters.
-
-2003-12-09 Paolo Carlini <pcaelini@suse.de>
-
- * include/bits/demangle.h (struct implementation_details):
- Fix unused parameters warning.
-
-2003-12-09 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_int):
- Slightly streamline the code dealing with overflows and the
- parsing of the sign.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/ext/algorithm, include/ext/debug_allocator.h,
- include/ext/enc_filebuf.h, include/ext/functional,
- include/ext/hash_fun.h, include/ext/hash_map, include/ext/hash_set,
- include/ext/hashtable.h, include/ext/iterator,
- include/ext/malloc_allocator.h, include/ext/memory,
- include/ext/mt_allocator.h, include/ext/numeric,
- include/ext/pod_char_traits.h, include/ext/pool_allocator.h,
- include/ext/rb_tree, include/ext/rope, include/ext/ropeimpl.h,
- include/ext/slist, include/ext/stdio_filebuf.h,
- include/ext/stdio_sync_filebuf.h: Remove trailing whitespace.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/debug/bitset, include/debug/debug.h, include/debug/deque,
- include/debug/formatter.h, include/debug/hash_map.h,
- include/debug/hash_multimap.h, include/debug/hash_multiset.h,
- include/debug/hash_set, include/debug/hash_set.h, include/debug/list,
- include/debug/map.h, include/debug/multimap.h,
- include/debug/multiset.h, include/debug/safe_base.h,
- include/debug/safe_iterator.h, include/debug/safe_iterator.tcc,
- include/debug/safe_sequence.h, include/debug/set.h,
- include/debug/string, include/debug/vector: Remove trailing whitespace.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/c_compatibility/iso646.h, include/c_compatibility/limits.h,
- include/c_compatibility/locale.h, include/c_compatibility/stdio.h,
- include/c_compatibility/string.h, include/c_compatibility/time.h,
- include/c_compatibility/wchar.h, include/c_compatibility/wctype.h:
- Remove trailing whitespace.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/c_std/cmath.tcc, include/c_std/std_cassert.h,
- include/c_std/std_cctype.h, include/c_std/std_cmath.h,
- include/c_std/std_cstddef.h, include/c_std/std_cstdio.h,
- include/c_std/std_cstdlib.h, include/c_std/std_cstring.h,
- include/c_std/std_cwchar.h, include/c_std/std_cwctype.h:
- Remove trailing whitespace.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/c/std_cctype.h, include/c/std_cmath.h,
- include/c/std_cstdlib.h include/c/std_cwchar.h,
- include/c/std_cwctype.h: Remove trailing whitespace.
-
-2003-12-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/backward/algo.h, include/backward/algobase.h,
- include/backward/alloc.h, include/backward/complex.h,
- include/backward/defalloc.h, include/backward/function.h,
- include/backward/iterator.h, include/backward/new.h,
- include/backward/ostream.h, include/backward/queue.h,
- include/backward/rope.h, include/backward/stream.h,
- include/backward/streambuf.h, include/backward/strstream,
- include/backward/tempbuf.h, include/backward/tree.h,
- include/backward/vector.h: Remove trailing whitespace.
-
-2003-12-08 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/generic/c_locale.cc (__convert_to_v(long&),
- __convert_to_v(unsigned long&), __convert_to_v(long long&),
- __convert_to_v(unsigned long long&): Remove.
- (__convert_to_v(float&), __convert_to_v(double&),
- __convert_to_v(long double&)): Remove last unused parameter.
- * config/locale/gnu/c_locale.cc: Likewise.
- * include/bits/locale_facets.h: Likewise.
- (num_get::_M_extract_int): Update declaration.
- (class __num_base): Tweak _S_ie and _S_iE according to the
- _S_atoms_in changes.
- * include/bits/locale_facets.tcc (num_get::_M_extract_int):
- Provide directly the final _ValueT, not a string: accumulate
- the result checking for overflow at each digit.
- (num_get::do_get(bool&), num_get::do_get(long&),
- num_get::do_get(unsigned short&), num_get::do_get(unsigned int&),
- num_get::do_get(unsigned long&), num_get::do_get(long long&),
- num_get::do_get(unsigned long long&), num_get::do_get(void*&)):
- Use the new _M_extract_int, simplify.
- * src/locale-inst.cc (num_get::_M_extract_int(long&),
- num_get::_M_extract_int(unsigned short&),
- num_get::_M_extract_int(unsigned int&),
- num_get::_M_extract_int(unsigned long&),
- num_get::_M_extract_int(long long&),
- num_get::_M_extract_int(unsigned long long&): Instantiate.
- * src/locale_facets.cc (__num_base::_S_atoms_in): Reorder
- the chars in the natural order: abcdefABCDEF.
-
-2003-12-08 David S. Miller <davem@redhat.com>
-
- PR libstdc++/12496
- * config/cpu/sparc/atomicity.h (__exchange_and_add, __atomic_add):
- Extend increment to _Atomic_word before giving to assembler.
-
-2003-12-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/ext/enc_filebuf/char/13189.cc: Guard for __enc_traits.
- * testsuite/ext/enc_filebuf/wchar_t/13189.cc: Same.
-
-2003-12-06 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/11691
- * include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf):
- Remove __del argument to file descriptor constructor.
- * config/io/basic_file_stdio.h (__basic_file::sys_open): Remove
- bool argument.
- * config/io/basic_file_stdio.cc: Same.
-
-2003-12-05 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/13189
- * include/ext/enc_filebuf.h: Fix.
- * include/bits/fstream.tcc: Tweak formatting.
- * include/bits/postypes.h: Same.
- * include/bits/sstream.tcc: Same.
- * include/bits/streambuf.tcc: Same.
- * testsuite/ext/stdio_filebuf.cc: Split.
- * testsuite/ext/stdio_filebuf_2.cc: Split.
- * testsuite/ext/stdio_sync_filebuf_char.cc: Split.
- * testsuite/ext/stdio_sync_filebuf_wchar_t.cc: Split.
- * testsuite/ext/enc_filebuf/char/13189.cc: New.
- * testsuite/ext/enc_filebuf/wchar_t/13189.cc: New.
- * testsuite/ext/stdio_filebuf/char/1.cc: New.
- * testsuite/ext/stdio_filebuf/char/2.cc: New.
- * testsuite/ext/stdio_sync_filebuf/char/1.cc: New.
- * testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: New.
- * testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: New.
- * testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: New.
- * testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: New.
- * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: New.
- * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: New.
- * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: New.
- * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: New.
- * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: New.
-
-2003-12-05 Carlo Wood <carlo@alinoe.com>
-
- PR libstdc++/13045
- * bits/demangle.h
- namespace __gnu_cxx::demangler
- (enum substitution_nt): Removed trailing comma.
- (implementation_details): Added.
- (session<Allocator>::M_implementation_details): Added.
- (session<Allocator>::session): Pass implementation_details.
- (session<Allocator>::decode_encoding): Same.
- (session<Allocator>::decode_real): Added.
- (_GLIBCXX_DEMANGLER_STYLE_VOID _GLIBCXX_DEMANGLER_STYLE_LITERAL
- _GLIBCXX_DEMANGLER_STYLE_LITERAL_INT
- _GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
- _GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Replaced with
- implementation_details equivalent.
- (session<Allocator>::decode_expression):
- Use M_implementation_details instead of macros. Add extra parentheses
- around 'larger than' operator in expressions in template arguments.
- (session<Allocator>::decode_bare_function_type): Idem.
- (session<Allocator>::decode_literal):
- Idem, and call decode_real for floating literals.
- (session<Allocator>::decode_type_with_postfix): Put the postfix
- of the return type of (member) functions after the function
- instead of after the return type. Also, put a space after the
- prefix of qualified function pointers: "int (* const<space>".
- * src/demangle.cc: include most dependent header file first.
- * testsuite/demangle/regression/cw-16.cc: Updated two
- and added three tests.
-
-2003-12-04 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/13284
- * include/bits/stl_algo.h (__random_number): Remove.
- (random_shuffle): Use rand, as permitted by DR 395.
- * include/ext/algorithm: Same.
- * linkage.m4 (GLIBCXX_CHECK_STDLIB_SUPPORT): Remove lrand48.
- * acconfig.h: Same.
- * crossconfig.m4: Remove HAVE_DRAND48, HAVE_LRAND48.
- * config.h.in: Regenerated.
- * configure: Same.
- * aclocal.m4: Same.
-
-2003-12-04 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12653
- * include/std/std_bitset.h (operator>>): Implement resolution
- of DR 303 [WP]: use widen('0') and widen('1').
- * docs/html/ext/howto.html: Add an entry for DR 303.
-
- * include/std/std_bitset.h (operator>>): Implement the common
- requirements of formatted input functions (27.6.1.2.1).
-
- * include/std/std_bitset.h (operator>>): Set the failbit when
- nothing was extracted and _Nb != 0.
- * testsuite/23_containers/bitset/input/1.cc: New.
-
-2003-12-03 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12791
- * include/bits/locale_facets.tcc (time_get::_M_extract_num):
- Rewrite, stop the parsing as soon as a digit cannot possibly
- lead to a final number within the bounds; otherwise, simplify,
- avoiding __ctype.is() and atoi().
- * testsuite/22_locale/time_get/get_date/char/12791.cc: New.
- * testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: New.
-
- * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
- Minor tweak: a 4-digit integer cannot be bigger than 9999.
-
- * testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Use
- type-correct wchar_t string literals.
- * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
- * testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
- * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
- * testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
-
-2003-12-02 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_get::do_get_year):
- Avoid using a basic_string and calling a full blown strtol
- (via __convert_to_v) for simple 2 or 4 digits, base 10,
- positive integers; simplify.
-
-2003-12-02 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/monetary_members.cc
- (money_base::_S_construct_pattern): For case 3: and 4:
- exchanging 'if (__precedes)' and 'if (__space)' allows
- to factor out a few more assignments.
-
-2003-12-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/basic_ios.h (basic_ios::setstate): Revert.
- * include/bits/istream.tcc: Only call setstate if __err != goodbit.
- * include/bits/ostream.tcc: Same.
- * testsuite/27_io/basic_ios/exceptions/char/2.cc: New.
-
- * testsuite/testsuite_io.h (__gnu_test::fail_streambuf): Make
- internal buffer non-static.
-
-2003-12-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/17_intro/C++STYLE: Add exception bits.
- * include/bits/fstream.tcc: Add location info to exception strings.
-
- * include/bits/stl_construct.h: Formatting tweaks.
-
-2003-12-01 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/10378
- * include/bits/allocator.h (allocator::construct): Implement
- resolution of DR 402 [Ready] (in Revision 28).
- * include/bits/allocator_traits.h (__allocator::construct):
- Likewise.
- * include/bits/stl_construct.h (_Construct): Likewise.
- * testsuite/20_util/allocator_members.cc: Move to...
- * testsuite/20_util/allocator/1.cc: ... here.
- * testsuite/20_util/allocator/10378.cc: New.
- * docs/html/ext/howto.html: Add an entry for DR 402.
-
-2003-11-30 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/codecvt_members.cc (codecvt::do_in,
- codecvt::do_length): More minor tweaks.
-
-2003-11-30 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/codecvt_members.cc (codecvt::do_in):
- Minor stylistic tweak.
-
-2003-11-30 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_put::do_put(..., bool)):
- Minor tweaks, consistent with the style used in other facets.
-
-2003-11-29 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/fstream.tcc (underflow): Minor tweaks in
- preparation for libstdc++/13217.
-
-2003-11-29 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc:
- Tweak for a few small problems (fix timings, use VERIFY..)
-
-2003-11-28 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: Remove.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: New,
- the original third testcase for libstdc++/13171 belong here.
-
-2003-11-28 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc:
- Remove extraneous wchar_t lines.
-
-2003-11-27 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/11544
- PR libstdc++/11603
- * include/bits/fstream.tcc (underflow): Throw ios_base::failure
- upon incomplete or invalid byte sequences in the file.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc: New.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc: New.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc: New.
-
-2003-11-27 Paolo Carlini <pcarlini@suse.de>
-
- * include/std/std_streambuf.h (__copy_streambufs): Remove
- the first, unused, basic_ios<> parameter.
- * src/streambuf-inst.cc: Likewise.
- * include/bits/streambuf.tcc: Likewise.
- * include/bits/istream.tcc (operator>>(__streambuf_type*)):
- Tweak accordingly the call.
- * include/bits/ostream.tcc (operator<<(__streambuf_type*)):
- Likewise.
-
- * include/bits/streambuf.tcc (__copy_streambufs): Remove
- redundant try/catch.
-
-2003-11-26 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/9371
- PR libstdc++/9546
- PR libstdc++/10093
- PR libstdc++/10095
- * include/bits/basic_ios.h (basic_ios::setstate): Elide if goodbit.
- (basic_ios::_M_setstate): Consolidate common error handling code.
- * include/bits/basic_ios.tcc: Tweak.
- * include/bits/fstream.tcc: Tweak.
- * include/bits/istream.tcc: Use _M_setstate for common exception
- handling. Move setstate calls after catch.
- (basic_istream::tellg): Check for exceptions thrown by streambuf
- virtual functions.
- (basic_istream::seekg): Same.
- * include/bits/ostream.tcc: Same, but for ostream.
- (basic_ostream::flush): Check for exceptions thrown by streambuf
- virtual functions.
- (basic_istream::tellp): Same.
- (basic_istream::seekp): Same.
- * include/bits/locale_facets.tcc: Tweak.
- * include/bits/streambuf.tcc: Tweak.
- (__copy_streambufs): Propagate exceptions.
- * testsuite/testsuite_io.h (fail_streambuf): New.
- (fail_num_get): New.
- (fail_num_put): New.
- (facet_error): New.
- (underflow_error): New.
- (overflow_error): New.
- (positioning_error): New.
- * testsuite/27_io/basic_istream/exceptions/char/9561.cc: Tweak.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/
- exceptions_badbit_throw.cc, exceptions_failbit.cc,
- exceptions_failbit_throw.cc: New.
- * testsuite/27_io/basic_istream/extractors_other/char/
- error_failbit.cc, exceptions_badbit_throw.cc,
- exceptions_failbit_throw.cc, exceptions_null.cc: New.
- * testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
- New.
- * testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc:
- New.
- * testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
- New.
- * testsuite/27_io/basic_ostream/inserters_arithmetic/char/
- exceptions_badbit_throw.cc, exceptions_failbit_throw.cc: New.
- * testsuite/27_io/basic_ostream/inserters_other/char/
- error_failbit.cc, exceptions_badbit_throw.cc,
- exceptions_failbit_throw.cc, exceptions_null.cc: New.
- * testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
- New.
- * testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
- New.
-
-2003-11-26 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/12297
- * include/bits/istream.tcc
- (basic_istream::sentry::sentry): Set failbit and eofbit when eof.
- * testsuite/27_io/basic_istream/sentry/char/12297.cc: New.
-
-2003-11-26 Paolo Carlini <pcarlini@suse.de>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/13171
- * include/bits/fstream.tcc (imbue): Relax the conditions under
- which the function succeeds: allow for two consecutive calls with
- the same name; state dependent encodings are ok even after open
- if at the beginning of the file; don't check seekoff return value
- (pipes, cin, cout, etc...)
- * testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak comment.
- * testsuite/27_io/basic_filebuf/imbue/char/3.cc: Likewise.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Tweak comment.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: Likewise.
-
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: More
- correctly use the UTF-8 locale appearing in the PR.
-
-2003-11-26 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.h
- (__numpunct_cache<>::_M_cache): Avoid zeroing _M_grouping,
- _M_truename and _M_falsename: the constructor always does
- it immediately before the _M_cache call.
-
-2003-11-25 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/codecvt_members.cc (codecvt::do_length):
- Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
- former is very fast, but stops if encounters a NUL.
- (codecvt::do_out): Tweaks.
- (codecvt::do_in): Tweaks, improve the code dealing with errors.
- * testsuite/performance/wchar_t_length.cc: New.
-
-2003-11-24 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/codecvt_members.cc (codecvt::do_in):
- Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
- former is very fast, but stops if encounters a NUL.
- (codecvt::do_out): Tweak.
- * testsuite/performance/wchar_t_in.cc: New.
-
-2003-11-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.h
- (__numpunct_cache<>::_M_cache): Set _M_allocated at the beginning
- in order to avoid memory leaks; simplify a bit.
-
-2003-11-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/streambuf_iterator.h (ostreambuf_iterator): Remove
- non-standard throw specs.
- * testsuite/24_iterators/istreambuf_iterator.cc: Split into...
- * testsuite/24_iterators/istreambuf_iterator/1.cc
- * testsuite/24_iterators/istreambuf_iterator/2.cc
- * testsuite/24_iterators/istreambuf_iterator/2627.cc
- * testsuite/24_iterators/ostreambuf_iterator.cc: Split into...
- * testsuite/24_iterators/ostreambuf_iterator/1.cc
- * testsuite/24_iterators/ostreambuf_iterator/2.cc
-
- * testsuite/24_iterators/reverse_iterator/1.cc: Just compile,
- don't link.
-
- * include/bits/allocator.h: Formatting tweak.
-
-2003-11-24 Paolo Carlini <pcarlini@suse.de>
-
- * src/locale_init.cc: Cosmetic reformatting.
-
-2003-11-23 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (__add_grouping):
- Cosmetic reformatting.
-
-2003-11-23 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (_M_extract_float,
- _M_extract_int): Remove a wrong comment and simplify
- the corresponding code using char_traits::find().
-
-2003-11-22 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/monetary_members.cc
- (money_base::_S_construct_pattern): Factor out two assignments.
-
-2003-11-22 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/istream.tcc (getline(basic_string<>&)):
- Fix error in comment of the previous commit.
-
-2003-11-22 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12593
- * include/bits/istream.tcc (operator>>(basic_string<>&),
- getline(basic_string<>&)): Implement resolution of DR 91 [WP];
- fix some minor issues with the exit conditions.
- * docs/html/ext/howto.html: Add an entry for DR 91.
-
-2003-11-21 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/monetary_members.cc
- (money_base::_S_construct_pattern): Factor out an assignment.
-
-2003-11-21 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12882 (partial)
- * acinclude.m4 (GLIBCXX_CHECK_LFS): Check fseeko64
- and ftello64 too.
- * include/ext/stdio_sync_filebuf.h (seekoff): Use fseeko64
- and ftello64 if available.
- * aclocal.m4: Regenerate.
- * configure: Ditto.
-
-2003-11-20 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/debug/formatter.h: Use _Tp as template argument.
- * src/debug.cc: Same, instantiate std::size_t.
-
-2003-11-20 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/13109
- * include/debug/formatter.h (_Error_formatter::_M_format_word): New.
- * src/debug.cc (__gnu_debug): Format.
- (_Error_formatter::_M_format_word): Define, use, instantiate.
-
-2003-11-20 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/11602
- * config/locale/gnu/codecvt_members.cc (codecvt::do_out):
- Rewrite, using both wcsnrtombs and wcrtomb in a loop: the
- former is very fast, but stops if encounters a NUL.
- * testsuite/performance/wchar_t_out.cc: New, from the PR.
-
-2003-11-19 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/gnu/codecvt_members.cc (do_out): If
- we can upper bound the total number of external chars
- to something smaller than __to_end - __to, avoid the
- temporary buffer, the memcopy and simplify the loop.
- * config/locale/generic/codecvt_members.cc (do_out):
- Likewise.
-
-2003-11-19 Andreas Tobler <a.tobler@schweiz.ch>
-
- * testsuite/lib/libstdc++.exp: Add DYLD_LIBRARY_PATH for darwin.
- * testsuite/libstdc++-dg/normal.exp: Add -multiply_defined suppress
- flag.
-
-2003-11-18 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/configopts.html, docs/html/debug.html,
- docs/html/documentation.html, docs/html/explanations.html,
- docs/html/install.html, docs/html/17_intro/contribute.html,
- docs/html/17_intro/howto.html, docs/html/17_intro/license.html,
- docs/html/18_support/howto.html, docs/html/19_diagnostics/howto.html,
- docs/html/20_util/howto.html, docs/html/21_strings/howto.html,
- docs/html/22_locale/codecvt.html, docs/html/22_locale/ctype.html,
- docs/html/22_locale/howto.html, docs/html/22_locale/locale.html,
- docs/html/22_locale/messages.html, docs/html/23_containers/howto.html,
- docs/html/24_iterators/howto.html, docs/html/25_algorithms/howto.html,
- docs/html/26_numerics/howto.html, docs/html/27_io/howto.html,
- docs/html/ext/howto.html, docs/html/ext/sgiexts.html: Add <link> tags.
-
-2003-11-18 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12868
- * include/bits/fstream.tcc (imbue): For encodings != -1 it's
- always ok to imbue a new locale, provided seekoff(0, cur, ...)
- doesn't fail, of course.
- (underflow): In order for the above to work, deal gracefully
- with _M_codecvt->in returning codecvt_base::error while
- (__ilen = __iend - this->eback()) > 0: it just means __ilen
- correctly converted internal characters before an error.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: New.
-
-2003-11-17 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc: Fix typo in comment.
-
-2003-11-17 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/22_locale/num_put/put/char/8.cc: New test,
- summarizing the discussion ensuing libstdc++/12988.
- * testsuite/22_locale/num_put/put/wchar_t/8.cc: Ditto.
-
-2003-11-15 Paolo Carlini <pcarlini@suse.de>
-
- * include/std/std_fstream.h: Tweak a comment.
-
-2003-11-15 Roger Sayle <roger@eyesopen.com>
-
- * include/c_std/std_cmath.h: Don't import C99's float transcendentals
- into the __gnu_cxx::__c99_binding namespace.
- (acos, asin, atan, atan2, ceil, cosh, exp, floor, fmod, frexp,
- ldexp, log, log10, modf, pow, sinh, tan, tanh): Implement using
- GCC's math builtins, i.e. __builtin_foo.
- * libmath/stubs.c (acosf, acosl, asinf, asinl, atanf, atanl,
- ceilf, ceill, floorf, floorl, fmodf, fmodl, frexpf, frexpl,
- ldexpf, ldexpl, modff, modfl): Provide stub implementations.
-
-2003-11-14 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/22_locale/locale/cons/12352.cc: Use
- __gnu_test::try_named_locale.
-
-2003-11-14 Paolo Carlini <pcarlini@suse.de>
-
- * docs/html/ext/howto.html: Add entries for DR 63, 75
- and 305; tweak entries for DR 60 and 328.
-
-2003-11-13 Douglas Gregor <gregod@cs.rpi.edu>
-
- * docs/html/debug.html: Users are allowed to specialize in
- namespace __gnu_debug, unlike in the Apple version of the debug
- mode. Clear up a confusing double-negative. Note that
- std::basic_string does provide extra debugging capabilities, but
- not safe iterators.
- * include/bits/basic_string.tcc: Make sure there's never an
- ambiguity when calling __is_null_pointer.
- * include/debug/deque: (deque::erase) Properly handle invalidation
- when erasing at the end of the deque.
- * include/debug/vector: (vector::swap): Swap _M_guaranteed_capacity.
- (vector::clear): Set the guaranteed capacity to 0.
- * testsuite/23_containers/deque/invalidation/4.cc: (test04): Test
- iterator invalidation when erasing at the end of the deque.
-
-2003-11-13 Paolo Carlini <pcarlini@suse.de>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/13007
- * include/bits/fstream.tcc (imbue): Don't touch the stored
- locale.
- * include/std/std_streambuf.h (imbue): According to the
- standard, base class version does nothing.
- (pubimbue): Store the locale.
- * testsuite/27_io/basic_filebuf/imbue/char/13007.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
- * testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc: New.
- * testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc: New.
- * testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc: New.
- * testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc: New.
-
-2003-11-13 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/12594
- * include/bits/ostream.tcc
- (basic_ostream::operator<<(basic_ostream& (*)(basic_ostream&)),
- basic_ostream::operator<<(basic_ios& (*)(basic_ios&)),
- basic_ostream::operator<<(ios_base& (*)(ios_base&))):
- Implement the resolution of DR 60 (TC): These are not formatted
- output functions so don't construct sentry objects and don't
- catch exceptions.
- (basic_ostream::put, basic_ostream::write): Implement the
- resolution of DR 63 (TC) by catching exceptions and setting
- badbit.
- (basic_ostream::flush): Implement the resolution of DR 60 (TC):
- This is not an unformatted output function so don't construct
- a sentry object.
- * testsuite/testsuite_io.h (sync_streambuf): Define.
- * testsuite/27_io/basic_ostream/flush/char/2.cc: New test.
- * testsuite/27_io/basic_ostream/inserters_other/char/5.cc: New test.
- * testsuite/27_io/basic_ostream/put/char/1.cc: New test.
- * testsuite/27_io/basic_ostream/write/char/1.cc: New test.
-
-2003-11-13 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1:
- Fix, closely following the testcase included in the PR.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: Ditto.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: Ditto.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: Ditto.
-
-2003-11-13 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/17_intro/configury.html: XHTML tweak.
-
-2003-11-13 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/debug_mode.html: XHTML fixes.
-
-2003-11-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/debug_mode.html: Update.
- * docs/html/17_intro/TODO: Update.
-
-2003-11-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config: Move using directive...
- * include/debug/formatter.h: ...here.
-
-2003-11-12 Carlo Wood <carlo@alinoe.com>
-
- PR libstdc++/12947
- * bits/demangle.h
- (_GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS): Added.
- (_GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Added.
- (session<Allocator>::next_peek() const): Added.
- (decode_non_negative_decimal_integer(string_type&)):
- Renamed from decode_decimal_integer(string_type&).
- (session<Allocator>::decode_nested_name):
- Decode <template_param> as well.
- (session<Allocator>::add_substitution):
- Handle <template-param> for <nested-name>'s.
- (enum xary_nt): Added.
- (struct entry_st): Added member `xary_nt type' instead of `bool unary'.
- (symbol_name_table_c): Updated for `entry_st::type' and additional
- operators (unary `operator+' and `sizeof(type)').
- (offset_table_c): Updated for new operators (causing a new hash map).
- (decode_operator_name): Match the updated hash map.
- (session<Allocator>::decode_expression):
- Support for `sizeof ([typename] type)' (st),
- dependent names (sr) and casting operator (cv). Handle
- `entry_st::type'. Handle _GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
- and _GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME.
- (session<Allocator>::decode_type_with_postfix):
- Support `extern "C"' function types (FY).
- * testsuite/demangle/regression/cw-16.cc: Added tests for the
- added functionality.
- * testsuite/demangle/regression/3111-2.cc: sizeof now has a space
- appended.
-
-2003-11-11 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12875
- * include/bits/fstream.tcc (setbuf): Don't do anything
- after open(), in particular don't discard data.
- (_M_allocate_internal_buffer): Tweak to not allocate memory
- in case the buffer is provided by the user via setbuf.
- * include/ext/stdio_filebuf.h: Tweak comment.
- * testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: New.
- * testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Likewise.
- * testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Tweak, now
- setbuf does nothing after open().
- * testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Likewise.
-
-2003-11-11 Doug Gregor <gregod@cs.rpi.edu>
-
- * docs/html/debug.html: Document libstdc++ debug mode.
- * docs/html/debug_mode.html: Document libstdc++ debug mode design.
- * docs/html/test.html: Document how to test under debug mode.
- * docs/html/17_intro/howto.html: Document debug-mode macros.
- * include/Makefile.am: Install debug-mode headers.
- * src/Makefile.am: Include debug.cc.
- * include/bits/basic_string.tcc:
- (basic_string::_S_construct): Fix NULL pointer check.
- (__is_null_pointer): New.
- Add precondition annotations.
- * include/bits/stream_iterator.h (istream_iterator,
- ostream_iterator): Added precondition annotations.
- * include/bits/streambuf_iterator.h (istreambuf_iterator): Ditto.
- * include/bits/stl_queue.h (queue, priority_queue): Ditto.
- * include/bits/stl_stack.h (stack): Ditto.
- * include/bits/basic_string.h (basic_string): Ditto.
- * include/bits/basic_string.tcc (basic_string): Ditto.
- * include/std/std_memory.h (auto_ptr): Ditto.
- * include/std/std_valarray.h (valarray): Ditto.
- * include/bits/stl_algo.h: Added algorithm precondition
- annotations.
- * include/bits/stl_algobase.h: Added algorithm precondition
- annotations.
- * include/bits/stl_numeric.h: Ditto.
- * include/ext/algorithm: Added algorithm precondition
- annotations.
- (__is_heap): Moved away from here.
- * include/bits/stl_heap.h: Added algorithm precondition
- annotations.
- (__is_heap): Moved to the top of this file.
- (__is_heap): Added iterator range overloads.
- * testsuite/20_util/auto_ptr_neg.cc: Fix line numbers to match up
- with changes in std_memory.h.
- * testsuite/23_containers/list/operators/4.cc: Don't verify
- performance guarantees when in debug mode.
- * testsuite/23_containers/bitset/invalidation/1.cc: New.
- * testsuite/23_containers/deque/invalidation/1.cc: New.
- * testsuite/23_containers/deque/invalidation/2.cc: New.
- * testsuite/23_containers/deque/invalidation/3.cc: New.
- * testsuite/23_containers/deque/invalidation/4.cc: New.
- * testsuite/23_containers/list/invalidation/1.cc: New.
- * testsuite/23_containers/list/invalidation/2.cc: New.
- * testsuite/23_containers/list/invalidation/3.cc: New.
- * testsuite/23_containers/list/invalidation/4.cc: New.
- * testsuite/23_containers/map/invalidation/1.cc: New.
- * testsuite/23_containers/map/invalidation/2.cc: New.
- * testsuite/23_containers/multimap/invalidation/1.cc: New.
- * testsuite/23_containers/multimap/invalidation/2.cc: New.
- * testsuite/23_containers/multiset/invalidation/1.cc: New.
- * testsuite/23_containers/multiset/invalidation/2.cc: New.
- * testsuite/23_containers/set/invalidation/1.cc: New.
- * testsuite/23_containers/set/invalidation/2.cc: New.
- * testsuite/23_containers/vector/invalidation/1.cc: New.
- * testsuite/23_containers/vector/invalidation/2.cc: New.
- * testsuite/23_containers/vector/invalidation/3.cc: New.
- * testsuite/23_containers/vector/invalidation/4.cc: New.
- * testsuite/25_algorithms/heap.cc: Don't verify
- performance guarantees when in debug mode.
- * include/debug/bitset: New.
- * include/debug/debug.h: New.
- * include/debug/deque: New.
- * include/debug/formatter.h: New.
- * include/debug/hash_map: New.
- * include/debug/hash_map.h: New.
- * include/debug/hash_multimap.h: New.
- * include/debug/hash_set: New.
- * include/debug/hash_set.h: New.
- * include/debug/hash_multiset.h: New.
- * include/debug/list: New.
- * include/debug/map: New.
- * include/debug/map.h: New.
- * include/debug/multimap.h: New.
- * include/debug/multiset.h: New.
- * include/debug/safe_base.h: New.
- * include/debug/safe_iterator.h: New.
- * include/debug/safe_iterator.tcc: New.
- * include/debug/safe_sequence.h: New.
- * include/debug/set: New.
- * include/debug/set.h: New.
- * include/debug/string: New.
- * include/debug/vector: New.
- * src/debug.cc: New.
- * config/linker-map.gnu: Add debug mode symbols.
-
-2003-11-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/string-inst.cc: Tweak namespaces.
- * src/misc-inst.cc: Same.
- * docs/html/debug.html: Edits.
- * config/link-map.gnu: Remove cruft.
-
- * include/bits/c++config: Add in namespace associations.
- * include/std/std_bitset.h: Adjust namespace to __gnu_norm,
- comment tweaks.
- * include/bits/deque.tcc: Same.
- * include/bits/list.tcc: Same.
- * include/bits/stl_bvector.h: Same.
- * include/bits/stl_deque.h: Same.
- * include/bits/stl_list.h: Same.
- * include/bits/stl_map.h: Same.
- * include/bits/stl_multimap.h: Same.
- * include/bits/stl_multiset.h: Same.
- * include/bits/stl_set.h: Same.
- * include/bits/stl_vector.h: Same.
- * include/bits/vector.tcc: Same.
-
- * include/std/std_algorithm.h: Remove markup comments.
- * include/std/std_functional.h: Same.
- * include/std/std_iterator.h: Same.
- * include/std/std_numeric.h: Same.
- * include/std/std_utility.h: Same.
- * include/bits/stl_queue.h: Formatting tweaks.
- * include/bits/stl_stack.h: Same.
- * include/std/std_deque.h: Include debugging version in debug mode.
- * include/std/std_list.h: Same.
- * include/std/std_map.h: Same.
- * include/std/std_set.h: Same.
- * include/std/std_vector.h: Same.
- * include/std/std_queue.h: Use deque, vector.
- * include/std/std_stack.h: Same.
-
-2003-11-09 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (_M_insert_int,
- _M_insert_float): Move a couple of vars inside an if block.
-
-2003-11-09 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12971
- * include/bits/locale_facets.tcc
- (money_put::do_put(..., long double)): Fix conversion
- specification as per DR 328 [WP].
- * testsuite/22_locale/money_put/put/char/12971.cc: Add.
- * testsuite/22_locale/money_put/put/wchar_t/12971.cc: Ditto.
- * docs/html/ext/howto.html: Add entry for DR 328.
-
-2003-11-08 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12967
- * include/bits/list.tcc (merge): Implement resolution of
- DR 300 [WP].
- * docs/html/ext/howto.html: Add entry for DR 300; tweak entry
- for DR 231.
-
- * docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
- Import R27.
-
-2003-11-07 Jonathan Wakely <redi@gcc.gnu.org>
-
- * libsupc++/vec.cc: Conform to C++STYLE.
-
-2003-11-07 Carlo Wood <carlo@alinoe.com>
-
- PR libstdc++/12736
- * bits/demangle.h (qualifier_list<Allocator>::decode_KVrA): Added.
- (qualifier_list<Allocator>::decode_qualifiers): Collect concatenated
- K, V, r and A qualifiers before processing them as a group.
- * testsuite/demangle/abi_text/01.cc: Reordered CV-qualifiers.
- * testsuite/demangle/regression/cw-16.cc: New.
-
-2003-11-07 Robert Millan <robertmh@gnu.org>
-
- * configure.host: Add kfreebsd*-gnu and knetbsd*-gnu.
- * crossconfig.m4: Likewise.
- * configure: Regenerate.
-
-2003-11-07 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/demangle.h
- (qualifier_list<Allocator>::decode_qualifiers(string_type&,
- string_type&, bool member_function_pointer_qualifiers):
- Always separate the '[' of an array type with a space from
- what is left of it, except when that is the closing bracket
- of another array dimension.
-
-2003-11-07 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/demangle.h
- (qualifier_list<Allocator>::decode_qualifiers(string_type&,
- string_type&, bool) const): Made const.
- (qualifier_list<Allocator>::M_printing_suppressed): Added mutable.
- (_GLIBCXX_DEMANGLER_DOUT_ENTERING3, _GLIBCXX_DEMANGLER_RETURN3,
- std::ostream& operator<<(std::ostream&, qualifier const&),
- std::ostream& operator<<(std::ostream&, qualifier_list const&),
- qualifier_list<Allocator>::decode_qualifiers(string_type&,
- string_type&, bool) const,
- session<Allocator>::decode_type_with_postfix(string_type&,
- string_type&, qualifier_list<Allocator>*))
- Added and/or changed debug-only hooks and code.
-
-2003-11-04 Jeffrey D. Oldham <oldham@codesourcery.com>
-
- * libsupc++/vec.cc (__cxa_vec_delete2): If given a NULL pointer,
- immediately return. This reflects a C++ ABI change 2003 Nov 03.
- (__cxa_vec_delete3): Likewise.
-
-2003-11-03 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/12790
- * include/bits/fstream.tcc: Delete _M_last_overflowed.
- (basic_filebuf::basic_filebuf): Initialize _M_state_last.
- (basic_filebuf::open, basic_filebuf::close): Assign
- _M_state_beg to _M_state_cur and _M_state_last.
- (basic_filebuf::close): Call _M_terminate_output to handle
- unshift and flushing.
- (basic_filebuf::underflow): Assign _M_state_last, throw
- exception instead of calling abort when codecvt::max_length()
- is bad.
- (basic_filebuf::seekoff): Use _M_state_last when calling
- codecvt::length(), pass correct state to _M_seek.
- (basic_filebuf::seekpos): Pass __pos.state() to _M_seek.
- (basic_filebuf::_M_seek): Add __state_type parameter,
- set _M_state_cur correctly, store the resulting state in
- the return value and use _M_terminate_output to handle
- flushing and unshift.
- (basic_filebuf::_M_terminate_output): Flush contents of
- output buffer, if any, then call codecvt::unshift as
- needed and output the result.
- (basic_filebuf::sync): Move here, don't modify _M_writing
- or _M_reading.
-
- * include/std/std_fstream.h
- (basic_filebuf::_M_state_last): Declare it.
- (basic_filebuf::_M_last_overflowed): Delete.
- (basic_filebuf::_M_seek): Add __state_type parameter.
- (basic_filebuf::sync): Declare only.
- (basic_filebuf::_M_output_unshift): Delete.
- (basic_filebuf::_M_terminate_output): Declare it.
-
- * testsuite/testsuite_character.h:
- Define character class and state class plus char_traits and
- codecvt specializations for same for testing support for
- stateful encodings.
-
- * testsuite/27_io/basic_filebuf/close/12790-1.cc,
- * testsuite/27_io/basic_filebuf/close/char/12790-1.cc,
- * testsuite/27_io/basic_filebuf/close/char/12790-2.cc,
- * testsuite/27_io/basic_filebuf/close/char/12790-3.cc,
- * testsuite/27_io/basic_filebuf/close/char/12790-4.cc,
- * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc,
- * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc,
- * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc,
- * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc,
- * testsuite/27_io/basic_filebuf/open/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekoff/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekoff/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekoff/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekoff/12790-4.cc,
- * testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc,
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc,
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc,
- * testsuite/27_io/basic_filebuf/seekpos/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekpos/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekpos/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc,
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc,
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc,
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc,
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc,
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc,
- * testsuite/27_io/basic_filebuf/sync/char/1.cc,
- * testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc:
- New tests.
-
- * testsuite/27_io/basic_filebuf/3.cc,
- * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc,
- * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc,
- * testsuite/27_io/basic_fstream/3.cc,
- * testsuite/27_io/basic_ifstream/3.cc,
- * testsuite/27_io/basic_ofstream/3.cc:
- Use streamoff as off_type and fpos<state_type> as pos_type.
-
- * testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc,
- * testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc:
- Check that sync does *not* set _M_writing to false.
-
-2003-11-03 Anthony Green <green@redhat.com>
-
- * libmath/stubs.c (sqrtf, sqrtl): Reorder so they appear before
- they're used.
-
-2003-11-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.h (time_get::_M_extract_name): Add
- ctype argument.
- * include/bits/locale_facets.tcc: Same, use it to allow
- capitalized names.
-
- * include/bits/fstream.tcc: Spacing tweak.
- * include/bits/istream.tcc: Same.
- * include/bits/ostream.tcc: Same.
-
-2003-10-30 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
- __mod is only assigned, never used its value, remove it.
-
-2003-10-29 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_get::do_get_year):
- Absolutely avoid dereferencing end iterators.
- (time_put::put): Minor clean up.
-
- * include/bits/locale_facets.tcc: Cosmetic reformattings.
-
-2003-10-29 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- Revert the last commit, is not correct, sorry.
-
-2003-10-29 Paolo Carlini <pcarlini@suse.de>
-
- * config/locale/generic/c_locale.cc: Add back <cmath> and
- <cstdlib>.
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- Clean up.
-
-2003-10-29 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_put::put): Absolutely
- avoid dereferencing end iterators; clean up.
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float,
- num_get::_M_extract_int): Minor tweak.
-
-2003-10-29 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc: Remove some unnecessary
- includes.
- * config/locale/generic/c_locale.cc: Include <cerrno> here.
- * config/locale/gnu/c_locale.cc: Likewise.
-
-2003-10-28 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc
- (money_get<>::do_get(..., string_type&)): Absolutely avoid
- dereferencing end iterators; general clean up.
-
-2003-10-28 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (time_get::_M_extract_num):
- Absolutely avoid dereferencing end iterators.
- (time_get::_M_extract_name): Likewise.
-
- * include/bits/locale_facets.tcc
- (time_get::_M_extract_via_format, case 'e'): Don't try to
- be smart wrt returning the right __beg in case of parse
- error, time_get::_M_extract_num must be fixed instead.
-
-2003-10-27 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12778
- * acinclude.m4 (GLIBCXX_CHECK_LFS): Use the C++ compiler.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-10-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/17_intro/TODO: Add links.
- * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
- Uncomment.
-
-2003-10-27 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12750
- * include/bits/locale_facets.tcc
- (time_get::_M_extract_via_format): Deal with code 'e'.
- * testsuite/22_locale/time_get/get_date/char/12750.cc: New.
- * testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Ditto.
-
- * include/bits/locale_facets.tcc
- (time_get::_M_extract_via_format): Tweak to absolutely avoid
- dereferencing end iterators.
-
- * include/bits/locale_facets.h (__verify_grouping):
- Const-ify second parameter.
- * include/bits/locale_facets.tcc (__verify_grouping): Ditto.
- * src/locale-inst.cc (__verify_grouping): Ditto.
-
-2003-10-27 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- Various things: 1- Avoid absolutely end iterator dereferences;
- 2- Improve performance-wise the code skipping leading zeros;
- 3- Fix two bugs wrt early bail out in case of parsing errors
- (see testcases); 4- General clean up.
- (num_get::_M_extract_int): Likewise, except 3-. Additionally,
- use __builtin_expect to favor base 10 inputs.
- * testsuite/22_locale/num_get/get/char/7.cc: New.
- * testsuite/22_locale/num_get/get/wchar_t/7.cc: Ditto.
-
-2003-10-26 Paolo Carlini <pcarlini@suse.de>
-
- * testsuite/22_locale/money_put/put/char/1.cc: Clean up.
- * testsuite/22_locale/money_put/put/wchar_t/1.cc: Ditto.
-
-2003-10-25 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_int):
- __pos in only incremented, never used its value, remove it.
-
-2003-10-24 Robert Millan <robertmh@gnu.org>
-
- * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add kfreebsd*-gnu
- and knetbsd*-gnu.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (money_get::do_get(...,
- long double&): Properly size the temporary buffer.
- * testsuite/22_locale/money_get/get/char/11.cc: New.
- * testsuite/22_locale/money_get/get/wchar_t/11.cc: Ditto.
-
- * include/bits/locale_facets.tcc (num_put::_M_group_int,
- num_put::_M_group_float, money_put::do_put(..., const
- string_type&), collate::do_compare, collate::do_transform):
- Prefer basic_string::data() to c_str() when the '\0'
- terminator is not really needed.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (__verify_grouping):
- Prefer '=' to an unnecessary '&='.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
- Tweak my fix for libstdc++/12657.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (money_get::do_get(...,
- string_type&): Minor tweak to the previous commit.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (money_get::do_get(...,
- string_type&): Disregard the previous commit: doesn't hurt but
- doesn't accomplish anything useful either. This is the right
- one, speeding up greatly the function in case of early fail.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (money_get::do_get(...,
- string_type&): Move an if block, thus minimizing the amount
- of code processed anyway when __tmp_units.size() == 0.
-
-2003-10-24 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc
- (time_get<>::_M_extract_via_format): Deal with case 'C' too,
- equivalent to 'y'.
-
-2003-10-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/documentation.html: Add a pointer to the doxygen style
- guide.
- * docs/html/17_intro/TODO: Update.
- * docs/html/test.html: Add instructions for running a subset of
- tests, update.
-
-2003-10-23 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (money_get<>::do_get(...,
- string_type&)): Use find_first_not_of to strip leading
- zeros; if __tmp_units == "0" never prefix it with '-';
- always fail if __tmp_units is empty.
- * testsuite/22_locale/money_get/get/char/10.cc: New.
- * testsuite/22_locale/money_get/get/wchar_t/10.cc: Ditto.
-
-2003-10-23 Phil Edwards <phil@codesourcery.com>
-
- * config/os/vxworks/ctype_noninline.h: Adjust ctor to match
- 2003-10-21 change.
-
-2003-10-22 Paolo Carlini <pcarlini@suse.de>
-
- * include/bits/locale_facets.tcc (__int_to_char): Remove
- the const int parameter.
- (_M_insert_int): Update caller.
- * src/locale-inst.cc (__int_to_char): Update instantiations.
-
-2003-10-22 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.h: Correct byname facets for "C"
- locale.
- * config/locale/generic/ctype_members.cc: Same.
- * config/locale/generic/messages_members.h: Same.
- * config/locale/gnu/ctype_members.cc: Same.
- * config/locale/gnu/messages_members.h: Same.
- * include/bits/codecvt.h: Same.
- * src/ctype.cc: Same.
- * testsuite/22_locale/codecvt_byname/1.cc: New.
- * testsuite/22_locale/collate/1.cc: Edit.
- * testsuite/22_locale/collate_byname/1.cc: Derivation tests, move to...
- * testsuite/22_locale/collate_byname/named_equivalence.cc: ...here.
- * testsuite/22_locale/ctype/1.cc: Derivation tests.
- * testsuite/22_locale/ctype/11844.cc: Move...
- * testsuite/22_locale/ctype_base/11844.cc: ...here.
- * testsuite/22_locale/ctype_base/1.cc: Move mask bits here.
- * testsuite/22_locale/ctype_byname/1.cc: Name.
- * testsuite/22_locale/messages_byname/1.cc: New.
- * testsuite/22_locale/messages_byname/named_equivalence.cc: New.
- * testsuite/22_locale/moneypunct_byname/1.cc: Derivation test.
- * testsuite/22_locale/moneypunct_byname/named_equivalence.cc: New.
- * testsuite/22_locale/numpunct/1.cc: Edit.
- * testsuite/22_locale/numpunct_byname/2.cc: Move...
- * testsuite/22_locale/numpunct/members/char/3.cc: ...here.
- * testsuite/22_locale/numpunct_byname/1.cc: Derivation tests.
- * testsuite/22_locale/numpunct_byname/named_equivalence.cc: New.
-
-2003-10-22 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/8610
- * acinclude.m4 (GLIBCXX_CHECK_INT64_T): New macro,
- checking for the availability of int64_t.
- (GLIBCXX_CHECK_LFS): New macro, checking for LFS support.
- * configure.ac: Call here.
- * acconfig.h: Add undef for the corresponding symbols.
- * config/io/basic_file_stdio.cc (__basic_file<char>::open):
- Depending on _GLIBCXX_USE_LFS, call fopen64 or fopen.
- (__basic_file<char>::seekoff): Likewise, call lseek64 when
- available, otherwise lseek, checking the __off parameter.
- * include/bits/postypes.h: Typedef __streamoff_base_type
- to int64_t if available, otherwise long long.
- * aclocal.m4: Regenerate.
- * config.h.in: Likewise.
- * configure: Likewise.
-
- * acinclude.m4 (GLIBCXX_CHECK_POLL, GLIBCXX_CHECK_WRITEV):
- Use AC_TRY_LINK instead of AC_TRY_COMPILE.
-
-2003-10-22 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12657
- * include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
- Implement resolution of DR 292 (WP).
- * docs/html/ext/howto.html: Add entry for DR 292.
-
-2003-10-21 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/mt_allocator.h: Change include to gthr.h.
- * include/ext/rope: Same. Add _Refcount_base definitions.
- * include/ext/pool_allocator.h: Adjust namespaces.
- * include/bits/stl_threads.h (_Refcount_base): Move.
- Put remaining into namespace __gnu_cxx.
-
-2003-10-21 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/9858
- * include/bits/locale_facets.h (ctype<char>): Remove
- __ctype_abstract_base.
- (ctype<char>::do_is): Remove.
- (ctype<char>::do_scan_is): Remove.
- * src/ctype.cc: Same. Inline the rest.
- * testsuite/22_locale/ctype/is/char/9858.cc: New.
- * config/os/aix/ctype_noninline.h: Adjust ctor.
- * config/os/bsd/freebsd/ctype_noninline.h: Same.
- * config/os/bsd/netbsd/ctype_noninline.h: Same.
- * config/os/djgpp/ctype_noninline.h: Same.
- * config/os/generic/ctype_noninline.h: Same.
- * config/os/gnu-linux/ctype_noninline.h: Same.
- * config/os/hpux/ctype_noninline.h: Same.
- * config/os/irix/irix5.2/ctype_noninline.h: Same.
- * config/os/irix/irix6.5/ctype_noninline.h: Same.
- * config/os/mingw32/ctype_noninline.h: Same.
- * config/os/newlib/ctype_noninline.h: Same.
- * config/os/qnx/qnx6.1/ctype_noninline.h: Same.
- * config/os/solaris/solaris2.5/ctype_noninline.h: Same.
- * config/os/solaris/solaris2.6/ctype_noninline.h: Same.
- * config/os/solaris/solaris2.7/ctype_noninline.h: Same.
- * config/os/windiss/ctype_noninline.h: Same.
-
-2003-10-21 Paolo Carlini <pcarlini@suse.de>
-
- * src/locale.cc: Tweak a comment.
- * src/localename.cc: Move a comment.
-
-2003-10-20 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/10081
- * testsuite_hooks.h: Add pod_type, ctype and numpunct specializations.
- * testsuite_hooks.cc: Same.
- * 22_locale/numpunct/members/pod/1.cc: Edit.
- * 22_locale/numpunct/members/pod/2.cc: Same.
- * 27_io/basic_istream/sentry/char/3983-fstream.cc: Move ...
- * 27_io/basic_istream/sentry/char/3983-sstream.cc: Move ...
- * 27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc: Here.
- * 27_io/basic_istream/extractors_character/pod/3983-2.cc: Here.
- * 27_io/basic_istream/extractors_other/pod/3983-3.cc: Here.
- * 27_io/basic_ostream/sentry/char/3983-fstream.cc: Remove.
- * 27_io/basic_ostream/sentry/char/3983-sstream.cc: Remove.
- * 27_io/basic_istream/sentry/pod/1.cc: New.
- * 27_io/basic_ostream/sentry/pod/1.cc: New.
- * 21_strings/basic_string/inserters_extractors/pod/10081-in.cc: New.
- * 21_strings/basic_string/inserters_extractors/pod/10081-out.cc: New.
-
-2003-10-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * config/cpu/mips/atomicity.h (__atomic_add): Use _ABIO32 instead
- of external _MIPS_SIM_ABI32.
-
-2003-10-20 Phil Edwards <phil@codesourcery.com>
-
- * configure.ac: Fix comment typo.
- * configure.host: Add vxworks to host_os switch.
- * crossconfig.m4: Remove old commented os_include_dir variables
- left over from autotools transition.
- (*-vxworks): New stanza.
- (*-windiss): Add missing symbols.
- * configure: Regenerate.
- * config/os/vxworks/ctype_base.h, config/os/vxworks/ctype_inline.h,
- config/os/vxworks/ctype_noninline.h, config/os/vxworks/os_defines.h:
- New files.
- * config/os/windiss/os_defines.h: Define __C9X__.
-
-2003-10-19 David Edelsohn <edelsohn@gnu.org>
-
- PR other/12506
- * configure.host (aix4,aix*): Define os_include_dir to os/generic.
-
-2003-10-18 Andreas Tobler <a.tobler@schweiz.ch>
-
- * src/locale.cc (locale::_S_initialize): Re-apply workaround a
- confusion of the use of the gthr API when __gthread_active_p()
- returns true.
-
-2003-10-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/Makefile.am: Add new files.
- * src/Makefile.in: Regenerate.
- * src/globals.cc: Split into..
- * src/globals_io.cc: New.
- * src/globals_locale.cc: New.
- * src/ios.cc: Split into...
- * src/ios_init.cc: New.
- * src/ios_locale.cc: New.
- * src/locale-inst.cc: Split into..
- * src/wlocale-inst.cc: New.
- * src/locale-misc-inst.cc: New.
- * src/locale.cc, src/localename: Split into...
- * src/locale_facets.cc: New.
- * src/locale_init.cc: New.
- * src/wstring-inst.cc: Add copyright info.
-
-2003-10-16 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/11450
- PR libstdc++/11543
- PR libstdc++/12065
- * config/io/basic_file_stdio.cc (__basic_file::seekoff):
- Change return value from streampos to streamoff.
- (__basic_file::seekpos): Delete.
- * config/io/basic_file_stdio.h: Same.
- * config/io/c_io_stdio.h: Remove streamoff and wstreamsize typedefs.
- * include/Makefile.am (bits_headers): Add bits/postypes.h.
- * include/bits/char_traits.h: Include bits/postypes.h instead of
- bits/fpos.h.
- * include/bits/fstream.tcc (basic_filebuf::open,
- basic_filebuf::pbackfail): Don't use < or >= to compare pos_type
- values, use == and != instead.
- (basic_filebuf::_M_seek): Use explicit conversion from streamoff
- to pos_type.
- (basic_filebuf::imbue): Don't use ! on pos_type values, use
- == instead. Don't use __check_facet(_M_codecvt) unless is_open().
- * include/bits/postypes.h: New file.
- Add __streamoff_base_type typedef, streamsize.
- (streamoff, streampos, wstreampos): Define typedefs, with
- streamoff defined as...
- (streamoff): New class. Document implementation defined
- aspects.
- (fpos): New implementation. Document implementation defined
- aspects.
- * include/bits/sstream.tcc (basic_stringbuf::seekpos): Use
- explicit conversion from pos_type to off_type.
- * include/std/std_iosfwd.h: Include bits/postypes.h instead
- of bits/fpos.h.
- * testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: New test.
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: New test.
- * testsuite/27_io/fpos/11450.cc: New test.
- * testsuite/27_io/fpos/mbstate_t/12065.cc: New test.
- * testsuite/27_io/fpos/mbstate_t/4_neg.cc: New test.
- * testsuite/27_io/types/3.cc: New test.
-
-2003-10-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.host: Remove fpos_include_dir.
- * configure.ac: Remove FPOS_INC_SRCDIR.
- * configure: Regenerate.
- * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Remove FPOS_H.
- * aclocal.m4: Regenerate.
- * include/Makefile.am (host_headers): Remove fpos.h.
- (bits_headers): Add postypes.h.
- * include/Makefile.in: Regenerate.
- * config/os/gnu-linux/fposh: Remove.
- * config/os/generic/fpos.h: Remove.
-
- * testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Fixup.
- * testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Same.
- * testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Same.
- * testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Same.
- * testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Same.
- * testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Same.
- * testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Same.
- * testsuite/27_io/basic_istream/seekg/char/2.cc: Same.
- * testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Same.
- * testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Same.
- * testsuite/27_io/fpos/mbstate_t/3.cc: Same.
- * testsuite/27_io/objects/char/10.cc: Same.
-
-2003-10-16 Paolo Carlini <pcarlini@suse.de>
-
- * src/locale.cc (locale::locale(const char*)): ... one
- more comparison missed in the previous commit.
-
-2003-10-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * acconfig.h: Add HAVE_DRAND48.
- * crossconfig.m4: Remove ISATTY.
- * aclocal.m4: Regenerated.
- * config.h.in: Regenerated.
- * configure: Regenerated.
-
-2003-10-16 Bernardo Innocenti <bernie@develer.com>
-
- * config/cpu/m68k/atomicity.h (__exchange_and_add): Use TAS on
- __mcf5400__. Don't rely on __mc68000__ to detect a bare 68000.
- Document SMP safeness of asm macros.
-
-2003-10-16 Paolo Carlini <pcarlini@suse.de>
-
- * src/locale.cc (locale::locale(const char*)): Tweak
- a couple of comparisons to use basic_string operators.
-
-2003-10-16 Paolo Carlini <pcarlini@suse.de>
-
- PR libstdc++/12540
- * config/locale/gnu/monetary_members.cc
- (moneypunct<wchar_t, true/false>::_M_initialize_moneypunct):
- Don't leak memory if new throws.
- * src/locale.cc (locale::locale(const char*)): In order not
- to leak memory in case new throws, use a basic_string type
- for __res too and avoid strdup.
-
-2003-10-14 Jeff Bailey <jbailey@nisa.net>
-
- PR libstdc++/12562
- * crossconfig.m4: Share the config between *-linux* and *-gnu*.
- * configure: Regenerate.
-
-2003-10-14 Carlo Wood <carlo@alinoe.com>
-
- PR libstdc++/12600
- * include/bits/demangle.h (session<Allocator>::
- decode_unqualified_name(string_type& output)): Fail on a
- <operator-name> when decoding <template-argument>.
- * testsuite/demangle/regression/cw-15.cc: New.
-
-2003-10-14 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11480
- * include/bits/stl_algo.h (unique): Fix.
- * testsuite/25_algorithms/unique.cc: Move to unique/1.cc.
- * testsuite/25_algorithms/unique/11480.cc: New, from the PR.
- * testsuite/25_algorithms/unique/2.cc: New.
-
-2003-10-14 Paolo Carlini <pcarlini@unitus.it>
-
- * src/localename.cc (_M_replace_categories, M_replace_facet):
- Const-ify a couple of variables.
-
-2003-10-14 Petur Runolfsson <peturr02@ru.is>
- Andreas Tobler <a.tobler@schweiz.ch>
-
- * src/locale.cc (locale::_S_initialize): Workaround a confusion
- of the use of the gthr API when __gthread_active_p() returns true.
-
-2003-10-12 Petur Runolfsson <peturr02@ru.is>
- Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11460
- * src/strstream.cc (pbackfail): Fix to use to_int_type.
- * testsuite/backward/11460.cc: New, from the PR.
-
-2003-10-12 Paolo Carlini <pcarlini@unitus.it>
-
- * config/locale/ieee_1003.1-2001/codecvt_specializations.h:
- Change #ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS to a comment.
- * include/bits/basic_string.tcc: Likewise.
- * include/bits/ios_base.h: Likewise.
- * include/bits/istream.tcc: Likewise.
- * include/bits/locale_facets.tcc: Likewise.
- * include/bits/ostream.tcc: Likewise.
- * include/bits/stl_function.h: Likewise.
- * include/bits/stl_multiset.h: Likewise.
- * include/bits/stl_pair.h: Likewise.
- * include/bits/stl_set.h: Likewise.
- * include/bits/streambuf_iterator.h
- * include/std/std_iosfwd.h: Likewise.
- * include/std/std_istream.h: Likewise.
- * include/std/std_sstream.h: Likewise.
- * include/std/std_streambuf.h: Likewise.
- * src/ios.cc: Likewise.
- * include/bits/c++config:
- Comment out #define _GLIBCXX_RESOLVE_LIB_DEFECTS 1.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Tweak a
- dg-error directive due to removal of a blank line.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
-
-2003-10-12 Andreas Tobler <a.tobler@schweiz.ch>
- Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11844/11740 (cont)
- * config/os/generic/ctype_inline.h (ctype<char>::is):
- Generically, use a bitmasksize of 15 (instead of 10);
- Fix the logic to actually return (M & m) != 0 as per
- 22.2.1.1.2.
-
-2003-10-11 Bernardo Innocenti <bernie@develer.com>
-
- * crossconfig.m4 (*-uclinux*): New target.
- * configure: Regenerate.
-
-2003-10-10 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT))
- Avoid unnecessarily calling __builtin_alloca and dealing
- explicitly with width() smaller than zero.
- (operator<<(basic_ostream&, char), operator<<(basic_ostream&,
- const _CharT*), operator<<(basic_ostream<_CharT, _Traits>&,
- const char*), operator<<(basic_ostream<char, _Traits>&,
- const char*), operator<<(basic_ostream, const basic_string&)):
- Likewise.
-
-2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/linker-map.gnu: Make more *_type_info bits visible.
- Move new/delete bits back into GLIBCXX space.
-
- * include/bits/locale_classes.h: Move _M_id out of line, so that
- locale::id::_S_highwater can be removed from the export list.
- * src/locale.cc (locale::id::_M_id): Define.
-
-2003-10-09 Andreas Tobler <a.tobler@schweiz.ch>
-
- * testsuite/lib/libstdc++.exp: Set LD_LIBRARY_PATH_64 for
- SPARC64.
-
-2003-10-09 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11844
- * config/os/aix/ctype_base.h: Fix 'alnum' and 'graph'
- to conform to the requirements of 22.2.1.
- * config/os/bsd/freebsd/ctype_base.h: Likewise.
- * config/os/djgpp/ctype_base.h: Likewise.
- * config/os/generic/ctype_base.h: Likewise.
- * config/os/gnu-linux/ctype_base.h: Likewise.
- * config/os/hpux/ctype_base.h: Likewise.
- * config/os/irix/irix6.5/ctype_base.h: Likewise.
- * config/os/solaris/solaris2.6/ctype_base.h: Likewise.
- * config/os/solaris/solaris2.7/ctype_base.h: Likewise.
- * testsuite/22_locale/ctype/11844.cc: New.
-
- * config/locale/generic/ctype_members.cc (do_is):
- Generically, use a bitmasksize of 15 (instead of 10), since
- we don't know the numerical encoding of the various categories
- in the underlying /usr/include/ctype.h.
-
-2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/string-inst.cc: Prune.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
-
-2003-10-09 Petur Runolfsson <peturr02@ru.is>
-
- * src/io-inst.cc: Don't include iostream.
- * include/bits/ios_base.h (ios_base::failure): Use string.
- * src/Makefile.am: Add ios_failure.cc.
- * src/Makefile.in: Regenerate.
- * src/ios.cc: Move ios_base::failure definitions to...
- * src/ios_failure.cc: ...here. New.
-
-2003-10-09 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9874
- * include/bits/fstream.tcc (basic_filebuf::seekoff):
- Move code needed for both seekoff and seekpos...
- (basic_filebuf::_M_seek): ...here. New function.
- (basic_filebuf::seekpos): Don't call seekoff, call _M_seek.
- * include/std/std_fstream.h (basic_filebuf::_M_seek): Declare it.
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: New test.
-
- * testsuite/22_locale/locale/cons/12438.cc: Increase memory limit.
-
-2003-10-08 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc: More minor cosmetic
- changes and const-ifications of some variables.
-
-2003-10-07 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc: Minor cosmetic changes
- and const-ifications of some variables.
-
- * include/bits/locale_facets.tcc
- (money_get::do_get(..., string_type&)): Simplify an if-else.
-
-2003-10-06 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11740
- * config/locale/gnu/ctype_members.cc (ctype<wchar_t>::do_is):
- Fix to actually return (M & m) != 0 as per 22.2.1.1.2.
- * config/locale/generic/ctype_members.cc: Same.
- * testsuite/22_locale/ctype/is/wchar_t/11740.cc: New.
-
-2003-10-06 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc (__pad<>::_S_pad):
- Improve performance-wise: avoid one traits::copy, avoid
- the __builtin_alloca, streamline.
-
-2003-10-05 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc
- (num_put::do_put(..., bool)): Prefer ?: to if-else.
- (time_get::_M_extract_name): Qualify min with std::.
- (__pad<>::_S_pad): Constify two variables; simplify an
- if-else statement factoring out some code.
-
- * include/bits/locale_facets.tcc: Minor cosmetic changes.
-
-2003-10-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- Constify a couple of variables.
- (num_get::do_get(..., bool&)): Constify __c; prefer *__beg,
- ++__beg to *__beg++.
-
-2003-10-04 Paolo Carlini <pcarlini@unitus.it>
- Petur Runolfsson <peturr02@ru.is>
-
- * include/ext/stdio_sync_filebuf.h: Don't include the whole
- <fstream>, only <streambuf> and <cstdio>.
-
-2003-10-04 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12206
- * include/bits/fstream.tcc (imbue): In case a codecvt facet
- is not available, set _M_codecvt = 0.
- * testsuite/27_io/basic_filebuf/imbue/12206.cc: New.
-
-2003-10-02 Harald Boehme <boehme@informatik.hu-berlin.de>
-
- PR libstdc++/12451
- * libsupc++/cxxabi.h: Move forward declaration of __class_type_info.
-
-2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_classes.h (locale::facet::_S_get_c_name): Add.
- * src/locale.cc: Define.
- * src/localename.cc: Use it.
- * config/locale/generic/time_members.h: Same.
- * config/locale/gnu/messages_members.h: Same.
- * config/locale/gnu/time_members.h: Same.
-
-2003-10-02 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12232
- * include/bits/fstream.tcc (seekoff): Ignore the openmode
- argument; simplify.
- * config/io/basic_file_stdio.h (__basic_file<char>::seekoff,
- seekpos): Remove the openmode argument.
- * config/io/basic_file_stdio.cc (__basic_file<char>::seekoff,
- seekpos): Remove redundant placeholder for the openmode argument.
- * testsuite/27_io/basic_filebuf/seekoff/char/12232.cc: New.
- * testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Tweak.
- * testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Likewise.
-
-2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/locale.cc (locale::_S_initialize): Use __gthread_active_p.
- (locale::facet::_S_get_c_locale): Same.
-
-2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/linker-map.gnu: Export _S_get_c_locale instead of
- _S_c_locale object.
-
-2003-10-02 Petur Runolfsson <peturr02@ru.is>
-
- * config/locale/generic/c_locale.cc
- (category_names, locale::_S_categories): Const qualify.
- * config/locale/gnu/c_locale.cc: Same.
- * config/locale/generic/time_members.h (__timepunct::__timepunct):
- Copy string contents before assigning to _M_name_timepunct,
- qualify strcpy and strlen with std::.
- * config/locale/gnu/time_members.h: Same.
- * config/locale/gnu/messages_members.h (messages::messages):
- Copy string contents before assigning to _M_name_messages,
- qualify strcpy and strlen with std::.
- * config/os/gnu-linux/ctype_noninline.h
- (ctype<char>::classic_table()): Don't call locale::classic().
- * include/bits/locale_classes.h
- (locale::_S_categories): Const qualify.
- (locale::_S_once, locale::_S_initialize_once,
- locale::facet::_S_once, locale::facet::_S_initialize_once,
- locale::facet::_S_get_c_locale): Declare.
- (locale::_S_initialize): Don't define.
- (locale::facet::_S_c_locale): Make private.
- (locale::facet::_S_c_name): Same, const qualify.
- (locale::_Impl::_Impl(facet**, size_t, bool)): Drop unused
- parameters, add throw() specifier.
- * include/bits/locale_facets.h (__timepunct::_M_name_timepunct,
- messages::_M_name_messages): Const qualify.
- * src/locale.cc
- (locale::_S_once, locale::facet::_S_once): Define.
- (locale::classic): Move initialization code...
- (locale::_S_initialize_once): ...here.
- (locale::_S_initialize): Call _S_initialize_once through
- __gthread_once.
- (locale::facet::_S_initialize_once): Initialize _S_c_locale.
- (locale::facet::_S_get_c_locale): Call _S_initialize_once through
- __gthread_once before returning _S_c_locale.
- * src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool)):
- Drop unused parameters, add throw() specifier, don't initialize
- locale::facet::_S_c_locale and _S_c_name.
-
- * config/locale/generic/messages_members.h:
- Replace _S_c_locale with _S_get_c_locale().
- * config/locale/gnu/c_locale.cc: Same.
- * config/locale/gnu/messages_members.h: Same.
- * config/locale/gnu/numeric_members.cc: Same.
- * config/locale/gnu/time_members.cc: Same.
- * config/os/gnu-linux/ctype_noninline.h: Same.
- * include/bits/locale_facets.h: Same.
- * include/bits/locale_facets.tcc: Same.
- * src/codecvt.cc: Same.
- * src/ctype.cc: Same.
-
-2003-10-02 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/demangle.h (demangle<Allocator>::symbol(char const*)):
- Decode symbols that start with _GLOBAL_[ID]_ differently: the
- trailing part ends with a terminating zero and is not necessarily an
- encoding.
- * src/demangle.cc (): Same.
- * testsuite/demangle/regression/cw-13.cc: Adjust for new output.
-
-2003-10-02 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/22_locale/locale/cons/12438.cc: Use
- __gnu_test::try_named_locale("").
-
-2003-10-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * linkage.m4 (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0): Define.
- (GLIBCXX_CHECK_STDLIB_SUPPORT): Use it to test for lrand48
- instead of drand48.
- * acconfig.h (HAVE_DRAND48): Renamed to HAVE_LRAND48.
- * crossconfig.m4 (*-freebsd*): Define HAVE_LRAND48 instead of
- HAVE_DRAND48.
- * config.h.in, configure: Regenerate.
- * include/bits/stl_algo.h: Use _GLIBCXX_HAVE_LRAND48 to guard
- lrand48 use.
-
-2003-10-01 Nathan Myers <ncm@cantrip.org>
-
- * include/bits/locale_facets.tcc (time_put::put): Avoid
- expensive *__s++, in favor of *__s, ++__s.
-
-2003-10-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_facets.tcc (time_put::put): Minor
- tweak to the previous commit.
-
-2003-10-01 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12439
- * include/bits/locale_facets.tcc (time_put::put): Deal
- with the three issues pointed out by the PR.
- * testsuite/22_locale/time_put/put/char/12439_1.cc: New.
- * testsuite/22_locale/time_put/put/char/12439_3.cc: New.
- * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc: New.
- * testsuite/22_locale/time_put/put/wchar_t/12439_2.cc: New.
- * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc: New.
-
-2003-09-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_algo.h: Minor cosmetic reformattings.
-
-2003-09-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_algo.h (search_n): Tweak, to spare the
- first --__n.
-
-2003-09-30 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/22_locale/locale/cons/12352.cc: Explicitly
- qualify exception name.
-
-2003-09-30 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12438
- * include/bits/locale_facets.tcc (locale::combine): Don't
- leak memory if _M_replace_facet throws.
- * testsuite/22_locale/locale/cons/12438.cc: New, from the PR.
-
- * include/bits/locale_classes.h (locale::locale(const locale&,
- _Facet*)): Tweak, use consistently _M_remove_reference.
-
-2003-09-30 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12352 (cont)
- * src/localename.cc (locale::_Impl::_Impl(const char*, size_t)):
- Don't leak __cloc; don't leak if any of the _M_init_facet(...)
- calls fail.
- (locale::_Impl::_Impl(const _Impl&, size_t)): Tweak.
- (locale::_Impl::~_Impl): Don't do anything if !_M_facets,
- !_M_caches, !_M_names.
-
-2003-09-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * configure.host: Handle Solaris 2.5 micro releases explicitly.
- Remove wildcards from Solaris 2.6, 7-9: there were no
- micro releases.
- Treat Solaris 10 and up like 7-9.
-
-2003-09-29 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_algo.h (search_n): Improve the previous
- fix as suggested by Martin.
-
-2003-09-29 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12296
- * include/bits/istream.tcc (peek): Set eofbit if sgetc
- returns eof.
- * testsuite/27_io/basic_istream/peek/char/12296.cc:
- New, from the PR.
-
-2003-09-29 Nathan Myers <ncm@cantrip.org>
- Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11400
- * include/bits/stl_algo.h (search_n):
- Use iterator_traits<>::difference_type for __n.
- * testsuite/25_algorithms/search_n/11400.cc: New, from the PR.
-
-2003-09-29 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/22_locale/locale/cons/12352.cc:
- Use __attribute__((unused)) for test.
-
-2003-09-26 Ulrich Weigand <uweigand@de.ibm.com>
-
- * testsuite/22_locale/time_put/put/char/2.cc (test_02): Allow either
- "Son" or "So" as abbreviated name for Sunday in de_DE locale.
- * testsuite/22_locale/time_put/put/wchar_t/2.cc (test_02): Likewise.
-
-2003-09-26 Brad Spencer <spencer@infointeractive.com>
-
- * testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc:
- Explicitly qualify exceptions.
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Same.
- * testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
- * testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
-
-2003-09-25 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/12352
- * src/localename.cc (locale::_Impl::_Impl(const _Impl&,
- size_t)): Don't leak if memory allocations for _M_facets,
- _M_caches, and _M_names fail.
- (locale::_Impl::_Impl(const char*, size_t)): Ditto.
- (locale::_Impl::_M_replace_categories(const _Impl*,
- category)): Ditto.
- (locale::_Impl::_M_install_facet(const locale::id*,
- const facet*)): Ditto.
- * include/bits/locale_classes.h (locale::locale(const locale&,
- _Facet*)): Don't leak memory.
- * testsuite/22_locale/locale/cons/12352.cc: New, from the PR.
-
- * src/localename.cc (locale::_Impl::_Impl(facet**, size_t,
- bool)): Qualify with std:: strcpy, tweak.
- * include/bits/locale_classes.h
- (locale::_Impl::_M_check_same_name): Qualify strcmp.
-
-2003-09-25 Brad Spencer <spencer@infointeractive.com>
-
- PR libstdc++/6072
- * acinclude.m4: Split out checks for vfwscanf, vswscanf, vwscanf,
- wcstof, iswblank.
- * aclocal.m4: Regenerate.
- * config.h.in: Regenerate.
- * configure: Regenerate.
- * crossconfig.m4: Add in wchar_t bits for solaris crosses.
- * config/io/basic_file_stdio.cc: Guard unistd.h.
- * include/c_compatibility/wchar.h: Guard extra wchar_t functionality.
- * include/c_std/std_cwchar.h: Same.
- * include/c_std/std_cwctype.h: Same.
-
-2003-09-25 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/11065
- * config/locale/gnu/ctype_members.cc (ctype<wchar_t>::do_is): Fix.
- * config/locale/generic/ctype_members.cc: Same.
- * testsuite/22_locale/ctype/is/char/1.cc: Initialize mask.
- * testsuite/22_locale/ctype/is/wchar_t/1.cc: Same.
-
- * config/os/generic/ctype_inline.h: Update.
-
-2003-09-25 Ulrich Weigand <uweigand@de.ibm.com>
-
- * src/Makefile.am (version_dep): New variable.
- (libstdc___la_DEPENDENCIES): Use it to add dependency on
- libstdc++-symbol.ver only when using symbol versioning.
- * src/Makefile.in: Regenerate.
-
-2003-09-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.tcc: Tweak to avoid warnings.
- * testsuite/testsuite_hooks.h: Same.
- * testsuite/*/*.cc: Same.
-
-2003-09-22 Petur Runolfsson <peturr02@ru.is>
-
- * include/bits/istream.tcc (basic_istream::read,
- basic_istream::readsome, basic_istream::putback,
- basic_istream::unget, operator>>(basic_istream, CharT)):
- Avoid redundant setstate(failbit) calls when sentry::operator bool()
- returns false.
-
-2003-09-22 Carlo Wood <carlo@alinoe.com>
-
- PR libstdc++/12365
- * include/bits/demangle.h (qualifier(int, cv_qualifier_nt,
- char const*, int, int)): Remove unused identifier
- cv_qualifier for overloaded constructor.
-
-2003-09-18 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/11504
- * acinclude.m4 (GLIBCXX_EXPORT_FLAGS): Add -Wcast-qual to
- WARN_FLAGS, remove -Wno-format.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-09-18 Petur Runolfsson <peturr02@ru.is>
-
- * config/io/basic_file_stdio.cc (sys_getc, sys_ungetc): Delete.
- * config/io/basic_file_stdio.h: Same.
- * include/std/std_fstream.h (__ctype_type): Delete.
- * include/std/std_streambuf.h (__ctype_type, __state_type): Delete.
-
-2003-09-17 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/12239
- * configure.host (abi_baseline_pair): Error out on solaris2
- configurations without a minor version number.
-
-2003-09-13 Phil Edwards <phil@codesourcery.com>
-
- * docs/doxygen/run_doxygen: Clear GENERATE_TAGFILE entirely
- if man pages are on.
- * docs/doxygen/user.cfg.in: And here.
-
-2003-09-10 Daniel Jacobowitz <drow@mvista.com>
- Andreas Jaeger <aj@suse.de>
-
- PR libstdc++/12189
- * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Don't build
- abi_check if cross compiling.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-09-10 Jeffrey D. Oldham <oldham@codesourcery.com>
-
- * libsupc++/vec.cc (__cxa_vec_new2): If the allocator returns
- NULL, return NULL. This reflects a C++ ABI change 2003 Sep 05.
- (__cxa_vec_new3): Likewise.
-
-2003-09-10 Petur Runolfsson <peturr02@ru.is>
-
- * include/bits/fstream.tcc (basic_filebuf::seekoff):
- Use codecvt::length to handle variable-width stateless encodings
- correctly.
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: New test.
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: New test.
-
-2003-09-10 Alan Modra <amodra@bigpond.net.au>
-
- * config/io/basic_file_stdio.cc (_M_open_mode): Assign __p_mode
- rather than or'ing.
-
-2003-09-09 Alan Modra <amodra@bigpond.net.au>
-
- * configure: Regenerate.
-
-2003-09-09 David Edelsohn <edelsohn@gnu.org>
-
- * src/ios.cc (ios_base::Init::Init): Remove unnecessary
- qualifier from _S_synced_with_stdio.
-
-2003-09-09 Bernardo Innocenti <bernie@develer.com>
-
- * include/c_std/std_cstdlib.h: Avoid using missing C library symbols.
-
-2003-09-04 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9028
- * include/bits/fstream.tcc
- (basic_filebuf::_M_destroy_internal_buffer): Destroy _M_ext_buf.
- (basic_filebuf::basic_filebuf): Initialize _M_ext_buf,
- _M_ext_buf_size, _M_ext_next and _M_ext_end.
- (basic_filebuf::underflow): Handle variable-width stateless
- encodings (codecvt::encoding() == 0), including UTF-8.
- * include/std/std_fstream.h (basic_filebuf):
- Declare _M_ext_buf, _M_ext_buf_size, _M_ext_next, _M_ext_end.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc: New test.
- * testsuite/27_io/objects/wchar_t/12.cc: New test.
- * testsuite/27_io/objects/wchar_t/13.cc: New test.
-
-2003-09-04 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/faq/index.html: Note that a namespace alias can't be
- used when specialising templates in extension namespace.
- * docs/html/faq/index.txt: Regenerate.
-
-2003-09-03 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/12048
- * include/ext/stdio_sync_filebuf.h
- (stdio_sync_filebuf::_M_unget_buf): Declare it.
- (stdio_sync_filebuf::stdio_sync_filebuf): Initialize _M_unget_buf.
- (stdio_sync_filebuf::uflow): Store the returned character in
- _M_unget_buf.
- (stdio_sync_filebuf::pbackfail): If argument is eof(), pass
- _M_unget_buf to syncungetc(). Set _M_unget_buf to eof().
- (stdio_sync_filebuf<char>::xsgetn): Store last read character in
- _M_unget_buf, if any, else eof().
- (stdio_sync_filebuf<wchar_t>::xsgetn: Store last read character in
- _M_unget_buf, if any, else eof().
- * testsuite/27_io/objects/char/12048.cc: Rename to...
- * testsuite/27_io/objects/char/12048-1.cc: ...this.
- * testsuite/27_io/objects/char/12048-2.cc: New test.
- * testsuite/27_io/objects/char/12048-3.cc: New test.
- * testsuite/27_io/objects/char/12048-4.cc: New test.
- * testsuite/27_io/objects/char/12048-5.cc: New test. XFAIL.
- * testsuite/27_io/objects/wchar_t/12048-1.cc: New test.
- * testsuite/27_io/objects/wchar_t/12048-2.cc: New test.
- * testsuite/27_io/objects/wchar_t/12048-3.cc: New test.
- * testsuite/27_io/objects/wchar_t/12048-4.cc: New test.
- * testsuite/27_io/objects/wchar_t/12048-5.cc: New test. XFAIL.
- * testsuite/ext/stdio_sync_filebuf_char.cc
- (test02, test03, test04, test05): New tests.
- * testsuite/ext/stdio_sync_filebuf_wchar_t.cc
- (test02, test03, test04, test05): New tests.
-
-2003-09-03 Petur Runolfsson <peturr02@ru.is>
-
- * docs/html/27_io/howto.html: setbuf(0, 0) has no effect on
- stringbuf or strstreambuf. Fix typos.
-
-2003-09-02 Phil Edwards <phil@codesourcery.com>
-
- * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): #define _GLIBCXX_HOSTED
- appropriately.
- * config.h.in: Add _GLIBCXX_HOSTED.
- * libsupc++/eh_term_handler.cc: Test it here; initialize
- __terminate_handler to std::abort if freestanding.
- * aclocal.m4, configure: Regenerated.
- * docs/html/configopts.html: Document --disable-hosted-libstdcxx.
-
-2003-08-29 Nathan Myers <ncm@cantrip.org>
-
- PR libstdc++/11990
- * include/bits/locale_facets.tcc (__pad): delete dead code.
-
-2003-08-28 Alan Modra <amodra@bigpond.net.au>
-
- * configure.ac: Test $with_cross_host against $build_alias, not $build.
- * configure: Regenerate.
-
-2003-08-27 Petur Runolfsson <peturr02@ru.is>
-
- * testsuite/27_io/objects/wchar_t/10.cc: Move wcout stuff...
- * testsuite/27_io/objects/wchar_t/11.cc: ...here. New file.
-
-2003-08-27 Phil Edwards <pme@gcc.gnu.org>
-
- * Makefile.am: Remove trailing whitespace. Remove needless
- "foo = @foo@" assignments. Replace direct uses of @foo@ with $(foo).
- * include/Makefile.am: Likewise.
- * libmath/Makefile.am: Likewise.
- * libsupc++/Makefile.am: Likewise.
- * po/Makefile.am: Likewise.
- * src/Makefile.am: Likewise.
- * testsuite/Makefile.am: Likewise.
-
- * Makefile.in, include/Makefile.in, libmath/Makefile.in,
- libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
- testsuite/Makefile.in: Regenerated.
-
-2003-08-27 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Change quoting of
- includedir.
- * aclocal.m4, configure: Regenerate.
-
-2003-08-27 Daniel Jacobowitz <drow@mvista.com>
-
- * acinclude.m4: Include no-executables.m4.
- * configure.ac: Uncomment GCC_NO_EXECUTABLES.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-08-27 Daniel Jacobowitz <drow@mvista.com>
-
- * acinclude.m4: Don't call AC_ISC_POSIX.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-08-27 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_CONDITIONAL): New macro. Wrap
- AM_CONDITIONAL. Replace all calls to AM_CONDITIONAL with this one.
- (GLIBCXX_ENABLE_HOSTED): New macro, sets new variable is_hosted,
- used elsewhere in this file.
- (GLIBCXX_EVALUATE_CONDITIONALS): New macro...
- * configure.ac: ...called here to expand all conditionals.
- * Makefile.am: Conditionalize SUBDIRS on GLIBCXX_HOSTED.
- * include/Makefile.am: Remove redundant gxx_include_dir assignment.
- (install-freestanding-headers): New target, a subset of
- install-headers. Conditionalize install-data-local on GLIBCXX_HOSTED.
-
- * aclocal.m4, configure, Makefile.in, include/Makefile.in,
- libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
- src/Makefile.in, testsuite/Makefile.in: Regenerated.
-
-2003-08-26 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/run_doxygen: Shell fixes. Remove hardcoded local
- pathnames from generated tag file.
-
-2003-08-26 Phil Edwards <pme@gcc.gnu.org>
-
- * Makefile.am: Add comment.
- * acinclude.m4 (GLIBCXX_CONFIGURE): Set new glibcxx_SUBDIRS and
- SUBDIRS variables.
- * configure.ac: Use them both here, instead of hardcoded lists.
-
- * fragment.am: Add STAMP varaible.
- * include/Makefile.am: Cosmetic whitespace cleanup. Use $(LN_S)
- instead of @LN_S@.
- (stamp-*): Move file creation rule outside of 'if' branches to
- ensure the stamp-* files are actually updated. Use $(STAMP).
- * src/Makefile.am: Remove now-nonexistant variable.
- * libsupc++/Makefile.am: Likewise. Snap the assignment chain
- for -prefer-pic.
- * po/Makefile.am: Include same fragment as all the others.
-
- * aclocal.m4, configure, Makefile.in, include/Makefile.in,
- libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in: Regenerated.
-
-2003-08-26 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/data/cin_unget-1.txt: New.
- * testsuite/27_io/objects/char/12048.cc: New.
-
-2003-08-25 Zack Weinberg <zack@codesourcery.com>
-
- * config/os/hpux/os_defines.h: Unconditionally define
- _GLIBCXX_GTHREAD_USE_WEAK to 0.
-
-2003-08-19 Geoffrey Keating <geoffk@apple.com>
-
- * crossconfig.m4 (*-darwin*): Add a large and boring stanza for
- crosses to Darwin targets.
- * configure: Regenerate.
-
-2003-08-19 Petur Runolfsson <peturr02@ru.is>
-
- * include/ext/ropeimpl.h: #include <ostream> instead of <iostream>
-
-2003-08-17 Phil Edwards <pme@gcc.gnu.org>
-
- * configure.ac: GCC_NO_EXECUTABLES was supposed to be commented
- in the patch from 3 minutes ago. Boy, is my face red.
- * configure: At least I remembered to regenerate this.
-
-2003-08-17 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Remove LIBMATH_INCLUDES
- and LIBSUPCXX_INCLUDES. Re-purpose TOPLEVEL_INCLUDES to refer to
- things from the top level.
- * configure.ac (GLIBCXX_IS_NATIVE): Determine earlier and re-order.
- Comment out the conditionals for CANADIAN and GLIBCXX_BUILD_LIBMATH
- (currently unused). Strip the fake-VPATH shell fragment from
- automake-generated rules, if present.
- * linkage.m4: Add comment.
-
- * fragment.am: New file, containing factored-out common settings.
- (AM_CPPFLAGS): Absorb the deprecated INCLUDES variable contents.
- * Makefile.am: Include fragment.am. Remove common variables.
- * include/Makefile.am: Likewise.
- * libmath/Makefile.am: Likewise.
- * libsupc++/Makefile.am: Likewise.
- * po/Makefile.am: Likewise. Print rules during check.
- * src/Makefile.am: Likewise.
- * testsuite/Makefile.am: Likewise.
-
- * aclocal.m4, configure, Makefile.in, include/Makefile.in,
- libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
- src/Makefile.in, testsuite/Makefile.in: Regenerate.
-
-2003-08-11 John Levon <levon@movementarian.org>
-
- * docs/html/ext/howto/guide.html (GLIBCXX_FORCE_NEW): Update
- remaining places for the name change from GLIBCPP_FORCE_NEW
- to GLIBCXX_FORCE_NEW
-
-2003-08-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/basic_ios.h: Remove *_iter typedefs, change num*
- typedefs to num_*.
- * include/bits/basic_ios.tcc: Same.
- * include/bits/istream.tcc: Same.
- * include/bits/locale_facets.h: Same.
- * include/bits/ostream.tcc: Same.
- * include/std/std_istream.h: Same.
- * include/std/std_ostream.h: Same.
- * testsuite/26_numerics/complex_inserters_extractors.cc: Fix.
-
- * include/ext/rope: Remove build warning.
-
-2003-08-11 Andreas Jaeger <aj@suse.de>
-
- * include/Makefile.am (stamp-c_base): Add dependency on stamp-bits
- to make SMP-safe.
- * include/Makefile.in: Regenerated.
-
-2003-08-11 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_CONFIGURE): Unprecious CC and CFLAGS
- when calling AC_PROG_CC.
- * aclocal.m4, configure: Regenerate.
-
-2003-08-11 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4: Properly quote variable which will be expanded
- inside makefiles. Use CXX instead of CC to extract compiler info.
- * configure.ac (AC_INIT): Use the new 4-arg form to finally get the
- correct form in PACKAGE.
- * aclocal.m4, configure: Regenerate.
-
-2003-08-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/Makefile.am (check-abi): Change libstdc++-v3 to libstdc++.
- (check-abi-verbose): Same.
- * testsuite/testsuite_performance.h (report_performance): Same.
-
-2003-08-08 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/testsuite_performance.h (__FreeBSD__): Add fake mallinfo.
-
-2003-08-07 Doug Gregor <dgregor@apple.com>
-
- * include/bits/char_traits.h (char_traits::not_eof): Match operand
- types in ? :.
-
-2003-08-07 Bernardo Innocenti <bernie@develer.com>
-
- PR libstdc++/11784
- * libstdc++-v3/config/cpu/m68k/atomicity.h (__exchange_and_add):
- Replace variants with new BSET-based version.
-
-2003-08-07 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/demangle.h: Do not use cctype functions that depend
- on locale.
-
-2003-08-05 Phil Edwards <pme@gcc.gnu.org>
-
- * configure.in: Rename...
- * configure.ac: ...to this.
- * docs/html/17_intro/porting.texi: Update name.
-
- * docs/html/17_intro/porting.html: Regenerate.
- * config.h.in, Makefile.in, include/Makefile.in, libmath/Makefile.in,
- libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
- testsuite/Makefile.in: Regenerate (picks up new dependancy).
-
-2003-08-05 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Put down the crack
- pipe, open the window to let out the fumes, redo the option-handling
- logic to properly execute the detection test.
- * aclocal.m4, configure: Regenerate.
-
-2003-08-04 Phil Edwards <pme@gcc.gnu.org>
-
- Convert to new autotools.
- * acconfig.h: Update with correct names.
- * configure.host (ATOMICITYH): Rename to atomicity_include_dir.
- (qnx6.[12]*): 'q' comes before 's', not after 'w'.
- * configure.in: Update. Split hardcoded cross-configury settings
- out to...
- * crossconfig.m4: ...here. New file. Contents untouched.
- * acinclude.m4: Reorganize and rewrite as needed. Split large
- chunks out to...
- * linkage.m4: ...here. New file. Math and stdlib linkage tests.
- Contents untouched.
- * scripts/testsuite_flags.in: Update.
-
- * Makefile.am: Remove unneeded AUTOMAKE_OPTIONS settings and other
- variables (already generated by automake).
- * include/Makefile.am: Ditto.
- * libmath/Makefile.am: Ditto.
- * libsupc++/Makefile.am: Ditto.
- * po/Makefile.am: Ditto.
- * src/Makefile.am: Ditto.
-
- * aclocal.m4: Regenerate using new versions.
- * config.h.in: Ditto.
- * configure: Ditto.
- * Makefile.in: Ditto.
- * include/Makefile.in: Ditto.
- * libmath/Makefile.in: Ditto.
- * libsupc++/Makefile.in: Ditto.
- * po/Makefile.in: Ditto.
- * src/Makefile.in: Ditto.
- * testsuite/Makefile.in: Ditto.
-
-2003-08-04 Phil Edwards <pme@gcc.gnu.org>
-
- * po/libstdc++.pot: Re-extract/regenerate.
-
-2003-08-04 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/Makefile.am (DEJATOOL,EXPECT,RUNTEST,RUNTESTFLAGS):
- Remove unneeded variable assignments. Leave them for automake.
- * testsuite/lib/libstdc++-v3.exp: Rename...
- * testsuite/lib/libstdc++.exp: ...to this. Adjust function names
- accordingly.
- * testsuite/libstdc++-v3.dg/dg.exp: Rename...
- * testsuite/libstdc++-dg/normal.exp: ...to this. Adjust function
- names accordingly.
-
-2003-08-04 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/guide.html: run_doxygen uses bash.
- * docs/doxygen/mainpage.html: We'll be shipping tag files.
- * docs/doxygen/run_doxygen: Tweaks and improvements.
- * docs/doxygen/user.cfg.in: Set GENERATE_TAGFILE.
- * docs/html/install.html: Update autoconf/automake requirements.
- * docs/html/test.html: Add section describing DejaGNU support.
- * docs/html/17_intro/confdeps.dot: New file, generates...
- * docs/html/17_intro/confdeps.png: ...this new file.
- * docs/html/Makefile: Generated here.
- * docs/html/17_intro/configury.html: New file.
-
-2003-07-31 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/lib/libstdc++-v3-dg.exp: Rename...
- * testsuite/lib/libstdc++-v3.exp: ...to this.
- * testsuite/libstdc++-v3.dg/dg.exp: No special case needed now.
-
-2003-07-31 Doug Gregor <dgregor@apple.com>
-
- Add user specialization tests.
- * testsuite/23_containers/deque/1.cc: New.
- * testsuite/23_containers/list/1.cc: New.
- * testsuite/23_containers/map/1.cc: New.
- * testsuite/23_containers/multimap/1.cc: New.
- * testsuite/23_containers/multiset/1.cc: New.
- * testsuite/23_containers/set/1.cc: New.
- * testsuite/23_containers/vector/1.cc: New.
-
-2003-07-31 Benjamin Kosnik <bkoz@redhat.com>
-
- Reshuffle 23_containers testsuite.
- * 23_containers/adaptors.cc, bitset_ctor.cc,bitset_members.cc,
- bitset_shift.cc, deque_ctor.cc, deque_operators.cc,
- list_capacity.cc, list_ctor.cc, list_modifiers.cc, list_operators.cc,
- map_insert.cc, map_operators.cc, map_operators_neg.cc, multiset.cc,
- set_operators_neg.cc, vector_bool.cc, vector_capacity.cc,
- vector_ctor.cc, vector_element_access.cc, vector_modifiers.cc,
- vector_resize.cc: Split into...
- * 23_containers/bitset/cons/1.cc: New.
- * 23_containers/bitset/cons/6282.cc: New.
- * 23_containers/bitset/count/6124.cc: New.
- * 23_containers/bitset/operations/1.cc: New.
- * 23_containers/bitset/operations/2.cc: New.
- * 23_containers/bitset/test/1.cc: New.
- * 23_containers/bitset/to_ulong/1.cc: New.
- * 23_containers/deque/cons/1.cc: New.
- * 23_containers/deque/cons/2.cc: New.
- * 23_containers/deque/operators/1.cc: New.
- * 23_containers/list/capacity/1.cc: New.
- * 23_containers/list/cons/1.cc: New.
- * 23_containers/list/cons/2.cc: New.
- * 23_containers/list/cons/3.cc: New.
- * 23_containers/list/cons/4.cc: New.
- * 23_containers/list/cons/5.cc: New.
- * 23_containers/list/cons/6.cc: New.
- * 23_containers/list/cons/7.cc: New.
- * 23_containers/list/cons/8.cc: New.
- * 23_containers/list/cons/9.cc: New.
- * 23_containers/list/modifiers/1.cc: New.
- * 23_containers/list/modifiers/2.cc: New.
- * 23_containers/list/modifiers/3.cc: New.
- * 23_containers/list/operators/1.cc: New.
- * 23_containers/list/operators/2.cc: New.
- * 23_containers/list/operators/3.cc: New.
- * 23_containers/list/operators/4.cc: New.
- * 23_containers/map/insert/1.cc: New.
- * 23_containers/map/operators/1.cc: New.
- * 23_containers/map/operators/1_neg.cc: New.
- * 23_containers/multiset/insert/1.cc: New.
- * 23_containers/priority_queue/members/7161.cc: New.
- * 23_containers/queue/members/7157.cc: New.
- * 23_containers/set/operators/1_neg.cc: New.
- * 23_containers/stack/members/7158.cc: New.
- * 23_containers/vector/bool/1.cc: New.
- * 23_containers/vector/bool/6886.cc: New.
- * 23_containers/vector/capacity/1.cc: New.
- * 23_containers/vector/capacity/2.cc: New.
- * 23_containers/vector/capacity/8230.cc: New.
- * 23_containers/vector/cons/1.cc: New.
- * 23_containers/vector/cons/2.cc: New.
- * 23_containers/vector/cons/3.cc: New.
- * 23_containers/vector/cons/4.cc: New.
- * 23_containers/vector/cons/6513.cc: New.
- * 23_containers/vector/element_access/1.cc: New.
- * 23_containers/vector/modifiers/1.cc: New.
- * 23_containers/vector/modifiers/2.cc: New.
- * 23_containers/vector/resize/1.cc: New.
-
-2003-07-31 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * testsuite/thread/pthread1.cc: Add alpha*-*-osf* to dg-do run,
- dg-options.
- * testsuite/thread/pthread2.cc: Likewise.
- * testsuite/thread/pthread3.cc: Likewise.
- * testsuite/thread/pthread4.cc: Likewise.
- * testsuite/thread/pthread5.cc: Likewise.
- * testsuite/thread/pthread6.cc: Likewise.
- * testsuite/thread/pthread7-rope.cc: Likewise.
-
-2003-07-30 Phil Edwards <pme@gcc.gnu.org>
-
- * include/bits/c++config: Partial reversion (comment placement) of
- previous patch.
-
-2003-07-30 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config (_GLIBCXX_FULLY_COMPLIANT_HEADERS): Remove.
- (_GLIBCXX_NO_TEMPLATE_EXPORT): To _GLIBCXX_EXPORT_TEMPLATE.
- (_GLIBCXX_AT_AT): Remove.
- (__USE_MALLOC): Remove.
- * include/std/std_fstream.h: Modify.
- * include/bits/basic_ios.h: Same.
- * include/bits/valarray_array.h: Same.
- * include/c_std/std_cmath.h: Same.
- * include/c_std/cmath.tcc: Same.
- * include/std/std_vector.h: Same.
- * include/std/std_string.h: Same.
- * include/std/std_stack.h: Same.
- * include/std/std_queue.h: Same.
- * include/std/std_list.h: Same.
- * include/std/std_deque.h: Same.
- * include/std/std_streambuf.h: Same.
- * include/std/std_sstream.h: Same.
- * include/std/std_ostream.h: Same.
- * include/std/std_istream.h: Same.
- * include/bits/valarray_array.tcc: Same, format.
-
- * include/c/std_cctype.h: Fix include guards.
- * include/c/std_cerrno.h: Same.
- * include/c/std_cfloat.h: Same.
- * include/c/std_climits.h: Same.
- * include/c/std_clocale.h: Same.
- * include/c/std_cmath.h: Same.
- * include/c/std_csetjmp.h: Same.
- * include/c/std_csignal.h: Same.
- * include/c/std_cstdarg.h: Same.
- * include/c/std_cstddef.h: Same.
- * include/c/std_cstdio.h: Same.
- * include/c/std_cstdlib.h: Same.
- * include/c/std_cstring.h: Same.
- * include/c/std_ctime.h: Same.
- * include/c/std_cwchar.h: Same.
- * include/c/std_cwctype.h: Same.
- * include/c_std/cmath.tcc: Same.
- * include/c_std/std_cmath.h: Same.
-
-2003-07-30 Gawain Bolton <gp.bolton@computer.org>
-
- PR libstdc++/11504.
- * include/bits/stl_tree.h: Replace C-style casts with C++-style
- casts. Changes to avoid casting away constness. Eliminate
- _Rb_tree_base_iterator class. Change _Rb_tree_iterator to use
- initialization lists. Move out implementation of __black_count()
- to...
- * src/stl_tree.cc: ...here and rename _Rb_tree_black_count().
- Rename_Rb_tree_base_iterator::_M_increment() to
- _Rb_tree_increment and _Rb_tree_base_iterator::_M_decrement() to
- _Rb_tree_decrement.
- * config/linker-map.gnu: Add and change symbols here.
-
-2003-07-30 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/22_locale/howto.html: Use locale::classic() instead
- of locale("C").
-
-2003-07-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/testsuite_hooks.h: Remove list include.
- (func_callback): Define as unique type, not std::list.
- Change DEBUG_ASSERT to _GLIBCXX_ASSERT.
- * testsuite/libstdc++-v3.dg/dg.exp: Same.
- * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Same.
- * testsuite/23_containers/bitset_ctor.cc:
- * testsuite/17_intro/header_ciso646.cc: Remove DEBUG_ASSERT.
- * testsuite/18_support/numeric_limits.cc: Same.
- * testsuite/21_strings/basic_string/append/char/1.cc: Same.
- * testsuite/21_strings/basic_string/append/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/compare/char/1.cc: Same.
- * testsuite/21_strings/basic_string/compare/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/element_access/char/1.cc: Same.
- * testsuite/21_strings/basic_string/element_access/char/2.cc: Same.
- * testsuite/21_strings/basic_string/element_access/char/3.cc: Same.
- * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/element_access/wchar_t/2.cc: Same.
- * testsuite/21_strings/basic_string/element_access/wchar_t/3.cc: Same.
- * testsuite/21_strings/basic_string/find/char/1.cc: Same.
- * testsuite/21_strings/basic_string/find/char/2.cc: Same.
- * testsuite/21_strings/basic_string/find/char/3.cc: Same.
- * testsuite/21_strings/basic_string/find/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/find/wchar_t/2.cc: Same.
- * testsuite/21_strings/basic_string/find/wchar_t/3.cc: Same.
- * testsuite/21_strings/basic_string/insert/char/1.cc: Same.
- * testsuite/21_strings/basic_string/insert/char/2.cc: Same.
- * testsuite/21_strings/basic_string/insert/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/insert/wchar_t/2.cc: Same.
- * testsuite/21_strings/basic_string/inserters_extractors/char/1.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/char/4.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/char/5.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/char/6.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/char/7.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc:
- * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc:
- * testsuite/21_strings/basic_string/operators/char/1.cc: Same.
- * testsuite/21_strings/basic_string/operators/char/2.cc: Same.
- * testsuite/21_strings/basic_string/operators/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/operators/wchar_t/2.cc: Same.
- * testsuite/21_strings/basic_string/replace/char/1.cc: Same.
- * testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/rfind/char/1.cc: Same.
- * testsuite/21_strings/basic_string/rfind/char/2.cc: Same.
- * testsuite/21_strings/basic_string/rfind/char/3.cc: Same.
- * testsuite/21_strings/basic_string/rfind/wchar_t/1.cc: Same.
- * testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: Same.
- * testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: Same.
- * testsuite/21_strings/basic_string/substr/char/1.cc: Same.
- * testsuite/21_strings/basic_string/substr/wchar_t/1.cc: Same.
- * testsuite/23_containers/bitset_ctor.cc: Same.
- * testsuite/23_containers/bitset_shift.cc: Same.
- * testsuite/23_containers/vector_ctor.cc: Same.
- * testsuite/23_containers/vector_element_access.cc: Same.
- * testsuite/24_iterators/istreambuf_iterator.cc: Same.
- * testsuite/24_iterators/iterator.cc: Same.
- * testsuite/24_iterators/ostreambuf_iterator.cc: Same.
- * testsuite/25_algorithms/lower_bound.cc: Same.
- * testsuite/26_numerics/complex_inserters_extractors.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc: Same.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc: Same.
- * testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc: Same.
- * testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc:
- Same.
-
-2003-07-28 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/user.cfg.in, docs/html/abi.txt, docs/html/debug.html,
- docs/html/test.html, docs/html/17_intro/headers_cc.txt,
- docs/html/17_intro/howto.html, docs/html/ext/howto.html: Change
- GLIBCPP to GLIBCXX (and explain as needed).
-
-2003-07-28 Phil Edwards <pme@gcc.gnu.org>
-
- * README: Update.
-
-2003-07-28 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/22_locale/messages/members/char/1.cc,
- testsuite/22_locale/messages/members/char/2.cc,
- testsuite/22_locale/messages/members/char/3.cc,
- testsuite/22_locale/messages_byname/1.cc: Update comment regarding
- the origin of LOCALEDIR.
- * testsuite/lib/libstdc++-v3.exp: New file.
-
-2003-07-25 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/char_traits.h: Update copyright, tweak.
- * testsuite/ext/pod_char_traits.cc: Explicitly qualify namespace
- std types.
-
-2003-07-24 Matt Austern <austern@apple.com>
-
- * /include/bits/char_traits.h (class char_traits): Put all the
- real work into the new class template __gnu_cxx::char_traits.
- Gave generic definitions for member functions. Types are taken
- from the new class template __gnu_cxx::_Char_types.
- * testsuite/21_strings/char_traits/requirements/short/1.cc: New
- file. Test of std::char_traits<short>, which serves as a test of
- the char_traits primary template.
-
-2003-07-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/*: Change __gnu_cxx_test to __gnu_test.
-
-2003-07-24 Nathan Myers <ncm-nospam@cantrip.org>
-
- * testsuite/23_containers/map_operators.cc: Conform to
- container requirement as value must be Assignable.
-
-2003-07-23 Alexandre Oliva <aoliva@redhat.com>
-
- * acinclude.m4 (GLIBCXX_ENABLE_PCH): Rework test such that it
- tests not only generation of pch files, but also their use.
- * aclocal.m4, configure: Rebuilt.
-
-2003-07-23 Steve Ellcey <sje@cup.hp.com>
-
- * config/cpu/hppa/atomicity.h: Change
- _GLIBCXX_INST_GLIBCXX_ATOMICITY_LOCK to _GLIBCXX_INST_ATOMICITY_LOCK
- to match misc-inst.cc
-
-2003-07-23 Steve Ellcey <sje@cup.hp.com>
-
- * include/c_std/cmath.tcc: Use _GLIBCXX_ prefix on file guard.
- * include/c_std/std_cctype.h: Ditto.
- * include/c_std/std_cerrno.h: Ditto.
- * include/c_std/std_cfloat.h: Ditto.
- * include/c_std/std_climits.h: Ditto.
- * include/c_std/std_clocale.h: Ditto.
- * include/c_std/std_cmath.h: Ditto.
- * include/c_std/std_csetjmp.h: Ditto.
- * include/c_std/std_csignal.h: Ditto.
- * include/c_std/std_cstdarg.h: Ditto.
- * include/c_std/std_cstddef.h: Ditto.
- * include/c_std/std_cstdio.h: Ditto.
- * include/c_std/std_cstdlib.h: Ditto.
- * include/c_std/std_cstring.h: Ditto.
- * include/c_std/std_ctime.h: Ditto.
- * include/c_std/std_cwchar.h: Ditto.
- * include/c_std/std_cwctype.h: Ditto.
- * include/std/std_algorithm.h: Ditto.
- * include/std/std_bitset.h: Ditto.
- * include/std/std_complex.h: Ditto.
- * include/std/std_deque.h: Ditto.
- * include/std/std_fstream.h: Ditto.
- * include/std/std_functional.h: Ditto.
- * include/std/std_iomanip.h: Ditto.
- * include/std/std_ios.h: Ditto.
- * include/std/std_iosfwd.h: Ditto.
- * include/std/std_iostream.h: Ditto.
- * include/std/std_istream.h: Ditto.
- * include/std/std_iterator.h: Ditto.
- * include/std/std_limits.h: Ditto.
- * include/std/std_list.h: Ditto.
- * include/std/std_locale.h: Ditto.
- * include/std/std_map.h: Ditto.
- * include/std/std_memory.h: Ditto.
- * include/std/std_numeric.h: Ditto.
- * include/std/std_ostream.h: Ditto.
- * include/std/std_queue.h: Ditto.
- * include/std/std_set.h: Ditto.
- * include/std/std_sstream.h: Ditto.
- * include/std/std_stack.h: Ditto.
- * include/std/std_stdexcept.h: Ditto.
- * include/std/std_streambuf.h: Ditto.
- * include/std/std_string.h: Ditto.
- * include/std/std_utility.h: Ditto.
- * include/std/std_valarray.h: Ditto.
- * include/std/std_vector.h: Ditto.
-
-2003-07-22 Doug Gregor <dgregor@apple.com>
-
- * include/bits/basic_string.h (basic_string::insert): Deprecate
- GNU extension.
-
-2003-07-21 Benjamin Kosnik <bkoz@redhat.com>
-
- * scripts/testsuite_flags.in (--build-includes): Remove extraneous
- paths for libio.
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
- (test03): Include typeinfo for bad_cast.
- * testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
- * testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
-
-2003-07-21 Doug Gregor <dgregor@apple.com>
-
- * include/bits/boost_concept_check.h:
- (_EqualityComparableConcept::__constraints): Remove != from the
- list of constraints; it is not listed in Table 28 of the C++98
- standard.
-
-2003-07-18 Andreas Jaeger <aj@suse.de>
-
- * config/abi/sparc-linux-gnu/baseline_symbols.txt: New file.
- * config/abi/mips-linux-gnu/baseline_symbols.txt: New file.
- * config/abi/hppa-linux-gnu/baseline_symbols.txt: New file.
- * config/abi/x86_64-linux-gnu/baseline_symbols.txt: Regenerated.
-
-2003-07-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/linker-map.gnu: Add __moneypunct_cache, __timepunct_cache.
- * config/locale/generic/messages_members.h: Tweaks.
- * config/locale/generic/monetary_members.cc
- (moneypunct::_M_initialize_moneypunct): Use cache.
- (moneypunct::~moneypunct): Delete cache.
- * config/locale/generic/time_members.cc:
- (__timepunct::_M_initialize_timepunct): Use cache.
- * config/locale/generic/time_members.h:
- (__timepunct::~__timepunct): Delete cache.
- (__timepunct::__timepunct): Set cache.
- * config/locale/gnu/messages_members.h: Tweaks.
- * config/locale/gnu/monetary_members.cc:
- (moneypunct::_M_initialize_moneypunct): Use cache.
- (moneypunct::~moneypunct): Delete cache.
- * config/locale/gnu/time_members.cc:
- (__timepunct::_M_initialize_timepunct): Use cache.
- * config/locale/gnu/time_members.h:
- (__timepunct::~__timepunct): Delete cache.
- (__timepunct::__timepunct): Set cache.
- * include/bits/locale_facets.h (__timepunct_cache): New.
- (__moneypunct_cache): New.
- * include/bits/locale_facets.tcc: Tweak.
- * src/locale.cc (__timepunct::_S_timezones): Adjust for cache.
- * src/locale-inst.cc: Instantiate caches.
- * src/globals.cc: Add "C" caches.
- * src/localename.cc: Use external "C" caches.
-
-2003-07-17 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/guide.html: Fix typo.
-
-2003-07-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/pod_char_traits.h: Add state template argument.
-
-2003-07-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.h (__num_base::_S_atoms_in): Add -+xX.
- (num_get::_M_convert_int): To _M_insert_int.
- (num_get::_M_convert_float): To _M_insert_float.
- * include/bits/locale_facets.tcc (num_get::_M_extract_float):
- Use caches for ctype, num_get.
- (num_get::_M_extract_int): Same.
- (num_get::get(bool)): Same.
- (__verify_grouping): Use size_t.
- * src/locale-inst.cc: Update.
- * src/locale.cc: Adjust _S_atoms_in.
-
-2003-07-16 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/mainpage.html: Move building/writing instructions...
- * docs/doxygen/guide.html: ...to here. New file.
-
-2003-07-16 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/ext/howto.html: Update URL for SGI STL docs.
- * docs/html/faq/index.html: Same.
- * docs/html/faq/index.txt: Regenerate.
-
-2003-07-16 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11528
- * include/bits/locale_facets.tcc (money_get::do_get):
- Strip only _leading_ zeros.
- * testsuite/22_locale/money_get/get/char/11528.cc: Add.
- * testsuite/22_locale/money_get/get/wchar_t/11528.cc: Add.
-
-2003-07-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-
- * include/ext/hash_map (class hash_multimap): Remove extra
- semicolons from __glibcxx_class_requires3 entries.
- * include/ext/hash_set (class hash_set): Ditto.
- (class hash_multiset): Ditto.
-
-2003-07-15 Petur Runolfsson <peturr02@ru.is>
-
- * include/bits/char_traits.h (char_traits<wchar_t>::move):
- Change last parameter from int_type to size_t.
-
-2003-07-15 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/stl_algo.h (includes, set_union, set_intersection,
- set_difference, set_symmetric_difference, max_element, min_element,
- next_permutation, prev_permutation, find_first_of, find_end):
- Document.
- * include/bits/stl_algobase.h (copy,copy_backward): Clarify overlap
- restrictions in docs.
- * include/bits/stl_heap.h (push_heap, pop_heap, make_heap, sort_heap):
- Document.
- * docs/doxygen/doxygroups.cc (setoperations): New group.
-
-2003-07-15 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/basic_string.h: Document public functions.
- * docs/doxygen/TODO: Update c21 todo.
-
-2003-07-15 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/stl_list.h: Document more functions.
- * docs/doxygen/TODO: Update c23 todo.
-
-2003-07-14 Paolo Carlini <pcarlini@unitus.it>
-
- * config/locale/gnu/c_locale.h (__convert_from_v): One more
- qualification.
-
-2003-07-14 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_tempbuf.h: Qualify free with std::.
- * src/locale.cc: Include <cstdlib>, qualify getenv.
-
-2003-07-14 Paolo Carlini <pcarlini@unitus.it>
-
- * config/locale/gnu/c_locale.h (__convert_from_v): Include
- <cstdio>. Qualify names.
- * config/locale/generic/c_locale.h (__convert_from_v): Ditto.
-
-2003-07-14 Paolo Carlini <pcarlini@unitus.it>
- Nathan C. Myers <ncm-nospam@cantrip.org>
-
- PR libstdc++/11378
- * include/std/std_fstream.h (xsputn): Declare only.
- * include/bits/fstream.tcc (xsputn): Define, optimize for the
- always_noconv() case: when __n is sufficiently large flush
- the buffer and issue a direct write, if possible combining the
- two with writev in __basic_file<>::xsputn_2.
- * config/io/basic_file_stdio.h (__basic_file<>::xsputn_2):
- New, declare.
- * config/io/basic_file_stdio.cc (__basic_file<>::xsputn_2):
- Define.
- * acinclude.m4 (GLIBCXX_CHECK_WRITE): New macro, checking for
- the availability of writev in <sys/uio.h>.
- * configure.in: Call here.
- * acconfig.h: Add undef for the corresponding symbol.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * config.h.in: Regenerate.
- * testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Tweak.
-
- * include/std/std_fstream.h (sync): Constify a variable.
-
-2003-07-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Fix line numbers.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
-
-2003-07-14 Gabriel Dos Reis <gcc@integrable-solutions.net>
-
- * config/locale/gnu/c_locale.h (__convert_from_v): Include
- <cstring> and <cstdlib>. Qualify names.
-
-2003-07-13 Mark Mitchell <mark@codesourcery.com>
-
- * config/locale/generic/c_locale.h: Include <cstdlib> and
- <cstring>.
- * include/bits/boost_concept_check.h: Add this-> to unqualified
- method calls.
- * include/bits/deque.tcc: Likewise.
- * include/bits/locale_facets.h : Likewise.
- * include/bits/ostream.tcc: Likewise.
- * include/bits/stl_algo.h: Likewise.
- * include/bits/stl_bvector.h: Likewise.
- * include/bits/stl_deque.h: Likewise.
- * include/bits/stl_list.h: Likewise.
- * include/bits/stl_tree.h: Likewise.
- * include/bits/stl_vector.h: Likewise.
- * include/bits/vector.tcc: Likewise.
- * include/ext/rope: Likewise.
- * include/ext/ropeimpl.h: Likewise.
- * include/ext/stdio_filebuf.h: Likewise.
-
-2003-07-11 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/basic_ios.h (copyfmt): Document.
- * include/bits/ios_base.h (event, event_callback, register_callback,
- xalloc, iword, pword): Document.
- (imbue, ~ios_base): Update docs on callbacks.
-
-2003-07-11 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCC_ENABLE_SYMVERS): Tweak comments. Add
- warning messages if the environment cannot support symbol versioning.
- (port_specific_symbol_file): It's plural, add an 's' on the end.
- * configure.host: Likewise.
- * src/Makefile.am: Likewise.
- * config/linker-map.gnu: Remove one semicolon, heh.
- * scripts/extract_symvers: Don't assume useful 'export' syntax.
- Set LANG as well as LC_ALL for possibly-broken sort(1)s.
- * aclocal.m4, configure, src/Makefile.in: Regenerated.
-
-2003-07-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.tcc: Use function object for
- __use_cache instead of template function. Partially specialize for
- __numpunct<_CharT>.
- * include/bits/locale_classes.h: Update friend declaration for
- __use_cache.
- (_M_install_cache): No throw exception specs.
- * src/locale.cc: Remove __use_cache specializations.
- * include/ext/pod_char_traits.h (length): Tweak.
- * include/bits/locale_facets.h (__numpunct_cache): Remove
- char_type typedef.
- * testsuite/testsuite_hooks.h (pod_unsigned_int): Remove.
- (pod_long): Remove.
- * testsuite/22_locale/numpunct/members/char/cache_1.cc: New.
- * testsuite/22_locale/numpunct/members/char/cache_2.cc: New.
- * testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc: New.
- * testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc: New.
- * testsuite/22_locale/numpunct/members/pod/1.cc: New.
- * testsuite/22_locale/numpunct/members/pod/2.cc: New.
-
-2003-07-09 Jerry Quinn <jlquinn@optonline.net>
-
- * src/ios.cc (_M_grow_words): Fix spelling.
-
-2003-07-09 Gawain Bolton <gp.bolton@computer.org>
-
- * include/bits/stl_tree.h: Move larger member functions in
- _Rb_tree_base_iterator and _Rb_tree_node to...
- * src/stl_tree.cc: Here.
- * src/Makefile.in: Add stl_tree.cc.
- * src/Makefile.in: Regenerated.
- * config/linker-map.gnu: Add symbols here.
-
-2003-07-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/ext/pod_char_traits.cc: New.
- * include/ext/pod_char_traits.h: New.
- * include/Makefile.am (ext_headers): Add pod_char_traits.h.
- * include/Makefile.in: Regenerate.
- * docs/html/21_strings/howto.html: Update.
-
-2003-07-08 Gawain Bolton <gp.bolton@computer.org>
-
- * testsuite/performance/list_create_fill_sort.cc: New.
-
-2003-07-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/locale/generic/numeric_members.cc: Correct type info.
- * config/locale/gnu/numeric_members.cc: Same.
- * include/bits/locale_facets.h: Same.
-
- * include/bits/char_traits.h: Correct spacing.
-
- * src/locale.cc: Wrap to 80 col.
-
-2003-07-07 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_complex.h: Partially revert last
- changes: cmath functions must not be qualified.
-
-2003-07-06 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Do not test for binutils
- 2.11 with globbing backport fix.
- * aclocal.m4, configure: Regenerated.
-
-2003-07-06 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (xsputn): Don't call _M_destroy_pback:
- if output is at all possible (!_M_reading), cannot be active.
-
- * include/std/std_fstream.h: Tweak comments to doxygen style.
-
-2003-07-06 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/locale_classes.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/locale_facets.tcc: Likewise.
- * src/locale.cc: Likewise.
- * src/localename.cc: Likewise.
-
-2003-07-06 Phil Edwards <pme@gcc.gnu.org>
-
- * include/bits/allocator_traits.h: Fix doxygen markup.
- * include/ext/mt_allocator.h: Likewise.
-
-2003-07-06 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/testsuite_hooks.h: Guard against a missing unlink().
-
-2003-07-05 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Bump minimal version
- requirement. Add port_specific_symbol_file variable.
- * configure.host: Add docs for port_specific_symbol_file.
- Clean up try_cpu block for x86.
- * config/linker-map.gnu: No more "last symbol can't have a
- semicolon" kaka. Add hook for port-specific symbols.
- * src/Makefile.am: Remove trailing whitespace.
- (libstdc++-symbol.ver): Detect the presence of port-specific
- symbols, and add them accordingly.
-
- * docs/html/17_intro/porting.texi: Bring up to date.
-
- * src/Makefile.in, aclocal.m4, configure,
- docs/html/17_intro/porting.html: Regenerated.
-
-2003-07-05 Phil Edwards <pme@gcc.gnu.org>
-
- * scripts/create_testsuite_files: New file.
- * testsuite/Makefile.am (all-local, check-performance): Use it.
- * testsuite/lib/libstdc++-v3-dg.exp (v3-computer-tests): Remove.
- * testsuite/Makefile.in: Regenerated.
-
- * testsuite/performance/filebuf_sputc.cc: Remove the temporary
- files at the end.
- * testsuite/performance/fstream_seek_write.cc: Likewise.
- * testsuite/performance/ofstream_insert_float.cc: Likewise.
- * testsuite/performance/ofstream_insert_int.cc: Likewise.
- * testsuite/abi_check.cc (main): Nicer spacing in usage output.
-
-2003-07-05 Gawain Bolton <gp.bolton@computer.org>
-
- * include/bits/stl_list.h: Performance and memory usage
- improvements. In particular, the behaviour of the constructor and
- destructor as the list header node is no longer dynamically
- allocated/de-allocated.
- * include/bits/list.tcc: Likewise.
-
-2003-07-05 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_complex.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/std/std_memory.h: Likewise.
- * include/std/std_valarray.h: Likewise.
-
-2003-07-05 Gawain Bolton <gp.bolton@computer.org>
-
- * include/bits/stl_tree.h: _Rb_tree_rebalance(): Add local
- variable for grandparent and use const
-
-2003-07-05 David Billinghurst <David.Billinghurst@riotinto.com>
-
- * testsuite/27_io/basic_filebuf/close/char/4879.cc: xfail on cygwin
- * testsuite/27_io/basic_filebuf/close/char/9964.cc: Ditto
- * testsuite/27_io/basic_filebuf/open/char/9507.cc: Ditto
- * testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Ditto
- * testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Ditto
- * testsuite/27_io/objects/char/7.cc: Ditto
- * testsuite/27_io/objects/char/9661-1.cc: Ditto
-
-2003-07-05 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_bitset.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
-
- * include/std/std_fstream.h: Change comment to doxygen style.
-
-2003-07-05 Phil Edwards <pme@gcc.gnu.org>
-
- * include/std/std_limits.h: More CPP->CXX changes.
- * scripts/check_survey.in: Likewise.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
-
- Move from CPP to CXX.
- * include/bits/c++config: Move to GLIBCXX from GLIBCPP.
- * testsuite/Makefile.am: Same.
- * testsuite/Makefile.in: Regenerate.
- * po/Makefile.am: Same.
- * po/Makefile.in: Regenerate.
- * libsupc++/Makefile.am: Same.
- * libsupc++/Makefile.in: Regenerate.
- * libmath/Makefile.am: Same.
- * libmath/Makefile.in: Regenerate.
- * include/Makefile.am: Same.
- * include/Makefile.in: Regenerate.
- * src/Makefile.am: Same.
- * src/Makefile.in: Regenerate.
- * acconfig.h: Same.
- * configure.host: Same.
- * configure.in: Same.
- * configure: Regenerate.
- * acinclude.m4: Same.
- * aclocal.m4: Same.
- * src: Change all files in this directory.
- * testsuite: Same.
- * include: Same, standardize include guards.
- * config: Same.
- * libsupc++: Same.
-
-2003-07-04 Zack Weinberg <zack@codesourcery.com>
-
- * testsuite/22_locale/collate/compare/wchar_t/2.cc
- * testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
- * testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
- * testsuite/22_locale/collate/hash/wchar_t/2.cc
- * testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
- * testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
- * testsuite/22_locale/collate/transform/wchar_t/2.cc
- * testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
- * testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
- XFAIL on all targets.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix missed variable.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-07-04 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facets.tcc (__int_to_char): Move common case
- to the top.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
- Petur Runolfsson <peturr02@ru.is>
-
- * config/io/basic_file_stdio.cc: Revert.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/deque.tcc: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/gslice_array.h: Likewise.
- * include/bits/indirect_array.h: Likewise.
- * include/bits/list.tcc: Likewise.
- * include/bits/mask_array.h: Likewise.
- * include/bits/slice_array.h: Likewise.
-
-2003-07-04 Gawain Bolton <gbolton@free.fr>
-
- * include/bits/stl_tree.h: Performance and memory usage
- improvements.
-
-2003-07-04 H.J. Lu <hongjiu.lu@intel.com>
-
- * Makefile.am: Replace PWD with PWD_COMMAND.
- * Makefile.in: Regenerated.
- * docs/html/Makefile: Likewise.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/valarray_array.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/vector.tcc: Likewise.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am: Update target_ to host_.
- * include/Makefile.in: Regenerate.
- * src/Makefile.am: Same.
- * src/Makefile.in: Regenerate.
-
- * config/os/gnu-linux/os_defines.h: Remove glibc-2.0 support.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_ENABLE_DEBUG_FLAGS): To
- --enable-libstdcxx-debug-flags.
- (GLIBCPP_ENABLE_DEBUG_FLAGS): To --enable-libstdcxx-debug.
- (GLIBCPP_ENABLE_PCH): To --enable-libstdcxx-pch.
- * aclocal.m4: Regenerate.
- * configure: Same.
- * docs/html/configopts.html: Update.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- Revert the fix for libstdc++/11378.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11378
- * include/std/std_fstream.h (xsputn): In the unbuffered case,
- provided always_noconv(), issue directly _M_file.xsputn.
- * testsuite/performance/filebuf_unbuf_sputn.cc: New.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_list.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/stl_queue.h: Likewise.
- * include/bits/stl_raw_storage_iter.h: Likewise.
- * include/bits/stl_tempbuf.h: Likewise.
- * include/bits/stl_tree.h: Likewise.
- * include/bits/stl_uninitialized.h: Likewise.
- * include/bits/stl_vector.h: Likewise.
- * include/ext/rope: Change includes order.
-
-2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.host (fpos_include_dir): Fix.
-
-2003-07-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_heap.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/stl_iterator_base_funcs.h: Likewise.
-
- * include/bits/stl_algo.h: Qualify __iterator_category too.
- * include/bits/stl_algobase.h: Likewise.
- * include/bits/stl_bvector.h: Likewise.
-
- * include/bits/stl_algo.h: Don't qualify the pair type.
-
-2003-07-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am (target_headers): Add fpos.h
- (bits_headers): Remove.
- * include/Makefile.in: Regenerate.
- * configure.in: Add FPOS_INC_SRCDIR, substitute it.
- * configure: Regenerate.
- * configure.host: Add fpos_include_dir.
- * config/os/gnu-linux/fpos.h: New.
- * config/os/generic/fpos.h: Add.
- * include/bits/fpos.h: Remove.
-
- * config/io/c_io_stdio.h: Remove fpos_t typedef.
-
- * include/bits/fstream.tcc: Tweaks.
- * include/std/std_fstream.h: Same.
-
- * testsuite/27_io/fpos/1.cc (test01): Uncomment. Move to...
- * testsuite/27_io/fpos/mbstate_t/1.cc: ...here.
- * testsuite/27_io/fpos/mbstate_t/2.cc: Same.
- * testsuite/27_io/fpos/mbstate_t/3.cc: Same.
- * testsuite/27_io/fpos/1.cc: New.
-
-2003-07-03 Benjamin Kosnik <bkoz@redhat.com>
- Petur Runolfsson <peturr02@ru.is>
-
- * include/std/std_streambuf.h: Remove _M_pos.
- * config/io/basic_file_stdio.h: Use seekpos instead of seekoff.
- * config/io/basic_file_stdio.cc: Same, use fseek instead of lseek,
- use fread/fwrite instead of read/write.
- * testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Fix.
- * testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Close filebufs
- before reading again.
- * testsuite/27_io/objects/char/6.cc: Tweak.
-
-2003-07-03 David Edelsohn <edelsohn@gnu.org>
-
- * testsuite/22_locale/num_put/put/char/7.cc: Guard with
- _GLIBCPP_USE_WCHAR_T.
-
-2003-07-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/basic_string.tcc (_M_replace_aux): Constify
- __n1 and __off1.
-
-2003-07-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_bvector.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
- * include/bits/stl_construct.h: Likewise.
- * include/bits/stl_deque.h: Likewise.
-
-2003-07-02 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/22_locale/num_put/put/char/7.cc: Include
- <testsuite_hooks.h>, tweak.
- * testsuite/22_locale/num_put/put/wchar_t/7.cc: Likewise.
-
-2003-07-01 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/Makefile.am (AM_MAKEFLAGS): Set to -j1 (affects
- check* targets, but not libs/programs).
- * testsuite/Makefile.in: Regenerate.
-
-2003-07-01 Roger Sayle <roger@eyesopen.com>
-
- * acinclude.m4 (GLIBCPP_CHECK_STDLIB_SUPPORT): Fix typo in CXXFLAGS.
- (GLIBCPP_CHECK_MATH_SUPPORT): Likewise.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-07-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix obvious error.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-07-01 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11389
- * include/bits/fstream.tcc (underflow): For encoding() == 0
- don't read more than __buflen chars.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc: New.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc: New.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc: New.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc: New.
-
-2003-07-01 Jerry Quinn <jlquinn@optonline.net>
-
- * 22_locale/num_put/put/char/7.cc: New.
- * 22_locale/num_put/put/wchar_t/7.cc: New.
-
-2003-06-30 Jerry Quinn <jlquinn@optonline.net>
-
- * src/locale.cc (__use_cache<numpunct>): Revert previous relocation.
- * include/bits/locale_facets.tcc (__use_cache<numpunct>): Ditto.
-
-2003-06-30 Benjamin Kosnik <bkoz@redhat.com>
-
- * 27_io/basic_filebuf/seekoff/char/1-in.cc: New.
- * 27_io/basic_filebuf/seekoff/char/1-io.cc: New.
- * 27_io/basic_filebuf/seekoff/char/1-out.cc: New.
- * 27_io/basic_filebuf/seekoff/char/2-in.cc: New.
- * 27_io/basic_filebuf/seekoff/char/2-io.cc: New.
- * 27_io/basic_filebuf/seekoff/char/2-out.cc: New.
- * 27_io/basic_filebuf/seekoff/char/2.cc: Remove.
- * 27_io/basic_filebuf/seekoff/char/3-in.cc: New.
- * 27_io/basic_filebuf/seekoff/char/3-io.cc: Change.
- * 27_io/basic_filebuf/seekoff/char/3-out.cc: New.
- * 27_io/basic_filebuf/seekoff/char/4-io.cc: Remove.
- * 27_io/basic_filebuf/seekpos/char/1-in.cc: New.
- * 27_io/basic_filebuf/seekpos/char/1-io.cc: New.
- * 27_io/basic_filebuf/seekpos/char/1-out.cc: New.
- * 27_io/basic_filebuf/seekpos/char/2-in.cc: New.
- * 27_io/basic_filebuf/seekpos/char/2-io.cc: New.
- * 27_io/basic_filebuf/seekpos/char/2-out.cc: New.
- * 27_io/basic_filebuf/seekpos/char/2.cc: Change.
- * 27_io/basic_filebuf/seekpos/char/3-in.cc: New.
- * 27_io/basic_filebuf/seekpos/char/3-io.cc: Remove.
- * 27_io/basic_filebuf/seekpos/char/3-out.cc: New.
- * 27_io/basic_filebuf/seekpos/char/4-io.cc: Remove.
- * data/seekoff-1.tst: Remove.
- * data/seekoff-1io.tst: New.
- * data/seekoff-1out.tst: New.
- * data/seekoff-2.tst: Remove.
- * data/seekoff-2io.tst: New.
- * data/seekoff-2out.tst: New.
- * data/seekoff.txt
- * data/seekpos-1.tst: Remove.
- * data/seekpos-1io.tst: New.
- * data/seekpos-1out.tst: New.
- * data/seekpos-2.tst: Remove.
- * data/seekpos-2io.tst: New.
- * data/seekpos-2out.tst: New.
- * data/seekpos.txt: New.
-
-2003-06-30 Jerry Quinn <jlquinn@optonline.net>
-
- * src/locale.cc (__use_cache<numpunct>): Move from here ...
- * include/bits/locale_facets.tcc (__use_cache<numpunct>): To
- here.
-
-2003-06-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_algobase.h: Fully qualify standard
- functions with std::, thus avoiding Koenig lookup.
-
-2003-06-30 Doug Gregor <dgregor@apple.com>
-
- * include/bits/locale_facets.tcc (money_get::do_get): Avoid
- subscripting empty string.
-
-2003-06-30 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/Makefile.am (check-am): Do not override.
- (baseline_symbols): Declare as PHONY, so no need to 'touch' it.
- * testsuite/Makefile.in: Regenerate.
-
-2003-06-30 Doug Gregor <dgregor@apple.com>
-
- * testsuite/24_iterators/insert_iterator.cc (test01, test02):
- Don't initialize an insert_iterator with a singular iterator.
-
-2003-06-30 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_ENABLE_PCH): Add bits for --enable-pch.
- * aclocal.m4: Regenerate.
- * configure.in (GLIBCPP_CHECK_PCH): Move, change to
- GLIBCPP_ENABLE_PCH, default to yes.
- * configure: Regenerate.
- * docs/html/configopts.html: Add --enable-pch.
-
-2003-06-30 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/lib/libstdc++-v3-dg.exp: Add comments.
- (libstdc++-v3-init): Also set LD_RUN_PATH.
-
-2003-06-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (_M_mode): Unused by streambuf, move
- from here to filebuf and stringbuf.
- (~basic_streambuf()): Don't set _M_mode.
- (basic_streambuf()): Don't set _M_mode.
- * include/std/std_fstream.h (_M_mode): Move here, from streambuf.
- (~basic_filebuf()): Clean up.
- * include/bits/fstream.tcc (basic_filebuf()): Set _M_mode.
- * include/std/std_sstream.h (_M_mode): Move here, from streambuf.
- * testsuite/27_io/basic_streambuf/cons/char/1.cc: Don't set _M_mode.
- * testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
- * testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
- * testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
- * testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
-
-2003-06-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_M_underflow): Remove.
- (uflow): Remove, inherited from streambuf.
- (underflow): Only declare.
- * include/bits/fstream.tcc (_M_underflow): Rename to
- underflow, to which is equivalent for __bump == false,
- simplify.
- * include/std/std_sstream.h (_M_underflow): Remove.
- (uflow): Remove, inherited from streambuf.
- (underflow): Only declare.
- * include/bits/sstream.tcc (_M_underflow): Rename to
- underflow, to which is equivalent for __bump == false,
- simplify.
-
-2003-06-29 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/stl_algo.h: Fully qualify standard functions
- with std::, thus avoiding Koenig lookup.
-
-2003-06-29 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc:
- Improve type correctness-wise.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc:
- Likewise.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc:
- Likewise.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc:
- Likewise.
-
-2003-06-29 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (uflow): According to
- 27.5.2.4.3,p16, don't check gptr() < egptr().
-
-2003-06-28 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9875
- * include/bits/fstream.tcc (seekoff): Fix for encoding() > 0.
- (seekpos): Likewise.
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc:
- New test.
- * testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc:
- New test.
-
-2003-06-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/testsuite_performance.h (__gnu_cxx_test): Change
- output name to libstdc++-v3-performance.sum.
- * testsuite/Makefile.am (CLEANFILES): Remove .performance.
- * testsuite/Makefile.in: Regenerate.
-
-2003-06-27 Matthias Klose <doko@debian.org>
-
- * testsuite/Makefile.am (check-abi, check-abi-verbose): Save
- output of abi-check in libstdc++-v3-abi.sum.
- * testsuite/Makefile.in: Regenerate.
-
-2003-06-27 Krister Walfridsson <cato@df.lth.se>
-
- * config/os/bsd/netbsd/ctype_noninline.h
- (_C_ctype_): Declare.
- (ctype<char>::classic_table): Return _C_ctype_ + 1.
- (ctype<char>::ctype): Use classic_table.
-
-2003-06-27 Paolo Carlini <pcarlini@unitus.it>
- Nathan C. Myers <ncm-nospam@cantrip.org>
-
- PR libstdc++/9178
- * include/bits/fstream.tcc (_M_underflow): Properly estimate
- the worst-case number of external bytes for a given get area.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: New.
-
-2003-06-27 Paolo Carlini <pcarlini@unitus.it>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/11305
- * include/bits/fstream.tcc (overflow): Properly estimate the
- worst-case number of external bytes for a given put area
- (by using codecvt::max_length()).
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1: New.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: New.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: New.
- * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: New.
-
-2003-06-27 Nathan Sidwell <nathan@codesourcery.com>
-
- * config/linker-map.gnu: Remove ; after __numpunct_cache.
-
-2003-06-26 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/ios_base.h (ios_base::_M_getloc): Return reference
- to the imbued locale.
- * include/bits/locale_facets.tcc (num_put::_M_convert_int): Use
- _M_getloc.
- (num_put::_M_convert_float): Use.
-
-2003-06-26 Benjamin Kosnik <bkoz@redhat.com>
- Jerry Quinn <jlquinn@optonline.net>
-
- * config/linker-map.gnu: Add __numpunct_cache.
- * config/locale/gnu/numeric_members.cc
- (numpunct::_M_initialize_numpunct): Account for _M_data, fill in
- all elements for "C" locale.
- (numpunct::~numpunct): Delete _M_data.
- * config/locale/generic/numeric_members.cc: Same.
- * include/bits/basic_ios.tcc
- (basic_ios::init): Remove __locale_cache bits.
- (basic_ios::_M_cache_locale): Same.
- * include/bits/ios_base.h: Same. Tweaks.
- * include/bits/locale_classes.h: Tweaks. Reorder classes.
- (__use_cache): Make friends with _Impl, locale.
- (_Impl::_M_caches): Add.
- (_Impl::_M_install_cache): Add.
- * include/bits/locale_facets.h (__numpunct_cache): New.
- (numpunct): Encapsulate data members in __numpunct_cache member,
- _M_data. Adjust virtuals.
- (numpunct::numpunct): New ctor for the same.
- (__locale_cache_base): Remove.
- (__locale_cache): Remove.
- * include/bits/locale_facets.tcc (__use_cache): New function,
- specializations.
- (num_put::_M_convert_int, _M_convert_float, do_put): Use it.
- * src/globals.cc: Add cache_vec, numpunct_cache_c, numpunct_cache_w.
- * src/ios.cc (ios_base::ios_base): Remove __locale_cache.
- * src/locale-inst.cc: Same. Add __numpunct_cache.
- * src/locale.cc: Tweak inlines.
- (__use_cache): Define specializations.
- * src/localename.cc: Use global bits.
- (_Impl::~Impl): Deal with __numpunct_cache destruction.
- (_Impl::_Impl): Same. Pre-cache standard numpunct facets.
- (_Impl::_M_init_facet): Take into account __numpunct_cache.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Update line numbers.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
-
-2003-06-26 Nathan C. Myers <ncm-nospam@cantrip.org>
- Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/performance/filebuf_copy.cc: New, testing char
- by char file copy.
-
-2003-06-26 Paolo Carlini <pcarlini@unitus.it>
- Nathan C. Myers <ncm-nospam@cantrip.org>
-
- * include/bits/fstream.tcc (_M_underflow): When the actual
- end of file is reached, set 'uncommitted' mode to allow a
- next write without an intervening seek (see C++98 27.8.1.1,2
- and C89 7.9.5.3).
- * testsuite/27_io/basic_filebuf/underflow/char/2.cc: New.
-
-2003-06-25 Nathan C. Myers <ncm-nospam@cantrip.org>
-
- * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
- sputc): Move inline, from here...
- * include/std/std_streambuf.h: ... to here.
-
- * include/std/std_streambuf.h (snextc, sbumpc, sgetc,
- sputbackc, sungetc, sputc): Use __builtin_expect.
-
-2003-06-24 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/mainpage.html: Use a useful title.
-
-2003-06-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/documentation.html: Remove assignment info.
- * docs/html/17_intro/contribute.html: Edits.
- * docs/html/17_intro/libstdc++-assign.tx: Remove.
-
- * docs/html/test.html: Update.
-
- * README: Update.
-
-2003-06-24 Benjamin Kosnik <bkoz@redhat.com>
- Ulrich Drepper <drepper@redhat.com>
-
- * testsuite/testsuite_performance.h: Tweak mallinfo.
-
-2003-06-24 Paolo Carlini <pcarlini@unitus.it>
- Nathan C. Myers <ncm-nospam@cantrip.org>
-
- * include/std/std_fstream.h (_M_filepos): Remove.
- (_M_reading, _M_writing): New, encode the various I/O modes:
- 'read', 'write' and 'uncommitted'.
- (sync): If there is something to flush, do it, then go to
- 'uncommitted' mode.
- * include/bits/fstream.tcc (_M_set_buffer): Overhaul to deal
- with three different cases: __off > 0 (upon underflow),
- __off == 0 (upon overflow), __off == -1 (upon open, setbuf,
- seekoff/pos).
- (_M_underflow): Don't call overflow, set _M_reading to true
- on success, tweak.
- (pbackfail): Set _M_reading to true on pback creation, tweak.
- (overflow): Don't seek, deal with overflow in 'uncommitted' mode,
- set _M_writing to true on success, tweak.
- (seekoff): Simplify, set _M_reading, _M_writing to false, call
- _M_set_buffer(-1) ('uncommitted').
- (open, close, setbuf): Set _M_reading, _M_writing to false and
- call _M_set_buffer(-1), tweak.
- (basic_filebuf): Don't set _M_buf_unified.
- (_M_destroy_internal_buffer): Don't call setg and setp.
- * include/ext/stdio_filebuf.h (stdio_filebuf): Use _M_reading,
- _M_writing and _M_set_buffer(-1).
- * include/std/std_streambuf.h (_M_move_out_cur, _M_move_in_cur,
- _M_out_lim, _M_buf_unified): Remove.
- (basic_streambuf): Don't set _M_out_lim and _M_buf_unified.
- (setp): Don't set _M_out_lim.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Fix for
- the new logic ('read', 'write' and 'uncommitted' modes): e.g.,
- upon open the mode is 'uncommitted' and therefore the put area
- pointers are null.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: Ditto.
-
- * include/bits/fstream.tcc (showmanyc): Use only the
- documented derivation interface to basic_streambuf (gptr(),
- setg(), etc.) to work right with user specializations.
- * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
- sputc, xsgetn, xsputn, __copy_streambufs): Likewise.
- * include/std/std_streambuf.h (in_avail, sgetc, uflow, stossc):
- Likewise.
- * include/std/std_fstream.h (_M_create_pback, _M_destroy_pback,
- xsgetn): Likewise.
-
-2003-06-23 Loren J. Rittle <ljrittle@acm.org>
-
- * configure.host (freebsd*): Set abi_baseline_pair.
- * config/abi/i386-freebsd4/baseline_symbols.txt: Update from 3.2
- (at or near first release) to 3.3.
- * config/abi/i386-freebsd5/baseline_symbols.txt: New file.
- * config/abi/alpha-freebsd5/baseline_symbols.txt: New file.
- * config/abi/sparc-freebsd5/baseline_symbols.txt: New file.
-
- * include/ext/mt_allocator.h: Portability.
- * testsuite/testsuite_performance.h: Likewise.
-
-2003-06-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * docs/html/17_intro/libstdc++-assign.txt: Update address.
-
- * testsuite/performance/ifstream_getline.cc: Fix.
-
-2003-06-23 Doug Gregor <dgregor@apple.com>
-
- * include/bits/boost_concept_check.h: Don't use _D or _R for type
- names.
-
-2003-06-22 Paolo Carlini <pcarlini@unitus.it>
- Nathan C. Myers <ncm-nospam@cantrip.org>
-
- * include/std/std_streambuf.h (_M_move_out_cur): _M_out_lim
- is now used only for filebuf, when _M_buf_unified is true.
- epgtr() plays the role of _M_out_lim but it's only updated
- upon overflow, underflow, uflow, seekoff/pos.
- * include/bits/sstream.tcc (_M_underflow): New, implements
- stringbuf::underflow and uflow.
- (seekoff, seekpos): Tweak, use _M_update_egptr.
- * include/std/std_sstream.h (str): Rewrote, deal correctly
- with the new logic, in particular, when pptr() > egptr().
- (_M_sync): When __testout && !__testin set all the get area
- pointers to the current string end.
- (_M_update_egptr): New, internal function updating egptr()
- to the actual string end.
- (_M_underflow): New, declare.
- (underflow): Dispatch to _M_underflow(false).
- (uflow): Dispatch to _M_underflow(true).
-
- * include/bits/sstream.tcc (pbackfail, overflow, seekoff,
- seekpos): Use only the documented derivation interface to
- basic_streambuf (gptr(), setg(), etc.) to work right with
- user specializations.
- * include/std/std_sstream.h (str, _M_sync): Likewise.
-
-2003-06-20 Doug Gregor <dgregor@apple.com>
-
- * testsuite/20_util/auto_ptr.cc: Don't dereference NULL auto_ptr
- * testsuite/21_strings/basic_string/replace/char/4.cc: Don't
- dereference end iterator.
- * testsuite/21_strings/basic_string/replace/wchar_t/4.cc: Same.
- * testsuite/22_locale/ctype/narrow/char/1.cc: Don't subscript with
- index equal to the length of a string.
- * testsuite/22_locale/ctype/narrow/char/2.cc: Same.
- * testsuite/22_locale/ctype/narrow/wchar_t/1.cc: Same.
- * testsuite/22_locale/ctype/narrow/wchar_t/2.cc: Same.
- * testsuite/22_locale/ctype/widen/char/1.cc: Same.
- * testsuite/22_locale/ctype/widen/wchar_t/1.cc: Same.
- * testsuite/23_containers/list_modifiers.cc: Don't dereference
- singular reverse iterator.
- * testsuite/23_containers/vector_bool.cc: Don't increment singular
- iterator.
- * testsuite/24_iterators/rel_ops.cc: Don't compare singular iterator.
-
-2003-06-20 Doug Gregor <dgregor@apple.com>
-
- * include/bits/basic_string.h (basic_string::replace): Dispatch
- _InputIterator version based on _Is_integer.
- * include/bits/basic_string.tcc (basic_string::replace):
- Renamed replace(iterator, iterator, size_type, _CharT) to
- _M_replace_aux.
- * testsuite/21_strings/basic_string/assign/char/1.cc (test01):
- Test basic_string::assign(_InputIterator, _InputIterator),
- which calls basic_string::replace(iterator, iterator,
- _Input_iterator, _InputIterator).
-
-2003-06-20 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/testsuite_performance.h (resource_counter): Don't use
- mallinfo at the moment.
-
-2003-06-20 Matthias Klose <doko@debian.org>
-
- * configure.host: Set try_cpu to target_cpu for existing
- baseline files.
-
-2003-06-19 Andreas Jaeger <aj@suse.de>
-
- * testsuite/Makefile.am (extract_symvers): Revert accidental
- change.
- * testsuite/Makefile.in: Regenerate.
-
- * configure.in: Pass MULTISUBDIR to testsuite/Makefile.
- * configure: Regenerated.
-
-2003-06-19 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (_M_sync): Make non virtual.
-
-2003-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/testsuite_performance.h (time_counter): New.
- (resource_counter): New.
- (report_performance): New.
- (start_counters): New.
- (stop_counters): New.
- (clear_counters): New.
- * testsuite/performance/allocator.cc: Instrument.
- * testsuite/performance/cout_insert_int.cc: Same.
- * testsuite/performance/complex_norm.cc: Same.
- * testsuite/performance/filebuf_sputc.cc: New.
- * testsuite/performance/fstream_seek_write.cc: Same.
- * testsuite/performance/ifstream_getline.cc: Same.
- * testsuite/performance/map_create_fill.cc: Same.
- * testsuite/performance/ofstream_insert_float.cc: Same.
- * testsuite/performance/ofstream_insert_int.cc: Same.
- * testsuite/performance/string_append.cc: Convert.
- * scripts/check_performance: New.
- * testsuite/Makefile.am (check-performance): New.
- (CLEANFILES): Add.
-
-2003-06-18 Paolo Carlini <pcarlini@unitus.it>
- Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/std_sstream.h (setbuf): Check __n >= 0.
- * include/bits/fstream.tcc (setbuf): Tweak.
-
-2003-06-18 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (seekoff): We can't seek beyond
- _M_out_lim, therefore _M_move_out_cur boils down to simply
- updating _M_out_cur.
- (seekpos): Likewise, clean up.
-
-2003-06-18 Nathan C. Myers <ncm-nospam@cantrip.org>
- Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (setbuf): Allow (__s, 1) too,
- simply equivalent to the unbuffered case (0, 0) as far as
- _M_buf_size is concerned.
-
-2003-06-18 Andreas Jaeger <aj@suse.de>
-
- * testsuite/Makefile.am (new-abi-baseline): Create baseline
- directory.
- (baseline_file): Use baseline_dir.
- (baseline_dir): New.
- (mkinstalldirs): New.
-
- * acinclude.m4: Rename baseline_file to baseline_dir, strip
- filename from baseline_dir.
-
- * testsuite/Makefile.in: Regenerated.
- * Makefile.in: Regenerated.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.in: Missed check_survey bit.
- * configure: Regenerated.
-
-2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * scripts: New.
- * config/abi/extract_symvers: Move to...
- * scripts/extract_symvers: ...here.
- * mkcheck.in: Move to..
- * scripts/check_survey.in: ...here.
- * testsuite_flags.in: Move to..
- * scripts/testsuite_flags.in: ...here.
- * configure.in: Change check and testsuite_flags locations.
- * configure: Regenerate.
- * testsuite/Makefile.am (current_symbols.txt): Change location.
- * testsuite/Makefile.in: Regenerate.
- * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
- location of testsuite_flags.
- * Makefile.am (check-script): Move..
- (check-script-install): Move...
- * testsuite/Makefile.am: ... here.
- * testsuite/Makefile.in: Regenerate.
- * Makefile.in: Regenerate.
-
-2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/abi/i486-linux-gnu/baseline_symbols.txt: Update to 3.3.0.
-
-2003-06-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * Makefile.am (check-abi): Move...
- (new-abi-baseline): Move...
- * testsuite/Makefile.am: ...here.
- (new-abi-baseline): Conditionalize.
- (check-abi): Conditionalize.
- (check-abi-verbose): New.
- * Makefile.in: Regenerate.
- * testsuite/Makefile.in: Regenerate.
- * configure.in: Consolidate testsuite configure bits.
- * acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Same.
- * configure: Regenerate.
- * aclocal.m4: Regenerate.
- * testsuite/abi_check.cc: Add --check-verbose.
- Only output detailed information if --check-verbose.
-
-2003-06-16 Andreas Jaeger <aj@suse.de>
-
- * testsuite/abi_check.cc: Create summary report.
-
-2003-06-16 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Fix
- for systems with BUFSIZ != 8192.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc:
- Minor tweaks.
-
-2003-06-16 Andreas Jaeger <aj@suse.de>
-
- * acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Make
- check-abi multilib aware.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-06-16 Benjamin Kosnik <bkoz@redhat.com>
- Andreas Jaeger <aj@suse.de>
-
- * configure.host: Set x86_64 abi_baseline pair correctly.
-
-2003-06-16 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Split and
- fix for missing seeks between gets and puts into...
- * testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc: New.
-
-2003-06-15 Richard Henderson <rth@redhat.com>
-
- * config/linker-map.gnu: Export virtual function thunks for
- 64-bit systems too.
-
-2003-06-13 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/abi/i686-pc-linux-gnu: To..
- * config/abi/i486-linux-gnu: ...this.
- * config/abi/alphaev67-unknown-linux-gnu: To..
- * config/abi/alpha-linux-gnu: ...this.
- * config/abi/ia64-unknown-linux-gnu: To...
- * config/abi/ia64-linux-gnu: ...this.
- * config/abi/x86_64-unknown-linux-gnu: To...
- * config/abi/x86_64-linux-gnu: ...this.
- * config/abi/i386-unknown-freebsd4: To...
- * config/abi/i386-freebsd4: ...this.
- * config/linker-map.gnu: Cleanups, move libsupc++ bits into
- CXXABI.
- * configure.host: abi_baseline_triplet to abi_baseline_pair.
- Simplify cpu bits so that abi_baseline_pair can use the same
- cpu configuration.
- * acinclude.m4: Same.
- * aclocal.m4: Regenerate.
- * configure.in: Can't get enable_abi_check to yes unless native.
- * configure: Regenerate.
-
-2003-06-13 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Split and
- fix for missing seeks between gets and puts into...
- * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: New.
- * testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc: New.
- * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Same, into...
- * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: New.
- * testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Fix
- for missing seeks between gets and puts.
- * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Ditto.
- * testsuite/data/seekoff-1.tst: New.
- * testsuite/data/seekoff-2.tst: New.
- * testsuite/data/seekpos-1.tst: New.
- * testsuite/data/seekpos-2.tst: New.
-
-2003-06-13 Nathan C. Myers <ncm-nospam@cantrip.org>
-
- Avoid multi-processor bus contention on increment/decrement-and-
- test of the reference count in the empty-string object, by comparing
- addresses first, and never touching the reference count of the empty-
- string object.
- * include/bits/basic_string.h:
- (_S_empty_rep_storage): Move into basic_string<>::_Rep for use by its
- members.
- (_Rep::_S_empty_rep()): New accessor.
- (_Rep::_M_length, _Rep::_M_capacity, _Rep::_M_references): Move to
- a base class _Rep_base.
- (_Rep::_M_dispose, _Rep::_M_refcopy): Check for the empty string.
- (basic_string()): Change to use _M_refdata() in place of _M_refcopy(),
- since no longer must increment its refcount.
- * include/bits/basic_string.tcc:
- (_Rep::_M_destroy, _M_leak_hard): Check for the empty string and
- return immediately. The former might be unnecessary. The latter
- prevents begin() and end() from cloning it unnecessarily.
- (_S_construct(_InIterator, _InIterator, const _Alloc&,
- input_iterator_tag), _S_construct(_InIterator, _InIterator,
- const _Alloc&, forward_iterator_tag), _S_construct(size_type, _CharT,
- const _Alloc&)): Change to use _M_refdata() in place of _M_refcopy().
- (_M_mutate): Check for the empty string and treat it as shared.
- This is necessary here because _M_mutate is sometimes called with
- all-zero arguments; in all other uses of _M_is_shared, the test comes
- out right anyhow.
-
-2003-06-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/allocator-inst.cc: Explicitly instantiate.
- * include/ext/pool_allocator.h: Inhibit implicit instantiations.
- Tweaks.
- * config/linker-map.gnu: Add __pool_alloc bits. Tweaks.
-
-2003-06-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Simplify.
- * aclocal.m4: Regenerate.
- * Makefile.am (SUBDIRS): Remove libio.
- * Makefile.in: Regenerate.
- * configure.in: Same.
- * configure: Regenerate.
- * config/io/basic_file_libio.cc: Remove.
- * config/io/basic_file_libio.h: Remove.
- * config/io/c_io_libio_codecvt.c: Remove.
- * config/io/c_io_libio.h: Remove.
- * libio/*: Remove.
- * src/Makefile.am: Same.
- * src/Makefile.in: Regenerate.
- * docs/html/configopts.html: Edits.
- * docs/html/explanations.html: Edits.
-
-2003-06-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/stl_alloc.h (__debug_alloc): Move out.
- (__malloc_alloc): Same.
- (__pool_alloc): Same.
- (__new_alloc): Same.
- Rename to..
- * include/bits/allocator.h: ...this.
- * include/bits/stl_deque.h: Modify comment.
- * include/bits/stl_tree.h: Modify include.
- * include/std/std_memory.h: Same.
- * include/ext/rope: Same.
- * include/ext/slist: Same.
- * include/std/std_vector.h: Same.
- * include/std/std_stack.h: Same.
- * include/std/std_queue.h: Same.
- * include/std/std_list.h: Same.
- * include/std/std_deque.h: Same.
- * include/backward/alloc.h: Same.
- * include/ext/debug_allocator.h: New.
- * include/ext/malloc_allocator.h: New.
- * include/ext/pool_allocator.h: New.
- * include/ext/new_allocator.h: New.
- * include/bits/pthread_allocimpl.h: Remove.
- * include/bits/stl_pthread_alloc.h: Remove.
- * include/Makefile.am (ext_headers): Add.
- * include/Makefile.in: Regenerate.
- * src/stl-inst.cc: Use __gnu_cxx namespace.
- * src/stl-inst.cc: Move to...
- * src/allocator-inst.cc: Here.
- * src/Makefile.am (sources): Update.
- * src/Makefile.in: Regenerate.
- * config/linker-map.gnu: Remove __pool_alloc bits.
- * testsuite/ext/headers.cc: Add.
- * testsuite/ext/allocators.cc: Fixup.
-
-2003-06-11 Stefan Olsson <stefan@snon.net>
- Ola Rönnerup <fnolis@home.se>
-
- * include/Makefile.am (ext_headers): Add.
- * include/Makefile.in: Regenerate.
- * include/ext/mt_allocator.h: New file.
-
-2003-06-10 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (close): Clean up a bit.
-
- * include/bits/streambuf.tcc (sbumpc): Clean up a bit.
-
- * include/std/std_fstream.h (_M_destroy_pback): _M_pback_cur_save
- - the saved _M_in_cur, that is - cannot be null.
- (sync): Constify a variable.
-
- * include/std/std_streambuf.h: Tweak a comment.
- (in_avail): Constify a variable.
-
-2003-06-10 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/17_intro/BUGS: Update from 2.90.8 snapshot.
- * docs/html/17_intro/CHECKLIST: Bring up to date with respect to
- correctness of container::iterator typedefs. Fix whitespace.
- * docs/html/20_util/howto.html, docs/html/ext/howto.html: Add links
- to allocator docs.
- * docs/html/documentation.html: Regenerate.
-
- * include/bits/basic_string.h, include/bits/basic_string.tcc,
- include/bits/deque.tcc, include/bits/list.tcc, include/bits/stl_algo.h,
- include/bits/stl_algobase.h, include/bits/stl_bvector.h,
- include/bits/stl_deque.h, include/bits/stl_iterator_base_funcs.h,
- include/bits/stl_list.h, include/bits/stl_uninitialized.h,
- include/bits/stl_vector.h, include/bits/vector.tcc,
- include/ext/algorithm, include/ext/slist, include/std/std_bitset.h:
- Change _Iter names to _Iterator, and __pos to __position.
-
- * include/bits/stl_relops.h, include/bits/stl_numeric.h,
- include/bits/stl_multiset.h, include/bits/stl_set.h:
- Remove emacs markers.
-
- * include/bits/stl_threads.h (_STL_auto_lock): Add __unused__.
-
-2003-06-10 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (overflow): According to
- 27.5.2.4.5, overflow() returns not_eof(eof()).
- * testsuite/27_io/basic_filebuf/overflow/char/2.cc: New.
- * testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Ditto.
-
-2003-06-10 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (_M_underflow): Check overflow return
- value; tweak slightly.
-
-2003-06-09 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (_M_underflow): Do not special
- case the unbuffered case, which really means simply a one char
- get area.
- (basic_filebuf): Initialize _M_buf_size.
- (setbuf): Unbuffered means _M_buf_size == 1, since only
- _M_buf_size - 1 == 0 chars are going to be used for the
- put area and 1 for the get area.
- * include/std/std_streambuf.h (_M_buf_size): Move to basic_filebuf.
- (~basic_streambuf): Tweak.
- (basic_streambuf): Do not initialize _M_buf_size.
- * include/std/std_fstream.h (_M_buf_size): Add from basic_streambuf.
- (~basic_filebuf): Tweak.
- (_M_set_buffer): Tweak, considering that _M_buf_size == 1 is the
- unbuffered situation (i.e., put area pointers NULL).
- * include/bits/streambuf.tcc (sbumpc): Clean up.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc: New.
-
-2003-06-09 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4: Move all AM_CONDITIONAL calls out.
- (GLIBCPP_CONFIGURE): Set defaults for variables used in AM_CONDITIONAL
- statements.
- * configure.in: Centralize AM_CONDITIONALs so that they are always
- run. Make use of GLIBCPP_IS_CROSS_COMPILING.
- * aclocal.m4, configure: Regenerated.
-
-2003-06-09 Paolo Carlini <pcarlini@unitus.it>
-
- * docs/html/ext/howto.html ('LWG Issues'): Add issue 235.
-
-2003-06-06 Nathan Myers <ncm-nospam@cantrip.org>
-
- * include/bits/stl_iterator.h
- (reverse_iterator::reverse_iterator()): Apply DR235: default
- constructor default-initializes data member. Instantiated on a
- pointer type, the member has to end up equal to zero.
-
-2003-06-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/stl_alloc.h: Cleanups.
- * include/ext/functional: Same.
- * include/ext/hash_map: Same.
- * include/ext/hash_set: Same.
- * include/ext/iterator: Same.
- * include/ext/memory: Same.
- * include/ext/numeric: Same.
- * include/ext/rb_tree: Same.
- * include/ext/ropeimpl.h: Same.
- * include/ext/slist: Same.
- * include/ext/stdio_filebuf.h: Same.
- * include/ext/stdio_sync_filebuf.h: Same.
- * include/ext/stl_rope.h: Move to...
- * include/ext/rope: ...here.
- * include/ext/stl_hash_fun.h: Move to...
- * include/ext/hash_fun.h: ...here.
- * include/ext/stl_hashtable.h: Move to...
- * include/ext/hashtable.h: ...here.
- * include/backward/hashtable.h: Reflect new names.
- * include/Makefile.am: Same.
- * include/Makefile.in: Regenerated.
-
-2003-06-05 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/9024
- * include/bits/fstream.tcc (_M_underflow): Fix for unbuffered.
- * include/bits/stl_algobase.h: Tweak.
- * include/std/std_fstream.h: Move _M_buf_size to...
- * include/std/std_streambuf.h: ...here. Modify.
- * include/bits/streambuf.tcc: Same.
- * testsuite/testsuite_hooks.h: Tweak.
- * testsuite/testsuite_io.h (constraint_filebuf): New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/2.cc: Split into...
- * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: New.
- * testsuite/27_io/basic_filebuf/sgetn/char/3.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/snextc/char/2-out.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sputc/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/2.cc: Split into...
- * testsuite/27_io/basic_filebuf/sputc/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Split into...
- * testsuite/27_io/basic_filebuf/sputn/char/1-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/2-in.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: New.
- * testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: New.
- * testsuite/data/sgetc.txt: New.
- * testsuite/data/sgetn.txt: New.
-
-2003-06-05 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/11095
- * include/bits/istream.tcc (operator>>(basic_istream&, _CharT*)):
- Deal with width() smaller than zero.
- * include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT),
- operator<<(basic_ostream&, char), operator<<(basic_ostream&, const
- _CharT*), operator<<(basic_ostream<_CharT, _Traits>&, const
- char*), operator<<(basic_ostream<char, _Traits>&, const char*),
- operator<<(basic_ostream, const basic_string&)): Likewise.
-
- * testsuite/27_io/basic_istream/extractors_character/char/
- (11095-i.cc, 11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
- * testsuite/27_io/basic_ostream/inserters_character/char/
- (11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
- * testsuite/27_io/basic_ostream/inserters_character/wchar_t/
- (11095-od.cc, 11095-oe.cc, 11095-of.cc): New.
-
-2003-06-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * acinclude.m4 (GLIBCPP_CHECK_PCH): Only set glibcpp_PCHFLAGS if
- .gch compilation works.
- * aclocal.m4, configure: Regenerate.
- * testsuite_flags.in (--build-cxx): Use glibcpp_PCHFLAGS to
- initialize PCHFLAGS.
-
-2003-06-04 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/basic_string.h (_M_fold, insert(iterator, _CharT),
- erase(iterator), erase(iterator, iterator), c_str,
- compare(const basic_string&)): Constify various variables.
- * include/bits/basic_string.tcc (_S_construct(_InIter, _InIter,
- const _Alloc&, input_iterator_tag), _M_destroy, _M_mutate,
- _S_create, resize, _M_replace, _M_replace_safe,
- append(const basic_string&), append(const basic_string&, size_type,
- size_type), append(const _CharT*, size_type), append(size_type,
- _CharT), operator+(const _CharT*, const basic_string&),
- operator+(_CharT, const basic_string&), replace(iterator, iterator,
- size_type, _CharT), find(const _CharT*, size_type, size_type),
- find(_CharT, size_type), rfind(const _CharT*, size_type, size_type),
- rfind(_CharT, size_type), compare(size_type, size_type,
- const basic_string&), compare(size_type, size_type,
- const basic_string&, size_type, size_type), compare(const _CharT*),
- compare(size_type, size_type, const _CharT*), compare(size_type,
- size_type, const _CharT*, size_type)): Likewise.
-
-2003-06-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/fstream.tcc (pbackfail): Make a rarely taken
- 'if' branch less obscure.
-
-2003-06-02 Andrew Pinski <pinskia@physics.uc.edu>
-
- PR libstdc++/9815
- * config/cpu/i386/atomicity.h (__exchange_and_add): add intel
- asm case to asm.
- * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise.
- (__atomic_add): likewise.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (pbackfail): Minor clean up and
- reformatting, consistent with basic_filebuf::pbackfail.
-
-2003-06-02 Richard Kreckel <Richard.Kreckel@GiNaC.DE>
-
- PR libstdc++/11062
- * config/cpu/mips/atomicity.h: Change __attribute__ ((unused)) to
- __attribute__ ((__unused__)).
- * config/os/aix/atomicity.h: Likewise.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9761
- * include/bits/fstream.tcc (pbackfail): If the pback buffer
- is already active don't try to store in it a second char.
- * testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: New.
-
- * include/bits/fstream.tcc (pbackfail): Add unbuffered bits.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: Tweak
- line spacing.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_M_destroy_pback): Use _M_in_beg
- instead of unnecessarily taking the address of _M_pback.
- (xsgetn): Simplify slightly for a single char pback buffer.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (seekoff): Remove four unnecessary
- variables and two 'if', clean up.
-
-2003-06-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (seekpos): Test against _M_out_lim
- not _M_out_end, since the former actually points to the string
- end (vs buffer end).
- * testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: New.
-
-2003-05-30 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/filter: New file.
- * docs/doxygen/filter.sed: New file.
- * docs/doxygen/run_doxygen: Add g flag to sed substitutions. Duh.
- * docs/doxygen/user.cfg.in (INPUT_FILTER): Point to new filter.
- * docs/html/documentation.html: Fix links to doxygen pages.
-
-2003-05-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (_M_convert_to_external): Don't
- check for __ilen > 0.
-
-2003-05-29 Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de>
-
- PR libstdc++/10783
- * include/bits/stl_iterator.h (class __normal_iterator):
- Don't inherit from iterator, add missing typedefs.
-
-2003-05-29 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/24_iterators/reverse_iterator.cc: Split up, as follows.
- * testsuite/24_iterators/reverse_iterator/1.cc: New.
- * testsuite/24_iterators/reverse_iterator/2.cc: New.
- * testsuite/24_iterators/reverse_iterator/3.cc: New, from
- PR libstdc++/10783.
-
-2003-05-27 Steve Ellcey <sje@cup.hp.com>
-
- * config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are
- on IA64 HP-UX.
- * libsupc++/eh_throw.cc: Don't call _Unwind_Resume_or_Rethrow if
- _LIBUNWIND_STD_ABI is set.
-
-2003-05-26 Brendan Kehoe <brendan@zen.org>
-
- * include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and
- make sure the number of digits required after the decimal-point
- (if any) is exactly the value returned by frac_digits().
- * testsuite/22_locale/money_get/get/char/9.cc: New.
- * testsuite/22_locale/money_get/get/wchar_t/9.cc: New.
-
-2003-05-27 Jonathan Wakely <redi@gcc.gnu.org>
-
- * include/std/std_istream.h, include/std/std_ostream.h: Typo in
- comment.
-
-2003-05-26 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/9339
- * include/std/std_fstream.h (basic_filebuf::_M_overflow): Remove.
- (_M_pback): No array necessary.
- * include/bits/fstream.tcc (basic_filebuf::_M_overflow): Add
- unbuffered case, coalesec into ...
- (basic_filebuf::overflow): ...this.
- * testsuite/27_io/basic_filebuf/sputn/char/9339.cc: New.
- * testsuite/27_io/basic_filebuf/sputc/char/2.cc: Unbuffered.
-
-2003-05-24 Nathanael Nerode <neroden@gcc.gnu.org>
-
- * libsupc++/Makefile.am, libsupc++/cxxabi.h, libsupc++/del_op.cc,
- libsupc++/del_opnt.cc, libsupc++/del_opv.cc, libsupc++/del_opvnt.cc,
- libsupc++/eh_alloc.cc, libsupc++/eh_aux_runtime.cc,
- libsupc++/eh_catch.cc, libsupc++/eh_exception.cc,
- libsupc++/eh_globals.cc, libsupc++/eh_personality.cc,
- libsupc++/eh_term_handler.cc, libsupc++/eh_terminate.cc,
- libsupc++/eh_throw.cc, libsupc++/eh_type.cc,
- libsupc++/eh_unex_handler.cc, libsupc++/exception,
- libsupc++/new, libsupc++/new_handler.cc, libsupc++/new_op.cc,
- libsupc++/new_opnt.cc, libsupc++/new_opv.cc, libsupc++/new_opvnt.cc,
- libsupc++/pure.cc, libsupc++/tinfo.cc, libsupc++/tinfo2.cc,
- libsupc++/typeinfo, libsupc++/unwind-cxx.h, libsupc++/vec.cc:
- Replace "GNU CC" with "GCC".
-
- * include/backward/new.h: Replace "GNU CC" with "GCC".
-
-2003-05-22 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/3066.
- * configure.in: Switch target to host, don't assume newlib.
- (target_alias): Remove.
- * configure: Regenerate.
- * acinclude.m4: Same.
- * aclocal.m4: Regenerate.
- * configure.target: Same. Rename to...
- * configure.host: This.
-
-2003-05-22 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_S_pback_size): Remove definition.
- (_M_create_pback(), _M_destroy_pback()): Simplify for a single-char
- pback buffer.
- * include/bits/fstream.tcc (_S_pback_size): Remove declaration.
- * testsuite/27_io/basic_filebuf/3.cc: Remove explicit instantiation
- of _S_pback_size for systems with no COMDAT or weak support.
- * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
- * testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
- * testsuite/27_io/basic_fstream/3.cc: Likewise.
- * testsuite/27_io/basic_ifstream/3.cc: Likewise.
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Likewise.
- * testsuite/27_io/basic_ofstream/3.cc: Likewise.
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Likewise.
- * testsuite/27_io/basic_streambuf/3.cc: Likewise.
-
-2003-05-22 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (_M_underflow): Simplify:
- !__testout implies _M_filepos == _M_in_end, therefore
- the first _M_file.seekoff call is never issued.
-
-2003-05-22 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.in: Sort cross table.
- * configure: Regenerate.
-
-2003-05-22 Brad Spencer <spencer@infointeractive.com>
-
- PR libstdc++/10106
- * configure.in: Add Solaris cross bits.
-
-2003-05-21 Danny Smith <dannysmith@users.sourceforge.net>
-
- * libstdc++-v3/config/os/mingw32/os_defines.h
- (__GTHREAD_HIDE_WIN32API): Define to 1 by defualt.
- (NOMINMAX): Define. Update copyright year.
-
-2003-05-21 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_M_set_buffer): Fix indentation.
-
-2003-05-21 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/faq/index.html: Fix typo.
- * docs/html/faq/index.txt: Regenerate.
-
-2003-05-21 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/test.html: Fix markup.
-
-2003-05-21 Danny Smith <dannysmith@users.sourceforge.net>
-
- * libmath/stubs.c (hypot, hypotf, hypotl): Don't divide by
- zero.
- Update copyright year.
-
-2003-05-20 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/close/char/4.cc: Fix typo.
-
-2003-05-20 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/close/char/5.cc: New file,
- further testing that upon filebuf::close() 27.8.1.1,3 is enforced.
-
-2003-05-20 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-
- * include/bits/stl_alloc.h (__default_alloc_template::_S_chunk_alloc):
- Cast via void* to avoid -Wcast-align warnings.
- (__default_alloc_template::_S_refill): Likewise.
-
-2003-05-20 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/README: Move to...
- * docs/html/test.html: ...here. Add documentation.
- * docs/html/install.html: Move testing bits out..
- * docs/html/documentation.html: Add separate testing link.
- * testsuite/performance: Add.
- * testsuite/performance/allocator.cc: New.
- * testsuite/performance/complex_norm.cc: New.
- * testsuite/performance/cout_insert_int.cc: New.
- * testsuite/performance/fstream_seek_write.cc: New.
- * testsuite/performance/ifstream_getline.cc: New.
- * testsuite/performance/map_create_fill.cc: New.
- * testsuite/performance/ofstream_insert_float.cc: New.
- * testsuite/performance/ofstream_insert_int.cc: New.
- * testsuite/performance/string_append.cc: New.
- * testsuite/lib/libstdc++-v3-dg.exp (v3-compute-tests): Filter
- performance tests.
-
-2003-05-20 Gabriel Dos Reis <gdr@integrable-solutions.net>
-
- PR libstdc++/10689
- * include/std/std_complex.h (pow): Tidy.
-
-2003-05-19 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/close/char/4.cc: New file, testing
- that upon filebuf::close() 27.8.1.1,3 is enforced.
-
-2003-05-15 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/thread/pthread4.cc: Further tweak to avoid fini race.
-
-2003-05-15 Paolo Carlini <pcarlini@unitus.it>
- Nathan Myers <ncm@cantrip.org>
-
- * include/bits/fstream.tcc (_M_overflow): Rewrote to call
- _M_convert_to_external only once (_M_buf_size is now the size of
- the put area + 1 for the overflow char of a full area); call
- _M_set_buffer instead of _M_set_indeterminate.
- (setbuf): Don't accept a buffer smaller than 2 chars.
- (_M_underflow): Refill _M_buf_size - 1 chars; call _M_set_buffer,
- instead of _M_set_determinate.
- (open): Call _M_set_buffer, instead of _M_set_indeterminate.
- (seekoff): Likewise.
- * include/ext/stdio_filebuf.h (stdio_filebuf(int,
- std::ios_base::openmode, bool, size_t),
- stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t):
- Likewise.
- * include/std/std_fstream.h (_M_set_indeterminate): Remove.
- (_M_set_determinate): Rename as _M_set_buffer, _M_buf_size ->
- _M_buf_size - 1.
- * include/std/std_streambuf.h: Tweak _M_out_lim comment.
- * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Tweak, taking
- into account that, for _M_buf_size == BUFSIZ == 8192, the size of
- the put area is now BUFSIZ - 1.
- * testsuite/ext/stdio_filebuf_2.cc: Tweak, taking into account
- that now the smallest _M_buf_size is 2 (still fails, for the same
- reason, with 3.2.3)
-
-2003-05-14 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/thread/pthread4.cc: Tweak test.
-
-2003-05-13 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Remove
- excess errors dg marker, use dg-errors instead.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
- * testsuite/20_util/auto_ptr_neg.cc: Same.
-
-2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/std_fstream.h (basic_filebuf::_M_codecvt): Add
- cached member.
- * include/bits/fstream.tcc (basic_filebuf::basic_filebuf):
- Initialize _M_codecvt.
- (basic_filebuf::imbue): Same.
- (basic_filebuf::showmanyc): Use it.
- (basic_filebuf::underflow): Use it.
- (basic_filebuf::_M_convert_to_external): Use it.
- (basic_filebuf::seekoff): Use it.
- (basic_filebuf::imbue): Use it, tweaks.
- * include/bits/localefwd.h (__check_facet): New.
- * include/bits/locale_classes.h: Tweaks.
- * include/bits/locale_facets.tcc: Tweaks.
- * include/bits/basic_ios.h (basic_ios::_M_check_facet): Remove.
- _M_fctype to _M_ctype, _M_fnumput to _M_num_put, _M_fnumget to
- _M_num_get. Change _M_check_facet to __check_facet. Tweaks.
- * include/bits/basic_ios.tcc: Same.
- * include/bits/istream.tcc: Same.
- * include/bits/ostream.tcc: Same.
- * include/std/std_streambuf.h: Same.
- * testsuite/27_io/basic_filebuf/imbue/char/2.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/char/3.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: New.
- * testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc: New.
-
-2003-05-12 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Remove
- unnecessary includes and unused string literals.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
-
-2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/fstream.tcc (_M_overflow): Remove unbuffered bits.
-
-2003-05-12 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_M_convert_to_external): Change
- to return bool, take two less streamsize parameters.
- * include/bits/fstream.tcc (_M_convert_to_external): Tweak
- consistently definition.
- (_M_overflow): Adjust call points.
-
-2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/basic_filebuf/underflow/10096.cc: Add weak bits.
-
-2003-05-11 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/Makefile.am: Properly quote /both/ LD_RUN_PATHs.
- * testsuite/Makefile.in: Regenerate.
-
-2003-05-11 Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite/Makefile.am: Properly quote LD_RUN_PATH.
- * testsuite/Makefile.in: Regenerate.
-
-2003-05-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
-
- PR libstdc++/3181
- * include/c_std/std_cmath.h: #include <bits/cpp_type_traits.h>
- (acos): Handle integer argument.
- (asin): Likewise.
- (atan): Likewise.
- (atan2): Likewise.
- (ceil): Likewise.
- (cos): Likewise.
- (cosh): Likewise.
- (exp): Likewise.
- (fabs): Likewise.
- (floor): Likewise.
- (frexp): Likewise.
- (ldexp): Likewise.
- (log): Likewise.
- (log10): Likewise.
- (sin): Likewise.
- (sinh): Likewise.
- (sqrt): Likewise.
- (tan): Likewise.
- (tanh): Likewise.
- * include/bits/cpp_type_traits.h (__are_same<>): New traits.
- (__enable_if): Likewise.
- * testsuite/26_numerics/cmath/overloads.C: New test.
-
-2003-05-10 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9027
- PR libstdc++/9520
- PR libstdc++/10096
- * include/bits/fstream.tcc (basic_file::_M_underflow): Add generic
- implementation, based on old wchar_t specialization, add support
- for codecvt::in() return value of codecvt_base::noconv, remove
- _M_file.sys_ungetc() call.
- * include/std/std_fstream.h (basic_file::underflow,
- basic_file::uflow, basic_file::_M_underflow): Remove
- specialization declarations, call _M_underflow from generic versions
- of underflow and uflow.
- * src/fstream.cc (basic_file::underflow, basic_file::uflow,
- basic_file::_M_underflow): Remove specializations.
- * src/Makefile.am (sources): Remove fstream.cc.
- * src/Makefile.in: Regenerated.
- * testsuite/27_io/basic_filebuf/underflow/10096.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/char/1.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/char/9027.cc: New test.
- * testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc: New test.
-
-2003-05-10 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/stdio_filebuf.h (__stdio_filebuf): Remove stack
- buffer.
- * config/io/basic_file_stdio.h (__basic_file::xsgetn): Remove
- unbuffered bits.
- (__basic_file::xsputn): Same.
- (__basic_file::seekoff): Same.
- (__basic_file::seekpos): Same.
- (__basic_file::showmanyc): Same.
- * config/io/basic_file_stdio.cc: Same.
- * include/std/std_fstream.h: Same.
- * include/bits/fstream.tcc: Same.
- * src/fstream.cc: Same.
- * testsuite/27_io/basic_filebuf/sgetn/char/1.cc (test05): Tidy.
-
-2003-05-10 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9520
- PR libstdc++/9661
- PR libstdc++/9662
- * include/ext/stdio_sync_filebuf.h: New file.
- (basic_stdiobuf): New.
- * include/Makefile.am (ext_headers): Add ext/stdio_sync_filebuf.h
- * include/Makefile.in: Regenerate.
- * include/bits/ios_base.h (Init::_S_create_buffers,
- Init::_S_destroy_buffers): Remove declarations.
- * src/globals.cc (buf_cout_sync, buf_cin_sync, buf_cerr_sync,
- buf_wcout_sync, buf_wcin_sync, buf_wcerr_sync): Define.
- * src/ios.cc (Init::_S_create_buffers,
- Init::_S_destroy_buffers): Remove.
- (Init::Init): Create and use syncronized buffers.
- (ios_base::sync_with_stdio): Destroy syncronized buffers,
- create and install unsyncronized buffers.
- * testsuite/27_io/objects/char/10.cc: New test.
- * testsuite/27_io/objects/char/9.cc: New test.
- * testsuite/27_io/objects/char/9661-1.cc: New test.
- * testsuite/27_io/objects/char/9661-2_xin.cc: New test.
- * testsuite/27_io/objects/char/9661-2_xin.in: New.
- * testsuite/27_io/objects/wchar_t/1.cc: New test.
- * testsuite/27_io/objects/wchar_t/10.cc: New test.
- * testsuite/27_io/objects/wchar_t/2.cc: New test.
- * testsuite/27_io/objects/wchar_t/2523-1_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/2523-1_xin.in: New.
- * testsuite/27_io/objects/wchar_t/2523-2_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/2523-2_xin.in: New.
- * testsuite/27_io/objects/wchar_t/3045.cc: New test.
- * testsuite/27_io/objects/wchar_t/3647.cc: New test.
- * testsuite/27_io/objects/wchar_t/3_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/3_xin.in: New.
- * testsuite/27_io/objects/wchar_t/4_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/4_xin.in: New.
- * testsuite/27_io/objects/wchar_t/5.cc: New test.
- * testsuite/27_io/objects/wchar_t/5268.cc: New test.
- * testsuite/27_io/objects/wchar_t/5280_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/5280_xin.in: New.
- * testsuite/27_io/objects/wchar_t/6.cc: New test.
- * testsuite/27_io/objects/wchar_t/6548_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/6548_xin.in: New.
- * testsuite/27_io/objects/wchar_t/6648-1_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/6648-1_xin.in: New.
- * testsuite/27_io/objects/wchar_t/6648-2_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/6648-2_xin.in: New.
- * testsuite/27_io/objects/wchar_t/7.cc: New test.
- * testsuite/27_io/objects/wchar_t/7744_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/7744_xin.in: New.
- * testsuite/27_io/objects/wchar_t/8.cc: New test.
- * testsuite/27_io/objects/wchar_t/9_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/9_xin.in: New.
- * testsuite/27_io/objects/wchar_t/9520.cc: New test.
- * testsuite/27_io/objects/wchar_t/9661-1.cc: New test.
- * testsuite/27_io/objects/wchar_t/9661-2_xin.cc: New test.
- * testsuite/27_io/objects/wchar_t/9661-2_xin.in: New.
- * testsuite/27_io/objects/wchar_t/9662.cc: New test.
- * testsuite/ext/stdiobuf_char.cc: New test.
- * testsuite/ext/stdiobuf_wchar_t.cc: New test.
-
-2003-05-10 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/close/char/3.cc: Remove
- unnecessary includes and unused string literals.
- * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
-
-2003-05-08 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (setg, setp): Don't touch _M_mode.
-
-2003-05-07 Richard Henderson <rth@redhat.com>
-
- PR c++/10570
- * libsupc++/eh_catch.cc (__cxa_begin_catch): Handle foreign exceptions.
- (__cxa_end_catch): Likewise.
- * libsupc++/eh_throw.cc (__cxa_rethrow): Likewise. Use
- _Unwind_Resume_or_Rethrow.
- * libsupc++/eh_personality.cc (empty_exception_spec): New.
- (PERSONALITY_FUNCTION): Don't ignore terminate or catch-all
- for _UA_FORCE_UNWIND. Honor empty filter spec for foreign
- exceptions. Don't push terminate/unexpected to cxa functions.
- (__cxa_call_unexpected): Remove foreign exception fixmes.
-
-2003-05-07 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/ios_base/cons: New.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: New.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: New.
-
-2003-05-07 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_fstream.h (_M_is_indeterminate): Remove.
- * src/fstream.cc
- (basic_filebuf<char/wchar_t>::_M_underflow): Simplify: either
- there is no buffer or __testget == !__testinit.
-
- * src/fstream.cc
- (basic_filebuf<char/wchar_t>::_M_underflow): _M_set_determinate()
- automatically sets, if appropriate, _M_out_cur == _M_in_cur.
-
- * include/std/std_fstream.h (_M_destroy_pback): Don't set
- unnecessarily _M_pback_cur_save and _M_pback_end_save.
-
- * include/std/std_fstream.h (_M_set_determinate): Minor tweak.
-
- * include/std/std_sstream.h (_M_sync): Minor tweak.
-
- * include/bits/fstream.tcc (close): No need to call
- _M_destroy_pback, setting _M_pback_init to false suffices
- to clean up.
-
-2003-05-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/stl_algo.h: Enums as _S_.
- * include/bits/stl_tree.h: Same.
- * include/bits/stl_bvector.h: Same.
- * include/bits/ios_base.h: Same.
- * include/bits/stl_alloc.h: Same.
- * include/ext/stl_hashtable.h: Same.
- * src/ios.cc: And here.
-
- * include/std/std_sstream.h: Replace _M_really_sync to _M_sync.
- * include/bits/sstream.tcc: Same.
-
- * include/bits/basic_ios.h: Correct spacing for '< ctype'.
-
- * include/bits/locale_facets.tcc: Replace __temp to __tmp.
-
- * include/bits/locale_facets.h (__num_base): Remove protected.
- Use _S_[io]* names for enumerations.
- (_S_format_int): Remove.
- * include/bits/locale_facets.tcc: Same.
- * src/locale.cc: Same.
-
- * include/std/std_sstream.h (stringbuf::str): Tweak formatting.
-
-2003-05-06 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/faq/index.html (3.10): Add note about mips atomicity.h.
- * docs/html/faq/index.txt: Regenerated.
-
-2003-05-06 Michael Ritzert <Ritzert@t-online.de>
- Matt Kraai <kraai@alumni.cmu.edu>
-
- * include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): Tweak.
- And retweak.
-
-2003-05-06 Richard Sandiford <rsandifo@redhat.com>
-
- * configure.target (mips*): Use the generic atomicity.h by default.
-
-2003-05-05 Loren J. Rittle <ljrittle@acm.org>
- (Inspired by an alternate patch from Danny Smith.)
-
- * include/bits/stl_threads.h (_Atomic_swap): Kill it...
- (_Swap_lock_struct<>): ...and the horse it rode in on.
- * src/globals.cc (_Swap_lock_struct<>): Likewise.
- * include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): New
- member to support...
- * include/ext/ropeimpl.h (rope<>::c_str): Follow *all* memory
- visibility rules related to POSIX threads.
- * testsuite/thread/pthread7-rope.cc: New test.
-
-2003-05-04 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/21_strings/basic_string/find/char/3.cc: New
- file, testing basic_string<char>::find_first_not_of.
- * testsuite/21_strings/basic_string/find/wchar_t/3.cc:
- Likewise for basic_string<wchar_t>.
-
-2003-05-03 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/thread/pthread1.cc: Remove special case for FreeBSD.
-
-2003-05-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am (CLEANFILES): Remove PCH files in target
- directory.
- * include/Makefile.in: Regenerate.
-
-2003-05-02 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (str()): Tidy.
-
-2003-05-02 Nathan Myers <ncm@cantrip.org>
- Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/streambuf.tcc (__copy_streambufs): Rewrote.
-
-2003-05-02 Jonathan Wakely <redi@gcc.gnu.org>
-
- * include/bits/basic_string.h (swap): Remove redundant template
- parameters from declaration of non-template member function.
-
-2003-05-01 Phil Edwards <pme@gcc.gnu.org>
-
- * acconfig.h (_GLIBCPP_USE_NLS): New symbol.
- * configure.in: Move libintl.h header test...
- * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): ...to here. Gather all
- the NLS-related test results into one symbol.
- * src/functexcept.cc: Use it here.
- * aclocal.m4, config.h.in, configure: Regenerated.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (overflow): Instead of calling
- str(), then _M_string.reserve, thus copying the contents
- of the current buffer two times, just copy the latter in
- a temporary, then use the 'swap trick'.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (str()): Revert the best of the
- previous 'improvement', incorrect due to the COW nature of
- v3 basic_string; simplify.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/streambuf.tcc (__copy_streambufs): Adjust the
- type of __avail to ptrdiff_t to avoid signed-unsigned warning.
-
-2003-05-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/abi_check.cc (check_version): Update known versions.
- Check added symbols for version_name != base version. Add missing
- symbols to incompatible list.
-
-2003-05-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_EXPORT_FLAGS): Remove -Winline.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/streambuf.tcc (basic_streambuf::xsgetn):
- Const-ify some variables.
- (basic_streambuf::xsputn): Likewise; change the type of some
- variables to size_t.
- (__copy_streambufs): Change some variables to size_t.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (str()): Avoid constructing
- a basic_string temporary not only when it would turn out
- to be zero-sized but also when identical to the current
- _M_string buffer.
-
-2003-05-01 Paolo Carlini <pcarlini@unitus.it>
-
- * include/ext/stdio_filebuf.h
- (stdio_filebuf(int, std::ios_base::openmode, bool, size_t),
- stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t)):
- Shorten a bit (-10 lines) by factoring out some code.
-
-2003-04-30 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4: Add bit missing from previous patch.
- * aclocal.m4, configure: Regenerated.
-
-2003-04-29 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/mainpage.html: Bring up to date.
- * docs/doxygen/run_doxygen: Cosmetic tweaks. Work around a bug
- in Doxygen.
- * docs/doxygen/user.cfg.in: Scanning the precompiled headers
- breaks everything. Don't scan them.
- * docs/html/documentation.html: Point to "Write after approval"
- notes.
-
-2003-04-29 Phil Edwards <pme@gcc.gnu.org>
-
- * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Search for gettext outside
- of libc if message translations are being used. Fix info text in
- xieee_1003.1-2001 case.
- * aclocal.m4, configure: Regenerate.
-
-2003-04-29 Joel Sherrill <joel.sherrill@OARcorp.com>
- Loren J. Rittle <ljrittle@acm.org>
- Martin v. Loewis <martin@v.loewis.de>
-
- * config/cpu/i386/atomicity.h: New file.
-
-2003-04-29 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (open): Change to single return.
-
-2003-04-29 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (underflow): Change to single return.
-
-2003-04-28 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (_M_buf): is currently
- used only for basic_filebuf, therefore move it there.
- (basic_streambuf(), ~basic_streambuf()): Adjust.
- * include/std/std_fstream.h (_M_buf): Moved here.
- * include/std/std_sstream.h (setbuf): Don't set _M_buf,
- is actually redundant for basic_stringbuf.
- (_M_really_sync): Likewise.
- * include/bits/fstream.tcc (basic_filebuf()): Adjust.
- * include/bits/sstream.tcc (seekoff): Adjust.
-
-2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/localename.cc: Standardize exception strings.
- * src/locale.cc: Same.
- * src/ios.cc: Same.
- * include/bits/basic_string.tcc: Same.
- * include/bits/basic_ios.tcc: Same.
- * include/std/std_bitset.h: Same.
- * include/ext/ropeimpl.h: Same.
- * include/bits/stl_vector.h: Same.
- * include/bits/stl_deque.h: Same.
- * include/bits/stl_bvector.h: Same.
- * config/locale/generic/c_locale.cc: Same.
- * config/locale/gnu/c_locale.cc: Same.
- * config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
-
- * testsuite/testsuite_hooks.cc (__gnu_cxx_test): Modify.
-
-2003-04-28 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (_M_buf_size): is currently
- used only for basic_filebuf, therefore move it there.
- (basic_streambuf(), ~basic_streambuf()): Adjust.
- * include/std/std_fstream.h (_M_buf_size): Moved here.
- * include/bits/fstream.tcc (basic_filebuf()): Adjust.
-
-2003-04-28 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/streambuf.tcc (__copy_streambufs): Don't use
- _M_buf_size (synced input is now correctly dealt with
- elsewhere); when the output buffer is full don't fall back
- to a snextc-sputc loop, call overflow instead.
-
-2003-04-28 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (pbackfail): Shorten a bit (6 lines)
- the innermost 'if' by factoring out some code.
-
-2003-04-28 Phil Edwards <pme@gcc.gnu.org>
-
- * configure.in: Test for libintl.h.
- * include/bits/c++config: Define __N for everybody.
- * include/bits/basic_string.h, include/bits/stl_bvector.h,
- include/bits/stl_deque.h, include/bits/stl_vector.h,
- include/std/std_bitset.h: Wrap all __throw* text with __N.
- * po/Makefile.am (pot): New rule, mostly working.
- * src/functexcept.cc: Call gettext on all __throw* arguments when
- -fexceptions is in effect.
- * po/Makefile.in, config.h.in, configure: Regenerate.
-
-2003-04-28 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9523
- * include/bits/ios_base.h (Init::_S_ios_create,
- Init::_S_ios_destroy): Remove declarations.
- (Init::_S_create_buffers,
- Init::_S_destroy_buffers): Declare
- * src/ios.cc (Init::_S_ios_create): Remove
- (Init::_S_create_buffers): Create buffers and add to streams.
- (Init::_S_ios_destroy): Rename to...
- (Init::_S_destroy_buffers): this.
- (Init::Init): Only construct streams once.
- (Init::~Init): Flush streams, don't destroy them.
- (ios_base::sync_with_stdio): Don't destroy streams, only buffers.
- * testsuite/27_io/ios_base/sync_with_stdio/9523.cc: New test.
- * testsuite/27_io/objects/char/5.cc: New test.
- * testsuite/27_io/objects/char/5268.cc: Avoid undefined behavior.
- * testsuite/27_io/objects/char/6.cc: New test.
- * testsuite/27_io/objects/char/7.cc: New test.
-
-2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/objects/char/8.cc: New test.
-
-2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/22_locale/codecvt/unicode/char.cc: Remove bom usage.
- * testsuite/22_locale/codecvt/unicode/wchar_t.cc: Same.
-
-2003-04-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/std_fstream.h (basic_filebuf): _M_pback_destroy to
- _M_destroy_pback. _M_pback_create to
- _M_create_pback. _M_underflow_common to
- _M_underflow. _M_really_overflow to _M_overflow.
- * include/bits/fstream.tcc: Same.
- * src/fstream.cc: Same.
- * include/std/std_streambuf.h (basic_streambuf): _M_in_cur_move to
- _M_move_in_cur. _M_out_cur_move to _M_move_out_cur.
- * include/bits/streambuf.tcc: Same.
- * include/bits/fstream.tcc: Same.
- * include/bits/sstream.tcc: Same.
-
-2003-04-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_classes.h (locale::_Impl): Change _M_names
- from fixed size array.
- (locale): Change _S_categories as well.
- Formatting tweaks.
- * include/bits/locale_facets.tcc: Tweak.
- * config/locale/gnu/c_locale.cc: Assign _S_categories.
- * config/locale/generic/c_locale.cc: Same.
- * src/locale.cc: Tweak.
- * src/globals.cc: Change facet_name to name_vec, add names_c.
- * src/localename.cc: Use them.
- (locale::_Impl::~_Impl): Destroy _M_names.
- (locale::_Impl::_Impl): Create _M_names.
-
-2003-04-27 Andreas Schwab <schwab@suse.de>
-
- * config/locale/ieee_1003.1-2001/codecvt_specializations.h
- (__enc_traits): Use __ibom and __ebom instead of ignoring them.
-
-2003-04-27 Nathan Myers <ncm@cantrip.org>
-
- Move some basic_string members out of line because
- they are too big to reasonably be inline.
- * include/bits/basic_string.h
- (assign(const basic_string&, size_type, size_type),
- assign(const _CharT*, size_type),
- insert(size_type, const basic_string&, size_type, size_type),
- insert(size_type, const _CharT*, size_type),
- replace(size_type, size_type, const _CharT*, size_type)):
- Move from here to...
- * include/bits/basic_string.tcc: ...here.
-
-2003-04-26 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (pbackfail): Shorten a bit (10 lines)
- the innermost 'if' by factoring out some code.
-
-2003-04-26 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/streambuf.tcc (__copy_streambufs): Don't
- use in_avail(), simplify.
-
-2003-04-26 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (setbuf): don't set _M_buf_size,
- in basic_stringbuf it's unused.
-
- * include/std/std_sstream.h (underflow): consistently use
- _M_in_cur, not gptr().
-
-2003-04-25 Ranjit Mathew <rmathew@hotmail.com>
- Phil Edwards <pme@gcc.gnu.org>
-
- * testsuite_flags.in: Guard against the possibility
- of having "xgcc" as a part of a folder name in the
- path to the GCC build folder.
- * testsuite/Makefile.am: Likewise.
- * testsuite/Makefile.in: Regenerated.
-
-2003-04-25 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/10132
- * include/std/std_fstream.h (basic_filebuf::is_open): Add throw()
- exception specifications.
- (basic_filebuf::close): Same.
- (basic_filebuf::_M_pback_destroy): Same.
- (basic_filebuf::_M_destroy_internal_buffer): Same.
- (basic_filebuf): Remove __res_type typedef.
- * src/fstream.cc: Same.
- * include/bits/fstream.tcc
- (basic_filebuf::_M_convert_to_external): Simplify.
- (basic_filebuf::seekoff): Use has_facet before use_facet.
- (basic_filebuf::close): Add exception specification of throw().
- * testsuite/27_io/basic_filebuf/cons: New.
- * testsuite/27_io/basic_filebuf/cons/wchar_t: New.
- * testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc: New.
- * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: New.
- * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: New.
-
-2003-04-25 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_classes.h
- (locale::_S_extra_categories_size): Remove.
- * src/locale.cc: Remove _S_extra_categories_size.
- * src/localename.cc: Same.
- * config/locale/gnu/c_locale.cc: Same.
- * config/locale/generic/c_locale.cc: Same.
-
-2003-04-24 Richard Sandiford <rsandifo@redhat.com>
-
- * src/localename.cc (__gnu_cxx::facet_vec): Correct types.
-
-2003-04-24 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/17_intro/howto.html: Update some links.
- * docs/html/18_support/howto.html: Link doxygen numeric_limits notes.
- * docs/html/27_io/howto.html: Link doxygen stdio_filebuf notes.
- * docs/html/ext/howto.html: Link to demangler notes and API.
- * docs/html/faq/index.html: Remove trailing whitespace.
- (1.4, 2.4, 3.8, 4.1): Bring up to date.
- (5.6): Change to a bulleted list.
-
- * docs/html/faq/index.txt, docs/html/documentation.html,
- docs/html/17_intro/porting.html: Regenerate.
-
-2003-04-23 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/basic_filebuf/3.cc: _S_pback_size now
- belongs to basic_filebuf.
- * testsuite/27_io/basic_fstream/3.cc: Likewise.
- * testsuite/27_io/basic_ifstream/3.cc: Likewise.
- * testsuite/27_io/basic_ios/3.cc: Remove _S_pback_size
- instantiation (now belongs to basic_filebuf).
- * testsuite/27_io/basic_iostream/3.cc: Likewise.
- * testsuite/27_io/basic_istream/3.cc: Likewise.
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
- _S_pback_size now belongs to basic_filebuf.
- * testsuite/27_io/basic_istringstream/3.cc: Remove _S_pback_size
- instantiation (now belongs to basic_filebuf).
- * testsuite/27_io/basic_ofstream/3.cc: _S_pback_size now
- belongs to basic_filebuf.
- * testsuite/27_io/basic_ostream/3.cc: Remove _S_pback_size
- instantiation (now belongs to basic_filebuf).
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc:
- _S_pback_size now belongs to basic_filebuf.
- * testsuite/27_io/basic_ostringstream/3.cc: Remove _S_pback_size
- instantiation (now belongs to basic_filebuf).
- * testsuite/27_io/basic_streambuf/3.cc: _S_pback_size now belongs
- to basic_filebuf.
- * testsuite/27_io/basic_stringbuf/3.cc: Remove _S_pback_size
- instantiation (now belongs to basic_filebuf).
- * testsuite/27_io/basic_stringstream/3.cc: Likewise.
-
-2003-04-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.in: Move GLIBCPP_CHECK_PCH before native/cross conditions.
- * configure: Regenerated.
-
-2003-04-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/locale/generic/c_locale.h (__convert_from_v): Use
- attribute unused.
-
-2003-04-23 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/ext/howto.html ('LWG Issues'): Add issue 60, partial
- implementation only.
- * include/bits/istream.tcc (putback, unget, sync, tellg, seekg):
- Comment and change to comply with DR 60 and the effect on gcount().
- * include/std/std_istream.h: Update comments.
- * testsuite/27_io/basic_istream/putback/char/1.cc (test01): Add
- comments about reasons for tests. Test sync() against gcount().
- * testsuite/27_io/basic_istream/seekg/char/2.cc: New file, test
- for effect on gcount().
- * testsuite/27_io/basic_istream/tellg/char/2.cc: New file, test
- for effect on gcount().
-
-2003-04-22 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/27_io/basic_filebuf/close/char/9964.cc (test_07):
- Adjust timing.
-
-2003-04-22 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (_S_pback_size, _M_pback,
- _M_pback_cur_save, _M_pback_end_save, _M_pback_init,
- _M_pback_create(), _M_pback_destroy()): Move to basic_filebuf.
- (basic_streambuf::basic_streambuf()): Adjust.
- * include/std/std_fstream.h (_S_pback_size, _M_pback,
- _M_pback_cur_save, _M_pback_end_save, _M_pback_init,
- _M_pback_create(), _M_pback_destroy()): Moved here
- from basic_streambuf.
- * include/bits/fstream.tcc (basic_filebuf::basic_filebuf()):
- Adjust.
- (basic_filebuf::_S_pback_size): Add declaration.
- * include/bits/streambuf.tcc (basic_streambuf::_S_pback_size):
- Remove declaration.
-
-2003-04-21 Paolo Carlini <pcarlini@unitus.it>
-
- Consistently use _M_in_beg instead of eback(), _M_in_cur
- instead of gptr(), and so on.
- * include/bits/fstream.tcc (pbackfail, imbue): Here.
- * include/bits/sstream.tcc (pbackfail, seekoff, seekpos): Ditto.
- * include/bits/streambuf.tcc (sbumpc, sputbackc,
- __copy_streambufs): Ditto.
- * include/std/std_streambuf.h (sgetc): Ditto.
-
-2003-04-21 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (pbackfail, overflow):
- Formatting fixes.
-
-2003-04-21 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (uflow()): It's used only by
- basic_stringbuf (i.e., basic_filebuf provide its own uflow()),
- therefore do not consider the _M_buf_unified == true case.
-
- * include/std/std_streambuf.h (sgetc()): Restore __ret variable.
-
-2003-04-20 Paolo Carlini <pcarlini@unitus.it>
-
- * docs/html/ext/howto.html ('LWG Issues'):
- Add issues 19, 90, 171, 231, 271.
-
-2003-04-20 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (pbackfail): Remove redundant
- NULL pointer check from test involving _M_in_*.
- (overflow, seekoff, seekpos): Const qualify bool variables.
- * include/std/std_sstream.h (underflow): Remove redundant
- NULL pointer check from test involving _M_in_*.
- (_M_really_sync): Const qualify bool variables.
- * src/fstream.cc (_M_underflow_common): Remove redundant
- NULL pointer check from test involving _M_in_*, const qualify
- bool variables.
-
- * include/std/std_streambuf.h (sgetc): Remove redundant
- variable.
-
-2003-04-18 Paolo Carlini <pcarlini@unitus.it>
-
- According to 5.9 para 2 (second bullet) for pointers p, q
- pointing to the same type, with p == 0 and q == 0, (p < q)
- is false.
- * include/bits/fstream.tcc (close, overflow, _M_really_overflow,
- seekoff): Remove redundant NULL pointer checks from tests
- involving _M_out_* and _M_in_*, const qualify bool variables.
- (showmanyc, pbackfail, _M_convert_to_external, imbue): Const
- qualify bool variables.
- * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc, sputc):
- Remove redundant NULL pointer checks from tests involving
- _M_out_* and _M_in_*, const qualify bool variables.
- * include/std/std_fstream.h (sync): Likewise.
- (_M_is_indeterminate): Const qualify bool variables.
- * include/std/std_streambuf.h (sgetc, uflow): Remove redundant
- NULL pointer checks from tests involving _M_out_* and _M_in_*,
- const qualify bool variables.
- (_M_in_cur_move, _M_out_cur_move, uflow): Const qualify bool
- variables.
-
-2003-04-18 Loren J. Rittle <ljrittle@acm.org>
-
- * include/c_std/std_cmath.h (C99 FP capture): Only undefine said
- C99 FP macros, if actually captured.
-
- * docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
- (_GLIBCPP_USE_C99_DYNAMIC): New macro.
- (_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
- (_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
- * config/os/bsd/freebsd/os_defines.h (_GLIBCPP_USE_C99_CHECK):
- New macro.
- (_GLIBCPP_USE_C99_DYNAMIC): New macro.
- (_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
- (_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
- * include/c_std/std_cstdlib.h: Use new macros.
- * include/c_std/std_cstdio.h: Use new macros.
- * include/c_std/std_cwchar.h: Use new macros.
-
-2003-04-17 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/9555
- * include/bits/ostream.tcc: Catch all exceptions for formatted
- output, instead of std::exception and derivatives.
- * include/bits/istream.tcc: Same.
- * testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc:
- * testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc:
- * testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc:
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc:
- * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
- * testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc:
- New.
-
-2003-04-17 Phil Edwards <pme@gcc.gnu.org>
-
- * include/bits/c++config: Minor cosmetic tweaks.
-
-2003-04-17 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite_flags.in (PCHFLAGS): Find PCH in new home.
- * include/Makefile.am (pch_input): Find in ${target_builddir}.
- (pch_output): Rename to...
- (pch_output_builddir): ..this. Find in ${target_builddir}.
- (pch_source): Tweak.
- (pch_build): Key off a built file.
- (pch_output rule): Rename to...
- (pch_input rule): ...this. Produce ${pch_output_builddir}
- instead of ${pch_output}.
- (install-pch rule): Install ${pch_output_builddir}.
- * include/Makefile.in: Regenerated.
-
-2003-04-17 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (setp): _M_out_lim, being
- the end limit of used put area, is set equal to _M_out_beg.
-
-2003-04-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_CHECK_PCH): New.
- * aclocal.m4: Regenerated.
- * configure.in: Remove old demangler bits.
- Call pch checks.
- * configure: Regenerate.
- * config.h.in: Regenerate.
- * include/Makefile.am (allstamps): Now allstamped.
- (allcreated): Define this.
- (all-local): Use 'em.
- Conditionally define pch_build, pch_install based on
- GLIBCPP_BUILD_PCH.
- (${pch_output}): New rule.
- (install-pch): New rule.
- (install-headers): New rule.
- (install-data-local): Install headers and conditionally pch.
- * include/Makefile.in: Regenerate.
- * testsuite_flags.in (--build-cxx): Use pch file.
-
-2003-04-16 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/ext/sgiexts.html: Fix path to stylesheet.
-
-2003-04-15 Benjamin Kosnik <bkoz at redhat dot com>
- Paolo Carlini <pcarlini at unitus dot it>
-
- PR libstdc++/9423
- * docs/html/27_io/howto.html
- ('The buffering is screwing up my program!'): Explain that
- opening counts as an I/O operation.
-
-2003-04-15 Andreas Tobler <a.tobler@schweiz.ch>
-
- * testsuite/thread/pthread1.cc: Enable for darwin test.
- * testsuite/thread/pthread2.cc: Same.
- * testsuite/thread/pthread3.cc: Same.
- * testsuite/thread/pthread4.cc: Same.
- * testsuite/thread/pthread5.cc: Same.
- * testsuite/thread/pthread6.cc: Same.
-
-2003-04-15 Loren J. Rittle <ljrittle@acm.org>
-
- libstdc++/7680
- * include/c_std/std_cmath.h (__gnu_cx::__c99_binding): New namespace.
- Populate it with multiple legal ways to obtain the C99 float
- transcendentals. Use them instead of direct global reference.
- (C99 FP capture): Guard usage with _GLIBCPP_USE_C99_FP_MACROS_DYNAMIC.
- * docs/html/17_intro/porting.texi
- (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
- (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
- (_GLIBCPP_USE_C99_FP_MACROS_DYNAMIC): New macro.
- * config/os/bsd/freebsd/os_defines.h
- (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
- (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
- * testsuite/26_numerics/c_math_dynamic.cc: New file.
-
-2003-04-14 Andreas Tobler <toa@pop.agri.ch>
- Benjamin Kosnik <bkoz@redhat.com>
-
- * config/os/generic/ctype_inline.h: Fix.
-
-2003-04-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/testsuite_hooks.h
- (__gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher):
- Change to try_named_locale.
- * testsuite/testsuite_hooks.cc (__gnu_cxx_test): Same.
-
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Use
- try_named_locale.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/7.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/8.cc: Same.
- * testsuite/22_locale/codecvt/in/wchar_t/9.cc: Same.
- * testsuite/22_locale/codecvt/length/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/length/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/length/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/length/wchar_t/7.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/out/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/out/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/out/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/out/wchar_t/7.cc: Same.
- * testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Same.
- * testsuite/22_locale/collate/compare/char/1.cc: Same.
- * testsuite/22_locale/collate/compare/char/2.cc: Same.
- * testsuite/22_locale/collate/compare/char/3.cc: Same.
- * testsuite/22_locale/collate/compare/wchar_t/1.cc: Same.
- * testsuite/22_locale/collate/compare/wchar_t/2.cc: Same.
- * testsuite/22_locale/collate/compare/wchar_t/3.cc: Same.
- * testsuite/22_locale/collate/hash/char/2.cc: Same.
- * testsuite/22_locale/collate/hash/wchar_t/2.cc: Same.
- * testsuite/22_locale/collate/transform/char/2.cc: Same.
- * testsuite/22_locale/collate/transform/char/3.cc: Same.
- * testsuite/22_locale/collate/transform/wchar_t/2.cc: Same.
- * testsuite/22_locale/collate/transform/wchar_t/3.cc: Same.
- * testsuite/22_locale/collate_byname/1.cc: Same.
- * testsuite/22_locale/ctype/is/char/2.cc: Same.
- * testsuite/22_locale/ctype/is/wchar_t/2.cc: Same.
- * testsuite/22_locale/ctype/narrow/wchar_t/3.cc: Same.
- * testsuite/22_locale/ctype/widen/wchar_t/2.cc: Same.
- * testsuite/22_locale/ctype/widen/wchar_t/3.cc: Same.
- * testsuite/22_locale/facet/2.cc: Same.
- * testsuite/22_locale/locale/cons/2.cc: Same.
- * testsuite/22_locale/locale/cons/4.cc: Same.
- * testsuite/22_locale/locale/cons/5.cc: Same.
- * testsuite/22_locale/locale/cons/7.cc: Same.
- * testsuite/22_locale/locale/cons/7222-c.cc: Same.
- * testsuite/22_locale/locale/cons/7222-env.cc: Same.
- * testsuite/22_locale/locale/global_locale_objects/2.cc: Same.
- * testsuite/22_locale/messages/members/char/1.cc: Same.
- * testsuite/22_locale/messages/members/char/2.cc: Same.
- * testsuite/22_locale/messages/members/char/3.cc: Same.
- * testsuite/22_locale/messages_byname/1.cc: Same.
- * testsuite/22_locale/money_get/get/char/1.cc: Same.
- * testsuite/22_locale/money_get/get/char/2.cc: Same.
- * testsuite/22_locale/money_get/get/char/3.cc: Same.
- * testsuite/22_locale/money_get/get/char/4.cc: Same.
- * testsuite/22_locale/money_get/get/wchar_t/1.cc: Same.
- * testsuite/22_locale/money_get/get/wchar_t/2.cc: Same.
- * testsuite/22_locale/money_get/get/wchar_t/3.cc: Same.
- * testsuite/22_locale/money_get/get/wchar_t/4.cc: Same.
- * testsuite/22_locale/money_put/put/char/1.cc: Same.
- * testsuite/22_locale/money_put/put/char/2.cc: Same.
- * testsuite/22_locale/money_put/put/char/3.cc: Same.
- * testsuite/22_locale/money_put/put/wchar_t/1.cc: Same.
- * testsuite/22_locale/money_put/put/wchar_t/2.cc: Same.
- * testsuite/22_locale/money_put/put/wchar_t/3.cc: Same.
- * testsuite/22_locale/moneypunct/members/char/2.cc: Same.
- * testsuite/22_locale/moneypunct/members/wchar_t/2.cc: Same.
- * testsuite/22_locale/moneypunct_byname/1.cc: Same.
- * testsuite/22_locale/num_get/get/char/1.cc: Same.
- * testsuite/22_locale/num_get/get/char/2.cc: Same.
- * testsuite/22_locale/num_get/get/char/3.cc: Same.
- * testsuite/22_locale/num_get/get/char/5.cc: Same.
- * testsuite/22_locale/num_get/get/char/6.cc: Same.
- * testsuite/22_locale/num_get/get/wchar_t/1.cc: Same.
- * testsuite/22_locale/num_get/get/wchar_t/2.cc: Same.
- * testsuite/22_locale/num_get/get/wchar_t/3.cc: Same.
- * testsuite/22_locale/num_get/get/wchar_t/5.cc: Same.
- * testsuite/22_locale/num_get/get/wchar_t/6.cc: Same.
- * testsuite/22_locale/num_put/put/char/1.cc: Same.
- * testsuite/22_locale/num_put/put/char/2.cc: Same.
- * testsuite/22_locale/num_put/put/char/3.cc: Same.
- * testsuite/22_locale/num_put/put/char/5.cc: Same.
- * testsuite/22_locale/num_put/put/wchar_t/1.cc: Same.
- * testsuite/22_locale/num_put/put/wchar_t/2.cc: Same.
- * testsuite/22_locale/num_put/put/wchar_t/3.cc: Same.
- * testsuite/22_locale/num_put/put/wchar_t/5.cc: Same.
- * testsuite/22_locale/numpunct/members/char/1.cc: Same.
- * testsuite/22_locale/numpunct/members/char/2.cc: Same.
- * testsuite/22_locale/numpunct/members/wchar_t/1.cc: Same.
- * testsuite/22_locale/numpunct/members/wchar_t/2.cc: Same.
- * testsuite/22_locale/numpunct_byname/1.cc: Same.
- * testsuite/22_locale/numpunct_byname/2.cc: Same.
- * testsuite/22_locale/time_get/date_order/char/1.cc: Same.
- * testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_get/get_date/char/1.cc: Same.
- * testsuite/22_locale/time_get/get_date/char/2.cc: Same.
- * testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Same.
- * testsuite/22_locale/time_get/get_monthname/char/1.cc: Same.
- * testsuite/22_locale/time_get/get_monthname/char/2.cc: Same.
- * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Same.
- * testsuite/22_locale/time_get/get_time/char/1.cc: Same.
- * testsuite/22_locale/time_get/get_time/char/2.cc: Same.
- * testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Same.
- * testsuite/22_locale/time_get/get_weekday/char/1.cc: Same.
- * testsuite/22_locale/time_get/get_weekday/char/2.cc: Same.
- * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Same.
- * testsuite/22_locale/time_get/get_year/char/1.cc: Same.
- * testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_put/put/char/1.cc: Same.
- * testsuite/22_locale/time_put/put/char/2.cc: Same.
- * testsuite/22_locale/time_put/put/char/3.cc: Same.
- * testsuite/22_locale/time_put/put/char/4.cc: Same.
- * testsuite/22_locale/time_put/put/char/5.cc: Same.
- * testsuite/22_locale/time_put/put/char/6.cc: Same.
- * testsuite/22_locale/time_put/put/char/7.cc: Same.
- * testsuite/22_locale/time_put/put/char/8.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/1.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/2.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/3.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/4.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/5.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/6.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/7.cc: Same.
- * testsuite/22_locale/time_put/put/wchar_t/8.cc: Same.
- * testsuite/27_io/basic_filebuf/imbue/char/9322.cc: Same.
- * testsuite/27_io/basic_ios/copyfmt/char/2.cc: Same.
- * testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc: Same.
- * testsuite/27_io/basic_streambuf/imbue/char/9322.cc: Same.
- * testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Same.
-
-2003-04-14 Andreas Tobler <toa@pop.agri.ch>
-
- * configure.target (_cpu_incdir_fullpath): Solaris 2.9 uses
- solaris includes, not generic.
-
-2003-04-14 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/26_numerics/c99_classification_macros_c.cc: Add XFAIL.
-
- * include/std/std_bitset.h (_M_do_find_next): Fix -Wall nit.
- * include/bits/concept_check.h: Fix multi-line comment.
- * testsuite/17_intro/headers.cc (dg-options): Add -Wall -Wsystem-header
- when target is *-*-freebsd*.
-
-2003-04-14 Nathan Myers <ncm@cantrip.org>
- Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9701 (in_avail())
- * include/std/std_streambuf.h (in_avail): Simplify, in_avail
- doesn't care if there is anything in some putback cell.
- * testsuite/27_io/basic_streambuf/in_avail/char/9701-3.cc: Add.
-
- * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Remove some
- unused string literals.
-
-2003-04-14 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (basic_filebuf::setbuf): Don't set
- _M_out_end, _M_set_indeterminate() does it.
-
-2003-04-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- * os/hpux/ctype_inline.h: Replace with gnu-linux version.
-
-2003-04-12 David Edelsohn <edelsohn@gnu.org>
-
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
- Change basic_streambuf instantiation to "unsigned char".
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
-
-2003-04-12 Paolo Carlini <pcarlini@unitus.it>
-
- Remove _M_buf_size_opt, use directly _M_buf_size instead.
- * include/bits/fstream.tcc
- (basic_filebuf::_M_allocate_internal_buffer, setbuf): Remove
- references to _M_buf_size_opt.
- * include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise.
- * include/bits/streambuf.tcc (__copy_streambufs): Likewise, rename
- __bufsize to __in_avail and __size_opt to __buf_size.
- * include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf): Likewise.
- * include/std/std_sstream.h (_M_stringbuf_init, setbuf): Likewise.
- * include/std/std_streambuf.h (~basic_streambuf(),
- basic_streambuf()): Likewise, remove _M_buf_size_opt member.
- * testsuite/27_io/basic_filebuf/close/char/3.cc: Set _M_buf_size.
- * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/snextc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
- * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
-
-2003-04-12 Paolo Carlini <pcarlini at unitus dot it>
-
- * include/ext/stdio_filebuf.h
- (stdio_filebuf::stdio_filebuf(int, openmode, bool, size_t),
- stdio_filebuf::stdio_filebuf(__c_file*, openmode, size_t):
- _M_buf_size_opt == 0 only means "not to use an allocated buffer"
- since a stack-based buffer is used for small values of the size_t
- parameter.
- * include/bits/fstream.tcc (basic_filebuf::_M_really_overflow).
- If _M_buf_size != 0 flush out the buffer (any kind, stack-based too).
- * testsuite/ext/stdio_filebuf_2.cc: New testfile.
-
-2003-04-12 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9533
- * testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: New.
- * testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Ditto.
-
-2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/22_locale/locale/cons/3.cc: Split.
- * testsuite/22_locale/locale/cons/7222-c.cc: New.
- * testsuite/22_locale/locale/cons/7222-env.cc: New.
- Check before trying to create a locale from the environment.
- * testsuite/27_io/ios_base/state/1.cc (test02): Use "C" locale.
- * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
- Adjust includes.
-
-2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/22_locale/ctype/is/char/3.cc (test03): Use the classic
- locale to construct this hybrid locale, not the global locale.
-
-2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Add
- instantiation for AIX.
- * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
- * testsuite/25_algorithms/min_max.cc: Same.
-
-2003-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- * basic_file_stdio.cc (__basic_file<char>::close): Don't flush stream
- twice. Always set _M_cfile to 0 when stream was open.
-
-2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
-
- Reshuffle 27_io testsuite.
- * testsuite/27_io/filebuf.cc,
- filebuf_members-1.tst, filebuf_members-1.txt, filebuf_members.cc,
- filebuf_virtuals-1.tst, filebuf_virtuals-1.txt,
- filebuf_virtuals-2.tst, filebuf_virtuals-3.tst,
- filebuf_virtuals.cc, fpos.cc, fstream.cc, fstream_members.cc,
- ifstream.cc, ifstream_members-1.tst, ifstream_members-1.txt,
- ifstream_members.cc, instantiations.cc, ios.cc,
- ios_base_callbacks.cc, ios_base_members_static-1.tst,
- ios_base_members_static.cc, ios_base_storage.cc,
- ios_base_types.cc, ios_ctor.cc, ios_init.cc,
- ios_manip_basefield.cc, ios_manip_fmtflags.cc, ios_members.cc,
- iostream.cc, iostream_members.cc, istream.cc,
- istream_exception.cc, istream_extractor_char.cc,
- istream_extractor_other-1.tst, istream_extractor_other-1.txt,
- istream_extractor_other-2.tst, istream_extractor_other.cc,
- istream_manip.cc, istream_seeks-1.tst, istream_seeks-1.txt,
- istream_seeks-2.tst, istream_seeks-3.tst, istream_seeks.cc,
- istream_sentry.cc, istream_unformatted-1.tst,
- istream_unformatted-1.txt, istream_unformatted.cc,
- istringstream.cc, istringstream_members.cc,
- narrow_stream_objects.cc, ofstream.cc, ofstream_members-1.tst,
- ofstream_members.cc, ostream.cc, ostream_exception.cc,
- ostream_fail.cc, ostream_inserter_arith.cc,
- ostream_inserter_char-1.tst, ostream_inserter_char-1.txt,
- ostream_inserter_char.cc, ostream_inserter_other-1.tst,
- ostream_inserter_other-2.tst, ostream_inserter_other.cc,
- ostream_manip.cc, ostream_seeks-1.tst, ostream_seeks.cc,
- ostream_sentry.cc, ostream_unformatted.cc, ostringstream.cc,
- ostringstream_members.cc, standard_manipulators.cc, streambuf.cc,
- streambuf_members.cc, stringbuf.cc, stringbuf_members.cc,
- stringbuf_virtuals.cc, stringstream.cc, stringstream_members.cc,
- wide_stream_objects.cc, istream_extractor_arith/01.cc,
- istream_extractor_arith/02.cc, istream_extractor_arith/03.cc,
- istream_extractor_arith/06.cc, istream_extractor_arith/07.cc,
- istream_extractor_arith/08.cc, istream_extractor_arith/09.cc,
- istream_extractor_arith/10.cc, istream_extractor_arith/11.cc,
- istream_extractor_arith/12.cc, istream_extractor_arith/13.cc:
- Split into...
- * 27_io/basic_filebuf/1.cc: New.
- * 27_io/basic_filebuf/2.cc: New.
- * 27_io/basic_filebuf/3.cc: New.
- * 27_io/basic_filebuf/4.cc: New.
- * 27_io/basic_filebuf/close/char/1.cc: New.
- * 27_io/basic_filebuf/close/char/2.cc: New.
- * 27_io/basic_filebuf/close/char/3.cc: New.
- * 27_io/basic_filebuf/close/char/4879.cc: New.
- * 27_io/basic_filebuf/close/char/9964.cc: New.
- * 27_io/basic_filebuf/imbue/char/1.cc: New.
- * 27_io/basic_filebuf/imbue/char/9322.cc: New.
- * 27_io/basic_filebuf/in_avail/char/1.cc: New.
- * 27_io/basic_filebuf/is_open/char/1.cc: New.
- * 27_io/basic_filebuf/open/char/1.cc: New.
- * 27_io/basic_filebuf/open/char/2.cc: New.
- * 27_io/basic_filebuf/open/char/3.cc: New.
- * 27_io/basic_filebuf/open/char/9507.cc: New.
- * 27_io/basic_filebuf/overflow/char/1.cc: New.
- * 27_io/basic_filebuf/overflow/char/3599.cc: New.
- * 27_io/basic_filebuf/overflow/char/9169.cc: New.
- * 27_io/basic_filebuf/overflow/char/9182-2.cc: New.
- * 27_io/basic_filebuf/overflow/char/9988.cc: New.
- * 27_io/basic_filebuf/sbumpc/char/1.cc: New.
- * 27_io/basic_filebuf/sbumpc/char/9825.cc: New.
- * 27_io/basic_filebuf/seekoff/char/1.cc: New.
- * 27_io/basic_filebuf/seekoff/char/2.cc: New.
- * 27_io/basic_filebuf/seekpos/char/1.cc: New.
- * 27_io/basic_filebuf/seekpos/char/2.cc: New.
- * 27_io/basic_filebuf/setbuf/char/1.cc: New.
- * 27_io/basic_filebuf/setbuf/char/2.cc: New.
- * 27_io/basic_filebuf/setbuf/char/3.cc: New.
- * 27_io/basic_filebuf/sgetc/char/1.cc: New.
- * 27_io/basic_filebuf/sgetn/char/1.cc: New.
- * 27_io/basic_filebuf/sgetn/char/2.cc: New.
- * 27_io/basic_filebuf/snextc/char/1.cc: New.
- * 27_io/basic_filebuf/sputbackc/char/1.cc: New.
- * 27_io/basic_filebuf/sputbackc/char/9425.cc: New.
- * 27_io/basic_filebuf/sputc/char/1.cc: New.
- * 27_io/basic_filebuf/sputc/char/1057.cc: New.
- * 27_io/basic_filebuf/sputc/char/9701-2.cc: New.
- * 27_io/basic_filebuf/sputn/char/1.cc: New.
- * 27_io/basic_filebuf/sputn/char/1057.cc: New.
- * 27_io/basic_filebuf/sputn/char/9701-1.cc: New.
- * 27_io/basic_filebuf/sungetc/char/1.cc: New.
- * 27_io/basic_filebuf/sync/char/1057.cc: New.
- * 27_io/basic_filebuf/sync/char/9182-1.cc: New.
- * 27_io/basic_filebuf/underflow/char/10097.cc: New.
- * 27_io/basic_fstream/1.cc: New.
- * 27_io/basic_fstream/2.cc: New.
- * 27_io/basic_fstream/3.cc: New.
- * 27_io/basic_fstream/4.cc: New.
- * 27_io/basic_fstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_ifstream/1.cc: New.
- * 27_io/basic_ifstream/2.cc: New.
- * 27_io/basic_ifstream/3.cc: New.
- * 27_io/basic_ifstream/4.cc: New.
- * 27_io/basic_ifstream/cons/char/1.cc: New.
- * 27_io/basic_ifstream/open/char/1.cc: New.
- * 27_io/basic_ifstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_ios/1.cc: New.
- * 27_io/basic_ios/2.cc: New.
- * 27_io/basic_ios/3.cc: New.
- * 27_io/basic_ios/4.cc: New.
- * 27_io/basic_ios/clear/char/1.cc: New.
- * 27_io/basic_ios/cons/char/1.cc: New.
- * 27_io/basic_ios/cons/char/2.cc: New.
- * 27_io/basic_ios/cons/char/3.cc: New.
- * 27_io/basic_ios/copyfmt/char/1.cc: New.
- * 27_io/basic_ios/copyfmt/char/2.cc: New.
- * 27_io/basic_ios/exceptions/char/1.cc: New.
- * 27_io/basic_ios/locales/char/1.cc: New.
- * 27_io/basic_iostream/1.cc: New.
- * 27_io/basic_iostream/2.cc: New.
- * 27_io/basic_iostream/3.cc: New.
- * 27_io/basic_iostream/4.cc: New.
- * 27_io/basic_istream/1.cc: New.
- * 27_io/basic_istream/2.cc: New.
- * 27_io/basic_istream/3.cc: New.
- * 27_io/basic_istream/4.cc: New.
- * 27_io/basic_istream/exceptions/char/9561.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/01.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/02.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/03.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/06.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/07.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/08.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/09.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/10.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/11.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/12.cc: New.
- * 27_io/basic_istream/extractors_arithmetic/char/13.cc: New.
- * 27_io/basic_istream/extractors_character/char/1.cc: New.
- * 27_io/basic_istream/extractors_character/char/2.cc: New.
- * 27_io/basic_istream/extractors_character/char/3.cc: New.
- * 27_io/basic_istream/extractors_character/char/9826.cc: New.
- * 27_io/basic_istream/extractors_other/char/1.cc: New.
- * 27_io/basic_istream/extractors_other/char/2.cc: New.
- * 27_io/basic_istream/extractors_other/char/3.cc: New.
- * 27_io/basic_istream/extractors_other/char/9318-in.cc: New.
- * 27_io/basic_istream/extractors_other/char/9424-in.cc: New.
- * 27_io/basic_istream/get/char/1.cc: New.
- * 27_io/basic_istream/get/char/2.cc: New.
- * 27_io/basic_istream/getline/char/1.cc: New.
- * 27_io/basic_istream/getline/char/2.cc: New.
- * 27_io/basic_istream/getline/char/3.cc: New.
- * 27_io/basic_istream/ignore/char/1.cc: New.
- * 27_io/basic_istream/ignore/char/6360.cc: New.
- * 27_io/basic_istream/ignore/char/7220.cc: New.
- * 27_io/basic_istream/peek/char/1.cc: New.
- * 27_io/basic_istream/peek/char/6414.cc: New.
- * 27_io/basic_istream/putback/char/1.cc: New.
- * 27_io/basic_istream/read/char/1.cc: New.
- * 27_io/basic_istream/read/char/2.cc: New.
- * 27_io/basic_istream/read/char/3.cc: New.
- * 27_io/basic_istream/readsome/char/6746-1.cc: New.
- * 27_io/basic_istream/readsome/char/6746-2.cc: New.
- * 27_io/basic_istream/readsome/char/8258.cc: New.
- * 27_io/basic_istream/seekg/char/2346-fstream.cc: New.
- * 27_io/basic_istream/seekg/char/2346-sstream.cc: New.
- * 27_io/basic_istream/seekg/char/8348-1.cc: New.
- * 27_io/basic_istream/seekg/char/8348-2.cc: New.
- * 27_io/basic_istream/seekg/char/fstream.cc: New.
- * 27_io/basic_istream/seekg/char/sstream.cc: New.
- * 27_io/basic_istream/sentry/char/1.cc: New.
- * 27_io/basic_istream/sentry/char/2.cc: New.
- * 27_io/basic_istream/sentry/char/3.cc: New.
- * 27_io/basic_istream/sentry/char/3983-fstream.cc: New.
- * 27_io/basic_istream/sentry/char/3983-sstream.cc: New.
- * 27_io/basic_istream/tellg/char/1.cc: New.
- * 27_io/basic_istream/tellg/char/8348.cc: New.
- * 27_io/basic_istream/tellg/char/fstream.cc: New.
- * 27_io/basic_istream/tellg/char/sstream.cc: New.
- * 27_io/basic_istream/ws/char/1.cc: New.
- * 27_io/basic_istringstream/1.cc: New.
- * 27_io/basic_istringstream/2.cc: New.
- * 27_io/basic_istringstream/3.cc: New.
- * 27_io/basic_istringstream/4.cc: New.
- * 27_io/basic_istringstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_istringstream/str/char/1.cc: New.
- * 27_io/basic_ofstream/1.cc: New.
- * 27_io/basic_ofstream/2.cc: New.
- * 27_io/basic_ofstream/3.cc: New.
- * 27_io/basic_ofstream/4.cc: New.
- * 27_io/basic_ofstream/cons/char/2.cc: New.
- * 27_io/basic_ofstream/open/char/1.cc: New.
- * 27_io/basic_ofstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_ostream/1.cc: New.
- * 27_io/basic_ostream/2.cc: New.
- * 27_io/basic_ostream/3.cc: New.
- * 27_io/basic_ostream/4.cc: New.
- * 27_io/basic_ostream/cons/char/9827.cc: New.
- * 27_io/basic_ostream/endl/char/1.cc: New.
- * 27_io/basic_ostream/ends/char/1.cc: New.
- * 27_io/basic_ostream/ends/char/2.cc: New.
- * 27_io/basic_ostream/exceptions/char/9561.cc: New.
- * 27_io/basic_ostream/flush/char/1.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/1.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/2.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/3.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/4.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/4402.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/5.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/char/6.cc: New.
- * 27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc: New.
- * 27_io/basic_ostream/inserters_character/char/1.cc: New.
- * 27_io/basic_ostream/inserters_character/char/2.cc: New.
- * 27_io/basic_ostream/inserters_character/char/3.cc: New.
- * 27_io/basic_ostream/inserters_character/char/4.cc: New.
- * 27_io/basic_ostream/inserters_character/char/5.cc: New.
- * 27_io/basic_ostream/inserters_character/char/6.cc: New.
- * 27_io/basic_ostream/inserters_character/char/8.cc: New.
- * 27_io/basic_ostream/inserters_character/wchar_t/7.cc: New.
- * 27_io/basic_ostream/inserters_character/wchar_t/8.cc: New.
- * 27_io/basic_ostream/inserters_other/char/1.cc: New.
- * 27_io/basic_ostream/inserters_other/char/2.cc: New.
- * 27_io/basic_ostream/inserters_other/char/3.cc: New.
- * 27_io/basic_ostream/inserters_other/char/4.cc: New.
- * 27_io/basic_ostream/inserters_other/char/9318-out.cc: New.
- * 27_io/basic_ostream/inserters_other/char/9424-out.cc: New.
- * 27_io/basic_ostream/sentry/char/1.cc: New.
- * 27_io/basic_ostream/sentry/char/2.cc: New.
- * 27_io/basic_ostream/sentry/char/3983-fstream.cc: New.
- * 27_io/basic_ostream/sentry/char/3983-sstream.cc: New.
- * 27_io/basic_ostream/tellp/char/1.cc: New.
- * 27_io/basic_ostream/tellp/char/2.cc: New.
- * 27_io/basic_ostringstream/1.cc: New.
- * 27_io/basic_ostringstream/2.cc: New.
- * 27_io/basic_ostringstream/3.cc: New.
- * 27_io/basic_ostringstream/4.cc: New.
- * 27_io/basic_ostringstream/cons/char/3.cc: New.
- * 27_io/basic_ostringstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_ostringstream/str/char/1.cc: New.
- * 27_io/basic_ostringstream/str/char/2.cc: New.
- * 27_io/basic_streambuf/1.cc: New.
- * 27_io/basic_streambuf/2.cc: New.
- * 27_io/basic_streambuf/3.cc: New.
- * 27_io/basic_streambuf/cons/char/1.cc: New.
- * 27_io/basic_streambuf/imbue/char/1.cc: New.
- * 27_io/basic_streambuf/imbue/char/9322.cc: New.
- * 27_io/basic_streambuf/overflow/char/1.cc: New.
- * 27_io/basic_streambuf/overflow/char/2.cc: New.
- * 27_io/basic_streambuf/overflow/char/3599.cc: New.
- * 27_io/basic_streambuf/sgetc/char/1.cc: New.
- * 27_io/basic_streambuf/sgetn/char/1.cc: New.
- * 27_io/basic_streambuf/sputbackc/char/9538.cc: New.
- * 27_io/basic_streambuf/sputc/char/1057.cc: New.
- * 27_io/basic_streambuf/sputn/char/1.cc: New.
- * 27_io/basic_streambuf/sputn/char/1057.cc: New.
- * 27_io/basic_streambuf/sync/char/1057.cc: New.
- * 27_io/basic_stringbuf/1.cc: New.
- * 27_io/basic_stringbuf/2.cc: New.
- * 27_io/basic_stringbuf/3.cc: New.
- * 27_io/basic_stringbuf/4.cc: New.
- * 27_io/basic_stringbuf/5.cc: New.
- * 27_io/basic_stringbuf/imbue/char/1.cc: New.
- * 27_io/basic_stringbuf/imbue/char/9322.cc: New.
- * 27_io/basic_stringbuf/in_avail/char/1.cc: New.
- * 27_io/basic_stringbuf/overflow/char/2.cc: New.
- * 27_io/basic_stringbuf/overflow/char/3599.cc: New.
- * 27_io/basic_stringbuf/overflow/char/9988.cc: New.
- * 27_io/basic_stringbuf/sbumpc/char/1.cc: New.
- * 27_io/basic_stringbuf/sbumpc/char/9825.cc: New.
- * 27_io/basic_stringbuf/seekoff/char/1.cc: New.
- * 27_io/basic_stringbuf/seekoff/char/2.cc: New.
- * 27_io/basic_stringbuf/seekpos/char/1.cc: New.
- * 27_io/basic_stringbuf/seekpos/char/2.cc: New.
- * 27_io/basic_stringbuf/setbuf/char/1.cc: New.
- * 27_io/basic_stringbuf/setbuf/char/2.cc: New.
- * 27_io/basic_stringbuf/setbuf/char/3.cc: New.
- * 27_io/basic_stringbuf/sgetc/char/1.cc: New.
- * 27_io/basic_stringbuf/sgetn/char/1.cc: New.
- * 27_io/basic_stringbuf/snextc/char/1.cc: New.
- * 27_io/basic_stringbuf/sputbackc/char/1.cc: New.
- * 27_io/basic_stringbuf/sputbackc/char/9425.cc: New.
- * 27_io/basic_stringbuf/sputc/char/1.cc: New.
- * 27_io/basic_stringbuf/sputc/char/1057.cc: New.
- * 27_io/basic_stringbuf/sputc/char/9404-1.cc: New.
- * 27_io/basic_stringbuf/sputn/char/1.cc: New.
- * 27_io/basic_stringbuf/sputn/char/1057.cc: New.
- * 27_io/basic_stringbuf/sputn/char/9404-2.cc: New.
- * 27_io/basic_stringbuf/str/char/1.cc: New.
- * 27_io/basic_stringbuf/str/char/2.cc: New.
- * 27_io/basic_stringbuf/str/char/3.cc: New.
- * 27_io/basic_stringbuf/str/char/3955.cc: New.
- * 27_io/basic_stringbuf/sungetc/char/1.cc: New.
- * 27_io/basic_stringbuf/sync/char/1057.cc: New.
- * 27_io/basic_stringstream/1.cc: New.
- * 27_io/basic_stringstream/2.cc: New.
- * 27_io/basic_stringstream/3.cc: New.
- * 27_io/basic_stringstream/4.cc: New.
- * 27_io/basic_stringstream/rdbuf/char/2832.cc: New.
- * 27_io/basic_stringstream/str/char/1.cc: New.
- * 27_io/basic_stringstream/str/char/2.cc: New.
- * 27_io/basic_stringstream/str/char/3.cc: New.
- * 27_io/basic_stringstream/str/char/4.cc: New.
- * 27_io/fpos/1.cc: New.
- * 27_io/fpos/2.cc: New.
- * 27_io/fpos/3.cc: New.
- * 27_io/ios_base/callbacks/1.cc: New.
- * 27_io/ios_base/state/1.cc: New.
- * 27_io/ios_base/storage/1.cc: New.
- * 27_io/ios_base/storage/2.cc: New.
- * 27_io/ios_base/storage/3.cc: New.
- * 27_io/ios_base/sync_with_stdio/1.cc: New.
- * 27_io/ios_base/sync_with_stdio/2.cc: New.
- * 27_io/manipulators/adjustfield/char/1.cc: New.
- * 27_io/manipulators/adjustfield/char/2.cc: New.
- * 27_io/manipulators/basefield/char/1.cc: New.
- * 27_io/manipulators/standard/char/1.cc: New.
- * 27_io/manipulators/standard/char/2.cc: New.
- * 27_io/objects/char/1.cc: New.
- * 27_io/objects/char/2.cc: New.
- * 27_io/objects/char/2523-1_xin.cc: New.
- * 27_io/objects/char/2523-1_xin.in: New.
- * 27_io/objects/char/2523-2_xin.cc: New.
- * 27_io/objects/char/2523-2_xin.in: New.
- * 27_io/objects/char/3045.cc: New.
- * 27_io/objects/char/3647.cc: New.
- * 27_io/objects/char/3_xin.cc: New.
- * 27_io/objects/char/3_xin.in: New.
- * 27_io/objects/char/4_xin.cc: New.
- * 27_io/objects/char/4_xin.in: New.
- * 27_io/objects/char/5268.cc: New.
- * 27_io/objects/char/5280_xin.cc: New.
- * 27_io/objects/char/5280_xin.in: New.
- * 27_io/objects/char/6548_xin.cc: New.
- * 27_io/objects/char/6548_xin.in: New.
- * 27_io/objects/char/6648-1_xin.cc: New.
- * 27_io/objects/char/6648-1_xin.in: New.
- * 27_io/objects/char/6648-2_xin.cc: New.
- * 27_io/objects/char/6648-2_xin.in: New.
- * 27_io/objects/char/7744_xin.cc: New.
- * 27_io/objects/char/7744_xin.in: New.
- * 27_io/objects/wchar_t/1.cc: New.
- * 27_io/types/1.cc: New.
- * 27_io/types/2.cc: New.
- * data/filebuf_members-1.tst: New.
- * data/filebuf_members-1.txt: New.
- * data/filebuf_virtuals-1.tst: New.
- * data/filebuf_virtuals-1.txt: New.
- * data/filebuf_virtuals-2.tst: New.
- * data/filebuf_virtuals-3.tst: New.
- * data/ifstream_members-1.tst: New.
- * data/ifstream_members-1.txt: New.
- * data/ios_base_members_static-1.tst: New.
- * data/istream_extractor_other-1.tst: New.
- * data/istream_extractor_other-1.txt: New.
- * data/istream_extractor_other-2.tst: New.
- * data/istream_seeks-1.tst: New.
- * data/istream_seeks-1.txt: New.
- * data/istream_seeks-2.tst: New.
- * data/istream_seeks-3.tst: New.
- * data/istream_unformatted-1.tst: New.
- * data/istream_unformatted-1.txt: New.
- * data/ofstream_members-1.tst: New.
- * data/ostream_inserter_char-1.tst: New.
- * data/ostream_inserter_char-1.txt: New.
- * data/ostream_inserter_other-1.tst: New.
- * data/ostream_inserter_other-2.tst: New.
- * data/ostream_seeks-1.tst: New.
-
-2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/sstream.tcc (basic_stringbuf::seekpos): Remove
- requirement that __mode must be strict input or output.
-
- * include/std/std_streambuf.h (basic_streambuf::setp): Set
- _M_out_lim.
-
- * include/std/std_sstream.h (basic_strinbuf::str): Zero length
- output string shouldn't core.
- (basic_stringbuf::_M_really_sync): Add base argument. Remove rturn
- type.
- * include/bits/sstream.tcc: Adjust _M_really_sync bits here.
-
- * include/bits/istream.tcc (basic_istream::putback): Set gcount to
- zero.
-
-2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/data: New directory.
- * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
- to copy files from the testsuite data directory.
- (libstdc++-v3-list-sourcefiles): Add another test list filter, for
- testfiles containing _xin, which now means this is an interactive
- test and should be run with the interactive dejagnu hooks.
- * testsuite/Makefile.am: Remove testsuite_* files.
- * testsuite/Makefile.in: Regenerate.
-
-2003-04-09 Zack Weinberg <zack@codesourcery.com>
-
- * docs/html/install.html: Document complete list of locales
- required by test suite. Document procedure for installing
- said locales under Debian. Solicit instructions for other
- operating systems.
-
-2003-04-08 Alexandre Oliva <aoliva@redhat.com>
-
- * include/bits/sstream.tcc (overflow): Make sure operands of min
- and max have the same type.
-
-2003-04-04 Jerry Quinn <jlquinn@optonline.net>
-
- PR libstdc++/10276
- * src/ios.cc (ios_base::_M_init): Remove _M_callbacks
- initialization.
-
-2003-03-31 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_streambuf.h (_M_out_buf_size()): Remove.
- * include/bits/fstream.tcc (_M_allocate_internal_buffer):
- Don't set _M_out_end.
- (basic_filebuf::overflow): Replace _M_out_buf_size() with
- this->_M_out_cur && this->_M_out_cur < this->_M_out_end.
- * include/bits/sstream.tcc (basic_stringbuf::overflow):
- Replace _M_out_buf_size() with this->_M_out_cur < this->_M_out_end;
- * include/bits/streambuf.tcc (basic_streambuf::sputc):
- Replace _M_out_buf_size() with _M_out_cur && _M_out_cur < _M_out_end.
- (basic_streambuf::xsputn): Replace _M_out_buf_size() with
- _M_out_end - _M_out_cur.
- (__copy_streambufs): Likewise.
- * include/std/std_fstream.h (_M_set_determinate): Set
- _M_out_end here.
-
-2003-03-30 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (basic_filebuf::showmanyc,
- _M_convert_to_external, _M_really_overflow, seekoff): Fix
- test for synced buffer.
- * include/std/std_fstream.h (sync): Likewise.
- * src/fstream.cc (basic_filebuf<char>::_M_underflow_common,
- basic_filebuf<wchar_t>::_M_underflow_common): Likewise.
-
-2003-03-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/std_sstream.h (basic_istringstream): Adjust
- initialization.
- (basic_ostringstream): Same.
- (basic_stringstream): Same.
- * include/std/std_fstream.h (basic_ifstream): Adjust initialization.
- (basic_ofstream): Same.
- (basic_fstream): Same.
- * include/std/std_ostream.h (basic_ostrem): Add protected ctor
- that does not call init.
- * include/std/std_istream.h (basic_istream): Same.
- (basic_iostream): Construct istream, ostream uninitialized, use
- init to initialize just once. Add protected ctor that does not
- call init.
-
-2003-03-28 Paolo Carlini <pcarlini@unitus.it>
- Nathan Myers <ncm@cantrip.org>
-
- PR libstdc++/9533
- * include/bits/fstream.tcc (basic_filebuf<>::open): Don't
- call underflow().
- (basic_filebuf<>::showmanyc): Use the information provided
- by codecvt and __basic_file<>::showmanyc_helper to implement
- a non-trivial showmanyc.
- * config/io/basic_file_stdio.h
- (__basic_file<>::showmanyc_helper): New, declare.
- * config/io/basic_file_stdio.cc
- (__basic_file<>::showmanyc_helper): Define.
- (__basic_file<>::_M_open_mode): Don't set O_NONBLOCK.
- (__basic_file<char>::open): Don't call fcntl().
- * acinclude.m4 (GLIBCPP_CHECK_S_ISREG_OR_S_IFREG,
- GLIBCPP_CHECK_POLL): New macros.
- * configure.in: Call here.
- * acconfig.h: Add #undefs for the corresponding symbols.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * config.h.in: Regenerate.
-
-2003-03-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/linker-map.gnu: Remove string export restrictions.
-
-2003-03-24 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/21_strings/basic_string/find/char/1.cc: Remove
- find_first_of, find_last_of and find_last_not_of tests.
- * testsuite/21_strings/basic_string/find/char/2.cc: find_first_of
- tests here, new file.
- * testsuite/21_strings/basic_string/find/wchar_t/1.cc: Likewise,
- remove wchar_t find_first_of, find_last_of and find_last_not_of tests.
- * testsuite/21_strings/basic_string/find/wchar_t/2.cc: Likewise,
- wchar_t find_first_of tests here, new file.
- * testsuite/21_strings/basic_string/rfind/char/2.cc: find_last_of
- tests here.
- * testsuite/21_strings/basic_string/rfind/char/3.cc: find_last_not_of
- tests here.
- * testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: likewise,
- wchar_t find_last_of tests here.
- * testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: likewise,
- wchar_t find_last_not_of tests here.
-
-2003-03-22 Loren J. Rittle <ljrittle@acm.org>
-
- * config/os/hpux/ctype_noninline.h (ctype<char>::classic_table):
- Correct return value.
-
-2003-03-21 Jerry Quinn <jlquinn@optonline.net>
-
- PR libstdc++/5730
- * include/bits/c++config (_GLIBCPP_FAST_MATH): Define.
- * include/std/std_complex.h (norm): Use faster,
- less accurate computation for builtin float types under --fast-math.
-
-2003-03-21 Magnus Fromreide <gnats@magfr.user.lysator.liu.se>
-
- * testsuite/testsuite_hooks.h: Fix warning nits.
-
-2003-03-19 Alexandre Oliva <aoliva@redhat.com>
-
- * config/cpu/mips/atomicity.h (__exchange_and_add, __atomic_add):
- Only .set mips2 for the o32 ABI.
-
-2003-03-19 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/21_strings/char_traits/requirements/char/1.cc:
- Test char not wchar_t.
-
-2003-03-18 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/21_strings/basic_string/append/wchar_t/1.cc:
- Correct size, taking into account sizeof(wchar_t).
-
-2003-03-18 Paolo Carlini <pcarlini@unitus.it>
-
- Reshuffle 21_strings testsuite.
- * testsuite/21_strings/append.cc, c_strings.cc, invariants.cc,
- assign.cc, ctor_copy_dtor.cc, nonmember.cc, capacity.cc,
- element_access.cc, operations.cc, char_traits_requirements.cc,
- find.cc, replace.cc, char_traits_typedefs.cc, insert.cc, rfind.cc,
- compare.cc, inserters_extractors.cc, substr.cc: Split up, add
- wchar_t tests as follows.
- * 21_strings/basic_string/append/char/1.cc: New.
- * 21_strings/basic_string/append/wchar_t/1.cc: New.
- * 21_strings/basic_string/assign/char/1.cc: New.
- * 21_strings/basic_string/assign/char/2.cc: New.
- * 21_strings/basic_string/assign/char/3.cc: New.
- * 21_strings/basic_string/assign/wchar_t/1.cc: New.
- * 21_strings/basic_string/assign/wchar_t/2.cc: New.
- * 21_strings/basic_string/assign/wchar_t/3.cc: New.
- * 21_strings/basic_string/capacity/1.cc: New.
- * 21_strings/basic_string/capacity/char/1.cc: New.
- * 21_strings/basic_string/capacity/char/2.cc: New.
- * 21_strings/basic_string/capacity/wchar_t/1.cc: New.
- * 21_strings/basic_string/capacity/wchar_t/2.cc: New.
- * 21_strings/basic_string/compare/char/1.cc: New.
- * 21_strings/basic_string/compare/wchar_t/1.cc: New.
- * 21_strings/basic_string/cons/char/1.cc: New.
- * 21_strings/basic_string/cons/char/2.cc: New.
- * 21_strings/basic_string/cons/char/3.cc: New.
- * 21_strings/basic_string/cons/char/4.cc: New.
- * 21_strings/basic_string/cons/char/5.cc: New.
- * 21_strings/basic_string/cons/wchar_t/1.cc: New.
- * 21_strings/basic_string/cons/wchar_t/2.cc: New.
- * 21_strings/basic_string/cons/wchar_t/3.cc: New.
- * 21_strings/basic_string/cons/wchar_t/4.cc: New.
- * 21_strings/basic_string/cons/wchar_t/5.cc: New.
- * 21_strings/basic_string/element_access/char/1.cc: New.
- * 21_strings/basic_string/element_access/char/2.cc: New.
- * 21_strings/basic_string/element_access/char/3.cc: New.
- * 21_strings/basic_string/element_access/wchar_t/1.cc: New.
- * 21_strings/basic_string/element_access/wchar_t/2.cc: New.
- * 21_strings/basic_string/element_access/wchar_t/3.cc: New.
- * 21_strings/basic_string/find/char/1.cc: New.
- * 21_strings/basic_string/find/wchar_t/1.cc: New.
- * 21_strings/basic_string/insert/char/1.cc: New.
- * 21_strings/basic_string/insert/char/2.cc: New.
- * 21_strings/basic_string/insert/wchar_t/1.cc: New.
- * 21_strings/basic_string/insert/wchar_t/2.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/1.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/4.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/5.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/6.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/7.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/8.cc: New.
- * 21_strings/basic_string/inserters_extractors/char/9.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/1.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/4.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/5.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/6.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/7.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/8.cc: New.
- * 21_strings/basic_string/inserters_extractors/wchar_t/9.cc: New.
- * 21_strings/basic_string/operators/char/1.cc: New.
- * 21_strings/basic_string/operators/char/2.cc: New.
- * 21_strings/basic_string/operators/wchar_t/1.cc: New.
- * 21_strings/basic_string/operators/wchar_t/2.cc: New.
- * 21_strings/basic_string/replace/char/1.cc: New.
- * 21_strings/basic_string/replace/char/2.cc: New.
- * 21_strings/basic_string/replace/char/3.cc: New.
- * 21_strings/basic_string/replace/char/4.cc: New.
- * 21_strings/basic_string/replace/char/5.cc: New.
- * 21_strings/basic_string/replace/wchar_t/1.cc: New.
- * 21_strings/basic_string/replace/wchar_t/2.cc: New.
- * 21_strings/basic_string/replace/wchar_t/3.cc: New.
- * 21_strings/basic_string/replace/wchar_t/4.cc: New.
- * 21_strings/basic_string/replace/wchar_t/5.cc: New.
- * 21_strings/basic_string/rfind/char/1.cc: New.
- * 21_strings/basic_string/rfind/char/2.cc: New.
- * 21_strings/basic_string/rfind/char/3.cc: New.
- * 21_strings/basic_string/rfind/wchar_t/1.cc: New.
- * 21_strings/basic_string/rfind/wchar_t/2.cc: New.
- * 21_strings/basic_string/rfind/wchar_t/3.cc: New.
- * 21_strings/basic_string/substr/char/1.cc: New.
- * 21_strings/basic_string/substr/wchar_t/1.cc: New.
- * 21_strings/c_strings/char/1.cc: New.
- * 21_strings/c_strings/char/2.cc: New.
- * 21_strings/c_strings/wchar_t/1.cc: New.
- * 21_strings/c_strings/wchar_t/2.cc: New.
- * 21_strings/char_traits/requirements/char/1.cc: New.
- * 21_strings/char_traits/requirements/wchar_t/1.cc: New.
- * 21_strings/char_traits/typedefs/char/1.cc: New.
-
-2003-03-17 Paolo Carlini <pcarlini@unitus.it>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/10097
- * src/fstream.cc (basic_filebuf<char>::_M_underflow_common,
- basic_filebuf<wchar_t>::_M_underflow_common):
- if (gptr() < egptr()) return *gptr().
- * testsuite/27_io/filebuf_virtuals.cc (test16): Add.
-
- * testsuite/27_io/filebuf_members.cc (test_04): Minor
- changes: unlink fifo before making it, fix spelling error.
-
-2003-03-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/Makefile.am (CLEANFILES): Add tmp*.
- * testsuite/Makefile.in: Regenerate.
- * testsuite/27_io/filebuf_members.cc: Consistently name tmp files.
- Cleanups.
-
-2003-03-17 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9964
- * include/bits/fstream.tcc (basic_filebuf::close):
- Always close file, even when write fails.
- * testsuite/27_io/filebuf_members.cc (test_07): New test.
-
-2003-03-17 Danny Smith <dannysmith@users.sourceforge.net>
-
- * libsupc++/Makefile.am (C_COMPILE): Remove.
- (LTCOMPILE): Likewise.
- * libsupc++/Makefile.in: Regenerate.
-
-2003-03-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/23_containers/bitset_members.cc: Add test variable.
- * testsuite/23_containers/map_insert.cc: Same.
- * testsuite/22_locale/ctype/cons/char/1.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Same.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Same.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
- * testsuite/27_io/istream_exception.cc: Same.
- * testsuite/27_io/filebuf_virtuals.cc: Same.
- * testsuite/27_io/stringbuf_virtuals.cc: Same.
- * testsuite/27_io/ostream_inserter_arith.cc: Same.
- * testsuite/26_numerics/valarray_operators.cc: Same.
- * testsuite/26_numerics/slice.cc: Same.
- * testsuite/26_numerics/slice_array_assignment.cc: Same.
- * testsuite/24_iterators/istream_iterator.cc: Same.
- * mkcheck.in (TESTS_FILE): Use dejagnu-generated file if possible.
-
-2003-03-14 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9581
- PR libstdc++/9870
- * config/locale/generic/ctype_members.cc,
- * config/locale/gnu/ctype_members.cc
- (ctype<wchar_t>::do_widen(char)): Cast argument to
- unsigned char before passing to btowc.
- (ctype<wchar_t>::do_widen(const char*, const char*, wchar_t*)):
- Convert characters with btowc instead of mbsrtowcs.
- (ctype<wchar_t>::do_narrow(const wchar_t*, const wchar_t*,
- char, char*):
- Convert characters with wctob instead of wcsrtombs.
- * testsuite/22_locale/ctype/narrow/wchar_t/3.cc: New test.
- * testsuite/22_locale/ctype/widen/wchar_t/2.cc: New test.
- * testsuite/22_locale/ctype/widen/wchar_t/3.cc: New test.
-
-2003-03-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/stdc++.h: New.
- * libsupc++/exception_defines.h (__EXCEPTION_DEFINES_H): Add guard.
- * include/Makefile.am (stamp-std-precompile): Generate stdc++.h.gch
- * include/Makefile.in: Regenerate.
- * testsuite_flags.in (--build-cxx): Add, but don't use PCHFLAGS.
- (--cxxflags): Put -g -O2 here.
- * testsuite/libstdc++-v3.dg/dg.exp: Remove -g -O2 here.
-
-2003-03-14 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/testsuite_hooks.h: Suppress runtime exception thrown by
- missing named locale.
-
-2003-03-14 Andreas Schwab <schwab@suse.de>
-
- * configure.in: Only append to makefiles that are newly created to
- avoid multiple multi-do/multi-clean rules.
- * configure: Rebuilt.
-
-2003-03-13 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/configopts.html, docs/html/documentation.html,
- docs/html/explanations.html, docs/html/install.html,
- docs/html/19_diagnostics/howto.html, docs/html/faq/index.html: Fix
- invalid XHTML and make page header style consistent.
-
-2003-03-12 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/faq/index.html: Explain memory "leaks" due to allocators.
- * docs/html/faq/index.txt: Regenerate.
- * docs/html/debug.html: Add a bit to allocator text and fix XHTML.
-
-2003-03-12 Andreas Schwab <schwab@suse.de>
-
- * acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in
- glibcpp_toolexeclibdir.
- * aclocal.m4, configure: Rebuilt.
-
-2003-03-11 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/faq/index.html: Update text about location of headers.
- * docs/html/faq/index.txt: Regenerate.
-
-2003-03-11 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/demangle.h: Prepend accessors of
- class qualifier with 'get_' in order to fix warnings
- when compiling with -Wshadow.
-
-2003-03-11 Loren J. Rittle <ljrittle@acm.org>
-
- * config/os/bsd/freebsd/ctype_inline.h: Support _M_table
- when so installed.
- * testsuite/22_locale/ctype/cons/char/1.cc: Fix typo.
-
- * testsuite/testsuite_hooks.h (run_tests_wrapped_env): Do not
- report lack of setenv().
-
-2003-03-09 Paolo Carlini <pcarlini@unitus.it>
-
- * config/io/basic_file_stdio.cc: include <unistd.h>.
-
-2003-03-09 Paolo Carlini <pcarlini@unitus.it>
- Nathan Myers <ncm@cantrip.org>
-
- PR libstdc++/7744
- * config/io/basic_file_stdio.h (__basic_file<>::xsgetn, xsputn,
- seekoff, seekpos): Add a boolean parameter __stdio.
- * config/io/basic_file_stdio.cc (__basic_file<>::xsgetn, xsputn,
- seekoff, seekpos): If __stdio == true, use fread (fwrite, fseek/ftell,
- fseek/ftell, respectively), otherwise read (write, lseek, lseek,
- respectively).
- * include/bits/fstream.tcc (basic_filebuf<>::_M_convert_to_external,
- _M_really_overflow, seekoff): Use the boolean parameter in the calls.
- * include/std/std_fstream.h (sync): Likewise.
- * src/fstream.cc (basic_filebuf<>::_M_underflow_common): Likewise.
- * src/ios.cc (ios_base::Init::_S_ios_create(bool)): Revert
- libstdc++/8399 commit involving isatty(0).
- * acinclude.m4 (GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1): Remove.
- (GLIBCPP_CHECK_UNISTD_SUPPORT): Remove
- * configure.in: Remove call.
- * aclocal.m4: Regenerate.
- * config.h.in: Regenerate.
- * configure: Regenerate.
- * testsuite/27_io/narrow_stream_objects.cc (test11): Add.
-
-2003-03-09 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9988
- * include/bits/fstream.tcc (overflow): don't write EOF to file.
- * testsuite/27_io/filebuf_virtuals.cc (test15): Add.
-
-2003-03-08 Jerry Quinn <jlquinn@optonline.net>
-
- PR libstdc++/9561
- * include/bits/basic_ios.h (_M_setstate): New.
- * include/bits/ostream.tcc (operator<<): Use it.
- * include/bits/istream.tcc (operator>>): Use it.
- * include/std/std_ostream.h (operator<<): Make friends.
- * include/std/std_istream.h (operator>>): Make friends.
- * testsuite/27_io/ostream_exception.cc,
- testsuite/27_io/istream_exception.cc: New tests.
-
-2003-03-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.tcc: Fix typo.
-
-2003-03-08 Loren J. Rittle <ljrittle@acm.org>
-
- * testsuite/26_numerics/c99_classification_macros_c.cc: Tweak test.
-
- * config/locale/generic/c_locale.cc
- (locale::facet::_S_create_c_locale): Throw runtime exception when
- unsupported language is specified.
- * testsuite/testsuite_hooks.h
- (run_test_wrapped_generic_locale_exception_catcher): New function.
- * testsuite/testsuite_hooks.cc (run_tests_wrapped_locale):
- Suppress runtime exception thrown by generic implementation.
- (run_tests_wrapped_env): Likewise.
- (run_test_wrapped_generic_locale_exception_catcher): New function.
- * testsuite/22_locale/collate/compare/char/1.cc: New test wrap.
- * testsuite/22_locale/collate/compare/char/2.cc: New test wrap.
- * testsuite/22_locale/collate/compare/char/3.cc: New test wrap.
- * testsuite/22_locale/collate/hash/char/2.cc: New test wrap.
- * testsuite/22_locale/collate/transform/char/2.cc: New test wrap.
- * testsuite/22_locale/collate/transform/char/3.cc: New test wrap.
- * testsuite/22_locale/collate_byname/1.cc: New test wrap.
- * testsuite/22_locale/ctype/is/char/2.cc: New test wrap.
- * testsuite/22_locale/facet/2.cc: New test wrap.
- * testsuite/22_locale/locale/cons/4.cc: New test wrap.
- * testsuite/22_locale/locale/cons/5.cc: New test wrap.
- * testsuite/22_locale/locale/cons/7.cc: New test wrap.
- * testsuite/22_locale/messages/members/char/1.cc: New test wrap.
- * testsuite/22_locale/messages/members/char/2.cc: New test wrap.
- * testsuite/22_locale/messages/members/char/3.cc: New test wrap.
- * testsuite/22_locale/messages_byname/1.cc: New test wrap.
- * testsuite/22_locale/money_get/get/char/1.cc: New test wrap.
- * testsuite/22_locale/money_get/get/char/2.cc: New test wrap.
- * testsuite/22_locale/money_get/get/char/3.cc: New test wrap.
- * testsuite/22_locale/money_get/get/char/4.cc: New test wrap.
- * testsuite/22_locale/money_put/put/char/1.cc: New test wrap.
- * testsuite/22_locale/money_put/put/char/2.cc: New test wrap.
- * testsuite/22_locale/money_put/put/char/3.cc: New test wrap.
- * testsuite/22_locale/moneypunct/members/char/2.cc: New test wrap.
- * testsuite/22_locale/moneypunct_byname/1.cc: New test wrap.
- * testsuite/22_locale/num_get/get/char/1.cc: New test wrap.
- * testsuite/22_locale/num_get/get/char/2.cc: New test wrap.
- * testsuite/22_locale/num_get/get/char/3.cc: New test wrap.
- * testsuite/22_locale/num_get/get/char/5.cc: New test wrap.
- * testsuite/22_locale/num_get/get/char/6.cc: New test wrap.
- * testsuite/22_locale/num_put/put/char/1.cc: New test wrap.
- * testsuite/22_locale/num_put/put/char/2.cc: New test wrap.
- * testsuite/22_locale/num_put/put/char/3.cc: New test wrap.
- * testsuite/22_locale/num_put/put/char/5.cc: New test wrap.
- * testsuite/22_locale/numpunct/members/char/1.cc: New test wrap.
- * testsuite/22_locale/numpunct/members/char/2.cc: New test wrap.
- * testsuite/22_locale/numpunct_byname/1.cc: New test wrap.
- * testsuite/22_locale/numpunct_byname/2.cc: New test wrap.
- * testsuite/22_locale/time_get/date_order/char/1.cc: New test wrap.
- * testsuite/22_locale/time_get/get_date/char/1.cc: New test wrap.
- * testsuite/22_locale/time_get/get_date/char/2.cc: New test wrap.
- * testsuite/22_locale/time_get/get_monthname/char/1.cc: New test wrap.
- * testsuite/22_locale/time_get/get_monthname/char/2.cc: New test wrap.
- * testsuite/22_locale/time_get/get_time/char/1.cc: New test wrap.
- * testsuite/22_locale/time_get/get_time/char/2.cc: New test wrap.
- * testsuite/22_locale/time_get/get_weekday/char/1.cc: New test wrap.
- * testsuite/22_locale/time_get/get_weekday/char/2.cc: New test wrap.
- * testsuite/22_locale/time_get/get_year/char/1.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/1.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/2.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/3.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/4.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/5.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/6.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/7.cc: New test wrap.
- * testsuite/22_locale/time_put/put/char/8.cc: New test wrap.
- * testsuite/27_io/filebuf_virtuals.cc: New test wrap.
- * testsuite/27_io/ios_members.cc: New test wrap.
- * testsuite/27_io/ostream_inserter_arith.cc (test02): Make void.
- New test wrap.
- * testsuite/27_io/streambuf_members.cc: New test wrap.
- * testsuite/27_io/stringbuf_virtuals.cc: New test wrap.
-
-2003-03-08 Paolo Carlini <pcarlini@unitus.it>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9424
- * include/bits/streambuf.tcc (__copy_streambufs): Use
- sgetn-sputn only when sputn cannot fail, otherwise fall back
- to safe snextc-sputc.
- * testsuite/27_io/streambuf_members.cc (test11, test12): Add.
-
-2003-03-08 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facets.tcc (num_put::do_put(bool)): Use
- locale cache for truename and falsename.
-
-2003-03-08 Jerry Quinn <jlquinn@optonline.net>
-
- * src/ios.cc (ios_base::ios_base): Correct order of _M_word and
- _M_word_size initialization.
-
-2003-03-07 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/fstream.tcc (_M_convert_to_external):
- Set __elen to zero if codecvt::out eventually fails.
-
-2003-03-07 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9182
- * include/bits/fstream.tcc (_M_really_overflow): Check
- for _M_convert_to_external possible failures.
- * include/std/std_fstream.h (sync): Check _M_really_overflow
- return value and return -1 in case of failure.
- * testsuite/27_io/filebuf_virtuals.cc (test13, test14): Add.
-
-2003-03-07 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9826
- * include/bits/istream.tcc (operator>>(_CharT*),
- operator>>(basic_string&), ws): Pass a char_type to __ctype.is.
- * testsuite/27_io/stringstream.cc (test02): Add.
-
- * include/bits/istream.tcc (operator>>(_CharT*)):
- Assign a char_type to *__s.
-
-2003-03-07 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9817
- * include/bits/locale_facets.tcc
- (collate::do_compare, collate::do_transform):
- Handle nul characters in input.
- * testsuite/22_locale/collate/compare/char/3.cc: New test.
- * testsuite/22_locale/collate/compare/wchar_t/3.cc: New test.
- * testsuite/22_locale/collate/transform/char/3.cc: New test.
- * testsuite/22_locale/collate/transform/wchar_t/3.cc: New test.
-
-2003-03-07 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/streambuf_iterator.h (_M_put): Set _M_failed if
- sputn fails.
- * testsuite/27_io/ostream_fail.cc: New test.
-
-2003-03-07 Matthias Klose <doko@debian.org>
-
- * Makefile.am (AM_MAKEFLAGS): Also pass gxx_include_dir.
- FLAGS_TO_PASS: Set to AM_MAKEFLAGS
- * Makefile.in: Regenerate.
- * libsupc++/Makefile.am: Express glibcppinstalldir in terms
- of gxx_include_dir.
- AM_MAKEFLAGS: Pass gxx_include_dir.
- * libsupc++/Makefile.in: Regenerate.
-
-2003-03-06 Jerry Quinn <jlquinn@optonline.net>
-
- * testsuite/27_io/ios_base_storage.cc (test02): Set exception
- mask. Test setting small-numbered pword and iword slots. Test
- behavior at limit of numeric_limits::max. Check that values are
- still good after failures.
-
-2003-03-06 Jerry Quinn <jlquinn@optonline.net>
-
- * src/ios.cc (ios_base::_M_init): Remove _M_word_size.
- (ios_base::ios_base): Set _M_word, _M_word_size.
- (ios_base::~ios_base): Remove redundant test.
- * testsuite/27_io/ios_base_storage.cc (test03): New.
-
-2003-03-04 Alexandre Oliva <aoliva@redhat.com>
-
- * src/strstream.cc, include/bits/basic_string.tcc: Remove
- incorrect whitespace added in my previous change.
-
-2003-03-05 Carlo Wood <carlo@alinoe.com>
-
- * include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added
- _S_initialized() in order to allow debugging libraries to detect
- when the std streams are initialized from an overloaded operator
- new.
-
-2003-03-05 Benjamin Kosnik <bkoz@redhat.com>
-
- * libsupc++/demangle.h: Move to..
- * include/bits/demangle.h: ...here.
- * src/demangle.cc: Adjust include.
- * include/Makefile.am (bits_headers): Add.
- * include/Makefile.in: Regenerate.
-
-2003-03-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/globals.cc: Clarify comments, remove c_locale_imp_compat.
-
- * config/linker-map.gnu: Filter typeinfo and vtable info.
-
-2003-03-04 Jerry Quinn <jlquinn@optonline.net>
-
- * src/ios.cc (ios_base::_M_grow_words): Don't delete _M_word on
- new failure. Throw exception if badbit and exception mask when ix
- >= numeric_limits<int>::max().
-
-2003-03-04 Alexandre Oliva <aoliva@redhat.com>
-
- * src/strstream.cc (strstreambuf::overflow): Make sure operands of
- min and max have the same type.
- * include/bits/basic_string.tcc (append, rfind, compare): Likewise.
-
-2003-03-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am (allstamps): Remove stamp-std-precompile.
- * include/Makefile.in: Regenerate.
-
-2003-03-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/abi_check.cc (report_symbol_info): Add version info.
-
- * config/linker-map.gnu: Hide more stuff.
- * include/Makefile.am: Cleanups.
- * include/Makefile.in: Regenerate.
-
-2003-02-27 Jerry Quinn <jlquinn@optonline.net>
-
- * config/locale/generic/messages_members.h (messages::messages):
- Remove name from unused parameter.
-
-2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/Makefile.am (sources): Add demangle.cc.
- (demangle.o): Add.
- (demangle.lo): Add.
- * src/Makefile.in: Regenerate.
- * libsupc++/Makefile.am: Remove old __cxa_demangle bits.
- * libsupc++/Makefile.in: Regenerate.
-
- * testsuite/testsuite_hooks.h
- (__gnu_cxx_test::verify_demangle): New.
- * testsuite/testsuite_hooks.cc: Define.
-
-2003-02-27 Carlo Wood <carlo@alinoe.com>
-
- * src/demangle.cc: New.
- * libsupc++/demangle.h: New.
-
-2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
- Carlo Wood <carlo@alinoe.com>
-
- * testsuite/demangle/abi_examples/01.cc: New.
- * testsuite/demangle/abi_examples/02.cc: New.
- * testsuite/demangle/abi_examples/03.cc: New.
- * testsuite/demangle/abi_examples/04.cc: New.
- * testsuite/demangle/abi_examples/05.cc: New.
- * testsuite/demangle/abi_examples/06.cc: New.
- * testsuite/demangle/abi_examples/07.cc: New.
- * testsuite/demangle/abi_examples/08.cc: New.
- * testsuite/demangle/abi_examples/09.cc: New.
- * testsuite/demangle/abi_examples/10.cc: New.
- * testsuite/demangle/abi_examples/11.cc: New.
- * testsuite/demangle/abi_examples/12.cc: New.
- * testsuite/demangle/abi_examples/13.cc: New.
- * testsuite/demangle/abi_examples/14.cc: New.
- * testsuite/demangle/abi_examples/15.cc: New.
- * testsuite/demangle/abi_examples/16.cc: New.
- * testsuite/demangle/abi_examples/17.cc: New.
- * testsuite/demangle/abi_examples/18.cc: New.
- * testsuite/demangle/abi_examples/19.cc: New.
- * testsuite/demangle/abi_examples/20.cc: New.
- * testsuite/demangle/abi_examples/21.cc: New.
- * testsuite/demangle/abi_examples/22.cc: New.
- * testsuite/demangle/abi_examples/23.cc: New.
- * testsuite/demangle/abi_examples/24.cc: New.
- * testsuite/demangle/abi_examples/25.cc: New.
- * testsuite/demangle/abi_examples/26.cc: New.
- * testsuite/demangle/abi_text/01.cc: New.
- * testsuite/demangle/abi_text/02.cc: New.
- * testsuite/demangle/abi_text/03.cc: New.
- * testsuite/demangle/abi_text/04.cc: New.
- * testsuite/demangle/abi_text/05.cc: New.
- * testsuite/demangle/abi_text/06.cc: New.
- * testsuite/demangle/abi_text/07.cc: New.
- * testsuite/demangle/abi_text/08.cc: New.
- * testsuite/demangle/abi_text/09.cc: New.
- * testsuite/demangle/abi_text/10.cc: New.
- * testsuite/demangle/abi_text/11.cc: New.
- * testsuite/demangle/abi_text/12.cc: New.
- * testsuite/demangle/abi_text/13.cc: New.
- * testsuite/demangle/abi_text/14.cc: New.
- * testsuite/demangle/regression/3111-1.cc: New.
- * testsuite/demangle/regression/3111-2.cc: New.
- * testsuite/demangle/regression/7986-01.cc: New.
- * testsuite/demangle/regression/7986-02.cc: New.
- * testsuite/demangle/regression/7986-03.cc: New.
- * testsuite/demangle/regression/7986-04.cc: New.
- * testsuite/demangle/regression/7986-05.cc: New.
- * testsuite/demangle/regression/7986-06.cc: New.
- * testsuite/demangle/regression/7986-07.cc: New.
- * testsuite/demangle/regression/7986-08.cc: New.
- * testsuite/demangle/regression/7986-09.cc: New.
- * testsuite/demangle/regression/7986-10.cc: New.
- * testsuite/demangle/regression/7986-11.cc: New.
- * testsuite/demangle/regression/7986-12.cc: New.
- * testsuite/demangle/regression/7986.cc: New.
- * testsuite/demangle/regression/8897.cc: New.
- * testsuite/demangle/regression/cw-01.cc: New.
- * testsuite/demangle/regression/cw-02.cc: New.
- * testsuite/demangle/regression/cw-03.cc: New.
- * testsuite/demangle/regression/cw-04.cc: New.
- * testsuite/demangle/regression/cw-05.cc: New.
- * testsuite/demangle/regression/cw-06.cc: New.
- * testsuite/demangle/regression/cw-07.cc: New.
- * testsuite/demangle/regression/cw-08.cc: New.
- * testsuite/demangle/regression/cw-09.cc: New.
- * testsuite/demangle/regression/cw-10.cc: New.
- * testsuite/demangle/regression/cw-11.cc: New.
- * testsuite/demangle/regression/cw-12.cc: New.
- * testsuite/demangle/regression/cw-13.cc: New.
- * testsuite/demangle/regression/cw-14.cc: New.
- * testsuite/demangle/regression/old.cc: New.
-
-2003-02-25 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/Intro.3: Update with new (proper) names.
- * docs/doxygen/TODO: Update.
- * docs/doxygen/run_doxygen: More comments, fix up man pages.
- Fake entries for standard typedefs.
- * docs/doxygen/user.cfg.in: Turn INLINE_INHERITED_MEMB back on.
- * docs/html/documentation.html: Top-level man page is now called
- C++Intro.
- * include/std/std_limits.h: Doxygenate.
-
-2003-02-25 Scott Snyder <snyder@fnal.gov>
-
- PR libstdc++/9811
- * include/bits/stl_map.h (lower_bound, upper_bound, equal_range):
- Correct documentation.
- * include/bits/stl_multimap.h (lower_bound, upper_bound,
- equal_range): Likewise.
-
-2003-02-24 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9825
- * src/fstream.cc
- (basic_filebuf<char/wchar_t>::_M_underflow_common): When
- __bump is true (uflow), always increment the read pointer
- (_M_in_cur) before returning successfully.
- * testsuite/27_io/filebuf_virtuals.cc (test12): Add.
-
-2003-02-24 Paolo Carlini <pcarlini@unitus.it>
- Nathan Myers <ncm@cantrip.org>
-
- PR libstdc++/9404, PR libstdc++/9701 (partial)
- (aka pptr == epptr implies overflow)
- * include/bits/fstream.tcc (_M_allocate_internal_buffer):
- Consistently, _M_out_end points to the end of the buffer just
- created.
- (overflow): Tweak to use _M_out_buf_size().
- (_M_convert_to_external): The role of the old _M_out_end is
- now played by _M_out_lim.
- (_M_really_overflow): Likewise.
- (seekoff): Likewise.
- (setbuf): _M_out_end points to the end of the external buffer.
- * include/bits/sstream.tcc (overflow): Rewrote, taking into
- account the resolution of DR 169 (TC).
- (seekoff): Use _M_string.capacity(); ios_base::end is now _M_out_lim.
- (seekpos): Use _M_string.capacity(); tweak.
- * include/bits/streambuf.tcc (sputc, xsputn): Remove comments.
- * include/std/std_fstream.h (sync): The role of the old
- _M_out_end is now played by _M_out_lim.
- (_M_set_indeterminate): Use _M_set_determinate.
- (_M_set_determinate): _M_out_end is now _M_out_lim.
- (_M_is_indeterminate): Likewise.
- * include/std/std_sstream.h (str()): _M_out_end is now _M_out_lim.
- (_M_stringbuf_init): Don't set _M_buf_size, unused for sstreams,
- which have the information readily available as _M_string.capacity();
- for ate and app modes, pass the string size to _M_really_sync.
- (_M_really_sync): Consistently set _M_out_end and _M_out_lim, to
- point to the end of the buffer (i.e., epptr) and to the string end,
- respectively.
- * include/std/std_streambuf.h: tweak comments, add _M_out_lim,
- which points to the right limit of the used put area.
- (_M_out_cur_move): The role of the old _M_out_end is now played
- by _M_out_lim.
- (_M_out_buf_size): Simplify: now (when _M_out_cur) return simply
- _M_out_end - _M_out_cur (i.e., pptr), _very_ close to the letter
- of the standard.
- (basic_streambuf()): Initialize _M_out_lim too.
- * testsuite/27_io/filebuf_virtuals.cc (test10): Trivial tweak.
- * testsuite/27_io/filebuf_virtuals.cc (test11): Add.
- * testsuite/27_io/stringbuf_virtuals.cc (test09): Add.
-
-2003-02-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/27_io/ios_base_storage.cc (main): Call
- set_memory_limits.
-
-2003-02-21 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/locale_facets.tcc (_M_convert_float): Replace
- numpunct facet accesses with data from __locale_cache.
-
-2003-02-20 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/faq/index.html (3.9): New note, wchar_t on FreeBSD.
- * docs/html/faq/index.txt: Regenerate.
-
-2003-02-20 Phil Edwards <pme@gcc.gnu.org>
-
- * config/linker-map.gnu: Also export locking symbols needed for the
- generic atomicity.h case.
-
-2003-02-20 Alexandre Oliva <aoliva@redhat.com>
-
- * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
- config.status.
- * configure: Rebuilt.
-
-2003-02-19 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/sstream.tcc (overflow): According to
- 27.7.1.3, p5, actual output is performed by sputc(c).
-
-2003-02-19 Phil Edwards <pme@gcc.gnu.org>
-
- PR libstdc++/9582
- * include/bits/stl_alloc.h: Remove all traces of assert().
-
-2003-02-18 Paolo Carlini <pcarlini@unitus.it>
-
- * include/std/std_sstream.h (str()): the size of the
- current string may be different from the initial one
- whenever _M_out_end > _M_out_beg.
- * testsuite/27_io/stringbuf_members.cc (test07): Add.
-
-2003-02-18 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9582
- * include/bits/stl_alloc.h (__pool_alloc::allocate): Remove assert.
-
-2003-02-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/basic_ios.tcc (copyfmt): Copy locale data as well.
- * testsuite/27_io/ios_members.cc (test03): New.
-
-2003-02-17 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/basic_ios.h (basic_ios::_M_cache_locale): Declare.
- (basic_ios::_M_cache_facets): Move into above.
- * include/bits/basic_ios.tcc (basic_ios::copyfmt): Rebuild locale
- cache.
- (basic_ios::imbue): Force locale cache to be built.
- (basic_ios::_M_init): Create and initialize locale cache.
- * include/bits/ios_base.h (__locale_cache_base): Declare.
- (ios_base::_M_locale_cache): New.
- (ios_base::_M_cache): Define.
- * include/bits/locale_facets.h: (__num_base): Fix comment. Add
- _S_end.
- (__locale_cache_base,__locale_cache<_CharT>): New classes.
- (__locale_cache<char>, __locale_cache<wchar_t>): New specializations.
- * include/bits/locale_facets.tcc (num_put::_M_convert_int): Use locale
- cache literal string, grouping flag, thousands separator.
- (__locale_cache<_CharT>::__locale_cache): New.
- (__locale_cache<_CharT>::_M_init): New.
- * src/ios.cc: Clear _M_locale_cache in constructor.
- * src/locale-inst.cc (__locale_cache<char>, __locale_cache<_char_t>):
- New.
-
-2003-02-17 Paolo Carlini <pcarlini@unitus.it>
-
- * src/locale-inst.cc: Do not include <cassert>.
- * src/locale.cc: Likewise.
-
-2003-02-17 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9580
- * include/std/std_fstream.h: Declare underflow and uflow
- specializations, change generic definitions to do nothing.
- * src/fstream.cc: Add underflow and uflow specializations.
-
-2003-02-17 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9169
- * include/bits/fstream.tcc (_M_convert_to_external):
- Deal correctly with noconv, as prescribed by 27.8.1.4,p8.
- * testsuite/27_io/filebuf_virtuals.cc (test10): Add.
-
-2003-02-13 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config (_GLIBCPP_EXTERN_TEMPLATE): Define.
- * include/bits/basic_ios.tcc: Guard use of extern template.
- * include/std/std_iomanip.h: Same.
- * include/bits/streambuf.tcc: Same.
- * include/bits/stl_alloc.h: Same.
- * include/bits/locale_facets.tcc: Same.
- * include/bits/ostream.tcc: Same.
- * include/bits/istream.tcc: Same.
- * include/bits/fstream.tcc: Same.
- * include/bits/basic_string.tcc: Same.
-
-2003-02-13 Paolo Carlini <pcarlini@unitus.it>
-
- * include/bits/ostream.tcc (sentry::sentry): Improve
- performance-wise the fix for libstdc++/9563.
-
-2003-02-12 Phil Edwards <pme@gcc.gnu.org>
-
- * config/cpu/generic/atomicity.h (_Atomic_add_mutex): Fix declaration.
- (_GLIBCPP_NEED_GENERIC_MUTEX): Define for this file.
- (_Atomic_add_mutex_once, __gthread_atomic_add_mutex_once): Declare
- when we don't have static mutex initialization.
- (__exchange_and_add): Use _Atomic_add_mutex_once.
- * src/misc-inst.cc: Definitions of all the above.
-
-2003-02-12 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9563
- * include/bits/ostream.tcc (sentry::sentry): Check
- the state of the stream after the preparation.
- * testsuite/27_io/ostream_sentry.cc (test02): Add.
-
-2003-02-11 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am (stamp-std-precompile): Add rule.
- * include/Makefile.in: Regenerated.
-
-2003-02-11 Jerry Quinn <jlquinn@optonline.net>
- Benjamin Kosnik <benjamin@redhat.com>
-
- * include/bits/locale_facets.h (__num_base): Add _S_atoms_out.
- Add indexes into this array.
- (__num_base::_S_atoms): To _S_atoms_in.
- (num_put::_M_insert): Rename to _M_pad.
- (num_put::_M_convert_int): Adjust remove __mod, __modl arguments.
- (num_put::_M_widen_int): Rename to _M_group_int.
- (num_put::_M_widen_float): Rename to _M_group_float.
- * include/bits/locale_facets.tcc (__int_to_char): New inline
- function and adapter functions.
- (num_put::_M_group_int): Streamline.
- (num_put::_M_group_float): Streamline.
- (num_put::_M_convert_int): Remove unused parameter names. Choose
- large enough buffer for text. Use __int_to_char instead of
- __convert_from_v. Formatted text is now at the end of the buffer.
- (num_put::_M_convert_float): Preliminary fixups.
- * src/locale-inst.cc (__convert_from_v<long long>): Add ifdef.
- (__int_to_char<unsigned long long>): Same.
- (__int_to_char<char, unsigned long>): New.
- (__int_to_char<char, unsigned long long>): New.
- (__int_to_char<wchar_t, unsigned long>): New.
- (__int_to_char<wchar_t, unsigned long long>): New.
-
-2003-02-11 Scott Snyder <snyder@fnal.gov>
-
- PR libstdc++/9659
- * include/bits/fstream.tcc (seekoff): Avoid operator+
- for pos_type.
-
-2003-02-11 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9320
- * include/ext/stdio_filebuf.h
- (stdio_filebuf(int, std::ios_base::openmode, bool, int_type),
- stdio_filebuf(std::__c_file*, std::ios_base::openmode, int_type)):
- Change to take a __size parameter of type size_t, not
- of type (template parameter dependent) int_type.
- * src/ios.cc (ios_base::Init::_S_ios_create): Change type of
- size vars to size_t.
- * testsuite/ext/stdio_filebuf.cc: Add.
-
-2003-02-11 Paolo Carlini <pcarlini@unitus.it>
- Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9318
- * include/bits/streambuf.tcc (__copy_streambufs):
- Don't conditionalize the copy to __testput.
- * testsuite/27_io/streambuf_members.cc (test09, test10): Add.
-
-2002-02-11 DJ Delorie <dj@redhat.com>
-
- * acinclude.m4: Check for native targets that can't link at
- this point in the build.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2003-02-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- * hppa/atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock):
- Correct alignment.
- (__exchange_and_add, __atomic_add): Use PA 2.0 ordered store to reset
- lock.
-
-2003-02-07 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/27_io/filebuf_virtuals.cc (test08): Fix for
- unsigned char platforms.
-
-2003-02-06 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9562
- * include/std/std_istream.h
- (basic_istream::sentry::operator bool()): Make const.
- * include/std/std_ostream.h
- (basic_ostream::sentry::operator bool()): Likewise.
- * testsuite/27_io/istream_sentry.cc (test03): Add.
- * testsuite/27_io/ostream_sentry.cc: Add.
-
-2003-02-06 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9548
- Implement resolution of DR 231 (Ready)
- * include/bits/locale_facets.h (__num_base::_S_format_float):
- Change declaration: return void, remove __prec parameter.
- * src/locale.cc (__num_base::_S_format_float): Implement
- resolution of DR 231.
- * include/bits/locale_facets.tcc (num_put::_M_convert_float):
- Tweak uses. Check for negative precision.
- * testsuite/22_locale/num_put/put/char/6.cc: Add
- * testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
-
-2003-02-06 Peter Soetens <peter.soetens@mech.kuleuven.ac.be>
-
- * config/io/basic_file_libio.h: Fixups.
- * config/io/c_io_libio.h: Same.
- * libio/Makefile.am: Same.
- * libio/Makefile.in: Regenerated.
-
-2003-02-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/22_locale/codecvt/encoding/wchar_t/1.cc (test01):
- Explicitly use the "C" locale.
- * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc (test01): Same.
-
-2003-02-06 Petur Runolfsson <peturr02@ru.is>
-
- DR 75
- DR 305
- PR libstdc++/9028 (partial)
- PR libstdc++/9224
- PR libstdc++/9246
- PR libstdc++/9247
-
- * src/codecvt.cc
- (codecvt<wchar_t, char, mbstate_t>::do_encoding,
- codecvt<wchar_t, char, mbstate_t>::do_length,
- codecvt<wchar_t, char, mbstate_t>::do_max_length):
- Move...
- * config/locale/generic/codecvt_members.cc: ...here.
- * config/locale/gnu/codecvt_members.cc: ...and here.
-
- * config/locale/generic/codecvt_members.cc,
- * config/locale/gnu/codecvt_members.cc
- (codecvt<wchar_t, char, mbstate_t>::do_encoding
- codecvt<wchar_t, char, mbstate_t>::do_in,
- codecvt<wchar_t, char, mbstate_t>::do_length,
- codecvt<wchar_t, char, mbstate_t>::do_max_length,
- codecvt<wchar_t, char, mbstate_t>::do_out):
- New implementation that handles stateless encodings,
- including UTF-8.
-
- * config/locale/generic/codecvt_members.cc,
- * config/locale/gnu/codecvt_members.cc,
- * config/locale/ieee_1003.1-2001/codecvt_specializations.h,
- * include/bits/codecvt.h,
- * src/codecvt.cc
- (codecvt::length, codecvt::do_length):
- Change type of first argument of length and do_length from
- 'const state_type&' to 'state_type&' according to DR 75.
-
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/encoding/wchar_t/1.cc:
- Cleanup and check for correct return value from encoding
- for "C" locale.
- * testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/in/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/5.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/6.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/7.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/8.cc: New test.
- * testsuite/22_locale/codecvt/in/wchar_t/9.cc: New test.
- * testsuite/22_locale/codecvt/length/char/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/length/char/2.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/length/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/5.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/6.cc: New test.
- * testsuite/22_locale/codecvt/length/wchar_t/7.cc: New test.
- * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/out/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/4.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/5.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/6.cc: New test.
- * testsuite/22_locale/codecvt/out/wchar_t/7.cc: New test.
- * testsuite/22_locale/codecvt/unicode/1.cc: New test.
- * testsuite/22_locale/codecvt/unshift/wchar_t/1.cc: Cleanup.
- * testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: New test.
- * testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: New test.
- * testsuite/22_locale/codecvt/unshfit/wchar_t/4.cc: New test.
-
-2003-02-05 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.tcc (time_put::do_put): Use __write.
- (money_put::do_put): Same.
-
-2003-02-05 Jerry Quinn <jlquinn@optonline.net>
-
- * include/bits/ios_base.h (ios_base): Document reserved storage.
-
- * include/bits/locale_facets.h: (struct __pad): Comment on
- implementation.
- (__verify_grouping): Same.
- (__add_grouping): Same.
- * include/bits/locale_facets.tcc (__verify_grouping): Move
- comments to declaration.
- (__add_grouping): Same.
-
- * include/bits/locale_facets.tcc:
- (__write<_CharT, _OutIter>): New function.
- (__write<_CharT>): New function specialization.
- (num_put::_M_insert): Remove explicit loop over iterator. Use
- __write.
- (num_put::_M_widen_float): Remove __basefield.
- (num_put::_M_widen_int): Move __basefield to within grouping block.
-
- * include/bits/streambuf_iterator.h: Include <streambuf>.
- (ostreambuf_iterator::_M_put): Add.
-
-2003-02-05 Paolo Carlini <pcarlini@unitus.it>
-
- * testsuite/26_numerics/valarray_name_lookup.cc: Fix typo.
-
-2003-02-04 Nathan Myers <ncm@cantrip.org>
-
- * testsuite/25_algorithms/min_max.cc (test02): Add.
-
-2003-02-04 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9439, PR libstdc++/9425
- * config/io/basic_file_stdio.cc
- (__basic_file<char>::seekoff, seekpos): Return -1L if
- fseek fails.
- * include/bits/fstream.tcc (basic_filebuf::seekoff):
- Check _M_file.seekoff return value; always return
- pos_type(off_type(-1)) in case of failure.
- (basic_filebuf::pbackfail): Check this->seekoff return
- value and return traits_type::eof() in case of failure.
- * testsuite/27_io/filebuf_virtuals.cc (test09): Add.
-
-2003-02-04 Jerry Quinn <jlquinn@optonline.net>
-
- * include/std/std_ostream.h (ostream::_M_write): Declare.
- * ostream.tcc (ostream::_M_write): Define.
- (basic_ostream::write): Use it.
- (operator<<(basic_ostream, _CharT)): Ditto.
- (operator<<(basic_ostream, char)): Ditto.
- (operator<<(basic_ostream, _CharT*)): Ditto.
- (operator<<(basic_ostream, char*)): Ditto.
- (operator<<(basic_ostream, basic_string)): Ditto.
-
-2003-02-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/26_numerics/valarray_name_lookup.cc: Fix.
-
-2002-02-04 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/27_io/howto.html: Link to Dietmar Kuehl's IOStream page,
- add HTML comment about updating links if numbering changes.
-
-2003-02-04 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9538
- * include/bits/streambuf.tcc (sputbackc): Access
- this->gptr()[-1] only if _M_in_beg < _M_in_cur.
- * testsuite/27_io/filebuf_virtuals.cc (test08): Add.
-
-2003-02-04 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9507
- * include/bits/fstream.tcc (open): If the 'ate' repositioning
- operation fails, calls close _and_ returns a null pointer
- to indicate failure (27.8.1.3,4).
- * testsuite/27_io/filebuf_members.cc (test_06): Add.
-
-2003-02-04 Petur Runolfsson <peturr02@ru.is>
-
- * testsuite/27_io/filebuf_members.cc (test_04): Remove exit(0).
-
-2002-02-04 Jonathan Wakely <redi@gcc.gnu.org>
-
- * docs/html/27_io/howto.html: New section on stdio_filebuf.
- * docs/html/ext/howto.html: Move stdio_filebuf notes to 27_io.
- * docs/html/documentation.html: Regenerate.
-
-2003-02-04 Joseph S. Myers <jsm@polyomino.org.uk>
-
- * docs/html/17_intro/porting.texi: Update to GFDL 1.2.
- * docs/html/17_intro/porting.html: Regenerate.
-
-2003-02-03 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
- Phil Edwards <pme@gcc.gnu.org>
-
- * include/std/std_bitset.h: Replace CHAR_BIT with __CHAR_BIT__, use
- numeric_limits for bits-per-word values.
- (_Base_bitset::_M_do_count, _Base_bitset<1>::_M_do_count):
- Use __builtin_popcountl instead.
- (_Base_bitset::_M_do_find_first, _Base_bitset::_M_do_find_next,
- _Base_bitset<1>::_M_do_find_first, _Base_bitset<1>::_M_do_find_next):
- Use __builtin_ctzl instead.
- (_S_bit_count, _S_first_one): Remove.
- * config/linker-map.gnu (GLIBCPP_3.4): Remove std::_S_bit_count.
- * src/Makefile.am (sources): Remove bitset.cc.
- * src/bitset.cc: Delete file.
- * src/Makefile.in: Regenerate.
-
-2003-02-03 Phil Edwards <pme@gcc.gnu.org>
-
- PR libstdc++/9527, PR libstdc++/8713
- * docs/html/install.html: Mention glibc version requirement.
- * docs/html/faq/index.html (3.8): New note, glibc 2.2.5+ is needed
- with 3.2.1+ (formatting bugfixes).
- * docs/html/faq/index.txt: Regenerate.
-
-2003-02-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
-
- PR libstdc++/9234
- * include/bits/valarray_before.h (_UnBase::operator[]): Apply unary
- operator.
-
- * include/bits/valarray_before.h (__not_equal_to): Use != instead
- of ==.
-
- * testsuite/26_numerics/valarray_operators.cc: New test.
-
-2003-02-01 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/html/faq/index.html: Correct link to libg++ information.
- * docs/html/faq/index.txt: Regenerated.
-
-2003-02-01 Paolo Carlini <pcarlini@unitus.it>
- Benjamin Kosnik <bkoz@redhat.com>
-
- Const correctness issue:
- http://gcc.gnu.org/ml/libstdc++/2003-01/msg00370.html
- * include/bits/locale_classes.h
- (locale::_Impl::_M_facets): Change type to const facet**.
- (locale::_Impl::_M_install_facet): Change declaration to
- take const facet*.
- (locale::facet::_M_references): Make mutable.
- (locale::facet::_M_add_reference): Declare const.
- (locale::facet::_M_remove_reference): Likewise.
- * include/bits/locale_facets.tcc
- (use_facet(const locale&)): Tweak for const facet** _M_facets.
- (has_facet(const locale&)): Likewise.
- * src/locale.cc
- (locale::facet::_M_add_reference): Adjust definition.
- (locale::facet::_M_remove_reference): Likewise.
- * src/localename.cc
- (locale::_Impl::_Impl(const _Impl&, size_t)): Tweak for
- const facet** _M_facets.
- (locale::_Impl::_Impl(const char*, size_t)): Likewise.
- (locale::_Impl::_Impl(facet**, size_t, bool)): Likewise.
- (locale::_Impl::_M_install_facet): Adjust definition to take
- const facet* and for const facet** _M_facets.
- * testsuite/22_locale/locale/cons/8.cc: Add.
-
-2003-01-29 Mark Mitchell <mark@codesourcery.com>
-
- * include/std/std_limits.h (numeric_limits<float>::has_infinity):
- Use __FLT_HAS_INIFINITY__ to initialize.
- (numeric_limits<float>::has_quiet_NaN): Likewise.
- (numeric_limits<double>::has_infinity): Use __DBL_HAS_INIFINITY__
- to initialize.
- (numeric_limits<double>::has_quiet_NaN): Likewise.
- (numeric_limits<long double>::has_infinity): Use
- __LDBL_HAS_INIFINITY__ to initialize.
- (numeric_limits<long_double>::has_quiet_NaN): Likewise.
-
-2003-01-28 Nathan Sidwell <nathan@codesourcery.com>
-
- PR c++/9433
- * libsupc++/tinfo.cc (__vmi_class_type_info::__do_dyncast): Cope
- with bases which are very ambiguous.
-
-2003-01-28 Danny Smith <dannysmith@users.sourceforge.net>
-
- * src/Makefile.am (CONFIG_CXXFLAGS): Reverse order of
- @EXTRA_CXX_FLAGS@ @SECTION_FLAGS@.
- * libsupc++/Makefile.am (CONFIG_CXXFLAGS): Likewise.
- * src/Makefile.in: Regenerate.
- * libsupc++/Makefile.in: Regenerate.
-
-2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-
- * acinclude.m4 (glibcpp_toolexeclibdir): Instead of
- $(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless
- version_specific_libs is enabled.
- * aclocal.m4, configure: Rebuilt.
-
-2003-01-24 Nathan Sidwell <nathan@codesourcery.com>
-
- * include/bits/valarray_meta.h: Remove, split into ...
- * include/bits/valarray_before.h: ... this, and ...
- * include/bits/valarray_after.h: ... this.
- * include/std/std_valarray.h: Adjust.
- * include/Makefile.am (bits_headers): Adjust.
- * include/Makefile.in: Regenerate.
-
-2003-01-24 Andreas Schwab <schwab@suse.de>
-
- * config/linker-map.gnu: Fix for size_t variance.
-
-2003-01-23 Petur Runolfsson <peturr02@ru.is>
-
- PR libstdc++/9322
- * include/std/std_streambuf.h
- (basic_streambuf::basic_streambuf,
- basic_streambuf::~basic_streambuf,
- basic_streambuf::getloc, basic_streambuf::imbue):
- Remove _M_buf_locale_init
- * include/bits/fstream.tcc (basic_filebuf::imbue): Likewise
- * testsuite/27_io/filebuf_virtuals.cc (test08): Add.
- * testsuite/27_io/streambuf_members.cc (test08): Add.
- * testsuite/27_io/stringbuf_virtuals.cc (test08): Add.
-
-2003-01-23 Benjamin Kosnik <bkoz@redhat.com>
-
- Revert include ordering.
- * config/locale/generic/c_locale.h: Add include guards.
- * config/locale/gnu/c_locale.h: Same.
- * include/bits/locale_classes.h: Remove cctype include.
- * include/std/std_iosfwd.h: Add c++locale.h, cctype includes.
- * include/std/std_fstream.h: Remove streambuf include.
- * include/std/std_sstream.h: Remove streambuf include.
-
-2003-01-23 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.in (libtool_VERSION): To 6:0:0.
- * configure: Regenerated.
- * config/linker-map.gnu: Clean.
-
- * src/misc-inst.cc: Remove instantiations.
-
- * include/bits/stl_alloc.h (__malloc_alloc_template):
- To __malloc_alloc.
- (__default_alloc_template): To __pool_alloc.
- * src/stl-inst.cc: Same.
- * include/backward/alloc.h: Update.
- * testsuite/ext/allocators.cc: Update.
-
- * src/globals.cc (__gnu_cxx): Remove _GLIBCPP_ASM_SYMVER. Should
- really try to remove these if possible.
- * src/locale.cc (std): Same.
-
- * testsuite/abi_check.cc (check_version): Add.
-
-2003-01-22 Benjamin Kosnik <bkoz@redhat.com>
- Sysoltsev Slawa <Vyatcheslav.Sysoltsev@intel.com>
- Mark Mitchell <mark@codesourcery.com>
-
- PR libstdc++/9269
- * include/std/std_fstream.h (basic_filebuf::uflow): Declare.
- (basic_filebuf::underflow): Declare.
- Move definitions.
-
-2003-01-22 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.h: Move non-facet classes requiring
- <string> to...
- * include/bits/locale_classes.h: New.
- * include/bits/Makefile.am (bits_headers_src): Add locale_classes.h.
- * include/bits/Makefile.in: Regenerate.
-
- * include/bits/locale_facets.tcc (__convert_from_v): Move to...
- * config/locale/gnu/c_locale.h: ...here.
- * config/locale/generic/c_locale.h: Same.
-
- * include/bits/locale_facets.tcc: Move declarations to...
- * include/bits/locale_facets.h: ...here.
- * include/bits/basic_ios.h: Tweak includes accordingly.
- * include/std/std_sstream.h: Add streambuf include.
- * include/std/std_fstream.h: Ditto.
- * include/std/std_locale.h: Add locale_classes.h include.
- * include/std/std_iosfwd.h: Tweak.
- * src/concept-inst.cc: Add iterator include.
-
- * config/linker-map.gnu: Specify __cxa functions, mark __cxa_dyn_*
- bits as unexported in the future.
-
-2003-01-21 Benjamin Kosnik <bkoz@redhat.com>
-
- Reshuffle 22_locale testsuite.
- * 22_locale/(codecvt.cc money_get.cc
- codecvt_members_char_char.cc money_get_members_char.cc
- codecvt_members_unicode_char.cc money_get_members_wchar_t.cc
- codecvt_members_unicode_wchar_t.cc moneypunct_byname.cc
- codecvt_members_wchar_t_char.cc moneypunct.cc collate_byname.cc
- moneypunct_members_char.cc collate.cc moneypunct_members_wchar_t.cc
- collate_members_char.cc money_put.cc collate_members_wchar_t.cc
- money_put_members_char.cc ctor_copy_dtor.cc
- money_put_members_wchar_t.cc ctype.cc num_get.cc ctype_is_char.cc
- num_get_members_char.cc ctype_is_wchar_t.cc num_get_members_wchar_t.cc
- ctype_members_char.cc numpunct_byname.cc ctype_members_wchar_t.cc
- numpunct.cc ctype_narrow_char.cc numpunct_members_char.cc
- ctype_narrow_wchar_t.cc numpunct_members_wchar_t.cc ctype_scan_char.cc
- num_put.cc ctype_scan_wchar_t.cc num_put_members_char.cc
- ctype_to_char.cc num_put_members_wchar_t.cc ctype_to_wchar_t.cc
- operators.cc ctype_widen_char.cc static_members.cc
- ctype_widen_wchar_t.cc time_get.cc facet.cc time_get_members_char.cc
- global_templates.cc time_get_members_wchar_t.cc, members.cc,
- time_put.cc, messages_byname.cc, time_put_members_char.cc,
- messages.cc, time_put_members_wchar_t.cc, messages_members_char.cc):
- Split up into individual test cases...
- * 22_locale/codecvt/1.cc: New.
- * 22_locale/codecvt/2.cc: New.
- * 22_locale/codecvt/always_noconv/char/1.cc: New.
- * 22_locale/codecvt/always_noconv/char/wrapped_env.cc: New.
- * 22_locale/codecvt/always_noconv/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/always_noconv/wchar_t/1.cc: New.
- * 22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/encoding/char/1.cc: New.
- * 22_locale/codecvt/encoding/char/wrapped_env.cc: New.
- * 22_locale/codecvt/encoding/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/encoding/wchar_t/1.cc: New.
- * 22_locale/codecvt/encoding/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/in/char/1.cc: New.
- * 22_locale/codecvt/in/char/wrapped_env.cc: New.
- * 22_locale/codecvt/in/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/in/wchar_t/1.cc: New.
- * 22_locale/codecvt/in/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/in/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/length/char/1.cc: New.
- * 22_locale/codecvt/length/char/wrapped_env.cc: New.
- * 22_locale/codecvt/length/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/length/wchar_t/1.cc: New.
- * 22_locale/codecvt/length/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/length/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/max_length/char/1.cc: New.
- * 22_locale/codecvt/max_length/char/wrapped_env.cc: New.
- * 22_locale/codecvt/max_length/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/max_length/wchar_t/1.cc: New.
- * 22_locale/codecvt/max_length/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/out/char/1.cc: New.
- * 22_locale/codecvt/out/char/wrapped_env.cc: New.
- * 22_locale/codecvt/out/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/out/wchar_t/1.cc: New.
- * 22_locale/codecvt/out/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/out/wchar_t/wrapped_locale.cc: New.
- * 22_locale/codecvt/unicode/char.cc: New.
- * 22_locale/codecvt/unicode/wchar_t.cc: New.
- * 22_locale/codecvt/unshift/char/1.cc: New.
- * 22_locale/codecvt/unshift/char/wrapped_env.cc: New.
- * 22_locale/codecvt/unshift/char/wrapped_locale.cc: New.
- * 22_locale/codecvt/unshift/wchar_t/1.cc: New.
- * 22_locale/codecvt/unshift/wchar_t/wrapped_env.cc: New.
- * 22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc: New.
- * 22_locale/collate/1.cc: New.
- * 22_locale/collate/2.cc: New.
- * 22_locale/collate/compare/char/1.cc: New.
- * 22_locale/collate/compare/char/2.cc: New.
- * 22_locale/collate/compare/char/wrapped_env.cc: New.
- * 22_locale/collate/compare/char/wrapped_locale.cc: New.
- * 22_locale/collate/compare/wchar_t/1.cc: New.
- * 22_locale/collate/compare/wchar_t/2.cc: New.
- * 22_locale/collate/compare/wchar_t/wrapped_env.cc: New.
- * 22_locale/collate/compare/wchar_t/wrapped_locale.cc: New.
- * 22_locale/collate/hash/char/1.cc: New.
- * 22_locale/collate/hash/char/2.cc: New.
- * 22_locale/collate/hash/char/wrapped_env.cc: New.
- * 22_locale/collate/hash/char/wrapped_locale.cc: New.
- * 22_locale/collate/hash/wchar_t/1.cc: New.
- * 22_locale/collate/hash/wchar_t/2.cc: New.
- * 22_locale/collate/hash/wchar_t/wrapped_env.cc: New.
- * 22_locale/collate/hash/wchar_t/wrapped_locale.cc: New.
- * 22_locale/collate/transform/char/2.cc: New.
- * 22_locale/collate/transform/char/wrapped_env.cc: New.
- * 22_locale/collate/transform/char/wrapped_locale.cc: New.
- * 22_locale/collate/transform/wchar_t/2.cc: New.
- * 22_locale/collate/transform/wchar_t/wrapped_env.cc: New.
- * 22_locale/collate/transform/wchar_t/wrapped_locale.cc: New.
- * 22_locale/collate_byname/1.cc: New.
- * 22_locale/ctype/1.cc: New.
- * 22_locale/ctype/2.cc: New.
- * 22_locale/ctype/cons/char/1.cc: New.
- * 22_locale/ctype/cons/char/wrapped_env.cc: New.
- * 22_locale/ctype/cons/char/wrapped_locale.cc: New.
- * 22_locale/ctype/is/char/1.cc: New.
- * 22_locale/ctype/is/char/2.cc: New.
- * 22_locale/ctype/is/char/3.cc: New.
- * 22_locale/ctype/is/char/wrapped_env.cc: New.
- * 22_locale/ctype/is/char/wrapped_locale.cc: New.
- * 22_locale/ctype/is/wchar_t/1.cc: New.
- * 22_locale/ctype/is/wchar_t/2.cc: New.
- * 22_locale/ctype/is/wchar_t/wrapped_env.cc: New.
- * 22_locale/ctype/is/wchar_t/wrapped_locale.cc: New.
- * 22_locale/ctype/narrow/char/1.cc: New.
- * 22_locale/ctype/narrow/char/2.cc: New.
- * 22_locale/ctype/narrow/char/wrapped_env.cc: New.
- * 22_locale/ctype/narrow/char/wrapped_locale.cc: New.
- * 22_locale/ctype/narrow/wchar_t/1.cc: New.
- * 22_locale/ctype/narrow/wchar_t/2.cc: New.
- * 22_locale/ctype/narrow/wchar_t/wrapped_env.cc: New.
- * 22_locale/ctype/narrow/wchar_t/wrapped_locale.cc: New.
- * 22_locale/ctype/scan/char/1.cc: New.
- * 22_locale/ctype/scan/char/wrapped_env.cc: New.
- * 22_locale/ctype/scan/char/wrapped_locale.cc: New.
- * 22_locale/ctype/scan/wchar_t/1.cc: New.
- * 22_locale/ctype/scan/wchar_t/wrapped_env.cc: New.
- * 22_locale/ctype/scan/wchar_t/wrapped_locale.cc: New.
- * 22_locale/ctype/to/char/1.cc: New.
- * 22_locale/ctype/to/char/wrapped_env.cc: New.
- * 22_locale/ctype/to/char/wrapped_locale.cc: New.
- * 22_locale/ctype/to/wchar_t/1.cc: New.
- * 22_locale/ctype/to/wchar_t/wrapped_env.cc: New.
- * 22_locale/ctype/to/wchar_t/wrapped_locale.cc: New.
- * 22_locale/ctype/widen/char/1.cc: New.
- * 22_locale/ctype/widen/char/wrapped_env.cc: New.
- * 22_locale/ctype/widen/char/wrapped_locale.cc: New.
- * 22_locale/ctype/widen/wchar_t/1.cc: New.
- * 22_locale/ctype/widen/wchar_t/wrapped_env.cc: New.
- * 22_locale/ctype/widen/wchar_t/wrapped_locale.cc: New.
- * 22_locale/facet/1.cc: New.
- * 22_locale/facet/2.cc: New.
- * 22_locale/global_templates/1.cc: New.
- * 22_locale/locale/cons/1.cc: New.
- * 22_locale/locale/cons/2.cc: New.
- * 22_locale/locale/cons/3.cc: New.
- * 22_locale/locale/cons/4.cc: New.
- * 22_locale/locale/cons/5.cc: New.
- * 22_locale/locale/cons/6.cc: New.
- * 22_locale/locale/cons/7.cc: New.
- * 22_locale/locale/global_locale_objects/1.cc: New.
- * 22_locale/locale/global_locale_objects/2.cc: New.
- * 22_locale/locale/global_locale_objects/3.cc: New.
- * 22_locale/locale/operations/1.cc: New.
- * 22_locale/locale/operations/2.cc: New.
- * 22_locale/messages/1.cc: New.
- * 22_locale/messages/2.cc: New.
- * 22_locale/messages/members/char/1.cc: New.
- * 22_locale/messages/members/char/2.cc: New.
- * 22_locale/messages/members/char/3.cc: New.
- * 22_locale/messages/members/char/wrapped_env.cc: New.
- * 22_locale/messages/members/char/wrapped_locale.cc: New.
- * 22_locale/messages_byname/1.cc: New.
- * 22_locale/money_get/1.cc: New.
- * 22_locale/money_get/2.cc: New.
- * 22_locale/money_get/get/char/1.cc: New.
- * 22_locale/money_get/get/char/2.cc: New.
- * 22_locale/money_get/get/char/3.cc: New.
- * 22_locale/money_get/get/char/4.cc: New.
- * 22_locale/money_get/get/char/5.cc: New.
- * 22_locale/money_get/get/char/6.cc: New.
- * 22_locale/money_get/get/char/7.cc: New.
- * 22_locale/money_get/get/char/8.cc: New.
- * 22_locale/money_get/get/char/wrapped_env.cc: New.
- * 22_locale/money_get/get/char/wrapped_locale.cc: New.
- * 22_locale/money_get/get/wchar_t/1.cc: New.
- * 22_locale/money_get/get/wchar_t/2.cc: New.
- * 22_locale/money_get/get/wchar_t/3.cc: New.
- * 22_locale/money_get/get/wchar_t/4.cc: New.
- * 22_locale/money_get/get/wchar_t/5.cc: New.
- * 22_locale/money_get/get/wchar_t/6.cc: New.
- * 22_locale/money_get/get/wchar_t/7.cc: New.
- * 22_locale/money_get/get/wchar_t/8.cc: New.
- * 22_locale/money_get/get/wchar_t/wrapped_env.cc: New.
- * 22_locale/money_get/get/wchar_t/wrapped_locale.cc: New.
- * 22_locale/money_put/1.cc: New.
- * 22_locale/money_put/2.cc: New.
- * 22_locale/money_put/put/char/1.cc: New.
- * 22_locale/money_put/put/char/2.cc: New.
- * 22_locale/money_put/put/char/3.cc: New.
- * 22_locale/money_put/put/char/4.cc: New.
- * 22_locale/money_put/put/char/5.cc: New.
- * 22_locale/money_put/put/char/6.cc: New.
- * 22_locale/money_put/put/char/wrapped_env.cc: New.
- * 22_locale/money_put/put/char/wrapped_locale.cc: New.
- * 22_locale/money_put/put/wchar_t/1.cc: New.
- * 22_locale/money_put/put/wchar_t/2.cc: New.
- * 22_locale/money_put/put/wchar_t/3.cc: New.
- * 22_locale/money_put/put/wchar_t/4.cc: New.
- * 22_locale/money_put/put/wchar_t/5.cc: New.
- * 22_locale/money_put/put/wchar_t/6.cc: New.
- * 22_locale/money_put/put/wchar_t/wrapped_env.cc: New.
- * 22_locale/money_put/put/wchar_t/wrapped_locale.cc: New.
- * 22_locale/moneypunct/1.cc: New.
- * 22_locale/moneypunct/2.cc: New.
- * 22_locale/moneypunct/3.cc: New.
- * 22_locale/moneypunct/members/char/1.cc: New.
- * 22_locale/moneypunct/members/char/2.cc: New.
- * 22_locale/moneypunct/members/char/wrapped_env.cc: New.
- * 22_locale/moneypunct/members/char/wrapped_locale.cc: New.
- * 22_locale/moneypunct/members/wchar_t/1.cc: New.
- * 22_locale/moneypunct/members/wchar_t/2.cc: New.
- * 22_locale/moneypunct/members/wchar_t/wrapped_env.cc: New.
- * 22_locale/moneypunct/members/wchar_t/wrapped_locale.cc: New.
- * 22_locale/moneypunct_byname/1.cc: New.
- * 22_locale/num_get/1.cc: New.
- * 22_locale/num_get/2.cc: New.
- * 22_locale/num_get/get/char/1.cc: New.
- * 22_locale/num_get/get/char/2.cc: New.
- * 22_locale/num_get/get/char/3.cc: New.
- * 22_locale/num_get/get/char/4.cc: New.
- * 22_locale/num_get/get/char/5.cc: New.
- * 22_locale/num_get/get/char/6.cc: New.
- * 22_locale/num_get/get/char/wrapped_env.cc: New.
- * 22_locale/num_get/get/char/wrapped_locale.cc: New.
- * 22_locale/num_get/get/wchar_t/1.cc: New.
- * 22_locale/num_get/get/wchar_t/2.cc: New.
- * 22_locale/num_get/get/wchar_t/3.cc: New.
- * 22_locale/num_get/get/wchar_t/4.cc: New.
- * 22_locale/num_get/get/wchar_t/5.cc: New.
- * 22_locale/num_get/get/wchar_t/6.cc: New.
- * 22_locale/num_get/get/wchar_t/wrapped_env.cc: New.
- * 22_locale/num_get/get/wchar_t/wrapped_locale.cc: New.
- * 22_locale/num_put/1.cc: New.
- * 22_locale/num_put/2.cc: New.
- * 22_locale/num_put/put/char/1.cc: New.
- * 22_locale/num_put/put/char/2.cc: New.
- * 22_locale/num_put/put/char/3.cc: New.
- * 22_locale/num_put/put/char/4.cc: New.
- * 22_locale/num_put/put/char/5.cc: New.
- * 22_locale/num_put/put/char/wrapped_env.cc: New.
- * 22_locale/num_put/put/char/wrapped_locale.cc: New.
- * 22_locale/num_put/put/wchar_t/1.cc: New.
- * 22_locale/num_put/put/wchar_t/2.cc: New.
- * 22_locale/num_put/put/wchar_t/3.cc: New.
- * 22_locale/num_put/put/wchar_t/4.cc: New.
- * 22_locale/num_put/put/wchar_t/5.cc: New.
- * 22_locale/num_put/put/wchar_t/wrapped_env.cc: New.
- * 22_locale/num_put/put/wchar_t/wrapped_locale.cc: New.
- * 22_locale/numpunct/1.cc: New.
- * 22_locale/numpunct/2.cc: New.
- * 22_locale/numpunct/members/char/1.cc: New.
- * 22_locale/numpunct/members/char/2.cc: New.
- * 22_locale/numpunct/members/char/wrapped_env.cc: New.
- * 22_locale/numpunct/members/char/wrapped_locale.cc: New.
- * 22_locale/numpunct/members/wchar_t/1.cc: New.
- * 22_locale/numpunct/members/wchar_t/2.cc: New.
- * 22_locale/numpunct/members/wchar_t/wrapped_env.cc: New.
- * 22_locale/numpunct/members/wchar_t/wrapped_locale.cc: New.
- * 22_locale/numpunct_byname/1.cc: New.
- * 22_locale/numpunct_byname/2.cc: New.
- * 22_locale/time_get/1.cc: New.
- * 22_locale/time_get/2.cc: New.
- * 22_locale/time_get/date_order/char/1.cc: New.
- * 22_locale/time_get/date_order/char/wrapped_env.cc: New.
- * 22_locale/time_get/date_order/char/wrapped_locale.cc: New.
- * 22_locale/time_get/date_order/wchar_t/1.cc: New.
- * 22_locale/time_get/date_order/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/date_order/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_get/get_date/char/1.cc: New.
- * 22_locale/time_get/get_date/char/2.cc: New.
- * 22_locale/time_get/get_date/char/3.cc: New.
- * 22_locale/time_get/get_date/char/wrapped_env.cc: New.
- * 22_locale/time_get/get_date/char/wrapped_locale.cc: New.
- * 22_locale/time_get/get_date/wchar_t/1.cc: New.
- * 22_locale/time_get/get_date/wchar_t/2.cc: New.
- * 22_locale/time_get/get_date/wchar_t/3.cc: New.
- * 22_locale/time_get/get_date/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/get_date/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_get/get_monthname/char/1.cc: New.
- * 22_locale/time_get/get_monthname/char/2.cc: New.
- * 22_locale/time_get/get_monthname/char/3.cc: New.
- * 22_locale/time_get/get_monthname/char/wrapped_env.cc: New.
- * 22_locale/time_get/get_monthname/char/wrapped_locale.cc: New.
- * 22_locale/time_get/get_monthname/wchar_t/1.cc: New.
- * 22_locale/time_get/get_monthname/wchar_t/2.cc: New.
- * 22_locale/time_get/get_monthname/wchar_t/3.cc: New.
- * 22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_get/get_time/char/1.cc: New.
- * 22_locale/time_get/get_time/char/2.cc: New.
- * 22_locale/time_get/get_time/char/3.cc: New.
- * 22_locale/time_get/get_time/char/wrapped_env.cc: New.
- * 22_locale/time_get/get_time/char/wrapped_locale.cc: New.
- * 22_locale/time_get/get_time/wchar_t/1.cc: New.
- * 22_locale/time_get/get_time/wchar_t/2.cc: New.
- * 22_locale/time_get/get_time/wchar_t/3.cc: New.
- * 22_locale/time_get/get_time/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/get_time/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_get/get_weekday/char/1.cc: New.
- * 22_locale/time_get/get_weekday/char/2.cc: New.
- * 22_locale/time_get/get_weekday/char/3.cc: New.
- * 22_locale/time_get/get_weekday/char/wrapped_env.cc: New.
- * 22_locale/time_get/get_weekday/char/wrapped_locale.cc: New.
- * 22_locale/time_get/get_weekday/wchar_t/1.cc: New.
- * 22_locale/time_get/get_weekday/wchar_t/2.cc: New.
- * 22_locale/time_get/get_weekday/wchar_t/3.cc: New.
- * 22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_get/get_year/char/1.cc: New.
- * 22_locale/time_get/get_year/char/3.cc: New.
- * 22_locale/time_get/get_year/char/wrapped_env.cc: New.
- * 22_locale/time_get/get_year/char/wrapped_locale.cc: New.
- * 22_locale/time_get/get_year/wchar_t/1.cc: New.
- * 22_locale/time_get/get_year/wchar_t/3.cc: New.
- * 22_locale/time_get/get_year/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_get/get_year/wchar_t/wrapped_locale.cc: New.
- * 22_locale/time_put/1.cc: New.
- * 22_locale/time_put/2.cc: New.
- * 22_locale/time_put/put/char/1.cc: New.
- * 22_locale/time_put/put/char/10.cc: New.
- * 22_locale/time_put/put/char/2.cc: New.
- * 22_locale/time_put/put/char/3.cc: New.
- * 22_locale/time_put/put/char/4.cc: New.
- * 22_locale/time_put/put/char/5.cc: New.
- * 22_locale/time_put/put/char/6.cc: New.
- * 22_locale/time_put/put/char/7.cc: New.
- * 22_locale/time_put/put/char/8.cc: New.
- * 22_locale/time_put/put/char/9.cc: New.
- * 22_locale/time_put/put/char/wrapped_env.cc: New.
- * 22_locale/time_put/put/char/wrapped_locale.cc: New.
- * 22_locale/time_put/put/wchar_t/1.cc: New.
- * 22_locale/time_put/put/wchar_t/10.cc: New.
- * 22_locale/time_put/put/wchar_t/2.cc: New.
- * 22_locale/time_put/put/wchar_t/3.cc: New.
- * 22_locale/time_put/put/wchar_t/4.cc: New.
- * 22_locale/time_put/put/wchar_t/5.cc: New.
- * 22_locale/time_put/put/wchar_t/6.cc: New.
- * 22_locale/time_put/put/wchar_t/7.cc: New.
- * 22_locale/time_put/put/wchar_t/8.cc: New.
- * 22_locale/time_put/put/wchar_t/9.cc: New.
- * 22_locale/time_put/put/wchar_t/wrapped_env.cc: New.
- * 22_locale/time_put/put/wchar_t/wrapped_locale.cc: New.
-
-2003-01-16 Jeffrey D. Oldham <oldham@codesourcery.com>
-
- * config/locale/generic/messages_members.h
- (messages_byname<_CharT>::messages_byname): Use this-> to refer to
- unqualified members of base clasess.
-
-2003-01-16 Mark Mitchell <mark@codesourcery.com>
- Jeffrey Oldham <oldham@codesourcery.com>
-
- * config/locale/gnu/messages_members.h: Use this-> to refer to
- unqualified members of base clasess.
- * config/locale/ieee_1003.1-2001/codecvt_specializations.h: Likewise.
- * include/bits/codecvt.h: Likewise.
- * include/bits/deque.tcc: Likewise.
- * include/bits/fstream.tcc: Likewise.
- * include/bits/istream.tcc: Likewise.
- * include/bits/list.tcc: Likewise.
- * include/bits/locale_facets.h: Likewise.
- * include/bits/ostream.tcc: Likewise.
- * include/bits/sstream.tcc: Likewise.
- * include/bits/stl_bvector.h: Likewise.
- * include/bits/stl_deque.h: Likewise.
- * include/bits/stl_list.h: Likewise.
- * include/bits/stl_tree.h: Likewise.
- * include/bits/stl_vector.h: Likewise.
- * include/bits/vector.tcc: Likewise.
- * include/ext/ropeimpl.h: Likewise.
- * include/ext/stdio_filebuf.h: Likewise.
- * include/ext/stl_rope.h: Likewise.
- * include/std/std_fstream.h: Likewise.
- * include/std/std_sstream.h: Likewise.
-
-2003-01-15 Phil Edwards <pme@gcc.gnu.org>
-
- * include/bits/basic_string.tcc (_S_string_copy): Unused, remove.
-
-2003-01-15 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Substitute
- GLIBCPP_TEST_WCHAR_T if building wchar_t bits in the library.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * testsuite/Makefile.am (all-local): Add conditional rule to
- generate testsuite_wchar_t.
- * testsuite/Makefile.in: Regenerate.
- * testsuite/lib/libstdc++-v3-dg.exp
- (libstdc++-v3-list-sourcefiles): Remove wchar_t files if
- testsuite_wchar_t is not present in the build directory.
- * testsuite/libstdc++-v3.dg/dg.exp: Add -g -O2 to DEFAULT_CXXFLAGS.
- Remove setulimit bits.
- * testsuite/26_numerics/complex_value.cc: Set to noopts.
- * testsuite/Makefile.am (CLEANFILES): Add.
- * testsuite/Makefile.in: Regenerate.
-
-2003-01-15 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * config/os/hpux/os_defines.h (_GLIBCPP_GTHREAD_USE_WEAK): Define for
- __hppa__.
-
-2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
-
- Further conform g++'s __vmi_class_type_info to the C++ ABI
- specification.
- * libsupc++/cxxabi.h
- (__vmi_class_type_info::__flags_masks): Remove enumerations not
- required by the specification.
-
-2003-01-12 Benjamin Kosnik <bkoz@redhat.com>
-
- Renames, namespaces for testsuite utilities.
- * testsuite/testsuite_hooks.h: Put into namespace __gnu_cxx_test.
- (gnu_allocator_tracker): Rename to allocation_tracker.
- (gnu_new_allocator): Rename to tracker_alloc.
- (__set_testsuite_memlimit): Rename to set_memory_limits.
- (gnu_assignment_operator): Rename to assignment_operator.
- (gnu_destructor): Rename to destructor.
- (gnu_copy_tracker): Rename to copy_tracker.
- (gnu_char, gnu_int, gnu_long): Rename to pod_char, pod_int, pod_long.
- (run_tests_wrapped_locale): New.
- (run_tests_wrapped_env): New.
- * testsuite/testsuite_hooks.cc: Same.
- (class locale_data): Add.
- (class enviornment_variable): Add.
- (class not_found): Add.
- * testsuite/testsuite_allocator.h: Same.
- * testsuite/testsuite_allocator.cc: Same.
- * testsuite/23_containers/deque_ctor.cc
- (test_copy_ctor_exception_safety): Change gnu_allocator_tracker to
- allocation_tracker.
- Change gnu_new_allocator to tracker_alloc.
- Change gnu_counting_struct to counter.
- Change gnu_copy_tracker to copy_tracker.
- Change gnu_copy_constructor to copy_constructor.
- Change gnu_assignment_operator to assignment_operator.
- Inject.
- * testsuite/23_containers/vector_capacity.cc: Same.
- * testsuite/23_containers/vector_ctor.cc (test01): Same.
- * testsuite/23_containers/list_modifiers.cc: Change
- gnu_copy_tracker to copy_tracker.
- * testsuite/21_strings/ctor_copy_dtor.cc (main): Change
- __set_testsuite_memlimit to set_memory_limits.
- * testsuite/21_strings/insert.cc (main): Same.
- * testsuite/27_io/filebuf.cc: Change gnu_char to pod_char.
- * testsuite/27_io/stringstream.cc: Same.
- * testsuite/27_io/stringbuf.cc: Same.
- * testsuite/27_io/streambuf.cc: Same.
- * testsuite/27_io/ostream.cc: Same.
- * testsuite/27_io/istream.cc: Same.
- * testsuite/27_io/fstream.cc: Same.
- * testsuite/lib/libstdc++-v3-dg.exp
- (libstdc++-v3-list-sourcefiles): Additionally handle files two and
- three levels deeper in glob patterns.
-
-2003-01-11 Phil Edwards <pme@gcc.gnu.org>
-
- * docs/doxygen/tables.html: Finished now.
- * docs/doxygen/user.cfg.in: Update to latest version of Doxygen.
- * include/bits/basic_ios.h (basic_ios::rdbuf): Add example to
- comments.
-
- * include/bits/deque.tcc, include/bits/stl_alloc.h,
- include/bits/stl_deque.h, include/bits/stl_list.h,
- include/bits/stl_vector.h: Remove _GLIBCPP_DEPRECATED bits scheduled
- for 3.4 removal.
-
-2003-01-09 Benjamin Kosnik <bkoz@redhat.com>
-
- * configure.in: Revert.
- * configure: Regenerate.
-
-2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
-
- * include/Makefile.am (install-data-local): Prepend
- $(DESTDIR) to destination paths in all (un)installation
- commands. Use ${c_base_builddir} and ${std_builddir}
- as destination subdirectories to achieve consistency with
- preceding mkinstalldirs commands. No effect because both
- variables contain "." only.
- * include/Makefile.in: Regenerate.
-
-2003-01-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/Makefile.am (stamp-*): Add checks for existing stamps.
- * include/Makefile.in: Regenerate.
-
- * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Correct comment.
- * aclocal.m4: Regenerate.
-
- * configure.in: Don't add new multi-do rules every time the
- directory is reconfigured.
- * configure: Regenerate.
-
-2003-01-08 Brad Spencer <spencer@infointeractive.com>
- Nathan Myers <ncm@cantrip.org>
-
- * src/Makefile.am (stamp-debug): Clean.
- * src/Makefile.in: Regenerate.
-
-2003-01-07 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/8707
- * Makefile.am (distclean-multi): Fix.
- * Makefile.in: Regenerate.
-
-2003-01-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/locale_facets.h (messages): Move ctor, dtor
- definitions to..
- (__timepunct): Same.
- * config/locale/gnu/messages_members.h (messages): Add dtor, ctor
- definitions. Conditionalize for GNU systems.
- * config/locale/generic/messages_members.h (messages): Add dtor, ctor
- definitions.
- * config/locale/gnu/time_members.h (messages): New. Add dtor, ctor
- definitions. Conditionalize for GNU systems.
- * config/locale/generic/time_members.h (messages): New. Add dtor, ctor
- definitions.
- * include/bits/localefwd.h (locale::facet::_S_c_name): Add.
- * src/locale.cc: Define.
- * src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool):
- Use it.
- * config/locale/gnu/time_members.h: Use it.
- * config/locale/gnu/messages_members.h: Use it.
- * config/linker-map.gnu: Add locale::facets details.
- * include/Makefile.am (target_headers_extra): Add time_members.h.
- * include/Makefile.in: Regenerate.
- * acinclude.m4: Export CTIME_H.
- * aclocal.m4: Regenerate.
- * configure: Regnerate.
-
-2003-01-06 Paolo Carlini <pcarlini@unitus.it>
-
- * src/codecvt.cc
- (codecvt<char, char, mbstate_t>::do_in, do_out):
- Tweak parameters to avoid unused parameter warnings.
-
-2003-01-06 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9151
- * include/bits/locale_facets.cc (num_put::_M_convert_float):
- Limit __prec to digits10 + 2, not digits10 + 1, taking into
- account the possibility of %{g,G} conversion specifiers
- inside _S_format_float.
- * testsuite/27_io/ostream_inserter_arith.cc (test06): Add.
-
-2003-01-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init,
- libstdc++-v3-list-sourcefiles): Additionally handle files one
- level deeper in glob patterns.
-
- * testsuite/27_io/istream_extractor_arith.cc: Delete, split...
- * testsuite/27_io/istream_extractor_arith/01.cc,
- testsuite/27_io/istream_extractor_arith/02.cc,
- testsuite/27_io/istream_extractor_arith/03.cc,
- testsuite/27_io/istream_extractor_arith/06.cc,
- testsuite/27_io/istream_extractor_arith/07.cc,
- testsuite/27_io/istream_extractor_arith/08.cc,
- testsuite/27_io/istream_extractor_arith/09.cc,
- testsuite/27_io/istream_extractor_arith/10.cc,
- testsuite/27_io/istream_extractor_arith/11.cc,
- testsuite/27_io/istream_extractor_arith/12.cc,
- testsuite/27_io/istream_extractor_arith/13.cc: ... to new files.
- * testsuite/27_io/istream_extractor_arith/12.cc: Add XFAIL for
- sparc*-*-solaris2*.
-
-2003-01-05 Paolo Carlini <pcarlini@unitus.it>
-
- PR libstdc++/9168
- * src/codecvt.cc
- (codecvt<char, char, mbstate_t>::do_in, do_out):
- Implement the resolution of DR19 (TC).
- * testsuite/22_locale/codecvt_members_char_char.cc
- (test01): Tweak.
-
-2003-01-02 Jason Merrill <jason@redhat.com>
-
- * config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
- *__mem is also an output.
- * config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.
diff --git a/libstdc++-v3/ChangeLog-2003 b/libstdc++-v3/ChangeLog-2003
new file mode 100644
index 00000000000..4a976be6ccb
--- /dev/null
+++ b/libstdc++-v3/ChangeLog-2003
@@ -0,0 +1,8619 @@
+2003-12-31 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int,
+ num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+ _first_ look for thousands_sep, then for decimal_point and
+ finally for digits.
+ (num_get::_M_extract_float): After the decimal_point or
+ 'e'/'E', decimal_point and thousands_sep just break out the
+ parsing loop.
+ * testsuite/22_locale/num_get/get/char/11.cc: Add tests.
+ * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-30 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13369
+ * include/bits/locale_facets.tcc (__verify_grouping):
+ Fix to deal properly with __grouping_tmp.size() >
+ __grouping.size().
+ * testsuite/22_locale/num_get/get/char/13.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/13.cc: Ditto.
+
+2003-12-29 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.h (ctype.narrow,widen): Add cast.
+
+2003-12-29 Paolo Carlini <pcarlini@suse.de>
+
+ * acinclude.m4 (GLIBCXX_CHECK_LFS): Add -fno-exceptions
+ to CXXFLAGS.
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+
+2003-12-29 Mark Mitchell <mark@codesourcery.com>
+
+ * acconfig.h: Add _GLIBCXX_USE_C99_MATH.
+ * acinclude.m4 (GLIBCXX_ENABLE_C99): Define GLIBCXX_USE_C99_MATH.
+ * configure.ac: Define HAVE_S_ISREG and HAVE_S_IFREG when
+ targeting newlib.
+ * aclocal.m4: Regenerated.
+ * config.h.in: Likewise.
+ * configure: Likewise.
+ * Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * libmath/Makefile.in: Likewise.
+ * libsupc++/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * src/Makefile.in: Likewise.
+ * po/Makefile.in: Likewise.
+ * include/c_std/std_cmath.h (_GLIBCXX_USE_C99): Replace with ...
+ (_GLIBCXX_USE_C99_MATH): ... this.
+
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: XFAIL for
+ arm-none-elf.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Likewise.
+ * testsuite/27_io/basic_istream/readsome/char/6476-2.cc: Likewise.
+ * testsuite/27_io/objects/char/9.cc: Likewise.
+ * testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
+
+2003-12-28 Paolo Carlini <pcarlini@suse.de>
+
+ * include/ext/pool_allocator.h (class __pool_alloc): Use
+ operator new and operator delete.
+
+2003-12-24 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/cpu/i386/atomicity.h (__exchange_and_add): Fix output
+ constraint.
+
+ PR libstdc++/13480
+ * config/cpu/i386/atomicity.h: Split up read-write memory operand.
+
+2003-12-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/new_allocator.h (new_allocator): Proper allocator class.
+ (__new_alloc): Delete.
+ * include/ext/malloc_allocator.h (malloc_allocator): Same.
+ (__malloc_alloc): Delete.
+ * include/ext/mt_allocator.h: Same, but weakly.
+ * include/ext/debug_allocator.h: Convert to the new style.
+ * include/ext/pool_allocator.h: Use global new and delete directly.
+ * include/backward/alloc.h: Don't inject malloc_allocator, or
+ debug_allocator.
+ * testsuite/ext/allocators.cc: Minimal fixups for usage of new
+ classes. Comment out tests with __pool_alloc for now.
+ * testsuite/performance/allocator.cc: Same.
+
+2003-12-22 Matt Austern <austern@apple.com>
+
+ * include/bits/stl_bvector.h (_Bvector_alloc_base): Eliminate.
+ (_Bvector_base): Inherit directly from word allocator.
+ * include/bits/stl_tree.h (_Rb_tree_alloc_base): Eliminate.
+ (_Rb_tree_base): Eliminate.
+ (_Rb_tree): Inherit directly from node allocator.
+ * include/ext/slist (_Alist_alloc_base): Eliminate.
+ (_Slist_base): Inherit direcly from node allocator.
+
+2003-12-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/18_support/numeric_limits.cc: Add _GLIBCXX_ASSERT to
+ dg-options in testcases that use VERIFY.
+ * testsuite/23_containers/vector/invalidation/1.cc: Same.
+ * testsuite/23_containers/vector/invalidation/2.cc: Same.
+ * testsuite/23_containers/vector/invalidation/3.cc: Same.
+ * testsuite/23_containers/vector/invalidation/4.cc: Same.
+ * testsuite/23_containers/vector/resize/1.cc: Same.
+ * testsuite/26_numerics/complex_value.cc: Same.
+ * testsuite/27_io/ios_base/storage/1.cc: Same.
+ * testsuite/27_io/ios_base/storage/2.cc: Same.
+ * testsuite/27_io/ios_base/storage/3.cc: Same.
+ * testsuite/27_io/manipulators/standard/char/2.cc: Same.
+ * testsuite/backward/11460.cc: Same.
+ * testsuite/backward/strstream_members.cc: Same.
+
+ * include/ext/hash_set (class hash_multiset): Fix typo.
+
+2003-12-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/objects/char/5.cc: Don't use stdc++.h.gch.
+ * testsuite/27_io/objects/wchar_t/5.cc: Same.
+ * docs/html/test.html: Add docs for constructing test files that
+ don't use stdc++.h.gch.
+ * scripts/testsuite_flags.in (PCHFLAGS): Move to --cxxpchflags.
+ * testsuite/libstdc++-dg/normal.exp: Compute DEFAULT_CXXFLAGS
+ differently.
+
+ * include/bits/ios_base.h (ios_base::Init::_S_initialized): Remove.
+ * src/ios_init.cc: Same.
+ * config/linker-map.gnu: Same.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Adjust line numbers.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+
+2003-12-22 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR libstdc++/13462
+ * include/bits/stl_multiset.h (__gnu_norm::multiset): Define pointer
+ as allocator's pointer, likewise for reference, const_pointer, and
+ const_reference.
+ * include/bits/stl_set.h (__gnu_norm::set): Likewise.
+ * include/ext/hash_set (__gnu_ext::hash_set): Likewise.
+ (__gnu_ext::hash_multiset): Likewise.
+
+2003-12-22 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int,
+ num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+ first look for decimal_point and thousands_sep, when parsing
+ sign, leading zeros (and 0, Ox, 0X for integer types) too.
+ * testsuite/22_locale/num_get/get/char/12.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
+
+ * testsuite/22_locale/num_get/get/char/11.cc: Add a comment.
+ * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-20 Jason Merrill <jason@redhat.com>
+
+ * config/cpu/powerpc/atomicity.h: Fix oversight in previous
+ change.
+
+2003-12-20 Jerry Quinn <jlquinn@optonline.net>
+
+ * docs/doxygen/TODO: Update.
+ * include/bits/locale_classes.h (locale, facet, id): Document.
+ * include/bits/locale_facets.tcc (has_facet, use_facet): Document.
+
+2003-12-19 Jason Merrill <jason@redhat.com>
+
+ * config/cpu/cris/atomicity.h: Remove memory clobbers.
+ * config/cpu/mips/atomicity.h: Likewise.
+ * config/cpu/i486/atomicity.h: Remove memory clobbers.
+ Split up read-write memory operand.
+ * config/cpu/m68k/atomicity.h: Likewise.
+ * config/cpu/powerpc/atomicity.h: Make memory I/O explicit.
+ * config/cpu/s390/atomicity.h: Likewise.
+ * config/cpu/sparc/atomicity.h: Likewise.
+
+2003-12-20 Carlo Wood <carlo@alinoe.com>
+
+ * bits/demangle.h
+ namespace __gnu_cxx::demangler
+ (session<Allocator>::decode_encoding): Put the postfix
+ of the return type of (member) functions after the function
+ instead of after the return type.
+
+2003-12-19 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facet.h
+ (__ctype_abstract_base,ctype<charT>,ctype<char>,ctype<wchar_t>):
+ Document.
+
+2003-12-19 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int,
+ num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
+ first look for decimal_point and thousands_sep.
+ * testsuite/22_locale/num_get/get/char/11.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
+
+2003-12-19 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ When __found_sci becomes true stop eating thousands separators
+ and the decimal radix separator.
+ * testsuite/22_locale/num_get/get/char/9.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/9.cc: Likewise.
+
+ * config/locale/generic/c_locale.cc (__convert_to_v): Don't
+ check that *__sanity == '\0': parsing may stop earlier, still
+ be successful.
+ * config/locale/gnu/c_locale.cc: Likewise.
+ * testsuite/22_locale/num_get/get/char/10.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/10.cc: Likewise.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
+ Tweak in one place accordingly.
+
+ * testsuite/22_locale/money_get/get/char/1.cc: Fix typo.
+ * testsuite/22_locale/money_get/get/wchar_t/1.cc: Likewise.
+
+2003-12-18 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/stl_list.h: Formatting tweaks.
+ * include/bits/list.tcc: Same.
+
+2003-12-18 Matt Austern <austern@apple.com>
+
+ * include/bits/demangle.h: Fix allocator type correctness,
+ i.e. make sure that when we instantiate a container with a value
+ type and an allocator, the allocator's value type matches the
+ container's.
+ * include/bits/stl_deque.h (_Deque_alloc_base): Eliminate.
+ (_Deque_base): inherit directly from the deque's allocator. Use
+ rebinding instead of _Alloc_traits. Pick up data members from
+ _Deque_alloc_base.
+ * include/bits/stl_list.h (_List_alloc_base): Eliminate.
+ (_List_base): Inherit directly from the list's allocator. Use
+ rebinding instead of _Alloc_traits. Pick up data members from
+ _List_alloc_base.
+ * include/bits/stl_vector.h (_Vector_alloc_base): Eliminate
+ (_Vector_base): Inherit directly from the vector's allocator. Use
+ rebinding instead of _Alloc_traits. Pick up data members from
+ _Vector_alloc_base.
+ * include/ext/hashtable.h: Fix allocator type correctness (the
+ vector of buckets must be passed an allocator for objects of
+ type _Node*). Use rebinding instead of _Alloc_traits.
+
+2003-12-17 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+ Use narrow to get from __format[__i] a char __c representing a
+ formatting code, don't use it to compare *__beg to __format[__i].
+ * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: New.
+
+2003-12-17 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/performance/container_benchmark.cc: Tweak outputs.
+
+ * testsuite/performance/list_create_fill_sort.cc: Shrink a
+ bit some outputs.
+
+ * testsuite/testsuite_performance.h: Widen a few output fields.
+
+ * testsuite/performance/ifstream_extract_int.cc: New.
+
+2003-12-16 Phil Edwards <phil@codesourcery.com>
+
+ * configure.ac (AM_INIT_AUTOMAKE): Don't warn about GNU Make.
+ * configure: Regenerated.
+ * Makefile.am (check-%): New catch-all forwarding target.
+ * Makefile.in: Regenerated.
+
+2003-12-16 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/performance/container_benchmark.cc: New, a
+ benchmark developed by Bjarne Stroustrup and Alexander
+ Stepanov and made available with no restrictions.
+
+ * testsuite/testsuite_performance.h (report_header): New,
+ useful to produce header lines in the reports.
+
+2003-12-16 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/21_strings/howto.html: Document shrink-to-fit reserve().
+ * docs/html/faq/index.html: Reducing vector's capacity() to size().
+ * docs/html/documentation.html, docs/html/faq/index.txt: Regenerate.
+
+2003-12-16 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/performance/narrow_widen_char.cc: Tweak the
+ number of iterations for each test.
+ * testsuite/performance/narrow_widen_wchar_t.cc: Add a
+ missing clear_counters.
+
+2003-12-16 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/11723
+ * include/bits/locale_facets.h: Add _M_bit and _M_wmask,
+ used to speed up the computation of ctype::do_is.
+ * config/locale/generic/ctype_members.cc
+ (_M_initialize_ctype): Fill _M_bit and _M_wmask.
+ (ctype::do_is): Use _M_bit and _M_wmask.
+ * config/locale/gnu/ctype_members.cc: Likewise.
+ * testsuite/performance/is_wchar_t.cc: New.
+
+ * testsuite/performance/narrow_widen_wchar_t.cc: Tweak
+ string literal (incorrect citation ;)
+
+ * include/bits/locale_facets.h: Minor tweaks, const
+ correctness, unsigned -> size_t.
+
+2003-12-16 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.h (widen, narrow): Uncomment the
+ intended code.
+
+2003-12-15 Jerry Quinn <jlquinn@optonline.net>
+
+ * config/os/aix/ctype_noninline.h,
+ config/os/bsd/freebsd/ctype_noninline.h,
+ config/os/bsd/netbsd/ctype_noninline.h,
+ config/os/djgpp/ctype_noninline.h,
+ config/os/generic/ctype_noninline.h,
+ config/os/gnu-linux/ctype_noninline.h,
+ config/os/hpux/ctype_noninline.h,
+ config/os/irix/irix5.2/ctype_noninline.h,
+ config/os/irix/irix6.5/ctype_noninline.h,
+ config/os/mingw32/ctype_noninline.h,
+ config/os/newlib/ctype_noninline.h,
+ config/os/qnx/qnx6.1/ctype_noninline.h,
+ config/os/solaris/solaris2.5/ctype_noninline.h,
+ config/os/solaris/solaris2.6/ctype_noninline.h,
+ config/os/solaris/solaris2.7/ctype_noninline.h,
+ config/os/vxworks/ctype_noninline.h,
+ config/os/windiss/ctype_noninline.h (ctype): Initialize
+ _M_narrow, _M_widen.
+ * include/bits/locale_facets.h (_M_widen, _M_widen_ok,
+ _M_narrow, _M_narrow_ok): New.
+ (widen, narrow): Use tables to bypass virtual functions.
+ (_M_widen_init, _M_narrow_init): New.
+
+2003-12-15 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/ios_base.h (Init::_S_initialized): Change into
+ declaration.
+ * src/ios_init.cc (Init::_S_initialized): Add definition.
+
+2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/12658
+ * include/Makefile.am (bits_headers): Add concurrence.h.
+ * include/Makefile.in: Regenerated.
+ * include/bits/concurrence.h: New.
+ * src/locale_init.cc: Use it.
+ (locale::locale): Lock critical regions.
+ (locale::global): Same.
+
+2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/basic_string.h: Change _*_references to _*_refcount.
+ * include/bits/locale_classes.h: Same.
+ * src/locale.cc: Same.
+ * src/locale_name.cc: Same.
+ * src/locale_init.cc: Same.
+
+2003-12-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/12855
+ * include/bits/ios_base.h (Init::_S_ios_base_init): Change to
+ _S_refcount, make atomic.
+ * src/ios.cc: Adjust definition.
+ * src/ios_init.cc (ios_base::Init::Init): Use __exchange_and_add,
+ and __atomic_add.
+ (ios_base::Init::~Init): Same.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-12-15 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::do_get(bool&)):
+ Fail as soon as the begins of both truename and falsename
+ stop to match; always leave __beg one position beyond the
+ last char successfully matched.
+ * testsuite/22_locale/num_get/get/char/8.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/8.cc: Likewise.
+
+2003-12-15 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.h (_M_widen): Reserve space
+ for all the possible widened chars.
+ * config/locale/generic/ctype_members.cc (_M_initialize_ctype):
+ Compute at construction time all the possible widened chars.
+ (do_widen): Tweak, simplify.
+ * config/locale/gnu/ctype_members.cc: Likewise.
+ * testsuite/performance/narrow_widen_wchar_t.cc: Add tests
+ for the array versions.
+
+2003-12-12 Paolo Carlini <pcarlini@suse.de>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/13341
+ * include/bits/locale_facets.h (ctype<wchar_t>): Declare
+ _M_initialize_ctype() and _M_narrow_ok, _M_narrow and _M_widen.
+ * src/ctype.cc (ctype<wchar_t>::ctype(size_t),
+ ctype<wchar_t>::ctype(__c_locale, size_t)): Use
+ _M_initialize_ctype to fill _M_narrow and _M_widen.
+ (ctype_byname<wchar_t>::ctype_byname(const char*, size_t)):
+ Likewise.
+ * config/locale/generic/ctype_members.cc (do_narrow, do_widen)
+ Use _M_narrow and _M_widen when possible, instead of calling
+ wctob and btowc, respectively.
+ (_M_initialize_ctype): Define, it fills at construction time
+ _M_narrow and _M_widen.
+ * config/locale/gnu/ctype_members.cc: Likewise.
+ * testsuite/performance/narrow_widen_wchar_t.cc: New.
+
+2003-12-12 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/faq/index.txt: Regenerate after adding <link> tags.
+
+2003-12-11 Neil Ferguson <nferguso@eso.org>
+ Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.tcc (reserve): Allow shrink-to-fit.
+ * testsuite/21_strings/basic_string/capacity/1.cc: Tweak.
+ * testsuite/21_strings/basic_string/capacity/char/1.cc: Ditto.
+ * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Ditto.
+
+2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/6243
+ * testsuite/lib/libstdc++.exp (v3-init): Add
+ original_ld_library_path, calculate ld_library path, set
+ LD_LIBRARY_PATH to both. Based on libjava.exp.
+
+2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
+ Alexandre Oliva <aoliva@redhat.com>
+
+ PR libstdc++/11612
+ * testsuite/Makefile.am (GLIBCXX_DIR): New.
+ (GLIBGCC_DIR): New.
+ (CXXLINK): Use both with -R so libtool links the correct libs.
+
+2003-12-10 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13217
+ * include/bits/fstream.tcc (underflow): Deal gracefully with
+ read errors: throw ios_base::failure.
+
+2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/10063
+ * config/io/basic_file_stdio.cc (__basic_file::sys_open): Sync.
+ * testsuite/ext/stdio_filebuf/char/10063-1.cc: New.
+ * testsuite/ext/stdio_filebuf/char/10063-2.cc: New.
+
+2003-12-10 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_put::do_put(void*)):
+ Remove the try/catch, not necessary.
+
+2003-12-10 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/locale/cons/12438.cc: Tweak memory
+ limit and iterations to avoid spurious failures on some
+ 64 bit machines.
+
+2003-12-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Remove private ios_base members from
+ export list.
+
+ * config/cpu/alpha/atomicity.h: Consistently format.
+ * config/cpu/cris/atomicity.h: Same.
+ * config/cpu/generic/atomicity.h: Same.
+ * config/cpu/hppa/atomicity.h: Same.
+ * config/cpu/i386/atomicity.h: Same.
+ * config/cpu/i486/atomicity.h: Same.
+ * config/cpu/ia64/atomicity.h: Same.
+ * config/cpu/m68k/atomicity.h: Same.
+ * config/cpu/mips/atomicity.h: Same.
+ * config/cpu/powerpc/atomicity.h: Same.
+ * config/cpu/s390/atomicity.h: Same.
+ * config/cpu/sparc/atomicity.h: Same.
+
+2003-12-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/13296
+ * acinclude.m4 (GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS): Remove.
+ * aclocal.m4: Regenerate.
+ * configure.ac: Remove call to GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS.
+ * conigure: Regenerate.
+ * src/Makefile.am (libstdc___la_LDFLAGS): Remove LIBUNWIND_FLAGS.
+ * src/Makefile.in: Regenerate.
+ * docs/html/17_intro/configury.html: Modify.
+
+2003-12-09 Paolo Carlini <pcaelini@suse.de>
+
+ * include/bits/demangle.h (struct implementation_details):
+ Keep in comments the names of the unused parameters.
+
+2003-12-09 Paolo Carlini <pcaelini@suse.de>
+
+ * include/bits/demangle.h (struct implementation_details):
+ Fix unused parameters warning.
+
+2003-12-09 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int):
+ Slightly streamline the code dealing with overflows and the
+ parsing of the sign.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/ext/algorithm, include/ext/debug_allocator.h,
+ include/ext/enc_filebuf.h, include/ext/functional,
+ include/ext/hash_fun.h, include/ext/hash_map, include/ext/hash_set,
+ include/ext/hashtable.h, include/ext/iterator,
+ include/ext/malloc_allocator.h, include/ext/memory,
+ include/ext/mt_allocator.h, include/ext/numeric,
+ include/ext/pod_char_traits.h, include/ext/pool_allocator.h,
+ include/ext/rb_tree, include/ext/rope, include/ext/ropeimpl.h,
+ include/ext/slist, include/ext/stdio_filebuf.h,
+ include/ext/stdio_sync_filebuf.h: Remove trailing whitespace.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/debug/bitset, include/debug/debug.h, include/debug/deque,
+ include/debug/formatter.h, include/debug/hash_map.h,
+ include/debug/hash_multimap.h, include/debug/hash_multiset.h,
+ include/debug/hash_set, include/debug/hash_set.h, include/debug/list,
+ include/debug/map.h, include/debug/multimap.h,
+ include/debug/multiset.h, include/debug/safe_base.h,
+ include/debug/safe_iterator.h, include/debug/safe_iterator.tcc,
+ include/debug/safe_sequence.h, include/debug/set.h,
+ include/debug/string, include/debug/vector: Remove trailing whitespace.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/c_compatibility/iso646.h, include/c_compatibility/limits.h,
+ include/c_compatibility/locale.h, include/c_compatibility/stdio.h,
+ include/c_compatibility/string.h, include/c_compatibility/time.h,
+ include/c_compatibility/wchar.h, include/c_compatibility/wctype.h:
+ Remove trailing whitespace.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/c_std/cmath.tcc, include/c_std/std_cassert.h,
+ include/c_std/std_cctype.h, include/c_std/std_cmath.h,
+ include/c_std/std_cstddef.h, include/c_std/std_cstdio.h,
+ include/c_std/std_cstdlib.h, include/c_std/std_cstring.h,
+ include/c_std/std_cwchar.h, include/c_std/std_cwctype.h:
+ Remove trailing whitespace.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/c/std_cctype.h, include/c/std_cmath.h,
+ include/c/std_cstdlib.h include/c/std_cwchar.h,
+ include/c/std_cwctype.h: Remove trailing whitespace.
+
+2003-12-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/backward/algo.h, include/backward/algobase.h,
+ include/backward/alloc.h, include/backward/complex.h,
+ include/backward/defalloc.h, include/backward/function.h,
+ include/backward/iterator.h, include/backward/new.h,
+ include/backward/ostream.h, include/backward/queue.h,
+ include/backward/rope.h, include/backward/stream.h,
+ include/backward/streambuf.h, include/backward/strstream,
+ include/backward/tempbuf.h, include/backward/tree.h,
+ include/backward/vector.h: Remove trailing whitespace.
+
+2003-12-08 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/generic/c_locale.cc (__convert_to_v(long&),
+ __convert_to_v(unsigned long&), __convert_to_v(long long&),
+ __convert_to_v(unsigned long long&): Remove.
+ (__convert_to_v(float&), __convert_to_v(double&),
+ __convert_to_v(long double&)): Remove last unused parameter.
+ * config/locale/gnu/c_locale.cc: Likewise.
+ * include/bits/locale_facets.h: Likewise.
+ (num_get::_M_extract_int): Update declaration.
+ (class __num_base): Tweak _S_ie and _S_iE according to the
+ _S_atoms_in changes.
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int):
+ Provide directly the final _ValueT, not a string: accumulate
+ the result checking for overflow at each digit.
+ (num_get::do_get(bool&), num_get::do_get(long&),
+ num_get::do_get(unsigned short&), num_get::do_get(unsigned int&),
+ num_get::do_get(unsigned long&), num_get::do_get(long long&),
+ num_get::do_get(unsigned long long&), num_get::do_get(void*&)):
+ Use the new _M_extract_int, simplify.
+ * src/locale-inst.cc (num_get::_M_extract_int(long&),
+ num_get::_M_extract_int(unsigned short&),
+ num_get::_M_extract_int(unsigned int&),
+ num_get::_M_extract_int(unsigned long&),
+ num_get::_M_extract_int(long long&),
+ num_get::_M_extract_int(unsigned long long&): Instantiate.
+ * src/locale_facets.cc (__num_base::_S_atoms_in): Reorder
+ the chars in the natural order: abcdefABCDEF.
+
+2003-12-08 David S. Miller <davem@redhat.com>
+
+ PR libstdc++/12496
+ * config/cpu/sparc/atomicity.h (__exchange_and_add, __atomic_add):
+ Extend increment to _Atomic_word before giving to assembler.
+
+2003-12-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/ext/enc_filebuf/char/13189.cc: Guard for __enc_traits.
+ * testsuite/ext/enc_filebuf/wchar_t/13189.cc: Same.
+
+2003-12-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/11691
+ * include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf):
+ Remove __del argument to file descriptor constructor.
+ * config/io/basic_file_stdio.h (__basic_file::sys_open): Remove
+ bool argument.
+ * config/io/basic_file_stdio.cc: Same.
+
+2003-12-05 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/13189
+ * include/ext/enc_filebuf.h: Fix.
+ * include/bits/fstream.tcc: Tweak formatting.
+ * include/bits/postypes.h: Same.
+ * include/bits/sstream.tcc: Same.
+ * include/bits/streambuf.tcc: Same.
+ * testsuite/ext/stdio_filebuf.cc: Split.
+ * testsuite/ext/stdio_filebuf_2.cc: Split.
+ * testsuite/ext/stdio_sync_filebuf_char.cc: Split.
+ * testsuite/ext/stdio_sync_filebuf_wchar_t.cc: Split.
+ * testsuite/ext/enc_filebuf/char/13189.cc: New.
+ * testsuite/ext/enc_filebuf/wchar_t/13189.cc: New.
+ * testsuite/ext/stdio_filebuf/char/1.cc: New.
+ * testsuite/ext/stdio_filebuf/char/2.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/char/1.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: New.
+ * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: New.
+
+2003-12-05 Carlo Wood <carlo@alinoe.com>
+
+ PR libstdc++/13045
+ * bits/demangle.h
+ namespace __gnu_cxx::demangler
+ (enum substitution_nt): Removed trailing comma.
+ (implementation_details): Added.
+ (session<Allocator>::M_implementation_details): Added.
+ (session<Allocator>::session): Pass implementation_details.
+ (session<Allocator>::decode_encoding): Same.
+ (session<Allocator>::decode_real): Added.
+ (_GLIBCXX_DEMANGLER_STYLE_VOID _GLIBCXX_DEMANGLER_STYLE_LITERAL
+ _GLIBCXX_DEMANGLER_STYLE_LITERAL_INT
+ _GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
+ _GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Replaced with
+ implementation_details equivalent.
+ (session<Allocator>::decode_expression):
+ Use M_implementation_details instead of macros. Add extra parentheses
+ around 'larger than' operator in expressions in template arguments.
+ (session<Allocator>::decode_bare_function_type): Idem.
+ (session<Allocator>::decode_literal):
+ Idem, and call decode_real for floating literals.
+ (session<Allocator>::decode_type_with_postfix): Put the postfix
+ of the return type of (member) functions after the function
+ instead of after the return type. Also, put a space after the
+ prefix of qualified function pointers: "int (* const<space>".
+ * src/demangle.cc: include most dependent header file first.
+ * testsuite/demangle/regression/cw-16.cc: Updated two
+ and added three tests.
+
+2003-12-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/13284
+ * include/bits/stl_algo.h (__random_number): Remove.
+ (random_shuffle): Use rand, as permitted by DR 395.
+ * include/ext/algorithm: Same.
+ * linkage.m4 (GLIBCXX_CHECK_STDLIB_SUPPORT): Remove lrand48.
+ * acconfig.h: Same.
+ * crossconfig.m4: Remove HAVE_DRAND48, HAVE_LRAND48.
+ * config.h.in: Regenerated.
+ * configure: Same.
+ * aclocal.m4: Same.
+
+2003-12-04 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12653
+ * include/std/std_bitset.h (operator>>): Implement resolution
+ of DR 303 [WP]: use widen('0') and widen('1').
+ * docs/html/ext/howto.html: Add an entry for DR 303.
+
+ * include/std/std_bitset.h (operator>>): Implement the common
+ requirements of formatted input functions (27.6.1.2.1).
+
+ * include/std/std_bitset.h (operator>>): Set the failbit when
+ nothing was extracted and _Nb != 0.
+ * testsuite/23_containers/bitset/input/1.cc: New.
+
+2003-12-03 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12791
+ * include/bits/locale_facets.tcc (time_get::_M_extract_num):
+ Rewrite, stop the parsing as soon as a digit cannot possibly
+ lead to a final number within the bounds; otherwise, simplify,
+ avoiding __ctype.is() and atoi().
+ * testsuite/22_locale/time_get/get_date/char/12791.cc: New.
+ * testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: New.
+
+ * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+ Minor tweak: a 4-digit integer cannot be bigger than 9999.
+
+ * testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Use
+ type-correct wchar_t string literals.
+ * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
+ * testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
+ * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
+ * testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
+
+2003-12-02 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get::do_get_year):
+ Avoid using a basic_string and calling a full blown strtol
+ (via __convert_to_v) for simple 2 or 4 digits, base 10,
+ positive integers; simplify.
+
+2003-12-02 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/monetary_members.cc
+ (money_base::_S_construct_pattern): For case 3: and 4:
+ exchanging 'if (__precedes)' and 'if (__space)' allows
+ to factor out a few more assignments.
+
+2003-12-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/basic_ios.h (basic_ios::setstate): Revert.
+ * include/bits/istream.tcc: Only call setstate if __err != goodbit.
+ * include/bits/ostream.tcc: Same.
+ * testsuite/27_io/basic_ios/exceptions/char/2.cc: New.
+
+ * testsuite/testsuite_io.h (__gnu_test::fail_streambuf): Make
+ internal buffer non-static.
+
+2003-12-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/17_intro/C++STYLE: Add exception bits.
+ * include/bits/fstream.tcc: Add location info to exception strings.
+
+ * include/bits/stl_construct.h: Formatting tweaks.
+
+2003-12-01 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/10378
+ * include/bits/allocator.h (allocator::construct): Implement
+ resolution of DR 402 [Ready] (in Revision 28).
+ * include/bits/allocator_traits.h (__allocator::construct):
+ Likewise.
+ * include/bits/stl_construct.h (_Construct): Likewise.
+ * testsuite/20_util/allocator_members.cc: Move to...
+ * testsuite/20_util/allocator/1.cc: ... here.
+ * testsuite/20_util/allocator/10378.cc: New.
+ * docs/html/ext/howto.html: Add an entry for DR 402.
+
+2003-11-30 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/codecvt_members.cc (codecvt::do_in,
+ codecvt::do_length): More minor tweaks.
+
+2003-11-30 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/codecvt_members.cc (codecvt::do_in):
+ Minor stylistic tweak.
+
+2003-11-30 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_put::do_put(..., bool)):
+ Minor tweaks, consistent with the style used in other facets.
+
+2003-11-29 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/fstream.tcc (underflow): Minor tweaks in
+ preparation for libstdc++/13217.
+
+2003-11-29 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc:
+ Tweak for a few small problems (fix timings, use VERIFY..)
+
+2003-11-28 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: Remove.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: New,
+ the original third testcase for libstdc++/13171 belong here.
+
+2003-11-28 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc:
+ Remove extraneous wchar_t lines.
+
+2003-11-27 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/11544
+ PR libstdc++/11603
+ * include/bits/fstream.tcc (underflow): Throw ios_base::failure
+ upon incomplete or invalid byte sequences in the file.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc: New.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc: New.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc: New.
+
+2003-11-27 Paolo Carlini <pcarlini@suse.de>
+
+ * include/std/std_streambuf.h (__copy_streambufs): Remove
+ the first, unused, basic_ios<> parameter.
+ * src/streambuf-inst.cc: Likewise.
+ * include/bits/streambuf.tcc: Likewise.
+ * include/bits/istream.tcc (operator>>(__streambuf_type*)):
+ Tweak accordingly the call.
+ * include/bits/ostream.tcc (operator<<(__streambuf_type*)):
+ Likewise.
+
+ * include/bits/streambuf.tcc (__copy_streambufs): Remove
+ redundant try/catch.
+
+2003-11-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/9371
+ PR libstdc++/9546
+ PR libstdc++/10093
+ PR libstdc++/10095
+ * include/bits/basic_ios.h (basic_ios::setstate): Elide if goodbit.
+ (basic_ios::_M_setstate): Consolidate common error handling code.
+ * include/bits/basic_ios.tcc: Tweak.
+ * include/bits/fstream.tcc: Tweak.
+ * include/bits/istream.tcc: Use _M_setstate for common exception
+ handling. Move setstate calls after catch.
+ (basic_istream::tellg): Check for exceptions thrown by streambuf
+ virtual functions.
+ (basic_istream::seekg): Same.
+ * include/bits/ostream.tcc: Same, but for ostream.
+ (basic_ostream::flush): Check for exceptions thrown by streambuf
+ virtual functions.
+ (basic_istream::tellp): Same.
+ (basic_istream::seekp): Same.
+ * include/bits/locale_facets.tcc: Tweak.
+ * include/bits/streambuf.tcc: Tweak.
+ (__copy_streambufs): Propagate exceptions.
+ * testsuite/testsuite_io.h (fail_streambuf): New.
+ (fail_num_get): New.
+ (fail_num_put): New.
+ (facet_error): New.
+ (underflow_error): New.
+ (overflow_error): New.
+ (positioning_error): New.
+ * testsuite/27_io/basic_istream/exceptions/char/9561.cc: Tweak.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/
+ exceptions_badbit_throw.cc, exceptions_failbit.cc,
+ exceptions_failbit_throw.cc: New.
+ * testsuite/27_io/basic_istream/extractors_other/char/
+ error_failbit.cc, exceptions_badbit_throw.cc,
+ exceptions_failbit_throw.cc, exceptions_null.cc: New.
+ * testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
+ New.
+ * testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc:
+ New.
+ * testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
+ New.
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/char/
+ exceptions_badbit_throw.cc, exceptions_failbit_throw.cc: New.
+ * testsuite/27_io/basic_ostream/inserters_other/char/
+ error_failbit.cc, exceptions_badbit_throw.cc,
+ exceptions_failbit_throw.cc, exceptions_null.cc: New.
+ * testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
+ New.
+ * testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
+ New.
+
+2003-11-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/12297
+ * include/bits/istream.tcc
+ (basic_istream::sentry::sentry): Set failbit and eofbit when eof.
+ * testsuite/27_io/basic_istream/sentry/char/12297.cc: New.
+
+2003-11-26 Paolo Carlini <pcarlini@suse.de>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/13171
+ * include/bits/fstream.tcc (imbue): Relax the conditions under
+ which the function succeeds: allow for two consecutive calls with
+ the same name; state dependent encodings are ok even after open
+ if at the beginning of the file; don't check seekoff return value
+ (pipes, cin, cout, etc...)
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak comment.
+ * testsuite/27_io/basic_filebuf/imbue/char/3.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Tweak comment.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: Likewise.
+
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: More
+ correctly use the UTF-8 locale appearing in the PR.
+
+2003-11-26 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.h
+ (__numpunct_cache<>::_M_cache): Avoid zeroing _M_grouping,
+ _M_truename and _M_falsename: the constructor always does
+ it immediately before the _M_cache call.
+
+2003-11-25 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/codecvt_members.cc (codecvt::do_length):
+ Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
+ former is very fast, but stops if encounters a NUL.
+ (codecvt::do_out): Tweaks.
+ (codecvt::do_in): Tweaks, improve the code dealing with errors.
+ * testsuite/performance/wchar_t_length.cc: New.
+
+2003-11-24 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/codecvt_members.cc (codecvt::do_in):
+ Rewrite, using both mbsnrtowcs and mbrtowc in a loop: the
+ former is very fast, but stops if encounters a NUL.
+ (codecvt::do_out): Tweak.
+ * testsuite/performance/wchar_t_in.cc: New.
+
+2003-11-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.h
+ (__numpunct_cache<>::_M_cache): Set _M_allocated at the beginning
+ in order to avoid memory leaks; simplify a bit.
+
+2003-11-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/streambuf_iterator.h (ostreambuf_iterator): Remove
+ non-standard throw specs.
+ * testsuite/24_iterators/istreambuf_iterator.cc: Split into...
+ * testsuite/24_iterators/istreambuf_iterator/1.cc
+ * testsuite/24_iterators/istreambuf_iterator/2.cc
+ * testsuite/24_iterators/istreambuf_iterator/2627.cc
+ * testsuite/24_iterators/ostreambuf_iterator.cc: Split into...
+ * testsuite/24_iterators/ostreambuf_iterator/1.cc
+ * testsuite/24_iterators/ostreambuf_iterator/2.cc
+
+ * testsuite/24_iterators/reverse_iterator/1.cc: Just compile,
+ don't link.
+
+ * include/bits/allocator.h: Formatting tweak.
+
+2003-11-24 Paolo Carlini <pcarlini@suse.de>
+
+ * src/locale_init.cc: Cosmetic reformatting.
+
+2003-11-23 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (__add_grouping):
+ Cosmetic reformatting.
+
+2003-11-23 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (_M_extract_float,
+ _M_extract_int): Remove a wrong comment and simplify
+ the corresponding code using char_traits::find().
+
+2003-11-22 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/monetary_members.cc
+ (money_base::_S_construct_pattern): Factor out two assignments.
+
+2003-11-22 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/istream.tcc (getline(basic_string<>&)):
+ Fix error in comment of the previous commit.
+
+2003-11-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12593
+ * include/bits/istream.tcc (operator>>(basic_string<>&),
+ getline(basic_string<>&)): Implement resolution of DR 91 [WP];
+ fix some minor issues with the exit conditions.
+ * docs/html/ext/howto.html: Add an entry for DR 91.
+
+2003-11-21 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/monetary_members.cc
+ (money_base::_S_construct_pattern): Factor out an assignment.
+
+2003-11-21 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12882 (partial)
+ * acinclude.m4 (GLIBCXX_CHECK_LFS): Check fseeko64
+ and ftello64 too.
+ * include/ext/stdio_sync_filebuf.h (seekoff): Use fseeko64
+ and ftello64 if available.
+ * aclocal.m4: Regenerate.
+ * configure: Ditto.
+
+2003-11-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/debug/formatter.h: Use _Tp as template argument.
+ * src/debug.cc: Same, instantiate std::size_t.
+
+2003-11-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/13109
+ * include/debug/formatter.h (_Error_formatter::_M_format_word): New.
+ * src/debug.cc (__gnu_debug): Format.
+ (_Error_formatter::_M_format_word): Define, use, instantiate.
+
+2003-11-20 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/11602
+ * config/locale/gnu/codecvt_members.cc (codecvt::do_out):
+ Rewrite, using both wcsnrtombs and wcrtomb in a loop: the
+ former is very fast, but stops if encounters a NUL.
+ * testsuite/performance/wchar_t_out.cc: New, from the PR.
+
+2003-11-19 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/codecvt_members.cc (do_out): If
+ we can upper bound the total number of external chars
+ to something smaller than __to_end - __to, avoid the
+ temporary buffer, the memcopy and simplify the loop.
+ * config/locale/generic/codecvt_members.cc (do_out):
+ Likewise.
+
+2003-11-19 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libstdc++.exp: Add DYLD_LIBRARY_PATH for darwin.
+ * testsuite/libstdc++-dg/normal.exp: Add -multiply_defined suppress
+ flag.
+
+2003-11-18 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/configopts.html, docs/html/debug.html,
+ docs/html/documentation.html, docs/html/explanations.html,
+ docs/html/install.html, docs/html/17_intro/contribute.html,
+ docs/html/17_intro/howto.html, docs/html/17_intro/license.html,
+ docs/html/18_support/howto.html, docs/html/19_diagnostics/howto.html,
+ docs/html/20_util/howto.html, docs/html/21_strings/howto.html,
+ docs/html/22_locale/codecvt.html, docs/html/22_locale/ctype.html,
+ docs/html/22_locale/howto.html, docs/html/22_locale/locale.html,
+ docs/html/22_locale/messages.html, docs/html/23_containers/howto.html,
+ docs/html/24_iterators/howto.html, docs/html/25_algorithms/howto.html,
+ docs/html/26_numerics/howto.html, docs/html/27_io/howto.html,
+ docs/html/ext/howto.html, docs/html/ext/sgiexts.html: Add <link> tags.
+
+2003-11-18 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12868
+ * include/bits/fstream.tcc (imbue): For encodings != -1 it's
+ always ok to imbue a new locale, provided seekoff(0, cur, ...)
+ doesn't fail, of course.
+ (underflow): In order for the above to work, deal gracefully
+ with _M_codecvt->in returning codecvt_base::error while
+ (__ilen = __iend - this->eback()) > 0: it just means __ilen
+ correctly converted internal characters before an error.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc: New.
+
+2003-11-17 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc: Fix typo in comment.
+
+2003-11-17 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/num_put/put/char/8.cc: New test,
+ summarizing the discussion ensuing libstdc++/12988.
+ * testsuite/22_locale/num_put/put/wchar_t/8.cc: Ditto.
+
+2003-11-15 Paolo Carlini <pcarlini@suse.de>
+
+ * include/std/std_fstream.h: Tweak a comment.
+
+2003-11-15 Roger Sayle <roger@eyesopen.com>
+
+ * include/c_std/std_cmath.h: Don't import C99's float transcendentals
+ into the __gnu_cxx::__c99_binding namespace.
+ (acos, asin, atan, atan2, ceil, cosh, exp, floor, fmod, frexp,
+ ldexp, log, log10, modf, pow, sinh, tan, tanh): Implement using
+ GCC's math builtins, i.e. __builtin_foo.
+ * libmath/stubs.c (acosf, acosl, asinf, asinl, atanf, atanl,
+ ceilf, ceill, floorf, floorl, fmodf, fmodl, frexpf, frexpl,
+ ldexpf, ldexpl, modff, modfl): Provide stub implementations.
+
+2003-11-14 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/locale/cons/12352.cc: Use
+ __gnu_test::try_named_locale.
+
+2003-11-14 Paolo Carlini <pcarlini@suse.de>
+
+ * docs/html/ext/howto.html: Add entries for DR 63, 75
+ and 305; tweak entries for DR 60 and 328.
+
+2003-11-13 Douglas Gregor <gregod@cs.rpi.edu>
+
+ * docs/html/debug.html: Users are allowed to specialize in
+ namespace __gnu_debug, unlike in the Apple version of the debug
+ mode. Clear up a confusing double-negative. Note that
+ std::basic_string does provide extra debugging capabilities, but
+ not safe iterators.
+ * include/bits/basic_string.tcc: Make sure there's never an
+ ambiguity when calling __is_null_pointer.
+ * include/debug/deque: (deque::erase) Properly handle invalidation
+ when erasing at the end of the deque.
+ * include/debug/vector: (vector::swap): Swap _M_guaranteed_capacity.
+ (vector::clear): Set the guaranteed capacity to 0.
+ * testsuite/23_containers/deque/invalidation/4.cc: (test04): Test
+ iterator invalidation when erasing at the end of the deque.
+
+2003-11-13 Paolo Carlini <pcarlini@suse.de>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/13007
+ * include/bits/fstream.tcc (imbue): Don't touch the stored
+ locale.
+ * include/std/std_streambuf.h (imbue): According to the
+ standard, base class version does nothing.
+ (pubimbue): Store the locale.
+ * testsuite/27_io/basic_filebuf/imbue/char/13007.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/2.cc: Tweak.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc: New.
+ * testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc: New.
+ * testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc: New.
+ * testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc: New.
+
+2003-11-13 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/12594
+ * include/bits/ostream.tcc
+ (basic_ostream::operator<<(basic_ostream& (*)(basic_ostream&)),
+ basic_ostream::operator<<(basic_ios& (*)(basic_ios&)),
+ basic_ostream::operator<<(ios_base& (*)(ios_base&))):
+ Implement the resolution of DR 60 (TC): These are not formatted
+ output functions so don't construct sentry objects and don't
+ catch exceptions.
+ (basic_ostream::put, basic_ostream::write): Implement the
+ resolution of DR 63 (TC) by catching exceptions and setting
+ badbit.
+ (basic_ostream::flush): Implement the resolution of DR 60 (TC):
+ This is not an unformatted output function so don't construct
+ a sentry object.
+ * testsuite/testsuite_io.h (sync_streambuf): Define.
+ * testsuite/27_io/basic_ostream/flush/char/2.cc: New test.
+ * testsuite/27_io/basic_ostream/inserters_other/char/5.cc: New test.
+ * testsuite/27_io/basic_ostream/put/char/1.cc: New test.
+ * testsuite/27_io/basic_ostream/write/char/1.cc: New test.
+
+2003-11-13 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1:
+ Fix, closely following the testcase included in the PR.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: Ditto.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: Ditto.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: Ditto.
+
+2003-11-13 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/17_intro/configury.html: XHTML tweak.
+
+2003-11-13 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/debug_mode.html: XHTML fixes.
+
+2003-11-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/debug_mode.html: Update.
+ * docs/html/17_intro/TODO: Update.
+
+2003-11-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config: Move using directive...
+ * include/debug/formatter.h: ...here.
+
+2003-11-12 Carlo Wood <carlo@alinoe.com>
+
+ PR libstdc++/12947
+ * bits/demangle.h
+ (_GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS): Added.
+ (_GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Added.
+ (session<Allocator>::next_peek() const): Added.
+ (decode_non_negative_decimal_integer(string_type&)):
+ Renamed from decode_decimal_integer(string_type&).
+ (session<Allocator>::decode_nested_name):
+ Decode <template_param> as well.
+ (session<Allocator>::add_substitution):
+ Handle <template-param> for <nested-name>'s.
+ (enum xary_nt): Added.
+ (struct entry_st): Added member `xary_nt type' instead of `bool unary'.
+ (symbol_name_table_c): Updated for `entry_st::type' and additional
+ operators (unary `operator+' and `sizeof(type)').
+ (offset_table_c): Updated for new operators (causing a new hash map).
+ (decode_operator_name): Match the updated hash map.
+ (session<Allocator>::decode_expression):
+ Support for `sizeof ([typename] type)' (st),
+ dependent names (sr) and casting operator (cv). Handle
+ `entry_st::type'. Handle _GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
+ and _GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME.
+ (session<Allocator>::decode_type_with_postfix):
+ Support `extern "C"' function types (FY).
+ * testsuite/demangle/regression/cw-16.cc: Added tests for the
+ added functionality.
+ * testsuite/demangle/regression/3111-2.cc: sizeof now has a space
+ appended.
+
+2003-11-11 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12875
+ * include/bits/fstream.tcc (setbuf): Don't do anything
+ after open(), in particular don't discard data.
+ (_M_allocate_internal_buffer): Tweak to not allocate memory
+ in case the buffer is provided by the user via setbuf.
+ * include/ext/stdio_filebuf.h: Tweak comment.
+ * testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: New.
+ * testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Tweak, now
+ setbuf does nothing after open().
+ * testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Likewise.
+
+2003-11-11 Doug Gregor <gregod@cs.rpi.edu>
+
+ * docs/html/debug.html: Document libstdc++ debug mode.
+ * docs/html/debug_mode.html: Document libstdc++ debug mode design.
+ * docs/html/test.html: Document how to test under debug mode.
+ * docs/html/17_intro/howto.html: Document debug-mode macros.
+ * include/Makefile.am: Install debug-mode headers.
+ * src/Makefile.am: Include debug.cc.
+ * include/bits/basic_string.tcc:
+ (basic_string::_S_construct): Fix NULL pointer check.
+ (__is_null_pointer): New.
+ Add precondition annotations.
+ * include/bits/stream_iterator.h (istream_iterator,
+ ostream_iterator): Added precondition annotations.
+ * include/bits/streambuf_iterator.h (istreambuf_iterator): Ditto.
+ * include/bits/stl_queue.h (queue, priority_queue): Ditto.
+ * include/bits/stl_stack.h (stack): Ditto.
+ * include/bits/basic_string.h (basic_string): Ditto.
+ * include/bits/basic_string.tcc (basic_string): Ditto.
+ * include/std/std_memory.h (auto_ptr): Ditto.
+ * include/std/std_valarray.h (valarray): Ditto.
+ * include/bits/stl_algo.h: Added algorithm precondition
+ annotations.
+ * include/bits/stl_algobase.h: Added algorithm precondition
+ annotations.
+ * include/bits/stl_numeric.h: Ditto.
+ * include/ext/algorithm: Added algorithm precondition
+ annotations.
+ (__is_heap): Moved away from here.
+ * include/bits/stl_heap.h: Added algorithm precondition
+ annotations.
+ (__is_heap): Moved to the top of this file.
+ (__is_heap): Added iterator range overloads.
+ * testsuite/20_util/auto_ptr_neg.cc: Fix line numbers to match up
+ with changes in std_memory.h.
+ * testsuite/23_containers/list/operators/4.cc: Don't verify
+ performance guarantees when in debug mode.
+ * testsuite/23_containers/bitset/invalidation/1.cc: New.
+ * testsuite/23_containers/deque/invalidation/1.cc: New.
+ * testsuite/23_containers/deque/invalidation/2.cc: New.
+ * testsuite/23_containers/deque/invalidation/3.cc: New.
+ * testsuite/23_containers/deque/invalidation/4.cc: New.
+ * testsuite/23_containers/list/invalidation/1.cc: New.
+ * testsuite/23_containers/list/invalidation/2.cc: New.
+ * testsuite/23_containers/list/invalidation/3.cc: New.
+ * testsuite/23_containers/list/invalidation/4.cc: New.
+ * testsuite/23_containers/map/invalidation/1.cc: New.
+ * testsuite/23_containers/map/invalidation/2.cc: New.
+ * testsuite/23_containers/multimap/invalidation/1.cc: New.
+ * testsuite/23_containers/multimap/invalidation/2.cc: New.
+ * testsuite/23_containers/multiset/invalidation/1.cc: New.
+ * testsuite/23_containers/multiset/invalidation/2.cc: New.
+ * testsuite/23_containers/set/invalidation/1.cc: New.
+ * testsuite/23_containers/set/invalidation/2.cc: New.
+ * testsuite/23_containers/vector/invalidation/1.cc: New.
+ * testsuite/23_containers/vector/invalidation/2.cc: New.
+ * testsuite/23_containers/vector/invalidation/3.cc: New.
+ * testsuite/23_containers/vector/invalidation/4.cc: New.
+ * testsuite/25_algorithms/heap.cc: Don't verify
+ performance guarantees when in debug mode.
+ * include/debug/bitset: New.
+ * include/debug/debug.h: New.
+ * include/debug/deque: New.
+ * include/debug/formatter.h: New.
+ * include/debug/hash_map: New.
+ * include/debug/hash_map.h: New.
+ * include/debug/hash_multimap.h: New.
+ * include/debug/hash_set: New.
+ * include/debug/hash_set.h: New.
+ * include/debug/hash_multiset.h: New.
+ * include/debug/list: New.
+ * include/debug/map: New.
+ * include/debug/map.h: New.
+ * include/debug/multimap.h: New.
+ * include/debug/multiset.h: New.
+ * include/debug/safe_base.h: New.
+ * include/debug/safe_iterator.h: New.
+ * include/debug/safe_iterator.tcc: New.
+ * include/debug/safe_sequence.h: New.
+ * include/debug/set: New.
+ * include/debug/set.h: New.
+ * include/debug/string: New.
+ * include/debug/vector: New.
+ * src/debug.cc: New.
+ * config/linker-map.gnu: Add debug mode symbols.
+
+2003-11-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/string-inst.cc: Tweak namespaces.
+ * src/misc-inst.cc: Same.
+ * docs/html/debug.html: Edits.
+ * config/link-map.gnu: Remove cruft.
+
+ * include/bits/c++config: Add in namespace associations.
+ * include/std/std_bitset.h: Adjust namespace to __gnu_norm,
+ comment tweaks.
+ * include/bits/deque.tcc: Same.
+ * include/bits/list.tcc: Same.
+ * include/bits/stl_bvector.h: Same.
+ * include/bits/stl_deque.h: Same.
+ * include/bits/stl_list.h: Same.
+ * include/bits/stl_map.h: Same.
+ * include/bits/stl_multimap.h: Same.
+ * include/bits/stl_multiset.h: Same.
+ * include/bits/stl_set.h: Same.
+ * include/bits/stl_vector.h: Same.
+ * include/bits/vector.tcc: Same.
+
+ * include/std/std_algorithm.h: Remove markup comments.
+ * include/std/std_functional.h: Same.
+ * include/std/std_iterator.h: Same.
+ * include/std/std_numeric.h: Same.
+ * include/std/std_utility.h: Same.
+ * include/bits/stl_queue.h: Formatting tweaks.
+ * include/bits/stl_stack.h: Same.
+ * include/std/std_deque.h: Include debugging version in debug mode.
+ * include/std/std_list.h: Same.
+ * include/std/std_map.h: Same.
+ * include/std/std_set.h: Same.
+ * include/std/std_vector.h: Same.
+ * include/std/std_queue.h: Use deque, vector.
+ * include/std/std_stack.h: Same.
+
+2003-11-09 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (_M_insert_int,
+ _M_insert_float): Move a couple of vars inside an if block.
+
+2003-11-09 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12971
+ * include/bits/locale_facets.tcc
+ (money_put::do_put(..., long double)): Fix conversion
+ specification as per DR 328 [WP].
+ * testsuite/22_locale/money_put/put/char/12971.cc: Add.
+ * testsuite/22_locale/money_put/put/wchar_t/12971.cc: Ditto.
+ * docs/html/ext/howto.html: Add entry for DR 328.
+
+2003-11-08 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12967
+ * include/bits/list.tcc (merge): Implement resolution of
+ DR 300 [WP].
+ * docs/html/ext/howto.html: Add entry for DR 300; tweak entry
+ for DR 231.
+
+ * docs/html/ext/lwg-active.html, docs/html/ext/lwg-defects.html:
+ Import R27.
+
+2003-11-07 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * libsupc++/vec.cc: Conform to C++STYLE.
+
+2003-11-07 Carlo Wood <carlo@alinoe.com>
+
+ PR libstdc++/12736
+ * bits/demangle.h (qualifier_list<Allocator>::decode_KVrA): Added.
+ (qualifier_list<Allocator>::decode_qualifiers): Collect concatenated
+ K, V, r and A qualifiers before processing them as a group.
+ * testsuite/demangle/abi_text/01.cc: Reordered CV-qualifiers.
+ * testsuite/demangle/regression/cw-16.cc: New.
+
+2003-11-07 Robert Millan <robertmh@gnu.org>
+
+ * configure.host: Add kfreebsd*-gnu and knetbsd*-gnu.
+ * crossconfig.m4: Likewise.
+ * configure: Regenerate.
+
+2003-11-07 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h
+ (qualifier_list<Allocator>::decode_qualifiers(string_type&,
+ string_type&, bool member_function_pointer_qualifiers):
+ Always separate the '[' of an array type with a space from
+ what is left of it, except when that is the closing bracket
+ of another array dimension.
+
+2003-11-07 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h
+ (qualifier_list<Allocator>::decode_qualifiers(string_type&,
+ string_type&, bool) const): Made const.
+ (qualifier_list<Allocator>::M_printing_suppressed): Added mutable.
+ (_GLIBCXX_DEMANGLER_DOUT_ENTERING3, _GLIBCXX_DEMANGLER_RETURN3,
+ std::ostream& operator<<(std::ostream&, qualifier const&),
+ std::ostream& operator<<(std::ostream&, qualifier_list const&),
+ qualifier_list<Allocator>::decode_qualifiers(string_type&,
+ string_type&, bool) const,
+ session<Allocator>::decode_type_with_postfix(string_type&,
+ string_type&, qualifier_list<Allocator>*))
+ Added and/or changed debug-only hooks and code.
+
+2003-11-04 Jeffrey D. Oldham <oldham@codesourcery.com>
+
+ * libsupc++/vec.cc (__cxa_vec_delete2): If given a NULL pointer,
+ immediately return. This reflects a C++ ABI change 2003 Nov 03.
+ (__cxa_vec_delete3): Likewise.
+
+2003-11-03 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/12790
+ * include/bits/fstream.tcc: Delete _M_last_overflowed.
+ (basic_filebuf::basic_filebuf): Initialize _M_state_last.
+ (basic_filebuf::open, basic_filebuf::close): Assign
+ _M_state_beg to _M_state_cur and _M_state_last.
+ (basic_filebuf::close): Call _M_terminate_output to handle
+ unshift and flushing.
+ (basic_filebuf::underflow): Assign _M_state_last, throw
+ exception instead of calling abort when codecvt::max_length()
+ is bad.
+ (basic_filebuf::seekoff): Use _M_state_last when calling
+ codecvt::length(), pass correct state to _M_seek.
+ (basic_filebuf::seekpos): Pass __pos.state() to _M_seek.
+ (basic_filebuf::_M_seek): Add __state_type parameter,
+ set _M_state_cur correctly, store the resulting state in
+ the return value and use _M_terminate_output to handle
+ flushing and unshift.
+ (basic_filebuf::_M_terminate_output): Flush contents of
+ output buffer, if any, then call codecvt::unshift as
+ needed and output the result.
+ (basic_filebuf::sync): Move here, don't modify _M_writing
+ or _M_reading.
+
+ * include/std/std_fstream.h
+ (basic_filebuf::_M_state_last): Declare it.
+ (basic_filebuf::_M_last_overflowed): Delete.
+ (basic_filebuf::_M_seek): Add __state_type parameter.
+ (basic_filebuf::sync): Declare only.
+ (basic_filebuf::_M_output_unshift): Delete.
+ (basic_filebuf::_M_terminate_output): Declare it.
+
+ * testsuite/testsuite_character.h:
+ Define character class and state class plus char_traits and
+ codecvt specializations for same for testing support for
+ stateful encodings.
+
+ * testsuite/27_io/basic_filebuf/close/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/close/char/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/close/char/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/close/char/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/close/char/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/open/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc,
+ * testsuite/27_io/basic_filebuf/sync/char/1.cc,
+ * testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc:
+ New tests.
+
+ * testsuite/27_io/basic_filebuf/3.cc,
+ * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc,
+ * testsuite/27_io/basic_fstream/3.cc,
+ * testsuite/27_io/basic_ifstream/3.cc,
+ * testsuite/27_io/basic_ofstream/3.cc:
+ Use streamoff as off_type and fpos<state_type> as pos_type.
+
+ * testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc,
+ * testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc:
+ Check that sync does *not* set _M_writing to false.
+
+2003-11-03 Anthony Green <green@redhat.com>
+
+ * libmath/stubs.c (sqrtf, sqrtl): Reorder so they appear before
+ they're used.
+
+2003-11-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.h (time_get::_M_extract_name): Add
+ ctype argument.
+ * include/bits/locale_facets.tcc: Same, use it to allow
+ capitalized names.
+
+ * include/bits/fstream.tcc: Spacing tweak.
+ * include/bits/istream.tcc: Same.
+ * include/bits/ostream.tcc: Same.
+
+2003-10-30 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
+ __mod is only assigned, never used its value, remove it.
+
+2003-10-29 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get::do_get_year):
+ Absolutely avoid dereferencing end iterators.
+ (time_put::put): Minor clean up.
+
+ * include/bits/locale_facets.tcc: Cosmetic reformattings.
+
+2003-10-29 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ Revert the last commit, is not correct, sorry.
+
+2003-10-29 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/generic/c_locale.cc: Add back <cmath> and
+ <cstdlib>.
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ Clean up.
+
+2003-10-29 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_put::put): Absolutely
+ avoid dereferencing end iterators; clean up.
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float,
+ num_get::_M_extract_int): Minor tweak.
+
+2003-10-29 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc: Remove some unnecessary
+ includes.
+ * config/locale/generic/c_locale.cc: Include <cerrno> here.
+ * config/locale/gnu/c_locale.cc: Likewise.
+
+2003-10-28 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc
+ (money_get<>::do_get(..., string_type&)): Absolutely avoid
+ dereferencing end iterators; general clean up.
+
+2003-10-28 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get::_M_extract_num):
+ Absolutely avoid dereferencing end iterators.
+ (time_get::_M_extract_name): Likewise.
+
+ * include/bits/locale_facets.tcc
+ (time_get::_M_extract_via_format, case 'e'): Don't try to
+ be smart wrt returning the right __beg in case of parse
+ error, time_get::_M_extract_num must be fixed instead.
+
+2003-10-27 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12778
+ * acinclude.m4 (GLIBCXX_CHECK_LFS): Use the C++ compiler.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-10-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/17_intro/TODO: Add links.
+ * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+ Uncomment.
+
+2003-10-27 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12750
+ * include/bits/locale_facets.tcc
+ (time_get::_M_extract_via_format): Deal with code 'e'.
+ * testsuite/22_locale/time_get/get_date/char/12750.cc: New.
+ * testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Ditto.
+
+ * include/bits/locale_facets.tcc
+ (time_get::_M_extract_via_format): Tweak to absolutely avoid
+ dereferencing end iterators.
+
+ * include/bits/locale_facets.h (__verify_grouping):
+ Const-ify second parameter.
+ * include/bits/locale_facets.tcc (__verify_grouping): Ditto.
+ * src/locale-inst.cc (__verify_grouping): Ditto.
+
+2003-10-27 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ Various things: 1- Avoid absolutely end iterator dereferences;
+ 2- Improve performance-wise the code skipping leading zeros;
+ 3- Fix two bugs wrt early bail out in case of parsing errors
+ (see testcases); 4- General clean up.
+ (num_get::_M_extract_int): Likewise, except 3-. Additionally,
+ use __builtin_expect to favor base 10 inputs.
+ * testsuite/22_locale/num_get/get/char/7.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/7.cc: Ditto.
+
+2003-10-26 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/money_put/put/char/1.cc: Clean up.
+ * testsuite/22_locale/money_put/put/wchar_t/1.cc: Ditto.
+
+2003-10-25 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_int):
+ __pos in only incremented, never used its value, remove it.
+
+2003-10-24 Robert Millan <robertmh@gnu.org>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add kfreebsd*-gnu
+ and knetbsd*-gnu.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(...,
+ long double&): Properly size the temporary buffer.
+ * testsuite/22_locale/money_get/get/char/11.cc: New.
+ * testsuite/22_locale/money_get/get/wchar_t/11.cc: Ditto.
+
+ * include/bits/locale_facets.tcc (num_put::_M_group_int,
+ num_put::_M_group_float, money_put::do_put(..., const
+ string_type&), collate::do_compare, collate::do_transform):
+ Prefer basic_string::data() to c_str() when the '\0'
+ terminator is not really needed.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (__verify_grouping):
+ Prefer '=' to an unnecessary '&='.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
+ Tweak my fix for libstdc++/12657.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(...,
+ string_type&): Minor tweak to the previous commit.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(...,
+ string_type&): Disregard the previous commit: doesn't hurt but
+ doesn't accomplish anything useful either. This is the right
+ one, speeding up greatly the function in case of early fail.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get::do_get(...,
+ string_type&): Move an if block, thus minimizing the amount
+ of code processed anyway when __tmp_units.size() == 0.
+
+2003-10-24 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc
+ (time_get<>::_M_extract_via_format): Deal with case 'C' too,
+ equivalent to 'y'.
+
+2003-10-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/documentation.html: Add a pointer to the doxygen style
+ guide.
+ * docs/html/17_intro/TODO: Update.
+ * docs/html/test.html: Add instructions for running a subset of
+ tests, update.
+
+2003-10-23 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (money_get<>::do_get(...,
+ string_type&)): Use find_first_not_of to strip leading
+ zeros; if __tmp_units == "0" never prefix it with '-';
+ always fail if __tmp_units is empty.
+ * testsuite/22_locale/money_get/get/char/10.cc: New.
+ * testsuite/22_locale/money_get/get/wchar_t/10.cc: Ditto.
+
+2003-10-23 Phil Edwards <phil@codesourcery.com>
+
+ * config/os/vxworks/ctype_noninline.h: Adjust ctor to match
+ 2003-10-21 change.
+
+2003-10-22 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (__int_to_char): Remove
+ the const int parameter.
+ (_M_insert_int): Update caller.
+ * src/locale-inst.cc (__int_to_char): Update instantiations.
+
+2003-10-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.h: Correct byname facets for "C"
+ locale.
+ * config/locale/generic/ctype_members.cc: Same.
+ * config/locale/generic/messages_members.h: Same.
+ * config/locale/gnu/ctype_members.cc: Same.
+ * config/locale/gnu/messages_members.h: Same.
+ * include/bits/codecvt.h: Same.
+ * src/ctype.cc: Same.
+ * testsuite/22_locale/codecvt_byname/1.cc: New.
+ * testsuite/22_locale/collate/1.cc: Edit.
+ * testsuite/22_locale/collate_byname/1.cc: Derivation tests, move to...
+ * testsuite/22_locale/collate_byname/named_equivalence.cc: ...here.
+ * testsuite/22_locale/ctype/1.cc: Derivation tests.
+ * testsuite/22_locale/ctype/11844.cc: Move...
+ * testsuite/22_locale/ctype_base/11844.cc: ...here.
+ * testsuite/22_locale/ctype_base/1.cc: Move mask bits here.
+ * testsuite/22_locale/ctype_byname/1.cc: Name.
+ * testsuite/22_locale/messages_byname/1.cc: New.
+ * testsuite/22_locale/messages_byname/named_equivalence.cc: New.
+ * testsuite/22_locale/moneypunct_byname/1.cc: Derivation test.
+ * testsuite/22_locale/moneypunct_byname/named_equivalence.cc: New.
+ * testsuite/22_locale/numpunct/1.cc: Edit.
+ * testsuite/22_locale/numpunct_byname/2.cc: Move...
+ * testsuite/22_locale/numpunct/members/char/3.cc: ...here.
+ * testsuite/22_locale/numpunct_byname/1.cc: Derivation tests.
+ * testsuite/22_locale/numpunct_byname/named_equivalence.cc: New.
+
+2003-10-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/8610
+ * acinclude.m4 (GLIBCXX_CHECK_INT64_T): New macro,
+ checking for the availability of int64_t.
+ (GLIBCXX_CHECK_LFS): New macro, checking for LFS support.
+ * configure.ac: Call here.
+ * acconfig.h: Add undef for the corresponding symbols.
+ * config/io/basic_file_stdio.cc (__basic_file<char>::open):
+ Depending on _GLIBCXX_USE_LFS, call fopen64 or fopen.
+ (__basic_file<char>::seekoff): Likewise, call lseek64 when
+ available, otherwise lseek, checking the __off parameter.
+ * include/bits/postypes.h: Typedef __streamoff_base_type
+ to int64_t if available, otherwise long long.
+ * aclocal.m4: Regenerate.
+ * config.h.in: Likewise.
+ * configure: Likewise.
+
+ * acinclude.m4 (GLIBCXX_CHECK_POLL, GLIBCXX_CHECK_WRITEV):
+ Use AC_TRY_LINK instead of AC_TRY_COMPILE.
+
+2003-10-22 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12657
+ * include/bits/basic_ios.tcc (copyfmt(const basic_ios&)):
+ Implement resolution of DR 292 (WP).
+ * docs/html/ext/howto.html: Add entry for DR 292.
+
+2003-10-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/mt_allocator.h: Change include to gthr.h.
+ * include/ext/rope: Same. Add _Refcount_base definitions.
+ * include/ext/pool_allocator.h: Adjust namespaces.
+ * include/bits/stl_threads.h (_Refcount_base): Move.
+ Put remaining into namespace __gnu_cxx.
+
+2003-10-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/9858
+ * include/bits/locale_facets.h (ctype<char>): Remove
+ __ctype_abstract_base.
+ (ctype<char>::do_is): Remove.
+ (ctype<char>::do_scan_is): Remove.
+ * src/ctype.cc: Same. Inline the rest.
+ * testsuite/22_locale/ctype/is/char/9858.cc: New.
+ * config/os/aix/ctype_noninline.h: Adjust ctor.
+ * config/os/bsd/freebsd/ctype_noninline.h: Same.
+ * config/os/bsd/netbsd/ctype_noninline.h: Same.
+ * config/os/djgpp/ctype_noninline.h: Same.
+ * config/os/generic/ctype_noninline.h: Same.
+ * config/os/gnu-linux/ctype_noninline.h: Same.
+ * config/os/hpux/ctype_noninline.h: Same.
+ * config/os/irix/irix5.2/ctype_noninline.h: Same.
+ * config/os/irix/irix6.5/ctype_noninline.h: Same.
+ * config/os/mingw32/ctype_noninline.h: Same.
+ * config/os/newlib/ctype_noninline.h: Same.
+ * config/os/qnx/qnx6.1/ctype_noninline.h: Same.
+ * config/os/solaris/solaris2.5/ctype_noninline.h: Same.
+ * config/os/solaris/solaris2.6/ctype_noninline.h: Same.
+ * config/os/solaris/solaris2.7/ctype_noninline.h: Same.
+ * config/os/windiss/ctype_noninline.h: Same.
+
+2003-10-21 Paolo Carlini <pcarlini@suse.de>
+
+ * src/locale.cc: Tweak a comment.
+ * src/localename.cc: Move a comment.
+
+2003-10-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/10081
+ * testsuite_hooks.h: Add pod_type, ctype and numpunct specializations.
+ * testsuite_hooks.cc: Same.
+ * 22_locale/numpunct/members/pod/1.cc: Edit.
+ * 22_locale/numpunct/members/pod/2.cc: Same.
+ * 27_io/basic_istream/sentry/char/3983-fstream.cc: Move ...
+ * 27_io/basic_istream/sentry/char/3983-sstream.cc: Move ...
+ * 27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc: Here.
+ * 27_io/basic_istream/extractors_character/pod/3983-2.cc: Here.
+ * 27_io/basic_istream/extractors_other/pod/3983-3.cc: Here.
+ * 27_io/basic_ostream/sentry/char/3983-fstream.cc: Remove.
+ * 27_io/basic_ostream/sentry/char/3983-sstream.cc: Remove.
+ * 27_io/basic_istream/sentry/pod/1.cc: New.
+ * 27_io/basic_ostream/sentry/pod/1.cc: New.
+ * 21_strings/basic_string/inserters_extractors/pod/10081-in.cc: New.
+ * 21_strings/basic_string/inserters_extractors/pod/10081-out.cc: New.
+
+2003-10-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * config/cpu/mips/atomicity.h (__atomic_add): Use _ABIO32 instead
+ of external _MIPS_SIM_ABI32.
+
+2003-10-20 Phil Edwards <phil@codesourcery.com>
+
+ * configure.ac: Fix comment typo.
+ * configure.host: Add vxworks to host_os switch.
+ * crossconfig.m4: Remove old commented os_include_dir variables
+ left over from autotools transition.
+ (*-vxworks): New stanza.
+ (*-windiss): Add missing symbols.
+ * configure: Regenerate.
+ * config/os/vxworks/ctype_base.h, config/os/vxworks/ctype_inline.h,
+ config/os/vxworks/ctype_noninline.h, config/os/vxworks/os_defines.h:
+ New files.
+ * config/os/windiss/os_defines.h: Define __C9X__.
+
+2003-10-19 David Edelsohn <edelsohn@gnu.org>
+
+ PR other/12506
+ * configure.host (aix4,aix*): Define os_include_dir to os/generic.
+
+2003-10-18 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/locale.cc (locale::_S_initialize): Re-apply workaround a
+ confusion of the use of the gthr API when __gthread_active_p()
+ returns true.
+
+2003-10-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/Makefile.am: Add new files.
+ * src/Makefile.in: Regenerate.
+ * src/globals.cc: Split into..
+ * src/globals_io.cc: New.
+ * src/globals_locale.cc: New.
+ * src/ios.cc: Split into...
+ * src/ios_init.cc: New.
+ * src/ios_locale.cc: New.
+ * src/locale-inst.cc: Split into..
+ * src/wlocale-inst.cc: New.
+ * src/locale-misc-inst.cc: New.
+ * src/locale.cc, src/localename: Split into...
+ * src/locale_facets.cc: New.
+ * src/locale_init.cc: New.
+ * src/wstring-inst.cc: Add copyright info.
+
+2003-10-16 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/11450
+ PR libstdc++/11543
+ PR libstdc++/12065
+ * config/io/basic_file_stdio.cc (__basic_file::seekoff):
+ Change return value from streampos to streamoff.
+ (__basic_file::seekpos): Delete.
+ * config/io/basic_file_stdio.h: Same.
+ * config/io/c_io_stdio.h: Remove streamoff and wstreamsize typedefs.
+ * include/Makefile.am (bits_headers): Add bits/postypes.h.
+ * include/bits/char_traits.h: Include bits/postypes.h instead of
+ bits/fpos.h.
+ * include/bits/fstream.tcc (basic_filebuf::open,
+ basic_filebuf::pbackfail): Don't use < or >= to compare pos_type
+ values, use == and != instead.
+ (basic_filebuf::_M_seek): Use explicit conversion from streamoff
+ to pos_type.
+ (basic_filebuf::imbue): Don't use ! on pos_type values, use
+ == instead. Don't use __check_facet(_M_codecvt) unless is_open().
+ * include/bits/postypes.h: New file.
+ Add __streamoff_base_type typedef, streamsize.
+ (streamoff, streampos, wstreampos): Define typedefs, with
+ streamoff defined as...
+ (streamoff): New class. Document implementation defined
+ aspects.
+ (fpos): New implementation. Document implementation defined
+ aspects.
+ * include/bits/sstream.tcc (basic_stringbuf::seekpos): Use
+ explicit conversion from pos_type to off_type.
+ * include/std/std_iosfwd.h: Include bits/postypes.h instead
+ of bits/fpos.h.
+ * testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: New test.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: New test.
+ * testsuite/27_io/fpos/11450.cc: New test.
+ * testsuite/27_io/fpos/mbstate_t/12065.cc: New test.
+ * testsuite/27_io/fpos/mbstate_t/4_neg.cc: New test.
+ * testsuite/27_io/types/3.cc: New test.
+
+2003-10-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.host: Remove fpos_include_dir.
+ * configure.ac: Remove FPOS_INC_SRCDIR.
+ * configure: Regenerate.
+ * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Remove FPOS_H.
+ * aclocal.m4: Regenerate.
+ * include/Makefile.am (host_headers): Remove fpos.h.
+ (bits_headers): Add postypes.h.
+ * include/Makefile.in: Regenerate.
+ * config/os/gnu-linux/fposh: Remove.
+ * config/os/generic/fpos.h: Remove.
+
+ * testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Fixup.
+ * testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Same.
+ * testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Same.
+ * testsuite/27_io/basic_istream/seekg/char/2.cc: Same.
+ * testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Same.
+ * testsuite/27_io/basic_stringbuf/seekpos/char/1.cc: Same.
+ * testsuite/27_io/fpos/mbstate_t/3.cc: Same.
+ * testsuite/27_io/objects/char/10.cc: Same.
+
+2003-10-16 Paolo Carlini <pcarlini@suse.de>
+
+ * src/locale.cc (locale::locale(const char*)): ... one
+ more comparison missed in the previous commit.
+
+2003-10-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acconfig.h: Add HAVE_DRAND48.
+ * crossconfig.m4: Remove ISATTY.
+ * aclocal.m4: Regenerated.
+ * config.h.in: Regenerated.
+ * configure: Regenerated.
+
+2003-10-16 Bernardo Innocenti <bernie@develer.com>
+
+ * config/cpu/m68k/atomicity.h (__exchange_and_add): Use TAS on
+ __mcf5400__. Don't rely on __mc68000__ to detect a bare 68000.
+ Document SMP safeness of asm macros.
+
+2003-10-16 Paolo Carlini <pcarlini@suse.de>
+
+ * src/locale.cc (locale::locale(const char*)): Tweak
+ a couple of comparisons to use basic_string operators.
+
+2003-10-16 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/12540
+ * config/locale/gnu/monetary_members.cc
+ (moneypunct<wchar_t, true/false>::_M_initialize_moneypunct):
+ Don't leak memory if new throws.
+ * src/locale.cc (locale::locale(const char*)): In order not
+ to leak memory in case new throws, use a basic_string type
+ for __res too and avoid strdup.
+
+2003-10-14 Jeff Bailey <jbailey@nisa.net>
+
+ PR libstdc++/12562
+ * crossconfig.m4: Share the config between *-linux* and *-gnu*.
+ * configure: Regenerate.
+
+2003-10-14 Carlo Wood <carlo@alinoe.com>
+
+ PR libstdc++/12600
+ * include/bits/demangle.h (session<Allocator>::
+ decode_unqualified_name(string_type& output)): Fail on a
+ <operator-name> when decoding <template-argument>.
+ * testsuite/demangle/regression/cw-15.cc: New.
+
+2003-10-14 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11480
+ * include/bits/stl_algo.h (unique): Fix.
+ * testsuite/25_algorithms/unique.cc: Move to unique/1.cc.
+ * testsuite/25_algorithms/unique/11480.cc: New, from the PR.
+ * testsuite/25_algorithms/unique/2.cc: New.
+
+2003-10-14 Paolo Carlini <pcarlini@unitus.it>
+
+ * src/localename.cc (_M_replace_categories, M_replace_facet):
+ Const-ify a couple of variables.
+
+2003-10-14 Petur Runolfsson <peturr02@ru.is>
+ Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/locale.cc (locale::_S_initialize): Workaround a confusion
+ of the use of the gthr API when __gthread_active_p() returns true.
+
+2003-10-12 Petur Runolfsson <peturr02@ru.is>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11460
+ * src/strstream.cc (pbackfail): Fix to use to_int_type.
+ * testsuite/backward/11460.cc: New, from the PR.
+
+2003-10-12 Paolo Carlini <pcarlini@unitus.it>
+
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h:
+ Change #ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS to a comment.
+ * include/bits/basic_string.tcc: Likewise.
+ * include/bits/ios_base.h: Likewise.
+ * include/bits/istream.tcc: Likewise.
+ * include/bits/locale_facets.tcc: Likewise.
+ * include/bits/ostream.tcc: Likewise.
+ * include/bits/stl_function.h: Likewise.
+ * include/bits/stl_multiset.h: Likewise.
+ * include/bits/stl_pair.h: Likewise.
+ * include/bits/stl_set.h: Likewise.
+ * include/bits/streambuf_iterator.h
+ * include/std/std_iosfwd.h: Likewise.
+ * include/std/std_istream.h: Likewise.
+ * include/std/std_sstream.h: Likewise.
+ * include/std/std_streambuf.h: Likewise.
+ * src/ios.cc: Likewise.
+ * include/bits/c++config:
+ Comment out #define _GLIBCXX_RESOLVE_LIB_DEFECTS 1.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Tweak a
+ dg-error directive due to removal of a blank line.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+
+2003-10-12 Andreas Tobler <a.tobler@schweiz.ch>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11844/11740 (cont)
+ * config/os/generic/ctype_inline.h (ctype<char>::is):
+ Generically, use a bitmasksize of 15 (instead of 10);
+ Fix the logic to actually return (M & m) != 0 as per
+ 22.2.1.1.2.
+
+2003-10-11 Bernardo Innocenti <bernie@develer.com>
+
+ * crossconfig.m4 (*-uclinux*): New target.
+ * configure: Regenerate.
+
+2003-10-10 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT))
+ Avoid unnecessarily calling __builtin_alloca and dealing
+ explicitly with width() smaller than zero.
+ (operator<<(basic_ostream&, char), operator<<(basic_ostream&,
+ const _CharT*), operator<<(basic_ostream<_CharT, _Traits>&,
+ const char*), operator<<(basic_ostream<char, _Traits>&,
+ const char*), operator<<(basic_ostream, const basic_string&)):
+ Likewise.
+
+2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Make more *_type_info bits visible.
+ Move new/delete bits back into GLIBCXX space.
+
+ * include/bits/locale_classes.h: Move _M_id out of line, so that
+ locale::id::_S_highwater can be removed from the export list.
+ * src/locale.cc (locale::id::_M_id): Define.
+
+2003-10-09 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libstdc++.exp: Set LD_LIBRARY_PATH_64 for
+ SPARC64.
+
+2003-10-09 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11844
+ * config/os/aix/ctype_base.h: Fix 'alnum' and 'graph'
+ to conform to the requirements of 22.2.1.
+ * config/os/bsd/freebsd/ctype_base.h: Likewise.
+ * config/os/djgpp/ctype_base.h: Likewise.
+ * config/os/generic/ctype_base.h: Likewise.
+ * config/os/gnu-linux/ctype_base.h: Likewise.
+ * config/os/hpux/ctype_base.h: Likewise.
+ * config/os/irix/irix6.5/ctype_base.h: Likewise.
+ * config/os/solaris/solaris2.6/ctype_base.h: Likewise.
+ * config/os/solaris/solaris2.7/ctype_base.h: Likewise.
+ * testsuite/22_locale/ctype/11844.cc: New.
+
+ * config/locale/generic/ctype_members.cc (do_is):
+ Generically, use a bitmasksize of 15 (instead of 10), since
+ we don't know the numerical encoding of the various categories
+ in the underlying /usr/include/ctype.h.
+
+2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/string-inst.cc: Prune.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-10-09 Petur Runolfsson <peturr02@ru.is>
+
+ * src/io-inst.cc: Don't include iostream.
+ * include/bits/ios_base.h (ios_base::failure): Use string.
+ * src/Makefile.am: Add ios_failure.cc.
+ * src/Makefile.in: Regenerate.
+ * src/ios.cc: Move ios_base::failure definitions to...
+ * src/ios_failure.cc: ...here. New.
+
+2003-10-09 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9874
+ * include/bits/fstream.tcc (basic_filebuf::seekoff):
+ Move code needed for both seekoff and seekpos...
+ (basic_filebuf::_M_seek): ...here. New function.
+ (basic_filebuf::seekpos): Don't call seekoff, call _M_seek.
+ * include/std/std_fstream.h (basic_filebuf::_M_seek): Declare it.
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: New test.
+
+ * testsuite/22_locale/locale/cons/12438.cc: Increase memory limit.
+
+2003-10-08 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc: More minor cosmetic
+ changes and const-ifications of some variables.
+
+2003-10-07 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc: Minor cosmetic changes
+ and const-ifications of some variables.
+
+ * include/bits/locale_facets.tcc
+ (money_get::do_get(..., string_type&)): Simplify an if-else.
+
+2003-10-06 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11740
+ * config/locale/gnu/ctype_members.cc (ctype<wchar_t>::do_is):
+ Fix to actually return (M & m) != 0 as per 22.2.1.1.2.
+ * config/locale/generic/ctype_members.cc: Same.
+ * testsuite/22_locale/ctype/is/wchar_t/11740.cc: New.
+
+2003-10-06 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc (__pad<>::_S_pad):
+ Improve performance-wise: avoid one traits::copy, avoid
+ the __builtin_alloca, streamline.
+
+2003-10-05 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc
+ (num_put::do_put(..., bool)): Prefer ?: to if-else.
+ (time_get::_M_extract_name): Qualify min with std::.
+ (__pad<>::_S_pad): Constify two variables; simplify an
+ if-else statement factoring out some code.
+
+ * include/bits/locale_facets.tcc: Minor cosmetic changes.
+
+2003-10-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ Constify a couple of variables.
+ (num_get::do_get(..., bool&)): Constify __c; prefer *__beg,
+ ++__beg to *__beg++.
+
+2003-10-04 Paolo Carlini <pcarlini@unitus.it>
+ Petur Runolfsson <peturr02@ru.is>
+
+ * include/ext/stdio_sync_filebuf.h: Don't include the whole
+ <fstream>, only <streambuf> and <cstdio>.
+
+2003-10-04 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12206
+ * include/bits/fstream.tcc (imbue): In case a codecvt facet
+ is not available, set _M_codecvt = 0.
+ * testsuite/27_io/basic_filebuf/imbue/12206.cc: New.
+
+2003-10-02 Harald Boehme <boehme@informatik.hu-berlin.de>
+
+ PR libstdc++/12451
+ * libsupc++/cxxabi.h: Move forward declaration of __class_type_info.
+
+2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_classes.h (locale::facet::_S_get_c_name): Add.
+ * src/locale.cc: Define.
+ * src/localename.cc: Use it.
+ * config/locale/generic/time_members.h: Same.
+ * config/locale/gnu/messages_members.h: Same.
+ * config/locale/gnu/time_members.h: Same.
+
+2003-10-02 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12232
+ * include/bits/fstream.tcc (seekoff): Ignore the openmode
+ argument; simplify.
+ * config/io/basic_file_stdio.h (__basic_file<char>::seekoff,
+ seekpos): Remove the openmode argument.
+ * config/io/basic_file_stdio.cc (__basic_file<char>::seekoff,
+ seekpos): Remove redundant placeholder for the openmode argument.
+ * testsuite/27_io/basic_filebuf/seekoff/char/12232.cc: New.
+ * testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Tweak.
+ * testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Likewise.
+
+2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/locale.cc (locale::_S_initialize): Use __gthread_active_p.
+ (locale::facet::_S_get_c_locale): Same.
+
+2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Export _S_get_c_locale instead of
+ _S_c_locale object.
+
+2003-10-02 Petur Runolfsson <peturr02@ru.is>
+
+ * config/locale/generic/c_locale.cc
+ (category_names, locale::_S_categories): Const qualify.
+ * config/locale/gnu/c_locale.cc: Same.
+ * config/locale/generic/time_members.h (__timepunct::__timepunct):
+ Copy string contents before assigning to _M_name_timepunct,
+ qualify strcpy and strlen with std::.
+ * config/locale/gnu/time_members.h: Same.
+ * config/locale/gnu/messages_members.h (messages::messages):
+ Copy string contents before assigning to _M_name_messages,
+ qualify strcpy and strlen with std::.
+ * config/os/gnu-linux/ctype_noninline.h
+ (ctype<char>::classic_table()): Don't call locale::classic().
+ * include/bits/locale_classes.h
+ (locale::_S_categories): Const qualify.
+ (locale::_S_once, locale::_S_initialize_once,
+ locale::facet::_S_once, locale::facet::_S_initialize_once,
+ locale::facet::_S_get_c_locale): Declare.
+ (locale::_S_initialize): Don't define.
+ (locale::facet::_S_c_locale): Make private.
+ (locale::facet::_S_c_name): Same, const qualify.
+ (locale::_Impl::_Impl(facet**, size_t, bool)): Drop unused
+ parameters, add throw() specifier.
+ * include/bits/locale_facets.h (__timepunct::_M_name_timepunct,
+ messages::_M_name_messages): Const qualify.
+ * src/locale.cc
+ (locale::_S_once, locale::facet::_S_once): Define.
+ (locale::classic): Move initialization code...
+ (locale::_S_initialize_once): ...here.
+ (locale::_S_initialize): Call _S_initialize_once through
+ __gthread_once.
+ (locale::facet::_S_initialize_once): Initialize _S_c_locale.
+ (locale::facet::_S_get_c_locale): Call _S_initialize_once through
+ __gthread_once before returning _S_c_locale.
+ * src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool)):
+ Drop unused parameters, add throw() specifier, don't initialize
+ locale::facet::_S_c_locale and _S_c_name.
+
+ * config/locale/generic/messages_members.h:
+ Replace _S_c_locale with _S_get_c_locale().
+ * config/locale/gnu/c_locale.cc: Same.
+ * config/locale/gnu/messages_members.h: Same.
+ * config/locale/gnu/numeric_members.cc: Same.
+ * config/locale/gnu/time_members.cc: Same.
+ * config/os/gnu-linux/ctype_noninline.h: Same.
+ * include/bits/locale_facets.h: Same.
+ * include/bits/locale_facets.tcc: Same.
+ * src/codecvt.cc: Same.
+ * src/ctype.cc: Same.
+
+2003-10-02 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h (demangle<Allocator>::symbol(char const*)):
+ Decode symbols that start with _GLOBAL_[ID]_ differently: the
+ trailing part ends with a terminating zero and is not necessarily an
+ encoding.
+ * src/demangle.cc (): Same.
+ * testsuite/demangle/regression/cw-13.cc: Adjust for new output.
+
+2003-10-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/22_locale/locale/cons/12438.cc: Use
+ __gnu_test::try_named_locale("").
+
+2003-10-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * linkage.m4 (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0): Define.
+ (GLIBCXX_CHECK_STDLIB_SUPPORT): Use it to test for lrand48
+ instead of drand48.
+ * acconfig.h (HAVE_DRAND48): Renamed to HAVE_LRAND48.
+ * crossconfig.m4 (*-freebsd*): Define HAVE_LRAND48 instead of
+ HAVE_DRAND48.
+ * config.h.in, configure: Regenerate.
+ * include/bits/stl_algo.h: Use _GLIBCXX_HAVE_LRAND48 to guard
+ lrand48 use.
+
+2003-10-01 Nathan Myers <ncm@cantrip.org>
+
+ * include/bits/locale_facets.tcc (time_put::put): Avoid
+ expensive *__s++, in favor of *__s, ++__s.
+
+2003-10-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc (time_put::put): Minor
+ tweak to the previous commit.
+
+2003-10-01 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12439
+ * include/bits/locale_facets.tcc (time_put::put): Deal
+ with the three issues pointed out by the PR.
+ * testsuite/22_locale/time_put/put/char/12439_1.cc: New.
+ * testsuite/22_locale/time_put/put/char/12439_3.cc: New.
+ * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc: New.
+ * testsuite/22_locale/time_put/put/wchar_t/12439_2.cc: New.
+ * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc: New.
+
+2003-09-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_algo.h: Minor cosmetic reformattings.
+
+2003-09-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_algo.h (search_n): Tweak, to spare the
+ first --__n.
+
+2003-09-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/22_locale/locale/cons/12352.cc: Explicitly
+ qualify exception name.
+
+2003-09-30 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12438
+ * include/bits/locale_facets.tcc (locale::combine): Don't
+ leak memory if _M_replace_facet throws.
+ * testsuite/22_locale/locale/cons/12438.cc: New, from the PR.
+
+ * include/bits/locale_classes.h (locale::locale(const locale&,
+ _Facet*)): Tweak, use consistently _M_remove_reference.
+
+2003-09-30 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12352 (cont)
+ * src/localename.cc (locale::_Impl::_Impl(const char*, size_t)):
+ Don't leak __cloc; don't leak if any of the _M_init_facet(...)
+ calls fail.
+ (locale::_Impl::_Impl(const _Impl&, size_t)): Tweak.
+ (locale::_Impl::~_Impl): Don't do anything if !_M_facets,
+ !_M_caches, !_M_names.
+
+2003-09-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.host: Handle Solaris 2.5 micro releases explicitly.
+ Remove wildcards from Solaris 2.6, 7-9: there were no
+ micro releases.
+ Treat Solaris 10 and up like 7-9.
+
+2003-09-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_algo.h (search_n): Improve the previous
+ fix as suggested by Martin.
+
+2003-09-29 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12296
+ * include/bits/istream.tcc (peek): Set eofbit if sgetc
+ returns eof.
+ * testsuite/27_io/basic_istream/peek/char/12296.cc:
+ New, from the PR.
+
+2003-09-29 Nathan Myers <ncm@cantrip.org>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11400
+ * include/bits/stl_algo.h (search_n):
+ Use iterator_traits<>::difference_type for __n.
+ * testsuite/25_algorithms/search_n/11400.cc: New, from the PR.
+
+2003-09-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/22_locale/locale/cons/12352.cc:
+ Use __attribute__((unused)) for test.
+
+2003-09-26 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * testsuite/22_locale/time_put/put/char/2.cc (test_02): Allow either
+ "Son" or "So" as abbreviated name for Sunday in de_DE locale.
+ * testsuite/22_locale/time_put/put/wchar_t/2.cc (test_02): Likewise.
+
+2003-09-26 Brad Spencer <spencer@infointeractive.com>
+
+ * testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc:
+ Explicitly qualify exceptions.
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Same.
+ * testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
+
+2003-09-25 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/12352
+ * src/localename.cc (locale::_Impl::_Impl(const _Impl&,
+ size_t)): Don't leak if memory allocations for _M_facets,
+ _M_caches, and _M_names fail.
+ (locale::_Impl::_Impl(const char*, size_t)): Ditto.
+ (locale::_Impl::_M_replace_categories(const _Impl*,
+ category)): Ditto.
+ (locale::_Impl::_M_install_facet(const locale::id*,
+ const facet*)): Ditto.
+ * include/bits/locale_classes.h (locale::locale(const locale&,
+ _Facet*)): Don't leak memory.
+ * testsuite/22_locale/locale/cons/12352.cc: New, from the PR.
+
+ * src/localename.cc (locale::_Impl::_Impl(facet**, size_t,
+ bool)): Qualify with std:: strcpy, tweak.
+ * include/bits/locale_classes.h
+ (locale::_Impl::_M_check_same_name): Qualify strcmp.
+
+2003-09-25 Brad Spencer <spencer@infointeractive.com>
+
+ PR libstdc++/6072
+ * acinclude.m4: Split out checks for vfwscanf, vswscanf, vwscanf,
+ wcstof, iswblank.
+ * aclocal.m4: Regenerate.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * crossconfig.m4: Add in wchar_t bits for solaris crosses.
+ * config/io/basic_file_stdio.cc: Guard unistd.h.
+ * include/c_compatibility/wchar.h: Guard extra wchar_t functionality.
+ * include/c_std/std_cwchar.h: Same.
+ * include/c_std/std_cwctype.h: Same.
+
+2003-09-25 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/11065
+ * config/locale/gnu/ctype_members.cc (ctype<wchar_t>::do_is): Fix.
+ * config/locale/generic/ctype_members.cc: Same.
+ * testsuite/22_locale/ctype/is/char/1.cc: Initialize mask.
+ * testsuite/22_locale/ctype/is/wchar_t/1.cc: Same.
+
+ * config/os/generic/ctype_inline.h: Update.
+
+2003-09-25 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/Makefile.am (version_dep): New variable.
+ (libstdc___la_DEPENDENCIES): Use it to add dependency on
+ libstdc++-symbol.ver only when using symbol versioning.
+ * src/Makefile.in: Regenerate.
+
+2003-09-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.tcc: Tweak to avoid warnings.
+ * testsuite/testsuite_hooks.h: Same.
+ * testsuite/*/*.cc: Same.
+
+2003-09-22 Petur Runolfsson <peturr02@ru.is>
+
+ * include/bits/istream.tcc (basic_istream::read,
+ basic_istream::readsome, basic_istream::putback,
+ basic_istream::unget, operator>>(basic_istream, CharT)):
+ Avoid redundant setstate(failbit) calls when sentry::operator bool()
+ returns false.
+
+2003-09-22 Carlo Wood <carlo@alinoe.com>
+
+ PR libstdc++/12365
+ * include/bits/demangle.h (qualifier(int, cv_qualifier_nt,
+ char const*, int, int)): Remove unused identifier
+ cv_qualifier for overloaded constructor.
+
+2003-09-18 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/11504
+ * acinclude.m4 (GLIBCXX_EXPORT_FLAGS): Add -Wcast-qual to
+ WARN_FLAGS, remove -Wno-format.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-09-18 Petur Runolfsson <peturr02@ru.is>
+
+ * config/io/basic_file_stdio.cc (sys_getc, sys_ungetc): Delete.
+ * config/io/basic_file_stdio.h: Same.
+ * include/std/std_fstream.h (__ctype_type): Delete.
+ * include/std/std_streambuf.h (__ctype_type, __state_type): Delete.
+
+2003-09-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/12239
+ * configure.host (abi_baseline_pair): Error out on solaris2
+ configurations without a minor version number.
+
+2003-09-13 Phil Edwards <phil@codesourcery.com>
+
+ * docs/doxygen/run_doxygen: Clear GENERATE_TAGFILE entirely
+ if man pages are on.
+ * docs/doxygen/user.cfg.in: And here.
+
+2003-09-10 Daniel Jacobowitz <drow@mvista.com>
+ Andreas Jaeger <aj@suse.de>
+
+ PR libstdc++/12189
+ * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Don't build
+ abi_check if cross compiling.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-09-10 Jeffrey D. Oldham <oldham@codesourcery.com>
+
+ * libsupc++/vec.cc (__cxa_vec_new2): If the allocator returns
+ NULL, return NULL. This reflects a C++ ABI change 2003 Sep 05.
+ (__cxa_vec_new3): Likewise.
+
+2003-09-10 Petur Runolfsson <peturr02@ru.is>
+
+ * include/bits/fstream.tcc (basic_filebuf::seekoff):
+ Use codecvt::length to handle variable-width stateless encodings
+ correctly.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: New test.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc: New test.
+
+2003-09-10 Alan Modra <amodra@bigpond.net.au>
+
+ * config/io/basic_file_stdio.cc (_M_open_mode): Assign __p_mode
+ rather than or'ing.
+
+2003-09-09 Alan Modra <amodra@bigpond.net.au>
+
+ * configure: Regenerate.
+
+2003-09-09 David Edelsohn <edelsohn@gnu.org>
+
+ * src/ios.cc (ios_base::Init::Init): Remove unnecessary
+ qualifier from _S_synced_with_stdio.
+
+2003-09-09 Bernardo Innocenti <bernie@develer.com>
+
+ * include/c_std/std_cstdlib.h: Avoid using missing C library symbols.
+
+2003-09-04 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9028
+ * include/bits/fstream.tcc
+ (basic_filebuf::_M_destroy_internal_buffer): Destroy _M_ext_buf.
+ (basic_filebuf::basic_filebuf): Initialize _M_ext_buf,
+ _M_ext_buf_size, _M_ext_next and _M_ext_end.
+ (basic_filebuf::underflow): Handle variable-width stateless
+ encodings (codecvt::encoding() == 0), including UTF-8.
+ * include/std/std_fstream.h (basic_filebuf):
+ Declare _M_ext_buf, _M_ext_buf_size, _M_ext_next, _M_ext_end.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc: New test.
+ * testsuite/27_io/objects/wchar_t/12.cc: New test.
+ * testsuite/27_io/objects/wchar_t/13.cc: New test.
+
+2003-09-04 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/faq/index.html: Note that a namespace alias can't be
+ used when specialising templates in extension namespace.
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-09-03 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/12048
+ * include/ext/stdio_sync_filebuf.h
+ (stdio_sync_filebuf::_M_unget_buf): Declare it.
+ (stdio_sync_filebuf::stdio_sync_filebuf): Initialize _M_unget_buf.
+ (stdio_sync_filebuf::uflow): Store the returned character in
+ _M_unget_buf.
+ (stdio_sync_filebuf::pbackfail): If argument is eof(), pass
+ _M_unget_buf to syncungetc(). Set _M_unget_buf to eof().
+ (stdio_sync_filebuf<char>::xsgetn): Store last read character in
+ _M_unget_buf, if any, else eof().
+ (stdio_sync_filebuf<wchar_t>::xsgetn: Store last read character in
+ _M_unget_buf, if any, else eof().
+ * testsuite/27_io/objects/char/12048.cc: Rename to...
+ * testsuite/27_io/objects/char/12048-1.cc: ...this.
+ * testsuite/27_io/objects/char/12048-2.cc: New test.
+ * testsuite/27_io/objects/char/12048-3.cc: New test.
+ * testsuite/27_io/objects/char/12048-4.cc: New test.
+ * testsuite/27_io/objects/char/12048-5.cc: New test. XFAIL.
+ * testsuite/27_io/objects/wchar_t/12048-1.cc: New test.
+ * testsuite/27_io/objects/wchar_t/12048-2.cc: New test.
+ * testsuite/27_io/objects/wchar_t/12048-3.cc: New test.
+ * testsuite/27_io/objects/wchar_t/12048-4.cc: New test.
+ * testsuite/27_io/objects/wchar_t/12048-5.cc: New test. XFAIL.
+ * testsuite/ext/stdio_sync_filebuf_char.cc
+ (test02, test03, test04, test05): New tests.
+ * testsuite/ext/stdio_sync_filebuf_wchar_t.cc
+ (test02, test03, test04, test05): New tests.
+
+2003-09-03 Petur Runolfsson <peturr02@ru.is>
+
+ * docs/html/27_io/howto.html: setbuf(0, 0) has no effect on
+ stringbuf or strstreambuf. Fix typos.
+
+2003-09-02 Phil Edwards <phil@codesourcery.com>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): #define _GLIBCXX_HOSTED
+ appropriately.
+ * config.h.in: Add _GLIBCXX_HOSTED.
+ * libsupc++/eh_term_handler.cc: Test it here; initialize
+ __terminate_handler to std::abort if freestanding.
+ * aclocal.m4, configure: Regenerated.
+ * docs/html/configopts.html: Document --disable-hosted-libstdcxx.
+
+2003-08-29 Nathan Myers <ncm@cantrip.org>
+
+ PR libstdc++/11990
+ * include/bits/locale_facets.tcc (__pad): delete dead code.
+
+2003-08-28 Alan Modra <amodra@bigpond.net.au>
+
+ * configure.ac: Test $with_cross_host against $build_alias, not $build.
+ * configure: Regenerate.
+
+2003-08-27 Petur Runolfsson <peturr02@ru.is>
+
+ * testsuite/27_io/objects/wchar_t/10.cc: Move wcout stuff...
+ * testsuite/27_io/objects/wchar_t/11.cc: ...here. New file.
+
+2003-08-27 Phil Edwards <pme@gcc.gnu.org>
+
+ * Makefile.am: Remove trailing whitespace. Remove needless
+ "foo = @foo@" assignments. Replace direct uses of @foo@ with $(foo).
+ * include/Makefile.am: Likewise.
+ * libmath/Makefile.am: Likewise.
+ * libsupc++/Makefile.am: Likewise.
+ * po/Makefile.am: Likewise.
+ * src/Makefile.am: Likewise.
+ * testsuite/Makefile.am: Likewise.
+
+ * Makefile.in, include/Makefile.in, libmath/Makefile.in,
+ libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+ testsuite/Makefile.in: Regenerated.
+
+2003-08-27 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Change quoting of
+ includedir.
+ * aclocal.m4, configure: Regenerate.
+
+2003-08-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * acinclude.m4: Include no-executables.m4.
+ * configure.ac: Uncomment GCC_NO_EXECUTABLES.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-08-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * acinclude.m4: Don't call AC_ISC_POSIX.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-08-27 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_CONDITIONAL): New macro. Wrap
+ AM_CONDITIONAL. Replace all calls to AM_CONDITIONAL with this one.
+ (GLIBCXX_ENABLE_HOSTED): New macro, sets new variable is_hosted,
+ used elsewhere in this file.
+ (GLIBCXX_EVALUATE_CONDITIONALS): New macro...
+ * configure.ac: ...called here to expand all conditionals.
+ * Makefile.am: Conditionalize SUBDIRS on GLIBCXX_HOSTED.
+ * include/Makefile.am: Remove redundant gxx_include_dir assignment.
+ (install-freestanding-headers): New target, a subset of
+ install-headers. Conditionalize install-data-local on GLIBCXX_HOSTED.
+
+ * aclocal.m4, configure, Makefile.in, include/Makefile.in,
+ libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
+ src/Makefile.in, testsuite/Makefile.in: Regenerated.
+
+2003-08-26 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/run_doxygen: Shell fixes. Remove hardcoded local
+ pathnames from generated tag file.
+
+2003-08-26 Phil Edwards <pme@gcc.gnu.org>
+
+ * Makefile.am: Add comment.
+ * acinclude.m4 (GLIBCXX_CONFIGURE): Set new glibcxx_SUBDIRS and
+ SUBDIRS variables.
+ * configure.ac: Use them both here, instead of hardcoded lists.
+
+ * fragment.am: Add STAMP varaible.
+ * include/Makefile.am: Cosmetic whitespace cleanup. Use $(LN_S)
+ instead of @LN_S@.
+ (stamp-*): Move file creation rule outside of 'if' branches to
+ ensure the stamp-* files are actually updated. Use $(STAMP).
+ * src/Makefile.am: Remove now-nonexistant variable.
+ * libsupc++/Makefile.am: Likewise. Snap the assignment chain
+ for -prefer-pic.
+ * po/Makefile.am: Include same fragment as all the others.
+
+ * aclocal.m4, configure, Makefile.in, include/Makefile.in,
+ libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in: Regenerated.
+
+2003-08-26 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/data/cin_unget-1.txt: New.
+ * testsuite/27_io/objects/char/12048.cc: New.
+
+2003-08-25 Zack Weinberg <zack@codesourcery.com>
+
+ * config/os/hpux/os_defines.h: Unconditionally define
+ _GLIBCXX_GTHREAD_USE_WEAK to 0.
+
+2003-08-19 Geoffrey Keating <geoffk@apple.com>
+
+ * crossconfig.m4 (*-darwin*): Add a large and boring stanza for
+ crosses to Darwin targets.
+ * configure: Regenerate.
+
+2003-08-19 Petur Runolfsson <peturr02@ru.is>
+
+ * include/ext/ropeimpl.h: #include <ostream> instead of <iostream>
+
+2003-08-17 Phil Edwards <pme@gcc.gnu.org>
+
+ * configure.ac: GCC_NO_EXECUTABLES was supposed to be commented
+ in the patch from 3 minutes ago. Boy, is my face red.
+ * configure: At least I remembered to regenerate this.
+
+2003-08-17 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Remove LIBMATH_INCLUDES
+ and LIBSUPCXX_INCLUDES. Re-purpose TOPLEVEL_INCLUDES to refer to
+ things from the top level.
+ * configure.ac (GLIBCXX_IS_NATIVE): Determine earlier and re-order.
+ Comment out the conditionals for CANADIAN and GLIBCXX_BUILD_LIBMATH
+ (currently unused). Strip the fake-VPATH shell fragment from
+ automake-generated rules, if present.
+ * linkage.m4: Add comment.
+
+ * fragment.am: New file, containing factored-out common settings.
+ (AM_CPPFLAGS): Absorb the deprecated INCLUDES variable contents.
+ * Makefile.am: Include fragment.am. Remove common variables.
+ * include/Makefile.am: Likewise.
+ * libmath/Makefile.am: Likewise.
+ * libsupc++/Makefile.am: Likewise.
+ * po/Makefile.am: Likewise. Print rules during check.
+ * src/Makefile.am: Likewise.
+ * testsuite/Makefile.am: Likewise.
+
+ * aclocal.m4, configure, Makefile.in, include/Makefile.in,
+ libmath/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
+ src/Makefile.in, testsuite/Makefile.in: Regenerate.
+
+2003-08-11 John Levon <levon@movementarian.org>
+
+ * docs/html/ext/howto/guide.html (GLIBCXX_FORCE_NEW): Update
+ remaining places for the name change from GLIBCPP_FORCE_NEW
+ to GLIBCXX_FORCE_NEW
+
+2003-08-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/basic_ios.h: Remove *_iter typedefs, change num*
+ typedefs to num_*.
+ * include/bits/basic_ios.tcc: Same.
+ * include/bits/istream.tcc: Same.
+ * include/bits/locale_facets.h: Same.
+ * include/bits/ostream.tcc: Same.
+ * include/std/std_istream.h: Same.
+ * include/std/std_ostream.h: Same.
+ * testsuite/26_numerics/complex_inserters_extractors.cc: Fix.
+
+ * include/ext/rope: Remove build warning.
+
+2003-08-11 Andreas Jaeger <aj@suse.de>
+
+ * include/Makefile.am (stamp-c_base): Add dependency on stamp-bits
+ to make SMP-safe.
+ * include/Makefile.in: Regenerated.
+
+2003-08-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_CONFIGURE): Unprecious CC and CFLAGS
+ when calling AC_PROG_CC.
+ * aclocal.m4, configure: Regenerate.
+
+2003-08-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4: Properly quote variable which will be expanded
+ inside makefiles. Use CXX instead of CC to extract compiler info.
+ * configure.ac (AC_INIT): Use the new 4-arg form to finally get the
+ correct form in PACKAGE.
+ * aclocal.m4, configure: Regenerate.
+
+2003-08-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/Makefile.am (check-abi): Change libstdc++-v3 to libstdc++.
+ (check-abi-verbose): Same.
+ * testsuite/testsuite_performance.h (report_performance): Same.
+
+2003-08-08 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/testsuite_performance.h (__FreeBSD__): Add fake mallinfo.
+
+2003-08-07 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/char_traits.h (char_traits::not_eof): Match operand
+ types in ? :.
+
+2003-08-07 Bernardo Innocenti <bernie@develer.com>
+
+ PR libstdc++/11784
+ * libstdc++-v3/config/cpu/m68k/atomicity.h (__exchange_and_add):
+ Replace variants with new BSET-based version.
+
+2003-08-07 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h: Do not use cctype functions that depend
+ on locale.
+
+2003-08-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * configure.in: Rename...
+ * configure.ac: ...to this.
+ * docs/html/17_intro/porting.texi: Update name.
+
+ * docs/html/17_intro/porting.html: Regenerate.
+ * config.h.in, Makefile.in, include/Makefile.in, libmath/Makefile.in,
+ libsupc++/Makefile.in, po/Makefile.in, src/Makefile.in,
+ testsuite/Makefile.in: Regenerate (picks up new dependancy).
+
+2003-08-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Put down the crack
+ pipe, open the window to let out the fumes, redo the option-handling
+ logic to properly execute the detection test.
+ * aclocal.m4, configure: Regenerate.
+
+2003-08-04 Phil Edwards <pme@gcc.gnu.org>
+
+ Convert to new autotools.
+ * acconfig.h: Update with correct names.
+ * configure.host (ATOMICITYH): Rename to atomicity_include_dir.
+ (qnx6.[12]*): 'q' comes before 's', not after 'w'.
+ * configure.in: Update. Split hardcoded cross-configury settings
+ out to...
+ * crossconfig.m4: ...here. New file. Contents untouched.
+ * acinclude.m4: Reorganize and rewrite as needed. Split large
+ chunks out to...
+ * linkage.m4: ...here. New file. Math and stdlib linkage tests.
+ Contents untouched.
+ * scripts/testsuite_flags.in: Update.
+
+ * Makefile.am: Remove unneeded AUTOMAKE_OPTIONS settings and other
+ variables (already generated by automake).
+ * include/Makefile.am: Ditto.
+ * libmath/Makefile.am: Ditto.
+ * libsupc++/Makefile.am: Ditto.
+ * po/Makefile.am: Ditto.
+ * src/Makefile.am: Ditto.
+
+ * aclocal.m4: Regenerate using new versions.
+ * config.h.in: Ditto.
+ * configure: Ditto.
+ * Makefile.in: Ditto.
+ * include/Makefile.in: Ditto.
+ * libmath/Makefile.in: Ditto.
+ * libsupc++/Makefile.in: Ditto.
+ * po/Makefile.in: Ditto.
+ * src/Makefile.in: Ditto.
+ * testsuite/Makefile.in: Ditto.
+
+2003-08-04 Phil Edwards <pme@gcc.gnu.org>
+
+ * po/libstdc++.pot: Re-extract/regenerate.
+
+2003-08-04 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/Makefile.am (DEJATOOL,EXPECT,RUNTEST,RUNTESTFLAGS):
+ Remove unneeded variable assignments. Leave them for automake.
+ * testsuite/lib/libstdc++-v3.exp: Rename...
+ * testsuite/lib/libstdc++.exp: ...to this. Adjust function names
+ accordingly.
+ * testsuite/libstdc++-v3.dg/dg.exp: Rename...
+ * testsuite/libstdc++-dg/normal.exp: ...to this. Adjust function
+ names accordingly.
+
+2003-08-04 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/guide.html: run_doxygen uses bash.
+ * docs/doxygen/mainpage.html: We'll be shipping tag files.
+ * docs/doxygen/run_doxygen: Tweaks and improvements.
+ * docs/doxygen/user.cfg.in: Set GENERATE_TAGFILE.
+ * docs/html/install.html: Update autoconf/automake requirements.
+ * docs/html/test.html: Add section describing DejaGNU support.
+ * docs/html/17_intro/confdeps.dot: New file, generates...
+ * docs/html/17_intro/confdeps.png: ...this new file.
+ * docs/html/Makefile: Generated here.
+ * docs/html/17_intro/configury.html: New file.
+
+2003-07-31 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/lib/libstdc++-v3-dg.exp: Rename...
+ * testsuite/lib/libstdc++-v3.exp: ...to this.
+ * testsuite/libstdc++-v3.dg/dg.exp: No special case needed now.
+
+2003-07-31 Doug Gregor <dgregor@apple.com>
+
+ Add user specialization tests.
+ * testsuite/23_containers/deque/1.cc: New.
+ * testsuite/23_containers/list/1.cc: New.
+ * testsuite/23_containers/map/1.cc: New.
+ * testsuite/23_containers/multimap/1.cc: New.
+ * testsuite/23_containers/multiset/1.cc: New.
+ * testsuite/23_containers/set/1.cc: New.
+ * testsuite/23_containers/vector/1.cc: New.
+
+2003-07-31 Benjamin Kosnik <bkoz@redhat.com>
+
+ Reshuffle 23_containers testsuite.
+ * 23_containers/adaptors.cc, bitset_ctor.cc,bitset_members.cc,
+ bitset_shift.cc, deque_ctor.cc, deque_operators.cc,
+ list_capacity.cc, list_ctor.cc, list_modifiers.cc, list_operators.cc,
+ map_insert.cc, map_operators.cc, map_operators_neg.cc, multiset.cc,
+ set_operators_neg.cc, vector_bool.cc, vector_capacity.cc,
+ vector_ctor.cc, vector_element_access.cc, vector_modifiers.cc,
+ vector_resize.cc: Split into...
+ * 23_containers/bitset/cons/1.cc: New.
+ * 23_containers/bitset/cons/6282.cc: New.
+ * 23_containers/bitset/count/6124.cc: New.
+ * 23_containers/bitset/operations/1.cc: New.
+ * 23_containers/bitset/operations/2.cc: New.
+ * 23_containers/bitset/test/1.cc: New.
+ * 23_containers/bitset/to_ulong/1.cc: New.
+ * 23_containers/deque/cons/1.cc: New.
+ * 23_containers/deque/cons/2.cc: New.
+ * 23_containers/deque/operators/1.cc: New.
+ * 23_containers/list/capacity/1.cc: New.
+ * 23_containers/list/cons/1.cc: New.
+ * 23_containers/list/cons/2.cc: New.
+ * 23_containers/list/cons/3.cc: New.
+ * 23_containers/list/cons/4.cc: New.
+ * 23_containers/list/cons/5.cc: New.
+ * 23_containers/list/cons/6.cc: New.
+ * 23_containers/list/cons/7.cc: New.
+ * 23_containers/list/cons/8.cc: New.
+ * 23_containers/list/cons/9.cc: New.
+ * 23_containers/list/modifiers/1.cc: New.
+ * 23_containers/list/modifiers/2.cc: New.
+ * 23_containers/list/modifiers/3.cc: New.
+ * 23_containers/list/operators/1.cc: New.
+ * 23_containers/list/operators/2.cc: New.
+ * 23_containers/list/operators/3.cc: New.
+ * 23_containers/list/operators/4.cc: New.
+ * 23_containers/map/insert/1.cc: New.
+ * 23_containers/map/operators/1.cc: New.
+ * 23_containers/map/operators/1_neg.cc: New.
+ * 23_containers/multiset/insert/1.cc: New.
+ * 23_containers/priority_queue/members/7161.cc: New.
+ * 23_containers/queue/members/7157.cc: New.
+ * 23_containers/set/operators/1_neg.cc: New.
+ * 23_containers/stack/members/7158.cc: New.
+ * 23_containers/vector/bool/1.cc: New.
+ * 23_containers/vector/bool/6886.cc: New.
+ * 23_containers/vector/capacity/1.cc: New.
+ * 23_containers/vector/capacity/2.cc: New.
+ * 23_containers/vector/capacity/8230.cc: New.
+ * 23_containers/vector/cons/1.cc: New.
+ * 23_containers/vector/cons/2.cc: New.
+ * 23_containers/vector/cons/3.cc: New.
+ * 23_containers/vector/cons/4.cc: New.
+ * 23_containers/vector/cons/6513.cc: New.
+ * 23_containers/vector/element_access/1.cc: New.
+ * 23_containers/vector/modifiers/1.cc: New.
+ * 23_containers/vector/modifiers/2.cc: New.
+ * 23_containers/vector/resize/1.cc: New.
+
+2003-07-31 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * testsuite/thread/pthread1.cc: Add alpha*-*-osf* to dg-do run,
+ dg-options.
+ * testsuite/thread/pthread2.cc: Likewise.
+ * testsuite/thread/pthread3.cc: Likewise.
+ * testsuite/thread/pthread4.cc: Likewise.
+ * testsuite/thread/pthread5.cc: Likewise.
+ * testsuite/thread/pthread6.cc: Likewise.
+ * testsuite/thread/pthread7-rope.cc: Likewise.
+
+2003-07-30 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/bits/c++config: Partial reversion (comment placement) of
+ previous patch.
+
+2003-07-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config (_GLIBCXX_FULLY_COMPLIANT_HEADERS): Remove.
+ (_GLIBCXX_NO_TEMPLATE_EXPORT): To _GLIBCXX_EXPORT_TEMPLATE.
+ (_GLIBCXX_AT_AT): Remove.
+ (__USE_MALLOC): Remove.
+ * include/std/std_fstream.h: Modify.
+ * include/bits/basic_ios.h: Same.
+ * include/bits/valarray_array.h: Same.
+ * include/c_std/std_cmath.h: Same.
+ * include/c_std/cmath.tcc: Same.
+ * include/std/std_vector.h: Same.
+ * include/std/std_string.h: Same.
+ * include/std/std_stack.h: Same.
+ * include/std/std_queue.h: Same.
+ * include/std/std_list.h: Same.
+ * include/std/std_deque.h: Same.
+ * include/std/std_streambuf.h: Same.
+ * include/std/std_sstream.h: Same.
+ * include/std/std_ostream.h: Same.
+ * include/std/std_istream.h: Same.
+ * include/bits/valarray_array.tcc: Same, format.
+
+ * include/c/std_cctype.h: Fix include guards.
+ * include/c/std_cerrno.h: Same.
+ * include/c/std_cfloat.h: Same.
+ * include/c/std_climits.h: Same.
+ * include/c/std_clocale.h: Same.
+ * include/c/std_cmath.h: Same.
+ * include/c/std_csetjmp.h: Same.
+ * include/c/std_csignal.h: Same.
+ * include/c/std_cstdarg.h: Same.
+ * include/c/std_cstddef.h: Same.
+ * include/c/std_cstdio.h: Same.
+ * include/c/std_cstdlib.h: Same.
+ * include/c/std_cstring.h: Same.
+ * include/c/std_ctime.h: Same.
+ * include/c/std_cwchar.h: Same.
+ * include/c/std_cwctype.h: Same.
+ * include/c_std/cmath.tcc: Same.
+ * include/c_std/std_cmath.h: Same.
+
+2003-07-30 Gawain Bolton <gp.bolton@computer.org>
+
+ PR libstdc++/11504.
+ * include/bits/stl_tree.h: Replace C-style casts with C++-style
+ casts. Changes to avoid casting away constness. Eliminate
+ _Rb_tree_base_iterator class. Change _Rb_tree_iterator to use
+ initialization lists. Move out implementation of __black_count()
+ to...
+ * src/stl_tree.cc: ...here and rename _Rb_tree_black_count().
+ Rename_Rb_tree_base_iterator::_M_increment() to
+ _Rb_tree_increment and _Rb_tree_base_iterator::_M_decrement() to
+ _Rb_tree_decrement.
+ * config/linker-map.gnu: Add and change symbols here.
+
+2003-07-30 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/22_locale/howto.html: Use locale::classic() instead
+ of locale("C").
+
+2003-07-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_hooks.h: Remove list include.
+ (func_callback): Define as unique type, not std::list.
+ Change DEBUG_ASSERT to _GLIBCXX_ASSERT.
+ * testsuite/libstdc++-v3.dg/dg.exp: Same.
+ * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Same.
+ * testsuite/23_containers/bitset_ctor.cc:
+ * testsuite/17_intro/header_ciso646.cc: Remove DEBUG_ASSERT.
+ * testsuite/18_support/numeric_limits.cc: Same.
+ * testsuite/21_strings/basic_string/append/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/append/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/compare/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/compare/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/char/2.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/char/3.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/wchar_t/2.cc: Same.
+ * testsuite/21_strings/basic_string/element_access/wchar_t/3.cc: Same.
+ * testsuite/21_strings/basic_string/find/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/find/char/2.cc: Same.
+ * testsuite/21_strings/basic_string/find/char/3.cc: Same.
+ * testsuite/21_strings/basic_string/find/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/find/wchar_t/2.cc: Same.
+ * testsuite/21_strings/basic_string/find/wchar_t/3.cc: Same.
+ * testsuite/21_strings/basic_string/insert/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/insert/char/2.cc: Same.
+ * testsuite/21_strings/basic_string/insert/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/insert/wchar_t/2.cc: Same.
+ * testsuite/21_strings/basic_string/inserters_extractors/char/1.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/char/4.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/char/5.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/char/6.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/char/7.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc:
+ * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc:
+ * testsuite/21_strings/basic_string/operators/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/operators/char/2.cc: Same.
+ * testsuite/21_strings/basic_string/operators/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/operators/wchar_t/2.cc: Same.
+ * testsuite/21_strings/basic_string/replace/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/char/2.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/char/3.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/wchar_t/1.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: Same.
+ * testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: Same.
+ * testsuite/21_strings/basic_string/substr/char/1.cc: Same.
+ * testsuite/21_strings/basic_string/substr/wchar_t/1.cc: Same.
+ * testsuite/23_containers/bitset_ctor.cc: Same.
+ * testsuite/23_containers/bitset_shift.cc: Same.
+ * testsuite/23_containers/vector_ctor.cc: Same.
+ * testsuite/23_containers/vector_element_access.cc: Same.
+ * testsuite/24_iterators/istreambuf_iterator.cc: Same.
+ * testsuite/24_iterators/iterator.cc: Same.
+ * testsuite/24_iterators/ostreambuf_iterator.cc: Same.
+ * testsuite/25_algorithms/lower_bound.cc: Same.
+ * testsuite/26_numerics/complex_inserters_extractors.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc: Same.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc: Same.
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc: Same.
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc:
+ Same.
+
+2003-07-28 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/user.cfg.in, docs/html/abi.txt, docs/html/debug.html,
+ docs/html/test.html, docs/html/17_intro/headers_cc.txt,
+ docs/html/17_intro/howto.html, docs/html/ext/howto.html: Change
+ GLIBCPP to GLIBCXX (and explain as needed).
+
+2003-07-28 Phil Edwards <pme@gcc.gnu.org>
+
+ * README: Update.
+
+2003-07-28 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/22_locale/messages/members/char/1.cc,
+ testsuite/22_locale/messages/members/char/2.cc,
+ testsuite/22_locale/messages/members/char/3.cc,
+ testsuite/22_locale/messages_byname/1.cc: Update comment regarding
+ the origin of LOCALEDIR.
+ * testsuite/lib/libstdc++-v3.exp: New file.
+
+2003-07-25 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/char_traits.h: Update copyright, tweak.
+ * testsuite/ext/pod_char_traits.cc: Explicitly qualify namespace
+ std types.
+
+2003-07-24 Matt Austern <austern@apple.com>
+
+ * /include/bits/char_traits.h (class char_traits): Put all the
+ real work into the new class template __gnu_cxx::char_traits.
+ Gave generic definitions for member functions. Types are taken
+ from the new class template __gnu_cxx::_Char_types.
+ * testsuite/21_strings/char_traits/requirements/short/1.cc: New
+ file. Test of std::char_traits<short>, which serves as a test of
+ the char_traits primary template.
+
+2003-07-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/*: Change __gnu_cxx_test to __gnu_test.
+
+2003-07-24 Nathan Myers <ncm-nospam@cantrip.org>
+
+ * testsuite/23_containers/map_operators.cc: Conform to
+ container requirement as value must be Assignable.
+
+2003-07-23 Alexandre Oliva <aoliva@redhat.com>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_PCH): Rework test such that it
+ tests not only generation of pch files, but also their use.
+ * aclocal.m4, configure: Rebuilt.
+
+2003-07-23 Steve Ellcey <sje@cup.hp.com>
+
+ * config/cpu/hppa/atomicity.h: Change
+ _GLIBCXX_INST_GLIBCXX_ATOMICITY_LOCK to _GLIBCXX_INST_ATOMICITY_LOCK
+ to match misc-inst.cc
+
+2003-07-23 Steve Ellcey <sje@cup.hp.com>
+
+ * include/c_std/cmath.tcc: Use _GLIBCXX_ prefix on file guard.
+ * include/c_std/std_cctype.h: Ditto.
+ * include/c_std/std_cerrno.h: Ditto.
+ * include/c_std/std_cfloat.h: Ditto.
+ * include/c_std/std_climits.h: Ditto.
+ * include/c_std/std_clocale.h: Ditto.
+ * include/c_std/std_cmath.h: Ditto.
+ * include/c_std/std_csetjmp.h: Ditto.
+ * include/c_std/std_csignal.h: Ditto.
+ * include/c_std/std_cstdarg.h: Ditto.
+ * include/c_std/std_cstddef.h: Ditto.
+ * include/c_std/std_cstdio.h: Ditto.
+ * include/c_std/std_cstdlib.h: Ditto.
+ * include/c_std/std_cstring.h: Ditto.
+ * include/c_std/std_ctime.h: Ditto.
+ * include/c_std/std_cwchar.h: Ditto.
+ * include/c_std/std_cwctype.h: Ditto.
+ * include/std/std_algorithm.h: Ditto.
+ * include/std/std_bitset.h: Ditto.
+ * include/std/std_complex.h: Ditto.
+ * include/std/std_deque.h: Ditto.
+ * include/std/std_fstream.h: Ditto.
+ * include/std/std_functional.h: Ditto.
+ * include/std/std_iomanip.h: Ditto.
+ * include/std/std_ios.h: Ditto.
+ * include/std/std_iosfwd.h: Ditto.
+ * include/std/std_iostream.h: Ditto.
+ * include/std/std_istream.h: Ditto.
+ * include/std/std_iterator.h: Ditto.
+ * include/std/std_limits.h: Ditto.
+ * include/std/std_list.h: Ditto.
+ * include/std/std_locale.h: Ditto.
+ * include/std/std_map.h: Ditto.
+ * include/std/std_memory.h: Ditto.
+ * include/std/std_numeric.h: Ditto.
+ * include/std/std_ostream.h: Ditto.
+ * include/std/std_queue.h: Ditto.
+ * include/std/std_set.h: Ditto.
+ * include/std/std_sstream.h: Ditto.
+ * include/std/std_stack.h: Ditto.
+ * include/std/std_stdexcept.h: Ditto.
+ * include/std/std_streambuf.h: Ditto.
+ * include/std/std_string.h: Ditto.
+ * include/std/std_utility.h: Ditto.
+ * include/std/std_valarray.h: Ditto.
+ * include/std/std_vector.h: Ditto.
+
+2003-07-22 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/basic_string.h (basic_string::insert): Deprecate
+ GNU extension.
+
+2003-07-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * scripts/testsuite_flags.in (--build-includes): Remove extraneous
+ paths for libio.
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
+ (test03): Include typeinfo for bad_cast.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-sstream.cc: Same.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+ * testsuite/27_io/basic_istream/sentry/char/3983-sstream.cc: Same.
+
+2003-07-21 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/boost_concept_check.h:
+ (_EqualityComparableConcept::__constraints): Remove != from the
+ list of constraints; it is not listed in Table 28 of the C++98
+ standard.
+
+2003-07-18 Andreas Jaeger <aj@suse.de>
+
+ * config/abi/sparc-linux-gnu/baseline_symbols.txt: New file.
+ * config/abi/mips-linux-gnu/baseline_symbols.txt: New file.
+ * config/abi/hppa-linux-gnu/baseline_symbols.txt: New file.
+ * config/abi/x86_64-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2003-07-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Add __moneypunct_cache, __timepunct_cache.
+ * config/locale/generic/messages_members.h: Tweaks.
+ * config/locale/generic/monetary_members.cc
+ (moneypunct::_M_initialize_moneypunct): Use cache.
+ (moneypunct::~moneypunct): Delete cache.
+ * config/locale/generic/time_members.cc:
+ (__timepunct::_M_initialize_timepunct): Use cache.
+ * config/locale/generic/time_members.h:
+ (__timepunct::~__timepunct): Delete cache.
+ (__timepunct::__timepunct): Set cache.
+ * config/locale/gnu/messages_members.h: Tweaks.
+ * config/locale/gnu/monetary_members.cc:
+ (moneypunct::_M_initialize_moneypunct): Use cache.
+ (moneypunct::~moneypunct): Delete cache.
+ * config/locale/gnu/time_members.cc:
+ (__timepunct::_M_initialize_timepunct): Use cache.
+ * config/locale/gnu/time_members.h:
+ (__timepunct::~__timepunct): Delete cache.
+ (__timepunct::__timepunct): Set cache.
+ * include/bits/locale_facets.h (__timepunct_cache): New.
+ (__moneypunct_cache): New.
+ * include/bits/locale_facets.tcc: Tweak.
+ * src/locale.cc (__timepunct::_S_timezones): Adjust for cache.
+ * src/locale-inst.cc: Instantiate caches.
+ * src/globals.cc: Add "C" caches.
+ * src/localename.cc: Use external "C" caches.
+
+2003-07-17 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/guide.html: Fix typo.
+
+2003-07-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/pod_char_traits.h: Add state template argument.
+
+2003-07-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.h (__num_base::_S_atoms_in): Add -+xX.
+ (num_get::_M_convert_int): To _M_insert_int.
+ (num_get::_M_convert_float): To _M_insert_float.
+ * include/bits/locale_facets.tcc (num_get::_M_extract_float):
+ Use caches for ctype, num_get.
+ (num_get::_M_extract_int): Same.
+ (num_get::get(bool)): Same.
+ (__verify_grouping): Use size_t.
+ * src/locale-inst.cc: Update.
+ * src/locale.cc: Adjust _S_atoms_in.
+
+2003-07-16 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/mainpage.html: Move building/writing instructions...
+ * docs/doxygen/guide.html: ...to here. New file.
+
+2003-07-16 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/ext/howto.html: Update URL for SGI STL docs.
+ * docs/html/faq/index.html: Same.
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-07-16 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11528
+ * include/bits/locale_facets.tcc (money_get::do_get):
+ Strip only _leading_ zeros.
+ * testsuite/22_locale/money_get/get/char/11528.cc: Add.
+ * testsuite/22_locale/money_get/get/wchar_t/11528.cc: Add.
+
+2003-07-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * include/ext/hash_map (class hash_multimap): Remove extra
+ semicolons from __glibcxx_class_requires3 entries.
+ * include/ext/hash_set (class hash_set): Ditto.
+ (class hash_multiset): Ditto.
+
+2003-07-15 Petur Runolfsson <peturr02@ru.is>
+
+ * include/bits/char_traits.h (char_traits<wchar_t>::move):
+ Change last parameter from int_type to size_t.
+
+2003-07-15 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/stl_algo.h (includes, set_union, set_intersection,
+ set_difference, set_symmetric_difference, max_element, min_element,
+ next_permutation, prev_permutation, find_first_of, find_end):
+ Document.
+ * include/bits/stl_algobase.h (copy,copy_backward): Clarify overlap
+ restrictions in docs.
+ * include/bits/stl_heap.h (push_heap, pop_heap, make_heap, sort_heap):
+ Document.
+ * docs/doxygen/doxygroups.cc (setoperations): New group.
+
+2003-07-15 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/basic_string.h: Document public functions.
+ * docs/doxygen/TODO: Update c21 todo.
+
+2003-07-15 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/stl_list.h: Document more functions.
+ * docs/doxygen/TODO: Update c23 todo.
+
+2003-07-14 Paolo Carlini <pcarlini@unitus.it>
+
+ * config/locale/gnu/c_locale.h (__convert_from_v): One more
+ qualification.
+
+2003-07-14 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_tempbuf.h: Qualify free with std::.
+ * src/locale.cc: Include <cstdlib>, qualify getenv.
+
+2003-07-14 Paolo Carlini <pcarlini@unitus.it>
+
+ * config/locale/gnu/c_locale.h (__convert_from_v): Include
+ <cstdio>. Qualify names.
+ * config/locale/generic/c_locale.h (__convert_from_v): Ditto.
+
+2003-07-14 Paolo Carlini <pcarlini@unitus.it>
+ Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ PR libstdc++/11378
+ * include/std/std_fstream.h (xsputn): Declare only.
+ * include/bits/fstream.tcc (xsputn): Define, optimize for the
+ always_noconv() case: when __n is sufficiently large flush
+ the buffer and issue a direct write, if possible combining the
+ two with writev in __basic_file<>::xsputn_2.
+ * config/io/basic_file_stdio.h (__basic_file<>::xsputn_2):
+ New, declare.
+ * config/io/basic_file_stdio.cc (__basic_file<>::xsputn_2):
+ Define.
+ * acinclude.m4 (GLIBCXX_CHECK_WRITE): New macro, checking for
+ the availability of writev in <sys/uio.h>.
+ * configure.in: Call here.
+ * acconfig.h: Add undef for the corresponding symbol.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Tweak.
+
+ * include/std/std_fstream.h (sync): Constify a variable.
+
+2003-07-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Fix line numbers.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-07-14 Gabriel Dos Reis <gcc@integrable-solutions.net>
+
+ * config/locale/gnu/c_locale.h (__convert_from_v): Include
+ <cstring> and <cstdlib>. Qualify names.
+
+2003-07-13 Mark Mitchell <mark@codesourcery.com>
+
+ * config/locale/generic/c_locale.h: Include <cstdlib> and
+ <cstring>.
+ * include/bits/boost_concept_check.h: Add this-> to unqualified
+ method calls.
+ * include/bits/deque.tcc: Likewise.
+ * include/bits/locale_facets.h : Likewise.
+ * include/bits/ostream.tcc: Likewise.
+ * include/bits/stl_algo.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/stl_tree.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/vector.tcc: Likewise.
+ * include/ext/rope: Likewise.
+ * include/ext/ropeimpl.h: Likewise.
+ * include/ext/stdio_filebuf.h: Likewise.
+
+2003-07-11 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/basic_ios.h (copyfmt): Document.
+ * include/bits/ios_base.h (event, event_callback, register_callback,
+ xalloc, iword, pword): Document.
+ (imbue, ~ios_base): Update docs on callbacks.
+
+2003-07-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCC_ENABLE_SYMVERS): Tweak comments. Add
+ warning messages if the environment cannot support symbol versioning.
+ (port_specific_symbol_file): It's plural, add an 's' on the end.
+ * configure.host: Likewise.
+ * src/Makefile.am: Likewise.
+ * config/linker-map.gnu: Remove one semicolon, heh.
+ * scripts/extract_symvers: Don't assume useful 'export' syntax.
+ Set LANG as well as LC_ALL for possibly-broken sort(1)s.
+ * aclocal.m4, configure, src/Makefile.in: Regenerated.
+
+2003-07-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.tcc: Use function object for
+ __use_cache instead of template function. Partially specialize for
+ __numpunct<_CharT>.
+ * include/bits/locale_classes.h: Update friend declaration for
+ __use_cache.
+ (_M_install_cache): No throw exception specs.
+ * src/locale.cc: Remove __use_cache specializations.
+ * include/ext/pod_char_traits.h (length): Tweak.
+ * include/bits/locale_facets.h (__numpunct_cache): Remove
+ char_type typedef.
+ * testsuite/testsuite_hooks.h (pod_unsigned_int): Remove.
+ (pod_long): Remove.
+ * testsuite/22_locale/numpunct/members/char/cache_1.cc: New.
+ * testsuite/22_locale/numpunct/members/char/cache_2.cc: New.
+ * testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc: New.
+ * testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc: New.
+ * testsuite/22_locale/numpunct/members/pod/1.cc: New.
+ * testsuite/22_locale/numpunct/members/pod/2.cc: New.
+
+2003-07-09 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/ios.cc (_M_grow_words): Fix spelling.
+
+2003-07-09 Gawain Bolton <gp.bolton@computer.org>
+
+ * include/bits/stl_tree.h: Move larger member functions in
+ _Rb_tree_base_iterator and _Rb_tree_node to...
+ * src/stl_tree.cc: Here.
+ * src/Makefile.in: Add stl_tree.cc.
+ * src/Makefile.in: Regenerated.
+ * config/linker-map.gnu: Add symbols here.
+
+2003-07-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/ext/pod_char_traits.cc: New.
+ * include/ext/pod_char_traits.h: New.
+ * include/Makefile.am (ext_headers): Add pod_char_traits.h.
+ * include/Makefile.in: Regenerate.
+ * docs/html/21_strings/howto.html: Update.
+
+2003-07-08 Gawain Bolton <gp.bolton@computer.org>
+
+ * testsuite/performance/list_create_fill_sort.cc: New.
+
+2003-07-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/locale/generic/numeric_members.cc: Correct type info.
+ * config/locale/gnu/numeric_members.cc: Same.
+ * include/bits/locale_facets.h: Same.
+
+ * include/bits/char_traits.h: Correct spacing.
+
+ * src/locale.cc: Wrap to 80 col.
+
+2003-07-07 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_complex.h: Partially revert last
+ changes: cmath functions must not be qualified.
+
+2003-07-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Do not test for binutils
+ 2.11 with globbing backport fix.
+ * aclocal.m4, configure: Regenerated.
+
+2003-07-06 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (xsputn): Don't call _M_destroy_pback:
+ if output is at all possible (!_M_reading), cannot be active.
+
+ * include/std/std_fstream.h: Tweak comments to doxygen style.
+
+2003-07-06 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_classes.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/locale_facets.tcc: Likewise.
+ * src/locale.cc: Likewise.
+ * src/localename.cc: Likewise.
+
+2003-07-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/bits/allocator_traits.h: Fix doxygen markup.
+ * include/ext/mt_allocator.h: Likewise.
+
+2003-07-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/testsuite_hooks.h: Guard against a missing unlink().
+
+2003-07-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Bump minimal version
+ requirement. Add port_specific_symbol_file variable.
+ * configure.host: Add docs for port_specific_symbol_file.
+ Clean up try_cpu block for x86.
+ * config/linker-map.gnu: No more "last symbol can't have a
+ semicolon" kaka. Add hook for port-specific symbols.
+ * src/Makefile.am: Remove trailing whitespace.
+ (libstdc++-symbol.ver): Detect the presence of port-specific
+ symbols, and add them accordingly.
+
+ * docs/html/17_intro/porting.texi: Bring up to date.
+
+ * src/Makefile.in, aclocal.m4, configure,
+ docs/html/17_intro/porting.html: Regenerated.
+
+2003-07-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * scripts/create_testsuite_files: New file.
+ * testsuite/Makefile.am (all-local, check-performance): Use it.
+ * testsuite/lib/libstdc++-v3-dg.exp (v3-computer-tests): Remove.
+ * testsuite/Makefile.in: Regenerated.
+
+ * testsuite/performance/filebuf_sputc.cc: Remove the temporary
+ files at the end.
+ * testsuite/performance/fstream_seek_write.cc: Likewise.
+ * testsuite/performance/ofstream_insert_float.cc: Likewise.
+ * testsuite/performance/ofstream_insert_int.cc: Likewise.
+ * testsuite/abi_check.cc (main): Nicer spacing in usage output.
+
+2003-07-05 Gawain Bolton <gp.bolton@computer.org>
+
+ * include/bits/stl_list.h: Performance and memory usage
+ improvements. In particular, the behaviour of the constructor and
+ destructor as the list header node is no longer dynamically
+ allocated/de-allocated.
+ * include/bits/list.tcc: Likewise.
+
+2003-07-05 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_complex.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/std/std_memory.h: Likewise.
+ * include/std/std_valarray.h: Likewise.
+
+2003-07-05 Gawain Bolton <gp.bolton@computer.org>
+
+ * include/bits/stl_tree.h: _Rb_tree_rebalance(): Add local
+ variable for grandparent and use const
+
+2003-07-05 David Billinghurst <David.Billinghurst@riotinto.com>
+
+ * testsuite/27_io/basic_filebuf/close/char/4879.cc: xfail on cygwin
+ * testsuite/27_io/basic_filebuf/close/char/9964.cc: Ditto
+ * testsuite/27_io/basic_filebuf/open/char/9507.cc: Ditto
+ * testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: Ditto
+ * testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Ditto
+ * testsuite/27_io/objects/char/7.cc: Ditto
+ * testsuite/27_io/objects/char/9661-1.cc: Ditto
+
+2003-07-05 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_bitset.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+
+ * include/std/std_fstream.h: Change comment to doxygen style.
+
+2003-07-05 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/std/std_limits.h: More CPP->CXX changes.
+ * scripts/check_survey.in: Likewise.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ Move from CPP to CXX.
+ * include/bits/c++config: Move to GLIBCXX from GLIBCPP.
+ * testsuite/Makefile.am: Same.
+ * testsuite/Makefile.in: Regenerate.
+ * po/Makefile.am: Same.
+ * po/Makefile.in: Regenerate.
+ * libsupc++/Makefile.am: Same.
+ * libsupc++/Makefile.in: Regenerate.
+ * libmath/Makefile.am: Same.
+ * libmath/Makefile.in: Regenerate.
+ * include/Makefile.am: Same.
+ * include/Makefile.in: Regenerate.
+ * src/Makefile.am: Same.
+ * src/Makefile.in: Regenerate.
+ * acconfig.h: Same.
+ * configure.host: Same.
+ * configure.in: Same.
+ * configure: Regenerate.
+ * acinclude.m4: Same.
+ * aclocal.m4: Same.
+ * src: Change all files in this directory.
+ * testsuite: Same.
+ * include: Same, standardize include guards.
+ * config: Same.
+ * libsupc++: Same.
+
+2003-07-04 Zack Weinberg <zack@codesourcery.com>
+
+ * testsuite/22_locale/collate/compare/wchar_t/2.cc
+ * testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
+ * testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
+ * testsuite/22_locale/collate/hash/wchar_t/2.cc
+ * testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
+ * testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
+ * testsuite/22_locale/collate/transform/wchar_t/2.cc
+ * testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
+ * testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
+ XFAIL on all targets.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix missed variable.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-07-04 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.tcc (__int_to_char): Move common case
+ to the top.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+ Petur Runolfsson <peturr02@ru.is>
+
+ * config/io/basic_file_stdio.cc: Revert.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/deque.tcc: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/gslice_array.h: Likewise.
+ * include/bits/indirect_array.h: Likewise.
+ * include/bits/list.tcc: Likewise.
+ * include/bits/mask_array.h: Likewise.
+ * include/bits/slice_array.h: Likewise.
+
+2003-07-04 Gawain Bolton <gbolton@free.fr>
+
+ * include/bits/stl_tree.h: Performance and memory usage
+ improvements.
+
+2003-07-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am: Replace PWD with PWD_COMMAND.
+ * Makefile.in: Regenerated.
+ * docs/html/Makefile: Likewise.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/valarray_array.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/vector.tcc: Likewise.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am: Update target_ to host_.
+ * include/Makefile.in: Regenerate.
+ * src/Makefile.am: Same.
+ * src/Makefile.in: Regenerate.
+
+ * config/os/gnu-linux/os_defines.h: Remove glibc-2.0 support.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_DEBUG_FLAGS): To
+ --enable-libstdcxx-debug-flags.
+ (GLIBCPP_ENABLE_DEBUG_FLAGS): To --enable-libstdcxx-debug.
+ (GLIBCPP_ENABLE_PCH): To --enable-libstdcxx-pch.
+ * aclocal.m4: Regenerate.
+ * configure: Same.
+ * docs/html/configopts.html: Update.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ Revert the fix for libstdc++/11378.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11378
+ * include/std/std_fstream.h (xsputn): In the unbuffered case,
+ provided always_noconv(), issue directly _M_file.xsputn.
+ * testsuite/performance/filebuf_unbuf_sputn.cc: New.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_list.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/stl_queue.h: Likewise.
+ * include/bits/stl_raw_storage_iter.h: Likewise.
+ * include/bits/stl_tempbuf.h: Likewise.
+ * include/bits/stl_tree.h: Likewise.
+ * include/bits/stl_uninitialized.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/ext/rope: Change includes order.
+
+2003-07-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.host (fpos_include_dir): Fix.
+
+2003-07-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_heap.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/stl_iterator_base_funcs.h: Likewise.
+
+ * include/bits/stl_algo.h: Qualify __iterator_category too.
+ * include/bits/stl_algobase.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+
+ * include/bits/stl_algo.h: Don't qualify the pair type.
+
+2003-07-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am (target_headers): Add fpos.h
+ (bits_headers): Remove.
+ * include/Makefile.in: Regenerate.
+ * configure.in: Add FPOS_INC_SRCDIR, substitute it.
+ * configure: Regenerate.
+ * configure.host: Add fpos_include_dir.
+ * config/os/gnu-linux/fpos.h: New.
+ * config/os/generic/fpos.h: Add.
+ * include/bits/fpos.h: Remove.
+
+ * config/io/c_io_stdio.h: Remove fpos_t typedef.
+
+ * include/bits/fstream.tcc: Tweaks.
+ * include/std/std_fstream.h: Same.
+
+ * testsuite/27_io/fpos/1.cc (test01): Uncomment. Move to...
+ * testsuite/27_io/fpos/mbstate_t/1.cc: ...here.
+ * testsuite/27_io/fpos/mbstate_t/2.cc: Same.
+ * testsuite/27_io/fpos/mbstate_t/3.cc: Same.
+ * testsuite/27_io/fpos/1.cc: New.
+
+2003-07-03 Benjamin Kosnik <bkoz@redhat.com>
+ Petur Runolfsson <peturr02@ru.is>
+
+ * include/std/std_streambuf.h: Remove _M_pos.
+ * config/io/basic_file_stdio.h: Use seekpos instead of seekoff.
+ * config/io/basic_file_stdio.cc: Same, use fseek instead of lseek,
+ use fread/fwrite instead of read/write.
+ * testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Fix.
+ * testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Close filebufs
+ before reading again.
+ * testsuite/27_io/objects/char/6.cc: Tweak.
+
+2003-07-03 David Edelsohn <edelsohn@gnu.org>
+
+ * testsuite/22_locale/num_put/put/char/7.cc: Guard with
+ _GLIBCPP_USE_WCHAR_T.
+
+2003-07-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/basic_string.tcc (_M_replace_aux): Constify
+ __n1 and __off1.
+
+2003-07-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_bvector.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+ * include/bits/stl_construct.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+
+2003-07-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/22_locale/num_put/put/char/7.cc: Include
+ <testsuite_hooks.h>, tweak.
+ * testsuite/22_locale/num_put/put/wchar_t/7.cc: Likewise.
+
+2003-07-01 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/Makefile.am (AM_MAKEFLAGS): Set to -j1 (affects
+ check* targets, but not libs/programs).
+ * testsuite/Makefile.in: Regenerate.
+
+2003-07-01 Roger Sayle <roger@eyesopen.com>
+
+ * acinclude.m4 (GLIBCPP_CHECK_STDLIB_SUPPORT): Fix typo in CXXFLAGS.
+ (GLIBCPP_CHECK_MATH_SUPPORT): Likewise.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-07-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_PCH): Fix obvious error.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-07-01 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11389
+ * include/bits/fstream.tcc (underflow): For encoding() == 0
+ don't read more than __buflen chars.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc: New.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc: New.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc: New.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc: New.
+
+2003-07-01 Jerry Quinn <jlquinn@optonline.net>
+
+ * 22_locale/num_put/put/char/7.cc: New.
+ * 22_locale/num_put/put/wchar_t/7.cc: New.
+
+2003-06-30 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/locale.cc (__use_cache<numpunct>): Revert previous relocation.
+ * include/bits/locale_facets.tcc (__use_cache<numpunct>): Ditto.
+
+2003-06-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ * 27_io/basic_filebuf/seekoff/char/1-in.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/1-io.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/1-out.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/2-in.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/2-io.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/2-out.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/2.cc: Remove.
+ * 27_io/basic_filebuf/seekoff/char/3-in.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/3-io.cc: Change.
+ * 27_io/basic_filebuf/seekoff/char/3-out.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/4-io.cc: Remove.
+ * 27_io/basic_filebuf/seekpos/char/1-in.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/1-io.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/1-out.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/2-in.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/2-io.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/2-out.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/2.cc: Change.
+ * 27_io/basic_filebuf/seekpos/char/3-in.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/3-io.cc: Remove.
+ * 27_io/basic_filebuf/seekpos/char/3-out.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/4-io.cc: Remove.
+ * data/seekoff-1.tst: Remove.
+ * data/seekoff-1io.tst: New.
+ * data/seekoff-1out.tst: New.
+ * data/seekoff-2.tst: Remove.
+ * data/seekoff-2io.tst: New.
+ * data/seekoff-2out.tst: New.
+ * data/seekoff.txt
+ * data/seekpos-1.tst: Remove.
+ * data/seekpos-1io.tst: New.
+ * data/seekpos-1out.tst: New.
+ * data/seekpos-2.tst: Remove.
+ * data/seekpos-2io.tst: New.
+ * data/seekpos-2out.tst: New.
+ * data/seekpos.txt: New.
+
+2003-06-30 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/locale.cc (__use_cache<numpunct>): Move from here ...
+ * include/bits/locale_facets.tcc (__use_cache<numpunct>): To
+ here.
+
+2003-06-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_algobase.h: Fully qualify standard
+ functions with std::, thus avoiding Koenig lookup.
+
+2003-06-30 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/locale_facets.tcc (money_get::do_get): Avoid
+ subscripting empty string.
+
+2003-06-30 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/Makefile.am (check-am): Do not override.
+ (baseline_symbols): Declare as PHONY, so no need to 'touch' it.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-06-30 Doug Gregor <dgregor@apple.com>
+
+ * testsuite/24_iterators/insert_iterator.cc (test01, test02):
+ Don't initialize an insert_iterator with a singular iterator.
+
+2003-06-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_PCH): Add bits for --enable-pch.
+ * aclocal.m4: Regenerate.
+ * configure.in (GLIBCPP_CHECK_PCH): Move, change to
+ GLIBCPP_ENABLE_PCH, default to yes.
+ * configure: Regenerate.
+ * docs/html/configopts.html: Add --enable-pch.
+
+2003-06-30 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/lib/libstdc++-v3-dg.exp: Add comments.
+ (libstdc++-v3-init): Also set LD_RUN_PATH.
+
+2003-06-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (_M_mode): Unused by streambuf, move
+ from here to filebuf and stringbuf.
+ (~basic_streambuf()): Don't set _M_mode.
+ (basic_streambuf()): Don't set _M_mode.
+ * include/std/std_fstream.h (_M_mode): Move here, from streambuf.
+ (~basic_filebuf()): Clean up.
+ * include/bits/fstream.tcc (basic_filebuf()): Set _M_mode.
+ * include/std/std_sstream.h (_M_mode): Move here, from streambuf.
+ * testsuite/27_io/basic_streambuf/cons/char/1.cc: Don't set _M_mode.
+ * testsuite/27_io/basic_streambuf/overflow/char/1.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sgetc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sgetn/char/1.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sputn/char/1.cc: Likewise.
+
+2003-06-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_M_underflow): Remove.
+ (uflow): Remove, inherited from streambuf.
+ (underflow): Only declare.
+ * include/bits/fstream.tcc (_M_underflow): Rename to
+ underflow, to which is equivalent for __bump == false,
+ simplify.
+ * include/std/std_sstream.h (_M_underflow): Remove.
+ (uflow): Remove, inherited from streambuf.
+ (underflow): Only declare.
+ * include/bits/sstream.tcc (_M_underflow): Rename to
+ underflow, to which is equivalent for __bump == false,
+ simplify.
+
+2003-06-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/stl_algo.h: Fully qualify standard functions
+ with std::, thus avoiding Koenig lookup.
+
+2003-06-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc:
+ Improve type correctness-wise.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc:
+ Likewise.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc:
+ Likewise.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc:
+ Likewise.
+
+2003-06-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (uflow): According to
+ 27.5.2.4.3,p16, don't check gptr() < egptr().
+
+2003-06-28 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9875
+ * include/bits/fstream.tcc (seekoff): Fix for encoding() > 0.
+ (seekpos): Likewise.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc:
+ New test.
+ * testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc:
+ New test.
+
+2003-06-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_performance.h (__gnu_cxx_test): Change
+ output name to libstdc++-v3-performance.sum.
+ * testsuite/Makefile.am (CLEANFILES): Remove .performance.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-06-27 Matthias Klose <doko@debian.org>
+
+ * testsuite/Makefile.am (check-abi, check-abi-verbose): Save
+ output of abi-check in libstdc++-v3-abi.sum.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-06-27 Krister Walfridsson <cato@df.lth.se>
+
+ * config/os/bsd/netbsd/ctype_noninline.h
+ (_C_ctype_): Declare.
+ (ctype<char>::classic_table): Return _C_ctype_ + 1.
+ (ctype<char>::ctype): Use classic_table.
+
+2003-06-27 Paolo Carlini <pcarlini@unitus.it>
+ Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ PR libstdc++/9178
+ * include/bits/fstream.tcc (_M_underflow): Properly estimate
+ the worst-case number of external bytes for a given get area.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: New.
+
+2003-06-27 Paolo Carlini <pcarlini@unitus.it>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/11305
+ * include/bits/fstream.tcc (overflow): Properly estimate the
+ worst-case number of external bytes for a given put area
+ (by using codecvt::max_length()).
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1: New.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2: New.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3: New.
+ * testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4: New.
+
+2003-06-27 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/linker-map.gnu: Remove ; after __numpunct_cache.
+
+2003-06-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/ios_base.h (ios_base::_M_getloc): Return reference
+ to the imbued locale.
+ * include/bits/locale_facets.tcc (num_put::_M_convert_int): Use
+ _M_getloc.
+ (num_put::_M_convert_float): Use.
+
+2003-06-26 Benjamin Kosnik <bkoz@redhat.com>
+ Jerry Quinn <jlquinn@optonline.net>
+
+ * config/linker-map.gnu: Add __numpunct_cache.
+ * config/locale/gnu/numeric_members.cc
+ (numpunct::_M_initialize_numpunct): Account for _M_data, fill in
+ all elements for "C" locale.
+ (numpunct::~numpunct): Delete _M_data.
+ * config/locale/generic/numeric_members.cc: Same.
+ * include/bits/basic_ios.tcc
+ (basic_ios::init): Remove __locale_cache bits.
+ (basic_ios::_M_cache_locale): Same.
+ * include/bits/ios_base.h: Same. Tweaks.
+ * include/bits/locale_classes.h: Tweaks. Reorder classes.
+ (__use_cache): Make friends with _Impl, locale.
+ (_Impl::_M_caches): Add.
+ (_Impl::_M_install_cache): Add.
+ * include/bits/locale_facets.h (__numpunct_cache): New.
+ (numpunct): Encapsulate data members in __numpunct_cache member,
+ _M_data. Adjust virtuals.
+ (numpunct::numpunct): New ctor for the same.
+ (__locale_cache_base): Remove.
+ (__locale_cache): Remove.
+ * include/bits/locale_facets.tcc (__use_cache): New function,
+ specializations.
+ (num_put::_M_convert_int, _M_convert_float, do_put): Use it.
+ * src/globals.cc: Add cache_vec, numpunct_cache_c, numpunct_cache_w.
+ * src/ios.cc (ios_base::ios_base): Remove __locale_cache.
+ * src/locale-inst.cc: Same. Add __numpunct_cache.
+ * src/locale.cc: Tweak inlines.
+ (__use_cache): Define specializations.
+ * src/localename.cc: Use global bits.
+ (_Impl::~Impl): Deal with __numpunct_cache destruction.
+ (_Impl::_Impl): Same. Pre-cache standard numpunct facets.
+ (_Impl::_M_init_facet): Take into account __numpunct_cache.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Update line numbers.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+
+2003-06-26 Nathan C. Myers <ncm-nospam@cantrip.org>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/performance/filebuf_copy.cc: New, testing char
+ by char file copy.
+
+2003-06-26 Paolo Carlini <pcarlini@unitus.it>
+ Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ * include/bits/fstream.tcc (_M_underflow): When the actual
+ end of file is reached, set 'uncommitted' mode to allow a
+ next write without an intervening seek (see C++98 27.8.1.1,2
+ and C89 7.9.5.3).
+ * testsuite/27_io/basic_filebuf/underflow/char/2.cc: New.
+
+2003-06-25 Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
+ sputc): Move inline, from here...
+ * include/std/std_streambuf.h: ... to here.
+
+ * include/std/std_streambuf.h (snextc, sbumpc, sgetc,
+ sputbackc, sungetc, sputc): Use __builtin_expect.
+
+2003-06-24 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/mainpage.html: Use a useful title.
+
+2003-06-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/documentation.html: Remove assignment info.
+ * docs/html/17_intro/contribute.html: Edits.
+ * docs/html/17_intro/libstdc++-assign.tx: Remove.
+
+ * docs/html/test.html: Update.
+
+ * README: Update.
+
+2003-06-24 Benjamin Kosnik <bkoz@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * testsuite/testsuite_performance.h: Tweak mallinfo.
+
+2003-06-24 Paolo Carlini <pcarlini@unitus.it>
+ Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ * include/std/std_fstream.h (_M_filepos): Remove.
+ (_M_reading, _M_writing): New, encode the various I/O modes:
+ 'read', 'write' and 'uncommitted'.
+ (sync): If there is something to flush, do it, then go to
+ 'uncommitted' mode.
+ * include/bits/fstream.tcc (_M_set_buffer): Overhaul to deal
+ with three different cases: __off > 0 (upon underflow),
+ __off == 0 (upon overflow), __off == -1 (upon open, setbuf,
+ seekoff/pos).
+ (_M_underflow): Don't call overflow, set _M_reading to true
+ on success, tweak.
+ (pbackfail): Set _M_reading to true on pback creation, tweak.
+ (overflow): Don't seek, deal with overflow in 'uncommitted' mode,
+ set _M_writing to true on success, tweak.
+ (seekoff): Simplify, set _M_reading, _M_writing to false, call
+ _M_set_buffer(-1) ('uncommitted').
+ (open, close, setbuf): Set _M_reading, _M_writing to false and
+ call _M_set_buffer(-1), tweak.
+ (basic_filebuf): Don't set _M_buf_unified.
+ (_M_destroy_internal_buffer): Don't call setg and setp.
+ * include/ext/stdio_filebuf.h (stdio_filebuf): Use _M_reading,
+ _M_writing and _M_set_buffer(-1).
+ * include/std/std_streambuf.h (_M_move_out_cur, _M_move_in_cur,
+ _M_out_lim, _M_buf_unified): Remove.
+ (basic_streambuf): Don't set _M_out_lim and _M_buf_unified.
+ (setp): Don't set _M_out_lim.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Fix for
+ the new logic ('read', 'write' and 'uncommitted' modes): e.g.,
+ upon open the mode is 'uncommitted' and therefore the put area
+ pointers are null.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: Ditto.
+
+ * include/bits/fstream.tcc (showmanyc): Use only the
+ documented derivation interface to basic_streambuf (gptr(),
+ setg(), etc.) to work right with user specializations.
+ * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc,
+ sputc, xsgetn, xsputn, __copy_streambufs): Likewise.
+ * include/std/std_streambuf.h (in_avail, sgetc, uflow, stossc):
+ Likewise.
+ * include/std/std_fstream.h (_M_create_pback, _M_destroy_pback,
+ xsgetn): Likewise.
+
+2003-06-23 Loren J. Rittle <ljrittle@acm.org>
+
+ * configure.host (freebsd*): Set abi_baseline_pair.
+ * config/abi/i386-freebsd4/baseline_symbols.txt: Update from 3.2
+ (at or near first release) to 3.3.
+ * config/abi/i386-freebsd5/baseline_symbols.txt: New file.
+ * config/abi/alpha-freebsd5/baseline_symbols.txt: New file.
+ * config/abi/sparc-freebsd5/baseline_symbols.txt: New file.
+
+ * include/ext/mt_allocator.h: Portability.
+ * testsuite/testsuite_performance.h: Likewise.
+
+2003-06-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/17_intro/libstdc++-assign.txt: Update address.
+
+ * testsuite/performance/ifstream_getline.cc: Fix.
+
+2003-06-23 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/boost_concept_check.h: Don't use _D or _R for type
+ names.
+
+2003-06-22 Paolo Carlini <pcarlini@unitus.it>
+ Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ * include/std/std_streambuf.h (_M_move_out_cur): _M_out_lim
+ is now used only for filebuf, when _M_buf_unified is true.
+ epgtr() plays the role of _M_out_lim but it's only updated
+ upon overflow, underflow, uflow, seekoff/pos.
+ * include/bits/sstream.tcc (_M_underflow): New, implements
+ stringbuf::underflow and uflow.
+ (seekoff, seekpos): Tweak, use _M_update_egptr.
+ * include/std/std_sstream.h (str): Rewrote, deal correctly
+ with the new logic, in particular, when pptr() > egptr().
+ (_M_sync): When __testout && !__testin set all the get area
+ pointers to the current string end.
+ (_M_update_egptr): New, internal function updating egptr()
+ to the actual string end.
+ (_M_underflow): New, declare.
+ (underflow): Dispatch to _M_underflow(false).
+ (uflow): Dispatch to _M_underflow(true).
+
+ * include/bits/sstream.tcc (pbackfail, overflow, seekoff,
+ seekpos): Use only the documented derivation interface to
+ basic_streambuf (gptr(), setg(), etc.) to work right with
+ user specializations.
+ * include/std/std_sstream.h (str, _M_sync): Likewise.
+
+2003-06-20 Doug Gregor <dgregor@apple.com>
+
+ * testsuite/20_util/auto_ptr.cc: Don't dereference NULL auto_ptr
+ * testsuite/21_strings/basic_string/replace/char/4.cc: Don't
+ dereference end iterator.
+ * testsuite/21_strings/basic_string/replace/wchar_t/4.cc: Same.
+ * testsuite/22_locale/ctype/narrow/char/1.cc: Don't subscript with
+ index equal to the length of a string.
+ * testsuite/22_locale/ctype/narrow/char/2.cc: Same.
+ * testsuite/22_locale/ctype/narrow/wchar_t/1.cc: Same.
+ * testsuite/22_locale/ctype/narrow/wchar_t/2.cc: Same.
+ * testsuite/22_locale/ctype/widen/char/1.cc: Same.
+ * testsuite/22_locale/ctype/widen/wchar_t/1.cc: Same.
+ * testsuite/23_containers/list_modifiers.cc: Don't dereference
+ singular reverse iterator.
+ * testsuite/23_containers/vector_bool.cc: Don't increment singular
+ iterator.
+ * testsuite/24_iterators/rel_ops.cc: Don't compare singular iterator.
+
+2003-06-20 Doug Gregor <dgregor@apple.com>
+
+ * include/bits/basic_string.h (basic_string::replace): Dispatch
+ _InputIterator version based on _Is_integer.
+ * include/bits/basic_string.tcc (basic_string::replace):
+ Renamed replace(iterator, iterator, size_type, _CharT) to
+ _M_replace_aux.
+ * testsuite/21_strings/basic_string/assign/char/1.cc (test01):
+ Test basic_string::assign(_InputIterator, _InputIterator),
+ which calls basic_string::replace(iterator, iterator,
+ _Input_iterator, _InputIterator).
+
+2003-06-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_performance.h (resource_counter): Don't use
+ mallinfo at the moment.
+
+2003-06-20 Matthias Klose <doko@debian.org>
+
+ * configure.host: Set try_cpu to target_cpu for existing
+ baseline files.
+
+2003-06-19 Andreas Jaeger <aj@suse.de>
+
+ * testsuite/Makefile.am (extract_symvers): Revert accidental
+ change.
+ * testsuite/Makefile.in: Regenerate.
+
+ * configure.in: Pass MULTISUBDIR to testsuite/Makefile.
+ * configure: Regenerated.
+
+2003-06-19 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (_M_sync): Make non virtual.
+
+2003-06-18 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_performance.h (time_counter): New.
+ (resource_counter): New.
+ (report_performance): New.
+ (start_counters): New.
+ (stop_counters): New.
+ (clear_counters): New.
+ * testsuite/performance/allocator.cc: Instrument.
+ * testsuite/performance/cout_insert_int.cc: Same.
+ * testsuite/performance/complex_norm.cc: Same.
+ * testsuite/performance/filebuf_sputc.cc: New.
+ * testsuite/performance/fstream_seek_write.cc: Same.
+ * testsuite/performance/ifstream_getline.cc: Same.
+ * testsuite/performance/map_create_fill.cc: Same.
+ * testsuite/performance/ofstream_insert_float.cc: Same.
+ * testsuite/performance/ofstream_insert_int.cc: Same.
+ * testsuite/performance/string_append.cc: Convert.
+ * scripts/check_performance: New.
+ * testsuite/Makefile.am (check-performance): New.
+ (CLEANFILES): Add.
+
+2003-06-18 Paolo Carlini <pcarlini@unitus.it>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/std_sstream.h (setbuf): Check __n >= 0.
+ * include/bits/fstream.tcc (setbuf): Tweak.
+
+2003-06-18 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (seekoff): We can't seek beyond
+ _M_out_lim, therefore _M_move_out_cur boils down to simply
+ updating _M_out_cur.
+ (seekpos): Likewise, clean up.
+
+2003-06-18 Nathan C. Myers <ncm-nospam@cantrip.org>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (setbuf): Allow (__s, 1) too,
+ simply equivalent to the unbuffered case (0, 0) as far as
+ _M_buf_size is concerned.
+
+2003-06-18 Andreas Jaeger <aj@suse.de>
+
+ * testsuite/Makefile.am (new-abi-baseline): Create baseline
+ directory.
+ (baseline_file): Use baseline_dir.
+ (baseline_dir): New.
+ (mkinstalldirs): New.
+
+ * acinclude.m4: Rename baseline_file to baseline_dir, strip
+ filename from baseline_dir.
+
+ * testsuite/Makefile.in: Regenerated.
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in: Missed check_survey bit.
+ * configure: Regenerated.
+
+2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * scripts: New.
+ * config/abi/extract_symvers: Move to...
+ * scripts/extract_symvers: ...here.
+ * mkcheck.in: Move to..
+ * scripts/check_survey.in: ...here.
+ * testsuite_flags.in: Move to..
+ * scripts/testsuite_flags.in: ...here.
+ * configure.in: Change check and testsuite_flags locations.
+ * configure: Regenerate.
+ * testsuite/Makefile.am (current_symbols.txt): Change location.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
+ location of testsuite_flags.
+ * Makefile.am (check-script): Move..
+ (check-script-install): Move...
+ * testsuite/Makefile.am: ... here.
+ * testsuite/Makefile.in: Regenerate.
+ * Makefile.in: Regenerate.
+
+2003-06-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/abi/i486-linux-gnu/baseline_symbols.txt: Update to 3.3.0.
+
+2003-06-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * Makefile.am (check-abi): Move...
+ (new-abi-baseline): Move...
+ * testsuite/Makefile.am: ...here.
+ (new-abi-baseline): Conditionalize.
+ (check-abi): Conditionalize.
+ (check-abi-verbose): New.
+ * Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+ * configure.in: Consolidate testsuite configure bits.
+ * acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Same.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * testsuite/abi_check.cc: Add --check-verbose.
+ Only output detailed information if --check-verbose.
+
+2003-06-16 Andreas Jaeger <aj@suse.de>
+
+ * testsuite/abi_check.cc: Create summary report.
+
+2003-06-16 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Fix
+ for systems with BUFSIZ != 8192.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Ditto.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc:
+ Minor tweaks.
+
+2003-06-16 Andreas Jaeger <aj@suse.de>
+
+ * acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Make
+ check-abi multilib aware.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-06-16 Benjamin Kosnik <bkoz@redhat.com>
+ Andreas Jaeger <aj@suse.de>
+
+ * configure.host: Set x86_64 abi_baseline pair correctly.
+
+2003-06-16 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Split and
+ fix for missing seeks between gets and puts into...
+ * testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc: New.
+
+2003-06-15 Richard Henderson <rth@redhat.com>
+
+ * config/linker-map.gnu: Export virtual function thunks for
+ 64-bit systems too.
+
+2003-06-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/abi/i686-pc-linux-gnu: To..
+ * config/abi/i486-linux-gnu: ...this.
+ * config/abi/alphaev67-unknown-linux-gnu: To..
+ * config/abi/alpha-linux-gnu: ...this.
+ * config/abi/ia64-unknown-linux-gnu: To...
+ * config/abi/ia64-linux-gnu: ...this.
+ * config/abi/x86_64-unknown-linux-gnu: To...
+ * config/abi/x86_64-linux-gnu: ...this.
+ * config/abi/i386-unknown-freebsd4: To...
+ * config/abi/i386-freebsd4: ...this.
+ * config/linker-map.gnu: Cleanups, move libsupc++ bits into
+ CXXABI.
+ * configure.host: abi_baseline_triplet to abi_baseline_pair.
+ Simplify cpu bits so that abi_baseline_pair can use the same
+ cpu configuration.
+ * acinclude.m4: Same.
+ * aclocal.m4: Regenerate.
+ * configure.in: Can't get enable_abi_check to yes unless native.
+ * configure: Regenerate.
+
+2003-06-13 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Split and
+ fix for missing seeks between gets and puts into...
+ * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: New.
+ * testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc: New.
+ * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Same, into...
+ * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: New.
+ * testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Fix
+ for missing seeks between gets and puts.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Ditto.
+ * testsuite/data/seekoff-1.tst: New.
+ * testsuite/data/seekoff-2.tst: New.
+ * testsuite/data/seekpos-1.tst: New.
+ * testsuite/data/seekpos-2.tst: New.
+
+2003-06-13 Nathan C. Myers <ncm-nospam@cantrip.org>
+
+ Avoid multi-processor bus contention on increment/decrement-and-
+ test of the reference count in the empty-string object, by comparing
+ addresses first, and never touching the reference count of the empty-
+ string object.
+ * include/bits/basic_string.h:
+ (_S_empty_rep_storage): Move into basic_string<>::_Rep for use by its
+ members.
+ (_Rep::_S_empty_rep()): New accessor.
+ (_Rep::_M_length, _Rep::_M_capacity, _Rep::_M_references): Move to
+ a base class _Rep_base.
+ (_Rep::_M_dispose, _Rep::_M_refcopy): Check for the empty string.
+ (basic_string()): Change to use _M_refdata() in place of _M_refcopy(),
+ since no longer must increment its refcount.
+ * include/bits/basic_string.tcc:
+ (_Rep::_M_destroy, _M_leak_hard): Check for the empty string and
+ return immediately. The former might be unnecessary. The latter
+ prevents begin() and end() from cloning it unnecessarily.
+ (_S_construct(_InIterator, _InIterator, const _Alloc&,
+ input_iterator_tag), _S_construct(_InIterator, _InIterator,
+ const _Alloc&, forward_iterator_tag), _S_construct(size_type, _CharT,
+ const _Alloc&)): Change to use _M_refdata() in place of _M_refcopy().
+ (_M_mutate): Check for the empty string and treat it as shared.
+ This is necessary here because _M_mutate is sometimes called with
+ all-zero arguments; in all other uses of _M_is_shared, the test comes
+ out right anyhow.
+
+2003-06-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/allocator-inst.cc: Explicitly instantiate.
+ * include/ext/pool_allocator.h: Inhibit implicit instantiations.
+ Tweaks.
+ * config/linker-map.gnu: Add __pool_alloc bits. Tweaks.
+
+2003-06-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_CSTDIO): Simplify.
+ * aclocal.m4: Regenerate.
+ * Makefile.am (SUBDIRS): Remove libio.
+ * Makefile.in: Regenerate.
+ * configure.in: Same.
+ * configure: Regenerate.
+ * config/io/basic_file_libio.cc: Remove.
+ * config/io/basic_file_libio.h: Remove.
+ * config/io/c_io_libio_codecvt.c: Remove.
+ * config/io/c_io_libio.h: Remove.
+ * libio/*: Remove.
+ * src/Makefile.am: Same.
+ * src/Makefile.in: Regenerate.
+ * docs/html/configopts.html: Edits.
+ * docs/html/explanations.html: Edits.
+
+2003-06-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/stl_alloc.h (__debug_alloc): Move out.
+ (__malloc_alloc): Same.
+ (__pool_alloc): Same.
+ (__new_alloc): Same.
+ Rename to..
+ * include/bits/allocator.h: ...this.
+ * include/bits/stl_deque.h: Modify comment.
+ * include/bits/stl_tree.h: Modify include.
+ * include/std/std_memory.h: Same.
+ * include/ext/rope: Same.
+ * include/ext/slist: Same.
+ * include/std/std_vector.h: Same.
+ * include/std/std_stack.h: Same.
+ * include/std/std_queue.h: Same.
+ * include/std/std_list.h: Same.
+ * include/std/std_deque.h: Same.
+ * include/backward/alloc.h: Same.
+ * include/ext/debug_allocator.h: New.
+ * include/ext/malloc_allocator.h: New.
+ * include/ext/pool_allocator.h: New.
+ * include/ext/new_allocator.h: New.
+ * include/bits/pthread_allocimpl.h: Remove.
+ * include/bits/stl_pthread_alloc.h: Remove.
+ * include/Makefile.am (ext_headers): Add.
+ * include/Makefile.in: Regenerate.
+ * src/stl-inst.cc: Use __gnu_cxx namespace.
+ * src/stl-inst.cc: Move to...
+ * src/allocator-inst.cc: Here.
+ * src/Makefile.am (sources): Update.
+ * src/Makefile.in: Regenerate.
+ * config/linker-map.gnu: Remove __pool_alloc bits.
+ * testsuite/ext/headers.cc: Add.
+ * testsuite/ext/allocators.cc: Fixup.
+
+2003-06-11 Stefan Olsson <stefan@snon.net>
+ Ola Rönnerup <fnolis@home.se>
+
+ * include/Makefile.am (ext_headers): Add.
+ * include/Makefile.in: Regenerate.
+ * include/ext/mt_allocator.h: New file.
+
+2003-06-10 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (close): Clean up a bit.
+
+ * include/bits/streambuf.tcc (sbumpc): Clean up a bit.
+
+ * include/std/std_fstream.h (_M_destroy_pback): _M_pback_cur_save
+ - the saved _M_in_cur, that is - cannot be null.
+ (sync): Constify a variable.
+
+ * include/std/std_streambuf.h: Tweak a comment.
+ (in_avail): Constify a variable.
+
+2003-06-10 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/17_intro/BUGS: Update from 2.90.8 snapshot.
+ * docs/html/17_intro/CHECKLIST: Bring up to date with respect to
+ correctness of container::iterator typedefs. Fix whitespace.
+ * docs/html/20_util/howto.html, docs/html/ext/howto.html: Add links
+ to allocator docs.
+ * docs/html/documentation.html: Regenerate.
+
+ * include/bits/basic_string.h, include/bits/basic_string.tcc,
+ include/bits/deque.tcc, include/bits/list.tcc, include/bits/stl_algo.h,
+ include/bits/stl_algobase.h, include/bits/stl_bvector.h,
+ include/bits/stl_deque.h, include/bits/stl_iterator_base_funcs.h,
+ include/bits/stl_list.h, include/bits/stl_uninitialized.h,
+ include/bits/stl_vector.h, include/bits/vector.tcc,
+ include/ext/algorithm, include/ext/slist, include/std/std_bitset.h:
+ Change _Iter names to _Iterator, and __pos to __position.
+
+ * include/bits/stl_relops.h, include/bits/stl_numeric.h,
+ include/bits/stl_multiset.h, include/bits/stl_set.h:
+ Remove emacs markers.
+
+ * include/bits/stl_threads.h (_STL_auto_lock): Add __unused__.
+
+2003-06-10 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (overflow): According to
+ 27.5.2.4.5, overflow() returns not_eof(eof()).
+ * testsuite/27_io/basic_filebuf/overflow/char/2.cc: New.
+ * testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Ditto.
+
+2003-06-10 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_underflow): Check overflow return
+ value; tweak slightly.
+
+2003-06-09 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_underflow): Do not special
+ case the unbuffered case, which really means simply a one char
+ get area.
+ (basic_filebuf): Initialize _M_buf_size.
+ (setbuf): Unbuffered means _M_buf_size == 1, since only
+ _M_buf_size - 1 == 0 chars are going to be used for the
+ put area and 1 for the get area.
+ * include/std/std_streambuf.h (_M_buf_size): Move to basic_filebuf.
+ (~basic_streambuf): Tweak.
+ (basic_streambuf): Do not initialize _M_buf_size.
+ * include/std/std_fstream.h (_M_buf_size): Add from basic_streambuf.
+ (~basic_filebuf): Tweak.
+ (_M_set_buffer): Tweak, considering that _M_buf_size == 1 is the
+ unbuffered situation (i.e., put area pointers NULL).
+ * include/bits/streambuf.tcc (sbumpc): Clean up.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc: New.
+
+2003-06-09 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4: Move all AM_CONDITIONAL calls out.
+ (GLIBCPP_CONFIGURE): Set defaults for variables used in AM_CONDITIONAL
+ statements.
+ * configure.in: Centralize AM_CONDITIONALs so that they are always
+ run. Make use of GLIBCPP_IS_CROSS_COMPILING.
+ * aclocal.m4, configure: Regenerated.
+
+2003-06-09 Paolo Carlini <pcarlini@unitus.it>
+
+ * docs/html/ext/howto.html ('LWG Issues'): Add issue 235.
+
+2003-06-06 Nathan Myers <ncm-nospam@cantrip.org>
+
+ * include/bits/stl_iterator.h
+ (reverse_iterator::reverse_iterator()): Apply DR235: default
+ constructor default-initializes data member. Instantiated on a
+ pointer type, the member has to end up equal to zero.
+
+2003-06-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/stl_alloc.h: Cleanups.
+ * include/ext/functional: Same.
+ * include/ext/hash_map: Same.
+ * include/ext/hash_set: Same.
+ * include/ext/iterator: Same.
+ * include/ext/memory: Same.
+ * include/ext/numeric: Same.
+ * include/ext/rb_tree: Same.
+ * include/ext/ropeimpl.h: Same.
+ * include/ext/slist: Same.
+ * include/ext/stdio_filebuf.h: Same.
+ * include/ext/stdio_sync_filebuf.h: Same.
+ * include/ext/stl_rope.h: Move to...
+ * include/ext/rope: ...here.
+ * include/ext/stl_hash_fun.h: Move to...
+ * include/ext/hash_fun.h: ...here.
+ * include/ext/stl_hashtable.h: Move to...
+ * include/ext/hashtable.h: ...here.
+ * include/backward/hashtable.h: Reflect new names.
+ * include/Makefile.am: Same.
+ * include/Makefile.in: Regenerated.
+
+2003-06-05 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/9024
+ * include/bits/fstream.tcc (_M_underflow): Fix for unbuffered.
+ * include/bits/stl_algobase.h: Tweak.
+ * include/std/std_fstream.h: Move _M_buf_size to...
+ * include/std/std_streambuf.h: ...here. Modify.
+ * include/bits/streambuf.tcc: Same.
+ * testsuite/testsuite_hooks.h: Tweak.
+ * testsuite/testsuite_io.h (constraint_filebuf): New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/2.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sgetn/char/3.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/snextc/char/2-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sputc/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/2.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sputc/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Split into...
+ * testsuite/27_io/basic_filebuf/sputn/char/1-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/2-in.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: New.
+ * testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: New.
+ * testsuite/data/sgetc.txt: New.
+ * testsuite/data/sgetn.txt: New.
+
+2003-06-05 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/11095
+ * include/bits/istream.tcc (operator>>(basic_istream&, _CharT*)):
+ Deal with width() smaller than zero.
+ * include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT),
+ operator<<(basic_ostream&, char), operator<<(basic_ostream&, const
+ _CharT*), operator<<(basic_ostream<_CharT, _Traits>&, const
+ char*), operator<<(basic_ostream<char, _Traits>&, const char*),
+ operator<<(basic_ostream, const basic_string&)): Likewise.
+
+ * testsuite/27_io/basic_istream/extractors_character/char/
+ (11095-i.cc, 11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
+ * testsuite/27_io/basic_ostream/inserters_character/char/
+ (11095-oa.cc, 11095-ob.cc, 11095-oc.cc): New.
+ * testsuite/27_io/basic_ostream/inserters_character/wchar_t/
+ (11095-od.cc, 11095-oe.cc, 11095-of.cc): New.
+
+2003-06-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCPP_CHECK_PCH): Only set glibcpp_PCHFLAGS if
+ .gch compilation works.
+ * aclocal.m4, configure: Regenerate.
+ * testsuite_flags.in (--build-cxx): Use glibcpp_PCHFLAGS to
+ initialize PCHFLAGS.
+
+2003-06-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/basic_string.h (_M_fold, insert(iterator, _CharT),
+ erase(iterator), erase(iterator, iterator), c_str,
+ compare(const basic_string&)): Constify various variables.
+ * include/bits/basic_string.tcc (_S_construct(_InIter, _InIter,
+ const _Alloc&, input_iterator_tag), _M_destroy, _M_mutate,
+ _S_create, resize, _M_replace, _M_replace_safe,
+ append(const basic_string&), append(const basic_string&, size_type,
+ size_type), append(const _CharT*, size_type), append(size_type,
+ _CharT), operator+(const _CharT*, const basic_string&),
+ operator+(_CharT, const basic_string&), replace(iterator, iterator,
+ size_type, _CharT), find(const _CharT*, size_type, size_type),
+ find(_CharT, size_type), rfind(const _CharT*, size_type, size_type),
+ rfind(_CharT, size_type), compare(size_type, size_type,
+ const basic_string&), compare(size_type, size_type,
+ const basic_string&, size_type, size_type), compare(const _CharT*),
+ compare(size_type, size_type, const _CharT*), compare(size_type,
+ size_type, const _CharT*, size_type)): Likewise.
+
+2003-06-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/fstream.tcc (pbackfail): Make a rarely taken
+ 'if' branch less obscure.
+
+2003-06-02 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR libstdc++/9815
+ * config/cpu/i386/atomicity.h (__exchange_and_add): add intel
+ asm case to asm.
+ * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise.
+ (__atomic_add): likewise.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (pbackfail): Minor clean up and
+ reformatting, consistent with basic_filebuf::pbackfail.
+
+2003-06-02 Richard Kreckel <Richard.Kreckel@GiNaC.DE>
+
+ PR libstdc++/11062
+ * config/cpu/mips/atomicity.h: Change __attribute__ ((unused)) to
+ __attribute__ ((__unused__)).
+ * config/os/aix/atomicity.h: Likewise.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9761
+ * include/bits/fstream.tcc (pbackfail): If the pback buffer
+ is already active don't try to store in it a second char.
+ * testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: New.
+
+ * include/bits/fstream.tcc (pbackfail): Add unbuffered bits.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: Tweak
+ line spacing.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_M_destroy_pback): Use _M_in_beg
+ instead of unnecessarily taking the address of _M_pback.
+ (xsgetn): Simplify slightly for a single char pback buffer.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (seekoff): Remove four unnecessary
+ variables and two 'if', clean up.
+
+2003-06-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (seekpos): Test against _M_out_lim
+ not _M_out_end, since the former actually points to the string
+ end (vs buffer end).
+ * testsuite/27_io/basic_stringbuf/seekpos/char/3.cc: New.
+
+2003-05-30 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/filter: New file.
+ * docs/doxygen/filter.sed: New file.
+ * docs/doxygen/run_doxygen: Add g flag to sed substitutions. Duh.
+ * docs/doxygen/user.cfg.in (INPUT_FILTER): Point to new filter.
+ * docs/html/documentation.html: Fix links to doxygen pages.
+
+2003-05-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_convert_to_external): Don't
+ check for __ilen > 0.
+
+2003-05-29 Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de>
+
+ PR libstdc++/10783
+ * include/bits/stl_iterator.h (class __normal_iterator):
+ Don't inherit from iterator, add missing typedefs.
+
+2003-05-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/24_iterators/reverse_iterator.cc: Split up, as follows.
+ * testsuite/24_iterators/reverse_iterator/1.cc: New.
+ * testsuite/24_iterators/reverse_iterator/2.cc: New.
+ * testsuite/24_iterators/reverse_iterator/3.cc: New, from
+ PR libstdc++/10783.
+
+2003-05-27 Steve Ellcey <sje@cup.hp.com>
+
+ * config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are
+ on IA64 HP-UX.
+ * libsupc++/eh_throw.cc: Don't call _Unwind_Resume_or_Rethrow if
+ _LIBUNWIND_STD_ABI is set.
+
+2003-05-26 Brendan Kehoe <brendan@zen.org>
+
+ * include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and
+ make sure the number of digits required after the decimal-point
+ (if any) is exactly the value returned by frac_digits().
+ * testsuite/22_locale/money_get/get/char/9.cc: New.
+ * testsuite/22_locale/money_get/get/wchar_t/9.cc: New.
+
+2003-05-27 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * include/std/std_istream.h, include/std/std_ostream.h: Typo in
+ comment.
+
+2003-05-26 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/9339
+ * include/std/std_fstream.h (basic_filebuf::_M_overflow): Remove.
+ (_M_pback): No array necessary.
+ * include/bits/fstream.tcc (basic_filebuf::_M_overflow): Add
+ unbuffered case, coalesec into ...
+ (basic_filebuf::overflow): ...this.
+ * testsuite/27_io/basic_filebuf/sputn/char/9339.cc: New.
+ * testsuite/27_io/basic_filebuf/sputc/char/2.cc: Unbuffered.
+
+2003-05-24 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ * libsupc++/Makefile.am, libsupc++/cxxabi.h, libsupc++/del_op.cc,
+ libsupc++/del_opnt.cc, libsupc++/del_opv.cc, libsupc++/del_opvnt.cc,
+ libsupc++/eh_alloc.cc, libsupc++/eh_aux_runtime.cc,
+ libsupc++/eh_catch.cc, libsupc++/eh_exception.cc,
+ libsupc++/eh_globals.cc, libsupc++/eh_personality.cc,
+ libsupc++/eh_term_handler.cc, libsupc++/eh_terminate.cc,
+ libsupc++/eh_throw.cc, libsupc++/eh_type.cc,
+ libsupc++/eh_unex_handler.cc, libsupc++/exception,
+ libsupc++/new, libsupc++/new_handler.cc, libsupc++/new_op.cc,
+ libsupc++/new_opnt.cc, libsupc++/new_opv.cc, libsupc++/new_opvnt.cc,
+ libsupc++/pure.cc, libsupc++/tinfo.cc, libsupc++/tinfo2.cc,
+ libsupc++/typeinfo, libsupc++/unwind-cxx.h, libsupc++/vec.cc:
+ Replace "GNU CC" with "GCC".
+
+ * include/backward/new.h: Replace "GNU CC" with "GCC".
+
+2003-05-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/3066.
+ * configure.in: Switch target to host, don't assume newlib.
+ (target_alias): Remove.
+ * configure: Regenerate.
+ * acinclude.m4: Same.
+ * aclocal.m4: Regenerate.
+ * configure.target: Same. Rename to...
+ * configure.host: This.
+
+2003-05-22 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_S_pback_size): Remove definition.
+ (_M_create_pback(), _M_destroy_pback()): Simplify for a single-char
+ pback buffer.
+ * include/bits/fstream.tcc (_S_pback_size): Remove declaration.
+ * testsuite/27_io/basic_filebuf/3.cc: Remove explicit instantiation
+ of _S_pback_size for systems with no COMDAT or weak support.
+ * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
+ * testsuite/27_io/basic_fstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ifstream/3.cc: Likewise.
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Likewise.
+ * testsuite/27_io/basic_ofstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/3.cc: Likewise.
+
+2003-05-22 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_underflow): Simplify:
+ !__testout implies _M_filepos == _M_in_end, therefore
+ the first _M_file.seekoff call is never issued.
+
+2003-05-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in: Sort cross table.
+ * configure: Regenerate.
+
+2003-05-22 Brad Spencer <spencer@infointeractive.com>
+
+ PR libstdc++/10106
+ * configure.in: Add Solaris cross bits.
+
+2003-05-21 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * libstdc++-v3/config/os/mingw32/os_defines.h
+ (__GTHREAD_HIDE_WIN32API): Define to 1 by defualt.
+ (NOMINMAX): Define. Update copyright year.
+
+2003-05-21 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_M_set_buffer): Fix indentation.
+
+2003-05-21 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/faq/index.html: Fix typo.
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-05-21 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/test.html: Fix markup.
+
+2003-05-21 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * libmath/stubs.c (hypot, hypotf, hypotl): Don't divide by
+ zero.
+ Update copyright year.
+
+2003-05-20 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/close/char/4.cc: Fix typo.
+
+2003-05-20 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/close/char/5.cc: New file,
+ further testing that upon filebuf::close() 27.8.1.1,3 is enforced.
+
+2003-05-20 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * include/bits/stl_alloc.h (__default_alloc_template::_S_chunk_alloc):
+ Cast via void* to avoid -Wcast-align warnings.
+ (__default_alloc_template::_S_refill): Likewise.
+
+2003-05-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/README: Move to...
+ * docs/html/test.html: ...here. Add documentation.
+ * docs/html/install.html: Move testing bits out..
+ * docs/html/documentation.html: Add separate testing link.
+ * testsuite/performance: Add.
+ * testsuite/performance/allocator.cc: New.
+ * testsuite/performance/complex_norm.cc: New.
+ * testsuite/performance/cout_insert_int.cc: New.
+ * testsuite/performance/fstream_seek_write.cc: New.
+ * testsuite/performance/ifstream_getline.cc: New.
+ * testsuite/performance/map_create_fill.cc: New.
+ * testsuite/performance/ofstream_insert_float.cc: New.
+ * testsuite/performance/ofstream_insert_int.cc: New.
+ * testsuite/performance/string_append.cc: New.
+ * testsuite/lib/libstdc++-v3-dg.exp (v3-compute-tests): Filter
+ performance tests.
+
+2003-05-20 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR libstdc++/10689
+ * include/std/std_complex.h (pow): Tidy.
+
+2003-05-19 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/close/char/4.cc: New file, testing
+ that upon filebuf::close() 27.8.1.1,3 is enforced.
+
+2003-05-15 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/thread/pthread4.cc: Further tweak to avoid fini race.
+
+2003-05-15 Paolo Carlini <pcarlini@unitus.it>
+ Nathan Myers <ncm@cantrip.org>
+
+ * include/bits/fstream.tcc (_M_overflow): Rewrote to call
+ _M_convert_to_external only once (_M_buf_size is now the size of
+ the put area + 1 for the overflow char of a full area); call
+ _M_set_buffer instead of _M_set_indeterminate.
+ (setbuf): Don't accept a buffer smaller than 2 chars.
+ (_M_underflow): Refill _M_buf_size - 1 chars; call _M_set_buffer,
+ instead of _M_set_determinate.
+ (open): Call _M_set_buffer, instead of _M_set_indeterminate.
+ (seekoff): Likewise.
+ * include/ext/stdio_filebuf.h (stdio_filebuf(int,
+ std::ios_base::openmode, bool, size_t),
+ stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t):
+ Likewise.
+ * include/std/std_fstream.h (_M_set_indeterminate): Remove.
+ (_M_set_determinate): Rename as _M_set_buffer, _M_buf_size ->
+ _M_buf_size - 1.
+ * include/std/std_streambuf.h: Tweak _M_out_lim comment.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Tweak, taking
+ into account that, for _M_buf_size == BUFSIZ == 8192, the size of
+ the put area is now BUFSIZ - 1.
+ * testsuite/ext/stdio_filebuf_2.cc: Tweak, taking into account
+ that now the smallest _M_buf_size is 2 (still fails, for the same
+ reason, with 3.2.3)
+
+2003-05-14 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/thread/pthread4.cc: Tweak test.
+
+2003-05-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Remove
+ excess errors dg marker, use dg-errors instead.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+ * testsuite/20_util/auto_ptr_neg.cc: Same.
+
+2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/std_fstream.h (basic_filebuf::_M_codecvt): Add
+ cached member.
+ * include/bits/fstream.tcc (basic_filebuf::basic_filebuf):
+ Initialize _M_codecvt.
+ (basic_filebuf::imbue): Same.
+ (basic_filebuf::showmanyc): Use it.
+ (basic_filebuf::underflow): Use it.
+ (basic_filebuf::_M_convert_to_external): Use it.
+ (basic_filebuf::seekoff): Use it.
+ (basic_filebuf::imbue): Use it, tweaks.
+ * include/bits/localefwd.h (__check_facet): New.
+ * include/bits/locale_classes.h: Tweaks.
+ * include/bits/locale_facets.tcc: Tweaks.
+ * include/bits/basic_ios.h (basic_ios::_M_check_facet): Remove.
+ _M_fctype to _M_ctype, _M_fnumput to _M_num_put, _M_fnumget to
+ _M_num_get. Change _M_check_facet to __check_facet. Tweaks.
+ * include/bits/basic_ios.tcc: Same.
+ * include/bits/istream.tcc: Same.
+ * include/bits/ostream.tcc: Same.
+ * include/std/std_streambuf.h: Same.
+ * testsuite/27_io/basic_filebuf/imbue/char/2.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/char/3.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc: New.
+ * testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc: New.
+
+2003-05-12 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Remove
+ unnecessary includes and unused string literals.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
+
+2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/fstream.tcc (_M_overflow): Remove unbuffered bits.
+
+2003-05-12 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_M_convert_to_external): Change
+ to return bool, take two less streamsize parameters.
+ * include/bits/fstream.tcc (_M_convert_to_external): Tweak
+ consistently definition.
+ (_M_overflow): Adjust call points.
+
+2003-05-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/basic_filebuf/underflow/10096.cc: Add weak bits.
+
+2003-05-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/Makefile.am: Properly quote /both/ LD_RUN_PATHs.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-05-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite/Makefile.am: Properly quote LD_RUN_PATH.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-05-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR libstdc++/3181
+ * include/c_std/std_cmath.h: #include <bits/cpp_type_traits.h>
+ (acos): Handle integer argument.
+ (asin): Likewise.
+ (atan): Likewise.
+ (atan2): Likewise.
+ (ceil): Likewise.
+ (cos): Likewise.
+ (cosh): Likewise.
+ (exp): Likewise.
+ (fabs): Likewise.
+ (floor): Likewise.
+ (frexp): Likewise.
+ (ldexp): Likewise.
+ (log): Likewise.
+ (log10): Likewise.
+ (sin): Likewise.
+ (sinh): Likewise.
+ (sqrt): Likewise.
+ (tan): Likewise.
+ (tanh): Likewise.
+ * include/bits/cpp_type_traits.h (__are_same<>): New traits.
+ (__enable_if): Likewise.
+ * testsuite/26_numerics/cmath/overloads.C: New test.
+
+2003-05-10 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9027
+ PR libstdc++/9520
+ PR libstdc++/10096
+ * include/bits/fstream.tcc (basic_file::_M_underflow): Add generic
+ implementation, based on old wchar_t specialization, add support
+ for codecvt::in() return value of codecvt_base::noconv, remove
+ _M_file.sys_ungetc() call.
+ * include/std/std_fstream.h (basic_file::underflow,
+ basic_file::uflow, basic_file::_M_underflow): Remove
+ specialization declarations, call _M_underflow from generic versions
+ of underflow and uflow.
+ * src/fstream.cc (basic_file::underflow, basic_file::uflow,
+ basic_file::_M_underflow): Remove specializations.
+ * src/Makefile.am (sources): Remove fstream.cc.
+ * src/Makefile.in: Regenerated.
+ * testsuite/27_io/basic_filebuf/underflow/10096.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/char/1.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/char/9027.cc: New test.
+ * testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc: New test.
+
+2003-05-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/stdio_filebuf.h (__stdio_filebuf): Remove stack
+ buffer.
+ * config/io/basic_file_stdio.h (__basic_file::xsgetn): Remove
+ unbuffered bits.
+ (__basic_file::xsputn): Same.
+ (__basic_file::seekoff): Same.
+ (__basic_file::seekpos): Same.
+ (__basic_file::showmanyc): Same.
+ * config/io/basic_file_stdio.cc: Same.
+ * include/std/std_fstream.h: Same.
+ * include/bits/fstream.tcc: Same.
+ * src/fstream.cc: Same.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1.cc (test05): Tidy.
+
+2003-05-10 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9520
+ PR libstdc++/9661
+ PR libstdc++/9662
+ * include/ext/stdio_sync_filebuf.h: New file.
+ (basic_stdiobuf): New.
+ * include/Makefile.am (ext_headers): Add ext/stdio_sync_filebuf.h
+ * include/Makefile.in: Regenerate.
+ * include/bits/ios_base.h (Init::_S_create_buffers,
+ Init::_S_destroy_buffers): Remove declarations.
+ * src/globals.cc (buf_cout_sync, buf_cin_sync, buf_cerr_sync,
+ buf_wcout_sync, buf_wcin_sync, buf_wcerr_sync): Define.
+ * src/ios.cc (Init::_S_create_buffers,
+ Init::_S_destroy_buffers): Remove.
+ (Init::Init): Create and use syncronized buffers.
+ (ios_base::sync_with_stdio): Destroy syncronized buffers,
+ create and install unsyncronized buffers.
+ * testsuite/27_io/objects/char/10.cc: New test.
+ * testsuite/27_io/objects/char/9.cc: New test.
+ * testsuite/27_io/objects/char/9661-1.cc: New test.
+ * testsuite/27_io/objects/char/9661-2_xin.cc: New test.
+ * testsuite/27_io/objects/char/9661-2_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/1.cc: New test.
+ * testsuite/27_io/objects/wchar_t/10.cc: New test.
+ * testsuite/27_io/objects/wchar_t/2.cc: New test.
+ * testsuite/27_io/objects/wchar_t/2523-1_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/2523-1_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/2523-2_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/2523-2_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/3045.cc: New test.
+ * testsuite/27_io/objects/wchar_t/3647.cc: New test.
+ * testsuite/27_io/objects/wchar_t/3_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/3_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/4_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/4_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/5.cc: New test.
+ * testsuite/27_io/objects/wchar_t/5268.cc: New test.
+ * testsuite/27_io/objects/wchar_t/5280_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/5280_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/6.cc: New test.
+ * testsuite/27_io/objects/wchar_t/6548_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/6548_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/6648-1_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/6648-1_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/6648-2_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/6648-2_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/7.cc: New test.
+ * testsuite/27_io/objects/wchar_t/7744_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/7744_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/8.cc: New test.
+ * testsuite/27_io/objects/wchar_t/9_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/9_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/9520.cc: New test.
+ * testsuite/27_io/objects/wchar_t/9661-1.cc: New test.
+ * testsuite/27_io/objects/wchar_t/9661-2_xin.cc: New test.
+ * testsuite/27_io/objects/wchar_t/9661-2_xin.in: New.
+ * testsuite/27_io/objects/wchar_t/9662.cc: New test.
+ * testsuite/ext/stdiobuf_char.cc: New test.
+ * testsuite/ext/stdiobuf_wchar_t.cc: New test.
+
+2003-05-10 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/close/char/3.cc: Remove
+ unnecessary includes and unused string literals.
+ * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
+
+2003-05-08 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (setg, setp): Don't touch _M_mode.
+
+2003-05-07 Richard Henderson <rth@redhat.com>
+
+ PR c++/10570
+ * libsupc++/eh_catch.cc (__cxa_begin_catch): Handle foreign exceptions.
+ (__cxa_end_catch): Likewise.
+ * libsupc++/eh_throw.cc (__cxa_rethrow): Likewise. Use
+ _Unwind_Resume_or_Rethrow.
+ * libsupc++/eh_personality.cc (empty_exception_spec): New.
+ (PERSONALITY_FUNCTION): Don't ignore terminate or catch-all
+ for _UA_FORCE_UNWIND. Honor empty filter spec for foreign
+ exceptions. Don't push terminate/unexpected to cxa functions.
+ (__cxa_call_unexpected): Remove foreign exception fixmes.
+
+2003-05-07 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/ios_base/cons: New.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: New.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: New.
+
+2003-05-07 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_fstream.h (_M_is_indeterminate): Remove.
+ * src/fstream.cc
+ (basic_filebuf<char/wchar_t>::_M_underflow): Simplify: either
+ there is no buffer or __testget == !__testinit.
+
+ * src/fstream.cc
+ (basic_filebuf<char/wchar_t>::_M_underflow): _M_set_determinate()
+ automatically sets, if appropriate, _M_out_cur == _M_in_cur.
+
+ * include/std/std_fstream.h (_M_destroy_pback): Don't set
+ unnecessarily _M_pback_cur_save and _M_pback_end_save.
+
+ * include/std/std_fstream.h (_M_set_determinate): Minor tweak.
+
+ * include/std/std_sstream.h (_M_sync): Minor tweak.
+
+ * include/bits/fstream.tcc (close): No need to call
+ _M_destroy_pback, setting _M_pback_init to false suffices
+ to clean up.
+
+2003-05-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/stl_algo.h: Enums as _S_.
+ * include/bits/stl_tree.h: Same.
+ * include/bits/stl_bvector.h: Same.
+ * include/bits/ios_base.h: Same.
+ * include/bits/stl_alloc.h: Same.
+ * include/ext/stl_hashtable.h: Same.
+ * src/ios.cc: And here.
+
+ * include/std/std_sstream.h: Replace _M_really_sync to _M_sync.
+ * include/bits/sstream.tcc: Same.
+
+ * include/bits/basic_ios.h: Correct spacing for '< ctype'.
+
+ * include/bits/locale_facets.tcc: Replace __temp to __tmp.
+
+ * include/bits/locale_facets.h (__num_base): Remove protected.
+ Use _S_[io]* names for enumerations.
+ (_S_format_int): Remove.
+ * include/bits/locale_facets.tcc: Same.
+ * src/locale.cc: Same.
+
+ * include/std/std_sstream.h (stringbuf::str): Tweak formatting.
+
+2003-05-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/faq/index.html (3.10): Add note about mips atomicity.h.
+ * docs/html/faq/index.txt: Regenerated.
+
+2003-05-06 Michael Ritzert <Ritzert@t-online.de>
+ Matt Kraai <kraai@alumni.cmu.edu>
+
+ * include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): Tweak.
+ And retweak.
+
+2003-05-06 Richard Sandiford <rsandifo@redhat.com>
+
+ * configure.target (mips*): Use the generic atomicity.h by default.
+
+2003-05-05 Loren J. Rittle <ljrittle@acm.org>
+ (Inspired by an alternate patch from Danny Smith.)
+
+ * include/bits/stl_threads.h (_Atomic_swap): Kill it...
+ (_Swap_lock_struct<>): ...and the horse it rode in on.
+ * src/globals.cc (_Swap_lock_struct<>): Likewise.
+ * include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): New
+ member to support...
+ * include/ext/ropeimpl.h (rope<>::c_str): Follow *all* memory
+ visibility rules related to POSIX threads.
+ * testsuite/thread/pthread7-rope.cc: New test.
+
+2003-05-04 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/21_strings/basic_string/find/char/3.cc: New
+ file, testing basic_string<char>::find_first_not_of.
+ * testsuite/21_strings/basic_string/find/wchar_t/3.cc:
+ Likewise for basic_string<wchar_t>.
+
+2003-05-03 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/thread/pthread1.cc: Remove special case for FreeBSD.
+
+2003-05-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am (CLEANFILES): Remove PCH files in target
+ directory.
+ * include/Makefile.in: Regenerate.
+
+2003-05-02 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (str()): Tidy.
+
+2003-05-02 Nathan Myers <ncm@cantrip.org>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/streambuf.tcc (__copy_streambufs): Rewrote.
+
+2003-05-02 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * include/bits/basic_string.h (swap): Remove redundant template
+ parameters from declaration of non-template member function.
+
+2003-05-01 Phil Edwards <pme@gcc.gnu.org>
+
+ * acconfig.h (_GLIBCPP_USE_NLS): New symbol.
+ * configure.in: Move libintl.h header test...
+ * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): ...to here. Gather all
+ the NLS-related test results into one symbol.
+ * src/functexcept.cc: Use it here.
+ * aclocal.m4, config.h.in, configure: Regenerated.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (overflow): Instead of calling
+ str(), then _M_string.reserve, thus copying the contents
+ of the current buffer two times, just copy the latter in
+ a temporary, then use the 'swap trick'.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (str()): Revert the best of the
+ previous 'improvement', incorrect due to the COW nature of
+ v3 basic_string; simplify.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/streambuf.tcc (__copy_streambufs): Adjust the
+ type of __avail to ptrdiff_t to avoid signed-unsigned warning.
+
+2003-05-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/abi_check.cc (check_version): Update known versions.
+ Check added symbols for version_name != base version. Add missing
+ symbols to incompatible list.
+
+2003-05-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_EXPORT_FLAGS): Remove -Winline.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/streambuf.tcc (basic_streambuf::xsgetn):
+ Const-ify some variables.
+ (basic_streambuf::xsputn): Likewise; change the type of some
+ variables to size_t.
+ (__copy_streambufs): Change some variables to size_t.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (str()): Avoid constructing
+ a basic_string temporary not only when it would turn out
+ to be zero-sized but also when identical to the current
+ _M_string buffer.
+
+2003-05-01 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/ext/stdio_filebuf.h
+ (stdio_filebuf(int, std::ios_base::openmode, bool, size_t),
+ stdio_filebuf(std::__c_file*, std::ios_base::openmode, size_t)):
+ Shorten a bit (-10 lines) by factoring out some code.
+
+2003-04-30 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4: Add bit missing from previous patch.
+ * aclocal.m4, configure: Regenerated.
+
+2003-04-29 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/mainpage.html: Bring up to date.
+ * docs/doxygen/run_doxygen: Cosmetic tweaks. Work around a bug
+ in Doxygen.
+ * docs/doxygen/user.cfg.in: Scanning the precompiled headers
+ breaks everything. Don't scan them.
+ * docs/html/documentation.html: Point to "Write after approval"
+ notes.
+
+2003-04-29 Phil Edwards <pme@gcc.gnu.org>
+
+ * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): Search for gettext outside
+ of libc if message translations are being used. Fix info text in
+ xieee_1003.1-2001 case.
+ * aclocal.m4, configure: Regenerate.
+
+2003-04-29 Joel Sherrill <joel.sherrill@OARcorp.com>
+ Loren J. Rittle <ljrittle@acm.org>
+ Martin v. Loewis <martin@v.loewis.de>
+
+ * config/cpu/i386/atomicity.h: New file.
+
+2003-04-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (open): Change to single return.
+
+2003-04-29 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (underflow): Change to single return.
+
+2003-04-28 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (_M_buf): is currently
+ used only for basic_filebuf, therefore move it there.
+ (basic_streambuf(), ~basic_streambuf()): Adjust.
+ * include/std/std_fstream.h (_M_buf): Moved here.
+ * include/std/std_sstream.h (setbuf): Don't set _M_buf,
+ is actually redundant for basic_stringbuf.
+ (_M_really_sync): Likewise.
+ * include/bits/fstream.tcc (basic_filebuf()): Adjust.
+ * include/bits/sstream.tcc (seekoff): Adjust.
+
+2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/localename.cc: Standardize exception strings.
+ * src/locale.cc: Same.
+ * src/ios.cc: Same.
+ * include/bits/basic_string.tcc: Same.
+ * include/bits/basic_ios.tcc: Same.
+ * include/std/std_bitset.h: Same.
+ * include/ext/ropeimpl.h: Same.
+ * include/bits/stl_vector.h: Same.
+ * include/bits/stl_deque.h: Same.
+ * include/bits/stl_bvector.h: Same.
+ * config/locale/generic/c_locale.cc: Same.
+ * config/locale/gnu/c_locale.cc: Same.
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h: Same.
+
+ * testsuite/testsuite_hooks.cc (__gnu_cxx_test): Modify.
+
+2003-04-28 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (_M_buf_size): is currently
+ used only for basic_filebuf, therefore move it there.
+ (basic_streambuf(), ~basic_streambuf()): Adjust.
+ * include/std/std_fstream.h (_M_buf_size): Moved here.
+ * include/bits/fstream.tcc (basic_filebuf()): Adjust.
+
+2003-04-28 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/streambuf.tcc (__copy_streambufs): Don't use
+ _M_buf_size (synced input is now correctly dealt with
+ elsewhere); when the output buffer is full don't fall back
+ to a snextc-sputc loop, call overflow instead.
+
+2003-04-28 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (pbackfail): Shorten a bit (6 lines)
+ the innermost 'if' by factoring out some code.
+
+2003-04-28 Phil Edwards <pme@gcc.gnu.org>
+
+ * configure.in: Test for libintl.h.
+ * include/bits/c++config: Define __N for everybody.
+ * include/bits/basic_string.h, include/bits/stl_bvector.h,
+ include/bits/stl_deque.h, include/bits/stl_vector.h,
+ include/std/std_bitset.h: Wrap all __throw* text with __N.
+ * po/Makefile.am (pot): New rule, mostly working.
+ * src/functexcept.cc: Call gettext on all __throw* arguments when
+ -fexceptions is in effect.
+ * po/Makefile.in, config.h.in, configure: Regenerate.
+
+2003-04-28 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9523
+ * include/bits/ios_base.h (Init::_S_ios_create,
+ Init::_S_ios_destroy): Remove declarations.
+ (Init::_S_create_buffers,
+ Init::_S_destroy_buffers): Declare
+ * src/ios.cc (Init::_S_ios_create): Remove
+ (Init::_S_create_buffers): Create buffers and add to streams.
+ (Init::_S_ios_destroy): Rename to...
+ (Init::_S_destroy_buffers): this.
+ (Init::Init): Only construct streams once.
+ (Init::~Init): Flush streams, don't destroy them.
+ (ios_base::sync_with_stdio): Don't destroy streams, only buffers.
+ * testsuite/27_io/ios_base/sync_with_stdio/9523.cc: New test.
+ * testsuite/27_io/objects/char/5.cc: New test.
+ * testsuite/27_io/objects/char/5268.cc: Avoid undefined behavior.
+ * testsuite/27_io/objects/char/6.cc: New test.
+ * testsuite/27_io/objects/char/7.cc: New test.
+
+2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/objects/char/8.cc: New test.
+
+2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/22_locale/codecvt/unicode/char.cc: Remove bom usage.
+ * testsuite/22_locale/codecvt/unicode/wchar_t.cc: Same.
+
+2003-04-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/std_fstream.h (basic_filebuf): _M_pback_destroy to
+ _M_destroy_pback. _M_pback_create to
+ _M_create_pback. _M_underflow_common to
+ _M_underflow. _M_really_overflow to _M_overflow.
+ * include/bits/fstream.tcc: Same.
+ * src/fstream.cc: Same.
+ * include/std/std_streambuf.h (basic_streambuf): _M_in_cur_move to
+ _M_move_in_cur. _M_out_cur_move to _M_move_out_cur.
+ * include/bits/streambuf.tcc: Same.
+ * include/bits/fstream.tcc: Same.
+ * include/bits/sstream.tcc: Same.
+
+2003-04-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_classes.h (locale::_Impl): Change _M_names
+ from fixed size array.
+ (locale): Change _S_categories as well.
+ Formatting tweaks.
+ * include/bits/locale_facets.tcc: Tweak.
+ * config/locale/gnu/c_locale.cc: Assign _S_categories.
+ * config/locale/generic/c_locale.cc: Same.
+ * src/locale.cc: Tweak.
+ * src/globals.cc: Change facet_name to name_vec, add names_c.
+ * src/localename.cc: Use them.
+ (locale::_Impl::~_Impl): Destroy _M_names.
+ (locale::_Impl::_Impl): Create _M_names.
+
+2003-04-27 Andreas Schwab <schwab@suse.de>
+
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h
+ (__enc_traits): Use __ibom and __ebom instead of ignoring them.
+
+2003-04-27 Nathan Myers <ncm@cantrip.org>
+
+ Move some basic_string members out of line because
+ they are too big to reasonably be inline.
+ * include/bits/basic_string.h
+ (assign(const basic_string&, size_type, size_type),
+ assign(const _CharT*, size_type),
+ insert(size_type, const basic_string&, size_type, size_type),
+ insert(size_type, const _CharT*, size_type),
+ replace(size_type, size_type, const _CharT*, size_type)):
+ Move from here to...
+ * include/bits/basic_string.tcc: ...here.
+
+2003-04-26 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (pbackfail): Shorten a bit (10 lines)
+ the innermost 'if' by factoring out some code.
+
+2003-04-26 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/streambuf.tcc (__copy_streambufs): Don't
+ use in_avail(), simplify.
+
+2003-04-26 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (setbuf): don't set _M_buf_size,
+ in basic_stringbuf it's unused.
+
+ * include/std/std_sstream.h (underflow): consistently use
+ _M_in_cur, not gptr().
+
+2003-04-25 Ranjit Mathew <rmathew@hotmail.com>
+ Phil Edwards <pme@gcc.gnu.org>
+
+ * testsuite_flags.in: Guard against the possibility
+ of having "xgcc" as a part of a folder name in the
+ path to the GCC build folder.
+ * testsuite/Makefile.am: Likewise.
+ * testsuite/Makefile.in: Regenerated.
+
+2003-04-25 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/10132
+ * include/std/std_fstream.h (basic_filebuf::is_open): Add throw()
+ exception specifications.
+ (basic_filebuf::close): Same.
+ (basic_filebuf::_M_pback_destroy): Same.
+ (basic_filebuf::_M_destroy_internal_buffer): Same.
+ (basic_filebuf): Remove __res_type typedef.
+ * src/fstream.cc: Same.
+ * include/bits/fstream.tcc
+ (basic_filebuf::_M_convert_to_external): Simplify.
+ (basic_filebuf::seekoff): Use has_facet before use_facet.
+ (basic_filebuf::close): Add exception specification of throw().
+ * testsuite/27_io/basic_filebuf/cons: New.
+ * testsuite/27_io/basic_filebuf/cons/wchar_t: New.
+ * testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc: New.
+ * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: New.
+ * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: New.
+
+2003-04-25 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_classes.h
+ (locale::_S_extra_categories_size): Remove.
+ * src/locale.cc: Remove _S_extra_categories_size.
+ * src/localename.cc: Same.
+ * config/locale/gnu/c_locale.cc: Same.
+ * config/locale/generic/c_locale.cc: Same.
+
+2003-04-24 Richard Sandiford <rsandifo@redhat.com>
+
+ * src/localename.cc (__gnu_cxx::facet_vec): Correct types.
+
+2003-04-24 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/17_intro/howto.html: Update some links.
+ * docs/html/18_support/howto.html: Link doxygen numeric_limits notes.
+ * docs/html/27_io/howto.html: Link doxygen stdio_filebuf notes.
+ * docs/html/ext/howto.html: Link to demangler notes and API.
+ * docs/html/faq/index.html: Remove trailing whitespace.
+ (1.4, 2.4, 3.8, 4.1): Bring up to date.
+ (5.6): Change to a bulleted list.
+
+ * docs/html/faq/index.txt, docs/html/documentation.html,
+ docs/html/17_intro/porting.html: Regenerate.
+
+2003-04-23 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/basic_filebuf/3.cc: _S_pback_size now
+ belongs to basic_filebuf.
+ * testsuite/27_io/basic_fstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ifstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ios/3.cc: Remove _S_pback_size
+ instantiation (now belongs to basic_filebuf).
+ * testsuite/27_io/basic_iostream/3.cc: Likewise.
+ * testsuite/27_io/basic_istream/3.cc: Likewise.
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
+ _S_pback_size now belongs to basic_filebuf.
+ * testsuite/27_io/basic_istringstream/3.cc: Remove _S_pback_size
+ instantiation (now belongs to basic_filebuf).
+ * testsuite/27_io/basic_ofstream/3.cc: _S_pback_size now
+ belongs to basic_filebuf.
+ * testsuite/27_io/basic_ostream/3.cc: Remove _S_pback_size
+ instantiation (now belongs to basic_filebuf).
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc:
+ _S_pback_size now belongs to basic_filebuf.
+ * testsuite/27_io/basic_ostringstream/3.cc: Remove _S_pback_size
+ instantiation (now belongs to basic_filebuf).
+ * testsuite/27_io/basic_streambuf/3.cc: _S_pback_size now belongs
+ to basic_filebuf.
+ * testsuite/27_io/basic_stringbuf/3.cc: Remove _S_pback_size
+ instantiation (now belongs to basic_filebuf).
+ * testsuite/27_io/basic_stringstream/3.cc: Likewise.
+
+2003-04-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in: Move GLIBCPP_CHECK_PCH before native/cross conditions.
+ * configure: Regenerated.
+
+2003-04-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/locale/generic/c_locale.h (__convert_from_v): Use
+ attribute unused.
+
+2003-04-23 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/ext/howto.html ('LWG Issues'): Add issue 60, partial
+ implementation only.
+ * include/bits/istream.tcc (putback, unget, sync, tellg, seekg):
+ Comment and change to comply with DR 60 and the effect on gcount().
+ * include/std/std_istream.h: Update comments.
+ * testsuite/27_io/basic_istream/putback/char/1.cc (test01): Add
+ comments about reasons for tests. Test sync() against gcount().
+ * testsuite/27_io/basic_istream/seekg/char/2.cc: New file, test
+ for effect on gcount().
+ * testsuite/27_io/basic_istream/tellg/char/2.cc: New file, test
+ for effect on gcount().
+
+2003-04-22 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/27_io/basic_filebuf/close/char/9964.cc (test_07):
+ Adjust timing.
+
+2003-04-22 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (_S_pback_size, _M_pback,
+ _M_pback_cur_save, _M_pback_end_save, _M_pback_init,
+ _M_pback_create(), _M_pback_destroy()): Move to basic_filebuf.
+ (basic_streambuf::basic_streambuf()): Adjust.
+ * include/std/std_fstream.h (_S_pback_size, _M_pback,
+ _M_pback_cur_save, _M_pback_end_save, _M_pback_init,
+ _M_pback_create(), _M_pback_destroy()): Moved here
+ from basic_streambuf.
+ * include/bits/fstream.tcc (basic_filebuf::basic_filebuf()):
+ Adjust.
+ (basic_filebuf::_S_pback_size): Add declaration.
+ * include/bits/streambuf.tcc (basic_streambuf::_S_pback_size):
+ Remove declaration.
+
+2003-04-21 Paolo Carlini <pcarlini@unitus.it>
+
+ Consistently use _M_in_beg instead of eback(), _M_in_cur
+ instead of gptr(), and so on.
+ * include/bits/fstream.tcc (pbackfail, imbue): Here.
+ * include/bits/sstream.tcc (pbackfail, seekoff, seekpos): Ditto.
+ * include/bits/streambuf.tcc (sbumpc, sputbackc,
+ __copy_streambufs): Ditto.
+ * include/std/std_streambuf.h (sgetc): Ditto.
+
+2003-04-21 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (pbackfail, overflow):
+ Formatting fixes.
+
+2003-04-21 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (uflow()): It's used only by
+ basic_stringbuf (i.e., basic_filebuf provide its own uflow()),
+ therefore do not consider the _M_buf_unified == true case.
+
+ * include/std/std_streambuf.h (sgetc()): Restore __ret variable.
+
+2003-04-20 Paolo Carlini <pcarlini@unitus.it>
+
+ * docs/html/ext/howto.html ('LWG Issues'):
+ Add issues 19, 90, 171, 231, 271.
+
+2003-04-20 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (pbackfail): Remove redundant
+ NULL pointer check from test involving _M_in_*.
+ (overflow, seekoff, seekpos): Const qualify bool variables.
+ * include/std/std_sstream.h (underflow): Remove redundant
+ NULL pointer check from test involving _M_in_*.
+ (_M_really_sync): Const qualify bool variables.
+ * src/fstream.cc (_M_underflow_common): Remove redundant
+ NULL pointer check from test involving _M_in_*, const qualify
+ bool variables.
+
+ * include/std/std_streambuf.h (sgetc): Remove redundant
+ variable.
+
+2003-04-18 Paolo Carlini <pcarlini@unitus.it>
+
+ According to 5.9 para 2 (second bullet) for pointers p, q
+ pointing to the same type, with p == 0 and q == 0, (p < q)
+ is false.
+ * include/bits/fstream.tcc (close, overflow, _M_really_overflow,
+ seekoff): Remove redundant NULL pointer checks from tests
+ involving _M_out_* and _M_in_*, const qualify bool variables.
+ (showmanyc, pbackfail, _M_convert_to_external, imbue): Const
+ qualify bool variables.
+ * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc, sputc):
+ Remove redundant NULL pointer checks from tests involving
+ _M_out_* and _M_in_*, const qualify bool variables.
+ * include/std/std_fstream.h (sync): Likewise.
+ (_M_is_indeterminate): Const qualify bool variables.
+ * include/std/std_streambuf.h (sgetc, uflow): Remove redundant
+ NULL pointer checks from tests involving _M_out_* and _M_in_*,
+ const qualify bool variables.
+ (_M_in_cur_move, _M_out_cur_move, uflow): Const qualify bool
+ variables.
+
+2003-04-18 Loren J. Rittle <ljrittle@acm.org>
+
+ * include/c_std/std_cmath.h (C99 FP capture): Only undefine said
+ C99 FP macros, if actually captured.
+
+ * docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
+ (_GLIBCPP_USE_C99_DYNAMIC): New macro.
+ (_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
+ (_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
+ * config/os/bsd/freebsd/os_defines.h (_GLIBCPP_USE_C99_CHECK):
+ New macro.
+ (_GLIBCPP_USE_C99_DYNAMIC): New macro.
+ (_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
+ (_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
+ * include/c_std/std_cstdlib.h: Use new macros.
+ * include/c_std/std_cstdio.h: Use new macros.
+ * include/c_std/std_cwchar.h: Use new macros.
+
+2003-04-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/9555
+ * include/bits/ostream.tcc: Catch all exceptions for formatted
+ output, instead of std::exception and derivatives.
+ * include/bits/istream.tcc: Same.
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc:
+ * testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc:
+ * testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc:
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc:
+ * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
+ * testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc:
+ New.
+
+2003-04-17 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/bits/c++config: Minor cosmetic tweaks.
+
+2003-04-17 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite_flags.in (PCHFLAGS): Find PCH in new home.
+ * include/Makefile.am (pch_input): Find in ${target_builddir}.
+ (pch_output): Rename to...
+ (pch_output_builddir): ..this. Find in ${target_builddir}.
+ (pch_source): Tweak.
+ (pch_build): Key off a built file.
+ (pch_output rule): Rename to...
+ (pch_input rule): ...this. Produce ${pch_output_builddir}
+ instead of ${pch_output}.
+ (install-pch rule): Install ${pch_output_builddir}.
+ * include/Makefile.in: Regenerated.
+
+2003-04-17 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (setp): _M_out_lim, being
+ the end limit of used put area, is set equal to _M_out_beg.
+
+2003-04-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_CHECK_PCH): New.
+ * aclocal.m4: Regenerated.
+ * configure.in: Remove old demangler bits.
+ Call pch checks.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * include/Makefile.am (allstamps): Now allstamped.
+ (allcreated): Define this.
+ (all-local): Use 'em.
+ Conditionally define pch_build, pch_install based on
+ GLIBCPP_BUILD_PCH.
+ (${pch_output}): New rule.
+ (install-pch): New rule.
+ (install-headers): New rule.
+ (install-data-local): Install headers and conditionally pch.
+ * include/Makefile.in: Regenerate.
+ * testsuite_flags.in (--build-cxx): Use pch file.
+
+2003-04-16 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/ext/sgiexts.html: Fix path to stylesheet.
+
+2003-04-15 Benjamin Kosnik <bkoz at redhat dot com>
+ Paolo Carlini <pcarlini at unitus dot it>
+
+ PR libstdc++/9423
+ * docs/html/27_io/howto.html
+ ('The buffering is screwing up my program!'): Explain that
+ opening counts as an I/O operation.
+
+2003-04-15 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/thread/pthread1.cc: Enable for darwin test.
+ * testsuite/thread/pthread2.cc: Same.
+ * testsuite/thread/pthread3.cc: Same.
+ * testsuite/thread/pthread4.cc: Same.
+ * testsuite/thread/pthread5.cc: Same.
+ * testsuite/thread/pthread6.cc: Same.
+
+2003-04-15 Loren J. Rittle <ljrittle@acm.org>
+
+ libstdc++/7680
+ * include/c_std/std_cmath.h (__gnu_cx::__c99_binding): New namespace.
+ Populate it with multiple legal ways to obtain the C99 float
+ transcendentals. Use them instead of direct global reference.
+ (C99 FP capture): Guard usage with _GLIBCPP_USE_C99_FP_MACROS_DYNAMIC.
+ * docs/html/17_intro/porting.texi
+ (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
+ (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
+ (_GLIBCPP_USE_C99_FP_MACROS_DYNAMIC): New macro.
+ * config/os/bsd/freebsd/os_defines.h
+ (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK): New macro.
+ (_GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): New macro.
+ * testsuite/26_numerics/c_math_dynamic.cc: New file.
+
+2003-04-14 Andreas Tobler <toa@pop.agri.ch>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/os/generic/ctype_inline.h: Fix.
+
+2003-04-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_hooks.h
+ (__gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher):
+ Change to try_named_locale.
+ * testsuite/testsuite_hooks.cc (__gnu_cxx_test): Same.
+
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Use
+ try_named_locale.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/7.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/8.cc: Same.
+ * testsuite/22_locale/codecvt/in/wchar_t/9.cc: Same.
+ * testsuite/22_locale/codecvt/length/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/length/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/length/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/length/wchar_t/7.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/out/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/out/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/out/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/out/wchar_t/7.cc: Same.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Same.
+ * testsuite/22_locale/collate/compare/char/1.cc: Same.
+ * testsuite/22_locale/collate/compare/char/2.cc: Same.
+ * testsuite/22_locale/collate/compare/char/3.cc: Same.
+ * testsuite/22_locale/collate/compare/wchar_t/1.cc: Same.
+ * testsuite/22_locale/collate/compare/wchar_t/2.cc: Same.
+ * testsuite/22_locale/collate/compare/wchar_t/3.cc: Same.
+ * testsuite/22_locale/collate/hash/char/2.cc: Same.
+ * testsuite/22_locale/collate/hash/wchar_t/2.cc: Same.
+ * testsuite/22_locale/collate/transform/char/2.cc: Same.
+ * testsuite/22_locale/collate/transform/char/3.cc: Same.
+ * testsuite/22_locale/collate/transform/wchar_t/2.cc: Same.
+ * testsuite/22_locale/collate/transform/wchar_t/3.cc: Same.
+ * testsuite/22_locale/collate_byname/1.cc: Same.
+ * testsuite/22_locale/ctype/is/char/2.cc: Same.
+ * testsuite/22_locale/ctype/is/wchar_t/2.cc: Same.
+ * testsuite/22_locale/ctype/narrow/wchar_t/3.cc: Same.
+ * testsuite/22_locale/ctype/widen/wchar_t/2.cc: Same.
+ * testsuite/22_locale/ctype/widen/wchar_t/3.cc: Same.
+ * testsuite/22_locale/facet/2.cc: Same.
+ * testsuite/22_locale/locale/cons/2.cc: Same.
+ * testsuite/22_locale/locale/cons/4.cc: Same.
+ * testsuite/22_locale/locale/cons/5.cc: Same.
+ * testsuite/22_locale/locale/cons/7.cc: Same.
+ * testsuite/22_locale/locale/cons/7222-c.cc: Same.
+ * testsuite/22_locale/locale/cons/7222-env.cc: Same.
+ * testsuite/22_locale/locale/global_locale_objects/2.cc: Same.
+ * testsuite/22_locale/messages/members/char/1.cc: Same.
+ * testsuite/22_locale/messages/members/char/2.cc: Same.
+ * testsuite/22_locale/messages/members/char/3.cc: Same.
+ * testsuite/22_locale/messages_byname/1.cc: Same.
+ * testsuite/22_locale/money_get/get/char/1.cc: Same.
+ * testsuite/22_locale/money_get/get/char/2.cc: Same.
+ * testsuite/22_locale/money_get/get/char/3.cc: Same.
+ * testsuite/22_locale/money_get/get/char/4.cc: Same.
+ * testsuite/22_locale/money_get/get/wchar_t/1.cc: Same.
+ * testsuite/22_locale/money_get/get/wchar_t/2.cc: Same.
+ * testsuite/22_locale/money_get/get/wchar_t/3.cc: Same.
+ * testsuite/22_locale/money_get/get/wchar_t/4.cc: Same.
+ * testsuite/22_locale/money_put/put/char/1.cc: Same.
+ * testsuite/22_locale/money_put/put/char/2.cc: Same.
+ * testsuite/22_locale/money_put/put/char/3.cc: Same.
+ * testsuite/22_locale/money_put/put/wchar_t/1.cc: Same.
+ * testsuite/22_locale/money_put/put/wchar_t/2.cc: Same.
+ * testsuite/22_locale/money_put/put/wchar_t/3.cc: Same.
+ * testsuite/22_locale/moneypunct/members/char/2.cc: Same.
+ * testsuite/22_locale/moneypunct/members/wchar_t/2.cc: Same.
+ * testsuite/22_locale/moneypunct_byname/1.cc: Same.
+ * testsuite/22_locale/num_get/get/char/1.cc: Same.
+ * testsuite/22_locale/num_get/get/char/2.cc: Same.
+ * testsuite/22_locale/num_get/get/char/3.cc: Same.
+ * testsuite/22_locale/num_get/get/char/5.cc: Same.
+ * testsuite/22_locale/num_get/get/char/6.cc: Same.
+ * testsuite/22_locale/num_get/get/wchar_t/1.cc: Same.
+ * testsuite/22_locale/num_get/get/wchar_t/2.cc: Same.
+ * testsuite/22_locale/num_get/get/wchar_t/3.cc: Same.
+ * testsuite/22_locale/num_get/get/wchar_t/5.cc: Same.
+ * testsuite/22_locale/num_get/get/wchar_t/6.cc: Same.
+ * testsuite/22_locale/num_put/put/char/1.cc: Same.
+ * testsuite/22_locale/num_put/put/char/2.cc: Same.
+ * testsuite/22_locale/num_put/put/char/3.cc: Same.
+ * testsuite/22_locale/num_put/put/char/5.cc: Same.
+ * testsuite/22_locale/num_put/put/wchar_t/1.cc: Same.
+ * testsuite/22_locale/num_put/put/wchar_t/2.cc: Same.
+ * testsuite/22_locale/num_put/put/wchar_t/3.cc: Same.
+ * testsuite/22_locale/num_put/put/wchar_t/5.cc: Same.
+ * testsuite/22_locale/numpunct/members/char/1.cc: Same.
+ * testsuite/22_locale/numpunct/members/char/2.cc: Same.
+ * testsuite/22_locale/numpunct/members/wchar_t/1.cc: Same.
+ * testsuite/22_locale/numpunct/members/wchar_t/2.cc: Same.
+ * testsuite/22_locale/numpunct_byname/1.cc: Same.
+ * testsuite/22_locale/numpunct_byname/2.cc: Same.
+ * testsuite/22_locale/time_get/date_order/char/1.cc: Same.
+ * testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_get/get_date/char/1.cc: Same.
+ * testsuite/22_locale/time_get/get_date/char/2.cc: Same.
+ * testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Same.
+ * testsuite/22_locale/time_get/get_monthname/char/1.cc: Same.
+ * testsuite/22_locale/time_get/get_monthname/char/2.cc: Same.
+ * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Same.
+ * testsuite/22_locale/time_get/get_time/char/1.cc: Same.
+ * testsuite/22_locale/time_get/get_time/char/2.cc: Same.
+ * testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Same.
+ * testsuite/22_locale/time_get/get_weekday/char/1.cc: Same.
+ * testsuite/22_locale/time_get/get_weekday/char/2.cc: Same.
+ * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Same.
+ * testsuite/22_locale/time_get/get_year/char/1.cc: Same.
+ * testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_put/put/char/1.cc: Same.
+ * testsuite/22_locale/time_put/put/char/2.cc: Same.
+ * testsuite/22_locale/time_put/put/char/3.cc: Same.
+ * testsuite/22_locale/time_put/put/char/4.cc: Same.
+ * testsuite/22_locale/time_put/put/char/5.cc: Same.
+ * testsuite/22_locale/time_put/put/char/6.cc: Same.
+ * testsuite/22_locale/time_put/put/char/7.cc: Same.
+ * testsuite/22_locale/time_put/put/char/8.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/1.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/2.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/3.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/4.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/5.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/6.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/7.cc: Same.
+ * testsuite/22_locale/time_put/put/wchar_t/8.cc: Same.
+ * testsuite/27_io/basic_filebuf/imbue/char/9322.cc: Same.
+ * testsuite/27_io/basic_ios/copyfmt/char/2.cc: Same.
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc: Same.
+ * testsuite/27_io/basic_streambuf/imbue/char/9322.cc: Same.
+ * testsuite/27_io/basic_stringbuf/imbue/char/9322.cc: Same.
+
+2003-04-14 Andreas Tobler <toa@pop.agri.ch>
+
+ * configure.target (_cpu_incdir_fullpath): Solaris 2.9 uses
+ solaris includes, not generic.
+
+2003-04-14 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/26_numerics/c99_classification_macros_c.cc: Add XFAIL.
+
+ * include/std/std_bitset.h (_M_do_find_next): Fix -Wall nit.
+ * include/bits/concept_check.h: Fix multi-line comment.
+ * testsuite/17_intro/headers.cc (dg-options): Add -Wall -Wsystem-header
+ when target is *-*-freebsd*.
+
+2003-04-14 Nathan Myers <ncm@cantrip.org>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9701 (in_avail())
+ * include/std/std_streambuf.h (in_avail): Simplify, in_avail
+ doesn't care if there is anything in some putback cell.
+ * testsuite/27_io/basic_streambuf/in_avail/char/9701-3.cc: Add.
+
+ * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Remove some
+ unused string literals.
+
+2003-04-14 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (basic_filebuf::setbuf): Don't set
+ _M_out_end, _M_set_indeterminate() does it.
+
+2003-04-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * os/hpux/ctype_inline.h: Replace with gnu-linux version.
+
+2003-04-12 David Edelsohn <edelsohn@gnu.org>
+
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc:
+ Change basic_streambuf instantiation to "unsigned char".
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+
+2003-04-12 Paolo Carlini <pcarlini@unitus.it>
+
+ Remove _M_buf_size_opt, use directly _M_buf_size instead.
+ * include/bits/fstream.tcc
+ (basic_filebuf::_M_allocate_internal_buffer, setbuf): Remove
+ references to _M_buf_size_opt.
+ * include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise.
+ * include/bits/streambuf.tcc (__copy_streambufs): Likewise, rename
+ __bufsize to __in_avail and __size_opt to __buf_size.
+ * include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf): Likewise.
+ * include/std/std_sstream.h (_M_stringbuf_init, setbuf): Likewise.
+ * include/std/std_streambuf.h (~basic_streambuf(),
+ basic_streambuf()): Likewise, remove _M_buf_size_opt member.
+ * testsuite/27_io/basic_filebuf/close/char/3.cc: Set _M_buf_size.
+ * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/snextc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
+
+2003-04-12 Paolo Carlini <pcarlini at unitus dot it>
+
+ * include/ext/stdio_filebuf.h
+ (stdio_filebuf::stdio_filebuf(int, openmode, bool, size_t),
+ stdio_filebuf::stdio_filebuf(__c_file*, openmode, size_t):
+ _M_buf_size_opt == 0 only means "not to use an allocated buffer"
+ since a stack-based buffer is used for small values of the size_t
+ parameter.
+ * include/bits/fstream.tcc (basic_filebuf::_M_really_overflow).
+ If _M_buf_size != 0 flush out the buffer (any kind, stack-based too).
+ * testsuite/ext/stdio_filebuf_2.cc: New testfile.
+
+2003-04-12 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9533
+ * testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc: New.
+ * testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc: Ditto.
+
+2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/22_locale/locale/cons/3.cc: Split.
+ * testsuite/22_locale/locale/cons/7222-c.cc: New.
+ * testsuite/22_locale/locale/cons/7222-env.cc: New.
+ Check before trying to create a locale from the environment.
+ * testsuite/27_io/ios_base/state/1.cc (test02): Use "C" locale.
+ * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
+ Adjust includes.
+
+2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/22_locale/ctype/is/char/3.cc (test03): Use the classic
+ locale to construct this hybrid locale, not the global locale.
+
+2003-04-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Add
+ instantiation for AIX.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Same.
+ * testsuite/25_algorithms/min_max.cc: Same.
+
+2003-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * basic_file_stdio.cc (__basic_file<char>::close): Don't flush stream
+ twice. Always set _M_cfile to 0 when stream was open.
+
+2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ Reshuffle 27_io testsuite.
+ * testsuite/27_io/filebuf.cc,
+ filebuf_members-1.tst, filebuf_members-1.txt, filebuf_members.cc,
+ filebuf_virtuals-1.tst, filebuf_virtuals-1.txt,
+ filebuf_virtuals-2.tst, filebuf_virtuals-3.tst,
+ filebuf_virtuals.cc, fpos.cc, fstream.cc, fstream_members.cc,
+ ifstream.cc, ifstream_members-1.tst, ifstream_members-1.txt,
+ ifstream_members.cc, instantiations.cc, ios.cc,
+ ios_base_callbacks.cc, ios_base_members_static-1.tst,
+ ios_base_members_static.cc, ios_base_storage.cc,
+ ios_base_types.cc, ios_ctor.cc, ios_init.cc,
+ ios_manip_basefield.cc, ios_manip_fmtflags.cc, ios_members.cc,
+ iostream.cc, iostream_members.cc, istream.cc,
+ istream_exception.cc, istream_extractor_char.cc,
+ istream_extractor_other-1.tst, istream_extractor_other-1.txt,
+ istream_extractor_other-2.tst, istream_extractor_other.cc,
+ istream_manip.cc, istream_seeks-1.tst, istream_seeks-1.txt,
+ istream_seeks-2.tst, istream_seeks-3.tst, istream_seeks.cc,
+ istream_sentry.cc, istream_unformatted-1.tst,
+ istream_unformatted-1.txt, istream_unformatted.cc,
+ istringstream.cc, istringstream_members.cc,
+ narrow_stream_objects.cc, ofstream.cc, ofstream_members-1.tst,
+ ofstream_members.cc, ostream.cc, ostream_exception.cc,
+ ostream_fail.cc, ostream_inserter_arith.cc,
+ ostream_inserter_char-1.tst, ostream_inserter_char-1.txt,
+ ostream_inserter_char.cc, ostream_inserter_other-1.tst,
+ ostream_inserter_other-2.tst, ostream_inserter_other.cc,
+ ostream_manip.cc, ostream_seeks-1.tst, ostream_seeks.cc,
+ ostream_sentry.cc, ostream_unformatted.cc, ostringstream.cc,
+ ostringstream_members.cc, standard_manipulators.cc, streambuf.cc,
+ streambuf_members.cc, stringbuf.cc, stringbuf_members.cc,
+ stringbuf_virtuals.cc, stringstream.cc, stringstream_members.cc,
+ wide_stream_objects.cc, istream_extractor_arith/01.cc,
+ istream_extractor_arith/02.cc, istream_extractor_arith/03.cc,
+ istream_extractor_arith/06.cc, istream_extractor_arith/07.cc,
+ istream_extractor_arith/08.cc, istream_extractor_arith/09.cc,
+ istream_extractor_arith/10.cc, istream_extractor_arith/11.cc,
+ istream_extractor_arith/12.cc, istream_extractor_arith/13.cc:
+ Split into...
+ * 27_io/basic_filebuf/1.cc: New.
+ * 27_io/basic_filebuf/2.cc: New.
+ * 27_io/basic_filebuf/3.cc: New.
+ * 27_io/basic_filebuf/4.cc: New.
+ * 27_io/basic_filebuf/close/char/1.cc: New.
+ * 27_io/basic_filebuf/close/char/2.cc: New.
+ * 27_io/basic_filebuf/close/char/3.cc: New.
+ * 27_io/basic_filebuf/close/char/4879.cc: New.
+ * 27_io/basic_filebuf/close/char/9964.cc: New.
+ * 27_io/basic_filebuf/imbue/char/1.cc: New.
+ * 27_io/basic_filebuf/imbue/char/9322.cc: New.
+ * 27_io/basic_filebuf/in_avail/char/1.cc: New.
+ * 27_io/basic_filebuf/is_open/char/1.cc: New.
+ * 27_io/basic_filebuf/open/char/1.cc: New.
+ * 27_io/basic_filebuf/open/char/2.cc: New.
+ * 27_io/basic_filebuf/open/char/3.cc: New.
+ * 27_io/basic_filebuf/open/char/9507.cc: New.
+ * 27_io/basic_filebuf/overflow/char/1.cc: New.
+ * 27_io/basic_filebuf/overflow/char/3599.cc: New.
+ * 27_io/basic_filebuf/overflow/char/9169.cc: New.
+ * 27_io/basic_filebuf/overflow/char/9182-2.cc: New.
+ * 27_io/basic_filebuf/overflow/char/9988.cc: New.
+ * 27_io/basic_filebuf/sbumpc/char/1.cc: New.
+ * 27_io/basic_filebuf/sbumpc/char/9825.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/1.cc: New.
+ * 27_io/basic_filebuf/seekoff/char/2.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/1.cc: New.
+ * 27_io/basic_filebuf/seekpos/char/2.cc: New.
+ * 27_io/basic_filebuf/setbuf/char/1.cc: New.
+ * 27_io/basic_filebuf/setbuf/char/2.cc: New.
+ * 27_io/basic_filebuf/setbuf/char/3.cc: New.
+ * 27_io/basic_filebuf/sgetc/char/1.cc: New.
+ * 27_io/basic_filebuf/sgetn/char/1.cc: New.
+ * 27_io/basic_filebuf/sgetn/char/2.cc: New.
+ * 27_io/basic_filebuf/snextc/char/1.cc: New.
+ * 27_io/basic_filebuf/sputbackc/char/1.cc: New.
+ * 27_io/basic_filebuf/sputbackc/char/9425.cc: New.
+ * 27_io/basic_filebuf/sputc/char/1.cc: New.
+ * 27_io/basic_filebuf/sputc/char/1057.cc: New.
+ * 27_io/basic_filebuf/sputc/char/9701-2.cc: New.
+ * 27_io/basic_filebuf/sputn/char/1.cc: New.
+ * 27_io/basic_filebuf/sputn/char/1057.cc: New.
+ * 27_io/basic_filebuf/sputn/char/9701-1.cc: New.
+ * 27_io/basic_filebuf/sungetc/char/1.cc: New.
+ * 27_io/basic_filebuf/sync/char/1057.cc: New.
+ * 27_io/basic_filebuf/sync/char/9182-1.cc: New.
+ * 27_io/basic_filebuf/underflow/char/10097.cc: New.
+ * 27_io/basic_fstream/1.cc: New.
+ * 27_io/basic_fstream/2.cc: New.
+ * 27_io/basic_fstream/3.cc: New.
+ * 27_io/basic_fstream/4.cc: New.
+ * 27_io/basic_fstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_ifstream/1.cc: New.
+ * 27_io/basic_ifstream/2.cc: New.
+ * 27_io/basic_ifstream/3.cc: New.
+ * 27_io/basic_ifstream/4.cc: New.
+ * 27_io/basic_ifstream/cons/char/1.cc: New.
+ * 27_io/basic_ifstream/open/char/1.cc: New.
+ * 27_io/basic_ifstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_ios/1.cc: New.
+ * 27_io/basic_ios/2.cc: New.
+ * 27_io/basic_ios/3.cc: New.
+ * 27_io/basic_ios/4.cc: New.
+ * 27_io/basic_ios/clear/char/1.cc: New.
+ * 27_io/basic_ios/cons/char/1.cc: New.
+ * 27_io/basic_ios/cons/char/2.cc: New.
+ * 27_io/basic_ios/cons/char/3.cc: New.
+ * 27_io/basic_ios/copyfmt/char/1.cc: New.
+ * 27_io/basic_ios/copyfmt/char/2.cc: New.
+ * 27_io/basic_ios/exceptions/char/1.cc: New.
+ * 27_io/basic_ios/locales/char/1.cc: New.
+ * 27_io/basic_iostream/1.cc: New.
+ * 27_io/basic_iostream/2.cc: New.
+ * 27_io/basic_iostream/3.cc: New.
+ * 27_io/basic_iostream/4.cc: New.
+ * 27_io/basic_istream/1.cc: New.
+ * 27_io/basic_istream/2.cc: New.
+ * 27_io/basic_istream/3.cc: New.
+ * 27_io/basic_istream/4.cc: New.
+ * 27_io/basic_istream/exceptions/char/9561.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/01.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/02.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/03.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/06.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/07.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/08.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/09.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/10.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/11.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/12.cc: New.
+ * 27_io/basic_istream/extractors_arithmetic/char/13.cc: New.
+ * 27_io/basic_istream/extractors_character/char/1.cc: New.
+ * 27_io/basic_istream/extractors_character/char/2.cc: New.
+ * 27_io/basic_istream/extractors_character/char/3.cc: New.
+ * 27_io/basic_istream/extractors_character/char/9826.cc: New.
+ * 27_io/basic_istream/extractors_other/char/1.cc: New.
+ * 27_io/basic_istream/extractors_other/char/2.cc: New.
+ * 27_io/basic_istream/extractors_other/char/3.cc: New.
+ * 27_io/basic_istream/extractors_other/char/9318-in.cc: New.
+ * 27_io/basic_istream/extractors_other/char/9424-in.cc: New.
+ * 27_io/basic_istream/get/char/1.cc: New.
+ * 27_io/basic_istream/get/char/2.cc: New.
+ * 27_io/basic_istream/getline/char/1.cc: New.
+ * 27_io/basic_istream/getline/char/2.cc: New.
+ * 27_io/basic_istream/getline/char/3.cc: New.
+ * 27_io/basic_istream/ignore/char/1.cc: New.
+ * 27_io/basic_istream/ignore/char/6360.cc: New.
+ * 27_io/basic_istream/ignore/char/7220.cc: New.
+ * 27_io/basic_istream/peek/char/1.cc: New.
+ * 27_io/basic_istream/peek/char/6414.cc: New.
+ * 27_io/basic_istream/putback/char/1.cc: New.
+ * 27_io/basic_istream/read/char/1.cc: New.
+ * 27_io/basic_istream/read/char/2.cc: New.
+ * 27_io/basic_istream/read/char/3.cc: New.
+ * 27_io/basic_istream/readsome/char/6746-1.cc: New.
+ * 27_io/basic_istream/readsome/char/6746-2.cc: New.
+ * 27_io/basic_istream/readsome/char/8258.cc: New.
+ * 27_io/basic_istream/seekg/char/2346-fstream.cc: New.
+ * 27_io/basic_istream/seekg/char/2346-sstream.cc: New.
+ * 27_io/basic_istream/seekg/char/8348-1.cc: New.
+ * 27_io/basic_istream/seekg/char/8348-2.cc: New.
+ * 27_io/basic_istream/seekg/char/fstream.cc: New.
+ * 27_io/basic_istream/seekg/char/sstream.cc: New.
+ * 27_io/basic_istream/sentry/char/1.cc: New.
+ * 27_io/basic_istream/sentry/char/2.cc: New.
+ * 27_io/basic_istream/sentry/char/3.cc: New.
+ * 27_io/basic_istream/sentry/char/3983-fstream.cc: New.
+ * 27_io/basic_istream/sentry/char/3983-sstream.cc: New.
+ * 27_io/basic_istream/tellg/char/1.cc: New.
+ * 27_io/basic_istream/tellg/char/8348.cc: New.
+ * 27_io/basic_istream/tellg/char/fstream.cc: New.
+ * 27_io/basic_istream/tellg/char/sstream.cc: New.
+ * 27_io/basic_istream/ws/char/1.cc: New.
+ * 27_io/basic_istringstream/1.cc: New.
+ * 27_io/basic_istringstream/2.cc: New.
+ * 27_io/basic_istringstream/3.cc: New.
+ * 27_io/basic_istringstream/4.cc: New.
+ * 27_io/basic_istringstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_istringstream/str/char/1.cc: New.
+ * 27_io/basic_ofstream/1.cc: New.
+ * 27_io/basic_ofstream/2.cc: New.
+ * 27_io/basic_ofstream/3.cc: New.
+ * 27_io/basic_ofstream/4.cc: New.
+ * 27_io/basic_ofstream/cons/char/2.cc: New.
+ * 27_io/basic_ofstream/open/char/1.cc: New.
+ * 27_io/basic_ofstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_ostream/1.cc: New.
+ * 27_io/basic_ostream/2.cc: New.
+ * 27_io/basic_ostream/3.cc: New.
+ * 27_io/basic_ostream/4.cc: New.
+ * 27_io/basic_ostream/cons/char/9827.cc: New.
+ * 27_io/basic_ostream/endl/char/1.cc: New.
+ * 27_io/basic_ostream/ends/char/1.cc: New.
+ * 27_io/basic_ostream/ends/char/2.cc: New.
+ * 27_io/basic_ostream/exceptions/char/9561.cc: New.
+ * 27_io/basic_ostream/flush/char/1.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/1.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/2.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/3.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/4.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/4402.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/5.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/char/6.cc: New.
+ * 27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/1.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/2.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/3.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/4.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/5.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/6.cc: New.
+ * 27_io/basic_ostream/inserters_character/char/8.cc: New.
+ * 27_io/basic_ostream/inserters_character/wchar_t/7.cc: New.
+ * 27_io/basic_ostream/inserters_character/wchar_t/8.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/1.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/2.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/3.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/4.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/9318-out.cc: New.
+ * 27_io/basic_ostream/inserters_other/char/9424-out.cc: New.
+ * 27_io/basic_ostream/sentry/char/1.cc: New.
+ * 27_io/basic_ostream/sentry/char/2.cc: New.
+ * 27_io/basic_ostream/sentry/char/3983-fstream.cc: New.
+ * 27_io/basic_ostream/sentry/char/3983-sstream.cc: New.
+ * 27_io/basic_ostream/tellp/char/1.cc: New.
+ * 27_io/basic_ostream/tellp/char/2.cc: New.
+ * 27_io/basic_ostringstream/1.cc: New.
+ * 27_io/basic_ostringstream/2.cc: New.
+ * 27_io/basic_ostringstream/3.cc: New.
+ * 27_io/basic_ostringstream/4.cc: New.
+ * 27_io/basic_ostringstream/cons/char/3.cc: New.
+ * 27_io/basic_ostringstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_ostringstream/str/char/1.cc: New.
+ * 27_io/basic_ostringstream/str/char/2.cc: New.
+ * 27_io/basic_streambuf/1.cc: New.
+ * 27_io/basic_streambuf/2.cc: New.
+ * 27_io/basic_streambuf/3.cc: New.
+ * 27_io/basic_streambuf/cons/char/1.cc: New.
+ * 27_io/basic_streambuf/imbue/char/1.cc: New.
+ * 27_io/basic_streambuf/imbue/char/9322.cc: New.
+ * 27_io/basic_streambuf/overflow/char/1.cc: New.
+ * 27_io/basic_streambuf/overflow/char/2.cc: New.
+ * 27_io/basic_streambuf/overflow/char/3599.cc: New.
+ * 27_io/basic_streambuf/sgetc/char/1.cc: New.
+ * 27_io/basic_streambuf/sgetn/char/1.cc: New.
+ * 27_io/basic_streambuf/sputbackc/char/9538.cc: New.
+ * 27_io/basic_streambuf/sputc/char/1057.cc: New.
+ * 27_io/basic_streambuf/sputn/char/1.cc: New.
+ * 27_io/basic_streambuf/sputn/char/1057.cc: New.
+ * 27_io/basic_streambuf/sync/char/1057.cc: New.
+ * 27_io/basic_stringbuf/1.cc: New.
+ * 27_io/basic_stringbuf/2.cc: New.
+ * 27_io/basic_stringbuf/3.cc: New.
+ * 27_io/basic_stringbuf/4.cc: New.
+ * 27_io/basic_stringbuf/5.cc: New.
+ * 27_io/basic_stringbuf/imbue/char/1.cc: New.
+ * 27_io/basic_stringbuf/imbue/char/9322.cc: New.
+ * 27_io/basic_stringbuf/in_avail/char/1.cc: New.
+ * 27_io/basic_stringbuf/overflow/char/2.cc: New.
+ * 27_io/basic_stringbuf/overflow/char/3599.cc: New.
+ * 27_io/basic_stringbuf/overflow/char/9988.cc: New.
+ * 27_io/basic_stringbuf/sbumpc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sbumpc/char/9825.cc: New.
+ * 27_io/basic_stringbuf/seekoff/char/1.cc: New.
+ * 27_io/basic_stringbuf/seekoff/char/2.cc: New.
+ * 27_io/basic_stringbuf/seekpos/char/1.cc: New.
+ * 27_io/basic_stringbuf/seekpos/char/2.cc: New.
+ * 27_io/basic_stringbuf/setbuf/char/1.cc: New.
+ * 27_io/basic_stringbuf/setbuf/char/2.cc: New.
+ * 27_io/basic_stringbuf/setbuf/char/3.cc: New.
+ * 27_io/basic_stringbuf/sgetc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sgetn/char/1.cc: New.
+ * 27_io/basic_stringbuf/snextc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sputbackc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sputbackc/char/9425.cc: New.
+ * 27_io/basic_stringbuf/sputc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sputc/char/1057.cc: New.
+ * 27_io/basic_stringbuf/sputc/char/9404-1.cc: New.
+ * 27_io/basic_stringbuf/sputn/char/1.cc: New.
+ * 27_io/basic_stringbuf/sputn/char/1057.cc: New.
+ * 27_io/basic_stringbuf/sputn/char/9404-2.cc: New.
+ * 27_io/basic_stringbuf/str/char/1.cc: New.
+ * 27_io/basic_stringbuf/str/char/2.cc: New.
+ * 27_io/basic_stringbuf/str/char/3.cc: New.
+ * 27_io/basic_stringbuf/str/char/3955.cc: New.
+ * 27_io/basic_stringbuf/sungetc/char/1.cc: New.
+ * 27_io/basic_stringbuf/sync/char/1057.cc: New.
+ * 27_io/basic_stringstream/1.cc: New.
+ * 27_io/basic_stringstream/2.cc: New.
+ * 27_io/basic_stringstream/3.cc: New.
+ * 27_io/basic_stringstream/4.cc: New.
+ * 27_io/basic_stringstream/rdbuf/char/2832.cc: New.
+ * 27_io/basic_stringstream/str/char/1.cc: New.
+ * 27_io/basic_stringstream/str/char/2.cc: New.
+ * 27_io/basic_stringstream/str/char/3.cc: New.
+ * 27_io/basic_stringstream/str/char/4.cc: New.
+ * 27_io/fpos/1.cc: New.
+ * 27_io/fpos/2.cc: New.
+ * 27_io/fpos/3.cc: New.
+ * 27_io/ios_base/callbacks/1.cc: New.
+ * 27_io/ios_base/state/1.cc: New.
+ * 27_io/ios_base/storage/1.cc: New.
+ * 27_io/ios_base/storage/2.cc: New.
+ * 27_io/ios_base/storage/3.cc: New.
+ * 27_io/ios_base/sync_with_stdio/1.cc: New.
+ * 27_io/ios_base/sync_with_stdio/2.cc: New.
+ * 27_io/manipulators/adjustfield/char/1.cc: New.
+ * 27_io/manipulators/adjustfield/char/2.cc: New.
+ * 27_io/manipulators/basefield/char/1.cc: New.
+ * 27_io/manipulators/standard/char/1.cc: New.
+ * 27_io/manipulators/standard/char/2.cc: New.
+ * 27_io/objects/char/1.cc: New.
+ * 27_io/objects/char/2.cc: New.
+ * 27_io/objects/char/2523-1_xin.cc: New.
+ * 27_io/objects/char/2523-1_xin.in: New.
+ * 27_io/objects/char/2523-2_xin.cc: New.
+ * 27_io/objects/char/2523-2_xin.in: New.
+ * 27_io/objects/char/3045.cc: New.
+ * 27_io/objects/char/3647.cc: New.
+ * 27_io/objects/char/3_xin.cc: New.
+ * 27_io/objects/char/3_xin.in: New.
+ * 27_io/objects/char/4_xin.cc: New.
+ * 27_io/objects/char/4_xin.in: New.
+ * 27_io/objects/char/5268.cc: New.
+ * 27_io/objects/char/5280_xin.cc: New.
+ * 27_io/objects/char/5280_xin.in: New.
+ * 27_io/objects/char/6548_xin.cc: New.
+ * 27_io/objects/char/6548_xin.in: New.
+ * 27_io/objects/char/6648-1_xin.cc: New.
+ * 27_io/objects/char/6648-1_xin.in: New.
+ * 27_io/objects/char/6648-2_xin.cc: New.
+ * 27_io/objects/char/6648-2_xin.in: New.
+ * 27_io/objects/char/7744_xin.cc: New.
+ * 27_io/objects/char/7744_xin.in: New.
+ * 27_io/objects/wchar_t/1.cc: New.
+ * 27_io/types/1.cc: New.
+ * 27_io/types/2.cc: New.
+ * data/filebuf_members-1.tst: New.
+ * data/filebuf_members-1.txt: New.
+ * data/filebuf_virtuals-1.tst: New.
+ * data/filebuf_virtuals-1.txt: New.
+ * data/filebuf_virtuals-2.tst: New.
+ * data/filebuf_virtuals-3.tst: New.
+ * data/ifstream_members-1.tst: New.
+ * data/ifstream_members-1.txt: New.
+ * data/ios_base_members_static-1.tst: New.
+ * data/istream_extractor_other-1.tst: New.
+ * data/istream_extractor_other-1.txt: New.
+ * data/istream_extractor_other-2.tst: New.
+ * data/istream_seeks-1.tst: New.
+ * data/istream_seeks-1.txt: New.
+ * data/istream_seeks-2.tst: New.
+ * data/istream_seeks-3.tst: New.
+ * data/istream_unformatted-1.tst: New.
+ * data/istream_unformatted-1.txt: New.
+ * data/ofstream_members-1.tst: New.
+ * data/ostream_inserter_char-1.tst: New.
+ * data/ostream_inserter_char-1.txt: New.
+ * data/ostream_inserter_other-1.tst: New.
+ * data/ostream_inserter_other-2.tst: New.
+ * data/ostream_seeks-1.tst: New.
+
+2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/sstream.tcc (basic_stringbuf::seekpos): Remove
+ requirement that __mode must be strict input or output.
+
+ * include/std/std_streambuf.h (basic_streambuf::setp): Set
+ _M_out_lim.
+
+ * include/std/std_sstream.h (basic_strinbuf::str): Zero length
+ output string shouldn't core.
+ (basic_stringbuf::_M_really_sync): Add base argument. Remove rturn
+ type.
+ * include/bits/sstream.tcc: Adjust _M_really_sync bits here.
+
+ * include/bits/istream.tcc (basic_istream::putback): Set gcount to
+ zero.
+
+2003-04-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/data: New directory.
+ * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Modify
+ to copy files from the testsuite data directory.
+ (libstdc++-v3-list-sourcefiles): Add another test list filter, for
+ testfiles containing _xin, which now means this is an interactive
+ test and should be run with the interactive dejagnu hooks.
+ * testsuite/Makefile.am: Remove testsuite_* files.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-04-09 Zack Weinberg <zack@codesourcery.com>
+
+ * docs/html/install.html: Document complete list of locales
+ required by test suite. Document procedure for installing
+ said locales under Debian. Solicit instructions for other
+ operating systems.
+
+2003-04-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * include/bits/sstream.tcc (overflow): Make sure operands of min
+ and max have the same type.
+
+2003-04-04 Jerry Quinn <jlquinn@optonline.net>
+
+ PR libstdc++/10276
+ * src/ios.cc (ios_base::_M_init): Remove _M_callbacks
+ initialization.
+
+2003-03-31 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_streambuf.h (_M_out_buf_size()): Remove.
+ * include/bits/fstream.tcc (_M_allocate_internal_buffer):
+ Don't set _M_out_end.
+ (basic_filebuf::overflow): Replace _M_out_buf_size() with
+ this->_M_out_cur && this->_M_out_cur < this->_M_out_end.
+ * include/bits/sstream.tcc (basic_stringbuf::overflow):
+ Replace _M_out_buf_size() with this->_M_out_cur < this->_M_out_end;
+ * include/bits/streambuf.tcc (basic_streambuf::sputc):
+ Replace _M_out_buf_size() with _M_out_cur && _M_out_cur < _M_out_end.
+ (basic_streambuf::xsputn): Replace _M_out_buf_size() with
+ _M_out_end - _M_out_cur.
+ (__copy_streambufs): Likewise.
+ * include/std/std_fstream.h (_M_set_determinate): Set
+ _M_out_end here.
+
+2003-03-30 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (basic_filebuf::showmanyc,
+ _M_convert_to_external, _M_really_overflow, seekoff): Fix
+ test for synced buffer.
+ * include/std/std_fstream.h (sync): Likewise.
+ * src/fstream.cc (basic_filebuf<char>::_M_underflow_common,
+ basic_filebuf<wchar_t>::_M_underflow_common): Likewise.
+
+2003-03-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/std_sstream.h (basic_istringstream): Adjust
+ initialization.
+ (basic_ostringstream): Same.
+ (basic_stringstream): Same.
+ * include/std/std_fstream.h (basic_ifstream): Adjust initialization.
+ (basic_ofstream): Same.
+ (basic_fstream): Same.
+ * include/std/std_ostream.h (basic_ostrem): Add protected ctor
+ that does not call init.
+ * include/std/std_istream.h (basic_istream): Same.
+ (basic_iostream): Construct istream, ostream uninitialized, use
+ init to initialize just once. Add protected ctor that does not
+ call init.
+
+2003-03-28 Paolo Carlini <pcarlini@unitus.it>
+ Nathan Myers <ncm@cantrip.org>
+
+ PR libstdc++/9533
+ * include/bits/fstream.tcc (basic_filebuf<>::open): Don't
+ call underflow().
+ (basic_filebuf<>::showmanyc): Use the information provided
+ by codecvt and __basic_file<>::showmanyc_helper to implement
+ a non-trivial showmanyc.
+ * config/io/basic_file_stdio.h
+ (__basic_file<>::showmanyc_helper): New, declare.
+ * config/io/basic_file_stdio.cc
+ (__basic_file<>::showmanyc_helper): Define.
+ (__basic_file<>::_M_open_mode): Don't set O_NONBLOCK.
+ (__basic_file<char>::open): Don't call fcntl().
+ * acinclude.m4 (GLIBCPP_CHECK_S_ISREG_OR_S_IFREG,
+ GLIBCPP_CHECK_POLL): New macros.
+ * configure.in: Call here.
+ * acconfig.h: Add #undefs for the corresponding symbols.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+
+2003-03-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Remove string export restrictions.
+
+2003-03-24 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/21_strings/basic_string/find/char/1.cc: Remove
+ find_first_of, find_last_of and find_last_not_of tests.
+ * testsuite/21_strings/basic_string/find/char/2.cc: find_first_of
+ tests here, new file.
+ * testsuite/21_strings/basic_string/find/wchar_t/1.cc: Likewise,
+ remove wchar_t find_first_of, find_last_of and find_last_not_of tests.
+ * testsuite/21_strings/basic_string/find/wchar_t/2.cc: Likewise,
+ wchar_t find_first_of tests here, new file.
+ * testsuite/21_strings/basic_string/rfind/char/2.cc: find_last_of
+ tests here.
+ * testsuite/21_strings/basic_string/rfind/char/3.cc: find_last_not_of
+ tests here.
+ * testsuite/21_strings/basic_string/rfind/wchar_t/2.cc: likewise,
+ wchar_t find_last_of tests here.
+ * testsuite/21_strings/basic_string/rfind/wchar_t/3.cc: likewise,
+ wchar_t find_last_not_of tests here.
+
+2003-03-22 Loren J. Rittle <ljrittle@acm.org>
+
+ * config/os/hpux/ctype_noninline.h (ctype<char>::classic_table):
+ Correct return value.
+
+2003-03-21 Jerry Quinn <jlquinn@optonline.net>
+
+ PR libstdc++/5730
+ * include/bits/c++config (_GLIBCPP_FAST_MATH): Define.
+ * include/std/std_complex.h (norm): Use faster,
+ less accurate computation for builtin float types under --fast-math.
+
+2003-03-21 Magnus Fromreide <gnats@magfr.user.lysator.liu.se>
+
+ * testsuite/testsuite_hooks.h: Fix warning nits.
+
+2003-03-19 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/cpu/mips/atomicity.h (__exchange_and_add, __atomic_add):
+ Only .set mips2 for the o32 ABI.
+
+2003-03-19 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/21_strings/char_traits/requirements/char/1.cc:
+ Test char not wchar_t.
+
+2003-03-18 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/21_strings/basic_string/append/wchar_t/1.cc:
+ Correct size, taking into account sizeof(wchar_t).
+
+2003-03-18 Paolo Carlini <pcarlini@unitus.it>
+
+ Reshuffle 21_strings testsuite.
+ * testsuite/21_strings/append.cc, c_strings.cc, invariants.cc,
+ assign.cc, ctor_copy_dtor.cc, nonmember.cc, capacity.cc,
+ element_access.cc, operations.cc, char_traits_requirements.cc,
+ find.cc, replace.cc, char_traits_typedefs.cc, insert.cc, rfind.cc,
+ compare.cc, inserters_extractors.cc, substr.cc: Split up, add
+ wchar_t tests as follows.
+ * 21_strings/basic_string/append/char/1.cc: New.
+ * 21_strings/basic_string/append/wchar_t/1.cc: New.
+ * 21_strings/basic_string/assign/char/1.cc: New.
+ * 21_strings/basic_string/assign/char/2.cc: New.
+ * 21_strings/basic_string/assign/char/3.cc: New.
+ * 21_strings/basic_string/assign/wchar_t/1.cc: New.
+ * 21_strings/basic_string/assign/wchar_t/2.cc: New.
+ * 21_strings/basic_string/assign/wchar_t/3.cc: New.
+ * 21_strings/basic_string/capacity/1.cc: New.
+ * 21_strings/basic_string/capacity/char/1.cc: New.
+ * 21_strings/basic_string/capacity/char/2.cc: New.
+ * 21_strings/basic_string/capacity/wchar_t/1.cc: New.
+ * 21_strings/basic_string/capacity/wchar_t/2.cc: New.
+ * 21_strings/basic_string/compare/char/1.cc: New.
+ * 21_strings/basic_string/compare/wchar_t/1.cc: New.
+ * 21_strings/basic_string/cons/char/1.cc: New.
+ * 21_strings/basic_string/cons/char/2.cc: New.
+ * 21_strings/basic_string/cons/char/3.cc: New.
+ * 21_strings/basic_string/cons/char/4.cc: New.
+ * 21_strings/basic_string/cons/char/5.cc: New.
+ * 21_strings/basic_string/cons/wchar_t/1.cc: New.
+ * 21_strings/basic_string/cons/wchar_t/2.cc: New.
+ * 21_strings/basic_string/cons/wchar_t/3.cc: New.
+ * 21_strings/basic_string/cons/wchar_t/4.cc: New.
+ * 21_strings/basic_string/cons/wchar_t/5.cc: New.
+ * 21_strings/basic_string/element_access/char/1.cc: New.
+ * 21_strings/basic_string/element_access/char/2.cc: New.
+ * 21_strings/basic_string/element_access/char/3.cc: New.
+ * 21_strings/basic_string/element_access/wchar_t/1.cc: New.
+ * 21_strings/basic_string/element_access/wchar_t/2.cc: New.
+ * 21_strings/basic_string/element_access/wchar_t/3.cc: New.
+ * 21_strings/basic_string/find/char/1.cc: New.
+ * 21_strings/basic_string/find/wchar_t/1.cc: New.
+ * 21_strings/basic_string/insert/char/1.cc: New.
+ * 21_strings/basic_string/insert/char/2.cc: New.
+ * 21_strings/basic_string/insert/wchar_t/1.cc: New.
+ * 21_strings/basic_string/insert/wchar_t/2.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/1.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/4.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/5.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/6.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/7.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/8.cc: New.
+ * 21_strings/basic_string/inserters_extractors/char/9.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/1.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/4.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/5.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/6.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/7.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/8.cc: New.
+ * 21_strings/basic_string/inserters_extractors/wchar_t/9.cc: New.
+ * 21_strings/basic_string/operators/char/1.cc: New.
+ * 21_strings/basic_string/operators/char/2.cc: New.
+ * 21_strings/basic_string/operators/wchar_t/1.cc: New.
+ * 21_strings/basic_string/operators/wchar_t/2.cc: New.
+ * 21_strings/basic_string/replace/char/1.cc: New.
+ * 21_strings/basic_string/replace/char/2.cc: New.
+ * 21_strings/basic_string/replace/char/3.cc: New.
+ * 21_strings/basic_string/replace/char/4.cc: New.
+ * 21_strings/basic_string/replace/char/5.cc: New.
+ * 21_strings/basic_string/replace/wchar_t/1.cc: New.
+ * 21_strings/basic_string/replace/wchar_t/2.cc: New.
+ * 21_strings/basic_string/replace/wchar_t/3.cc: New.
+ * 21_strings/basic_string/replace/wchar_t/4.cc: New.
+ * 21_strings/basic_string/replace/wchar_t/5.cc: New.
+ * 21_strings/basic_string/rfind/char/1.cc: New.
+ * 21_strings/basic_string/rfind/char/2.cc: New.
+ * 21_strings/basic_string/rfind/char/3.cc: New.
+ * 21_strings/basic_string/rfind/wchar_t/1.cc: New.
+ * 21_strings/basic_string/rfind/wchar_t/2.cc: New.
+ * 21_strings/basic_string/rfind/wchar_t/3.cc: New.
+ * 21_strings/basic_string/substr/char/1.cc: New.
+ * 21_strings/basic_string/substr/wchar_t/1.cc: New.
+ * 21_strings/c_strings/char/1.cc: New.
+ * 21_strings/c_strings/char/2.cc: New.
+ * 21_strings/c_strings/wchar_t/1.cc: New.
+ * 21_strings/c_strings/wchar_t/2.cc: New.
+ * 21_strings/char_traits/requirements/char/1.cc: New.
+ * 21_strings/char_traits/requirements/wchar_t/1.cc: New.
+ * 21_strings/char_traits/typedefs/char/1.cc: New.
+
+2003-03-17 Paolo Carlini <pcarlini@unitus.it>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/10097
+ * src/fstream.cc (basic_filebuf<char>::_M_underflow_common,
+ basic_filebuf<wchar_t>::_M_underflow_common):
+ if (gptr() < egptr()) return *gptr().
+ * testsuite/27_io/filebuf_virtuals.cc (test16): Add.
+
+ * testsuite/27_io/filebuf_members.cc (test_04): Minor
+ changes: unlink fifo before making it, fix spelling error.
+
+2003-03-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/Makefile.am (CLEANFILES): Add tmp*.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/27_io/filebuf_members.cc: Consistently name tmp files.
+ Cleanups.
+
+2003-03-17 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9964
+ * include/bits/fstream.tcc (basic_filebuf::close):
+ Always close file, even when write fails.
+ * testsuite/27_io/filebuf_members.cc (test_07): New test.
+
+2003-03-17 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * libsupc++/Makefile.am (C_COMPILE): Remove.
+ (LTCOMPILE): Likewise.
+ * libsupc++/Makefile.in: Regenerate.
+
+2003-03-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/23_containers/bitset_members.cc: Add test variable.
+ * testsuite/23_containers/map_insert.cc: Same.
+ * testsuite/22_locale/ctype/cons/char/1.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: Same.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Same.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: Same.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: Same.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: Same.
+ * testsuite/27_io/istream_exception.cc: Same.
+ * testsuite/27_io/filebuf_virtuals.cc: Same.
+ * testsuite/27_io/stringbuf_virtuals.cc: Same.
+ * testsuite/27_io/ostream_inserter_arith.cc: Same.
+ * testsuite/26_numerics/valarray_operators.cc: Same.
+ * testsuite/26_numerics/slice.cc: Same.
+ * testsuite/26_numerics/slice_array_assignment.cc: Same.
+ * testsuite/24_iterators/istream_iterator.cc: Same.
+ * mkcheck.in (TESTS_FILE): Use dejagnu-generated file if possible.
+
+2003-03-14 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9581
+ PR libstdc++/9870
+ * config/locale/generic/ctype_members.cc,
+ * config/locale/gnu/ctype_members.cc
+ (ctype<wchar_t>::do_widen(char)): Cast argument to
+ unsigned char before passing to btowc.
+ (ctype<wchar_t>::do_widen(const char*, const char*, wchar_t*)):
+ Convert characters with btowc instead of mbsrtowcs.
+ (ctype<wchar_t>::do_narrow(const wchar_t*, const wchar_t*,
+ char, char*):
+ Convert characters with wctob instead of wcsrtombs.
+ * testsuite/22_locale/ctype/narrow/wchar_t/3.cc: New test.
+ * testsuite/22_locale/ctype/widen/wchar_t/2.cc: New test.
+ * testsuite/22_locale/ctype/widen/wchar_t/3.cc: New test.
+
+2003-03-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/stdc++.h: New.
+ * libsupc++/exception_defines.h (__EXCEPTION_DEFINES_H): Add guard.
+ * include/Makefile.am (stamp-std-precompile): Generate stdc++.h.gch
+ * include/Makefile.in: Regenerate.
+ * testsuite_flags.in (--build-cxx): Add, but don't use PCHFLAGS.
+ (--cxxflags): Put -g -O2 here.
+ * testsuite/libstdc++-v3.dg/dg.exp: Remove -g -O2 here.
+
+2003-03-14 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/testsuite_hooks.h: Suppress runtime exception thrown by
+ missing named locale.
+
+2003-03-14 Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Only append to makefiles that are newly created to
+ avoid multiple multi-do/multi-clean rules.
+ * configure: Rebuilt.
+
+2003-03-13 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/configopts.html, docs/html/documentation.html,
+ docs/html/explanations.html, docs/html/install.html,
+ docs/html/19_diagnostics/howto.html, docs/html/faq/index.html: Fix
+ invalid XHTML and make page header style consistent.
+
+2003-03-12 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/faq/index.html: Explain memory "leaks" due to allocators.
+ * docs/html/faq/index.txt: Regenerate.
+ * docs/html/debug.html: Add a bit to allocator text and fix XHTML.
+
+2003-03-12 Andreas Schwab <schwab@suse.de>
+
+ * acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in
+ glibcpp_toolexeclibdir.
+ * aclocal.m4, configure: Rebuilt.
+
+2003-03-11 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/faq/index.html: Update text about location of headers.
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-03-11 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h: Prepend accessors of
+ class qualifier with 'get_' in order to fix warnings
+ when compiling with -Wshadow.
+
+2003-03-11 Loren J. Rittle <ljrittle@acm.org>
+
+ * config/os/bsd/freebsd/ctype_inline.h: Support _M_table
+ when so installed.
+ * testsuite/22_locale/ctype/cons/char/1.cc: Fix typo.
+
+ * testsuite/testsuite_hooks.h (run_tests_wrapped_env): Do not
+ report lack of setenv().
+
+2003-03-09 Paolo Carlini <pcarlini@unitus.it>
+
+ * config/io/basic_file_stdio.cc: include <unistd.h>.
+
+2003-03-09 Paolo Carlini <pcarlini@unitus.it>
+ Nathan Myers <ncm@cantrip.org>
+
+ PR libstdc++/7744
+ * config/io/basic_file_stdio.h (__basic_file<>::xsgetn, xsputn,
+ seekoff, seekpos): Add a boolean parameter __stdio.
+ * config/io/basic_file_stdio.cc (__basic_file<>::xsgetn, xsputn,
+ seekoff, seekpos): If __stdio == true, use fread (fwrite, fseek/ftell,
+ fseek/ftell, respectively), otherwise read (write, lseek, lseek,
+ respectively).
+ * include/bits/fstream.tcc (basic_filebuf<>::_M_convert_to_external,
+ _M_really_overflow, seekoff): Use the boolean parameter in the calls.
+ * include/std/std_fstream.h (sync): Likewise.
+ * src/fstream.cc (basic_filebuf<>::_M_underflow_common): Likewise.
+ * src/ios.cc (ios_base::Init::_S_ios_create(bool)): Revert
+ libstdc++/8399 commit involving isatty(0).
+ * acinclude.m4 (GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1): Remove.
+ (GLIBCPP_CHECK_UNISTD_SUPPORT): Remove
+ * configure.in: Remove call.
+ * aclocal.m4: Regenerate.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * testsuite/27_io/narrow_stream_objects.cc (test11): Add.
+
+2003-03-09 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9988
+ * include/bits/fstream.tcc (overflow): don't write EOF to file.
+ * testsuite/27_io/filebuf_virtuals.cc (test15): Add.
+
+2003-03-08 Jerry Quinn <jlquinn@optonline.net>
+
+ PR libstdc++/9561
+ * include/bits/basic_ios.h (_M_setstate): New.
+ * include/bits/ostream.tcc (operator<<): Use it.
+ * include/bits/istream.tcc (operator>>): Use it.
+ * include/std/std_ostream.h (operator<<): Make friends.
+ * include/std/std_istream.h (operator>>): Make friends.
+ * testsuite/27_io/ostream_exception.cc,
+ testsuite/27_io/istream_exception.cc: New tests.
+
+2003-03-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.tcc: Fix typo.
+
+2003-03-08 Loren J. Rittle <ljrittle@acm.org>
+
+ * testsuite/26_numerics/c99_classification_macros_c.cc: Tweak test.
+
+ * config/locale/generic/c_locale.cc
+ (locale::facet::_S_create_c_locale): Throw runtime exception when
+ unsupported language is specified.
+ * testsuite/testsuite_hooks.h
+ (run_test_wrapped_generic_locale_exception_catcher): New function.
+ * testsuite/testsuite_hooks.cc (run_tests_wrapped_locale):
+ Suppress runtime exception thrown by generic implementation.
+ (run_tests_wrapped_env): Likewise.
+ (run_test_wrapped_generic_locale_exception_catcher): New function.
+ * testsuite/22_locale/collate/compare/char/1.cc: New test wrap.
+ * testsuite/22_locale/collate/compare/char/2.cc: New test wrap.
+ * testsuite/22_locale/collate/compare/char/3.cc: New test wrap.
+ * testsuite/22_locale/collate/hash/char/2.cc: New test wrap.
+ * testsuite/22_locale/collate/transform/char/2.cc: New test wrap.
+ * testsuite/22_locale/collate/transform/char/3.cc: New test wrap.
+ * testsuite/22_locale/collate_byname/1.cc: New test wrap.
+ * testsuite/22_locale/ctype/is/char/2.cc: New test wrap.
+ * testsuite/22_locale/facet/2.cc: New test wrap.
+ * testsuite/22_locale/locale/cons/4.cc: New test wrap.
+ * testsuite/22_locale/locale/cons/5.cc: New test wrap.
+ * testsuite/22_locale/locale/cons/7.cc: New test wrap.
+ * testsuite/22_locale/messages/members/char/1.cc: New test wrap.
+ * testsuite/22_locale/messages/members/char/2.cc: New test wrap.
+ * testsuite/22_locale/messages/members/char/3.cc: New test wrap.
+ * testsuite/22_locale/messages_byname/1.cc: New test wrap.
+ * testsuite/22_locale/money_get/get/char/1.cc: New test wrap.
+ * testsuite/22_locale/money_get/get/char/2.cc: New test wrap.
+ * testsuite/22_locale/money_get/get/char/3.cc: New test wrap.
+ * testsuite/22_locale/money_get/get/char/4.cc: New test wrap.
+ * testsuite/22_locale/money_put/put/char/1.cc: New test wrap.
+ * testsuite/22_locale/money_put/put/char/2.cc: New test wrap.
+ * testsuite/22_locale/money_put/put/char/3.cc: New test wrap.
+ * testsuite/22_locale/moneypunct/members/char/2.cc: New test wrap.
+ * testsuite/22_locale/moneypunct_byname/1.cc: New test wrap.
+ * testsuite/22_locale/num_get/get/char/1.cc: New test wrap.
+ * testsuite/22_locale/num_get/get/char/2.cc: New test wrap.
+ * testsuite/22_locale/num_get/get/char/3.cc: New test wrap.
+ * testsuite/22_locale/num_get/get/char/5.cc: New test wrap.
+ * testsuite/22_locale/num_get/get/char/6.cc: New test wrap.
+ * testsuite/22_locale/num_put/put/char/1.cc: New test wrap.
+ * testsuite/22_locale/num_put/put/char/2.cc: New test wrap.
+ * testsuite/22_locale/num_put/put/char/3.cc: New test wrap.
+ * testsuite/22_locale/num_put/put/char/5.cc: New test wrap.
+ * testsuite/22_locale/numpunct/members/char/1.cc: New test wrap.
+ * testsuite/22_locale/numpunct/members/char/2.cc: New test wrap.
+ * testsuite/22_locale/numpunct_byname/1.cc: New test wrap.
+ * testsuite/22_locale/numpunct_byname/2.cc: New test wrap.
+ * testsuite/22_locale/time_get/date_order/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_date/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_date/char/2.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_monthname/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_monthname/char/2.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_time/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_time/char/2.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_weekday/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_weekday/char/2.cc: New test wrap.
+ * testsuite/22_locale/time_get/get_year/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/1.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/2.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/3.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/4.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/5.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/6.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/7.cc: New test wrap.
+ * testsuite/22_locale/time_put/put/char/8.cc: New test wrap.
+ * testsuite/27_io/filebuf_virtuals.cc: New test wrap.
+ * testsuite/27_io/ios_members.cc: New test wrap.
+ * testsuite/27_io/ostream_inserter_arith.cc (test02): Make void.
+ New test wrap.
+ * testsuite/27_io/streambuf_members.cc: New test wrap.
+ * testsuite/27_io/stringbuf_virtuals.cc: New test wrap.
+
+2003-03-08 Paolo Carlini <pcarlini@unitus.it>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9424
+ * include/bits/streambuf.tcc (__copy_streambufs): Use
+ sgetn-sputn only when sputn cannot fail, otherwise fall back
+ to safe snextc-sputc.
+ * testsuite/27_io/streambuf_members.cc (test11, test12): Add.
+
+2003-03-08 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.tcc (num_put::do_put(bool)): Use
+ locale cache for truename and falsename.
+
+2003-03-08 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/ios.cc (ios_base::ios_base): Correct order of _M_word and
+ _M_word_size initialization.
+
+2003-03-07 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_convert_to_external):
+ Set __elen to zero if codecvt::out eventually fails.
+
+2003-03-07 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9182
+ * include/bits/fstream.tcc (_M_really_overflow): Check
+ for _M_convert_to_external possible failures.
+ * include/std/std_fstream.h (sync): Check _M_really_overflow
+ return value and return -1 in case of failure.
+ * testsuite/27_io/filebuf_virtuals.cc (test13, test14): Add.
+
+2003-03-07 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9826
+ * include/bits/istream.tcc (operator>>(_CharT*),
+ operator>>(basic_string&), ws): Pass a char_type to __ctype.is.
+ * testsuite/27_io/stringstream.cc (test02): Add.
+
+ * include/bits/istream.tcc (operator>>(_CharT*)):
+ Assign a char_type to *__s.
+
+2003-03-07 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9817
+ * include/bits/locale_facets.tcc
+ (collate::do_compare, collate::do_transform):
+ Handle nul characters in input.
+ * testsuite/22_locale/collate/compare/char/3.cc: New test.
+ * testsuite/22_locale/collate/compare/wchar_t/3.cc: New test.
+ * testsuite/22_locale/collate/transform/char/3.cc: New test.
+ * testsuite/22_locale/collate/transform/wchar_t/3.cc: New test.
+
+2003-03-07 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/streambuf_iterator.h (_M_put): Set _M_failed if
+ sputn fails.
+ * testsuite/27_io/ostream_fail.cc: New test.
+
+2003-03-07 Matthias Klose <doko@debian.org>
+
+ * Makefile.am (AM_MAKEFLAGS): Also pass gxx_include_dir.
+ FLAGS_TO_PASS: Set to AM_MAKEFLAGS
+ * Makefile.in: Regenerate.
+ * libsupc++/Makefile.am: Express glibcppinstalldir in terms
+ of gxx_include_dir.
+ AM_MAKEFLAGS: Pass gxx_include_dir.
+ * libsupc++/Makefile.in: Regenerate.
+
+2003-03-06 Jerry Quinn <jlquinn@optonline.net>
+
+ * testsuite/27_io/ios_base_storage.cc (test02): Set exception
+ mask. Test setting small-numbered pword and iword slots. Test
+ behavior at limit of numeric_limits::max. Check that values are
+ still good after failures.
+
+2003-03-06 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/ios.cc (ios_base::_M_init): Remove _M_word_size.
+ (ios_base::ios_base): Set _M_word, _M_word_size.
+ (ios_base::~ios_base): Remove redundant test.
+ * testsuite/27_io/ios_base_storage.cc (test03): New.
+
+2003-03-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * src/strstream.cc, include/bits/basic_string.tcc: Remove
+ incorrect whitespace added in my previous change.
+
+2003-03-05 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added
+ _S_initialized() in order to allow debugging libraries to detect
+ when the std streams are initialized from an overloaded operator
+ new.
+
+2003-03-05 Benjamin Kosnik <bkoz@redhat.com>
+
+ * libsupc++/demangle.h: Move to..
+ * include/bits/demangle.h: ...here.
+ * src/demangle.cc: Adjust include.
+ * include/Makefile.am (bits_headers): Add.
+ * include/Makefile.in: Regenerate.
+
+2003-03-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/globals.cc: Clarify comments, remove c_locale_imp_compat.
+
+ * config/linker-map.gnu: Filter typeinfo and vtable info.
+
+2003-03-04 Jerry Quinn <jlquinn@optonline.net>
+
+ * src/ios.cc (ios_base::_M_grow_words): Don't delete _M_word on
+ new failure. Throw exception if badbit and exception mask when ix
+ >= numeric_limits<int>::max().
+
+2003-03-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * src/strstream.cc (strstreambuf::overflow): Make sure operands of
+ min and max have the same type.
+ * include/bits/basic_string.tcc (append, rfind, compare): Likewise.
+
+2003-03-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am (allstamps): Remove stamp-std-precompile.
+ * include/Makefile.in: Regenerate.
+
+2003-03-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/abi_check.cc (report_symbol_info): Add version info.
+
+ * config/linker-map.gnu: Hide more stuff.
+ * include/Makefile.am: Cleanups.
+ * include/Makefile.in: Regenerate.
+
+2003-02-27 Jerry Quinn <jlquinn@optonline.net>
+
+ * config/locale/generic/messages_members.h (messages::messages):
+ Remove name from unused parameter.
+
+2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/Makefile.am (sources): Add demangle.cc.
+ (demangle.o): Add.
+ (demangle.lo): Add.
+ * src/Makefile.in: Regenerate.
+ * libsupc++/Makefile.am: Remove old __cxa_demangle bits.
+ * libsupc++/Makefile.in: Regenerate.
+
+ * testsuite/testsuite_hooks.h
+ (__gnu_cxx_test::verify_demangle): New.
+ * testsuite/testsuite_hooks.cc: Define.
+
+2003-02-27 Carlo Wood <carlo@alinoe.com>
+
+ * src/demangle.cc: New.
+ * libsupc++/demangle.h: New.
+
+2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
+ Carlo Wood <carlo@alinoe.com>
+
+ * testsuite/demangle/abi_examples/01.cc: New.
+ * testsuite/demangle/abi_examples/02.cc: New.
+ * testsuite/demangle/abi_examples/03.cc: New.
+ * testsuite/demangle/abi_examples/04.cc: New.
+ * testsuite/demangle/abi_examples/05.cc: New.
+ * testsuite/demangle/abi_examples/06.cc: New.
+ * testsuite/demangle/abi_examples/07.cc: New.
+ * testsuite/demangle/abi_examples/08.cc: New.
+ * testsuite/demangle/abi_examples/09.cc: New.
+ * testsuite/demangle/abi_examples/10.cc: New.
+ * testsuite/demangle/abi_examples/11.cc: New.
+ * testsuite/demangle/abi_examples/12.cc: New.
+ * testsuite/demangle/abi_examples/13.cc: New.
+ * testsuite/demangle/abi_examples/14.cc: New.
+ * testsuite/demangle/abi_examples/15.cc: New.
+ * testsuite/demangle/abi_examples/16.cc: New.
+ * testsuite/demangle/abi_examples/17.cc: New.
+ * testsuite/demangle/abi_examples/18.cc: New.
+ * testsuite/demangle/abi_examples/19.cc: New.
+ * testsuite/demangle/abi_examples/20.cc: New.
+ * testsuite/demangle/abi_examples/21.cc: New.
+ * testsuite/demangle/abi_examples/22.cc: New.
+ * testsuite/demangle/abi_examples/23.cc: New.
+ * testsuite/demangle/abi_examples/24.cc: New.
+ * testsuite/demangle/abi_examples/25.cc: New.
+ * testsuite/demangle/abi_examples/26.cc: New.
+ * testsuite/demangle/abi_text/01.cc: New.
+ * testsuite/demangle/abi_text/02.cc: New.
+ * testsuite/demangle/abi_text/03.cc: New.
+ * testsuite/demangle/abi_text/04.cc: New.
+ * testsuite/demangle/abi_text/05.cc: New.
+ * testsuite/demangle/abi_text/06.cc: New.
+ * testsuite/demangle/abi_text/07.cc: New.
+ * testsuite/demangle/abi_text/08.cc: New.
+ * testsuite/demangle/abi_text/09.cc: New.
+ * testsuite/demangle/abi_text/10.cc: New.
+ * testsuite/demangle/abi_text/11.cc: New.
+ * testsuite/demangle/abi_text/12.cc: New.
+ * testsuite/demangle/abi_text/13.cc: New.
+ * testsuite/demangle/abi_text/14.cc: New.
+ * testsuite/demangle/regression/3111-1.cc: New.
+ * testsuite/demangle/regression/3111-2.cc: New.
+ * testsuite/demangle/regression/7986-01.cc: New.
+ * testsuite/demangle/regression/7986-02.cc: New.
+ * testsuite/demangle/regression/7986-03.cc: New.
+ * testsuite/demangle/regression/7986-04.cc: New.
+ * testsuite/demangle/regression/7986-05.cc: New.
+ * testsuite/demangle/regression/7986-06.cc: New.
+ * testsuite/demangle/regression/7986-07.cc: New.
+ * testsuite/demangle/regression/7986-08.cc: New.
+ * testsuite/demangle/regression/7986-09.cc: New.
+ * testsuite/demangle/regression/7986-10.cc: New.
+ * testsuite/demangle/regression/7986-11.cc: New.
+ * testsuite/demangle/regression/7986-12.cc: New.
+ * testsuite/demangle/regression/7986.cc: New.
+ * testsuite/demangle/regression/8897.cc: New.
+ * testsuite/demangle/regression/cw-01.cc: New.
+ * testsuite/demangle/regression/cw-02.cc: New.
+ * testsuite/demangle/regression/cw-03.cc: New.
+ * testsuite/demangle/regression/cw-04.cc: New.
+ * testsuite/demangle/regression/cw-05.cc: New.
+ * testsuite/demangle/regression/cw-06.cc: New.
+ * testsuite/demangle/regression/cw-07.cc: New.
+ * testsuite/demangle/regression/cw-08.cc: New.
+ * testsuite/demangle/regression/cw-09.cc: New.
+ * testsuite/demangle/regression/cw-10.cc: New.
+ * testsuite/demangle/regression/cw-11.cc: New.
+ * testsuite/demangle/regression/cw-12.cc: New.
+ * testsuite/demangle/regression/cw-13.cc: New.
+ * testsuite/demangle/regression/cw-14.cc: New.
+ * testsuite/demangle/regression/old.cc: New.
+
+2003-02-25 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/Intro.3: Update with new (proper) names.
+ * docs/doxygen/TODO: Update.
+ * docs/doxygen/run_doxygen: More comments, fix up man pages.
+ Fake entries for standard typedefs.
+ * docs/doxygen/user.cfg.in: Turn INLINE_INHERITED_MEMB back on.
+ * docs/html/documentation.html: Top-level man page is now called
+ C++Intro.
+ * include/std/std_limits.h: Doxygenate.
+
+2003-02-25 Scott Snyder <snyder@fnal.gov>
+
+ PR libstdc++/9811
+ * include/bits/stl_map.h (lower_bound, upper_bound, equal_range):
+ Correct documentation.
+ * include/bits/stl_multimap.h (lower_bound, upper_bound,
+ equal_range): Likewise.
+
+2003-02-24 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9825
+ * src/fstream.cc
+ (basic_filebuf<char/wchar_t>::_M_underflow_common): When
+ __bump is true (uflow), always increment the read pointer
+ (_M_in_cur) before returning successfully.
+ * testsuite/27_io/filebuf_virtuals.cc (test12): Add.
+
+2003-02-24 Paolo Carlini <pcarlini@unitus.it>
+ Nathan Myers <ncm@cantrip.org>
+
+ PR libstdc++/9404, PR libstdc++/9701 (partial)
+ (aka pptr == epptr implies overflow)
+ * include/bits/fstream.tcc (_M_allocate_internal_buffer):
+ Consistently, _M_out_end points to the end of the buffer just
+ created.
+ (overflow): Tweak to use _M_out_buf_size().
+ (_M_convert_to_external): The role of the old _M_out_end is
+ now played by _M_out_lim.
+ (_M_really_overflow): Likewise.
+ (seekoff): Likewise.
+ (setbuf): _M_out_end points to the end of the external buffer.
+ * include/bits/sstream.tcc (overflow): Rewrote, taking into
+ account the resolution of DR 169 (TC).
+ (seekoff): Use _M_string.capacity(); ios_base::end is now _M_out_lim.
+ (seekpos): Use _M_string.capacity(); tweak.
+ * include/bits/streambuf.tcc (sputc, xsputn): Remove comments.
+ * include/std/std_fstream.h (sync): The role of the old
+ _M_out_end is now played by _M_out_lim.
+ (_M_set_indeterminate): Use _M_set_determinate.
+ (_M_set_determinate): _M_out_end is now _M_out_lim.
+ (_M_is_indeterminate): Likewise.
+ * include/std/std_sstream.h (str()): _M_out_end is now _M_out_lim.
+ (_M_stringbuf_init): Don't set _M_buf_size, unused for sstreams,
+ which have the information readily available as _M_string.capacity();
+ for ate and app modes, pass the string size to _M_really_sync.
+ (_M_really_sync): Consistently set _M_out_end and _M_out_lim, to
+ point to the end of the buffer (i.e., epptr) and to the string end,
+ respectively.
+ * include/std/std_streambuf.h: tweak comments, add _M_out_lim,
+ which points to the right limit of the used put area.
+ (_M_out_cur_move): The role of the old _M_out_end is now played
+ by _M_out_lim.
+ (_M_out_buf_size): Simplify: now (when _M_out_cur) return simply
+ _M_out_end - _M_out_cur (i.e., pptr), _very_ close to the letter
+ of the standard.
+ (basic_streambuf()): Initialize _M_out_lim too.
+ * testsuite/27_io/filebuf_virtuals.cc (test10): Trivial tweak.
+ * testsuite/27_io/filebuf_virtuals.cc (test11): Add.
+ * testsuite/27_io/stringbuf_virtuals.cc (test09): Add.
+
+2003-02-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/27_io/ios_base_storage.cc (main): Call
+ set_memory_limits.
+
+2003-02-21 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.tcc (_M_convert_float): Replace
+ numpunct facet accesses with data from __locale_cache.
+
+2003-02-20 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/faq/index.html (3.9): New note, wchar_t on FreeBSD.
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-02-20 Phil Edwards <pme@gcc.gnu.org>
+
+ * config/linker-map.gnu: Also export locking symbols needed for the
+ generic atomicity.h case.
+
+2003-02-20 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
+ config.status.
+ * configure: Rebuilt.
+
+2003-02-19 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/sstream.tcc (overflow): According to
+ 27.7.1.3, p5, actual output is performed by sputc(c).
+
+2003-02-19 Phil Edwards <pme@gcc.gnu.org>
+
+ PR libstdc++/9582
+ * include/bits/stl_alloc.h: Remove all traces of assert().
+
+2003-02-18 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/std/std_sstream.h (str()): the size of the
+ current string may be different from the initial one
+ whenever _M_out_end > _M_out_beg.
+ * testsuite/27_io/stringbuf_members.cc (test07): Add.
+
+2003-02-18 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9582
+ * include/bits/stl_alloc.h (__pool_alloc::allocate): Remove assert.
+
+2003-02-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/basic_ios.tcc (copyfmt): Copy locale data as well.
+ * testsuite/27_io/ios_members.cc (test03): New.
+
+2003-02-17 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/basic_ios.h (basic_ios::_M_cache_locale): Declare.
+ (basic_ios::_M_cache_facets): Move into above.
+ * include/bits/basic_ios.tcc (basic_ios::copyfmt): Rebuild locale
+ cache.
+ (basic_ios::imbue): Force locale cache to be built.
+ (basic_ios::_M_init): Create and initialize locale cache.
+ * include/bits/ios_base.h (__locale_cache_base): Declare.
+ (ios_base::_M_locale_cache): New.
+ (ios_base::_M_cache): Define.
+ * include/bits/locale_facets.h: (__num_base): Fix comment. Add
+ _S_end.
+ (__locale_cache_base,__locale_cache<_CharT>): New classes.
+ (__locale_cache<char>, __locale_cache<wchar_t>): New specializations.
+ * include/bits/locale_facets.tcc (num_put::_M_convert_int): Use locale
+ cache literal string, grouping flag, thousands separator.
+ (__locale_cache<_CharT>::__locale_cache): New.
+ (__locale_cache<_CharT>::_M_init): New.
+ * src/ios.cc: Clear _M_locale_cache in constructor.
+ * src/locale-inst.cc (__locale_cache<char>, __locale_cache<_char_t>):
+ New.
+
+2003-02-17 Paolo Carlini <pcarlini@unitus.it>
+
+ * src/locale-inst.cc: Do not include <cassert>.
+ * src/locale.cc: Likewise.
+
+2003-02-17 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9580
+ * include/std/std_fstream.h: Declare underflow and uflow
+ specializations, change generic definitions to do nothing.
+ * src/fstream.cc: Add underflow and uflow specializations.
+
+2003-02-17 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9169
+ * include/bits/fstream.tcc (_M_convert_to_external):
+ Deal correctly with noconv, as prescribed by 27.8.1.4,p8.
+ * testsuite/27_io/filebuf_virtuals.cc (test10): Add.
+
+2003-02-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config (_GLIBCPP_EXTERN_TEMPLATE): Define.
+ * include/bits/basic_ios.tcc: Guard use of extern template.
+ * include/std/std_iomanip.h: Same.
+ * include/bits/streambuf.tcc: Same.
+ * include/bits/stl_alloc.h: Same.
+ * include/bits/locale_facets.tcc: Same.
+ * include/bits/ostream.tcc: Same.
+ * include/bits/istream.tcc: Same.
+ * include/bits/fstream.tcc: Same.
+ * include/bits/basic_string.tcc: Same.
+
+2003-02-13 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/ostream.tcc (sentry::sentry): Improve
+ performance-wise the fix for libstdc++/9563.
+
+2003-02-12 Phil Edwards <pme@gcc.gnu.org>
+
+ * config/cpu/generic/atomicity.h (_Atomic_add_mutex): Fix declaration.
+ (_GLIBCPP_NEED_GENERIC_MUTEX): Define for this file.
+ (_Atomic_add_mutex_once, __gthread_atomic_add_mutex_once): Declare
+ when we don't have static mutex initialization.
+ (__exchange_and_add): Use _Atomic_add_mutex_once.
+ * src/misc-inst.cc: Definitions of all the above.
+
+2003-02-12 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9563
+ * include/bits/ostream.tcc (sentry::sentry): Check
+ the state of the stream after the preparation.
+ * testsuite/27_io/ostream_sentry.cc (test02): Add.
+
+2003-02-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am (stamp-std-precompile): Add rule.
+ * include/Makefile.in: Regenerated.
+
+2003-02-11 Jerry Quinn <jlquinn@optonline.net>
+ Benjamin Kosnik <benjamin@redhat.com>
+
+ * include/bits/locale_facets.h (__num_base): Add _S_atoms_out.
+ Add indexes into this array.
+ (__num_base::_S_atoms): To _S_atoms_in.
+ (num_put::_M_insert): Rename to _M_pad.
+ (num_put::_M_convert_int): Adjust remove __mod, __modl arguments.
+ (num_put::_M_widen_int): Rename to _M_group_int.
+ (num_put::_M_widen_float): Rename to _M_group_float.
+ * include/bits/locale_facets.tcc (__int_to_char): New inline
+ function and adapter functions.
+ (num_put::_M_group_int): Streamline.
+ (num_put::_M_group_float): Streamline.
+ (num_put::_M_convert_int): Remove unused parameter names. Choose
+ large enough buffer for text. Use __int_to_char instead of
+ __convert_from_v. Formatted text is now at the end of the buffer.
+ (num_put::_M_convert_float): Preliminary fixups.
+ * src/locale-inst.cc (__convert_from_v<long long>): Add ifdef.
+ (__int_to_char<unsigned long long>): Same.
+ (__int_to_char<char, unsigned long>): New.
+ (__int_to_char<char, unsigned long long>): New.
+ (__int_to_char<wchar_t, unsigned long>): New.
+ (__int_to_char<wchar_t, unsigned long long>): New.
+
+2003-02-11 Scott Snyder <snyder@fnal.gov>
+
+ PR libstdc++/9659
+ * include/bits/fstream.tcc (seekoff): Avoid operator+
+ for pos_type.
+
+2003-02-11 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9320
+ * include/ext/stdio_filebuf.h
+ (stdio_filebuf(int, std::ios_base::openmode, bool, int_type),
+ stdio_filebuf(std::__c_file*, std::ios_base::openmode, int_type)):
+ Change to take a __size parameter of type size_t, not
+ of type (template parameter dependent) int_type.
+ * src/ios.cc (ios_base::Init::_S_ios_create): Change type of
+ size vars to size_t.
+ * testsuite/ext/stdio_filebuf.cc: Add.
+
+2003-02-11 Paolo Carlini <pcarlini@unitus.it>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9318
+ * include/bits/streambuf.tcc (__copy_streambufs):
+ Don't conditionalize the copy to __testput.
+ * testsuite/27_io/streambuf_members.cc (test09, test10): Add.
+
+2002-02-11 DJ Delorie <dj@redhat.com>
+
+ * acinclude.m4: Check for native targets that can't link at
+ this point in the build.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2003-02-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * hppa/atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock):
+ Correct alignment.
+ (__exchange_and_add, __atomic_add): Use PA 2.0 ordered store to reset
+ lock.
+
+2003-02-07 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/27_io/filebuf_virtuals.cc (test08): Fix for
+ unsigned char platforms.
+
+2003-02-06 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9562
+ * include/std/std_istream.h
+ (basic_istream::sentry::operator bool()): Make const.
+ * include/std/std_ostream.h
+ (basic_ostream::sentry::operator bool()): Likewise.
+ * testsuite/27_io/istream_sentry.cc (test03): Add.
+ * testsuite/27_io/ostream_sentry.cc: Add.
+
+2003-02-06 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9548
+ Implement resolution of DR 231 (Ready)
+ * include/bits/locale_facets.h (__num_base::_S_format_float):
+ Change declaration: return void, remove __prec parameter.
+ * src/locale.cc (__num_base::_S_format_float): Implement
+ resolution of DR 231.
+ * include/bits/locale_facets.tcc (num_put::_M_convert_float):
+ Tweak uses. Check for negative precision.
+ * testsuite/22_locale/num_put/put/char/6.cc: Add
+ * testsuite/22_locale/num_put/put/wchar_t/6.cc: Likewise.
+
+2003-02-06 Peter Soetens <peter.soetens@mech.kuleuven.ac.be>
+
+ * config/io/basic_file_libio.h: Fixups.
+ * config/io/c_io_libio.h: Same.
+ * libio/Makefile.am: Same.
+ * libio/Makefile.in: Regenerated.
+
+2003-02-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/22_locale/codecvt/encoding/wchar_t/1.cc (test01):
+ Explicitly use the "C" locale.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc (test01): Same.
+
+2003-02-06 Petur Runolfsson <peturr02@ru.is>
+
+ DR 75
+ DR 305
+ PR libstdc++/9028 (partial)
+ PR libstdc++/9224
+ PR libstdc++/9246
+ PR libstdc++/9247
+
+ * src/codecvt.cc
+ (codecvt<wchar_t, char, mbstate_t>::do_encoding,
+ codecvt<wchar_t, char, mbstate_t>::do_length,
+ codecvt<wchar_t, char, mbstate_t>::do_max_length):
+ Move...
+ * config/locale/generic/codecvt_members.cc: ...here.
+ * config/locale/gnu/codecvt_members.cc: ...and here.
+
+ * config/locale/generic/codecvt_members.cc,
+ * config/locale/gnu/codecvt_members.cc
+ (codecvt<wchar_t, char, mbstate_t>::do_encoding
+ codecvt<wchar_t, char, mbstate_t>::do_in,
+ codecvt<wchar_t, char, mbstate_t>::do_length,
+ codecvt<wchar_t, char, mbstate_t>::do_max_length,
+ codecvt<wchar_t, char, mbstate_t>::do_out):
+ New implementation that handles stateless encodings,
+ including UTF-8.
+
+ * config/locale/generic/codecvt_members.cc,
+ * config/locale/gnu/codecvt_members.cc,
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h,
+ * include/bits/codecvt.h,
+ * src/codecvt.cc
+ (codecvt::length, codecvt::do_length):
+ Change type of first argument of length and do_length from
+ 'const state_type&' to 'state_type&' according to DR 75.
+
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/1.cc:
+ Cleanup and check for correct return value from encoding
+ for "C" locale.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/in/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/5.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/6.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/7.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/8.cc: New test.
+ * testsuite/22_locale/codecvt/in/wchar_t/9.cc: New test.
+ * testsuite/22_locale/codecvt/length/char/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/length/char/2.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/length/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/5.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/6.cc: New test.
+ * testsuite/22_locale/codecvt/length/wchar_t/7.cc: New test.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/out/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/4.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/5.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/6.cc: New test.
+ * testsuite/22_locale/codecvt/out/wchar_t/7.cc: New test.
+ * testsuite/22_locale/codecvt/unicode/1.cc: New test.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/1.cc: Cleanup.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: New test.
+ * testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: New test.
+ * testsuite/22_locale/codecvt/unshfit/wchar_t/4.cc: New test.
+
+2003-02-05 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.tcc (time_put::do_put): Use __write.
+ (money_put::do_put): Same.
+
+2003-02-05 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/ios_base.h (ios_base): Document reserved storage.
+
+ * include/bits/locale_facets.h: (struct __pad): Comment on
+ implementation.
+ (__verify_grouping): Same.
+ (__add_grouping): Same.
+ * include/bits/locale_facets.tcc (__verify_grouping): Move
+ comments to declaration.
+ (__add_grouping): Same.
+
+ * include/bits/locale_facets.tcc:
+ (__write<_CharT, _OutIter>): New function.
+ (__write<_CharT>): New function specialization.
+ (num_put::_M_insert): Remove explicit loop over iterator. Use
+ __write.
+ (num_put::_M_widen_float): Remove __basefield.
+ (num_put::_M_widen_int): Move __basefield to within grouping block.
+
+ * include/bits/streambuf_iterator.h: Include <streambuf>.
+ (ostreambuf_iterator::_M_put): Add.
+
+2003-02-05 Paolo Carlini <pcarlini@unitus.it>
+
+ * testsuite/26_numerics/valarray_name_lookup.cc: Fix typo.
+
+2003-02-04 Nathan Myers <ncm@cantrip.org>
+
+ * testsuite/25_algorithms/min_max.cc (test02): Add.
+
+2003-02-04 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9439, PR libstdc++/9425
+ * config/io/basic_file_stdio.cc
+ (__basic_file<char>::seekoff, seekpos): Return -1L if
+ fseek fails.
+ * include/bits/fstream.tcc (basic_filebuf::seekoff):
+ Check _M_file.seekoff return value; always return
+ pos_type(off_type(-1)) in case of failure.
+ (basic_filebuf::pbackfail): Check this->seekoff return
+ value and return traits_type::eof() in case of failure.
+ * testsuite/27_io/filebuf_virtuals.cc (test09): Add.
+
+2003-02-04 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/std/std_ostream.h (ostream::_M_write): Declare.
+ * ostream.tcc (ostream::_M_write): Define.
+ (basic_ostream::write): Use it.
+ (operator<<(basic_ostream, _CharT)): Ditto.
+ (operator<<(basic_ostream, char)): Ditto.
+ (operator<<(basic_ostream, _CharT*)): Ditto.
+ (operator<<(basic_ostream, char*)): Ditto.
+ (operator<<(basic_ostream, basic_string)): Ditto.
+
+2003-02-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/26_numerics/valarray_name_lookup.cc: Fix.
+
+2002-02-04 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/27_io/howto.html: Link to Dietmar Kuehl's IOStream page,
+ add HTML comment about updating links if numbering changes.
+
+2003-02-04 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9538
+ * include/bits/streambuf.tcc (sputbackc): Access
+ this->gptr()[-1] only if _M_in_beg < _M_in_cur.
+ * testsuite/27_io/filebuf_virtuals.cc (test08): Add.
+
+2003-02-04 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9507
+ * include/bits/fstream.tcc (open): If the 'ate' repositioning
+ operation fails, calls close _and_ returns a null pointer
+ to indicate failure (27.8.1.3,4).
+ * testsuite/27_io/filebuf_members.cc (test_06): Add.
+
+2003-02-04 Petur Runolfsson <peturr02@ru.is>
+
+ * testsuite/27_io/filebuf_members.cc (test_04): Remove exit(0).
+
+2002-02-04 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/27_io/howto.html: New section on stdio_filebuf.
+ * docs/html/ext/howto.html: Move stdio_filebuf notes to 27_io.
+ * docs/html/documentation.html: Regenerate.
+
+2003-02-04 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * docs/html/17_intro/porting.texi: Update to GFDL 1.2.
+ * docs/html/17_intro/porting.html: Regenerate.
+
+2003-02-03 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
+ Phil Edwards <pme@gcc.gnu.org>
+
+ * include/std/std_bitset.h: Replace CHAR_BIT with __CHAR_BIT__, use
+ numeric_limits for bits-per-word values.
+ (_Base_bitset::_M_do_count, _Base_bitset<1>::_M_do_count):
+ Use __builtin_popcountl instead.
+ (_Base_bitset::_M_do_find_first, _Base_bitset::_M_do_find_next,
+ _Base_bitset<1>::_M_do_find_first, _Base_bitset<1>::_M_do_find_next):
+ Use __builtin_ctzl instead.
+ (_S_bit_count, _S_first_one): Remove.
+ * config/linker-map.gnu (GLIBCPP_3.4): Remove std::_S_bit_count.
+ * src/Makefile.am (sources): Remove bitset.cc.
+ * src/bitset.cc: Delete file.
+ * src/Makefile.in: Regenerate.
+
+2003-02-03 Phil Edwards <pme@gcc.gnu.org>
+
+ PR libstdc++/9527, PR libstdc++/8713
+ * docs/html/install.html: Mention glibc version requirement.
+ * docs/html/faq/index.html (3.8): New note, glibc 2.2.5+ is needed
+ with 3.2.1+ (formatting bugfixes).
+ * docs/html/faq/index.txt: Regenerate.
+
+2003-02-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR libstdc++/9234
+ * include/bits/valarray_before.h (_UnBase::operator[]): Apply unary
+ operator.
+
+ * include/bits/valarray_before.h (__not_equal_to): Use != instead
+ of ==.
+
+ * testsuite/26_numerics/valarray_operators.cc: New test.
+
+2003-02-01 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/html/faq/index.html: Correct link to libg++ information.
+ * docs/html/faq/index.txt: Regenerated.
+
+2003-02-01 Paolo Carlini <pcarlini@unitus.it>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ Const correctness issue:
+ http://gcc.gnu.org/ml/libstdc++/2003-01/msg00370.html
+ * include/bits/locale_classes.h
+ (locale::_Impl::_M_facets): Change type to const facet**.
+ (locale::_Impl::_M_install_facet): Change declaration to
+ take const facet*.
+ (locale::facet::_M_references): Make mutable.
+ (locale::facet::_M_add_reference): Declare const.
+ (locale::facet::_M_remove_reference): Likewise.
+ * include/bits/locale_facets.tcc
+ (use_facet(const locale&)): Tweak for const facet** _M_facets.
+ (has_facet(const locale&)): Likewise.
+ * src/locale.cc
+ (locale::facet::_M_add_reference): Adjust definition.
+ (locale::facet::_M_remove_reference): Likewise.
+ * src/localename.cc
+ (locale::_Impl::_Impl(const _Impl&, size_t)): Tweak for
+ const facet** _M_facets.
+ (locale::_Impl::_Impl(const char*, size_t)): Likewise.
+ (locale::_Impl::_Impl(facet**, size_t, bool)): Likewise.
+ (locale::_Impl::_M_install_facet): Adjust definition to take
+ const facet* and for const facet** _M_facets.
+ * testsuite/22_locale/locale/cons/8.cc: Add.
+
+2003-01-29 Mark Mitchell <mark@codesourcery.com>
+
+ * include/std/std_limits.h (numeric_limits<float>::has_infinity):
+ Use __FLT_HAS_INIFINITY__ to initialize.
+ (numeric_limits<float>::has_quiet_NaN): Likewise.
+ (numeric_limits<double>::has_infinity): Use __DBL_HAS_INIFINITY__
+ to initialize.
+ (numeric_limits<double>::has_quiet_NaN): Likewise.
+ (numeric_limits<long double>::has_infinity): Use
+ __LDBL_HAS_INIFINITY__ to initialize.
+ (numeric_limits<long_double>::has_quiet_NaN): Likewise.
+
+2003-01-28 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/9433
+ * libsupc++/tinfo.cc (__vmi_class_type_info::__do_dyncast): Cope
+ with bases which are very ambiguous.
+
+2003-01-28 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * src/Makefile.am (CONFIG_CXXFLAGS): Reverse order of
+ @EXTRA_CXX_FLAGS@ @SECTION_FLAGS@.
+ * libsupc++/Makefile.am (CONFIG_CXXFLAGS): Likewise.
+ * src/Makefile.in: Regenerate.
+ * libsupc++/Makefile.in: Regenerate.
+
+2003-01-27 Alexandre Oliva <aoliva@redhat.com>
+
+ * acinclude.m4 (glibcpp_toolexeclibdir): Instead of
+ $(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless
+ version_specific_libs is enabled.
+ * aclocal.m4, configure: Rebuilt.
+
+2003-01-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ * include/bits/valarray_meta.h: Remove, split into ...
+ * include/bits/valarray_before.h: ... this, and ...
+ * include/bits/valarray_after.h: ... this.
+ * include/std/std_valarray.h: Adjust.
+ * include/Makefile.am (bits_headers): Adjust.
+ * include/Makefile.in: Regenerate.
+
+2003-01-24 Andreas Schwab <schwab@suse.de>
+
+ * config/linker-map.gnu: Fix for size_t variance.
+
+2003-01-23 Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/9322
+ * include/std/std_streambuf.h
+ (basic_streambuf::basic_streambuf,
+ basic_streambuf::~basic_streambuf,
+ basic_streambuf::getloc, basic_streambuf::imbue):
+ Remove _M_buf_locale_init
+ * include/bits/fstream.tcc (basic_filebuf::imbue): Likewise
+ * testsuite/27_io/filebuf_virtuals.cc (test08): Add.
+ * testsuite/27_io/streambuf_members.cc (test08): Add.
+ * testsuite/27_io/stringbuf_virtuals.cc (test08): Add.
+
+2003-01-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ Revert include ordering.
+ * config/locale/generic/c_locale.h: Add include guards.
+ * config/locale/gnu/c_locale.h: Same.
+ * include/bits/locale_classes.h: Remove cctype include.
+ * include/std/std_iosfwd.h: Add c++locale.h, cctype includes.
+ * include/std/std_fstream.h: Remove streambuf include.
+ * include/std/std_sstream.h: Remove streambuf include.
+
+2003-01-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in (libtool_VERSION): To 6:0:0.
+ * configure: Regenerated.
+ * config/linker-map.gnu: Clean.
+
+ * src/misc-inst.cc: Remove instantiations.
+
+ * include/bits/stl_alloc.h (__malloc_alloc_template):
+ To __malloc_alloc.
+ (__default_alloc_template): To __pool_alloc.
+ * src/stl-inst.cc: Same.
+ * include/backward/alloc.h: Update.
+ * testsuite/ext/allocators.cc: Update.
+
+ * src/globals.cc (__gnu_cxx): Remove _GLIBCPP_ASM_SYMVER. Should
+ really try to remove these if possible.
+ * src/locale.cc (std): Same.
+
+ * testsuite/abi_check.cc (check_version): Add.
+
+2003-01-22 Benjamin Kosnik <bkoz@redhat.com>
+ Sysoltsev Slawa <Vyatcheslav.Sysoltsev@intel.com>
+ Mark Mitchell <mark@codesourcery.com>
+
+ PR libstdc++/9269
+ * include/std/std_fstream.h (basic_filebuf::uflow): Declare.
+ (basic_filebuf::underflow): Declare.
+ Move definitions.
+
+2003-01-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.h: Move non-facet classes requiring
+ <string> to...
+ * include/bits/locale_classes.h: New.
+ * include/bits/Makefile.am (bits_headers_src): Add locale_classes.h.
+ * include/bits/Makefile.in: Regenerate.
+
+ * include/bits/locale_facets.tcc (__convert_from_v): Move to...
+ * config/locale/gnu/c_locale.h: ...here.
+ * config/locale/generic/c_locale.h: Same.
+
+ * include/bits/locale_facets.tcc: Move declarations to...
+ * include/bits/locale_facets.h: ...here.
+ * include/bits/basic_ios.h: Tweak includes accordingly.
+ * include/std/std_sstream.h: Add streambuf include.
+ * include/std/std_fstream.h: Ditto.
+ * include/std/std_locale.h: Add locale_classes.h include.
+ * include/std/std_iosfwd.h: Tweak.
+ * src/concept-inst.cc: Add iterator include.
+
+ * config/linker-map.gnu: Specify __cxa functions, mark __cxa_dyn_*
+ bits as unexported in the future.
+
+2003-01-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ Reshuffle 22_locale testsuite.
+ * 22_locale/(codecvt.cc money_get.cc
+ codecvt_members_char_char.cc money_get_members_char.cc
+ codecvt_members_unicode_char.cc money_get_members_wchar_t.cc
+ codecvt_members_unicode_wchar_t.cc moneypunct_byname.cc
+ codecvt_members_wchar_t_char.cc moneypunct.cc collate_byname.cc
+ moneypunct_members_char.cc collate.cc moneypunct_members_wchar_t.cc
+ collate_members_char.cc money_put.cc collate_members_wchar_t.cc
+ money_put_members_char.cc ctor_copy_dtor.cc
+ money_put_members_wchar_t.cc ctype.cc num_get.cc ctype_is_char.cc
+ num_get_members_char.cc ctype_is_wchar_t.cc num_get_members_wchar_t.cc
+ ctype_members_char.cc numpunct_byname.cc ctype_members_wchar_t.cc
+ numpunct.cc ctype_narrow_char.cc numpunct_members_char.cc
+ ctype_narrow_wchar_t.cc numpunct_members_wchar_t.cc ctype_scan_char.cc
+ num_put.cc ctype_scan_wchar_t.cc num_put_members_char.cc
+ ctype_to_char.cc num_put_members_wchar_t.cc ctype_to_wchar_t.cc
+ operators.cc ctype_widen_char.cc static_members.cc
+ ctype_widen_wchar_t.cc time_get.cc facet.cc time_get_members_char.cc
+ global_templates.cc time_get_members_wchar_t.cc, members.cc,
+ time_put.cc, messages_byname.cc, time_put_members_char.cc,
+ messages.cc, time_put_members_wchar_t.cc, messages_members_char.cc):
+ Split up into individual test cases...
+ * 22_locale/codecvt/1.cc: New.
+ * 22_locale/codecvt/2.cc: New.
+ * 22_locale/codecvt/always_noconv/char/1.cc: New.
+ * 22_locale/codecvt/always_noconv/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/always_noconv/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/always_noconv/wchar_t/1.cc: New.
+ * 22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/encoding/char/1.cc: New.
+ * 22_locale/codecvt/encoding/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/encoding/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/encoding/wchar_t/1.cc: New.
+ * 22_locale/codecvt/encoding/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/in/char/1.cc: New.
+ * 22_locale/codecvt/in/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/in/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/in/wchar_t/1.cc: New.
+ * 22_locale/codecvt/in/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/in/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/length/char/1.cc: New.
+ * 22_locale/codecvt/length/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/length/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/length/wchar_t/1.cc: New.
+ * 22_locale/codecvt/length/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/length/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/max_length/char/1.cc: New.
+ * 22_locale/codecvt/max_length/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/max_length/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/max_length/wchar_t/1.cc: New.
+ * 22_locale/codecvt/max_length/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/out/char/1.cc: New.
+ * 22_locale/codecvt/out/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/out/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/out/wchar_t/1.cc: New.
+ * 22_locale/codecvt/out/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/out/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/codecvt/unicode/char.cc: New.
+ * 22_locale/codecvt/unicode/wchar_t.cc: New.
+ * 22_locale/codecvt/unshift/char/1.cc: New.
+ * 22_locale/codecvt/unshift/char/wrapped_env.cc: New.
+ * 22_locale/codecvt/unshift/char/wrapped_locale.cc: New.
+ * 22_locale/codecvt/unshift/wchar_t/1.cc: New.
+ * 22_locale/codecvt/unshift/wchar_t/wrapped_env.cc: New.
+ * 22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/collate/1.cc: New.
+ * 22_locale/collate/2.cc: New.
+ * 22_locale/collate/compare/char/1.cc: New.
+ * 22_locale/collate/compare/char/2.cc: New.
+ * 22_locale/collate/compare/char/wrapped_env.cc: New.
+ * 22_locale/collate/compare/char/wrapped_locale.cc: New.
+ * 22_locale/collate/compare/wchar_t/1.cc: New.
+ * 22_locale/collate/compare/wchar_t/2.cc: New.
+ * 22_locale/collate/compare/wchar_t/wrapped_env.cc: New.
+ * 22_locale/collate/compare/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/collate/hash/char/1.cc: New.
+ * 22_locale/collate/hash/char/2.cc: New.
+ * 22_locale/collate/hash/char/wrapped_env.cc: New.
+ * 22_locale/collate/hash/char/wrapped_locale.cc: New.
+ * 22_locale/collate/hash/wchar_t/1.cc: New.
+ * 22_locale/collate/hash/wchar_t/2.cc: New.
+ * 22_locale/collate/hash/wchar_t/wrapped_env.cc: New.
+ * 22_locale/collate/hash/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/collate/transform/char/2.cc: New.
+ * 22_locale/collate/transform/char/wrapped_env.cc: New.
+ * 22_locale/collate/transform/char/wrapped_locale.cc: New.
+ * 22_locale/collate/transform/wchar_t/2.cc: New.
+ * 22_locale/collate/transform/wchar_t/wrapped_env.cc: New.
+ * 22_locale/collate/transform/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/collate_byname/1.cc: New.
+ * 22_locale/ctype/1.cc: New.
+ * 22_locale/ctype/2.cc: New.
+ * 22_locale/ctype/cons/char/1.cc: New.
+ * 22_locale/ctype/cons/char/wrapped_env.cc: New.
+ * 22_locale/ctype/cons/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/is/char/1.cc: New.
+ * 22_locale/ctype/is/char/2.cc: New.
+ * 22_locale/ctype/is/char/3.cc: New.
+ * 22_locale/ctype/is/char/wrapped_env.cc: New.
+ * 22_locale/ctype/is/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/is/wchar_t/1.cc: New.
+ * 22_locale/ctype/is/wchar_t/2.cc: New.
+ * 22_locale/ctype/is/wchar_t/wrapped_env.cc: New.
+ * 22_locale/ctype/is/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/ctype/narrow/char/1.cc: New.
+ * 22_locale/ctype/narrow/char/2.cc: New.
+ * 22_locale/ctype/narrow/char/wrapped_env.cc: New.
+ * 22_locale/ctype/narrow/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/narrow/wchar_t/1.cc: New.
+ * 22_locale/ctype/narrow/wchar_t/2.cc: New.
+ * 22_locale/ctype/narrow/wchar_t/wrapped_env.cc: New.
+ * 22_locale/ctype/narrow/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/ctype/scan/char/1.cc: New.
+ * 22_locale/ctype/scan/char/wrapped_env.cc: New.
+ * 22_locale/ctype/scan/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/scan/wchar_t/1.cc: New.
+ * 22_locale/ctype/scan/wchar_t/wrapped_env.cc: New.
+ * 22_locale/ctype/scan/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/ctype/to/char/1.cc: New.
+ * 22_locale/ctype/to/char/wrapped_env.cc: New.
+ * 22_locale/ctype/to/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/to/wchar_t/1.cc: New.
+ * 22_locale/ctype/to/wchar_t/wrapped_env.cc: New.
+ * 22_locale/ctype/to/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/ctype/widen/char/1.cc: New.
+ * 22_locale/ctype/widen/char/wrapped_env.cc: New.
+ * 22_locale/ctype/widen/char/wrapped_locale.cc: New.
+ * 22_locale/ctype/widen/wchar_t/1.cc: New.
+ * 22_locale/ctype/widen/wchar_t/wrapped_env.cc: New.
+ * 22_locale/ctype/widen/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/facet/1.cc: New.
+ * 22_locale/facet/2.cc: New.
+ * 22_locale/global_templates/1.cc: New.
+ * 22_locale/locale/cons/1.cc: New.
+ * 22_locale/locale/cons/2.cc: New.
+ * 22_locale/locale/cons/3.cc: New.
+ * 22_locale/locale/cons/4.cc: New.
+ * 22_locale/locale/cons/5.cc: New.
+ * 22_locale/locale/cons/6.cc: New.
+ * 22_locale/locale/cons/7.cc: New.
+ * 22_locale/locale/global_locale_objects/1.cc: New.
+ * 22_locale/locale/global_locale_objects/2.cc: New.
+ * 22_locale/locale/global_locale_objects/3.cc: New.
+ * 22_locale/locale/operations/1.cc: New.
+ * 22_locale/locale/operations/2.cc: New.
+ * 22_locale/messages/1.cc: New.
+ * 22_locale/messages/2.cc: New.
+ * 22_locale/messages/members/char/1.cc: New.
+ * 22_locale/messages/members/char/2.cc: New.
+ * 22_locale/messages/members/char/3.cc: New.
+ * 22_locale/messages/members/char/wrapped_env.cc: New.
+ * 22_locale/messages/members/char/wrapped_locale.cc: New.
+ * 22_locale/messages_byname/1.cc: New.
+ * 22_locale/money_get/1.cc: New.
+ * 22_locale/money_get/2.cc: New.
+ * 22_locale/money_get/get/char/1.cc: New.
+ * 22_locale/money_get/get/char/2.cc: New.
+ * 22_locale/money_get/get/char/3.cc: New.
+ * 22_locale/money_get/get/char/4.cc: New.
+ * 22_locale/money_get/get/char/5.cc: New.
+ * 22_locale/money_get/get/char/6.cc: New.
+ * 22_locale/money_get/get/char/7.cc: New.
+ * 22_locale/money_get/get/char/8.cc: New.
+ * 22_locale/money_get/get/char/wrapped_env.cc: New.
+ * 22_locale/money_get/get/char/wrapped_locale.cc: New.
+ * 22_locale/money_get/get/wchar_t/1.cc: New.
+ * 22_locale/money_get/get/wchar_t/2.cc: New.
+ * 22_locale/money_get/get/wchar_t/3.cc: New.
+ * 22_locale/money_get/get/wchar_t/4.cc: New.
+ * 22_locale/money_get/get/wchar_t/5.cc: New.
+ * 22_locale/money_get/get/wchar_t/6.cc: New.
+ * 22_locale/money_get/get/wchar_t/7.cc: New.
+ * 22_locale/money_get/get/wchar_t/8.cc: New.
+ * 22_locale/money_get/get/wchar_t/wrapped_env.cc: New.
+ * 22_locale/money_get/get/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/money_put/1.cc: New.
+ * 22_locale/money_put/2.cc: New.
+ * 22_locale/money_put/put/char/1.cc: New.
+ * 22_locale/money_put/put/char/2.cc: New.
+ * 22_locale/money_put/put/char/3.cc: New.
+ * 22_locale/money_put/put/char/4.cc: New.
+ * 22_locale/money_put/put/char/5.cc: New.
+ * 22_locale/money_put/put/char/6.cc: New.
+ * 22_locale/money_put/put/char/wrapped_env.cc: New.
+ * 22_locale/money_put/put/char/wrapped_locale.cc: New.
+ * 22_locale/money_put/put/wchar_t/1.cc: New.
+ * 22_locale/money_put/put/wchar_t/2.cc: New.
+ * 22_locale/money_put/put/wchar_t/3.cc: New.
+ * 22_locale/money_put/put/wchar_t/4.cc: New.
+ * 22_locale/money_put/put/wchar_t/5.cc: New.
+ * 22_locale/money_put/put/wchar_t/6.cc: New.
+ * 22_locale/money_put/put/wchar_t/wrapped_env.cc: New.
+ * 22_locale/money_put/put/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/moneypunct/1.cc: New.
+ * 22_locale/moneypunct/2.cc: New.
+ * 22_locale/moneypunct/3.cc: New.
+ * 22_locale/moneypunct/members/char/1.cc: New.
+ * 22_locale/moneypunct/members/char/2.cc: New.
+ * 22_locale/moneypunct/members/char/wrapped_env.cc: New.
+ * 22_locale/moneypunct/members/char/wrapped_locale.cc: New.
+ * 22_locale/moneypunct/members/wchar_t/1.cc: New.
+ * 22_locale/moneypunct/members/wchar_t/2.cc: New.
+ * 22_locale/moneypunct/members/wchar_t/wrapped_env.cc: New.
+ * 22_locale/moneypunct/members/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/moneypunct_byname/1.cc: New.
+ * 22_locale/num_get/1.cc: New.
+ * 22_locale/num_get/2.cc: New.
+ * 22_locale/num_get/get/char/1.cc: New.
+ * 22_locale/num_get/get/char/2.cc: New.
+ * 22_locale/num_get/get/char/3.cc: New.
+ * 22_locale/num_get/get/char/4.cc: New.
+ * 22_locale/num_get/get/char/5.cc: New.
+ * 22_locale/num_get/get/char/6.cc: New.
+ * 22_locale/num_get/get/char/wrapped_env.cc: New.
+ * 22_locale/num_get/get/char/wrapped_locale.cc: New.
+ * 22_locale/num_get/get/wchar_t/1.cc: New.
+ * 22_locale/num_get/get/wchar_t/2.cc: New.
+ * 22_locale/num_get/get/wchar_t/3.cc: New.
+ * 22_locale/num_get/get/wchar_t/4.cc: New.
+ * 22_locale/num_get/get/wchar_t/5.cc: New.
+ * 22_locale/num_get/get/wchar_t/6.cc: New.
+ * 22_locale/num_get/get/wchar_t/wrapped_env.cc: New.
+ * 22_locale/num_get/get/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/num_put/1.cc: New.
+ * 22_locale/num_put/2.cc: New.
+ * 22_locale/num_put/put/char/1.cc: New.
+ * 22_locale/num_put/put/char/2.cc: New.
+ * 22_locale/num_put/put/char/3.cc: New.
+ * 22_locale/num_put/put/char/4.cc: New.
+ * 22_locale/num_put/put/char/5.cc: New.
+ * 22_locale/num_put/put/char/wrapped_env.cc: New.
+ * 22_locale/num_put/put/char/wrapped_locale.cc: New.
+ * 22_locale/num_put/put/wchar_t/1.cc: New.
+ * 22_locale/num_put/put/wchar_t/2.cc: New.
+ * 22_locale/num_put/put/wchar_t/3.cc: New.
+ * 22_locale/num_put/put/wchar_t/4.cc: New.
+ * 22_locale/num_put/put/wchar_t/5.cc: New.
+ * 22_locale/num_put/put/wchar_t/wrapped_env.cc: New.
+ * 22_locale/num_put/put/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/numpunct/1.cc: New.
+ * 22_locale/numpunct/2.cc: New.
+ * 22_locale/numpunct/members/char/1.cc: New.
+ * 22_locale/numpunct/members/char/2.cc: New.
+ * 22_locale/numpunct/members/char/wrapped_env.cc: New.
+ * 22_locale/numpunct/members/char/wrapped_locale.cc: New.
+ * 22_locale/numpunct/members/wchar_t/1.cc: New.
+ * 22_locale/numpunct/members/wchar_t/2.cc: New.
+ * 22_locale/numpunct/members/wchar_t/wrapped_env.cc: New.
+ * 22_locale/numpunct/members/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/numpunct_byname/1.cc: New.
+ * 22_locale/numpunct_byname/2.cc: New.
+ * 22_locale/time_get/1.cc: New.
+ * 22_locale/time_get/2.cc: New.
+ * 22_locale/time_get/date_order/char/1.cc: New.
+ * 22_locale/time_get/date_order/char/wrapped_env.cc: New.
+ * 22_locale/time_get/date_order/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/date_order/wchar_t/1.cc: New.
+ * 22_locale/time_get/date_order/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/date_order/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_date/char/1.cc: New.
+ * 22_locale/time_get/get_date/char/2.cc: New.
+ * 22_locale/time_get/get_date/char/3.cc: New.
+ * 22_locale/time_get/get_date/char/wrapped_env.cc: New.
+ * 22_locale/time_get/get_date/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_date/wchar_t/1.cc: New.
+ * 22_locale/time_get/get_date/wchar_t/2.cc: New.
+ * 22_locale/time_get/get_date/wchar_t/3.cc: New.
+ * 22_locale/time_get/get_date/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/get_date/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_monthname/char/1.cc: New.
+ * 22_locale/time_get/get_monthname/char/2.cc: New.
+ * 22_locale/time_get/get_monthname/char/3.cc: New.
+ * 22_locale/time_get/get_monthname/char/wrapped_env.cc: New.
+ * 22_locale/time_get/get_monthname/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_monthname/wchar_t/1.cc: New.
+ * 22_locale/time_get/get_monthname/wchar_t/2.cc: New.
+ * 22_locale/time_get/get_monthname/wchar_t/3.cc: New.
+ * 22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_time/char/1.cc: New.
+ * 22_locale/time_get/get_time/char/2.cc: New.
+ * 22_locale/time_get/get_time/char/3.cc: New.
+ * 22_locale/time_get/get_time/char/wrapped_env.cc: New.
+ * 22_locale/time_get/get_time/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_time/wchar_t/1.cc: New.
+ * 22_locale/time_get/get_time/wchar_t/2.cc: New.
+ * 22_locale/time_get/get_time/wchar_t/3.cc: New.
+ * 22_locale/time_get/get_time/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/get_time/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_weekday/char/1.cc: New.
+ * 22_locale/time_get/get_weekday/char/2.cc: New.
+ * 22_locale/time_get/get_weekday/char/3.cc: New.
+ * 22_locale/time_get/get_weekday/char/wrapped_env.cc: New.
+ * 22_locale/time_get/get_weekday/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_weekday/wchar_t/1.cc: New.
+ * 22_locale/time_get/get_weekday/wchar_t/2.cc: New.
+ * 22_locale/time_get/get_weekday/wchar_t/3.cc: New.
+ * 22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_year/char/1.cc: New.
+ * 22_locale/time_get/get_year/char/3.cc: New.
+ * 22_locale/time_get/get_year/char/wrapped_env.cc: New.
+ * 22_locale/time_get/get_year/char/wrapped_locale.cc: New.
+ * 22_locale/time_get/get_year/wchar_t/1.cc: New.
+ * 22_locale/time_get/get_year/wchar_t/3.cc: New.
+ * 22_locale/time_get/get_year/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_get/get_year/wchar_t/wrapped_locale.cc: New.
+ * 22_locale/time_put/1.cc: New.
+ * 22_locale/time_put/2.cc: New.
+ * 22_locale/time_put/put/char/1.cc: New.
+ * 22_locale/time_put/put/char/10.cc: New.
+ * 22_locale/time_put/put/char/2.cc: New.
+ * 22_locale/time_put/put/char/3.cc: New.
+ * 22_locale/time_put/put/char/4.cc: New.
+ * 22_locale/time_put/put/char/5.cc: New.
+ * 22_locale/time_put/put/char/6.cc: New.
+ * 22_locale/time_put/put/char/7.cc: New.
+ * 22_locale/time_put/put/char/8.cc: New.
+ * 22_locale/time_put/put/char/9.cc: New.
+ * 22_locale/time_put/put/char/wrapped_env.cc: New.
+ * 22_locale/time_put/put/char/wrapped_locale.cc: New.
+ * 22_locale/time_put/put/wchar_t/1.cc: New.
+ * 22_locale/time_put/put/wchar_t/10.cc: New.
+ * 22_locale/time_put/put/wchar_t/2.cc: New.
+ * 22_locale/time_put/put/wchar_t/3.cc: New.
+ * 22_locale/time_put/put/wchar_t/4.cc: New.
+ * 22_locale/time_put/put/wchar_t/5.cc: New.
+ * 22_locale/time_put/put/wchar_t/6.cc: New.
+ * 22_locale/time_put/put/wchar_t/7.cc: New.
+ * 22_locale/time_put/put/wchar_t/8.cc: New.
+ * 22_locale/time_put/put/wchar_t/9.cc: New.
+ * 22_locale/time_put/put/wchar_t/wrapped_env.cc: New.
+ * 22_locale/time_put/put/wchar_t/wrapped_locale.cc: New.
+
+2003-01-16 Jeffrey D. Oldham <oldham@codesourcery.com>
+
+ * config/locale/generic/messages_members.h
+ (messages_byname<_CharT>::messages_byname): Use this-> to refer to
+ unqualified members of base clasess.
+
+2003-01-16 Mark Mitchell <mark@codesourcery.com>
+ Jeffrey Oldham <oldham@codesourcery.com>
+
+ * config/locale/gnu/messages_members.h: Use this-> to refer to
+ unqualified members of base clasess.
+ * config/locale/ieee_1003.1-2001/codecvt_specializations.h: Likewise.
+ * include/bits/codecvt.h: Likewise.
+ * include/bits/deque.tcc: Likewise.
+ * include/bits/fstream.tcc: Likewise.
+ * include/bits/istream.tcc: Likewise.
+ * include/bits/list.tcc: Likewise.
+ * include/bits/locale_facets.h: Likewise.
+ * include/bits/ostream.tcc: Likewise.
+ * include/bits/sstream.tcc: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/stl_tree.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/vector.tcc: Likewise.
+ * include/ext/ropeimpl.h: Likewise.
+ * include/ext/stdio_filebuf.h: Likewise.
+ * include/ext/stl_rope.h: Likewise.
+ * include/std/std_fstream.h: Likewise.
+ * include/std/std_sstream.h: Likewise.
+
+2003-01-15 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/bits/basic_string.tcc (_S_string_copy): Unused, remove.
+
+2003-01-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Substitute
+ GLIBCPP_TEST_WCHAR_T if building wchar_t bits in the library.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * testsuite/Makefile.am (all-local): Add conditional rule to
+ generate testsuite_wchar_t.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/lib/libstdc++-v3-dg.exp
+ (libstdc++-v3-list-sourcefiles): Remove wchar_t files if
+ testsuite_wchar_t is not present in the build directory.
+ * testsuite/libstdc++-v3.dg/dg.exp: Add -g -O2 to DEFAULT_CXXFLAGS.
+ Remove setulimit bits.
+ * testsuite/26_numerics/complex_value.cc: Set to noopts.
+ * testsuite/Makefile.am (CLEANFILES): Add.
+ * testsuite/Makefile.in: Regenerate.
+
+2003-01-15 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * config/os/hpux/os_defines.h (_GLIBCPP_GTHREAD_USE_WEAK): Define for
+ __hppa__.
+
+2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
+
+ Further conform g++'s __vmi_class_type_info to the C++ ABI
+ specification.
+ * libsupc++/cxxabi.h
+ (__vmi_class_type_info::__flags_masks): Remove enumerations not
+ required by the specification.
+
+2003-01-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ Renames, namespaces for testsuite utilities.
+ * testsuite/testsuite_hooks.h: Put into namespace __gnu_cxx_test.
+ (gnu_allocator_tracker): Rename to allocation_tracker.
+ (gnu_new_allocator): Rename to tracker_alloc.
+ (__set_testsuite_memlimit): Rename to set_memory_limits.
+ (gnu_assignment_operator): Rename to assignment_operator.
+ (gnu_destructor): Rename to destructor.
+ (gnu_copy_tracker): Rename to copy_tracker.
+ (gnu_char, gnu_int, gnu_long): Rename to pod_char, pod_int, pod_long.
+ (run_tests_wrapped_locale): New.
+ (run_tests_wrapped_env): New.
+ * testsuite/testsuite_hooks.cc: Same.
+ (class locale_data): Add.
+ (class enviornment_variable): Add.
+ (class not_found): Add.
+ * testsuite/testsuite_allocator.h: Same.
+ * testsuite/testsuite_allocator.cc: Same.
+ * testsuite/23_containers/deque_ctor.cc
+ (test_copy_ctor_exception_safety): Change gnu_allocator_tracker to
+ allocation_tracker.
+ Change gnu_new_allocator to tracker_alloc.
+ Change gnu_counting_struct to counter.
+ Change gnu_copy_tracker to copy_tracker.
+ Change gnu_copy_constructor to copy_constructor.
+ Change gnu_assignment_operator to assignment_operator.
+ Inject.
+ * testsuite/23_containers/vector_capacity.cc: Same.
+ * testsuite/23_containers/vector_ctor.cc (test01): Same.
+ * testsuite/23_containers/list_modifiers.cc: Change
+ gnu_copy_tracker to copy_tracker.
+ * testsuite/21_strings/ctor_copy_dtor.cc (main): Change
+ __set_testsuite_memlimit to set_memory_limits.
+ * testsuite/21_strings/insert.cc (main): Same.
+ * testsuite/27_io/filebuf.cc: Change gnu_char to pod_char.
+ * testsuite/27_io/stringstream.cc: Same.
+ * testsuite/27_io/stringbuf.cc: Same.
+ * testsuite/27_io/streambuf.cc: Same.
+ * testsuite/27_io/ostream.cc: Same.
+ * testsuite/27_io/istream.cc: Same.
+ * testsuite/27_io/fstream.cc: Same.
+ * testsuite/lib/libstdc++-v3-dg.exp
+ (libstdc++-v3-list-sourcefiles): Additionally handle files two and
+ three levels deeper in glob patterns.
+
+2003-01-11 Phil Edwards <pme@gcc.gnu.org>
+
+ * docs/doxygen/tables.html: Finished now.
+ * docs/doxygen/user.cfg.in: Update to latest version of Doxygen.
+ * include/bits/basic_ios.h (basic_ios::rdbuf): Add example to
+ comments.
+
+ * include/bits/deque.tcc, include/bits/stl_alloc.h,
+ include/bits/stl_deque.h, include/bits/stl_list.h,
+ include/bits/stl_vector.h: Remove _GLIBCPP_DEPRECATED bits scheduled
+ for 3.4 removal.
+
+2003-01-09 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in: Revert.
+ * configure: Regenerate.
+
+2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
+
+ * include/Makefile.am (install-data-local): Prepend
+ $(DESTDIR) to destination paths in all (un)installation
+ commands. Use ${c_base_builddir} and ${std_builddir}
+ as destination subdirectories to achieve consistency with
+ preceding mkinstalldirs commands. No effect because both
+ variables contain "." only.
+ * include/Makefile.in: Regenerate.
+
+2003-01-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/Makefile.am (stamp-*): Add checks for existing stamps.
+ * include/Makefile.in: Regenerate.
+
+ * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Correct comment.
+ * aclocal.m4: Regenerate.
+
+ * configure.in: Don't add new multi-do rules every time the
+ directory is reconfigured.
+ * configure: Regenerate.
+
+2003-01-08 Brad Spencer <spencer@infointeractive.com>
+ Nathan Myers <ncm@cantrip.org>
+
+ * src/Makefile.am (stamp-debug): Clean.
+ * src/Makefile.in: Regenerate.
+
+2003-01-07 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/8707
+ * Makefile.am (distclean-multi): Fix.
+ * Makefile.in: Regenerate.
+
+2003-01-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.h (messages): Move ctor, dtor
+ definitions to..
+ (__timepunct): Same.
+ * config/locale/gnu/messages_members.h (messages): Add dtor, ctor
+ definitions. Conditionalize for GNU systems.
+ * config/locale/generic/messages_members.h (messages): Add dtor, ctor
+ definitions.
+ * config/locale/gnu/time_members.h (messages): New. Add dtor, ctor
+ definitions. Conditionalize for GNU systems.
+ * config/locale/generic/time_members.h (messages): New. Add dtor, ctor
+ definitions.
+ * include/bits/localefwd.h (locale::facet::_S_c_name): Add.
+ * src/locale.cc: Define.
+ * src/localename.cc (locale::_Impl::_Impl(facet**, size_t, bool):
+ Use it.
+ * config/locale/gnu/time_members.h: Use it.
+ * config/locale/gnu/messages_members.h: Use it.
+ * config/linker-map.gnu: Add locale::facets details.
+ * include/Makefile.am (target_headers_extra): Add time_members.h.
+ * include/Makefile.in: Regenerate.
+ * acinclude.m4: Export CTIME_H.
+ * aclocal.m4: Regenerate.
+ * configure: Regnerate.
+
+2003-01-06 Paolo Carlini <pcarlini@unitus.it>
+
+ * src/codecvt.cc
+ (codecvt<char, char, mbstate_t>::do_in, do_out):
+ Tweak parameters to avoid unused parameter warnings.
+
+2003-01-06 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9151
+ * include/bits/locale_facets.cc (num_put::_M_convert_float):
+ Limit __prec to digits10 + 2, not digits10 + 1, taking into
+ account the possibility of %{g,G} conversion specifiers
+ inside _S_format_float.
+ * testsuite/27_io/ostream_inserter_arith.cc (test06): Add.
+
+2003-01-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init,
+ libstdc++-v3-list-sourcefiles): Additionally handle files one
+ level deeper in glob patterns.
+
+ * testsuite/27_io/istream_extractor_arith.cc: Delete, split...
+ * testsuite/27_io/istream_extractor_arith/01.cc,
+ testsuite/27_io/istream_extractor_arith/02.cc,
+ testsuite/27_io/istream_extractor_arith/03.cc,
+ testsuite/27_io/istream_extractor_arith/06.cc,
+ testsuite/27_io/istream_extractor_arith/07.cc,
+ testsuite/27_io/istream_extractor_arith/08.cc,
+ testsuite/27_io/istream_extractor_arith/09.cc,
+ testsuite/27_io/istream_extractor_arith/10.cc,
+ testsuite/27_io/istream_extractor_arith/11.cc,
+ testsuite/27_io/istream_extractor_arith/12.cc,
+ testsuite/27_io/istream_extractor_arith/13.cc: ... to new files.
+ * testsuite/27_io/istream_extractor_arith/12.cc: Add XFAIL for
+ sparc*-*-solaris2*.
+
+2003-01-05 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/9168
+ * src/codecvt.cc
+ (codecvt<char, char, mbstate_t>::do_in, do_out):
+ Implement the resolution of DR19 (TC).
+ * testsuite/22_locale/codecvt_members_char_char.cc
+ (test01): Tweak.
+
+2003-01-02 Jason Merrill <jason@redhat.com>
+
+ * config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
+ *__mem is also an output.
+ * config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 93bb23874a3..e61f4655247 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -762,11 +762,12 @@ AC_DEFUN(GLIBCXX_EXPORT_INSTALL_INFO, [
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
- # is selected.
+ # is selected. FIXME: these variables are misnamed, there are
+ # no executables installed in _toolexecdir or _toolexeclibdir.
if test x"$gxx_include_dir" = x"no"; then
- gxx_include_dir='${libdir}/gcc-lib/${host_alias}/'$gcc_version/include/c++
+ gxx_include_dir='${libdir}/gcc/${host_alias}/'$gcc_version/include/c++
fi
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/'$gcc_version'$(MULTISUBDIR)'
fi
@@ -778,7 +779,7 @@ AC_DEFUN(GLIBCXX_EXPORT_INSTALL_INFO, [
glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/lib'
else
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${libdir}'
fi
multi_os_directory=`$CXX -print-multi-os-directory`
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index f8e416cffa8..723aa803fa7 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.7.8 -*- Autoconf -*-
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
@@ -775,11 +775,12 @@ AC_DEFUN(GLIBCXX_EXPORT_INSTALL_INFO, [
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
- # is selected.
+ # is selected. FIXME: these variables are misnamed, there are
+ # no executables installed in _toolexecdir or _toolexeclibdir.
if test x"$gxx_include_dir" = x"no"; then
- gxx_include_dir='${libdir}/gcc-lib/${host_alias}/'$gcc_version/include/c++
+ gxx_include_dir='${libdir}/gcc/${host_alias}/'$gcc_version/include/c++
fi
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/'$gcc_version'$(MULTISUBDIR)'
fi
@@ -791,7 +792,7 @@ AC_DEFUN(GLIBCXX_EXPORT_INSTALL_INFO, [
glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/lib'
else
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${libdir}'
fi
multi_os_directory=`$CXX -print-multi-os-directory`
@@ -1996,7 +1997,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.7.8])])
+ [AM_AUTOMAKE_VERSION([1.7.9])])
# Helper functions for option handling. -*- Autoconf -*-
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index b2d030da06d..7d13cdab027 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -422,9 +422,6 @@
/* Define to 1 if you have the `modfl' function. */
#undef HAVE_MODFL
-/* Define to 1 if you have the `nan' function. */
-#undef HAVE_NAN
-
/* Define to 1 if you have the <nan.h> header file. */
#undef HAVE_NAN_H
diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc
index 7d014e448b4..22f29275700 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.cc
+++ b/libstdc++-v3/config/io/basic_file_stdio.cc
@@ -1,6 +1,6 @@
// Wrapper of C-language FILE struct -*- C++ -*-
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -70,62 +70,119 @@
#include <limits> // For <off_t>::max() and min()
-namespace std
+namespace __gnu_internal
{
- // Definitions for __basic_file<char>.
- __basic_file<char>::__basic_file(__c_lock* /*__lock*/)
- : _M_cfile(NULL), _M_cfile_created(false) { }
-
- __basic_file<char>::~__basic_file()
- { this->close(); }
-
- void
- __basic_file<char>::_M_open_mode(ios_base::openmode __mode, int& __p_mode,
- int&, char* __c_mode)
- {
- bool __testb = __mode & ios_base::binary;
- bool __testi = __mode & ios_base::in;
- bool __testo = __mode & ios_base::out;
- bool __testt = __mode & ios_base::trunc;
- bool __testa = __mode & ios_base::app;
-
- // Set __c_mode for use in fopen.
- // Set __p_mode for use in open.
- if (!__testi && __testo && !__testt && !__testa)
- {
- strcpy(__c_mode, "w");
- __p_mode = O_WRONLY | O_CREAT;
- }
- if (!__testi && __testo && !__testt && __testa)
+ // Map ios_base::openmode flags to a string for use in fopen().
+ // Table of valid combinations as given in [lib.filebuf.members]/2.
+ static const char*
+ fopen_mode(std::ios_base::openmode mode)
+ {
+ enum
{
- strcpy(__c_mode, "a");
- __p_mode = O_WRONLY | O_CREAT | O_APPEND;
- }
- if (!__testi && __testo && __testt && !__testa)
+ in = std::ios_base::in,
+ out = std::ios_base::out,
+ trunc = std::ios_base::trunc,
+ app = std::ios_base::app,
+ binary = std::ios_base::binary
+ };
+
+ switch (mode & (in|out|trunc|app|binary))
{
- strcpy(__c_mode, "w");
- __p_mode = O_WRONLY | O_CREAT | O_TRUNC;
+ case ( out ): return "w";
+ case ( out |app ): return "a";
+ case ( out|trunc ): return "w";
+ case (in ): return "r";
+ case (in|out ): return "r+";
+ case (in|out|trunc ): return "w+";
+
+ case ( out |binary): return "wb";
+ case ( out |app|binary): return "ab";
+ case ( out|trunc |binary): return "wb";
+ case (in |binary): return "rb";
+ case (in|out |binary): return "r+b";
+ case (in|out|trunc |binary): return "w+b";
+
+ default: return 0; // invalid
}
+ }
- if (__testi && !__testo && !__testt && !__testa)
- {
- strcpy(__c_mode, "r");
- __p_mode = O_RDONLY;
- }
- if (__testi && __testo && !__testt && !__testa)
+ // Wrapper handling partial write.
+ static std::streamsize
+ xwrite(int __fd, const char* __s, std::streamsize __n)
+ {
+ std::streamsize __nleft = __n;
+
+ for (;;)
{
- strcpy(__c_mode, "r+");
- __p_mode = O_RDWR | O_CREAT;
+ const std::streamsize __ret = write(__fd, __s, __nleft);
+ if (__ret == -1L && errno == EINTR)
+ continue;
+ if (__ret == -1L)
+ break;
+
+ __nleft -= __ret;
+ if (__nleft == 0)
+ break;
+
+ __s += __ret;
}
- if (__testi && __testo && __testt && !__testa)
+
+ return __n - __nleft;
+ }
+
+#ifdef _GLIBCXX_HAVE_WRITEV
+ // Wrapper handling partial writev.
+ static std::streamsize
+ xwritev(int __fd, const char* __s1, std::streamsize __n1,
+ const char* __s2, std::streamsize __n2)
+ {
+ std::streamsize __nleft = __n1 + __n2;
+ std::streamsize __n1_left = __n1;
+
+ struct iovec __iov[2];
+ __iov[1].iov_base = const_cast<char*>(__s2);
+ __iov[1].iov_len = __n2;
+
+ for (;;)
{
- strcpy(__c_mode, "w+");
- __p_mode = O_RDWR | O_CREAT | O_TRUNC;
+ __iov[0].iov_base = const_cast<char*>(__s1);
+ __iov[0].iov_len = __n1_left;
+
+ const std::streamsize __ret = writev(__fd, __iov, 2);
+ if (__ret == -1L && errno == EINTR)
+ continue;
+ if (__ret == -1L)
+ break;
+
+ __nleft -= __ret;
+ if (__nleft == 0)
+ break;
+
+ const std::streamsize __off = __ret - __n1_left;
+ if (__off >= 0)
+ {
+ __nleft -= xwrite(__fd, __s2 + __off, __n2 - __off);
+ break;
+ }
+
+ __s1 += __ret;
+ __n1_left -= __ret;
}
- if (__testb)
- strcat(__c_mode, "b");
+
+ return __n1 + __n2 - __nleft;
}
-
+#endif
+} // namespace __gnu_internal
+
+namespace std
+{
+ // Definitions for __basic_file<char>.
+ __basic_file<char>::__basic_file(__c_lock* /*__lock*/)
+ : _M_cfile(NULL), _M_cfile_created(false) { }
+
+ __basic_file<char>::~__basic_file()
+ { this->close(); }
+
__basic_file<char>*
__basic_file<char>::sys_open(__c_file* __file, ios_base::openmode)
{
@@ -144,12 +201,9 @@ namespace std
__basic_file<char>::sys_open(int __fd, ios_base::openmode __mode)
{
__basic_file* __ret = NULL;
- int __p_mode = 0;
- int __rw_mode = 0;
- char __c_mode[4];
-
- _M_open_mode(__mode, __p_mode, __rw_mode, __c_mode);
- if (!this->is_open() && (_M_cfile = fdopen(__fd, __c_mode)))
+ const char* __c_mode = __gnu_internal::fopen_mode(__mode);
+ if (__c_mode && !this->is_open()
+ && (_M_cfile = fdopen(__fd, __c_mode)))
{
_M_cfile_created = true;
if (__fd == 0)
@@ -164,13 +218,8 @@ namespace std
int /*__prot*/)
{
__basic_file* __ret = NULL;
- int __p_mode = 0;
- int __rw_mode = 0;
- char __c_mode[4];
-
- _M_open_mode(__mode, __p_mode, __rw_mode, __c_mode);
-
- if (!this->is_open())
+ const char* __c_mode = __gnu_internal::fopen_mode(__mode);
+ if (__c_mode && !this->is_open())
{
#ifdef _GLIBCXX_USE_LFS
if ((_M_cfile = fopen64(__name, __c_mode)))
@@ -221,13 +270,7 @@ namespace std
streamsize
__basic_file<char>::xsputn(const char* __s, streamsize __n)
- {
- streamsize __ret;
- do
- __ret = write(this->fd(), __s, __n);
- while (__ret == -1L && errno == EINTR);
- return __ret;
- }
+ { return __gnu_internal::xwrite(this->fd(), __s, __n); }
streamsize
__basic_file<char>::xsputn_2(const char* __s1, streamsize __n1,
@@ -235,30 +278,13 @@ namespace std
{
streamsize __ret = 0;
#ifdef _GLIBCXX_HAVE_WRITEV
- struct iovec __iov[2];
- __iov[0].iov_base = const_cast<char*>(__s1);
- __iov[0].iov_len = __n1;
- __iov[1].iov_base = const_cast<char*>(__s2);
- __iov[1].iov_len = __n2;
-
- do
- __ret = writev(this->fd(), __iov, 2);
- while (__ret == -1L && errno == EINTR);
+ __ret = __gnu_internal::xwritev(this->fd(), __s1, __n1, __s2, __n2);
#else
if (__n1)
- do
- __ret = write(this->fd(), __s1, __n1);
- while (__ret == -1L && errno == EINTR);
+ __ret = __gnu_internal::xwrite(this->fd(), __s1, __n1);
if (__ret == __n1)
- {
- do
- __ret = write(this->fd(), __s2, __n2);
- while (__ret == -1L && errno == EINTR);
-
- if (__ret != -1L)
- __ret += __n1;
- }
+ __ret += __gnu_internal::xwrite(this->fd(), __s2, __n2);
#endif
return __ret;
}
@@ -285,7 +311,11 @@ namespace std
{
#ifdef FIONREAD
// Pipes and sockets.
+#ifdef _GLIBCXX_FIONREAD_TAKES_OFF_T
+ off_t __num = 0;
+#else
int __num = 0;
+#endif
int __r = ioctl(this->fd(), FIONREAD, &__num);
if (!__r && __num >= 0)
return __num;
@@ -309,5 +339,4 @@ namespace std
#endif
return 0;
}
-
} // namespace std
diff --git a/libstdc++-v3/config/io/basic_file_stdio.h b/libstdc++-v3/config/io/basic_file_stdio.h
index d6a06ead739..57ff4326e6b 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.h
+++ b/libstdc++-v3/config/io/basic_file_stdio.h
@@ -1,6 +1,6 @@
// Wrapper of C-language FILE struct -*- C++ -*-
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -62,11 +62,7 @@ namespace std
public:
__basic_file(__c_lock* __lock = 0);
-
- void
- _M_open_mode(ios_base::openmode __mode, int& __p_mode, int& __rw_mode,
- char* __c_mode);
-
+
__basic_file*
open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu
index 2d46e884888..c1180500c6c 100644
--- a/libstdc++-v3/config/linker-map.gnu
+++ b/libstdc++-v3/config/linker-map.gnu
@@ -150,6 +150,8 @@ GLIBCXX_3.4 {
_ZTISt10__num_base;
_ZTISt21__ctype_abstract_baseI[cw]E;
_ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
+ _ZTIN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+ _ZTIN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
# typeinfo name
_ZTSNSt8ios_base7failureE;
@@ -161,6 +163,8 @@ GLIBCXX_3.4 {
_ZTSSt10__num_base;
_ZTSSt21__ctype_abstract_baseI[cw]E;
_ZTSSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
+ _ZTSN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
+ _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
# function-scope static objects requires a guard variable.
_ZGVNSt*;
@@ -203,7 +207,6 @@ GLIBCXX_3.4 {
sqrtf;
sqrtl;
copysignf;
- nan;
__signbit;
__signbitf;
__signbitl;
diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
index a214e00b516..730c3662ea6 100644
--- a/libstdc++-v3/config/locale/generic/c_locale.cc
+++ b/libstdc++-v3/config/locale/generic/c_locale.cc
@@ -152,8 +152,8 @@ namespace std
// See http://gcc.gnu.org/ml/libstdc++/2003-02/msg00345.html
__cloc = NULL;
if (strcmp(__s, "C"))
- __throw_runtime_error("locale::facet::_S_create_c_locale "
- "name not valid");
+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
+ "name not valid"));
}
void
diff --git a/libstdc++-v3/config/locale/gnu/c_locale.cc b/libstdc++-v3/config/locale/gnu/c_locale.cc
index b808f70e5f9..bf975b98bac 100644
--- a/libstdc++-v3/config/locale/gnu/c_locale.cc
+++ b/libstdc++-v3/config/locale/gnu/c_locale.cc
@@ -100,8 +100,8 @@ namespace std
if (!__cloc)
{
// This named locale is not supported by the underlying OS.
- __throw_runtime_error("locale::facet::_S_create_c_locale "
- "name not valid");
+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
+ "name not valid"));
}
}
diff --git a/libstdc++-v3/config/locale/gnu/monetary_members.cc b/libstdc++-v3/config/locale/gnu/monetary_members.cc
index 580297b6325..a2aa0c5933a 100644
--- a/libstdc++-v3/config/locale/gnu/monetary_members.cc
+++ b/libstdc++-v3/config/locale/gnu/monetary_members.cc
@@ -1,6 +1,6 @@
// std::moneypunct implementation details, GNU version -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -419,6 +419,12 @@ namespace std
_M_data = 0;
delete __wcs_ps;
delete __wcs_ns;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ __uselocale(__old);
+#else
+ setlocale(LC_ALL, __old);
+ free(__old);
+#endif
__throw_exception_again;
}
@@ -543,6 +549,12 @@ namespace std
_M_data = 0;
delete __wcs_ps;
delete __wcs_ns;
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ __uselocale(__old);
+#else
+ setlocale(LC_ALL, __old);
+ free(__old);
+#endif
__throw_exception_again;
}
diff --git a/libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h b/libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h
index 93d0e5acc35..efa8c378360 100644
--- a/libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h
+++ b/libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h
@@ -130,15 +130,15 @@
{
_M_in_desc = iconv_open(_M_int_enc, _M_ext_enc);
if (_M_in_desc == __err)
- __throw_runtime_error("__enc_traits::_M_init "
- "creating iconv input descriptor failed");
+ __throw_runtime_error(__N("__enc_traits::_M_init "
+ "creating iconv input descriptor failed"));
}
if (!_M_out_desc)
{
_M_out_desc = iconv_open(_M_ext_enc, _M_int_enc);
if (_M_out_desc == __err)
- __throw_runtime_error("__enc_traits::_M_init "
- "creating iconv output descriptor failed");
+ __throw_runtime_error(__N("__enc_traits::_M_init "
+ "creating iconv output descriptor failed"));
}
}
diff --git a/libstdc++-v3/config/os/irix/irix6.5/os_defines.h b/libstdc++-v3/config/os/irix/irix6.5/os_defines.h
index 41ce7edbc5d..6b0174b522d 100644
--- a/libstdc++-v3/config/os/irix/irix6.5/os_defines.h
+++ b/libstdc++-v3/config/os/irix/irix6.5/os_defines.h
@@ -51,5 +51,8 @@
// GCC does not use thunks on IRIX.
#define _G_USING_THUNKS 0
+// FINOREAD takes an "off_t *" as argument.
+#define _GLIBCXX_FIONREAD_TAKES_OFF_T
+
#endif
diff --git a/libstdc++-v3/config/os/tpf/ctype_base.h b/libstdc++-v3/config/os/tpf/ctype_base.h
new file mode 100644
index 00000000000..0461f3a6f72
--- /dev/null
+++ b/libstdc++-v3/config/os/tpf/ctype_base.h
@@ -0,0 +1,55 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+//
+// ISO C++ 14882: 22.1 Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+ struct ctype_base
+ {
+ // Non-standard typedefs.
+ typedef const int* __to_type;
+
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+ typedef unsigned short mask;
+ static const mask upper = _ISupper;
+ static const mask lower = _ISlower;
+ static const mask alpha = _ISalpha;
+ static const mask digit = _ISdigit;
+ static const mask xdigit = _ISxdigit;
+ static const mask space = _ISspace;
+ static const mask print = _ISprint;
+ static const mask graph = _ISalpha | _ISdigit | _ISpunct;
+ static const mask cntrl = _IScntrl;
+ static const mask punct = _ISpunct;
+ static const mask alnum = _ISalpha | _ISdigit;
+ };
diff --git a/libstdc++-v3/config/os/tpf/ctype_inline.h b/libstdc++-v3/config/os/tpf/ctype_inline.h
new file mode 100644
index 00000000000..3f2f32d1607
--- /dev/null
+++ b/libstdc++-v3/config/os/tpf/ctype_inline.h
@@ -0,0 +1,69 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+//
+// ISO C++ 14882: 22.1 Locales
+//
+
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+// functions go in ctype.cc
+
+ bool
+ ctype<char>::
+ is(mask __m, char __c) const
+ { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+ const char*
+ ctype<char>::
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+ return __high;
+ }
+
+ const char*
+ ctype<char>::
+ scan_is(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+ ++__low;
+ return __low;
+ }
+
+ const char*
+ ctype<char>::
+ scan_not(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+ ++__low;
+ return __low;
+ }
diff --git a/libstdc++-v3/config/os/tpf/ctype_noninline.h b/libstdc++-v3/config/os/tpf/ctype_noninline.h
new file mode 100644
index 00000000000..3735b56122b
--- /dev/null
+++ b/libstdc++-v3/config/os/tpf/ctype_noninline.h
@@ -0,0 +1,103 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+//
+// ISO C++ 14882: 22.1 Locales
+//
+
+// Information as gleaned from /usr/include/ctype.h
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
+ {
+ const ctype_base::mask* __ret;
+ char* __old = strdup(setlocale(LC_CTYPE, NULL));
+ setlocale(LC_CTYPE, "C");
+ __ret = *__ctype_b_loc();
+ setlocale(LC_CTYPE, __old);
+ free(__old);
+ return __ret;
+ }
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+ : facet(__refs), _M_del(__table != 0 && __del)
+ {
+ char* __old=strdup(setlocale(LC_CTYPE, NULL));
+ setlocale(LC_CTYPE, "C");
+ _M_toupper = *__ctype_toupper_loc();
+ _M_tolower = *__ctype_tolower_loc();
+ _M_table = __table ? __table : *__ctype_b_loc();
+ setlocale(LC_CTYPE, __old);
+ free(__old);
+ _M_c_locale_ctype = _S_get_c_locale();
+ }
+
+ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+ : facet(__refs), _M_del(__table != 0 && __del)
+ {
+ char* __old=strdup(setlocale(LC_CTYPE, NULL));
+ setlocale(LC_CTYPE, "C");
+ _M_toupper = *__ctype_toupper_loc();
+ _M_tolower = *__ctype_tolower_loc();
+ _M_table = __table ? __table : *__ctype_b_loc();
+ setlocale(LC_CTYPE, __old);
+ free(__old);
+ _M_c_locale_ctype = _S_get_c_locale();
+ }
+
+ char
+ ctype<char>::do_toupper(char __c) const
+ { return _M_toupper[static_cast<unsigned char>(__c)]; }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+ *__low = _M_toupper[static_cast<unsigned char>(*__low)];
+ ++__low;
+ }
+ return __high;
+ }
+
+ char
+ ctype<char>::do_tolower(char __c) const
+ { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+ *__low = _M_tolower[static_cast<unsigned char>(*__low)];
+ ++__low;
+ }
+ return __high;
+ }
diff --git a/libstdc++-v3/config/os/tpf/os_defines.h b/libstdc++-v3/config/os/tpf/os_defines.h
new file mode 100644
index 00000000000..40ee13aebd5
--- /dev/null
+++ b/libstdc++-v3/config/os/tpf/os_defines.h
@@ -0,0 +1,45 @@
+// Specific definitions for TPF -*- C++ -*-
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
+
+// TPF is a big endian OS, let it be known here.
+#define _BIG_ENDIAN 1
+
+// This keeps isanum, et al from being propagated as macros.
+#define __NO_CTYPE 1
+
+// We must not see the optimized string functions GNU libc defines.
+#define __NO_STRING_INLINES
+
+#endif
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index dde36f5e4a0..9fd8dc1e3ed 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -24177,8 +24177,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -44201,8 +44200,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -47064,8 +47062,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -49202,8 +49199,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -51213,8 +51209,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -52848,10 +52843,16 @@ echo "${ECHO_T}$enable_wchar_t" >&6
#define HAVE_INT64_T 1
_ACEOF
- cat >>confdefs.h <<\_ACEOF
+ case "$target" in
+ *-uclinux*)
+ # Don't enable LFS with uClibc
+ ;;
+ *)
+ cat >>confdefs.h <<\_ACEOF
#define _GLIBCXX_USE_LFS 1
_ACEOF
+ esac
# For showmanyc_helper().
@@ -53761,8 +53762,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -55728,8 +55728,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -57594,8 +57593,7 @@ _ACEOF
fi
-
-for ac_func in nan copysignf
+for ac_func in copysignf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -60941,6 +60939,2033 @@ _ACEOF
_ACEOF
;;
+ *-tpf)
+
+
+
+
+
+
+
+
+for ac_header in nan.h endian.h machine/endian.h \
+ sys/param.h sys/types.h locale.h float.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+
+ # If we're not using GNU ld, then there's no point in even trying these
+ # tests. Check for that first. We should have already tested for gld
+ # by now (in libtool), but require it now just to be safe...
+ test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+ test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+ # The name set by libtool depends on the version of libtool. Shame on us
+ # for depending on an impl detail, but c'est la vie. Older versions used
+ # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+ # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+ # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
+ # set (hence we're using an older libtool), then set it.
+ if test x${with_gnu_ld+set} != xset; then
+ if test x${ac_cv_prog_gnu_ld+set} != xset; then
+ # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
+ with_gnu_ld=no
+ else
+ with_gnu_ld=$ac_cv_prog_gnu_ld
+ fi
+ fi
+
+ # Start by getting the version number. I think the libtool test already
+ # does some of this, but throws away the result.
+
+ ldver=`$LD --version 2>/dev/null | head -1 | \
+ sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+
+ glibcxx_gnu_ld_version=`echo $ldver | \
+ $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+
+ # Set --gc-sections.
+ if test "$with_gnu_ld" = "notbroken"; then
+ # GNU ld it is! Joy and bunny rabbits!
+
+ # All these tests are for C++; save the language and the compiler flags.
+ # Need to do this so that g++ won't try to link in libstdc++
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS='-x c++ -Wl,--gc-sections'
+
+ # Check for -Wl,--gc-sections
+ # XXX This test is broken at the moment, as symbols required for linking
+ # are now in libsupc++ (not built yet). In addition, this test has
+ # cored on solaris in the past. In addition, --gc-sections doesn't
+ # really work at the moment (keeps on discarding used sections, first
+ # .eh_frame and now some of the glibc sections for iconv).
+ # Bzzzzt. Thanks for playing, maybe next time.
+ echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
+echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+ ac_sectionLDflags=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ int main(void)
+ {
+ try { throw 1; }
+ catch (...) { };
+ return 0;
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_sectionLDflags=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_sectionLDflags=no
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ else
+ # this is the suspicious part
+ CFLAGS=''
+ fi
+ if test "$ac_sectionLDflags" = "yes"; then
+ SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+ fi
+ echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
+echo "${ECHO_T}$ac_sectionLDflags" >&6
+ fi
+
+ # Set linker optimization flags.
+ if test x"$with_gnu_ld" = x"yes"; then
+ OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+ fi
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking for main in -lm" >&5
+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_main+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_main=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
+echo "${ECHO_T}$ac_cv_lib_m_main" >&6
+if test $ac_cv_lib_m_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+for ac_func in copysignf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
+fi
+done
+
+
+
+for ac_func in __signbit
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
+fi
+done
+
+
+for ac_func in __signbitf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
+fi
+done
+
+
+ if test x$ac_cv_func_copysignl = x"yes"; then
+
+for ac_func in __signbitl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
+fi
+done
+
+ fi
+
+ # XXX Review this. Nothing uses it.
+ if test -n "$LIBMATHOBJS"; then
+ need_libmath=yes
+ fi
+
+
+
+ # Test wchar.h for mbstate_t, which is needed for char_traits and
+ # others even if wchar_t support is not on.
+ echo "$as_me:$LINENO: checking for mbstate_t" >&5
+echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t teststate;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ have_mbstate_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+have_mbstate_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $have_mbstate_t" >&5
+echo "${ECHO_T}$have_mbstate_t" >&6
+ if test x"$have_mbstate_t" = xyes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ fi
+
+ # Sanity check for existence of ISO C99 headers for extended encoding.
+
+for ac_header in wchar.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ ac_has_wchar_h=yes
+else
+ ac_has_wchar_h=no
+fi
+
+done
+
+
+for ac_header in wctype.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ ac_has_wctype_h=yes
+else
+ ac_has_wctype_h=no
+fi
+
+done
+
+
+ # Only continue checking if the ISO C99 headers exist and support is on.
+ if test x"$ac_has_wchar_h" = xyes &&
+ test x"$ac_has_wctype_h" = xyes &&
+ test x"$enable_c_mbchar" != xno; then
+
+ # Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
+ # numeric_limits can instantiate type_traits<wchar_t>
+ echo "$as_me:$LINENO: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo $ECHO_N "checking for WCHAR_MIN and WCHAR_MAX... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+int i = WCHAR_MIN; int j = WCHAR_MAX;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ has_wchar_minmax=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_wchar_minmax=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $has_wchar_minmax" >&5
+echo "${ECHO_T}$has_wchar_minmax" >&6
+
+ # Test wchar.h for WEOF, which is what we use to determine whether
+ # to specialize for char_traits<wchar_t> or not.
+ echo "$as_me:$LINENO: checking for WEOF" >&5
+echo $ECHO_N "checking for WEOF... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <wchar.h>
+ #include <stddef.h>
+int
+main ()
+{
+wint_t i = WEOF;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ has_weof=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_weof=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $has_weof" >&5
+echo "${ECHO_T}$has_weof" >&6
+
+ # Tests for wide character functions used in char_traits<wchar_t>.
+ ac_wfuncs=yes
+
+
+
+
+
+
+for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ ac_wfuncs=no
+fi
+done
+
+
+ # Checks for names injected into std:: by the c_std headers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in btowc wctob fgetwc fgetws fputwc fputws fwide \
+ fwprintf fwscanf swprintf swscanf vfwprintf vswprintf \
+ vwprintf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
+ mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstol \
+ wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
+ wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ ac_wfuncs=no
+fi
+done
+
+
+ # Checks for wide character functions that are not required
+ # for basic wchar_t support. Don't disable support if they are missing.
+ # Injection of these is wrapped with guard macros.
+
+
+
+
+
+for ac_func in vfwscanf vswscanf vwscanf wcstof iswblank
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ echo "$as_me:$LINENO: checking for ISO C99 wchar_t support" >&5
+echo $ECHO_N "checking for ISO C99 wchar_t support... $ECHO_C" >&6
+ if test x"$has_weof" = xyes &&
+ test x"$has_wchar_minmax" = xyes &&
+ test x"$ac_wfuncs" = xyes;
+ then
+ ac_isoC99_wchar_t=yes
+ else
+ ac_isoC99_wchar_t=no
+ fi
+ echo "$as_me:$LINENO: result: $ac_isoC99_wchar_t" >&5
+echo "${ECHO_T}$ac_isoC99_wchar_t" >&6
+
+ # Use iconv for wchar_t to char conversions. As such, check for
+ # X/Open Portability Guide, version 2 features (XPG2).
+ if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for iconv.h" >&5
+echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
+if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
+echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking iconv.h usability" >&5
+echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <iconv.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking iconv.h presence" >&5
+echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <iconv.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: iconv.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for iconv.h" >&5
+echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
+if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_iconv_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
+echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
+
+fi
+if test $ac_cv_header_iconv_h = yes; then
+ ac_has_iconv_h=yes
+else
+ ac_has_iconv_h=no
+fi
+
+
+ if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for langinfo.h" >&5
+echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
+if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking langinfo.h usability" >&5
+echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <langinfo.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking langinfo.h presence" >&5
+echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <langinfo.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: langinfo.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for langinfo.h" >&5
+echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
+if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_langinfo_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
+
+fi
+if test $ac_cv_header_langinfo_h = yes; then
+ ac_has_langinfo_h=yes
+else
+ ac_has_langinfo_h=no
+fi
+
+
+
+ # Check for existence of libiconv.a providing XPG2 wchar_t support.
+ echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
+echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
+if test "${ac_cv_lib_iconv_iconv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-liconv $LIBS"
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char iconv ();
+int
+main ()
+{
+iconv ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_iconv_iconv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_iconv_iconv=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
+echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
+if test $ac_cv_lib_iconv_iconv = yes; then
+ libiconv="-liconv"
+fi
+
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $libiconv"
+
+
+
+
+
+for ac_func in iconv_open iconv_close iconv nl_langinfo
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ ac_XPG2funcs=yes
+else
+ ac_XPG2funcs=no
+fi
+done
+
+
+ LIBS="$ac_save_LIBS"
+
+ echo "$as_me:$LINENO: checking for XPG2 wchar_t support" >&5
+echo $ECHO_N "checking for XPG2 wchar_t support... $ECHO_C" >&6
+ 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
+ else
+ ac_XPG2_wchar_t=no
+ fi
+ echo "$as_me:$LINENO: result: $ac_XPG2_wchar_t" >&5
+echo "${ECHO_T}$ac_XPG2_wchar_t" >&6
+
+ # At the moment, only enable wchar_t specializations if all the
+ # above support is present.
+ if test x"$ac_isoC99_wchar_t" = xyes &&
+ test x"$ac_XPG2_wchar_t" = xyes;
+ then
+ cat >>confdefs.h <<\_ACEOF
+#define _GLIBCXX_USE_WCHAR_T 1
+_ACEOF
+
+ enable_wchar_t=yes
+ fi
+ fi
+ echo "$as_me:$LINENO: checking for enabled wchar_t specializations" >&5
+echo $ECHO_N "checking for enabled wchar_t specializations... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: $enable_wchar_t" >&5
+echo "${ECHO_T}$enable_wchar_t" >&6
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_COPYSIGN 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_COPYSIGNF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FINITEF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FREXPF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_HYPOTF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISINF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISINFF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNAN 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNANF 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_SINCOS 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_SINCOSF 1
+_ACEOF
+
+ if test x"long_double_math_on_this_cpu" = x"yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FINITEL 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_HYPOTL 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISINFL 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNANL 1
+_ACEOF
+
+ fi
+ ;;
*-vxworks)
cat >>confdefs.h <<\_ACEOF
#define HAVE_MMAP 1
@@ -62289,11 +64314,12 @@ echo "${ECHO_T}$version_specific_libs" >&6
if test $version_specific_libs = yes; then
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
- # is selected.
+ # is selected. FIXME: these variables are misnamed, there are
+ # no executables installed in _toolexecdir or _toolexeclibdir.
if test x"$gxx_include_dir" = x"no"; then
- gxx_include_dir='${libdir}/gcc-lib/${host_alias}/'$gcc_version/include/c++
+ gxx_include_dir='${libdir}/gcc/${host_alias}/'$gcc_version/include/c++
fi
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/'$gcc_version'$(MULTISUBDIR)'
fi
@@ -62305,7 +64331,7 @@ echo "${ECHO_T}$version_specific_libs" >&6
glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
glibcxx_toolexeclibdir='${toolexecdir}/lib'
else
- glibcxx_toolexecdir='${libdir}/gcc-lib/${host_alias}'
+ glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
glibcxx_toolexeclibdir='${libdir}'
fi
multi_os_directory=`$CXX -print-multi-os-directory`
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index f5a8f899c2e..4a8062a1f31 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -186,6 +186,9 @@ case "${host_os}" in
solaris2.[789] | solaris2.1[0-9])
os_include_dir="os/solaris/solaris2.7"
;;
+ tpf)
+ os_include_dir="os/tpf"
+ ;;
vxworks)
os_include_dir="os/vxworks"
;;
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 5f1392b5c34..2c395e2c355 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -134,7 +134,13 @@ case "${host}" in
# For LFS.
AC_DEFINE(HAVE_INT64_T)
- AC_DEFINE(_GLIBCXX_USE_LFS)
+ case "$target" in
+ *-uclinux*)
+ # Don't enable LFS with uClibc
+ ;;
+ *)
+ AC_DEFINE(_GLIBCXX_USE_LFS)
+ esac
# For showmanyc_helper().
AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
@@ -336,6 +342,33 @@ case "${host}" in
AC_DEFINE(HAVE_MODFF)
AC_DEFINE(HAVE_HYPOT)
;;
+ *-tpf)
+ AC_CHECK_HEADERS([nan.h endian.h machine/endian.h \
+ sys/param.h sys/types.h locale.h float.h inttypes.h])
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+ AC_SUBST(SECTION_FLAGS)
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
+ GLIBCXX_CHECK_WCHAR_T_SUPPORT
+ AC_DEFINE(HAVE_COPYSIGN)
+ AC_DEFINE(HAVE_COPYSIGNF)
+ AC_DEFINE(HAVE_FINITE)
+ AC_DEFINE(HAVE_FINITEF)
+ AC_DEFINE(HAVE_FREXPF)
+ AC_DEFINE(HAVE_HYPOTF)
+ AC_DEFINE(HAVE_ISINF)
+ AC_DEFINE(HAVE_ISINFF)
+ AC_DEFINE(HAVE_ISNAN)
+ AC_DEFINE(HAVE_ISNANF)
+ AC_DEFINE(HAVE_SINCOS)
+ AC_DEFINE(HAVE_SINCOSF)
+ if test x"long_double_math_on_this_cpu" = x"yes"; then
+ AC_DEFINE(HAVE_FINITEL)
+ AC_DEFINE(HAVE_HYPOTL)
+ AC_DEFINE(HAVE_ISINFL)
+ AC_DEFINE(HAVE_ISNANL)
+ fi
+ ;;
*-vxworks)
AC_DEFINE(HAVE_MMAP)
AC_DEFINE(HAVE_ACOSF)
diff --git a/libstdc++-v3/docs/html/17_intro/C++STYLE b/libstdc++-v3/docs/html/17_intro/C++STYLE
index 90dc879b1d1..87f53d0ea05 100644
--- a/libstdc++-v3/docs/html/17_intro/C++STYLE
+++ b/libstdc++-v3/docs/html/17_intro/C++STYLE
@@ -210,7 +210,7 @@ Notable areas of divergence from what may be previous local practice
All start with the name of the function where the exception is
thrown, and then (optional) descriptive text is added. Example:
- __throw_logic_error("basic_string::_S_construct NULL not valid");
+ __throw_logic_error(__N("basic_string::_S_construct NULL not valid"));
Reason: The verbose terminate handler prints out exception::what(),
as well as the typeinfo for the thrown exception. As this is the
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index b97267bcb72..d92bd434f03 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -103,7 +103,6 @@ bits_headers = \
${bits_srcdir}/concept_check.h \
${bits_srcdir}/concurrence.h \
${bits_srcdir}/cpp_type_traits.h \
- ${bits_srcdir}/demangle.h \
${bits_srcdir}/deque.tcc \
${bits_srcdir}/fstream.tcc \
${bits_srcdir}/functexcept.h \
@@ -204,6 +203,7 @@ ext_builddir = ./ext
ext_headers = \
${ext_srcdir}/algorithm \
${ext_srcdir}/debug_allocator.h \
+ ${ext_srcdir}/demangle.h \
${ext_srcdir}/enc_filebuf.h \
${ext_srcdir}/stdio_filebuf.h \
${ext_srcdir}/stdio_sync_filebuf.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 8c266e81fef..36c107746a1 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@@ -298,7 +298,6 @@ bits_headers = \
${bits_srcdir}/concept_check.h \
${bits_srcdir}/concurrence.h \
${bits_srcdir}/cpp_type_traits.h \
- ${bits_srcdir}/demangle.h \
${bits_srcdir}/deque.tcc \
${bits_srcdir}/fstream.tcc \
${bits_srcdir}/functexcept.h \
@@ -401,6 +400,7 @@ ext_builddir = ./ext
ext_headers = \
${ext_srcdir}/algorithm \
${ext_srcdir}/debug_allocator.h \
+ ${ext_srcdir}/demangle.h \
${ext_srcdir}/enc_filebuf.h \
${ext_srcdir}/stdio_filebuf.h \
${ext_srcdir}/stdio_sync_filebuf.h \
@@ -519,12 +519,12 @@ debug_headers = \
${debug_srcdir}/string \
${debug_srcdir}/vector
-@GLIBCXX_C_HEADERS_C_STD_FALSE@c_base_headers_extra =
# Some of the different "C" header models need extra files.
# Some "C" header schemes require the "C" compatibility headers.
# For --enable-cheaders=c_std
@GLIBCXX_C_HEADERS_C_STD_TRUE@c_base_headers_extra = ${c_base_srcdir}/cmath.tcc
+@GLIBCXX_C_HEADERS_C_STD_FALSE@c_base_headers_extra =
@GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@c_compatibility_headers_extra =
@GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers}
@@ -566,10 +566,10 @@ pch_input = ${host_builddir}/stdc++.h
pch_output_builddir = ${host_builddir}/stdc++.h.gch
pch_source = ${glibcxx_srcdir}/include/stdc++.h
PCHFLAGS = -Winvalid-pch -Wno-deprecated -x c++-header $(CXXFLAGS)
-@GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_input}
@GLIBCXX_BUILD_PCH_FALSE@pch_build =
-@GLIBCXX_BUILD_PCH_TRUE@pch_install = install-pch
+@GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_input}
@GLIBCXX_BUILD_PCH_FALSE@pch_install =
+@GLIBCXX_BUILD_PCH_TRUE@pch_install = install-pch
# List of all timestamp files. By keeping only one copy of this list, both
# CLEANFILES and all-local are kept up-to-date.
@@ -673,7 +673,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
diff --git a/libstdc++-v3/include/backward/bvector.h b/libstdc++-v3/include/backward/bvector.h
index 5d12914525e..92457926788 100644
--- a/libstdc++-v3/include/backward/bvector.h
+++ b/libstdc++-v3/include/backward/bvector.h
@@ -1,6 +1,6 @@
// Backward-compat support -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -59,7 +59,7 @@
#include "backward_warning.h"
#include <vector>
-using std::bit_vector;
+typedef std::vector<bool, std::allocator<bool> > bit_vector;
#endif /* _BACKWARD_BVECTOR_H */
diff --git a/libstdc++-v3/include/bits/basic_ios.tcc b/libstdc++-v3/include/bits/basic_ios.tcc
index 6f690e0585d..f34fdb62f85 100644
--- a/libstdc++-v3/include/bits/basic_ios.tcc
+++ b/libstdc++-v3/include/bits/basic_ios.tcc
@@ -1,6 +1,6 @@
// basic_ios member functions -*- C++ -*-
-// Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,9 +41,9 @@ namespace std
if (this->rdbuf())
_M_streambuf_state = __state;
else
- _M_streambuf_state = __state | badbit;
+ _M_streambuf_state = __state | badbit;
if (this->exceptions() & this->rdstate())
- __throw_ios_failure("basic_ios::clear");
+ __throw_ios_failure(__N("basic_ios::clear"));
}
template<typename _CharT, typename _Traits>
@@ -171,10 +171,18 @@ namespace std
{
if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
_M_ctype = &use_facet<__ctype_type>(__loc);
+ else
+ _M_ctype = 0;
+
if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
_M_num_put = &use_facet<__num_put_type>(__loc);
+ else
+ _M_num_put = 0;
+
if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
- _M_num_get = &use_facet<__num_get_type>(__loc);
+ _M_num_get = &use_facet<__num_get_type>(__loc);
+ else
+ _M_num_get = 0;
}
// Inhibit implicit instantiations for required instantiations,
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 0b679e0c081..542b912299d 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -1,6 +1,6 @@
// Components for manipulating sequences of characters -*- C++ -*-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -129,9 +129,8 @@ namespace std
private:
// _Rep: string representation
// Invariants:
- // 1. String really contains _M_length + 1 characters; last is set
- // to 0 only on call to c_str(). We avoid instantiating
- // _CharT() where the interface does not require it.
+ // 1. String really contains _M_length + 1 characters: due to 21.3.4
+ // must be kept null-terminated.
// 2. _M_capacity >= _M_length
// Allocated memory is always _M_capacity + (1 * sizeof(_CharT)).
// 3. _M_refcount has three states:
@@ -198,10 +197,6 @@ namespace std
_M_refdata() throw()
{ return reinterpret_cast<_CharT*>(this + 1); }
- _CharT&
- operator[](size_t __s) throw()
- { return _M_refdata() [__s]; }
-
_CharT*
_M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
{
@@ -211,7 +206,7 @@ namespace std
// Create & Destroy
static _Rep*
- _S_create(size_t, const _Alloc&);
+ _S_create(size_type, size_type, const _Alloc&);
void
_M_dispose(const _Alloc& __a)
@@ -1212,11 +1207,7 @@ namespace std
*/
basic_string&
replace(iterator __i1, iterator __i2, const basic_string& __str)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- return this->replace(__i1, __i2, __str._M_data(), __str.size());
- }
+ { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
/**
* @brief Replace range of characters with C substring.
@@ -1233,9 +1224,12 @@ namespace std
* change if an error is thrown.
*/
basic_string&
- replace(iterator __i1, iterator __i2,
- const _CharT* __s, size_type __n)
- { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); }
+ replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+ && __i2 <= _M_iend());
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
+ }
/**
* @brief Replace range of characters with C string.
@@ -1253,8 +1247,6 @@ namespace std
basic_string&
replace(iterator __i1, iterator __i2, const _CharT* __s)
{
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
__glibcxx_requires_string(__s);
return this->replace(__i1, __i2, __s, traits_type::length(__s));
}
@@ -1460,21 +1452,17 @@ namespace std
*/
const _CharT*
c_str() const
- {
- // MT: This assumes concurrent writes are OK.
- const size_type __n = this->size();
- traits_type::assign(_M_data()[__n], _Rep::_S_terminal);
- return _M_data();
- }
+ { return _M_data(); }
/**
* @brief Return const pointer to contents.
*
- * This is a handle to internal data. It may not be null-terminated.
- * Do not modify or dire things may happen.
+ * This is a handle to internal data. Do not modify or dire things may
+ * happen.
*/
const _CharT*
- data() const { return _M_data(); }
+ data() const
+ { return _M_data(); }
/**
* @brief Return copy of allocator used to construct this string.
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index 87eac7adda8..128ca117344 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -1,6 +1,6 @@
// Components for manipulating sequences of characters -*- C++ -*-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -74,8 +74,8 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
- (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
- sizeof(size_type)];
+ ((sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1)
+ / sizeof(size_type))];
// NB: This is the special case for Input Iterators, used in
// istreambuf_iterators, etc.
@@ -92,45 +92,29 @@ namespace std
return _S_empty_rep()._M_refdata();
// Avoid reallocation for common case.
_CharT __buf[100];
- size_type __i = 0;
- while (__beg != __end && __i < sizeof(__buf) / sizeof(_CharT))
+ size_type __len = 0;
+ while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
{
- __buf[__i++] = *__beg;
- ++__beg;
+ __buf[__len++] = *__beg;
+ ++__beg;
}
- _Rep* __r = _Rep::_S_create(__i, __a);
- traits_type::copy(__r->_M_refdata(), __buf, __i);
- __r->_M_length = __i;
+ _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
+ traits_type::copy(__r->_M_refdata(), __buf, __len);
try
{
- // NB: this loop looks precisely this way because
- // it avoids comparing __beg != __end any more
- // than strictly necessary; != might be expensive!
- for (;;)
+ while (__beg != __end)
{
- _CharT* __p = __r->_M_refdata() + __r->_M_length;
- _CharT* __last = __r->_M_refdata() + __r->_M_capacity;
- for (;;)
+ if (__len == __r->_M_capacity)
{
- if (__beg == __end)
- {
- __r->_M_length = __p - __r->_M_refdata();
- *__p = _Rep::_S_terminal; // grrr.
- return __r->_M_refdata();
- }
- if (__p == __last)
- break;
- *__p++ = *__beg;
- ++__beg;
+ // Allocate more space.
+ _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
+ traits_type::copy(__another->_M_refdata(),
+ __r->_M_refdata(), __len);
+ __r->_M_destroy(__a);
+ __r = __another;
}
- // Allocate more space.
- const size_type __len = __p - __r->_M_refdata();
- _Rep* __another = _Rep::_S_create(__len + 1, __a);
- traits_type::copy(__another->_M_refdata(),
- __r->_M_refdata(), __len);
- __r->_M_destroy(__a);
- __r = __another;
- __r->_M_length = __len;
+ __r->_M_refdata()[__len++] = *__beg;
+ ++__beg;
}
}
catch(...)
@@ -138,7 +122,9 @@ namespace std
__r->_M_destroy(__a);
__throw_exception_again;
}
- return 0;
+ __r->_M_length = __len;
+ __r->_M_refdata()[__len] = _Rep::_S_terminal; // grrr.
+ return __r->_M_refdata();
}
template<typename _CharT, typename _Traits, typename _Alloc>
@@ -153,12 +139,13 @@ namespace std
// NB: Not required, but considered best practice.
if (__builtin_expect(__is_null_pointer(__beg), 0))
- __throw_logic_error("basic_string::_S_construct NULL not valid");
+ __throw_logic_error(__N("basic_string::_S_construct NULL not valid"));
- const size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
+ const size_type __dnew = static_cast<size_type>(std::distance(__beg,
+ __end));
// Check for out_of_range and length_error exceptions.
- _Rep* __r = _Rep::_S_create(__dnew, __a);
+ _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
try
{ _S_copy_chars(__r->_M_refdata(), __beg, __end); }
catch(...)
@@ -167,7 +154,6 @@ namespace std
__throw_exception_again;
}
__r->_M_length = __dnew;
-
__r->_M_refdata()[__dnew] = _Rep::_S_terminal; // grrr.
return __r->_M_refdata();
}
@@ -181,17 +167,10 @@ namespace std
return _S_empty_rep()._M_refdata();
// Check for out_of_range and length_error exceptions.
- _Rep* __r = _Rep::_S_create(__n, __a);
- try
- {
- if (__n)
- traits_type::assign(__r->_M_refdata(), __n, __c);
- }
- catch(...)
- {
- __r->_M_destroy(__a);
- __throw_exception_again;
- }
+ _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
+ if (__n)
+ traits_type::assign(__r->_M_refdata(), __n, __c);
+
__r->_M_length = __n;
__r->_M_refdata()[__n] = _Rep::_S_terminal; // grrr
return __r->_M_refdata();
@@ -277,7 +256,7 @@ namespace std
{
const size_type __strsize = __str.size();
if (__pos > __strsize)
- __throw_out_of_range("basic_string::assign");
+ __throw_out_of_range(__N("basic_string::assign"));
const bool __testn = __n < __strsize - __pos;
const size_type __newsize = __testn ? __n : __strsize - __pos;
return this->assign(__str._M_data() + __pos, __newsize);
@@ -290,7 +269,7 @@ namespace std
{
__glibcxx_requires_string_len(__s, __n);
if (__n > this->max_size())
- __throw_length_error("basic_string::assign");
+ __throw_length_error(__N("basic_string::assign"));
if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data())
|| less<const _CharT*>()(_M_data() + this->size(), __s))
return _M_replace_safe(_M_ibegin(), _M_iend(), __s, __s + __n);
@@ -316,7 +295,7 @@ namespace std
{
const size_type __strsize = __str.size();
if (__pos2 > __strsize)
- __throw_out_of_range("basic_string::insert");
+ __throw_out_of_range(__N("basic_string::insert"));
const bool __testn = __n < __strsize - __pos2;
const size_type __newsize = __testn ? __n : __strsize - __pos2;
return this->insert(__pos1, __str._M_data() + __pos2, __newsize);
@@ -330,9 +309,9 @@ namespace std
__glibcxx_requires_string_len(__s, __n);
const size_type __size = this->size();
if (__pos > __size)
- __throw_out_of_range("basic_string::insert");
+ __throw_out_of_range(__N("basic_string::insert"));
if (__size > this->max_size() - __n)
- __throw_length_error("basic_string::insert");
+ __throw_length_error(__N("basic_string::insert"));
if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data())
|| less<const _CharT*>()(_M_data() + __size, __s))
return _M_replace_safe(_M_ibegin() + __pos, _M_ibegin() + __pos,
@@ -368,11 +347,11 @@ namespace std
__glibcxx_requires_string_len(__s, __n2);
const size_type __size = this->size();
if (__pos > __size)
- __throw_out_of_range("basic_string::replace");
+ __throw_out_of_range(__N("basic_string::replace"));
const bool __testn1 = __n1 < __size - __pos;
const size_type __foldn1 = __testn1 ? __n1 : __size - __pos;
if (__size - __foldn1 > this->max_size() - __n2)
- __throw_length_error("basic_string::replace");
+ __throw_length_error(__N("basic_string::replace"));
if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data())
|| less<const _CharT*>()(_M_data() + __size, __s))
return _M_replace_safe(_M_ibegin() + __pos,
@@ -428,34 +407,14 @@ namespace std
{
// Must reallocate.
allocator_type __a = get_allocator();
- // See below (_S_create) for the meaning and value of these
- // constants.
- const size_type __pagesize = 4096;
- const size_type __malloc_header_size = 4 * sizeof (void*);
- // The biggest string which fits in a memory page
- const size_type __page_capacity = (__pagesize - __malloc_header_size
- - sizeof(_Rep) - sizeof(_CharT))
- / sizeof(_CharT);
- _Rep* __r;
- if (__new_size > capacity() && __new_size > __page_capacity)
- // Growing exponentially.
- __r = _Rep::_S_create(__new_size > 2*capacity() ?
- __new_size : 2*capacity(), __a);
- else
- __r = _Rep::_S_create(__new_size, __a);
- try
- {
- if (__pos)
- traits_type::copy(__r->_M_refdata(), _M_data(), __pos);
- if (__how_much)
- traits_type::copy(__r->_M_refdata() + __pos + __len2,
- __src, __how_much);
- }
- catch(...)
- {
- __r->_M_dispose(get_allocator());
- __throw_exception_again;
- }
+ _Rep* __r = _Rep::_S_create(__new_size, capacity(), __a);
+
+ if (__pos)
+ traits_type::copy(__r->_M_refdata(), _M_data(), __pos);
+ if (__how_much)
+ traits_type::copy(__r->_M_refdata() + __pos + __len2,
+ __src, __how_much);
+
_M_rep()->_M_dispose(__a);
_M_data(__r->_M_refdata());
}
@@ -477,7 +436,7 @@ namespace std
if (__res != this->capacity() || _M_rep()->_M_is_shared())
{
if (__res > this->max_size())
- __throw_length_error("basic_string::reserve");
+ __throw_length_error(__N("basic_string::reserve"));
// Make sure we don't shrink below the current size
if (__res < this->size())
__res = this->size();
@@ -515,23 +474,20 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
basic_string<_CharT, _Traits, _Alloc>::_Rep::
- _S_create(size_t __capacity, const _Alloc& __alloc)
+ _S_create(size_type __capacity, size_type __old_capacity,
+ const _Alloc& __alloc)
{
typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 83. String::npos vs. string::max_size()
if (__capacity > _S_max_size)
- __throw_length_error("basic_string::_S_create");
-
- // NB: Need an array of char_type[__capacity], plus a
- // terminating null char_type() element, plus enough for the
- // _Rep data structure. Whew. Seemingly so needy, yet so elemental.
- size_t __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep_base);
+ __throw_length_error(__N("basic_string::_S_create"));
// The standard places no restriction on allocating more memory
// than is strictly needed within this layer at the moment or as
- // requested by an explicit application call to reserve(). Many
- // malloc implementations perform quite poorly when an
+ // requested by an explicit application call to reserve().
+
+ // Many malloc implementations perform quite poorly when an
// application attempts to allocate memory in a stepwise fashion
// growing each allocation size by only 1 char. Additionally,
// it makes little sense to allocate less linear memory than the
@@ -550,25 +506,47 @@ namespace std
// low-balling it (especially when this algorithm is used with
// malloc implementations that allocate memory blocks rounded up
// to a size which is a power of 2).
- const size_t __pagesize = 4096; // must be 2^i * __subpagesize
- const size_t __subpagesize = 128; // should be >> __malloc_header_size
- const size_t __malloc_header_size = 4 * sizeof (void*);
- if ((__size + __malloc_header_size) > __pagesize)
+ const size_type __pagesize = 4096; // must be 2^i * __subpagesize
+ const size_type __subpagesize = 128; // should be >> __malloc_header_size
+ const size_type __malloc_header_size = 4 * sizeof (void*);
+
+ // The below implements an exponential growth policy, necessary to
+ // meet amortized linear time requirements of the library: see
+ // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
+ // It's active for allocations requiring an amount of memory above
+ // system pagesize. This is consistent with the requirements of the
+ // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html
+
+ // The biggest string which fits in a memory page
+ const size_type __page_capacity = ((__pagesize - __malloc_header_size
+ - sizeof(_Rep) - sizeof(_CharT))
+ / sizeof(_CharT));
+
+ if (__capacity > __old_capacity && __capacity < 2 * __old_capacity
+ && __capacity > __page_capacity)
+ __capacity = 2 * __old_capacity;
+
+ // NB: Need an array of char_type[__capacity], plus a terminating
+ // null char_type() element, plus enough for the _Rep data structure.
+ // Whew. Seemingly so needy, yet so elemental.
+ size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+
+ const size_type __adj_size = __size + __malloc_header_size;
+ if (__adj_size > __pagesize)
{
- const size_t __extra =
- (__pagesize - ((__size + __malloc_header_size) % __pagesize))
- % __pagesize;
+ const size_type __extra = __pagesize - __adj_size % __pagesize;
__capacity += __extra / sizeof(_CharT);
- __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep_base);
+ // Never allocate a string bigger than _S_max_size.
+ if (__capacity > _S_max_size)
+ __capacity = _S_max_size;
+ __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
}
else if (__size > __subpagesize)
{
- const size_t __extra =
- (__subpagesize - ((__size + __malloc_header_size) % __subpagesize))
- % __subpagesize;
+ const size_type __extra = __subpagesize - __adj_size % __subpagesize;
__capacity += __extra / sizeof(_CharT);
- __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep_base);
- }
+ __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+ }
// NB: Might throw, but no worries about a leak, mate: _Rep()
// does not throw.
@@ -587,36 +565,14 @@ namespace std
{
// Requested capacity of the clone.
const size_type __requested_cap = this->_M_length + __res;
- // See above (_S_create) for the meaning and value of these constants.
- const size_type __pagesize = 4096;
- const size_type __malloc_header_size = 4 * sizeof (void*);
- // The biggest string which fits in a memory page.
- const size_type __page_capacity =
- (__pagesize - __malloc_header_size - sizeof(_Rep_base) - sizeof(_CharT))
- / sizeof(_CharT);
- _Rep* __r;
- if (__requested_cap > this->_M_capacity
- && __requested_cap > __page_capacity)
- // Growing exponentially.
- __r = _Rep::_S_create(__requested_cap > 2*this->_M_capacity ?
- __requested_cap : 2*this->_M_capacity, __alloc);
- else
- __r = _Rep::_S_create(__requested_cap, __alloc);
-
+ _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
+ __alloc);
if (this->_M_length)
- {
- try
- {
- traits_type::copy(__r->_M_refdata(), _M_refdata(),
- this->_M_length);
- }
- catch(...)
- {
- __r->_M_destroy(__alloc);
- __throw_exception_again;
- }
- }
+ traits_type::copy(__r->_M_refdata(), _M_refdata(),
+ this->_M_length);
+
__r->_M_length = this->_M_length;
+ __r->_M_refdata()[this->_M_length] = _Rep::_S_terminal;
return __r->_M_refdata();
}
@@ -625,7 +581,7 @@ namespace std
basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c)
{
if (__n > max_size())
- __throw_length_error("basic_string::resize");
+ __throw_length_error(__N("basic_string::resize"));
const size_type __size = this->size();
if (__size < __n)
this->append(__n - __size, __c);
@@ -642,7 +598,7 @@ namespace std
const size_type __n1 = __i2 - __i1;
const size_type __off1 = __i1 - _M_ibegin();
if (max_size() - (this->size() - __n1) <= __n2)
- __throw_length_error("basic_string::replace");
+ __throw_length_error(__N("basic_string::replace"));
_M_mutate (__off1, __n1, __n2);
// Invalidated __i1, __i2
if (__n2)
@@ -680,7 +636,7 @@ namespace std
const size_type __dmax = this->max_size();
if (__dmax <= __dnew)
- __throw_length_error("basic_string::_M_replace");
+ __throw_length_error(__N("basic_string::_M_replace"));
const size_type __off = __i1 - _M_ibegin();
_M_mutate(__off, __dold, __dnew);
@@ -699,7 +655,7 @@ namespace std
{
const size_type __strsize = __str.size();
if (__pos2 > __strsize)
- __throw_out_of_range("basic_string::replace");
+ __throw_out_of_range(__N("basic_string::replace"));
const bool __testn2 = __n2 < __strsize - __pos2;
const size_type __foldn2 = __testn2 ? __n2 : __strsize - __pos2;
return this->replace(__pos1, __n1,
@@ -797,7 +753,7 @@ namespace std
copy(_CharT* __s, size_type __n, size_type __pos) const
{
if (__pos > this->size())
- __throw_out_of_range("basic_string::copy");
+ __throw_out_of_range(__N("basic_string::copy"));
if (__n > this->size() - __pos)
__n = this->size() - __pos;
@@ -999,7 +955,7 @@ namespace std
const size_type __size = this->size();
const size_type __osize = __str.size();
if (__pos > __size)
- __throw_out_of_range("basic_string::compare");
+ __throw_out_of_range(__N("basic_string::compare"));
const size_type __rsize= std::min(size_type(__size - __pos), __n);
const size_type __len = std::min(__rsize, __osize);
@@ -1018,7 +974,7 @@ namespace std
const size_type __size = this->size();
const size_type __osize = __str.size();
if (__pos1 > __size || __pos2 > __osize)
- __throw_out_of_range("basic_string::compare");
+ __throw_out_of_range(__N("basic_string::compare"));
const size_type __rsize = std::min(size_type(__size - __pos1), __n1);
const size_type __rosize = std::min(size_type(__osize - __pos2), __n2);
@@ -1057,7 +1013,7 @@ namespace std
const size_type __size = this->size();
if (__pos > __size)
- __throw_out_of_range("basic_string::compare");
+ __throw_out_of_range(__N("basic_string::compare"));
const size_type __osize = traits_type::length(__s);
const size_type __rsize = std::min(size_type(__size - __pos), __n1);
@@ -1078,7 +1034,7 @@ namespace std
const size_type __size = this->size();
if (__pos > __size)
- __throw_out_of_range("basic_string::compare");
+ __throw_out_of_range(__N("basic_string::compare"));
const size_type __rsize = std::min(size_type(__size - __pos), __n1);
const size_type __len = std::min(__rsize, __n2);
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 03529ed3019..8123d61cc37 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -35,7 +35,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCXX__ 20040116
+#define __GLIBCXX__ 20040303
// Allow use of "export template." This is currently not a feature
// that g++ supports.
diff --git a/libstdc++-v3/include/bits/codecvt.h b/libstdc++-v3/include/bits/codecvt.h
index 80f9cba0b35..33d2b95e35e 100644
--- a/libstdc++-v3/include/bits/codecvt.h
+++ b/libstdc++-v3/include/bits/codecvt.h
@@ -1,6 +1,6 @@
// Locale support (codecvt) -*- C++ -*-
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -44,6 +44,7 @@
#pragma GCC system_header
// 22.2.1.5 Template class codecvt
+ /// Base class for codecvt facet providing conversion result enum.
class codecvt_base
{
public:
@@ -60,6 +61,15 @@
// NB: An abstract base class that fills in the public inlines, so
// that the specializations don't have to re-copy the public
// interface.
+ /**
+ * @brief Common base for codecvt facet
+ *
+ * This template class provides implementations of the public functions
+ * that forward to the protected virtual functions.
+ *
+ * This template also provides abstract stubs for the protected virtual
+ * functions.
+ */
template<typename _InternT, typename _ExternT, typename _StateT>
class __codecvt_abstract_base
: public locale::facet, public codecvt_base
@@ -72,6 +82,41 @@
typedef _StateT state_type;
// 22.2.1.5.1 codecvt members
+ /**
+ * @brief Convert from internal to external character set.
+ *
+ * Converts input string of intern_type to output string of
+ * extern_type. This is analogous to wcsrtombs. It does this by
+ * calling codecvt::do_out.
+ *
+ * The source and destination character sets are determined by the
+ * facet's locale, internal and external types.
+ *
+ * The characters in [from,from_end) are converted and written to
+ * [to,to_end). from_next and to_next are set to point to the
+ * character following the last successfully converted character,
+ * respectively. If the result needed no conversion, from_next and
+ * to_next are not affected.
+ *
+ * The @a state argument should be intialized if the input is at the
+ * beginning and carried from a previous call if continuing
+ * conversion. There are no guarantees about how @a state is used.
+ *
+ * The result returned is a member of codecvt_base::result. If all the
+ * input is converted, returns codecvt_base::ok. If no conversion is
+ * necessary, returns codecvt_base::noconv. If the input ends early or
+ * there is insufficient space in the output, returns codecvt_base::partial.
+ * Otherwise the conversion failed and codecvt_base::error is returned.
+ *
+ * @param state Persistent conversion state data.
+ * @param from Start of input.
+ * @param from_end End of input.
+ * @param from_next Returns start of unconverted data.
+ * @param to Start of output buffer.
+ * @param to_end End of output buffer.
+ * @param to_next Returns start of unused output area.
+ * @return codecvt_base::result.
+ */
result
out(state_type& __state, const intern_type* __from,
const intern_type* __from_end, const intern_type*& __from_next,
@@ -82,11 +127,75 @@
__to, __to_end, __to_next);
}
+ /**
+ * @brief Reset conversion state.
+ *
+ * Writes characters to output that would restore @a state to initial
+ * conditions. The idea is that if a partial conversion occurs, then
+ * the converting the characters written by this function would leave
+ * the state in initial conditions, rather than partial conversion
+ * state. It does this by calling codecvt::do_unshift().
+ *
+ * For example, if 4 external characters always converted to 1 internal
+ * character, and input to in() had 6 external characters with state
+ * saved, this function would write two characters to the output and
+ * set the state to initialized conditions.
+ *
+ * The source and destination character sets are determined by the
+ * facet's locale, internal and external types.
+ *
+ * The result returned is a member of codecvt_base::result. If the
+ * state could be reset and data written, returns codecvt_base::ok. If
+ * no conversion is necessary, returns codecvt_base::noconv. If the
+ * output has insufficient space, returns codecvt_base::partial.
+ * Otherwise the reset failed and codecvt_base::error is returned.
+ *
+ * @param state Persistent conversion state data.
+ * @param to Start of output buffer.
+ * @param to_end End of output buffer.
+ * @param to_next Returns start of unused output area.
+ * @return codecvt_base::result.
+ */
result
unshift(state_type& __state, extern_type* __to, extern_type* __to_end,
extern_type*& __to_next) const
{ return this->do_unshift(__state, __to,__to_end,__to_next); }
+ /**
+ * @brief Convert from external to internal character set.
+ *
+ * Converts input string of extern_type to output string of
+ * intern_type. This is analogous to mbsrtowcs. It does this by
+ * calling codecvt::do_in.
+ *
+ * The source and destination character sets are determined by the
+ * facet's locale, internal and external types.
+ *
+ * The characters in [from,from_end) are converted and written to
+ * [to,to_end). from_next and to_next are set to point to the
+ * character following the last successfully converted character,
+ * respectively. If the result needed no conversion, from_next and
+ * to_next are not affected.
+ *
+ * The @a state argument should be intialized if the input is at the
+ * beginning and carried from a previous call if continuing
+ * conversion. There are no guarantees about how @a state is used.
+ *
+ * The result returned is a member of codecvt_base::result. If all the
+ * input is converted, returns codecvt_base::ok. If no conversion is
+ * necessary, returns codecvt_base::noconv. If the input ends early or
+ * there is insufficient space in the output, returns codecvt_base::partial.
+ * Otherwise the conversion failed and codecvt_base::error is returned.
+ *
+ * @param state Persistent conversion state data.
+ * @param from Start of input.
+ * @param from_end End of input.
+ * @param from_next Returns start of unconverted data.
+ * @param to Start of output buffer.
+ * @param to_end End of output buffer.
+ * @param to_next Returns start of unused output area.
+ * @return codecvt_base::result.
+ */
result
in(state_type& __state, const extern_type* __from,
const extern_type* __from_end, const extern_type*& __from_next,
@@ -121,6 +230,13 @@
virtual
~__codecvt_abstract_base() { }
+ /**
+ * @brief Convert from internal to external character set.
+ *
+ * Converts input string of intern_type to output string of
+ * extern_type. This function is a hook for derived classes to change
+ * the value returned. @see out for more information.
+ */
virtual result
do_out(state_type& __state, const intern_type* __from,
const intern_type* __from_end, const intern_type*& __from_next,
diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc
index ed2fb6aace9..3a382f7d5ca 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -179,7 +179,6 @@ namespace std
{
int_type __ret = traits_type::eof();
const bool __testin = this->_M_mode & ios_base::in;
- const bool __testout = this->_M_mode & ios_base::out;
if (__testin && !_M_writing)
{
// Check for pback madness, and if so swich back to the
@@ -256,9 +255,9 @@ namespace std
// codecvt::max_length() is bogus.
if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size)
{
- __throw_ios_failure("basic_filebuf::underflow "
+ __throw_ios_failure(__N("basic_filebuf::underflow "
"codecvt::max_length() "
- "is not valid");
+ "is not valid"));
}
streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen);
if (__elen == 0)
@@ -310,15 +309,15 @@ namespace std
// However, reaching it while looping on partial means that
// the file has got an incomplete character.
if (__r == codecvt_base::partial)
- __throw_ios_failure("basic_filebuf::underflow "
- "incomplete character in file");
+ __throw_ios_failure(__N("basic_filebuf::underflow "
+ "incomplete character in file"));
}
else if (__r == codecvt_base::error)
- __throw_ios_failure("basic_filebuf::underflow "
- "invalid byte sequence in file");
+ __throw_ios_failure(__N("basic_filebuf::underflow "
+ "invalid byte sequence in file"));
else
- __throw_ios_failure("basic_filebuf::underflow "
- "error reading the file");
+ __throw_ios_failure(__N("basic_filebuf::underflow "
+ "error reading the file"));
}
return __ret;
}
@@ -398,7 +397,7 @@ namespace std
// and output.
if (_M_convert_to_external(this->pbase(),
this->pptr() - this->pbase())
- && (!__testeof || (__testeof && !_M_file.sync())))
+ && (!__testeof || !_M_file.sync()))
{
_M_set_buffer(0);
__ret = traits_type::not_eof(__c);
@@ -438,12 +437,12 @@ namespace std
_M_convert_to_external(_CharT* __ibuf, streamsize __ilen)
{
// Sizes of external and pending output.
- streamsize __elen = 0;
- streamsize __plen = 0;
+ streamsize __elen;
+ streamsize __plen;
if (__check_facet(_M_codecvt).always_noconv())
{
- __elen += _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);
- __plen += __ilen;
+ __elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);
+ __plen = __ilen;
}
else
{
@@ -467,19 +466,14 @@ namespace std
__blen = __ilen;
}
else
- {
- // Result == error.
- __blen = 0;
- }
+ __throw_ios_failure(__N("basic_filebuf::_M_convert_to_external "
+ "conversion error"));
- if (__blen)
- {
- __elen += _M_file.xsputn(__buf, __blen);
- __plen += __blen;
- }
+ __elen = _M_file.xsputn(__buf, __blen);
+ __plen = __blen;
// Try once more for partial conversions.
- if (__r == codecvt_base::partial)
+ if (__r == codecvt_base::partial && __elen == __plen)
{
const char_type* __iresume = __iend;
streamsize __rlen = this->pptr() - __iend;
@@ -489,12 +483,15 @@ namespace std
if (__r != codecvt_base::error)
{
__rlen = __bend - __buf;
- __elen += _M_file.xsputn(__buf, __rlen);
- __plen += __rlen;
+ __elen = _M_file.xsputn(__buf, __rlen);
+ __plen = __rlen;
}
+ else
+ __throw_ios_failure(__N("basic_filebuf::_M_convert_to_external "
+ "conversion error"));
}
}
- return __elen && __elen == __plen;
+ return __elen == __plen;
}
template<typename _CharT, typename _Traits>
diff --git a/libstdc++-v3/include/bits/gslice.h b/libstdc++-v3/include/bits/gslice.h
index c546028703a..19e8674aa01 100644
--- a/libstdc++-v3/include/bits/gslice.h
+++ b/libstdc++-v3/include/bits/gslice.h
@@ -1,6 +1,7 @@
// The template and inlines for the -*- C++ -*- gslice class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,41 +42,81 @@
namespace std {
- class gslice
- {
- public:
- gslice ();
- gslice (size_t, const valarray<size_t>&, const valarray<size_t>&);
- // XXX: the IS says the copy-ctor and copy-assignment operators are
- // synthetized by the compiler but they are just unsuitable
- // for a ref-counted semantic
- gslice(const gslice&);
- ~gslice();
-
- // XXX: See the note above.
- gslice& operator= (const gslice&);
-
- size_t start () const;
- valarray<size_t> size () const;
- valarray<size_t> stride () const;
+ /**
+ * @brief Class defining multi-dimensional subset of an array.
+ *
+ * The slice class represents a multi-dimensional subset of an array,
+ * specified by three parameter sets: start offset, size array, and stride
+ * array. The start offset is the index of the first element of the array
+ * that is part of the subset. The size and stride array describe each
+ * dimension of the slice. Size is the number of elements in that
+ * dimension, and stride is the distance in the array between successive
+ * elements in that dimension. Each dimension's size and stride is taken
+ * to begin at an array element described by the previous dimension. The
+ * size array and stride array must be the same size.
+ *
+ * For example, if you have offset==3, stride[0]==11, size[1]==3,
+ * stride[1]==3, then slice[0,0]==array[3], slice[0,1]==array[6],
+ * slice[0,2]==array[9], slice[1,0]==array[14], slice[1,1]==array[17],
+ * slice[1,2]==array[20].
+ */
+ class gslice
+ {
+ public:
+ /// Construct an empty slice.
+ gslice ();
+
+ /**
+ * @brief Construct a slice.
+ *
+ * Constructs a slice with as many dimensions as the length of the @a l
+ * and @a s arrays.
+ *
+ * @param o Offset in array of first element.
+ * @param l Array of dimension lengths.
+ * @param s Array of dimension strides between array elements.
+ */
+ gslice (size_t, const valarray<size_t>&, const valarray<size_t>&);
+
+ // XXX: the IS says the copy-ctor and copy-assignment operators are
+ // synthetized by the compiler but they are just unsuitable
+ // for a ref-counted semantic
+ /// Copy constructor.
+ gslice(const gslice&);
+
+ /// Destructor.
+ ~gslice();
+
+ // XXX: See the note above.
+ /// Assignment operator.
+ gslice& operator= (const gslice&);
- private:
- struct _Indexer {
- size_t _M_count;
- size_t _M_start;
- valarray<size_t> _M_size;
- valarray<size_t> _M_stride;
- valarray<size_t> _M_index;
- _Indexer(size_t, const valarray<size_t>&,
- const valarray<size_t>&);
- void _M_increment_use() { ++_M_count; }
- size_t _M_decrement_use() { return --_M_count; }
- };
-
- _Indexer* _M_index;
+ /// Return array offset of first slice element.
+ size_t start () const;
+
+ /// Return array of sizes of slice dimensions.
+ valarray<size_t> size () const;
+
+ /// Return array of array strides for each dimension.
+ valarray<size_t> stride () const;
- template<typename _Tp> friend class valarray;
+ private:
+ struct _Indexer {
+ size_t _M_count;
+ size_t _M_start;
+ valarray<size_t> _M_size;
+ valarray<size_t> _M_stride;
+ valarray<size_t> _M_index;
+ _Indexer(size_t, const valarray<size_t>&,
+ const valarray<size_t>&);
+ void _M_increment_use() { ++_M_count; }
+ size_t _M_decrement_use() { return --_M_count; }
};
+
+ _Indexer* _M_index;
+
+ template<typename _Tp> friend class valarray;
+ };
inline size_t
gslice::start () const
diff --git a/libstdc++-v3/include/bits/gslice_array.h b/libstdc++-v3/include/bits/gslice_array.h
index 508eb7c9ab7..60e5b37cf4b 100644
--- a/libstdc++-v3/include/bits/gslice_array.h
+++ b/libstdc++-v3/include/bits/gslice_array.h
@@ -1,6 +1,7 @@
// The template and inlines for the -*- C++ -*- gslice_array class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,23 +42,48 @@
namespace std {
+ /**
+ * @brief Reference to multi-dimensional subset of an array.
+ *
+ * A gslice_array is a reference to the actual elements of an array
+ * specified by a gslice. The way to get a gslice_array is to call
+ * operator[](gslice) on a valarray. The returned gslice_array then
+ * permits carrying operations out on the referenced subset of elements in
+ * the original valarray. For example, operator+=(valarray) will add
+ * values to the subset of elements in the underlying valarray this
+ * gslice_array refers to.
+ *
+ * @param Tp Element type.
+ */
template<typename _Tp>
class gslice_array
{
public:
typedef _Tp value_type;
+ /// Assign slice elements to corresponding elements of @a v.
void operator=(const valarray<_Tp>&) const;
+ /// Multiply slice elements by corresponding elements of @a v.
void operator*=(const valarray<_Tp>&) const;
+ /// Divide slice elements by corresponding elements of @a v.
void operator/=(const valarray<_Tp>&) const;
+ /// Modulo slice elements by corresponding elements of @a v.
void operator%=(const valarray<_Tp>&) const;
+ /// Add corresponding elements of @a v to slice elements.
void operator+=(const valarray<_Tp>&) const;
+ /// Subtract corresponding elements of @a v from slice elements.
void operator-=(const valarray<_Tp>&) const;
+ /// Logical xor slice elements with corresponding elements of @a v.
void operator^=(const valarray<_Tp>&) const;
+ /// Logical and slice elements with corresponding elements of @a v.
void operator&=(const valarray<_Tp>&) const;
+ /// Logical or slice elements with corresponding elements of @a v.
void operator|=(const valarray<_Tp>&) const;
+ /// Left shift slice elements by corresponding elements of @a v.
void operator<<=(const valarray<_Tp>&) const;
+ /// Right shift slice elements by corresponding elements of @a v.
void operator>>=(const valarray<_Tp>&) const;
+ /// Assign all slice elements to @a t.
void operator=(const _Tp&) const;
template<class _Dom>
@@ -92,10 +118,14 @@ namespace std {
gslice_array(_Array<_Tp>, const valarray<size_t>&);
// this constructor needs to be implemented.
+ /// Copy constructor. Both slices refer to the same underlying array.
gslice_array(const gslice_array&);
// not implemented
gslice_array();
+
+ /// Assignment operator. Assigns slice elements to corresponding
+ /// elements of @a a.
gslice_array& operator= (const gslice_array&);
};
diff --git a/libstdc++-v3/include/bits/indirect_array.h b/libstdc++-v3/include/bits/indirect_array.h
index cb81aabf77f..7e9632e4354 100644
--- a/libstdc++-v3/include/bits/indirect_array.h
+++ b/libstdc++-v3/include/bits/indirect_array.h
@@ -1,6 +1,6 @@
// The template and inlines for the -*- C++ -*- indirect_array class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -42,66 +42,96 @@
namespace std
{
+ /**
+ * @brief Reference to arbitrary subset of an array.
+ *
+ * An indirect_array is a reference to the actual elements of an array
+ * specified by an ordered array of indices. The way to get an indirect_array is to
+ * call operator[](valarray<size_t>) on a valarray. The returned
+ * indirect_array then permits carrying operations out on the referenced
+ * subset of elements in the original valarray.
+ *
+ * For example, if an indirect_array is obtained using the array (4,2,0) as
+ * an argument, and then assigned to an array containing (1,2,3), then the
+ * underlying array will have array[0]==3, array[2]==2, and array[4]==1.
+ *
+ * @param Tp Element type.
+ */
template <class _Tp>
- class indirect_array
- {
- public:
- typedef _Tp value_type;
-
- // XXX: This is a proposed resolution for DR-253.
- indirect_array& operator=(const indirect_array&);
+ class indirect_array
+ {
+ public:
+ typedef _Tp value_type;
+
+ // XXX: This is a proposed resolution for DR-253.
+ /// Assignment operator. Assigns elements to corresponding elements
+ /// of @a a.
+ indirect_array& operator=(const indirect_array&);
- void operator=(const valarray<_Tp>&) const;
- void operator*=(const valarray<_Tp>&) const;
- void operator/=(const valarray<_Tp>&) const;
- void operator%=(const valarray<_Tp>&) const;
- void operator+=(const valarray<_Tp>&) const;
- void operator-=(const valarray<_Tp>&) const;
- void operator^=(const valarray<_Tp>&) const;
- void operator&=(const valarray<_Tp>&) const;
- void operator|=(const valarray<_Tp>&) const;
- void operator<<=(const valarray<_Tp>&) const;
- void operator>>=(const valarray<_Tp>&) const;
- void operator= (const _Tp&) const;
- // ~indirect_array();
+ /// Assign slice elements to corresponding elements of @a v.
+ void operator=(const valarray<_Tp>&) const;
+ /// Multiply slice elements by corresponding elements of @a v.
+ void operator*=(const valarray<_Tp>&) const;
+ /// Divide slice elements by corresponding elements of @a v.
+ void operator/=(const valarray<_Tp>&) const;
+ /// Modulo slice elements by corresponding elements of @a v.
+ void operator%=(const valarray<_Tp>&) const;
+ /// Add corresponding elements of @a v to slice elements.
+ void operator+=(const valarray<_Tp>&) const;
+ /// Subtract corresponding elements of @a v from slice elements.
+ void operator-=(const valarray<_Tp>&) const;
+ /// Logical xor slice elements with corresponding elements of @a v.
+ void operator^=(const valarray<_Tp>&) const;
+ /// Logical and slice elements with corresponding elements of @a v.
+ void operator&=(const valarray<_Tp>&) const;
+ /// Logical or slice elements with corresponding elements of @a v.
+ void operator|=(const valarray<_Tp>&) const;
+ /// Left shift slice elements by corresponding elements of @a v.
+ void operator<<=(const valarray<_Tp>&) const;
+ /// Right shift slice elements by corresponding elements of @a v.
+ void operator>>=(const valarray<_Tp>&) const;
+ /// Assign all slice elements to @a t.
+ void operator= (const _Tp&) const;
+ // ~indirect_array();
- template<class _Dom>
- void operator=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator*=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator/=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator%=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator+=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator-=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator^=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator&=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator|=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator<<=(const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator>>=(const _Expr<_Dom, _Tp>&) const;
-
- private:
- indirect_array(const indirect_array&);
- indirect_array(_Array<_Tp>, size_t, _Array<size_t>);
-
- friend class valarray<_Tp>;
- friend class gslice_array<_Tp>;
+ template<class _Dom>
+ void operator=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator*=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator/=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator%=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator+=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator-=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator^=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator&=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator|=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator<<=(const _Expr<_Dom, _Tp>&) const;
+ template<class _Dom>
+ void operator>>=(const _Expr<_Dom, _Tp>&) const;
+
+ private:
+ /// Copy constructor. Both slices refer to the same underlying array.
+ indirect_array(const indirect_array&);
+ indirect_array(_Array<_Tp>, size_t, _Array<size_t>);
+
+ friend class valarray<_Tp>;
+ friend class gslice_array<_Tp>;
- const size_t _M_sz;
- const _Array<size_t> _M_index;
- const _Array<_Tp> _M_array;
+ const size_t _M_sz;
+ const _Array<size_t> _M_index;
+ const _Array<_Tp> _M_array;
- // not implemented
- indirect_array();
- };
+ // not implemented
+ indirect_array();
+ };
template<typename _Tp>
inline
diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h
index 587bda4b092..b937ac5c567 100644
--- a/libstdc++-v3/include/bits/ios_base.h
+++ b/libstdc++-v3/include/bits/ios_base.h
@@ -471,7 +471,7 @@ namespace std
_Words* _M_word;
_Words&
- _M_grow_words(int __index);
+ _M_grow_words(int __index, bool __iword);
// Members for locale and locale caching.
locale _M_ios_locale;
@@ -692,7 +692,7 @@ namespace std
iword(int __ix)
{
_Words& __word = (__ix < _M_word_size)
- ? _M_word[__ix] : _M_grow_words(__ix);
+ ? _M_word[__ix] : _M_grow_words(__ix, true);
return __word._M_iword;
}
@@ -713,7 +713,7 @@ namespace std
pword(int __ix)
{
_Words& __word = (__ix < _M_word_size)
- ? _M_word[__ix] : _M_grow_words(__ix);
+ ? _M_word[__ix] : _M_grow_words(__ix, false);
return __word._M_pword;
}
diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h
index 52bf1fc9c31..a1178b7b77e 100644
--- a/libstdc++-v3/include/bits/locale_classes.h
+++ b/libstdc++-v3/include/bits/locale_classes.h
@@ -1,6 +1,6 @@
// Locale support -*- C++ -*-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -535,7 +535,7 @@ namespace std
{
bool __ret = true;
for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
- __ret &= (std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0);
+ __ret = std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
return __ret;
}
diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h
index 05003ed28d5..3b1315d3f27 100644
--- a/libstdc++-v3/include/bits/locale_facets.h
+++ b/libstdc++-v3/include/bits/locale_facets.h
@@ -4384,14 +4384,15 @@ namespace std
// Returns a locale and codeset-converted string, given a char* message.
string_type
- _M_convert_from_char(char* __msg) const
+ _M_convert_from_char(char*) const
{
+#if 0
// Length of message string without terminating null.
size_t __len = char_traits<char>::length(__msg) - 1;
// "everybody can easily convert the string using
// mbsrtowcs/wcsrtombs or with iconv()"
-#if 0
+
// Convert char* to _CharT in locale used to open catalog.
// XXX need additional template parameter on messages class for this..
// typedef typename codecvt<char, _CharT, _StateT> __codecvt_type;
@@ -4461,6 +4462,8 @@ namespace std
// NB: These are inline because, when used in a loop, some compilers
// can hoist the body out of the loop; then it's just as fast as the
// C is*() function.
+ //@{
+ /// Convenience interface to ctype.is().
template<typename _CharT>
inline bool
isspace(_CharT __c, const locale& __loc)
@@ -4524,6 +4527,7 @@ namespace std
inline _CharT
tolower(_CharT __c, const locale& __loc)
{ return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
+ //@}
} // namespace std
#endif
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 4dc3bb4f6b2..f26c6d6c983 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -391,7 +391,7 @@ namespace std
// At this point, base is determined. If not hex, only allow
// base digits as valid input.
- const size_t __len = __base == 16 ? _S_iend : __base;
+ const size_t __len = __base == 16 ? _S_iend - _S_izero : __base;
// Extract.
string __found_grouping;
@@ -1207,7 +1207,7 @@ namespace std
|| ((static_cast<part>(__p.field[3]) != money_base::none)
&& __i == 2))
{
- // According to 22.2.6.1.2.2, symbol is required
+ // According to 22.2.6.1.2, p2, symbol is required
// if (__io.flags() & ios_base::showbase),
// otherwise is optional and consumed only if
// other characters are needed to complete the
@@ -1253,11 +1253,15 @@ namespace std
}
else if (__c == __d && !__testdecfound)
{
- __grouping_tmp += static_cast<char>(__sep_pos);
+ // If no grouping chars are seen, no grouping check
+ // is applied. Therefore __grouping_tmp is adjusted
+ // only if decimal_point comes after some thousands_sep.
+ if (__grouping_tmp.size())
+ __grouping_tmp += static_cast<char>(__sep_pos);
__sep_pos = 0;
__testdecfound = true;
}
- else if (__c == __sep)
+ else if (__c == __sep && !__testdecfound)
{
if (__grouping.size())
{
@@ -1289,10 +1293,9 @@ namespace std
{
const size_type __len = __sign.size();
size_type __i = 1;
- for (; __beg != __end && __i < __len; ++__i)
- for (; __beg != __end
- && *__beg != __sign[__i]; ++__beg);
-
+ for (; __beg != __end && __i < __len
+ && *__beg == __sign[__i]; ++__beg, ++__i);
+
if (__i != __len)
__testvalid = false;
}
@@ -1319,6 +1322,10 @@ namespace std
// Test for grouping fidelity.
if (__grouping.size() && __grouping_tmp.size())
{
+ // Add the ending grouping if a decimal wasn't found.
+ if (!__testdecfound)
+ __grouping_tmp += static_cast<char>(__sep_pos);
+
if (!std::__verify_grouping(__grouping.data(),
__grouping.size(),
__grouping_tmp))
@@ -1385,7 +1392,7 @@ namespace std
_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
* __cs_size));
__ctype.widen(__cs, __cs + __len, __ws);
- string_type __digits(__ws);
+ const string_type __digits(__ws, __len);
return this->do_put(__s, __intl, __io, __fill, __digits);
}
@@ -2253,14 +2260,14 @@ namespace std
// Who came up with these rules, anyway? Jeeze.
const locale& __loc = __io._M_getloc();
const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
- const _CharT __minus = __ctype.widen('-');
- const _CharT __plus = __ctype.widen('+');
- const bool __testsign = _Traits::eq(__olds[0], __minus)
- || _Traits::eq(__olds[0], __plus);
-
- const bool __testhex = _Traits::eq(__ctype.widen('0'), __olds[0])
- && (_Traits::eq(__ctype.widen('x'), __olds[1])
- || _Traits::eq(__ctype.widen('X'), __olds[1]));
+
+ const bool __testsign = _Traits::eq(__ctype.widen('-'), __olds[0])
+ || _Traits::eq(__ctype.widen('+'), __olds[0]);
+ const bool __testhex = (_Traits::eq(__ctype.widen('0'), __olds[0])
+ && __oldlen > 1
+ && (_Traits::eq(__ctype.widen('x'), __olds[1])
+ || _Traits::eq(__ctype.widen('X'),
+ __olds[1])));
if (__testhex)
{
__news[0] = __olds[0];
@@ -2284,24 +2291,24 @@ namespace std
bool
__verify_grouping(const char* __grouping, size_t __grouping_size,
const string& __grouping_tmp)
- {
- const size_t __n = __grouping_tmp.size() - 1;
- const size_t __min = std::min(__n, __grouping_size - 1);
- size_t __i = __n;
- bool __test = true;
-
- // Parsed number groupings have to match the
- // numpunct::grouping string exactly, starting at the
- // right-most point of the parsed sequence of elements ...
- for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
- __test = __grouping_tmp[__i] == __grouping[__j];
- for (; __i && __test; --__i)
- __test = __grouping_tmp[__i] == __grouping[__min];
- // ... but the last parsed grouping can be <= numpunct
- // grouping.
- __test &= __grouping_tmp[0] <= __grouping[__min];
- return __test;
- }
+ {
+ const size_t __n = __grouping_tmp.size() - 1;
+ const size_t __min = std::min(__n, __grouping_size - 1);
+ size_t __i = __n;
+ bool __test = true;
+
+ // Parsed number groupings have to match the
+ // numpunct::grouping string exactly, starting at the
+ // right-most point of the parsed sequence of elements ...
+ for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
+ __test = __grouping_tmp[__i] == __grouping[__j];
+ for (; __i && __test; --__i)
+ __test = __grouping_tmp[__i] == __grouping[__min];
+ // ... but the last parsed grouping can be <= numpunct
+ // grouping.
+ __test &= __grouping_tmp[0] <= __grouping[__min];
+ return __test;
+ }
template<typename _CharT>
_CharT*
diff --git a/libstdc++-v3/include/bits/mask_array.h b/libstdc++-v3/include/bits/mask_array.h
index ba67db70e9b..43821cb4576 100644
--- a/libstdc++-v3/include/bits/mask_array.h
+++ b/libstdc++-v3/include/bits/mask_array.h
@@ -1,6 +1,6 @@
// The template and inlines for the -*- C++ -*- mask_array class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -42,6 +42,21 @@
namespace std {
+ /**
+ * @brief Reference to selected subset of an array.
+ *
+ * A mask_array is a reference to the actual elements of an array specified
+ * by a bitmask in the form of an array of bool. The way to get a
+ * mask_array is to call operator[](valarray<bool>) on a valarray. The
+ * returned mask_array then permits carrying operations out on the
+ * referenced subset of elements in the original valarray.
+ *
+ * For example, if a mask_array is obtained using the array (false, true,
+ * false, true) as an argument, the mask array has two elements referring
+ * to array[1] and array[3] in the underlying array.
+ *
+ * @param Tp Element type.
+ */
template <class _Tp>
class mask_array
{
@@ -49,16 +64,27 @@ namespace std {
typedef _Tp value_type;
void operator=(const valarray<_Tp>&) const;
+ /// Multiply slice elements by corresponding elements of @a v.
void operator*=(const valarray<_Tp>&) const;
+ /// Divide slice elements by corresponding elements of @a v.
void operator/=(const valarray<_Tp>&) const;
- void operator%=(const valarray<_Tp>&) const;
- void operator+=(const valarray<_Tp>&) const;
- void operator-=(const valarray<_Tp>&) const;
- void operator^=(const valarray<_Tp>&) const;
+ /// Modulo slice elements by corresponding elements of @a v.
+ void operator%=(const valarray<_Tp>&) const;
+ /// Add corresponding elements of @a v to slice elements.
+ void operator+=(const valarray<_Tp>&) const;
+ /// Subtract corresponding elements of @a v from slice elements.
+ void operator-=(const valarray<_Tp>&) const;
+ /// Logical xor slice elements with corresponding elements of @a v.
+ void operator^=(const valarray<_Tp>&) const;
+ /// Logical and slice elements with corresponding elements of @a v.
void operator&=(const valarray<_Tp>&) const;
+ /// Logical or slice elements with corresponding elements of @a v.
void operator|=(const valarray<_Tp>&) const;
- void operator<<=(const valarray<_Tp>&) const;
+ /// Left shift slice elements by corresponding elements of @a v.
+ void operator<<=(const valarray<_Tp>&) const;
+ /// Right shift slice elements by corresponding elements of @a v.
void operator>>=(const valarray<_Tp>&) const;
+ /// Assign all slice elements to @a t.
void operator=(const _Tp&) const;
// ~mask_array ();
diff --git a/libstdc++-v3/include/bits/postypes.h b/libstdc++-v3/include/bits/postypes.h
index c9b46b1d171..e11a2e3839a 100644
--- a/libstdc++-v3/include/bits/postypes.h
+++ b/libstdc++-v3/include/bits/postypes.h
@@ -1,6 +1,6 @@
// Position types -*- C++ -*-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -64,6 +64,7 @@ namespace std
typedef long long __streamoff_base_type;
#endif
+ /// Integral type for I/O operation counts and buffer sizes.
typedef ptrdiff_t streamsize; // Signed integral type
template<typename _StateT>
@@ -125,21 +126,62 @@ namespace std
_M_off -= __off;
return *this;
}
+
+ streamoff&
+ operator++()
+ {
+ ++_M_off;
+ return *this;
+ }
+
+ streamoff
+ operator++(int)
+ {
+ const streamoff __tmp(*this);
+ ++_M_off;
+ return __tmp;
+ }
+
+ streamoff&
+ operator--()
+ {
+ --_M_off;
+ return *this;
+ }
+
+ streamoff
+ operator--(int)
+ {
+ const streamoff __tmp(*this);
+ --_M_off;
+ return __tmp;
+ }
};
- // In clauses 21.1.3.1 and 27.4.1 streamoff is described as an
- // implementation defined type. In this implementation it is a
- // distinct class type.
- // Note: In versions of GCC up to and including GCC 3.3, streamoff
- // was typedef long.
+ /**
+ * @brief Type used by fpos, char_traits<char>, and char_traits<wchar_t>.
+ *
+ * @if maint
+ * In clauses 21.1.3.1 and 27.4.1 streamoff is described as an
+ * implementation defined type. In this implementation it is a
+ * distinct class type.
+ * Note: In versions of GCC up to and including GCC 3.3, streamoff
+ * was typedef long.
+ * @endif
+ */
typedef class streamoff streamoff;
- // The standard fails to place any requiremens on the template
- // argument StateT. In this implementation StateT must be
- // DefaultConstructible, CopyConstructible and Assignable. The
- // standard only requires that fpos should contain a member of type
- // StateT. In this implementation it also contains an offset stored
- // as a signed integer.
+ /**
+ * @brief Class representing stream positions.
+ *
+ * The standard places no requirements upon the template parameter StateT.
+ * In this implementation StateT must be DefaultConstructible,
+ * CopyConstructible and Assignable. The standard only requires that fpos
+ * should contain a member of type StateT. In this implementation it also
+ * contains an offset stored as a signed integer.
+ *
+ * @param StateT Type passed to and returned from state().
+ */
template<typename _StateT>
class fpos
{
@@ -161,6 +203,7 @@ namespace std
// fpos, but gives no meaningful semantics for this
// conversion. In this implementation this constructor stores
// the integer as the offset and default constructs the state.
+ /// Construct position from integer.
fpos(__streamoff_base_type __off)
: _M_off(__off), _M_state() { }
@@ -170,13 +213,16 @@ namespace std
// implementation implicit conversion is also allowed, and this
// constructor stores the streamoff as the offset and default
// constructs the state.
+ /// Construct position from offset.
fpos(const streamoff& __off)
: _M_off(__off), _M_state() { }
+ /// Remember the value of @a st.
void
state(_StateT __st)
{ _M_state = __st; }
+ /// Return the last set value of @a st.
_StateT
state() const
{ return _M_state; }
@@ -185,10 +231,12 @@ namespace std
// equivalence relation. In this implementation two fpos<StateT>
// objects belong to the same equivalence class if the contained
// offsets compare equal.
+ /// Test if equivalent to another position.
bool
operator==(const fpos& __other) const
{ return _M_off == __other._M_off; }
+ /// Test if not equivalent to another position.
bool
operator!=(const fpos& __other) const
{ return _M_off != __other._M_off; }
@@ -196,6 +244,7 @@ namespace std
// The standard requires that this operator must be defined, but
// gives no semantics. In this implemenation it just adds it's
// argument to the stored offset and returns *this.
+ /// Add offset to this position.
fpos&
operator+=(const streamoff& __off)
{
@@ -206,6 +255,7 @@ namespace std
// The standard requires that this operator must be defined, but
// gives no semantics. In this implemenation it just subtracts
// it's argument from the stored offset and returns *this.
+ /// Subtract offset from this position.
fpos&
operator-=(const streamoff& __off)
{
@@ -218,6 +268,7 @@ namespace std
// implementation it constructs a copy of *this, adds the
// argument to that copy using operator+= and then returns the
// copy.
+ /// Add position and offset.
fpos
operator+(const streamoff& __off) const
{
@@ -231,6 +282,7 @@ namespace std
// implementation it constructs a copy of *this, subtracts the
// argument from that copy using operator-= and then returns the
// copy.
+ /// Subtract offset from position.
fpos
operator-(const streamoff& __off) const
{
@@ -243,11 +295,13 @@ namespace std
// defines it's semantics only in terms of operator+. In this
// implementation it returns the difference between the offset
// stored in *this and in the argument.
+ /// Subtract position to return offset.
streamoff
operator-(const fpos& __other) const
{ return _M_off - __other._M_off; }
};
+ /// Construct offset from position.
template<typename _StateT>
inline
streamoff::streamoff(const fpos<_StateT>& __pos)
@@ -256,7 +310,9 @@ namespace std
// Clauses 21.1.3.1 and 21.1.3.2 describe streampos and wstreampos
// as implementation defined types, but clause 27.2 requires that
// they must both be typedefs for fpos<mbstate_t>
+ /// File position for char streams.
typedef fpos<mbstate_t> streampos;
+ /// File position for wchar_t streams.
typedef fpos<mbstate_t> wstreampos;
} // namespace std
diff --git a/libstdc++-v3/include/bits/slice_array.h b/libstdc++-v3/include/bits/slice_array.h
index ad33a474672..7706fd6410b 100644
--- a/libstdc++-v3/include/bits/slice_array.h
+++ b/libstdc++-v3/include/bits/slice_array.h
@@ -1,6 +1,7 @@
// The template and inlines for the -*- C++ -*- slice_array class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,14 +42,39 @@
namespace std
{
+ /**
+ * @brief Class defining one-dimensional subset of an array.
+ *
+ * The slice class represents a one-dimensional subset of an array,
+ * specified by three parameters: start offset, size, and stride. The
+ * start offset is the index of the first element of the array that is part
+ * of the subset. The size is the total number of elements in the subset.
+ * Stride is the distance between each successive array element to include
+ * in the subset.
+ *
+ * For example, with an array of size 10, and a slice with offset 1, size 3
+ * and stride 2, the subset consists of array elements 1, 3, and 5.
+ */
class slice
{
public:
+ /// Construct an empty slice.
slice();
+
+ /**
+ * @brief Construct a slice.
+ *
+ * @param o Offset in array of first element.
+ * @param d Number of elements in slice.
+ * @param s Stride between array elements.
+ */
slice(size_t, size_t, size_t);
+ /// Return array offset of first slice element.
size_t start() const;
+ /// Return size of slice.
size_t size() const;
+ /// Return array stride of slice.
size_t stride() const;
private:
@@ -78,6 +104,19 @@ namespace std
slice::stride() const
{ return _M_st; }
+ /**
+ * @brief Reference to one-dimensional subset of an array.
+ *
+ * A slice_array is a reference to the actual elements of an array
+ * specified by a slice. The way to get a slice_array is to call
+ * operator[](slice) on a valarray. The returned slice_array then permits
+ * carrying operations out on the referenced subset of elements in the
+ * original valarray. For example, operator+=(valarray) will add values
+ * to the subset of elements in the underlying valarray this slice_array
+ * refers to.
+ *
+ * @param Tp Element type.
+ */
template<typename _Tp>
class slice_array
{
@@ -85,22 +124,37 @@ namespace std
typedef _Tp value_type;
// This constructor is implemented since we need to return a value.
+ /// Copy constructor. Both slices refer to the same underlying array.
slice_array(const slice_array&);
// This operator must be public. See DR-253.
+ /// Assignment operator. Assigns slice elements to corresponding
+ /// elements of @a a.
slice_array& operator=(const slice_array&);
+ /// Assign slice elements to corresponding elements of @a v.
void operator=(const valarray<_Tp>&) const;
+ /// Multiply slice elements by corresponding elements of @a v.
void operator*=(const valarray<_Tp>&) const;
+ /// Divide slice elements by corresponding elements of @a v.
void operator/=(const valarray<_Tp>&) const;
+ /// Modulo slice elements by corresponding elements of @a v.
void operator%=(const valarray<_Tp>&) const;
+ /// Add corresponding elements of @a v to slice elements.
void operator+=(const valarray<_Tp>&) const;
+ /// Subtract corresponding elements of @a v from slice elements.
void operator-=(const valarray<_Tp>&) const;
+ /// Logical xor slice elements with corresponding elements of @a v.
void operator^=(const valarray<_Tp>&) const;
+ /// Logical and slice elements with corresponding elements of @a v.
void operator&=(const valarray<_Tp>&) const;
+ /// Logical or slice elements with corresponding elements of @a v.
void operator|=(const valarray<_Tp>&) const;
+ /// Left shift slice elements by corresponding elements of @a v.
void operator<<=(const valarray<_Tp>&) const;
+ /// Right shift slice elements by corresponding elements of @a v.
void operator>>=(const valarray<_Tp>&) const;
+ /// Assign all slice elements to @a t.
void operator=(const _Tp &) const;
// ~slice_array ();
diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc
index 07e13926ba9..b3db928a054 100644
--- a/libstdc++-v3/include/bits/sstream.tcc
+++ b/libstdc++-v3/include/bits/sstream.tcc
@@ -205,6 +205,7 @@ namespace std
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
+#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_stringbuf<char>;
extern template class basic_istringstream<char>;
extern template class basic_ostringstream<char>;
@@ -216,6 +217,7 @@ namespace std
extern template class basic_ostringstream<wchar_t>;
extern template class basic_stringstream<wchar_t>;
#endif
+#endif
} // namespace std
#endif
diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index 884256151f4..d3adf8aa4a4 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -1,6 +1,6 @@
// bit_vector and vector<bool> specialization -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -296,6 +296,24 @@ protected:
#include <bits/stl_vector.h>
namespace __gnu_norm
{
+
+ /**
+ * @brief A specialization of vector for booleans which offers fixed time
+ * access to individual elements in any order.
+ *
+ * Note that vector<bool> does not actually meet the requirements for being
+ * a container. This is because the reference and pointer types are not
+ * really references and pointers to bool. See DR96 for details. @see
+ * vector for function documentation.
+ *
+ * @ingroup Containers
+ * @ingroup Sequences
+ *
+ * In some terminology a %vector can be described as a dynamic C-style array,
+ * it offers fast and efficient access to individual elements in any order
+ * and saves the user from worrying about memory and size allocation.
+ * Subscripting ( @c [] ) access is also provided as with C-style arrays.
+ */
template <typename _Alloc>
class vector<bool, _Alloc> : public _Bvector_base<_Alloc>
{
@@ -677,9 +695,6 @@ template <typename _Alloc>
void clear() { erase(begin(), end()); }
};
-
- // This typedef is non-standard. It is provided for backward compatibility.
- typedef vector<bool, __alloc> bit_vector;
} // namespace __gnu_norm
#endif /* _BVECTOR_H */
diff --git a/libstdc++-v3/include/bits/stl_multiset.h b/libstdc++-v3/include/bits/stl_multiset.h
index 515ef5c040e..2cd26d072e8 100644
--- a/libstdc++-v3/include/bits/stl_multiset.h
+++ b/libstdc++-v3/include/bits/stl_multiset.h
@@ -1,6 +1,6 @@
// Multiset implementation -*- C++ -*-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -80,181 +80,451 @@ template <class _Key, class _Compare, class _Alloc>
inline bool operator<(const multiset<_Key,_Compare,_Alloc>& __x,
const multiset<_Key,_Compare,_Alloc>& __y);
-template <class _Key, class _Compare, class _Alloc>
-class multiset
-{
- // concept requirements
- __glibcxx_class_requires(_Key, _SGIAssignableConcept)
- __glibcxx_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept)
-
-public:
-
- // typedefs:
-
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
-private:
- typedef _Rb_tree<key_type, value_type,
- _Identity<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing multiset
-public:
- typedef typename _Alloc::pointer pointer;
- typedef typename _Alloc::const_pointer const_pointer;
- typedef typename _Alloc::reference reference;
- typedef typename _Alloc::const_reference const_reference;
- typedef typename _Rep_type::const_iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
- // allocation/deallocation
-
- multiset() : _M_t(_Compare(), allocator_type()) {}
- explicit multiset(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) {}
-
- template <class _InputIterator>
- multiset(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
+ /**
+ * @brief A standard container made up of elements, which can be retrieved
+ * in logarithmic time.
+ *
+ * @ingroup Containers
+ * @ingroup Assoc_containers
+ *
+ * Meets the requirements of a <a href="tables.html#65">container</a>, a
+ * <a href="tables.html#66">reversible container</a>, and an
+ * <a href="tables.html#69">associative container</a> (using equivalent
+ * keys). For a @c multiset<Key> the key_type and value_type are Key.
+ *
+ * Multisets support bidirectional iterators.
+ *
+ * @if maint
+ * The private tree data is declared exactly the same way for set and
+ * multiset; the distinction is made entirely in how the tree functions are
+ * called (*_unique versus *_equal, same as the standard).
+ * @endif
+ */
+ template <class _Key, class _Compare, class _Alloc>
+ class multiset
+ {
+ // concept requirements
+ __glibcxx_class_requires(_Key, _SGIAssignableConcept)
+ __glibcxx_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept)
+
+ public:
+
+ // typedefs:
+
+ typedef _Key key_type;
+ typedef _Key value_type;
+ typedef _Compare key_compare;
+ typedef _Compare value_compare;
+
+ private:
+ /// @if maint This turns a red-black tree into a [multi]set. @endif
+ typedef _Rb_tree<key_type, value_type,
+ _Identity<value_type>, key_compare, _Alloc> _Rep_type;
+ /// @if maint The actual tree structure. @endif
+ _Rep_type _M_t;
+
+ public:
+ typedef typename _Alloc::pointer pointer;
+ typedef typename _Alloc::const_pointer const_pointer;
+ typedef typename _Alloc::reference reference;
+ typedef typename _Alloc::const_reference const_reference;
+ typedef typename _Rep_type::const_iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::allocator_type allocator_type;
+
+ // allocation/deallocation
+
+ /**
+ * @brief Default constructor creates no elements.
+ */
+ multiset() : _M_t(_Compare(), allocator_type()) {}
+ explicit multiset(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) {}
+
+ /**
+ * @brief Builds a %multiset from a range.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ *
+ * Create a %multiset consisting of copies of the elements from
+ * [first,last). This is linear in N if the range is already sorted,
+ * and NlogN otherwise (where N is distance(first,last)).
+ */
+ template <class _InputIterator>
+ multiset(_InputIterator __first, _InputIterator __last)
+ : _M_t(_Compare(), allocator_type())
{ _M_t.insert_equal(__first, __last); }
- template <class _InputIterator>
- multiset(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-
- multiset(const multiset<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
-
- multiset<_Key,_Compare,_Alloc>&
- operator=(const multiset<_Key,_Compare,_Alloc>& __x) {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return _M_t.key_comp(); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() const { return _M_t.begin(); }
- iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- void swap(multiset<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
- iterator insert(const value_type& __x) {
- return _M_t.insert_equal(__x);
- }
- iterator insert(iterator __position, const value_type& __x) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- return _M_t.insert_equal((_Rep_iterator&)__position, __x);
- }
-
- template <class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_equal(__first, __last);
- }
- void erase(iterator __position) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__position);
- }
- size_type erase(const key_type& __x) {
- return _M_t.erase(__x);
- }
- void erase(iterator __first, iterator __last) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
- }
- void clear() { _M_t.clear(); }
-
- // multiset operations:
-
- size_type count(const key_type& __x) const { return _M_t.count(__x); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- iterator find(const key_type& __x) { return _M_t.find(__x); }
- const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
- iterator lower_bound(const key_type& __x) {
- return _M_t.lower_bound(__x);
- }
- const_iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) {
- return _M_t.upper_bound(__x);
- }
- const_iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
- pair<iterator,iterator> equal_range(const key_type& __x) {
- return _M_t.equal_range(__x);
- }
- pair<const_iterator,const_iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
-
- template <class _K1, class _C1, class _A1>
- friend bool operator== (const multiset<_K1,_C1,_A1>&,
- const multiset<_K1,_C1,_A1>&);
- template <class _K1, class _C1, class _A1>
- friend bool operator< (const multiset<_K1,_C1,_A1>&,
- const multiset<_K1,_C1,_A1>&);
-};
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator==(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator<(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator!=(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator>(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return __y < __x;
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator<=(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return !(__y < __x);
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator>=(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return !(__x < __y);
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline void swap(multiset<_Key,_Compare,_Alloc>& __x,
- multiset<_Key,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
+ /**
+ * @brief Builds a %multiset from a range.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ * @param comp A comparison functor.
+ * @param a An allocator object.
+ *
+ * Create a %multiset consisting of copies of the elements from
+ * [first,last). This is linear in N if the range is already sorted,
+ * and NlogN otherwise (where N is distance(first,last)).
+ */
+ template <class _InputIterator>
+ multiset(_InputIterator __first, _InputIterator __last,
+ const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
+
+ /**
+ * @brief %Multiset copy constructor.
+ * @param x A %multiset of identical element and allocator types.
+ *
+ * The newly-created %multiset uses a copy of the allocation object used
+ * by @a x.
+ */
+ multiset(const multiset<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
+
+ /**
+ * @brief %Multiset assignment operator.
+ * @param x A %multiset of identical element and allocator types.
+ *
+ * All the elements of @a x are copied, but unlike the copy constructor,
+ * the allocator object is not copied.
+ */
+ multiset<_Key,_Compare,_Alloc>&
+ operator=(const multiset<_Key,_Compare,_Alloc>& __x) {
+ _M_t = __x._M_t;
+ return *this;
+ }
+
+ // accessors:
+
+ /// Returns the comparison object.
+ key_compare key_comp() const { return _M_t.key_comp(); }
+ /// Returns the comparison object.
+ value_compare value_comp() const { return _M_t.key_comp(); }
+ /// Returns the memory allocation object.
+ allocator_type get_allocator() const { return _M_t.get_allocator(); }
+
+ /**
+ * Returns a read/write iterator that points to the first element in the
+ * %multiset. Iteration is done in ascending order according to the
+ * keys.
+ */
+ iterator begin() const { return _M_t.begin(); }
+
+ /**
+ * Returns a read/write iterator that points one past the last element in
+ * the %multiset. Iteration is done in ascending order according to the
+ * keys.
+ */
+ iterator end() const { return _M_t.end(); }
+
+ /**
+ * Returns a read/write reverse iterator that points to the last element
+ * in the %multiset. Iteration is done in descending order according to
+ * the keys.
+ */
+ reverse_iterator rbegin() const { return _M_t.rbegin(); }
+
+ /**
+ * Returns a read/write reverse iterator that points to the last element
+ * in the %multiset. Iteration is done in descending order according to
+ * the keys.
+ */
+ reverse_iterator rend() const { return _M_t.rend(); }
+
+ /// Returns true if the %set is empty.
+ bool empty() const { return _M_t.empty(); }
+
+ /// Returns the size of the %set.
+ size_type size() const { return _M_t.size(); }
+
+ /// Returns the maximum size of the %set.
+ size_type max_size() const { return _M_t.max_size(); }
+
+ /**
+ * @brief Swaps data with another %multiset.
+ * @param x A %multiset of the same element and allocator types.
+ *
+ * This exchanges the elements between two multisets in constant time.
+ * (It is only swapping a pointer, an integer, and an instance of the @c
+ * Compare type (which itself is often stateless and empty), so it should
+ * be quite fast.)
+ * Note that the global std::swap() function is specialized such that
+ * std::swap(s1,s2) will feed to this function.
+ */
+ void swap(multiset<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
+
+ // insert/erase
+ /**
+ * @brief Inserts an element into the %multiset.
+ * @param x Element to be inserted.
+ * @return An iterator that points to the inserted element.
+ *
+ * This function inserts an element into the %multiset. Contrary
+ * to a std::set the %multiset does not rely on unique keys and thus
+ * multiple copies of the same element can be inserted.
+ *
+ * Insertion requires logarithmic time.
+ */
+ iterator insert(const value_type& __x) {
+ return _M_t.insert_equal(__x);
+ }
+
+ /**
+ * @brief Inserts an element into the %multiset.
+ * @param position An iterator that serves as a hint as to where the
+ * element should be inserted.
+ * @param x Element to be inserted.
+ * @return An iterator that points to the inserted element.
+ *
+ * This function inserts an element into the %multiset. Contrary
+ * to a std::set the %multiset does not rely on unique keys and thus
+ * multiple copies of the same element can be inserted.
+ *
+ * Note that the first parameter is only a hint and can potentially
+ * improve the performance of the insertion process. A bad hint would
+ * cause no gains in efficiency.
+ *
+ * See http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html#4
+ * for more on "hinting".
+ *
+ * Insertion requires logarithmic time (if the hint is not taken).
+ */
+ iterator insert(iterator __position, const value_type& __x) {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ return _M_t.insert_equal((_Rep_iterator&)__position, __x);
+ }
+
+ /**
+ * @brief A template function that attemps to insert a range of elements.
+ * @param first Iterator pointing to the start of the range to be
+ * inserted.
+ * @param last Iterator pointing to the end of the range.
+ *
+ * Complexity similar to that of the range constructor.
+ */
+ template <class _InputIterator>
+ void insert(_InputIterator __first, _InputIterator __last) {
+ _M_t.insert_equal(__first, __last);
+ }
+
+ /**
+ * @brief Erases an element from a %multiset.
+ * @param position An iterator pointing to the element to be erased.
+ *
+ * This function erases an element, pointed to by the given iterator,
+ * from a %multiset. Note that this function only erases the element,
+ * and that if the element is itself a pointer, the pointed-to memory is
+ * not touched in any way. Managing the pointer is the user's
+ * responsibilty.
+ */
+ void erase(iterator __position) {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ _M_t.erase((_Rep_iterator&)__position);
+ }
+
+ /**
+ * @brief Erases elements according to the provided key.
+ * @param x Key of element to be erased.
+ * @return The number of elements erased.
+ *
+ * This function erases all elements located by the given key from a
+ * %multiset.
+ * Note that this function only erases the element, and that if
+ * the element is itself a pointer, the pointed-to memory is not touched
+ * in any way. Managing the pointer is the user's responsibilty.
+ */
+ size_type erase(const key_type& __x) {
+ return _M_t.erase(__x);
+ }
+
+ /**
+ * @brief Erases a [first,last) range of elements from a %multiset.
+ * @param first Iterator pointing to the start of the range to be erased.
+ * @param last Iterator pointing to the end of the range to be erased.
+ *
+ * This function erases a sequence of elements from a %multiset.
+ * Note that this function only erases the elements, and that if
+ * the elements themselves are pointers, the pointed-to memory is not
+ * touched in any way. Managing the pointer is the user's responsibilty.
+ */
+ void erase(iterator __first, iterator __last) {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
+ }
+
+ /**
+ * Erases all elements in a %multiset. Note that this function only
+ * erases the elements, and that if the elements themselves are pointers,
+ * the pointed-to memory is not touched in any way. Managing the pointer
+ * is the user's responsibilty.
+ */
+ void clear() { _M_t.clear(); }
+
+ // multiset operations:
+
+ /**
+ * @brief Finds the number of elements with given key.
+ * @param x Key of elements to be located.
+ * @return Number of elements with specified key.
+ */
+ size_type count(const key_type& __x) const { return _M_t.count(__x); }
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 214. set::find() missing const overload
+ //@{
+ /**
+ * @brief Tries to locate an element in a %set.
+ * @param x Element to be located.
+ * @return Iterator pointing to sought-after element, or end() if not
+ * found.
+ *
+ * This function takes a key and tries to locate the element with which
+ * the key matches. If successful the function returns an iterator
+ * pointing to the sought after element. If unsuccessful it returns the
+ * past-the-end ( @c end() ) iterator.
+ */
+ iterator find(const key_type& __x) { return _M_t.find(__x); }
+ const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds the beginning of a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Iterator pointing to first element equal to or greater
+ * than key, or end().
+ *
+ * This function returns the first element of a subsequence of elements
+ * that matches the given key. If unsuccessful it returns an iterator
+ * pointing to the first element that has a greater value than given key
+ * or end() if no such element exists.
+ */
+ iterator lower_bound(const key_type& __x) {
+ return _M_t.lower_bound(__x);
+ }
+ const_iterator lower_bound(const key_type& __x) const {
+ return _M_t.lower_bound(__x);
+ }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds the end of a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Iterator pointing to the first element
+ * greater than key, or end().
+ */
+ iterator upper_bound(const key_type& __x) {
+ return _M_t.upper_bound(__x);
+ }
+ const_iterator upper_bound(const key_type& __x) const {
+ return _M_t.upper_bound(__x);
+ }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Pair of iterators that possibly points to the subsequence
+ * matching given key.
+ *
+ * This function is equivalent to
+ * @code
+ * std::make_pair(c.lower_bound(val),
+ * c.upper_bound(val))
+ * @endcode
+ * (but is faster than making the calls separately).
+ *
+ * This function probably only makes sense for multisets.
+ */
+ pair<iterator,iterator> equal_range(const key_type& __x) {
+ return _M_t.equal_range(__x);
+ }
+ pair<const_iterator,const_iterator> equal_range(const key_type& __x) const {
+ return _M_t.equal_range(__x);
+ }
+
+ template <class _K1, class _C1, class _A1>
+ friend bool operator== (const multiset<_K1,_C1,_A1>&,
+ const multiset<_K1,_C1,_A1>&);
+ template <class _K1, class _C1, class _A1>
+ friend bool operator< (const multiset<_K1,_C1,_A1>&,
+ const multiset<_K1,_C1,_A1>&);
+ };
+
+ /**
+ * @brief Multiset equality comparison.
+ * @param x A %multiset.
+ * @param y A %multiset of the same type as @a x.
+ * @return True iff the size and elements of the multisets are equal.
+ *
+ * This is an equivalence relation. It is linear in the size of the multisets.
+ * Multisets are considered equivalent if their sizes are equal, and if
+ * corresponding elements compare equal.
+ */
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator==(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+
+ /**
+ * @brief Multiset ordering relation.
+ * @param x A %multiset.
+ * @param y A %multiset of the same type as @a x.
+ * @return True iff @a x is lexicographically less than @a y.
+ *
+ * This is a total ordering relation. It is linear in the size of the
+ * maps. The elements must be comparable with @c <.
+ *
+ * See std::lexicographical_compare() for how the determination is made.
+ */
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator<(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+
+ /// Returns !(x == y).
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator!=(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return !(__x == __y); }
+
+ /// Returns y < x.
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator>(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return __y < __x; }
+
+ /// Returns !(y < x)
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator<=(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return !(__y < __x); }
+
+ /// Returns !(x < y)
+ template <class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator>=(const multiset<_Key,_Compare,_Alloc>& __x,
+ const multiset<_Key,_Compare,_Alloc>& __y)
+ { return !(__x < __y); }
+
+ /// See std::multiset::swap().
+ template <class _Key, class _Compare, class _Alloc>
+ inline void
+ swap(multiset<_Key,_Compare,_Alloc>& __x,
+ multiset<_Key,_Compare,_Alloc>& __y)
+ { __x.swap(__y); }
} // namespace __gnu_norm
diff --git a/libstdc++-v3/include/bits/stl_numeric.h b/libstdc++-v3/include/bits/stl_numeric.h
index 7b901a54315..f9ca3b49cf2 100644
--- a/libstdc++-v3/include/bits/stl_numeric.h
+++ b/libstdc++-v3/include/bits/stl_numeric.h
@@ -1,6 +1,6 @@
// Numeric functions implementation -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -66,6 +66,17 @@
namespace std
{
+ /**
+ * @brief Accumulate values in a range.
+ *
+ * Accumulates the values in the range [first,last) using operator+(). The
+ * initial value is @a init. The values are processed in order.
+ *
+ * @param first Start of range.
+ * @param last End of range.
+ * @param init Starting value to add other values to.
+ * @return The final sum.
+ */
template<typename _InputIterator, typename _Tp>
_Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
@@ -79,6 +90,19 @@ namespace std
return __init;
}
+ /**
+ * @brief Accumulate values in a range with operation.
+ *
+ * Accumulates the values in the range [first,last) using the function
+ * object @a binary_op. The initial value is @a init. The values are
+ * processed in order.
+ *
+ * @param first Start of range.
+ * @param last End of range.
+ * @param init Starting value to add other values to.
+ * @param binary_op Function object to accumulate with.
+ * @return The final sum.
+ */
template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
_Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
@@ -93,6 +117,20 @@ namespace std
return __init;
}
+ /**
+ * @brief Compute inner product of two ranges.
+ *
+ * Starting with an initial value of @a init, multiplies successive
+ * elements from the two ranges and adds each product into the accumulated
+ * value using operator+(). The values in the ranges are processed in
+ * order.
+ *
+ * @param first1 Start of range 1.
+ * @param last1 End of range 1.
+ * @param first2 Start of range 2.
+ * @param init Starting value to add other values to.
+ * @return The final inner product.
+ */
template<typename _InputIterator1, typename _InputIterator2, typename _Tp>
_Tp
inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
@@ -108,6 +146,22 @@ namespace std
return __init;
}
+ /**
+ * @brief Compute inner product of two ranges.
+ *
+ * Starting with an initial value of @a init, applies @a binary_op2 to
+ * successive elements from the two ranges and accumulates each result into
+ * the accumulated value using @a binary_op1. The values in the ranges are
+ * processed in order.
+ *
+ * @param first1 Start of range 1.
+ * @param last1 End of range 1.
+ * @param first2 Start of range 2.
+ * @param init Starting value to add other values to.
+ * @param binary_op1 Function object to accumulate with.
+ * @param binary_op2 Function object to apply to pairs of input values.
+ * @return The final inner product.
+ */
template<typename _InputIterator1, typename _InputIterator2, typename _Tp,
typename _BinaryOperation1, typename _BinaryOperation2>
_Tp
@@ -126,6 +180,20 @@ namespace std
return __init;
}
+ /**
+ * @brief Return list of partial sums
+ *
+ * Accumulates the values in the range [first,last) using operator+().
+ * As each successive input value is added into the total, that partial sum
+ * is written to @a result. Therefore, the first value in result is the
+ * first value of the input, the second value in result is the sum of the
+ * first and second input values, and so on.
+ *
+ * @param first Start of input range.
+ * @param last End of input range.
+ * @param result Output to write sums to.
+ * @return Iterator pointing just beyond the values written to result.
+ */
template<typename _InputIterator, typename _OutputIterator>
_OutputIterator
partial_sum(_InputIterator __first, _InputIterator __last,
@@ -148,6 +216,20 @@ namespace std
return ++__result;
}
+ /**
+ * @brief Return list of partial sums
+ *
+ * Accumulates the values in the range [first,last) using operator+().
+ * As each successive input value is added into the total, that partial sum
+ * is written to @a result. Therefore, the first value in result is the
+ * first value of the input, the second value in result is the sum of the
+ * first and second input values, and so on.
+ *
+ * @param first Start of input range.
+ * @param last End of input range.
+ * @param result Output to write sums to.
+ * @return Iterator pointing just beyond the values written to result.
+ */
template<typename _InputIterator, typename _OutputIterator, typename _BinaryOperation>
_OutputIterator
partial_sum(_InputIterator __first, _InputIterator __last,
@@ -170,6 +252,17 @@ namespace std
return ++__result;
}
+ /**
+ * @brief Return differences between adjacent values.
+ *
+ * Computes the difference between adjacent values in the range
+ * [first,last) using operator-() and writes the result to @a result.
+ *
+ * @param first Start of input range.
+ * @param last End of input range.
+ * @param result Output to write sums to.
+ * @return Iterator pointing just beyond the values written to result.
+ */
template<typename _InputIterator, typename _OutputIterator>
_OutputIterator
adjacent_difference(_InputIterator __first,
@@ -193,6 +286,18 @@ namespace std
return ++__result;
}
+ /**
+ * @brief Return differences between adjacent values.
+ *
+ * Computes the difference between adjacent values in the range
+ * [first,last) using the function object @a binary_op and writes the
+ * result to @a result.
+ *
+ * @param first Start of input range.
+ * @param last End of input range.
+ * @param result Output to write sums to.
+ * @return Iterator pointing just beyond the values written to result.
+ */
template<typename _InputIterator, typename _OutputIterator, typename _BinaryOperation>
_OutputIterator
adjacent_difference(_InputIterator __first, _InputIterator __last,
diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h
index 285d5ee2a85..a3f5472df7c 100644
--- a/libstdc++-v3/include/bits/stl_set.h
+++ b/libstdc++-v3/include/bits/stl_set.h
@@ -1,6 +1,6 @@
// Set implementation -*- C++ -*-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -80,6 +80,29 @@ namespace __gnu_norm
operator<(const set<_Key,_Compare,_Alloc>& __x,
const set<_Key,_Compare,_Alloc>& __y);
+ /**
+ * @brief A standard container made up of unique keys, which can be
+ * retrieved in logarithmic time.
+ *
+ * @ingroup Containers
+ * @ingroup Assoc_containers
+ *
+ * Meets the requirements of a <a href="tables.html#65">container</a>, a
+ * <a href="tables.html#66">reversible container</a>, and an
+ * <a href="tables.html#69">associative container</a> (using unique keys).
+ *
+ * Sets support bidirectional iterators.
+ *
+ * @param Key Type of key objects.
+ * @param Compare Comparison function object type, defaults to less<Key>.
+ * @param Alloc Allocator type, defaults to allocator<Key>.
+ *
+ * @if maint
+ * The private tree data is declared exactly the same way for set and
+ * multiset; the distinction is made entirely in how the tree functions are
+ * called (*_unique versus *_equal, same as the standard).
+ * @endif
+ */
template<class _Key, class _Compare, class _Alloc>
class set
{
@@ -89,168 +112,424 @@ namespace __gnu_norm
public:
// typedefs:
+ //@{
+ /// Public typedefs.
typedef _Key key_type;
typedef _Key value_type;
typedef _Compare key_compare;
typedef _Compare value_compare;
-private:
- typedef _Rb_tree<key_type, value_type,
- _Identity<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing set
-public:
- typedef typename _Alloc::pointer pointer;
- typedef typename _Alloc::const_pointer const_pointer;
- typedef typename _Alloc::reference reference;
- typedef typename _Alloc::const_reference const_reference;
- typedef typename _Rep_type::const_iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
- // allocation/deallocation
-
- set() : _M_t(_Compare(), allocator_type()) {}
- explicit set(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) {}
-
- template<class _InputIterator>
- set(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- template<class _InputIterator>
- set(_InputIterator __first, _InputIterator __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-
- set(const set<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
- set<_Key,_Compare,_Alloc>& operator=(const set<_Key, _Compare, _Alloc>& __x)
- {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return _M_t.key_comp(); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() const { return _M_t.begin(); }
- iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- void swap(set<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
- pair<iterator,bool> insert(const value_type& __x) {
- pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x);
- return pair<iterator, bool>(__p.first, __p.second);
- }
- iterator insert(iterator __position, const value_type& __x) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- return _M_t.insert_unique((_Rep_iterator&)__position, __x);
- }
- template<class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_unique(__first, __last);
- }
- void erase(iterator __position) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__position);
- }
- size_type erase(const key_type& __x) {
- return _M_t.erase(__x);
- }
- void erase(iterator __first, iterator __last) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
- }
- void clear() { _M_t.clear(); }
-
- // set operations:
-
- size_type count(const key_type& __x) const {
- return _M_t.find(__x) == _M_t.end() ? 0 : 1;
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- iterator find(const key_type& __x) { return _M_t.find(__x); }
- const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
- iterator lower_bound(const key_type& __x) {
- return _M_t.lower_bound(__x);
- }
- const_iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) {
- return _M_t.upper_bound(__x);
- }
- const_iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
- pair<iterator,iterator> equal_range(const key_type& __x) {
- return _M_t.equal_range(__x);
- }
- pair<const_iterator,const_iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
-
- template<class _K1, class _C1, class _A1>
- friend bool operator== (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);
- template<class _K1, class _C1, class _A1>
- friend bool operator< (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);
-};
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator==(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator<(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator!=(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator>(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return __y < __x;
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator<=(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return !(__y < __x);
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline bool operator>=(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return !(__x < __y);
-}
-
-template<class _Key, class _Compare, class _Alloc>
-inline void swap(set<_Key,_Compare,_Alloc>& __x,
- set<_Key,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
+ //@}
+
+ private:
+ typedef _Rb_tree<key_type, value_type,
+ _Identity<value_type>, key_compare, _Alloc> _Rep_type;
+ _Rep_type _M_t; // red-black tree representing set
+ public:
+ //@{
+ /// Iterator-related typedefs.
+ typedef typename _Alloc::pointer pointer;
+ typedef typename _Alloc::const_pointer const_pointer;
+ typedef typename _Alloc::reference reference;
+ typedef typename _Alloc::const_reference const_reference;
+ typedef typename _Rep_type::const_iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::allocator_type allocator_type;
+ //@}
+
+ // allocation/deallocation
+ /// Default constructor creates no elements.
+ set() : _M_t(_Compare(), allocator_type()) {}
+
+ /**
+ * @brief Default constructor creates no elements.
+ *
+ * @param comp Comparator to use.
+ * @param a Allocator to use.
+ */
+ explicit set(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) {}
+
+ /**
+ * @brief Builds a %set from a range.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ *
+ * Create a %set consisting of copies of the elements from [first,last).
+ * This is linear in N if the range is already sorted, and NlogN
+ * otherwise (where N is distance(first,last)).
+ */
+ template<class _InputIterator>
+ set(_InputIterator __first, _InputIterator __last)
+ : _M_t(_Compare(), allocator_type())
+ { _M_t.insert_unique(__first, __last); }
+
+ /**
+ * @brief Builds a %set from a range.
+ * @param first An input iterator.
+ * @param last An input iterator.
+ * @param comp A comparison functor.
+ * @param a An allocator object.
+ *
+ * Create a %set consisting of copies of the elements from [first,last).
+ * This is linear in N if the range is already sorted, and NlogN
+ * otherwise (where N is distance(first,last)).
+ */
+ template<class _InputIterator>
+ set(_InputIterator __first, _InputIterator __last, const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a)
+ { _M_t.insert_unique(__first, __last); }
+
+ /**
+ * @brief Set copy constructor.
+ * @param x A %set of identical element and allocator types.
+ *
+ * The newly-created %set uses a copy of the allocation object used
+ * by @a x.
+ */
+ set(const set<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
+
+ /**
+ * @brief Set assignment operator.
+ * @param x A %set of identical element and allocator types.
+ *
+ * All the elements of @a x are copied, but unlike the copy constructor,
+ * the allocator object is not copied.
+ */
+ set<_Key,_Compare,_Alloc>& operator=(const set<_Key, _Compare, _Alloc>& __x)
+ {
+ _M_t = __x._M_t;
+ return *this;
+ }
+
+ // accessors:
+
+ /// Returns the comparison object with which the %set was constructed.
+ key_compare key_comp() const { return _M_t.key_comp(); }
+ /// Returns the comparison object with which the %set was constructed.
+ value_compare value_comp() const { return _M_t.key_comp(); }
+ /// Returns the allocator object with which the %set was constructed.
+ allocator_type get_allocator() const { return _M_t.get_allocator(); }
+
+ /**
+ * Returns a read/write iterator that points to the first element in the
+ * %set. Iteration is done in ascending order according to the keys.
+ */
+ iterator begin() const { return _M_t.begin(); }
+
+ /**
+ * Returns a read/write iterator that points one past the last element in
+ * the %set. Iteration is done in ascending order according to the keys.
+ */
+ iterator end() const { return _M_t.end(); }
+
+ /**
+ * Returns a read/write reverse iterator that points to the last element in
+ * the %set. Iteration is done in descending order according to the keys.
+ */
+ reverse_iterator rbegin() const { return _M_t.rbegin(); }
+
+ /**
+ * Returns a read-only (constant) reverse iterator that points to the last
+ * pair in the %map. Iteration is done in descending order according to
+ * the keys.
+ */
+ reverse_iterator rend() const { return _M_t.rend(); }
+
+ /// Returns true if the %set is empty.
+ bool empty() const { return _M_t.empty(); }
+
+ /// Returns the size of the %set.
+ size_type size() const { return _M_t.size(); }
+
+ /// Returns the maximum size of the %set.
+ size_type max_size() const { return _M_t.max_size(); }
+
+ /**
+ * @brief Swaps data with another %set.
+ * @param x A %set of the same element and allocator types.
+ *
+ * This exchanges the elements between two sets in constant time.
+ * (It is only swapping a pointer, an integer, and an instance of
+ * the @c Compare type (which itself is often stateless and empty), so it
+ * should be quite fast.)
+ * Note that the global std::swap() function is specialized such that
+ * std::swap(s1,s2) will feed to this function.
+ */
+ void swap(set<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
+
+ // insert/erase
+ /**
+ * @brief Attempts to insert an element into the %set.
+ * @param x Element to be inserted.
+ * @return A pair, of which the first element is an iterator that points
+ * to the possibly inserted element, and the second is a bool that
+ * is true if the element was actually inserted.
+ *
+ * This function attempts to insert an element into the %set. A %set
+ * relies on unique keys and thus an element is only inserted if it is
+ * not already present in the %set.
+ *
+ * Insertion requires logarithmic time.
+ */
+ pair<iterator,bool> insert(const value_type& __x)
+ {
+ pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x);
+ return pair<iterator, bool>(__p.first, __p.second);
+ }
+
+ /**
+ * @brief Attempts to insert an element into the %set.
+ * @param position An iterator that serves as a hint as to where the
+ * element should be inserted.
+ * @param x Element to be inserted.
+ * @return An iterator that points to the element with key of @a x (may
+ * or may not be the element passed in).
+ *
+ * This function is not concerned about whether the insertion took place,
+ * and thus does not return a boolean like the single-argument insert()
+ * does. Note that the first parameter is only a hint and can
+ * potentially improve the performance of the insertion process. A bad
+ * hint would cause no gains in efficiency.
+ *
+ * See http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html#4
+ * for more on "hinting".
+ *
+ * Insertion requires logarithmic time (if the hint is not taken).
+ */
+ iterator insert(iterator __position, const value_type& __x)
+ {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ return _M_t.insert_unique((_Rep_iterator&)__position, __x);
+ }
+
+ /**
+ * @brief A template function that attemps to insert a range of elements.
+ * @param first Iterator pointing to the start of the range to be
+ * inserted.
+ * @param last Iterator pointing to the end of the range.
+ *
+ * Complexity similar to that of the range constructor.
+ */
+ template<class _InputIterator>
+ void insert(_InputIterator __first, _InputIterator __last)
+ { _M_t.insert_unique(__first, __last); }
+
+ /**
+ * @brief Erases an element from a %set.
+ * @param position An iterator pointing to the element to be erased.
+ *
+ * This function erases an element, pointed to by the given iterator,
+ * from a %set. Note that this function only erases the element, and
+ * that if the element is itself a pointer, the pointed-to memory is not
+ * touched in any way. Managing the pointer is the user's responsibilty.
+ */
+ void erase(iterator __position)
+ {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ _M_t.erase((_Rep_iterator&)__position);
+ }
+
+ /**
+ * @brief Erases elements according to the provided key.
+ * @param x Key of element to be erased.
+ * @return The number of elements erased.
+ *
+ * This function erases all the elements located by the given key from
+ * a %set.
+ * Note that this function only erases the element, and that if
+ * the element is itself a pointer, the pointed-to memory is not touched
+ * in any way. Managing the pointer is the user's responsibilty.
+ */
+ size_type erase(const key_type& __x) { return _M_t.erase(__x); }
+
+ /**
+ * @brief Erases a [first,last) range of elements from a %set.
+ * @param first Iterator pointing to the start of the range to be erased.
+ * @param last Iterator pointing to the end of the range to be erased.
+ *
+ * This function erases a sequence of elements from a %set.
+ * Note that this function only erases the element, and that if
+ * the element is itself a pointer, the pointed-to memory is not touched
+ * in any way. Managing the pointer is the user's responsibilty.
+ */
+ void erase(iterator __first, iterator __last)
+ {
+ typedef typename _Rep_type::iterator _Rep_iterator;
+ _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
+ }
+
+ /**
+ * Erases all elements in a %set. Note that this function only erases
+ * the elements, and that if the elements themselves are pointers, the
+ * pointed-to memory is not touched in any way. Managing the pointer is
+ * the user's responsibilty.
+ */
+ void clear() { _M_t.clear(); }
+
+ // set operations:
+
+ /**
+ * @brief Finds the number of elements.
+ * @param x Element to located.
+ * @return Number of elements with specified key.
+ *
+ * This function only makes sense for multisets; for set the result will
+ * either be 0 (not present) or 1 (present).
+ */
+ size_type count(const key_type& __x) const
+ { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 214. set::find() missing const overload
+ //@{
+ /**
+ * @brief Tries to locate an element in a %set.
+ * @param x Element to be located.
+ * @return Iterator pointing to sought-after element, or end() if not
+ * found.
+ *
+ * This function takes a key and tries to locate the element with which
+ * the key matches. If successful the function returns an iterator
+ * pointing to the sought after element. If unsuccessful it returns the
+ * past-the-end ( @c end() ) iterator.
+ */
+ iterator find(const key_type& __x) { return _M_t.find(__x); }
+ const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds the beginning of a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Iterator pointing to first element equal to or greater
+ * than key, or end().
+ *
+ * This function returns the first element of a subsequence of elements
+ * that matches the given key. If unsuccessful it returns an iterator
+ * pointing to the first element that has a greater value than given key
+ * or end() if no such element exists.
+ */
+ iterator lower_bound(const key_type& __x)
+ { return _M_t.lower_bound(__x); }
+ const_iterator lower_bound(const key_type& __x) const
+ { return _M_t.lower_bound(__x); }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds the end of a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Iterator pointing to the first element
+ * greater than key, or end().
+ */
+ iterator upper_bound(const key_type& __x)
+ { return _M_t.upper_bound(__x); }
+ const_iterator upper_bound(const key_type& __x) const
+ { return _M_t.upper_bound(__x); }
+ //@}
+
+ //@{
+ /**
+ * @brief Finds a subsequence matching given key.
+ * @param x Key to be located.
+ * @return Pair of iterators that possibly points to the subsequence
+ * matching given key.
+ *
+ * This function is equivalent to
+ * @code
+ * std::make_pair(c.lower_bound(val),
+ * c.upper_bound(val))
+ * @endcode
+ * (but is faster than making the calls separately).
+ *
+ * This function probably only makes sense for multisets.
+ */
+ pair<iterator,iterator> equal_range(const key_type& __x)
+ { return _M_t.equal_range(__x); }
+ pair<const_iterator,const_iterator> equal_range(const key_type& __x) const
+ { return _M_t.equal_range(__x); }
+ //@}
+
+ template<class _K1, class _C1, class _A1>
+ friend bool operator== (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);
+ template<class _K1, class _C1, class _A1>
+ friend bool operator< (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&);
+ };
+
+
+ /**
+ * @brief Set equality comparison.
+ * @param x A %set.
+ * @param y A %set of the same type as @a x.
+ * @return True iff the size and elements of the sets are equal.
+ *
+ * This is an equivalence relation. It is linear in the size of the sets.
+ * Sets are considered equivalent if their sizes are equal, and if
+ * corresponding elements compare equal.
+ */
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator==(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+
+ /**
+ * @brief Set ordering relation.
+ * @param x A %set.
+ * @param y A %set of the same type as @a x.
+ * @return True iff @a x is lexicographically less than @a y.
+ *
+ * This is a total ordering relation. It is linear in the size of the
+ * maps. The elements must be comparable with @c <.
+ *
+ * See std::lexicographical_compare() for how the determination is made.
+ */
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator<(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+
+ /// Returns !(x == y).
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator!=(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return !(__x == __y); }
+
+ /// Returns y < x.
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator>(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return __y < __x; }
+
+
+ /// Returns !(y < x)
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator<=(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return !(__y < __x); }
+
+ /// Returns !(x < y)
+ template<class _Key, class _Compare, class _Alloc>
+ inline bool
+ operator>=(const set<_Key,_Compare,_Alloc>& __x,
+ const set<_Key,_Compare,_Alloc>& __y)
+ { return !(__x < __y); }
+
+ /// See std::set::swap().
+ template<class _Key, class _Compare, class _Alloc>
+ inline void
+ swap(set<_Key,_Compare,_Alloc>& __x, set<_Key,_Compare,_Alloc>& __y)
+ { __x.swap(__y); }
} // namespace __gnu_norm
diff --git a/libstdc++-v3/include/bits/stream_iterator.h b/libstdc++-v3/include/bits/stream_iterator.h
index cc67505dd69..a8bc0565a90 100644
--- a/libstdc++-v3/include/bits/stream_iterator.h
+++ b/libstdc++-v3/include/bits/stream_iterator.h
@@ -1,6 +1,6 @@
// Stream iterators
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,6 +41,7 @@
namespace std
{
+ /// Provides input iterator semantics for streams.
template<typename _Tp, typename _CharT = char,
typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
class istream_iterator
@@ -56,9 +57,11 @@ namespace std
_Tp _M_value;
bool _M_ok;
- public:
+ public:
+ /// Construct end of input stream iterator.
istream_iterator() : _M_stream(0), _M_ok(false) {}
+ /// Construct start of input stream iterator.
istream_iterator(istream_type& __s) : _M_stream(&__s) { _M_read(); }
istream_iterator(const istream_iterator& __obj)
@@ -116,12 +119,14 @@ namespace std
}
};
+ /// Return true if x and y are both end or not end, or x and y are the same.
template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
inline bool
operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
{ return __x._M_equal(__y); }
+ /// Return false if x and y are both end or not end, or x and y are the same.
template <class _Tp, class _CharT, class _Traits, class _Dist>
inline bool
operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
@@ -129,29 +134,57 @@ namespace std
{ return !__x._M_equal(__y); }
+ /**
+ * @brief Provides output iterator semantics for streams.
+ *
+ * This class provides an iterator to write to an ostream. The type Tp is
+ * the only type written by this iterator and there must be an
+ * operator<<(Tp) defined.
+ *
+ * @param Tp The type to write to the ostream.
+ * @param CharT The ostream char_type.
+ * @param Traits The ostream char_traits.
+ */
template<typename _Tp, typename _CharT = char,
typename _Traits = char_traits<_CharT> >
class ostream_iterator
: public iterator<output_iterator_tag, void, void, void, void>
{
public:
+ //@{
+ /// Public typedef
typedef _CharT char_type;
typedef _Traits traits_type;
typedef basic_ostream<_CharT, _Traits> ostream_type;
+ //@}
private:
ostream_type* _M_stream;
const _CharT* _M_string;
public:
+ /// Construct from an ostream.
ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
+ /**
+ * Construct from an ostream.
+ *
+ * The delimiter string @a c is written to the stream after every Tp
+ * written to the stream. The delimiter is not copied, and thus must
+ * not be destroyed while this iterator is in use.
+ *
+ * @param s Underlying ostream to write to.
+ * @param c CharT delimiter string to insert.
+ */
ostream_iterator(ostream_type& __s, const _CharT* __c)
: _M_stream(&__s), _M_string(__c) { }
+ /// Copy constructor.
ostream_iterator(const ostream_iterator& __obj)
: _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
+ /// Writes @a value to underlying ostream using operator<<. If
+ /// constructed with delimiter string, writes delimiter to ostream.
ostream_iterator&
operator=(const _Tp& __value)
{
diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h
index 3c393e3f955..908b8ddf33a 100644
--- a/libstdc++-v3/include/bits/streambuf_iterator.h
+++ b/libstdc++-v3/include/bits/streambuf_iterator.h
@@ -1,6 +1,6 @@
// Streambuf iterators
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -46,6 +46,7 @@
namespace std
{
// 24.5.3 Template class istreambuf_iterator
+ /// Provides input iterator semantics for streambufs.
template<typename _CharT, typename _Traits>
class istreambuf_iterator
: public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
@@ -53,11 +54,14 @@ namespace std
{
public:
// Types:
+ //@{
+ /// Public typedefs
typedef _CharT char_type;
typedef _Traits traits_type;
typedef typename _Traits::int_type int_type;
typedef basic_streambuf<_CharT, _Traits> streambuf_type;
typedef basic_istream<_CharT, _Traits> istream_type;
+ //@}
private:
// 24.5.3 istreambuf_iterator
@@ -71,16 +75,21 @@ namespace std
int_type _M_c;
public:
+ /// Construct end of input stream iterator.
istreambuf_iterator() throw()
: _M_sbuf(0), _M_c(traits_type::eof()) { }
+ /// Construct start of input stream iterator.
istreambuf_iterator(istream_type& __s) throw()
: _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
+ /// Construct start of streambuf iterator.
istreambuf_iterator(streambuf_type* __s) throw()
: _M_sbuf(__s), _M_c(traits_type::eof()) { }
- // NB: The result of operator*() on an end of stream is undefined.
+ /// Return the current character pointed to by iterator. This returns
+ /// streambuf.sgetc(). It cannot be assigned. NB: The result of
+ /// operator*() on an end of stream is undefined.
char_type
operator*() const
{
@@ -93,7 +102,8 @@ namespace std
#endif
return traits_type::to_char_type(_M_get());
}
-
+
+ /// Advance the iterator. Calls streambuf.sbumpc().
istreambuf_iterator&
operator++()
{
@@ -108,6 +118,7 @@ namespace std
return *this;
}
+ /// Advance the iterator. Calls streambuf.sbumpc().
istreambuf_iterator
operator++(int)
{
@@ -129,12 +140,12 @@ namespace std
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 110 istreambuf_iterator::equal not const
// NB: there is also number 111 (NAD, Future) pending on this function.
+ /// Return true both iterators are end or both are not end.
bool
equal(const istreambuf_iterator& __b) const
{
- const int_type __eof = traits_type::eof();
- bool __thiseof = _M_at_eof();
- bool __beof = __b._M_at_eof();
+ const bool __thiseof = _M_at_eof();
+ const bool __beof = __b._M_at_eof();
return (__thiseof && __beof || (!__thiseof && !__beof));
}
@@ -175,28 +186,35 @@ namespace std
const istreambuf_iterator<_CharT, _Traits>& __b)
{ return !__a.equal(__b); }
+ /// Provides output iterator semantics for streambufs.
template<typename _CharT, typename _Traits>
class ostreambuf_iterator
: public iterator<output_iterator_tag, void, void, void, void>
{
public:
// Types:
+ //@{
+ /// Public typedefs
typedef _CharT char_type;
typedef _Traits traits_type;
typedef basic_streambuf<_CharT, _Traits> streambuf_type;
typedef basic_ostream<_CharT, _Traits> ostream_type;
+ //@}
private:
streambuf_type* _M_sbuf;
bool _M_failed;
public:
+ /// Construct output iterator from ostream.
ostreambuf_iterator(ostream_type& __s) throw ()
: _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
+ /// Construct output iterator from streambuf.
ostreambuf_iterator(streambuf_type* __s) throw ()
: _M_sbuf(__s), _M_failed(!_M_sbuf) { }
+ /// Write character to streambuf. Calls streambuf.sputc().
ostreambuf_iterator&
operator=(_CharT __c)
{
@@ -206,18 +224,22 @@ namespace std
return *this;
}
+ /// Return *this.
ostreambuf_iterator&
operator*()
{ return *this; }
+ /// Return *this.
ostreambuf_iterator&
operator++(int)
{ return *this; }
+ /// Return *this.
ostreambuf_iterator&
operator++()
{ return *this; }
+ /// Return true if previous operator=() failed.
bool
failed() const throw()
{ return _M_failed; }
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index 6342743266a..f29fc55bae7 100644
--- a/libstdc++-v3/include/bits/vector.tcc
+++ b/libstdc++-v3/include/bits/vector.tcc
@@ -1,6 +1,6 @@
// Vector implementation (out of line) -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -69,7 +69,7 @@ namespace __gnu_norm
reserve(size_type __n)
{
if (__n > this->max_size())
- __throw_length_error("vector::reserve");
+ __throw_length_error(__N("vector::reserve"));
if (this->capacity() < __n)
{
const size_type __old_size = size();
@@ -269,50 +269,6 @@ namespace __gnu_norm
}
}
- #ifdef _GLIBCXX_DEPRECATED
- template<typename _Tp, typename _Alloc>
- void
- vector<_Tp,_Alloc>::
- _M_insert_aux(iterator __position)
- {
- if (_M_finish != _M_end_of_storage)
- {
- std::_Construct(_M_finish, *(_M_finish - 1));
- ++_M_finish;
- std::copy_backward(__position, iterator(_M_finish - 2),
- iterator(_M_finish - 1));
- *__position = value_type();
- }
- else
- {
- const size_type __old_size = size();
- const size_type __len = __old_size != 0 ? 2 * __old_size : 1;
- pointer __new_start = _M_allocate(__len);
- pointer __new_finish = __new_start;
- try
- {
- __new_finish = std::uninitialized_copy(iterator(_M_start), __position,
- __new_start);
- std::_Construct(__new_finish);
- ++__new_finish;
- __new_finish = std::uninitialized_copy(__position, iterator(_M_finish),
- __new_finish);
- }
- catch(...)
- {
- std::_Destroy(__new_start,__new_finish);
- _M_deallocate(__new_start,__len);
- __throw_exception_again;
- }
- std::_Destroy(begin(), end());
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
- }
- #endif
-
template<typename _Tp, typename _Alloc>
void
vector<_Tp,_Alloc>::
diff --git a/libstdc++-v3/include/debug/bitset b/libstdc++-v3/include/debug/bitset
index 89244226dd7..1d8875aaa8a 100644
--- a/libstdc++-v3/include/debug/bitset
+++ b/libstdc++-v3/include/debug/bitset
@@ -141,7 +141,7 @@ namespace __gnu_debug_def
bitset<_Nb>&
operator|=(const bitset<_Nb>& __rhs)
{
- _M_base() != __rhs;
+ _M_base() |= __rhs;
return *this;
}
diff --git a/libstdc++-v3/include/bits/demangle.h b/libstdc++-v3/include/ext/demangle.h
index 2c240162e90..5de4f04a224 100644
--- a/libstdc++-v3/include/bits/demangle.h
+++ b/libstdc++-v3/include/ext/demangle.h
@@ -1,6 +1,6 @@
// C++ IA64 / g++ v3 demangler -*- C++ -*-
-// Copyright (C) 2003 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
// Written by Carlo Wood <carlo@alinoe.com>
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -37,6 +37,7 @@
#include <vector>
#include <string>
+#include <ext/new_allocator.h>
#ifndef _GLIBCXX_DEMANGLER_DEBUG
#define _GLIBCXX_DEMANGLER_CWDEBUG 0
@@ -58,7 +59,6 @@ namespace __gnu_cxx
{
namespace demangler
{
-
enum substitution_nt
{
type,
@@ -73,7 +73,7 @@ namespace __gnu_cxx
int M_start_pos;
substitution_nt M_type;
int M_number_of_prefixes;
-
+
substitution_st(int start_pos,
substitution_nt type,
int number_of_prefixes)
@@ -101,16 +101,16 @@ namespace __gnu_cxx
pointer_to_member = 'M'
};
- template<typename Allocator>
+ template<typename Tp, typename Allocator = __gnu_cxx::new_allocator<Tp> >
class qualifier;
- template<typename Allocator>
+ template<typename Tp, typename Allocator = __gnu_cxx::new_allocator<Tp> >
class qualifier_list;
- template<typename Allocator>
+ template<typename Tp, typename Allocator = __gnu_cxx::new_allocator<Tp> >
class session;
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
class qualifier
{
typedef typename Allocator::template rebind<char>::other
@@ -205,28 +205,28 @@ namespace __gnu_cxx
#endif
};
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
class qualifier_list
{
typedef typename Allocator::template rebind<char>::other
- char_Allocator;
+ char_Allocator;
typedef std::basic_string<char, std::char_traits<char>, char_Allocator>
string_type;
private:
mutable bool M_printing_suppressed;
- typedef qualifier<Allocator> qual;
+ typedef qualifier<Tp, Allocator> qual;
typedef typename Allocator::template rebind<qual>::other qual_Allocator;
typedef std::vector<qual, qual_Allocator> qual_vector;
qual_vector M_qualifier_starts;
- session<Allocator>& M_demangler;
+ session<Tp, Allocator>& M_demangler;
void decode_KVrA(string_type& prefix, string_type& postfix, int cvq,
typename qual_vector::
const_reverse_iterator const& iter_array) const;
public:
- qualifier_list(session<Allocator>& demangler_obj)
+ qualifier_list(session<Tp, Allocator>& demangler_obj)
: M_printing_suppressed(false), M_demangler(demangler_obj)
{ }
@@ -235,7 +235,7 @@ namespace __gnu_cxx
int start_pos,
int inside_substitution)
{ M_qualifier_starts.
- push_back(qualifier<Allocator>(start_pos,
+ push_back(qualifier<Tp, Allocator>(start_pos,
simple_qualifier, inside_substitution)); }
void
@@ -244,22 +244,22 @@ namespace __gnu_cxx
int count,
int inside_substitution)
{ M_qualifier_starts.
- push_back(qualifier<Allocator>(start_pos,
+ push_back(qualifier<Tp, Allocator>(start_pos,
cv_qualifier, &M_demangler.M_str[start_pos],
count, inside_substitution)); }
void
add_qualifier_start(param_qualifier_nt param_qualifier,
- int start_pos,
+ int start_pos,
string_type optional_type,
int inside_substitution)
{ M_qualifier_starts.
- push_back(qualifier<Allocator>(start_pos,
+ push_back(qualifier<Tp, Allocator>(start_pos,
param_qualifier, optional_type, inside_substitution)); }
void
decode_qualifiers(string_type& prefix,
- string_type& postfix,
+ string_type& postfix,
bool member_function_pointer_qualifiers) const;
bool
@@ -307,7 +307,7 @@ namespace __gnu_cxx
// Use (void) instead of (): int f(void)
static unsigned int const style_literal = 2;
- // Default behaviour: (long)13,
+ // Default behaviour: (long)13,
// (unsigned long long)19
// Use extensions 'u', 'l' and 'll' for integral
// literals (as in template arguments): 13l, 19ull
@@ -347,12 +347,13 @@ namespace __gnu_cxx
{ return false; }
};
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
class session
{
- friend class qualifier_list<Allocator>;
+ public:
+ friend class qualifier_list<Tp, Allocator>;
typedef typename Allocator::template rebind<char>::other
- char_Allocator;
+ char_Allocator;
typedef std::basic_string<char, std::char_traits<char>, char_Allocator>
string_type;
@@ -378,6 +379,9 @@ namespace __gnu_cxx
int M_template_arg_pos_offset;
std::vector<substitution_st, subst_Allocator> M_substitutions_pos;
implementation_details const& M_implementation_details;
+ typedef typename Allocator::template
+ rebind<qualifier_list<Allocator> >::other qualifier_list_Allocator;
+ qualifier_list_Allocator M_qualifier_list_alloc;
#if _GLIBCXX_DEMANGLER_CWDEBUG
bool M_inside_add_substitution;
#endif
@@ -403,7 +407,7 @@ namespace __gnu_cxx
bool
decode_type(string_type& output,
- qualifier_list<Allocator>* qualifiers = NULL)
+ qualifier_list<Tp, Allocator>* qualifiers = NULL)
{
string_type postfix;
bool res = decode_type_with_postfix(output, postfix, qualifiers);
@@ -446,7 +450,7 @@ namespace __gnu_cxx
int number_of_prefixes);
bool decode_type_with_postfix(string_type& prefix,
- string_type& postfix, qualifier_list<Allocator>* qualifiers = NULL);
+ string_type& postfix, qualifier_list<Tp, Allocator>* qualifiers = NULL);
bool decode_bare_function_type(string_type& output);
bool decode_builtin_type(string_type& output);
bool decode_call_offset(string_type& output);
@@ -462,10 +466,10 @@ namespace __gnu_cxx
bool decode_operator_name(string_type& output);
bool decode_source_name(string_type& output);
bool decode_substitution(string_type& output,
- qualifier_list<Allocator>* qualifiers = NULL);
+ qualifier_list<Tp, Allocator>* qualifiers = NULL);
bool decode_template_args(string_type& output);
bool decode_template_param(string_type& output,
- qualifier_list<Allocator>* qualifiers = NULL);
+ qualifier_list<Tp, Allocator>* qualifiers = NULL);
bool decode_unqualified_name(string_type& output);
bool decode_unscoped_name(string_type& output);
bool decode_non_negative_decimal_integer(string_type& output);
@@ -473,12 +477,12 @@ namespace __gnu_cxx
bool decode_real(string_type& output, size_t size_of_real);
};
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
#if !_GLIBCXX_DEMANGLER_CWDEBUG
inline
#endif
void
- session<Allocator>::add_substitution(int start_pos,
+ session<Tp, Allocator>::add_substitution(int start_pos,
substitution_nt sub_type,
int number_of_prefixes = 0)
{
@@ -498,7 +502,7 @@ namespace __gnu_cxx
int n = M_substitutions_pos.size() - 1;
if (n > 0)
substitution_name += (n <= 10) ? (char)(n + '0' - 1)
- : (char)(n + 'A' - 11);
+ : (char)(n + 'A' - 11);
substitution_name += '_';
string_type subst;
int saved_pos = M_pos;
@@ -569,9 +573,9 @@ namespace __gnu_cxx
// ::= 1|2|3|4|5|6|7|8|9 [<digit>+]
// <digit> ::= 0|1|2|3|4|5|6|7|8|9
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::
+ session<Tp, Allocator>::
decode_non_negative_decimal_integer(string_type& output)
{
char c = current();
@@ -595,9 +599,9 @@ namespace __gnu_cxx
// <number> ::= [n] <non-negative decimal integer>
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_number(string_type& output)
+ session<Tp, Allocator>::decode_number(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_number");
if (current() != 'n')
@@ -665,9 +669,9 @@ namespace __gnu_cxx
};
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_builtin_type(string_type& output)
+ session<Tp, Allocator>::decode_builtin_type(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_builtin_type");
char const* bt;
@@ -680,9 +684,9 @@ namespace __gnu_cxx
// <class-enum-type> ::= <name>
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_class_enum_type(string_type& output)
+ session<Tp, Allocator>::decode_class_enum_type(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_class_enum_type");
string_type nested_name_qualifiers;
@@ -708,10 +712,10 @@ namespace __gnu_cxx
// 0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
// [<seq-id>] # Base 36 number
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_substitution(string_type& output,
- qualifier_list<Allocator>* qualifiers)
+ session<Tp, Allocator>::decode_substitution(string_type& output,
+ qualifier_list<Tp, Allocator>* qualifiers)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_substitution");
unsigned int value = 0;
@@ -882,10 +886,10 @@ namespace __gnu_cxx
// <template-param> ::= T_ # first template parameter
// ::= T <parameter-2 non-negative number> _
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_template_param(string_type& output,
- qualifier_list<Allocator>* qualifiers)
+ session<Tp, Allocator>::decode_template_param(string_type& output,
+ qualifier_list<Tp, Allocator>* qualifiers)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_template_parameter");
if (current() != 'T')
@@ -925,9 +929,9 @@ namespace __gnu_cxx
_GLIBCXX_DEMANGLER_RETURN;
}
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_real(string_type& output, size_t size_of_real)
+ session<Tp, Allocator>::decode_real(string_type& output, size_t size_of_real)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_real");
@@ -985,9 +989,9 @@ namespace __gnu_cxx
_GLIBCXX_DEMANGLER_RETURN;
}
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_literal(string_type& output)
+ session<Tp, Allocator>::decode_literal(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_literal");
eat_current(); // Eat the 'L'.
@@ -1051,56 +1055,56 @@ namespace __gnu_cxx
}
// <operator-name> ::=
- // nw # new
+ // nw # new
// na # new[]
- // dl # delete
- // da # delete[]
+ // dl # delete
+ // da # delete[]
// ps # + (unary)
- // ng # - (unary)
- // ad # & (unary)
- // de # * (unary)
- // co # ~
- // pl # +
- // mi # -
- // ml # *
- // dv # /
- // rm # %
- // an # &
- // or # |
- // eo # ^
- // aS # =
- // pL # +=
- // mI # -=
- // mL # *=
- // dV # /=
- // rM # %=
- // aN # &=
- // oR # |=
- // eO # ^=
- // ls # <<
- // rs # >>
- // lS # <<=
- // rS # >>=
- // eq # ==
- // ne # !=
- // lt # <
- // gt # >
- // le # <=
- // ge # >=
- // nt # !
- // aa # &&
- // oo # ||
- // pp # ++
- // mm # --
- // cm # ,
- // pm # ->*
- // pt # ->
- // cl # ()
- // ix # []
+ // ng # - (unary)
+ // ad # & (unary)
+ // de # * (unary)
+ // co # ~
+ // pl # +
+ // mi # -
+ // ml # *
+ // dv # /
+ // rm # %
+ // an # &
+ // or # |
+ // eo # ^
+ // aS # =
+ // pL # +=
+ // mI # -=
+ // mL # *=
+ // dV # /=
+ // rM # %=
+ // aN # &=
+ // oR # |=
+ // eO # ^=
+ // ls # <<
+ // rs # >>
+ // lS # <<=
+ // rS # >>=
+ // eq # ==
+ // ne # !=
+ // lt # <
+ // gt # >
+ // le # <=
+ // ge # >=
+ // nt # !
+ // aa # &&
+ // oo # ||
+ // pp # ++
+ // mm # --
+ // cm # ,
+ // pm # ->*
+ // pt # ->
+ // cl # ()
+ // ix # []
// qu # ?
// st # sizeof (a type)
// sz # sizeof (an expression)
- // cv <type> # (cast)
+ // cv <type> # (cast)
// v <digit> <source-name> # vendor extended operator
//
// Symbol operator codes exist of two characters, we need to find a
@@ -1219,9 +1223,9 @@ namespace __gnu_cxx
{ "ix", "operator[]", unary }
};
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_operator_name(string_type& output)
+ session<Tp, Allocator>::decode_operator_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_operator_name");
@@ -1289,9 +1293,9 @@ namespace __gnu_cxx
// ::= L <type> <value float> E # floating literal
// ::= L <mangled-name> E # external name
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_expression(string_type& output)
+ session<Tp, Allocator>::decode_expression(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_expression");
if (current() == 'T')
@@ -1476,9 +1480,9 @@ namespace __gnu_cxx
// ::= L <type> <value float> E # floating literal
// ::= L <mangled-name> E # external name
// ::= X <expression> E # expression
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_template_args(string_type& output)
+ session<Tp, Allocator>::decode_template_args(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_template_args");
if (eat_current() != 'I')
@@ -1539,9 +1543,9 @@ namespace __gnu_cxx
// our <bare-function-type> slightly different from the one in
// the C++-ABI description.
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_bare_function_type(string_type& output)
+ session<Tp, Allocator>::decode_bare_function_type(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_bare_function_type");
if (M_saw_destructor)
@@ -1579,15 +1583,15 @@ namespace __gnu_cxx
// <builtin-type> # Starts with a lower case character != r.
// <function-type> # Starts with F
// <class-enum-type> # Starts with N, S, C, D, Z, a digit or a lower
- // # case character. Since a lower case character
- // # would be an operator name, that would be an
- // # error. The S is a substitution or St
- // # (::std::). A 'C' would be a constructor and
- // # thus also an error.
+ // # case character. Since a lower case character
+ // # would be an operator name, that would be an
+ // # error. The S is a substitution or St
+ // # (::std::). A 'C' would be a constructor and
+ // # thus also an error.
// <template-param> # Starts with T
// <substitution> # Starts with S
// <template-template-param> <template-args> # Starts with T or S,
- // # equivalent with the above.
+ // # equivalent with the above.
//
// <array-type> # Starts with A
// <pointer-to-member-type> # Starts with M
@@ -1596,8 +1600,8 @@ namespace __gnu_cxx
// R <type> # reference-to # Starts with R
// C <type> # complex (C 2000) # Starts with C
// G <type> # imaginary (C 2000)# Starts with G
- // U <source-name> <type> # vendor extended type qualifier,
- // # starts with U
+ // U <source-name> <type> # vendor extended type qualifier,
+ // # starts with U
//
// <template-template-param> ::= <template-param>
// ::= <substitution>
@@ -1613,9 +1617,9 @@ namespace __gnu_cxx
// <I> is the array index.
// Substitutions:
// <Q>M<C><Q2>F<R><B>E ==> R (C::*Q)B Q2 "<C>", "F<R><B>E"
- // (<R> and <B> recursive),
- // "M<C><Q2>F<R><B>E".
- // <Q>F<R><B>E ==> R (Q)B "<R>", "<B>" (<B> recursive)
+ // (<R> and <B> recursive),
+ // "M<C><Q2>F<R><B>E".
+ // <Q>F<R><B>E ==> R (Q)B "<R>", "<B>" (<B> recursive)
// and "F<R><B>E".
//
// Note that if <R> has postfix qualifiers (an array or function), then
@@ -1623,14 +1627,14 @@ namespace __gnu_cxx
// <Q>FPA<R><B>E ==> R (*(Q)B) [], where the PA added the prefix
// "(*" and the postfix ") []".
//
- // <Q>G<T> ==> imaginary T Q "<T>", "G<T>" (<T> recursive).
- // <Q>C<T> ==> complex T Q "<T>", "C<T>" (<T> recursive).
- // <Q><T> ==> T Q "<T>" (<T> recursive).
+ // <Q>G<T> ==> imaginary T Q "<T>", "G<T>" (<T> recursive).
+ // <Q>C<T> ==> complex T Q "<T>", "C<T>" (<T> recursive).
+ // <Q><T> ==> T Q "<T>" (<T> recursive).
//
// where <Q> is any of:
//
- // <Q>P ==> *Q "P..."
- // <Q>R ==> &Q "R..."
+ // <Q>P ==> *Q "P..."
+ // <Q>R ==> &Q "R..."
// <Q>[K|V|r]+ ==> [ const| volatile| restrict]+Q "KVr..."
// <Q>U<S> ==> SQ "U<S>..."
// <Q>M<C> ==> C::*Q "M<C>..." (<C> recurs.)
@@ -1641,7 +1645,7 @@ namespace __gnu_cxx
// A<I2>A<I> ==> [I2][I]
// If <Q> ends on [KVr]+, which can happen in combination with
// substitutions only, then special handling is required, see below.
- //
+ //
// A <substitution> is handled with an input position switch during which
// new substitutions are turned off. Because recursive handling of types
// (and therefore the order in which substitutions must be generated) must
@@ -1653,7 +1657,7 @@ namespace __gnu_cxx
//
// The following comment was for the demangling of g++ version 3.0.x. The
// mangling (and I believe even the ABI description) have been fixed now
- // (as of g++ version 3.1).
+ // (as of g++ version 3.1).
//
// g++ 3.0.x only:
// The ABI specifies for pointer-to-member function types the format
@@ -1696,12 +1700,12 @@ namespace __gnu_cxx
static int const cvq_A = 8; // Saw at least one A
static int const cvq_last = 16; // No remaining qualifiers.
static int const cvq_A_cnt = 32; // Bit 5 and higher represent the
- // number of A's in the series.
+ // number of A's in the series.
// In the function below, iter_array points to the first (right most)
// A in the series, if any.
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
void
- qualifier_list<Allocator>::decode_KVrA(
+ qualifier_list<Tp, Allocator>::decode_KVrA(
string_type& prefix, string_type& postfix, int cvq,
typename qual_vector::const_reverse_iterator const& iter_array) const
{
@@ -1747,9 +1751,9 @@ namespace __gnu_cxx
_GLIBCXX_DEMANGLER_RETURN3;
}
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
void
- qualifier_list<Allocator>::decode_qualifiers(
+ qualifier_list<Tp, Allocator>::decode_qualifiers(
string_type& prefix,
string_type& postfix,
bool member_function_pointer_qualifiers = false) const
@@ -1839,17 +1843,20 @@ namespace __gnu_cxx
}
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_type_with_postfix(
+ session<Tp, Allocator>::decode_type_with_postfix(
string_type& prefix, string_type& postfix,
- qualifier_list<Allocator>* qualifiers)
+ qualifier_list<Tp, Allocator>* qualifiers)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING2("decode_type");
++M_inside_type;
bool recursive_template_param_or_substitution_call;
if (!(recursive_template_param_or_substitution_call = qualifiers))
- qualifiers = new qualifier_list<Allocator>(*this);
+ {
+ qualifier_list<Allocator>* raw_qualifiers = M_qualifier_list_alloc.allocate(1);
+ qualifiers = new (raw_qualifiers) qualifier_list<Allocator>(*this);
+ }
// First eat all qualifiers.
bool failure = false;
for(;;) // So we can use 'continue' to eat the next qualifier.
@@ -1947,7 +1954,7 @@ namespace __gnu_cxx
++count;
c = next();
}
- qualifier_list<Allocator> class_type_qualifiers(*this);
+ qualifier_list<Tp, Allocator> class_type_qualifiers(*this);
if (count)
class_type_qualifiers.
add_qualifier_start(cv_qualifier, Q2_start_pos,
@@ -2011,9 +2018,9 @@ namespace __gnu_cxx
}
if (!failure)
{
- // <Q>G<T> ==> imaginary T Q
+ // <Q>G<T> ==> imaginary T Q
// substitutions: "<T>", "G<T>" (<T> recursive).
- // <Q>C<T> ==> complex T Q
+ // <Q>C<T> ==> complex T Q
// substitutions: "<T>", "C<T>" (<T> recursive).
if (current() == 'C' || current() == 'G')
{
@@ -2034,8 +2041,8 @@ namespace __gnu_cxx
bool extern_C = (next() == 'Y');
if (extern_C)
eat_current();
-
- // <Q>F<R><B>E ==> R (Q)B
+
+ // <Q>F<R><B>E ==> R (Q)B
// substitution: "<R>", "<B>" (<B> recursive) and "F<R><B>E".
// Return type.
@@ -2143,7 +2150,7 @@ namespace __gnu_cxx
case '7':
case '8':
case '9':
- // <Q><T> ==> T Q
+ // <Q><T> ==> T Q
// substitutions: "<T>" (<T> recursive).
if (!decode_class_enum_type(prefix))
{
@@ -2161,7 +2168,7 @@ namespace __gnu_cxx
qualifiers->printing_suppressed();
break;
default:
- // <Q><T> ==> T Q
+ // <Q><T> ==> T Q
// substitutions: "<T>" (<T> recursive).
if (!decode_builtin_type(prefix))
{
@@ -2181,7 +2188,10 @@ namespace __gnu_cxx
decode_type_exit:
--M_inside_type;
if (!recursive_template_param_or_substitution_call)
- delete qualifiers;
+ {
+ qualifiers->~qualifier_list<Allocator>();
+ M_qualifier_list_alloc.deallocate(qualifiers, 1);
+ }
if (failure)
_GLIBCXX_DEMANGLER_FAILURE;
_GLIBCXX_DEMANGLER_RETURN2;
@@ -2200,9 +2210,9 @@ namespace __gnu_cxx
// ::= <template-param>
// ::= <substitution>
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_nested_name(string_type& output,
+ session<Tp, Allocator>::decode_nested_name(string_type& output,
string_type& qualifiers)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_nested_name");
@@ -2246,7 +2256,7 @@ namespace __gnu_cxx
{
// substitution: "<template-prefix> <template-args>".
add_substitution(substitution_start, nested_name_prefix,
- number_of_prefixes);
+ number_of_prefixes);
}
}
else
@@ -2286,9 +2296,9 @@ namespace __gnu_cxx
// := Z <function encoding> E s [<discriminator>]
// <discriminator> := _ <non-negative number>
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_local_name(string_type& output)
+ session<Tp, Allocator>::decode_local_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_local_name");
if (current() != 'Z' || M_pos >= M_maxpos)
@@ -2318,9 +2328,9 @@ namespace __gnu_cxx
// <source-name> ::= <positive length number> <identifier>
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_source_name(string_type& output)
+ session<Tp, Allocator>::decode_source_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_source_name");
int length = current() - '0';
@@ -2348,11 +2358,11 @@ namespace __gnu_cxx
// <unqualified-name> ::= <operator-name> # Starts with lower case.
// ::= <ctor-dtor-name> # Starts with 'C' or 'D'.
- // ::= <source-name> # Starts with a digit.
+ // ::= <source-name> # Starts with a digit.
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_unqualified_name(string_type& output)
+ session<Tp, Allocator>::decode_unqualified_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_unqualified_name");
if (M_inside_template_args)
@@ -2425,9 +2435,9 @@ namespace __gnu_cxx
// <unqualified-name> # Starts not with an 'S'
// St <unqualified-name> # ::std::
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_unscoped_name(string_type& output)
+ session<Tp, Allocator>::decode_unscoped_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_unscoped_name");
if (current() == 'S')
@@ -2446,14 +2456,14 @@ namespace __gnu_cxx
// <unscoped-template-name> <template-args> # idem
// <local-name> # Starts with 'Z'
// <unscoped-name> # Starts with 'S', 'C', 'D',
- // # a digit or a lower case
- // # character.
+ // # a digit or a lower case
+ // # character.
//
// <unscoped-template-name> ::= <unscoped-name>
// ::= <substitution>
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_name(string_type& output,
+ session<Tp, Allocator>::decode_name(string_type& output,
string_type& nested_name_qualifiers)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_name");
@@ -2488,14 +2498,14 @@ namespace __gnu_cxx
// <call-offset> ::= h <nv-offset> _
// ::= v <v-offset> _
- // <nv-offset> ::= <offset number>
+ // <nv-offset> ::= <offset number>
// non-virtual base override
//
// <v-offset> ::= <offset number> _ <virtual offset number>
// virtual base override, with vcall offset
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_call_offset(string_type&
+ session<Tp, Allocator>::decode_call_offset(string_type&
#if _GLIBCXX_DEMANGLER_CWDEBUG
output
#endif
@@ -2538,19 +2548,19 @@ namespace __gnu_cxx
// TS <type> # typeinfo name (null-terminated
// byte string).
// GV <object name> # Guard variable for one-time
- // initialization of static objects in
- // a local scope.
+ // initialization of static objects in
+ // a local scope.
// T <call-offset> <base encoding># base is the nominal target function
- // of thunk.
+ // of thunk.
// Tc <call-offset> <call-offset> <base encoding> # base is the nominal
// target function of thunk; first
// call-offset is 'this' adjustment;
// second call-offset is result
// adjustment
//
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
bool
- session<Allocator>::decode_special_name(string_type& output)
+ session<Tp, Allocator>::decode_special_name(string_type& output)
{
_GLIBCXX_DEMANGLER_DOUT_ENTERING("decode_special_name");
if (current() == 'G')
@@ -2629,13 +2639,13 @@ namespace __gnu_cxx
// <encoding> ::=
// <function name> <bare-function-type> # Starts with 'C', 'D', 'N',
- // 'S', a digit or a lower case
- // character.
+ // 'S', a digit or a lower case
+ // character.
// <data name> # Idem.
// <special-name> # Starts with 'T' or 'G'.
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
int
- session<Allocator>::decode_encoding(string_type& output,
+ session<Tp, Allocator>::decode_encoding(string_type& output,
char const* in, int len, implementation_details const& id)
{
#if _GLIBCXX_DEMANGLER_CWDEBUG
@@ -2647,7 +2657,7 @@ namespace __gnu_cxx
#endif
if (len <= 0)
return INT_MIN;
- session<Allocator> demangler_session(in, len, id);
+ session<Tp, Allocator> demangler_session(in, len, id);
string_type nested_name_qualifiers;
int saved_pos;
demangler_session.store(saved_pos);
@@ -2687,11 +2697,11 @@ namespace __gnu_cxx
} // namespace demangler
// Public interface
- template<typename Allocator>
+ template<typename Tp, typename Allocator>
struct demangle
{
typedef typename Allocator::template rebind<char>::other char_Allocator;
- typedef std::basic_string<char, std::char_traits<char>, char_Allocator>
+ typedef std::basic_string<char, std::char_traits<char>, char_Allocator>
string_type;
static string_type symbol(char const* in,
demangler::implementation_details const& id);
@@ -2703,15 +2713,15 @@ namespace __gnu_cxx
//
// Demangle `input' which should be a mangled function name as for
// instance returned by nm(1).
- template<typename Allocator>
- typename demangle<Allocator>::string_type
- demangle<Allocator>::symbol(char const* input,
+ template<typename Tp, typename Allocator>
+ typename demangle<Tp, Allocator>::string_type
+ demangle<Tp, Allocator>::symbol(char const* input,
demangler::implementation_details const& id)
{
// <mangled-name> ::= _Z <encoding>
// <mangled-name> ::= _GLOBAL_ _<type>_ <disambiguation part>
// <type> can be I or D (GNU extension)
- typedef demangler::session<Allocator> demangler_type;
+ typedef demangler::session<Tp, Allocator> demangler_type;
string_type result;
bool failure = (input[0] != '_');
@@ -2754,9 +2764,9 @@ namespace __gnu_cxx
// demangle::type()
// Demangle `input' which must be a zero terminated mangled type
// name as for instance returned by std::type_info::name().
- template<typename Allocator>
- typename demangle<Allocator>::string_type
- demangle<Allocator>::type(char const* input,
+ template<typename Tp, typename Allocator>
+ typename demangle<Tp, Allocator>::string_type
+ demangle<Tp, Allocator>::type(char const* input,
demangler::implementation_details const& id)
{
std::basic_string<char, std::char_traits<char>, Allocator> result;
@@ -2764,17 +2774,16 @@ namespace __gnu_cxx
result = "(null)";
else
{
- demangler::session<Allocator> demangler_session(input, INT_MAX, id);
+ demangler::session<Tp, Allocator> demangler_session(input, INT_MAX, id);
if (!demangler_session.decode_type(result)
|| demangler_session.remaining_input_characters())
{
// Failure to demangle, return the mangled name.
- result = input;
+ result = input;
}
}
return result;
}
-
} // namespace __gnu_cxx
#endif // __DEMANGLE_H
diff --git a/libstdc++-v3/include/ext/malloc_allocator.h b/libstdc++-v3/include/ext/malloc_allocator.h
index 5545a58f8c9..ca483d3bddc 100644
--- a/libstdc++-v3/include/ext/malloc_allocator.h
+++ b/libstdc++-v3/include/ext/malloc_allocator.h
@@ -1,6 +1,6 @@
// Allocator that wraps "C" malloc -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -78,12 +78,12 @@ namespace __gnu_cxx
// NB: __n is permitted to be 0. The C++ standard says nothing
// about what the return value is when __n == 0.
pointer
- allocate(size_type __n, std::allocator<void>::const_pointer __h = 0)
+ allocate(size_type __n, std::allocator<void>::const_pointer = 0)
{ return static_cast<_Tp*>(malloc(__n * sizeof(_Tp))); }
// __p is not permitted to be a null pointer.
void
- deallocate(pointer __p, size_type __n)
+ deallocate(pointer __p, size_type)
{ free(static_cast<void*>(__p)); }
size_type
diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h
index b4498feddf3..096a6303330 100644
--- a/libstdc++-v3/include/ext/mt_allocator.h
+++ b/libstdc++-v3/include/ext/mt_allocator.h
@@ -1,6 +1,6 @@
// MT-optimized allocator -*- C++ -*-
-// Copyright (C) 2003 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -35,6 +35,7 @@
#ifndef _MT_ALLOCATOR_H
#define _MT_ALLOCATOR_H 1
+#include <bits/c++config.h>
#include <new>
#include <memory>
#include <cstdlib>
@@ -225,7 +226,7 @@ namespace __gnu_cxx
public:
pointer
- allocate(size_t __n, std::allocator<void>::const_pointer __h = 0)
+ allocate(size_t __n, std::allocator<void>::const_pointer = 0)
{
/*
* Requests larger than _S_max_bytes are handled by
diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h
index 6c8ca6349ed..a8557f87c42 100644
--- a/libstdc++-v3/include/ext/new_allocator.h
+++ b/libstdc++-v3/include/ext/new_allocator.h
@@ -1,6 +1,6 @@
// Allocator that wraps operator new -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -77,12 +77,12 @@ namespace __gnu_cxx
// NB: __n is permitted to be 0. The C++ standard says nothing
// about what the return value is when __n == 0.
pointer
- allocate(size_type __n, allocator<void>::const_pointer __h = 0)
+ allocate(size_type __n, allocator<void>::const_pointer = 0)
{ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); }
// __p is not permitted to be a null pointer.
void
- deallocate(pointer __p, size_type __n)
+ deallocate(pointer __p, size_type)
{ ::operator delete(__p); }
size_type
diff --git a/libstdc++-v3/include/ext/pool_allocator.h b/libstdc++-v3/include/ext/pool_allocator.h
index 02303de31fd..0ebda34ba58 100644
--- a/libstdc++-v3/include/ext/pool_allocator.h
+++ b/libstdc++-v3/include/ext/pool_allocator.h
@@ -47,6 +47,7 @@
#ifndef _POOL_ALLOCATOR_H
#define _POOL_ALLOCATOR_H 1
+#include <bits/c++config.h>
#include <new>
#include <bits/functexcept.h>
#include <bits/stl_threads.h>
diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
index b8357ee2d45..0c92de4cc4f 100644
--- a/libstdc++-v3/include/ext/ropeimpl.h
+++ b/libstdc++-v3/include/ext/ropeimpl.h
@@ -1121,7 +1121,7 @@ rope<_CharT,_Alloc>::_S_balance(_RopeRep* __r)
}
if (__result->_M_depth > _RopeRep::_S_max_rope_depth)
- __throw_length_error("rope::_S_balance");
+ __throw_length_error(__N("rope::_S_balance"));
return(__result);
}
diff --git a/libstdc++-v3/include/std/std_bitset.h b/libstdc++-v3/include/std/std_bitset.h
index e6498973e83..04249eca4f8 100644
--- a/libstdc++-v3/include/std/std_bitset.h
+++ b/libstdc++-v3/include/std/std_bitset.h
@@ -709,7 +709,8 @@ namespace __gnu_norm
size_t __position = 0) : _Base()
{
if (__position > __s.size())
- __throw_out_of_range("bitset::bitset initial position not valid");
+ __throw_out_of_range(__N("bitset::bitset initial position "
+ "not valid"));
_M_copy_from_string(__s, __position,
basic_string<_CharT, _Traits, _Alloc>::npos);
}
@@ -728,7 +729,8 @@ namespace __gnu_norm
size_t __position, size_t __n) : _Base()
{
if (__position > __s.size())
- __throw_out_of_range("bitset::bitset initial position not valid");
+ __throw_out_of_range(__N("bitset::bitset initial position "
+ "not valid"));
_M_copy_from_string(__s, __position, __n);
}
@@ -1070,7 +1072,8 @@ namespace __gnu_norm
template<size_t _Nb>
template<class _CharT, class _Traits, class _Alloc>
void
- bitset<_Nb>::_M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, size_t __pos, size_t __n)
+ bitset<_Nb>::_M_copy_from_string(const basic_string<_CharT, _Traits,
+ _Alloc>& __s, size_t __pos, size_t __n)
{
reset();
const size_t __nbits = std::min(_Nb, std::min(__n, __s.size() - __pos));
@@ -1084,7 +1087,7 @@ namespace __gnu_norm
set(__i);
break;
default:
- __throw_invalid_argument("bitset::_M_copy_from_string");
+ __throw_invalid_argument(__N("bitset::_M_copy_from_string"));
}
}
}
@@ -1092,7 +1095,8 @@ namespace __gnu_norm
template<size_t _Nb>
template<class _CharT, class _Traits, class _Alloc>
void
- bitset<_Nb>::_M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const
+ bitset<_Nb>::_M_copy_to_string(basic_string<_CharT, _Traits,
+ _Alloc>& __s) const
{
__s.assign(_Nb, '0');
for (size_t __i = 0; __i < _Nb; ++__i)
diff --git a/libstdc++-v3/include/std/std_complex.h b/libstdc++-v3/include/std/std_complex.h
index 4fe80a55769..25c657f2701 100644
--- a/libstdc++-v3/include/std/std_complex.h
+++ b/libstdc++-v3/include/std/std_complex.h
@@ -58,67 +58,113 @@ namespace std
template<> class complex<double>;
template<> class complex<long double>;
+ /// Return magnitude of @a z.
template<typename _Tp> _Tp abs(const complex<_Tp>&);
+ /// Return phase angle of @a z.
template<typename _Tp> _Tp arg(const complex<_Tp>&);
+ /// Return @a z magnitude squared.
template<typename _Tp> _Tp norm(const complex<_Tp>&);
+ /// Return complex conjugate of @a z.
template<typename _Tp> complex<_Tp> conj(const complex<_Tp>&);
+ /// Return complex with magnitude @a rho and angle @a theta.
template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = 0);
// Transcendentals:
+ /// Return complex cosine of @a z.
template<typename _Tp> complex<_Tp> cos(const complex<_Tp>&);
+ /// Return complex hyperbolic cosine of @a z.
template<typename _Tp> complex<_Tp> cosh(const complex<_Tp>&);
+ /// Return complex base e exponential of @a z.
template<typename _Tp> complex<_Tp> exp(const complex<_Tp>&);
+ /// Return complex natural logarithm of @a z.
template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
+ /// Return complex base 10 logarithm of @a z.
template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
+ /// Return complex cosine of @a z.
template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
+ /// Return @a x to the @a y'th power.
template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
+ /// Return @a x to the @a y'th power.
template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&,
const complex<_Tp>&);
+ /// Return @a x to the @a y'th power.
template<typename _Tp> complex<_Tp> pow(const _Tp&, const complex<_Tp>&);
+ /// Return complex sine of @a z.
template<typename _Tp> complex<_Tp> sin(const complex<_Tp>&);
+ /// Return complex hyperbolic sine of @a z.
template<typename _Tp> complex<_Tp> sinh(const complex<_Tp>&);
+ /// Return complex square root of @a z.
template<typename _Tp> complex<_Tp> sqrt(const complex<_Tp>&);
+ /// Return complex tangent of @a z.
template<typename _Tp> complex<_Tp> tan(const complex<_Tp>&);
+ /// Return complex hyperbolic tangent of @a z.
template<typename _Tp> complex<_Tp> tanh(const complex<_Tp>&);
+ //@}
// 26.2.2 Primary template class complex
+ /**
+ * Template to represent complex numbers.
+ *
+ * Specializations for float, double, and long double are part of the
+ * library. Results with any other type are not guaranteed.
+ *
+ * @param Tp Type of real and imaginary values.
+ */
template<typename _Tp>
class complex
{
public:
+ /// Value typedef.
typedef _Tp value_type;
+ /// Default constructor. First parameter is x, second parameter is y.
+ /// Unspecified parameters default to 0.
complex(const _Tp& = _Tp(), const _Tp & = _Tp());
- // Let's the compiler synthetize the copy constructor
+ // Lets the compiler synthesize the copy constructor
// complex (const complex<_Tp>&);
+ /// Copy constructor.
template<typename _Up>
complex(const complex<_Up>&);
+ /// Return real part of complex number.
_Tp& real();
+ /// Return real part of complex number.
const _Tp& real() const;
+ /// Return imaginary part of complex number.
_Tp& imag();
+ /// Return imaginary part of complex number.
const _Tp& imag() const;
+ /// Assign this complex number to scalar @a t.
complex<_Tp>& operator=(const _Tp&);
+ /// Add @a t to this complex number.
complex<_Tp>& operator+=(const _Tp&);
+ /// Subtract @a t from this complex number.
complex<_Tp>& operator-=(const _Tp&);
+ /// Multiply this complex number by @a t.
complex<_Tp>& operator*=(const _Tp&);
+ /// Divide this complex number by @a t.
complex<_Tp>& operator/=(const _Tp&);
- // Let's the compiler synthetize the
+ // Lets the compiler synthesize the
// copy and assignment operator
// complex<_Tp>& operator= (const complex<_Tp>&);
+ /// Assign this complex number to complex @a z.
template<typename _Up>
complex<_Tp>& operator=(const complex<_Up>&);
+ /// Add @a z to this complex number.
template<typename _Up>
complex<_Tp>& operator+=(const complex<_Up>&);
+ /// Subtract @a z from this complex number.
template<typename _Up>
complex<_Tp>& operator-=(const complex<_Up>&);
+ /// Multiply this complex number by @a z.
template<typename _Up>
complex<_Tp>& operator*=(const complex<_Up>&);
+ /// Divide this complex number by @a z.
template<typename _Up>
complex<_Tp>& operator/=(const complex<_Up>&);
@@ -261,6 +307,8 @@ namespace std
}
// Operators:
+ //@{
+ /// Return new complex value @a x plus @a y.
template<typename _Tp>
inline complex<_Tp>
operator+(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -287,7 +335,10 @@ namespace std
__r.real() += __x;
return __r;
}
+ //@}
+ //@{
+ /// Return new complex value @a x minus @a y.
template<typename _Tp>
inline complex<_Tp>
operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -314,7 +365,10 @@ namespace std
__r.real() -= __y.real();
return __r;
}
+ //@}
+ //@{
+ /// Return new complex value @a x times @a y.
template<typename _Tp>
inline complex<_Tp>
operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -341,7 +395,10 @@ namespace std
__r *= __x;
return __r;
}
+ //@}
+ //@{
+ /// Return new complex value @a x divided by @a y.
template<typename _Tp>
inline complex<_Tp>
operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -368,17 +425,22 @@ namespace std
__r /= __y;
return __r;
}
+ //@}
+ /// Return @a x.
template<typename _Tp>
inline complex<_Tp>
operator+(const complex<_Tp>& __x)
{ return __x; }
+ /// Return complex negation of @a x.
template<typename _Tp>
inline complex<_Tp>
operator-(const complex<_Tp>& __x)
{ return complex<_Tp>(-__x.real(), -__x.imag()); }
+ //@{
+ /// Return true if @a x is equal to @a y.
template<typename _Tp>
inline bool
operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -393,7 +455,10 @@ namespace std
inline bool
operator==(const _Tp& __x, const complex<_Tp>& __y)
{ return __x == __y.real() && _Tp() == __y.imag(); }
+ //@}
+ //@{
+ /// Return false if @a x is equal to @a y.
template<typename _Tp>
inline bool
operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y)
@@ -408,7 +473,9 @@ namespace std
inline bool
operator!=(const _Tp& __x, const complex<_Tp>& __y)
{ return __x != __y.real() || _Tp() != __y.imag(); }
+ //@}
+ /// Extraction operator for complex values.
template<typename _Tp, typename _CharT, class _Traits>
basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)
@@ -441,6 +508,7 @@ namespace std
return __is;
}
+ /// Insertion operator for complex values.
template<typename _Tp, typename _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h
index f22b503d6c6..a3a53ba73f6 100644
--- a/libstdc++-v3/include/std/std_istream.h
+++ b/libstdc++-v3/include/std/std_istream.h
@@ -128,13 +128,13 @@ namespace std
* functions in constructs like "std::cin >> std::ws". For more
* information, see the iomanip header.
*/
- __istream_type&
+ inline __istream_type&
operator>>(__istream_type& (*__pf)(__istream_type&));
- __istream_type&
+ inline __istream_type&
operator>>(__ios_type& (*__pf)(__ios_type&));
- __istream_type&
+ inline __istream_type&
operator>>(ios_base& (*__pf)(ios_base&));
//@}
diff --git a/libstdc++-v3/include/std/std_ostream.h b/libstdc++-v3/include/std/std_ostream.h
index 27669549ce0..e3590f23515 100644
--- a/libstdc++-v3/include/std/std_ostream.h
+++ b/libstdc++-v3/include/std/std_ostream.h
@@ -127,13 +127,13 @@ namespace std
* functions in constructs like "std::cout << std::endl". For more
* information, see the iomanip header.
*/
- __ostream_type&
+ inline __ostream_type&
operator<<(__ostream_type& (*__pf)(__ostream_type&));
- __ostream_type&
+ inline __ostream_type&
operator<<(__ios_type& (*__pf)(__ios_type&));
- __ostream_type&
+ inline __ostream_type&
operator<<(ios_base& (*__pf) (ios_base&));
//@}
diff --git a/libstdc++-v3/include/std/std_valarray.h b/libstdc++-v3/include/std/std_valarray.h
index 7dac89dadb0..1b078437452 100644
--- a/libstdc++-v3/include/std/std_valarray.h
+++ b/libstdc++-v3/include/std/std_valarray.h
@@ -1,6 +1,6 @@
// The template and inlines for the -*- C++ -*- valarray class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -95,6 +95,17 @@ namespace std
namespace std
{
+ /**
+ * @brief Smart array designed to support numeric processing.
+ *
+ * A valarray is an array that provides constraints intended to allow for
+ * effective optimization of numeric array processing by reducing the
+ * aliasing that can result from pointer representations. It represents a
+ * one-dimensional array from which different multidimensional subsets can
+ * be accessed and modified.
+ *
+ * @param Tp Type of object in the array.
+ */
template<class _Tp>
class valarray
{
@@ -108,25 +119,95 @@ namespace std
typedef _Tp value_type;
// _lib.valarray.cons_ construct/destroy:
+ /// Construct an empty array.
valarray();
+
+ /// Construct an array with @a n elements.
explicit valarray(size_t);
+
+ /// Construct an array with @a n elements initialized to @a t.
valarray(const _Tp&, size_t);
+
+ /// Construct an array initialized to the first @a n elements of @a t.
valarray(const _Tp* __restrict__, size_t);
+
+ /// Copy constructor.
valarray(const valarray&);
+
+ /// Construct an array with the same size and values in @a sa.
valarray(const slice_array<_Tp>&);
+
+ /// Construct an array with the same size and values in @a ga.
valarray(const gslice_array<_Tp>&);
+
+ /// Construct an array with the same size and values in @a ma.
valarray(const mask_array<_Tp>&);
+
+ /// Construct an array with the same size and values in @a ia.
valarray(const indirect_array<_Tp>&);
+
template<class _Dom>
valarray(const _Expr<_Dom,_Tp>& __e);
~valarray();
// _lib.valarray.assign_ assignment:
+ /**
+ * @brief Assign elements to an array.
+ *
+ * Assign elements of array to values in @a v. Results are undefined
+ * if @a v is not the same size as this array.
+ *
+ * @param v Valarray to get values from.
+ */
valarray<_Tp>& operator=(const valarray<_Tp>&);
+
+ /**
+ * @brief Assign elements to a value.
+ *
+ * Assign all elements of array to @a t.
+ *
+ * @param t Value for elements.
+ */
valarray<_Tp>& operator=(const _Tp&);
+
+ /**
+ * @brief Assign elements to an array subset.
+ *
+ * Assign elements of array to values in @a sa. Results are undefined
+ * if @a sa is not the same size as this array.
+ *
+ * @param sa Array slice to get values from.
+ */
valarray<_Tp>& operator=(const slice_array<_Tp>&);
+
+ /**
+ * @brief Assign elements to an array subset.
+ *
+ * Assign elements of array to values in @a ga. Results are undefined
+ * if @a ga is not the same size as this array.
+ *
+ * @param ga Array slice to get values from.
+ */
valarray<_Tp>& operator=(const gslice_array<_Tp>&);
+
+ /**
+ * @brief Assign elements to an array subset.
+ *
+ * Assign elements of array to values in @a ma. Results are undefined
+ * if @a ma is not the same size as this array.
+ *
+ * @param ma Array slice to get values from.
+ */
valarray<_Tp>& operator=(const mask_array<_Tp>&);
+
+ /**
+ * @brief Assign elements to an array subset.
+ *
+ * Assign elements of array to values in @a ia. Results are undefined
+ * if @a ia is not the same size as this array.
+ *
+ * @param ia Array slice to get values from.
+ */
valarray<_Tp>& operator=(const indirect_array<_Tp>&);
template<class _Dom> valarray<_Tp>&
@@ -134,45 +215,196 @@ namespace std
// _lib.valarray.access_ element access:
// XXX: LWG to be resolved.
+ /**
+ * Return a reference to the i'th array element.
+ *
+ * The C++ spec defines the const version to return Tp instead of
+ * the more useful const Tp&. This issue is being reviewed in DR389.
+ *
+ * @param i Index of element to return.
+ * @return Reference to the i'th element.
+ */
const _Tp& operator[](size_t) const;
+
+ /// Return a reference to the i'th array element.
_Tp& operator[](size_t);
+
// _lib.valarray.sub_ subset operations:
+ /**
+ * @brief Return an array subset.
+ *
+ * Returns a new valarray containing the elements of the array
+ * indicated by the slice argument. The new valarray is the size of
+ * the input slice. @see slice.
+ *
+ * @param s The source slice.
+ * @return New valarray containing elements in @a s.
+ */
_Expr<_SClos<_ValArray,_Tp>, _Tp> operator[](slice) const;
+
+ /**
+ * @brief Return a reference to an array subset.
+ *
+ * Returns a new valarray containing the elements of the array
+ * indicated by the slice argument. The new valarray is the size of
+ * the input slice. @see slice.
+ *
+ * @param s The source slice.
+ * @return New valarray containing elements in @a s.
+ */
slice_array<_Tp> operator[](slice);
+
+ /**
+ * @brief Return an array subset.
+ *
+ * Returns a slice_array referencing the elements of the array
+ * indicated by the slice argument. @see gslice.
+ *
+ * @param s The source slice.
+ * @return Slice_array referencing elements indicated by @a s.
+ */
_Expr<_GClos<_ValArray,_Tp>, _Tp> operator[](const gslice&) const;
+
+ /**
+ * @brief Return a reference to an array subset.
+ *
+ * Returns a new valarray containing the elements of the array
+ * indicated by the gslice argument. The new valarray is
+ * the size of the input gslice. @see gslice.
+ *
+ * @param s The source gslice.
+ * @return New valarray containing elements in @a s.
+ */
gslice_array<_Tp> operator[](const gslice&);
+
+ /**
+ * @brief Return an array subset.
+ *
+ * Returns a new valarray containing the elements of the array
+ * indicated by the argument. The input is a valarray of bool which
+ * represents a bitmask indicating which elements should be copied into
+ * the new valarray. Each element of the array is added to the return
+ * valarray if the corresponding element of the argument is true.
+ *
+ * @param m The valarray bitmask.
+ * @return New valarray containing elements indicated by @a m.
+ */
valarray<_Tp> operator[](const valarray<bool>&) const;
+
+ /**
+ * @brief Return a reference to an array subset.
+ *
+ * Returns a new mask_array referencing the elements of the array
+ * indicated by the argument. The input is a valarray of bool which
+ * represents a bitmask indicating which elements are part of the
+ * subset. Elements of the array are part of the subset if the
+ * corresponding element of the argument is true.
+ *
+ * @param m The valarray bitmask.
+ * @return New valarray containing elements indicated by @a m.
+ */
mask_array<_Tp> operator[](const valarray<bool>&);
+
+ /**
+ * @brief Return an array subset.
+ *
+ * Returns a new valarray containing the elements of the array
+ * indicated by the argument. The elements in the argument are
+ * interpreted as the indices of elements of this valarray to copy to
+ * the return valarray.
+ *
+ * @param i The valarray element index list.
+ * @return New valarray containing elements in @a s.
+ */
_Expr<_IClos<_ValArray, _Tp>, _Tp>
operator[](const valarray<size_t>&) const;
+
+ /**
+ * @brief Return a reference to an array subset.
+ *
+ * Returns an indirect_array referencing the elements of the array
+ * indicated by the argument. The elements in the argument are
+ * interpreted as the indices of elements of this valarray to include
+ * in the subset. The returned indirect_array refers to these
+ * elements.
+ *
+ * @param i The valarray element index list.
+ * @return Indirect_array referencing elements in @a i.
+ */
indirect_array<_Tp> operator[](const valarray<size_t>&);
// _lib.valarray.unary_ unary operators:
+ /// Return a new valarray by applying unary + to each element.
typename _UnaryOp<__unary_plus>::_Rt operator+() const;
+
+ /// Return a new valarray by applying unary - to each element.
typename _UnaryOp<__negate>::_Rt operator-() const;
+
+ /// Return a new valarray by applying unary ~ to each element.
typename _UnaryOp<__bitwise_not>::_Rt operator~() const;
+
+ /// Return a new valarray by applying unary ! to each element.
typename _UnaryOp<__logical_not>::_Rt operator!() const;
// _lib.valarray.cassign_ computed assignment:
+ /// Multiply each element of array by @a t.
valarray<_Tp>& operator*=(const _Tp&);
+
+ /// Divide each element of array by @a t.
valarray<_Tp>& operator/=(const _Tp&);
+
+ /// Set each element e of array to e % @a t.
valarray<_Tp>& operator%=(const _Tp&);
+
+ /// Add @a t to each element of array.
valarray<_Tp>& operator+=(const _Tp&);
+
+ /// Subtract @a t to each element of array.
valarray<_Tp>& operator-=(const _Tp&);
+
+ /// Set each element e of array to e ^ @a t.
valarray<_Tp>& operator^=(const _Tp&);
+
+ /// Set each element e of array to e & @a t.
valarray<_Tp>& operator&=(const _Tp&);
+
+ /// Set each element e of array to e | @a t.
valarray<_Tp>& operator|=(const _Tp&);
+
+ /// Left shift each element e of array by @a t bits.
valarray<_Tp>& operator<<=(const _Tp&);
+
+ /// Right shift each element e of array by @a t bits.
valarray<_Tp>& operator>>=(const _Tp&);
+
+ /// Multiply elements of array by corresponding elements of @a v.
valarray<_Tp>& operator*=(const valarray<_Tp>&);
+
+ /// Divide elements of array by corresponding elements of @a v.
valarray<_Tp>& operator/=(const valarray<_Tp>&);
+
+ /// Modulo elements of array by corresponding elements of @a v.
valarray<_Tp>& operator%=(const valarray<_Tp>&);
+
+ /// Add corresponding elements of @a v to elements of array.
valarray<_Tp>& operator+=(const valarray<_Tp>&);
+
+ /// Subtract corresponding elements of @a v from elements of array.
valarray<_Tp>& operator-=(const valarray<_Tp>&);
+
+ /// Logical xor corresponding elements of @a v with elements of array.
valarray<_Tp>& operator^=(const valarray<_Tp>&);
+
+ /// Logical or corresponding elements of @a v with elements of array.
valarray<_Tp>& operator|=(const valarray<_Tp>&);
+
+ /// Logical and corresponding elements of @a v with elements of array.
valarray<_Tp>& operator&=(const valarray<_Tp>&);
+
+ /// Left shift elements of array by corresponding elements of @a v.
valarray<_Tp>& operator<<=(const valarray<_Tp>&);
+
+ /// Right shift elements of array by corresponding elements of @a v.
valarray<_Tp>& operator>>=(const valarray<_Tp>&);
template<class _Dom>
@@ -198,18 +430,93 @@ namespace std
// _lib.valarray.members_ member functions:
+ /// Return the number of elements in array.
size_t size() const;
- _Tp sum() const;
+
+ /**
+ * @brief Return the sum of all elements in the array.
+ *
+ * Accumulates the sum of all elements into a Tp using +=. The order
+ * of adding the elements is unspecified.
+ */
+ _Tp sum() const;
+
+ /// Return the minimum element using operator<().
_Tp min() const;
+
+ /// Return the maximum element using operator<().
_Tp max() const;
// // FIXME: Extension
// _Tp product () const;
+ /**
+ * @brief Return a shifted array.
+ *
+ * A new valarray is constructed as a copy of this array with elements
+ * in shifted positions. For an element with index i, the new position
+ * is i - n. The new valarray is the same size as the current one.
+ * New elements without a value are set to 0. Elements whos new
+ * position is outside the bounds of the array are discarded.
+ *
+ * Positive arguments shift toward index 0, discarding elements [0, n).
+ * Negative arguments discard elements from the top of the array.
+ *
+ * @param n Number of element positions to shift.
+ * @return New valarray with elements in shifted positions.
+ */
valarray<_Tp> shift (int) const;
+
+ /**
+ * @brief Return a rotated array.
+ *
+ * A new valarray is constructed as a copy of this array with elements
+ * in shifted positions. For an element with index i, the new position
+ * is (i - n) % size(). The new valarray is the same size as the
+ * current one. Elements that are shifted beyond the array bounds are
+ * shifted into the other end of the array. No elements are lost.
+ *
+ * Positive arguments shift toward index 0, wrapping around the top.
+ * Negative arguments shift towards the top, wrapping around to 0.
+ *
+ * @param n Number of element positions to rotate.
+ * @return New valarray with elements in shifted positions.
+ */
valarray<_Tp> cshift(int) const;
+
+ /**
+ * @brief Apply a function to the array.
+ *
+ * Returns a new valarray with elements assigned to the result of
+ * applying func to the corresponding element of this array. The new
+ * array is the same size as this one.
+ *
+ * @param func Function of Tp returning Tp to apply.
+ * @return New valarray with transformed elements.
+ */
_Expr<_ValFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(_Tp)) const;
+
+ /**
+ * @brief Apply a function to the array.
+ *
+ * Returns a new valarray with elements assigned to the result of
+ * applying func to the corresponding element of this array. The new
+ * array is the same size as this one.
+ *
+ * @param func Function of const Tp& returning Tp to apply.
+ * @return New valarray with transformed elements.
+ */
_Expr<_RefFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(const _Tp&)) const;
+
+ /**
+ * @brief Resize array.
+ *
+ * Resize this array to be @a size and set all elements to @a c. All
+ * references and iterators are invalidated.
+ *
+ * @param size New array size.
+ * @param c New value for all elements.
+ */
void resize(size_t __size, _Tp __c = _Tp());
private:
diff --git a/libstdc++-v3/libmath/mathconf.h b/libstdc++-v3/libmath/mathconf.h
index 087631a5687..cd8c92ad89f 100644
--- a/libstdc++-v3/libmath/mathconf.h
+++ b/libstdc++-v3/libmath/mathconf.h
@@ -79,11 +79,6 @@ typedef int Int64_t __attribute ((mode (DI)));
# include <nan.h>
#endif
-#ifndef NAN
-# define NAN (nan())
-double nan (void);
-#endif
-
#ifdef HAVE_IEEEFP_H
# include <ieeefp.h>
#endif
diff --git a/libstdc++-v3/libmath/nan.c b/libstdc++-v3/libmath/nan.c
deleted file mode 100644
index 1814b5dd941..00000000000
--- a/libstdc++-v3/libmath/nan.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Return quiet nan. */
-
-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-
- This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA.
-
- As a special exception, you may use this file as part of a free software
- library without restriction. Specifically, if other files instantiate
- templates or use macros or inline functions from this file, or you compile
- this file and link it with other files to produce an executable, this
- file does not by itself cause the resulting executable to be covered by
- the GNU General Public License. This exception does not however
- invalidate any other reasons why the executable file might be covered by
- the GNU General Public License. */
-
-
-#include <stdlib.h>
-#include <string.h>
-
-double
-nan ()
-{ return strtod ("nan", NULL); }
diff --git a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am
index 50727402c13..5550686728a 100644
--- a/libstdc++-v3/libsupc++/Makefile.am
+++ b/libstdc++-v3/libsupc++/Makefile.am
@@ -1,6 +1,6 @@
## Makefile for the GNU C++ Support library.
##
-## Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+## Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
##
## Process this file with automake to produce Makefile.in.
##
@@ -34,6 +34,9 @@ noinst_LTLIBRARIES = libsupc++convenience.la
headers = \
exception new typeinfo cxxabi.h exception_defines.h
+c_sources = \
+ cp-demangle.c
+
sources = \
del_op.cc \
del_opnt.cc \
@@ -62,8 +65,8 @@ sources = \
vec.cc \
vterminate.cc
-libsupc___la_SOURCES = $(sources)
-libsupc__convenience_la_SOURCES = $(sources)
+libsupc___la_SOURCES = $(sources) $(c_sources)
+libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
glibcxxinstalldir = $(gxx_include_dir)
glibcxxinstall_HEADERS = $(headers)
@@ -83,6 +86,29 @@ AM_CXXFLAGS = \
AM_MAKEFLAGS = \
"gxx_include_dir=$(gxx_include_dir)"
+
+# Use special rules for pulling things out of libiberty. These
+# objects should be compiled with the "C" compiler, not the C++
+# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
+C_COMPILE = \
+ $(CC) $(DEFS) $(C_INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+# LTCOMPILE is copied from LTCXXCOMPILE below.
+LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared --mode=compile $(CC) \
+ $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+cp-demangle.c:
+ rm -f $@
+ $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
+cp-demangle.lo: cp-demangle.c
+ $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+cp-demangle.o: cp-demangle.c
+ $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+
+
# libstdc++ libtool notes
# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index f2ef55ee83b..60c3543f96b 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@@ -227,6 +227,10 @@ headers = \
exception new typeinfo cxxabi.h exception_defines.h
+c_sources = \
+ cp-demangle.c
+
+
sources = \
del_op.cc \
del_opnt.cc \
@@ -256,8 +260,8 @@ sources = \
vterminate.cc
-libsupc___la_SOURCES = $(sources)
-libsupc__convenience_la_SOURCES = $(sources)
+libsupc___la_SOURCES = $(sources) $(c_sources)
+libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
glibcxxinstalldir = $(gxx_include_dir)
glibcxxinstall_HEADERS = $(headers)
@@ -279,6 +283,21 @@ AM_MAKEFLAGS = \
"gxx_include_dir=$(gxx_include_dir)"
+# Use special rules for pulling things out of libiberty. These
+# objects should be compiled with the "C" compiler, not the C++
+# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
+C_COMPILE = \
+ $(CC) $(DEFS) $(C_INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
+# LTCOMPILE is copied from LTCXXCOMPILE below.
+LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared --mode=compile $(CC) \
+ $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
# libstdc++ libtool notes
# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
@@ -329,16 +348,22 @@ am__objects_1 = del_op.lo del_opnt.lo del_opv.lo del_opvnt.lo \
eh_terminate.lo eh_throw.lo eh_type.lo eh_unex_handler.lo \
guard.lo new_handler.lo new_op.lo new_opnt.lo new_opv.lo \
new_opvnt.lo pure.lo tinfo.lo tinfo2.lo vec.lo vterminate.lo
-am_libsupc___la_OBJECTS = $(am__objects_1)
+am__objects_2 = cp-demangle.lo
+am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
libsupc__convenience_la_LDFLAGS =
libsupc__convenience_la_LIBADD =
-am_libsupc__convenience_la_OBJECTS = $(am__objects_1)
+am_libsupc__convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
libsupc__convenience_la_OBJECTS = $(am_libsupc__convenience_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp =
am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
@@ -353,7 +378,7 @@ SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
all: all-am
.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
+.SUFFIXES: .c .cc .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/fragment.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign libsupc++/Makefile
@@ -407,6 +432,15 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+.c.o:
+ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
.cc.o:
$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
@@ -530,7 +564,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -606,6 +640,14 @@ uninstall-am: uninstall-glibcxxinstallHEADERS uninstall-info-am \
uninstall-info-am uninstall-toolexeclibLTLIBRARIES
+cp-demangle.c:
+ rm -f $@
+ $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
+cp-demangle.lo: cp-demangle.c
+ $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+cp-demangle.o: cp-demangle.c
+ $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+
# We have to have rules modified from the default to counteract SUN make
# prepending each of $(glibcxxinstall_HEADERS) with VPATH below.
install-glibcxxinstallHEADERS: $(glibcxxinstall_HEADERS)
diff --git a/libstdc++-v3/libsupc++/eh_catch.cc b/libstdc++-v3/libsupc++/eh_catch.cc
index f8b7137e57e..0e186605f09 100644
--- a/libstdc++-v3/libsupc++/eh_catch.cc
+++ b/libstdc++-v3/libsupc++/eh_catch.cc
@@ -1,5 +1,5 @@
// -*- C++ -*- Exception handling routines for catching.
-// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
@@ -65,10 +65,12 @@ __cxa_begin_catch (void *exc_obj_in)
// This exception was rethrown from an immediately enclosing region.
count = -count + 1;
else
- count += 1;
+ {
+ count += 1;
+ globals->uncaughtExceptions -= 1;
+ }
header->handlerCount = count;
- globals->uncaughtExceptions -= 1;
if (header != prev)
{
header->nextException = prev;
diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index 9cf96f4b37d..4d5ae57b8d2 100644
--- a/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/libstdc++-v3/libsupc++/eh_personality.cc
@@ -443,8 +443,10 @@ PERSONALITY_FUNCTION (int version,
}
}
+ /* For targets with pointers smaller than the word size, we must extend the
+ pointer, and this extension is target dependent. */
_Unwind_SetGR (context, __builtin_eh_return_data_regno (0),
- (_Unwind_Ptr) &xh->unwindHeader);
+ __builtin_extend_pointer (&xh->unwindHeader));
_Unwind_SetGR (context, __builtin_eh_return_data_regno (1),
handler_switch_value);
_Unwind_SetIP (context, landing_pad);
diff --git a/libstdc++-v3/libsupc++/vterminate.cc b/libstdc++-v3/libsupc++/vterminate.cc
index 38f6f617868..b53e9cea5ab 100644
--- a/libstdc++-v3/libsupc++/vterminate.cc
+++ b/libstdc++-v3/libsupc++/vterminate.cc
@@ -1,6 +1,6 @@
// Verbose terminate_handler -*- C++ -*-
-// Copyright (C) 2001, 2002 Free Software Foundation
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -32,66 +32,66 @@
#include <exception>
#include <exception_defines.h>
#include <cxxabi.h>
-
-#ifdef _GLIBCXX_HAVE_UNISTD_H
-# include <unistd.h>
-# define writestr(str) write(2, str, __builtin_strlen(str))
-#else
# include <cstdio>
-# define writestr(str) std::fputs(str, stderr)
-#endif
using namespace std;
using namespace abi;
namespace __gnu_cxx
{
- /* A replacement for the standard terminate_handler which prints
- more information about the terminating exception (if any) on
- stderr. */
+ // A replacement for the standard terminate_handler which prints
+ // more information about the terminating exception (if any) on
+ // stderr.
void __verbose_terminate_handler()
{
+ static bool terminating;
+ if (terminating)
+ {
+ fputs("terminate called recursively\n", stderr);
+ abort ();
+ }
+ terminating = true;
+
// Make sure there was an exception; terminate is also called for an
// attempt to rethrow when there is no suitable exception.
type_info *t = __cxa_current_exception_type();
if (t)
{
- char const *name = t->name();
// Note that "name" is the mangled name.
-
+ char const *name = t->name();
{
int status = -1;
char *dem = 0;
dem = __cxa_demangle(name, 0, 0, &status);
- writestr("terminate called after throwing an instance of '");
+ fputs("terminate called after throwing an instance of '", stderr);
if (status == 0)
- writestr(dem);
+ fputs(dem, stderr);
else
- writestr(name);
- writestr("'\n");
+ fputs(name, stderr);
+ fputs("'\n", stderr);
if (status == 0)
free(dem);
}
- // If the exception is derived from std::exception, we can give more
- // information.
+ // If the exception is derived from std::exception, we can
+ // give more information.
try { __throw_exception_again; }
#ifdef __EXCEPTIONS
catch (exception &exc)
{
char const *w = exc.what();
- writestr(" what(): ");
- writestr(w);
- writestr("\n");
+ fputs(" what(): ", stderr);
+ fputs(w, stderr);
+ fputs("\n", stderr);
}
#endif
catch (...) { }
}
else
- writestr("terminate called without an active exception\n");
+ fputs("terminate called without an active exception\n", stderr);
abort();
}
diff --git a/libstdc++-v3/linkage.m4 b/libstdc++-v3/linkage.m4
index ae8b18f544c..621492dd304 100644
--- a/libstdc++-v3/linkage.m4
+++ b/libstdc++-v3/linkage.m4
@@ -510,7 +510,7 @@ AC_DEFUN(GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT, [
dnl always pass if libm is available, and fail if it isn't. If it is
dnl available, we assume we'll need it later, so add it to LIBS.
AC_CHECK_LIB(m, main)
- AC_REPLACE_MATHFUNCS(nan copysignf)
+ AC_REPLACE_MATHFUNCS(copysignf)
dnl For __signbit to signbit conversions.
AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 3b4f67501c5..84e0d84b90c 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -95,7 +95,6 @@ sources = \
complex_io.cc \
ctype.cc \
debug.cc \
- demangle.cc \
functexcept.cc \
globals_locale.cc \
globals_io.cc \
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index d6cc47cbb88..84ce876938f 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
@@ -219,12 +219,12 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
# Cross compiler support.
toolexeclib_LTLIBRARIES = libstdc++.la
+@GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE@version_arg =
# Symbol versioning for shared libraries.
@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@version_arg = -Wl,--version-script=libstdc++-symbol.ver
-@GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE@version_arg =
-@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@version_dep = libstdc++-symbol.ver
@GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE@version_dep =
+@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@version_dep = libstdc++-symbol.ver
# Source files linked in via configuration/make substitution for a
# particular host.
@@ -251,7 +251,6 @@ sources = \
complex_io.cc \
ctype.cc \
debug.cc \
- demangle.cc \
functexcept.cc \
globals_locale.cc \
globals_io.cc \
@@ -360,7 +359,7 @@ am__objects_1 = codecvt_members.lo collate_members.lo ctype_members.lo \
messages_members.lo monetary_members.lo numeric_members.lo \
time_members.lo
am__objects_2 = basic_file.lo c++locale.lo
-am__objects_3 = codecvt.lo complex_io.lo ctype.lo debug.lo demangle.lo \
+am__objects_3 = codecvt.lo complex_io.lo ctype.lo debug.lo \
functexcept.lo globals_locale.lo globals_io.lo ios.lo \
ios_failure.lo ios_init.lo ios_locale.lo limits.lo list.lo \
locale.lo locale_init.lo locale_facets.lo localename.lo \
@@ -552,7 +551,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
diff --git a/libstdc++-v3/src/demangle.cc b/libstdc++-v3/src/demangle.cc
deleted file mode 100644
index 58c076785e5..00000000000
--- a/libstdc++-v3/src/demangle.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-// C++ IA64 / g++ v3 demangler -*- C++ -*-
-
-// Copyright (C) 2003 Free Software Foundation, Inc.
-// Written by Carlo Wood <carlo@alinoe.com>
-//
-// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#include <bits/demangle.h>
-#include <cxxabi.h>
-
-// __cxa_demangle
-//
-// Demangle a C++ symbol or type name.
-//
-// `mangled-name' is a pointer to a null-terminated array of characters.
-// It may be either an external name, i.e. with a "_Z" prefix, or an
-// internal NTBS mangling, e.g. of a type for type_info.
-//
-// `buf' may be null. If it is non-null, then n must also be non-null,
-// and buf is a pointer to an array, of at least *n characters, that
-// was allocated using malloc.
-//
-// `status' points to an int that is used as an error indicator. It is
-// permitted to be null, in which case the user just doesn't get any
-// detailed error information.
-//
-// Returns: a pointer to a null-terminated array of characters, the
-// demangled name. Or NULL in case of failure.
-//
-// If there is an error in demangling, the return value is a null pointer.
-// The user can examine *status to find out what kind of error occurred.
-// Meaning of error indications:
-//
-// * 0: success
-// * -1: memory allocation failure
-// * -2: invalid mangled name
-// * -3: invalid arguments (e.g. buf nonnull and n null)
-//
-
-namespace __cxxabiv1
-{
- namespace
- {
- char* const error = 0;
-
- enum status_codes
- {
- success = 0,
- memory_allocation_failure = -1,
- invalid_mangled_name = -2,
- invalid_argument = -3
- };
-
- inline char*
- failure(status_codes error_code, int* status)
- {
- if (status)
- *status = error_code;
- return error;
- }
-
- char*
- finish(char const* demangled_name, size_t demangled_name_size,
- char* buf, size_t* n, int* status)
- {
- if (!buf || *n < demangled_name_size + 1)
- {
- if (n)
- *n = demangled_name_size + 1;
- buf = (char*)realloc(buf, demangled_name_size + 1);
- if (!buf)
- return failure(memory_allocation_failure, status);
- }
- if (status)
- *status = success;
- std::strncpy(buf, demangled_name, demangled_name_size);
- buf[demangled_name_size] = 0;
- return buf;
- }
- } // namespace
-
- char*
- __cxa_demangle(char const* mangled_name, char* buf, std::size_t* n,
- int* status)
- {
- using namespace __gnu_cxx;
- typedef demangler::session<std::allocator<char> > session_type;
-
- if (!mangled_name || (buf && !n))
- return failure(invalid_argument, status);
-
- std::string result;
- if (mangled_name[0] == '_')
- {
- // External name?
- if (mangled_name[1] == 'Z')
- {
- // C++ name?
- int cnt = session_type::
- decode_encoding(result, mangled_name + 2, INT_MAX);
- if (cnt < 0 || mangled_name[cnt + 2] != 0)
- return failure(invalid_mangled_name, status);
- return finish(result.data(), result.size(), buf, n, status);
- }
- else if (mangled_name[1] == 'G')
- {
- // Possible _GLOBAL__ extension?
- if (!std::strncmp(mangled_name, "_GLOBAL__", 9)
- && (mangled_name[9] == 'D' || mangled_name[9] == 'I')
- && mangled_name[10] == '_')
- {
- if (mangled_name[9] == 'D')
- result.assign("global destructors keyed to ", 28);
- else
- result.assign("global constructors keyed to ", 29);
- // Output the disambiguation part as-is.
- result += mangled_name + 11;
- return finish(result.data(), result.size(), buf, n, status);
- }
- }
- }
-
- // Ambiguities are possible between extern "C" object names and
- // internal built-in type names, e.g. "i" may be either an object
- // named "i" or the built-in "int" type. Such ambiguities should
- // be resolved to user names over built-in names. Builtin types
- // are any single lower case character. Any other single
- // character is not a mangled type so we can treat those the same
- // here.
- if (mangled_name[1] == 0)
- return finish(mangled_name, 1, buf, n, status);
-
- // Not a built-in type or external name, try to demangle input as
- // NTBS mangled type name.
- session_type demangler_session(mangled_name, INT_MAX);
- if (!demangler_session.decode_type(result)
- || demangler_session.remaining_input_characters())
- {
- // Failure to demangle, assume extern "C" name.
- result = mangled_name;
- }
- return finish(result.data(), result.size(), buf, n, status);
- }
-} // namespace __cxxabiv1
diff --git a/libstdc++-v3/src/ios.cc b/libstdc++-v3/src/ios.cc
index b36165e7497..8b4e8f05321 100644
--- a/libstdc++-v3/src/ios.cc
+++ b/libstdc++-v3/src/ios.cc
@@ -1,6 +1,6 @@
// Iostreams base classes -*- C++ -*-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -147,7 +147,7 @@ namespace std
// 27.4.2.5 iword/pword storage
ios_base::_Words&
- ios_base::_M_grow_words(int ix)
+ ios_base::_M_grow_words(int ix, bool iword)
{
// Precondition: _M_word_size <= ix
int newsize = _S_local_word_size;
@@ -163,8 +163,12 @@ namespace std
{
_M_streambuf_state |= badbit;
if (_M_streambuf_state & _M_exception)
- __throw_ios_failure("ios_base::_M_grow_words "
- "allocation failed");
+ __throw_ios_failure(__N("ios_base::_M_grow_words "
+ "allocation failed"));
+ if (iword)
+ _M_word_zero._M_iword = 0;
+ else
+ _M_word_zero._M_pword = 0;
return _M_word_zero;
}
for (int i = 0; i < _M_word_size; i++)
@@ -179,7 +183,11 @@ namespace std
{
_M_streambuf_state |= badbit;
if (_M_streambuf_state & _M_exception)
- __throw_ios_failure("ios_base::_M_grow_words is not valid");
+ __throw_ios_failure(__N("ios_base::_M_grow_words is not valid"));
+ if (iword)
+ _M_word_zero._M_iword = 0;
+ else
+ _M_word_zero._M_pword = 0;
return _M_word_zero;
}
}
diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc
index c9562e213a7..4e1aebb486d 100644
--- a/libstdc++-v3/src/locale.cc
+++ b/libstdc++-v3/src/locale.cc
@@ -141,8 +141,8 @@ namespace std
__ret = all;
break;
default:
- __throw_runtime_error("locale::_S_normalize_category "
- "category not found");
+ __throw_runtime_error(__N("locale::_S_normalize_category "
+ "category not found"));
}
}
return __ret;
@@ -264,7 +264,7 @@ namespace std
{
size_t __index = __idp->_M_id();
if ((__index > (__imp->_M_facets_size - 1)) || !__imp->_M_facets[__index])
- __throw_runtime_error("locale::_Impl::_M_replace_facet");
+ __throw_runtime_error(__N("locale::_Impl::_M_replace_facet"));
_M_install_facet(__idp, __imp->_M_facets[__index]);
}
diff --git a/libstdc++-v3/src/locale_init.cc b/libstdc++-v3/src/locale_init.cc
index 2eb45c85e4c..5b9d1ae2b16 100644
--- a/libstdc++-v3/src/locale_init.cc
+++ b/libstdc++-v3/src/locale_init.cc
@@ -108,8 +108,7 @@ namespace std
_Impl* __old = _S_global;
__other._M_impl->_M_add_reference();
_S_global = __other._M_impl;
- if (_S_global->_M_check_same_name()
- && (std::strcmp(_S_global->_M_names[0], "*") != 0))
+ if (__other.name() != "*")
setlocale(LC_ALL, __other.name().c_str());
// Reference count sanity check: one reference removed for the
diff --git a/libstdc++-v3/src/localename.cc b/libstdc++-v3/src/localename.cc
index c6a7de92be9..4cd1af189fa 100644
--- a/libstdc++-v3/src/localename.cc
+++ b/libstdc++-v3/src/localename.cc
@@ -144,7 +144,7 @@ namespace std
}
}
else
- __throw_runtime_error("locale::locale NULL not valid");
+ __throw_runtime_error(__N("locale::locale NULL not valid"));
}
locale::locale(const locale& __base, const char* __s, category __cat)
diff --git a/libstdc++-v3/testsuite/18_support/14026.cc b/libstdc++-v3/testsuite/18_support/14026.cc
new file mode 100644
index 00000000000..103ac64a9d7
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/14026.cc
@@ -0,0 +1,34 @@
+// PR 14026
+// 18.6.4 uncaught_exception
+
+#include <cstdlib>
+#include <exception>
+#include <testsuite_hooks.h>
+
+static void
+no_uncaught ()
+{
+ if (std::uncaught_exception ())
+ abort ();
+}
+
+int
+main ()
+{
+ try
+ {
+ throw 1;
+ }
+ catch (...)
+ {
+ try
+ {
+ throw;
+ }
+ catch (...)
+ {
+ no_uncaught ();
+ }
+ }
+ no_uncaught ();
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
new file mode 100644
index 00000000000..0bb34e1f2fc
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
@@ -0,0 +1,56 @@
+// 2004-02-04 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 21.3.1 basic_string constructors.
+
+#include <iterator>
+#include <sstream>
+#include <cstdlib>
+#include <testsuite_hooks.h>
+
+using namespace std;
+
+string data(long len)
+{
+ string ret;
+ for (long i = 0; i < len; ++i)
+ ret.push_back('a' + rand() % 26);
+ return ret;
+}
+
+void test01(int iter)
+{
+ bool test __attribute__((unused)) = true;
+
+ for (long i = 0, j = 1; i < iter; ++i, j *= 3)
+ {
+ istringstream isstr(data(j));
+
+ string str((istreambuf_iterator<char>(isstr)),
+ istreambuf_iterator<char>());
+ VERIFY( str == isstr.str() );
+ }
+}
+
+int main()
+{
+ test01(13);
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
new file mode 100644
index 00000000000..1c527904c4e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
@@ -0,0 +1,56 @@
+// 2004-02-04 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 21.3.1 basic_string constructors.
+
+#include <iterator>
+#include <sstream>
+#include <cstdlib>
+#include <testsuite_hooks.h>
+
+using namespace std;
+
+wstring data(long len)
+{
+ wstring ret;
+ for (long i = 0; i < len; ++i)
+ ret.push_back(L'a' + rand() % 26);
+ return ret;
+}
+
+void test01(int iter)
+{
+ bool test __attribute__((unused)) = true;
+
+ for (long i = 0, j = 1; i < iter; ++i, j *= 3)
+ {
+ wistringstream isstr(data(j));
+
+ wstring str((istreambuf_iterator<wchar_t>(isstr)),
+ istreambuf_iterator<wchar_t>());
+ VERIFY( str == isstr.str() );
+ }
+}
+
+int main()
+{
+ test01(13);
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
new file mode 100644
index 00000000000..3edc543b32b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
@@ -0,0 +1,50 @@
+// 2004-01-18 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 21.3.4 basic_string element access
+
+#include <string>
+#include <testsuite_hooks.h>
+
+// http://gcc.gnu.org/ml/libstdc++/2004-01/msg00184.html
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ for (int i = 0; i < 2000; ++i)
+ {
+ string str_01;
+
+ for (int j = 0; j < i; ++j)
+ str_01 += 'a';
+
+ str_01.reserve(i + 10);
+
+ const string str_02(str_01);
+ VERIFY( str_02[i] == '\0' );
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
new file mode 100644
index 00000000000..18b72f0a15f
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
@@ -0,0 +1,50 @@
+// 2004-01-18 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 21.3.4 basic_string element access
+
+#include <string>
+#include <testsuite_hooks.h>
+
+// http://gcc.gnu.org/ml/libstdc++/2004-01/msg00184.html
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ for (int i = 0; i < 2000; ++i)
+ {
+ wstring str_01;
+
+ for (int j = 0; j < i; ++j)
+ str_01 += L'a';
+
+ str_01.reserve(i + 10);
+
+ const wstring str_02(str_01);
+ VERIFY( str_02[i] == L'\0' );
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
index fd4aee7a016..e414718be8d 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
@@ -18,9 +18,8 @@
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
// 22.2.4.1.1 collate members
diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
index 50c697d0f14..7f8c2870e0d 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
index 8dc885ac533..0b25d8ebb51 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
index 28018032227..085d53bdf89 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <locale>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
index 50c697d0f14..7f8c2870e0d 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
index 8dc885ac533..0b25d8ebb51 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
index d21d3996492..9095520db1d 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <locale>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
index fe7ed8dbfac..3468dd8f75a 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
index fdbf3035a78..477dbba2277 100644
--- a/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
@@ -20,9 +20,8 @@
// 22.2.4.1.1 collate members
-// Doesn't work due to use of literal ISO8859.1 characters. PR 11439
-// { dg-do compile { xfail *-*-* } } should be run
-// { dg-excess-errors "" }
+// { dg-do run }
+// { dg-options "-finput-charset=ISO8859-1" }
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc b/libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
new file mode 100644
index 00000000000..7c143f4f577
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
@@ -0,0 +1,49 @@
+// 2004-02-09 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 22.1.1.5 locale static members [lib.locale.statics]
+
+#include <locale>
+#include <clocale>
+#include <testsuite_hooks.h>
+
+// libstdc++/14071
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ const locale loc_is = __gnu_test::try_named_locale("is_IS");
+ const locale loc_en = __gnu_test::try_named_locale("en_US");
+
+ const locale loc(loc_is, loc_en, locale::monetary);
+
+ if (loc.name() != "*")
+ {
+ locale::global(loc);
+ VERIFY( loc.name() == setlocale(LC_ALL, NULL) );
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
index fd2c1e55c93..b63d384f739 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -36,13 +36,8 @@ void test01()
// basic construction
locale loc_c = locale::classic();
- locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
// cache the moneypunct facets
typedef moneypunct<char, true> __money_true;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
new file mode 100644
index 00000000000..2b4f32a87f8
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
@@ -0,0 +1,70 @@
+// 2004-02-05 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 22.2.6.1.1 money_get members
+
+#include <locale>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// Same as 3.cc but no thousands-sep in input: they are always optional.
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char> iterator_type;
+
+ // basic construction
+ locale loc_c = locale::classic();
+ locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
+ VERIFY( loc_c != loc_de );
+
+ // total EPA budget FY 2002
+ const long double digits1 = 720000000000.0;
+
+ iterator_type end;
+ istringstream iss;
+ iss.imbue(loc_de);
+ // cache the money_get facet
+ const money_get<char>& mon_get = use_facet<money_get<char> >(iss.getloc());
+
+ iss.str("7200000000,00 ");
+ iterator_type is_it01(iss);
+ long double result1;
+ ios_base::iostate err01 = ios_base::goodbit;
+ mon_get.get(is_it01, end, true, iss, err01, result1);
+ VERIFY( result1 == digits1 );
+ VERIFY( err01 == ios_base::eofbit );
+
+ iss.str("7200000000,00 ");
+ iterator_type is_it02(iss);
+ long double result2;
+ ios_base::iostate err02 = ios_base::goodbit;
+ mon_get.get(is_it02, end, false, iss, err02, result2);
+ VERIFY( result2 == digits1 );
+ VERIFY( err02 == ios_base::eofbit );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
new file mode 100644
index 00000000000..d7040ba237b
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
@@ -0,0 +1,67 @@
+// 2004-02-05 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 22.2.6.1.1 money_get members
+
+#include <locale>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// No thousands-sep allowed after the decimal-point.
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char> iterator_type;
+
+ // basic construction
+ locale loc_c = locale::classic();
+ locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
+ VERIFY( loc_c != loc_de );
+
+ iterator_type end01, end02;
+ istringstream iss;
+ iss.imbue(loc_de);
+ // cache the money_get facet
+ const money_get<char>& mon_get = use_facet<money_get<char> >(iss.getloc());
+
+ iss.str("500,1.0 ");
+ iterator_type is_it01(iss);
+ long double result1;
+ ios_base::iostate err01 = ios_base::goodbit;
+ end01 = mon_get.get(is_it01, end01, true, iss, err01, result1);
+ VERIFY( err01 == ios_base::failbit );
+ VERIFY( *end01 == '.' );
+
+ iss.str("500,1.0 ");
+ iterator_type is_it02(iss);
+ long double result2;
+ ios_base::iostate err02 = ios_base::goodbit;
+ end02 = mon_get.get(is_it02, end02, false, iss, err02, result2);
+ VERIFY( err02 == ios_base::failbit );
+ VERIFY( *end02 == '.' );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
index 422a53340eb..b9bd0052cb6 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -37,12 +37,7 @@ void test02()
// basic construction
locale loc_c = locale::classic();
locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
- locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
- VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
+ VERIFY( loc_c != loc_hk );
// cache the moneypunct facets
typedef moneypunct<char, true> __money_true;
@@ -86,7 +81,7 @@ void test02()
ios_base::iostate err10 = ios_base::goodbit;
mon_get.get(is_it10, end, true, iss, err10, result10);
VERIFY( result10 == digits2 );
- VERIFY( err10 == ios_base::goodbit );
+ VERIFY( err10 == ios_base::eofbit );
iss.str("(HKD .01)");
iterator_type is_it11(iss);
@@ -94,7 +89,7 @@ void test02()
ios_base::iostate err11 = ios_base::goodbit;
mon_get.get(is_it11, end, true, iss, err11, result11);
VERIFY( result11 == digits4 );
- VERIFY( err11 == ios_base::goodbit );
+ VERIFY( err11 == ios_base::eofbit );
// for the "en_HK" locale the parsing of the very same input streams must
// be successful without showbase too, since the symbol field appears in
@@ -116,7 +111,7 @@ void test02()
ios_base::iostate err13 = ios_base::goodbit;
mon_get.get(is_it13, end, true, iss, err13, result13);
VERIFY( result13 == digits2 );
- VERIFY( err13 == ios_base::goodbit );
+ VERIFY( err13 == ios_base::eofbit );
iss.str("(HKD .01)");
iterator_type is_it14(iss);
@@ -124,7 +119,7 @@ void test02()
ios_base::iostate err14 = ios_base::goodbit;
mon_get.get(is_it14, end, true, iss, err14, result14);
VERIFY( result14 == digits4 );
- VERIFY( err14 == ios_base::goodbit );
+ VERIFY( err14 == ios_base::eofbit );
}
int main()
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
index 5904ee112d8..a717bd9a026 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -36,13 +36,8 @@ void test03()
// basic construction
locale loc_c = locale::classic();
- locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
// cache the moneypunct facets
typedef moneypunct<char, true> __money_true;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
index a80060aebe0..c5aa7a3a8c4 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -28,8 +28,6 @@
void test04()
{
using namespace std;
- typedef money_base::part part;
- typedef money_base::pattern pattern;
typedef istreambuf_iterator<char> iterator_type;
bool test __attribute__((unused)) = true;
@@ -37,12 +35,7 @@ void test04()
// basic construction
locale loc_c = locale::classic();
locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
- locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
- VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
+ VERIFY( loc_c != loc_hk );
// cache the moneypunct facets
typedef moneypunct<char, true> __money_true;
@@ -69,7 +62,7 @@ void test04()
ios_base::iostate err03 = ios_base::goodbit;
mon_get.get(is_it03, end, true, iss, err03, result3);
VERIFY( result3 == digits4 );
- VERIFY( err03 == ios_base::goodbit );
+ VERIFY( err03 == ios_base::eofbit );
}
int main()
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
index 8c03e8245ff..434edfe12b7 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -35,12 +35,6 @@ struct My_money_io : public std::moneypunct<char,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
- {
- pattern pat = { { symbol, none, sign, value } };
- return pat;
- }
-
pattern do_neg_format() const
{
pattern pat = { { symbol, none, sign, value } };
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
index 01a93381557..f88b521c002 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
@@ -34,7 +34,7 @@ struct My_money_io_a : public std::moneypunct<char,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
+ pattern do_neg_format() const
{
pattern pat = { { sign, value, space, symbol } };
return pat;
@@ -51,7 +51,7 @@ struct My_money_io_b : public std::moneypunct<char,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
+ pattern do_neg_format() const
{
pattern pat = { { sign, value, symbol, none } };
return pat;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
index cb56e1a362b..a7b4aeeddeb 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
@@ -1,6 +1,6 @@
// 2003-05-27 Brendan Kehoe <brendan@zen.org>
-// Copyright (C) 2003 Free Software Foundation
+// Copyright (C) 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -18,7 +18,7 @@
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
-// $22.2.6.3.3/8
+// $22.2.6.3/3
// The number of digits required after the decimal point (if any) is exactly
// the value returned by frac_digits().
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
index a8950723455..8a93e66aa66 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -36,13 +36,8 @@ void test01()
// basic construction
locale loc_c = locale::classic();
- locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
// cache the moneypunct facets
typedef moneypunct<wchar_t, true> __money_true;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
new file mode 100644
index 00000000000..95ecbefb880
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
@@ -0,0 +1,70 @@
+// 2004-02-05 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 22.2.6.1.1 money_get members
+
+#include <locale>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// Same as 3.cc but no thousands-sep in input: they are always optional.
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<wchar_t> iterator_type;
+
+ // basic construction
+ locale loc_c = locale::classic();
+ locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
+ VERIFY( loc_c != loc_de );
+
+ // total EPA budget FY 2002
+ const long double digits1 = 720000000000.0;
+
+ iterator_type end;
+ wistringstream iss;
+ iss.imbue(loc_de);
+ // cache the money_get facet
+ const money_get<wchar_t>& mon_get = use_facet<money_get<wchar_t> >(iss.getloc());
+
+ iss.str(L"7200000000,00 ");
+ iterator_type is_it01(iss);
+ long double result1;
+ ios_base::iostate err01 = ios_base::goodbit;
+ mon_get.get(is_it01, end, true, iss, err01, result1);
+ VERIFY( result1 == digits1 );
+ VERIFY( err01 == ios_base::eofbit );
+
+ iss.str(L"7200000000,00 ");
+ iterator_type is_it02(iss);
+ long double result2;
+ ios_base::iostate err02 = ios_base::goodbit;
+ mon_get.get(is_it02, end, false, iss, err02, result2);
+ VERIFY( result2 == digits1 );
+ VERIFY( err02 == ios_base::eofbit );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
new file mode 100644
index 00000000000..564d5fd7798
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
@@ -0,0 +1,67 @@
+// 2004-02-05 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 22.2.6.1.1 money_get members
+
+#include <locale>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// No thousands-sep allowed after the decimal-point.
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<wchar_t> iterator_type;
+
+ // basic construction
+ locale loc_c = locale::classic();
+ locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
+ VERIFY( loc_c != loc_de );
+
+ iterator_type end01, end02;
+ wistringstream iss;
+ iss.imbue(loc_de);
+ // cache the money_get facet
+ const money_get<wchar_t>& mon_get = use_facet<money_get<wchar_t> >(iss.getloc());
+
+ iss.str(L"500,1.0 ");
+ iterator_type is_it01(iss);
+ long double result1;
+ ios_base::iostate err01 = ios_base::goodbit;
+ end01 = mon_get.get(is_it01, end01, true, iss, err01, result1);
+ VERIFY( err01 == ios_base::failbit );
+ VERIFY( *end01 == '.' );
+
+ iss.str(L"500,1.0 ");
+ iterator_type is_it02(iss);
+ long double result2;
+ ios_base::iostate err02 = ios_base::goodbit;
+ end02 = mon_get.get(is_it02, end02, false, iss, err02, result2);
+ VERIFY( err02 == ios_base::failbit );
+ VERIFY( *end02 == '.' );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
index f59cef7a929..95a0c735632 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -37,12 +37,7 @@ void test02()
// basic construction
locale loc_c = locale::classic();
locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
- locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
- VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
+ VERIFY( loc_c != loc_hk );
// cache the moneypunct facets
typedef moneypunct<wchar_t, true> __money_true;
@@ -86,7 +81,7 @@ void test02()
ios_base::iostate err10 = ios_base::goodbit;
mon_get.get(is_it10, end, true, iss, err10, result10);
VERIFY( result10 == digits2 );
- VERIFY( err10 == ios_base::goodbit );
+ VERIFY( err10 == ios_base::eofbit );
iss.str(L"(HKD .01)");
iterator_type is_it11(iss);
@@ -94,7 +89,7 @@ void test02()
ios_base::iostate err11 = ios_base::goodbit;
mon_get.get(is_it11, end, true, iss, err11, result11);
VERIFY( result11 == digits4 );
- VERIFY( err11 == ios_base::goodbit );
+ VERIFY( err11 == ios_base::eofbit );
// for the "en_HK" locale the parsing of the very same input streams must
// be successful without showbase too, since the symbol field appears in
@@ -116,7 +111,7 @@ void test02()
ios_base::iostate err13 = ios_base::goodbit;
mon_get.get(is_it13, end, true, iss, err13, result13);
VERIFY( result13 == digits2 );
- VERIFY( err13 == ios_base::goodbit );
+ VERIFY( err13 == ios_base::eofbit );
iss.str(L"(HKD .01)");
iterator_type is_it14(iss);
@@ -124,7 +119,7 @@ void test02()
ios_base::iostate err14 = ios_base::goodbit;
mon_get.get(is_it14, end, true, iss, err14, result14);
VERIFY( result14 == digits4 );
- VERIFY( err14 == ios_base::goodbit );
+ VERIFY( err14 == ios_base::eofbit );
}
int main()
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
index d0c8b06b6f3..90c45e8c1a9 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -36,13 +36,8 @@ void test03()
// basic construction
locale loc_c = locale::classic();
- locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
// cache the moneypunct facets
typedef moneypunct<wchar_t, true> __money_true;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
index 8861ce46cf5..cb1a2abfcbc 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -28,8 +28,6 @@
void test04()
{
using namespace std;
- typedef money_base::part part;
- typedef money_base::pattern pattern;
typedef istreambuf_iterator<wchar_t> iterator_type;
bool test __attribute__((unused)) = true;
@@ -37,12 +35,7 @@ void test04()
// basic construction
locale loc_c = locale::classic();
locale loc_hk = __gnu_test::try_named_locale("en_HK");
- locale loc_fr = __gnu_test::try_named_locale("fr_FR@euro");
- locale loc_de = __gnu_test::try_named_locale("de_DE@euro");
- VERIFY( loc_c != loc_de );
- VERIFY( loc_hk != loc_fr );
- VERIFY( loc_hk != loc_de );
- VERIFY( loc_de != loc_fr );
+ VERIFY( loc_c != loc_hk );
// cache the moneypunct facets
typedef moneypunct<wchar_t, true> __money_true;
@@ -69,7 +62,7 @@ void test04()
ios_base::iostate err03 = ios_base::goodbit;
mon_get.get(is_it03, end, true, iss, err03, result3);
VERIFY( result3 == digits4 );
- VERIFY( err03 == ios_base::goodbit );
+ VERIFY( err03 == ios_base::eofbit );
}
int main()
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
index 5d40fab761f..cebba6e3b80 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
@@ -1,6 +1,6 @@
// 2001-09-12 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -35,12 +35,6 @@ struct My_money_io : public std::moneypunct<wchar_t,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
- {
- pattern pat = { { symbol, none, sign, value } };
- return pat;
- }
-
pattern do_neg_format() const
{
pattern pat = { { symbol, none, sign, value } };
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
index aeaa2573780..2b86b367542 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
@@ -34,7 +34,7 @@ struct My_money_io_a : public std::moneypunct<wchar_t,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
+ pattern do_neg_format() const
{
pattern pat = { { sign, value, space, symbol } };
return pat;
@@ -51,7 +51,7 @@ struct My_money_io_b : public std::moneypunct<wchar_t,false>
int do_frac_digits() const { return 2; }
- pattern do_pos_format() const
+ pattern do_neg_format() const
{
pattern pat = { { sign, value, symbol, none } };
return pat;
diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
index 989066b392d..ce8ab370972 100644
--- a/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
+++ b/libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
@@ -1,6 +1,6 @@
// 2003-05-27 Brendan Kehoe <brendan@zen.org>
-// Copyright (C) 2003 Free Software Foundation
+// Copyright (C) 2003, 2004 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -18,7 +18,7 @@
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
-// $22.2.6.3.3/8
+// $22.2.6.3/3
// The number of digits required after the decimal point (if any) is exactly
// the value returned by frac_digits().
diff --git a/libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc b/libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
index bb970369ee3..be020ca4668 100644
--- a/libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
@@ -74,7 +74,7 @@ void test01()
VERIFY( test );
// 3: fail, no numpunct
- const locale loc3(loc, new ctype<pod_type>);
+ const locale loc3(loc2, new ctype<pod_type>);
os.clear();
os.imbue(loc3);
try
diff --git a/libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc b/libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
new file mode 100644
index 00000000000..e9b1ac1f42e
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
@@ -0,0 +1,47 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <debug/bitset>
+#include <testsuite_hooks.h>
+
+// libstdc++/13838
+void test01()
+{
+ using __gnu_debug::bitset;
+ bool test __attribute__((unused)) = true;
+
+ bitset<4> b0, b1;
+ b0.set(1);
+ b0.set(3);
+ b1.set(2);
+ b1.set(3);
+
+ b0 |= b1;
+
+ bitset<4> br;
+ br.set(1);
+ br.set(2);
+ br.set(3);
+
+ VERIFY( b0 == br );
+}
+
+int main()
+{
+ test01();
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
index d51a5b1167b..bd74fad34bf 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
@@ -59,7 +59,7 @@ void test_07()
filebuf fb;
sleep(1);
- filebuf* ret = fb.open(name, ios_base::out | ios_base::trunc);
+ filebuf* ret = fb.open(name, ios_base::in | ios_base::out);
VERIFY( ret != NULL );
VERIFY( fb.is_open() );
@@ -67,7 +67,7 @@ void test_07()
fb.sputc('a');
ret = fb.close();
- VERIFY( ret == NULL );
+ VERIFY( ret != NULL );
VERIFY( !fb.is_open() );
}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
index 601e570ae25..761f9e585f0 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
@@ -48,12 +48,17 @@ void test_06()
std::filebuf fbuf;
fbuf.open(name, std::ios_base::in);
fbuf.sgetc();
+ sleep(2);
fbuf.close();
exit(0);
}
std::filebuf fbuf;
- std::filebuf* r = fbuf.open(name, std::ios_base::out | std::ios_base::ate);
+ sleep(1);
+ std::filebuf* r = fbuf.open(name,
+ std::ios_base::in
+ | std::ios_base::out
+ | std::ios_base::ate);
VERIFY( !fbuf.is_open() );
VERIFY( r == NULL );
}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
new file mode 100644
index 00000000000..7e01b44c1e7
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
@@ -0,0 +1,70 @@
+// 2004-02-14 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <locale>
+
+class Cvt : public std::codecvt<char, char, std::mbstate_t>
+{
+protected:
+ virtual std::codecvt_base::result
+ do_out(std::mbstate_t&, const char* from, const char*,
+ const char*& from_next, char* to, char*, char*& to_next) const
+ {
+ from_next = from;
+ to_next = to;
+ return std::codecvt_base::error;
+ }
+
+ virtual bool
+ do_always_noconv() const throw()
+ { return false; }
+};
+
+// libstdc++/13858
+void test01()
+{
+ using namespace std;
+
+ filebuf fb;
+ fb.pubimbue(locale(locale::classic(), new Cvt));
+ fb.open("tmp_13858_char", ios_base::out);
+
+ try
+ {
+ fb.sputc('a');
+ fb.sputc('b');
+ fb.pubimbue(locale::classic());
+ fb.sputc('c');
+ fb.pubsync();
+ fb.close();
+ }
+ catch (std::exception&)
+ {
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
index 9904f194109..866c95529e1 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
@@ -1,6 +1,6 @@
// 2001-05-21 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -52,7 +52,7 @@ void test14()
{
using namespace std;
bool test __attribute__((unused)) = true;
-
+
locale loc = locale::classic();
loc = locale(loc, new errorcvt);
@@ -60,9 +60,16 @@ void test14()
fbuf1.pubimbue(loc);
fbuf1.pubsetbuf(0, 0);
fbuf1.open(name_07, ios_base::out | ios_base::trunc);
- streamsize n = fbuf1.sputn("onne", 4);
- VERIFY( n == 0 );
- fbuf1.close();
+
+ try
+ {
+ fbuf1.sputn("onne", 4);
+ fbuf1.close();
+ VERIFY( false );
+ }
+ catch (std::exception&)
+ {
+ }
}
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
new file mode 100644
index 00000000000..b76dc3bf4f9
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
@@ -0,0 +1,71 @@
+// 2004-02-14 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <locale>
+
+class Cvt : public std::codecvt<wchar_t, char, std::mbstate_t>
+{
+protected:
+ virtual std::codecvt_base::result
+ do_out(std::mbstate_t&, const wchar_t* from, const wchar_t*,
+ const wchar_t*& from_next, char* to, char*,
+ char*& to_next) const
+ {
+ from_next = from;
+ to_next = to;
+ return std::codecvt_base::error;
+ }
+
+ virtual bool
+ do_always_noconv() const throw()
+ { return false; }
+};
+
+// libstdc++/13858
+void test01()
+{
+ using namespace std;
+
+ wfilebuf fb;
+ fb.pubimbue(locale(locale::classic(), new Cvt));
+ fb.open("tmp_13858_wchar_t", ios_base::out);
+
+ try
+ {
+ fb.sputc(L'a');
+ fb.sputc(L'b');
+ fb.pubimbue(locale::classic());
+ fb.sputc(L'c');
+ fb.pubsync();
+ fb.close();
+ }
+ catch (std::exception&)
+ {
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
index 3088e5ff944..343e325e70b 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2003 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -24,8 +24,8 @@
void test03()
{
using namespace std;
-
bool test __attribute__((unused)) = true;
+
const char* name = "tmp_seekoff_3";
wfilebuf fb;
@@ -33,10 +33,16 @@ void test03()
fb.open(name, ios_base::out);
fb.sputc(0xf001);
- // seekoff should flush the output sequence, which will fail
- // if the output buffer contains illegal characters.
- streampos ret = fb.pubseekoff(0, ios_base::cur);
- VERIFY( ret == streampos(streamoff(-1)) );
+ try
+ {
+ // seekoff should flush the output sequence, which will fail
+ // if the output buffer contains illegal characters.
+ fb.pubseekoff(0, ios_base::cur);
+ VERIFY( false );
+ }
+ catch (std::exception&)
+ {
+ }
}
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
index c543212b19e..41848b76650 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2003 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -25,8 +25,8 @@
void test01()
{
using namespace std;
-
bool test __attribute__((unused)) = true;
+
const char* name = "tmp_seekpos_1";
wfilebuf fb;
@@ -35,8 +35,14 @@ void test01()
streampos pos = fb.pubseekoff(0, ios_base::beg);
fb.sputc(0xf001);
- streampos ret = fb.pubseekpos(pos);
- VERIFY( ret == streampos(streamoff(-1)) );
+ try
+ {
+ fb.pubseekpos(pos);
+ VERIFY( false );
+ }
+ catch (std::exception&)
+ {
+ }
}
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
index 2839e2f722c..19f0fcee20c 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
@@ -53,7 +53,7 @@ void test_01()
else if (fval == 0)
{
filebuf ofbuf;
- ofbuf.open(name, ios_base::out);
+ ofbuf.open(name, ios_base::in|ios_base::out);
VERIFY( ofbuf.is_open() );
sleep(1);
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
index 9448c8490c7..91ef1ffe56d 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
@@ -1,6 +1,6 @@
// 2001-05-21 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -59,10 +59,16 @@ void test13()
filebuf fbuf1;
fbuf1.pubimbue(loc);
fbuf1.open(name_07, ios_base::out | ios_base::trunc);
- fbuf1.sputn("ison", 4);
- int r = fbuf1.pubsync();
- VERIFY( r == -1 );
- fbuf1.close();
+
+ try
+ {
+ fbuf1.sputn("ison", 4);
+ fbuf1.pubsync();
+ VERIFY( false );
+ }
+ catch (std::exception&)
+ {
+ }
}
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
index c3c3cf19048..aaaf1d2d7b6 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
@@ -67,7 +67,8 @@ void test16()
else if (fval == 0)
{
filebuf fbout;
- fbout.open(name, ios_base::out);
+ fbout.open(name, ios_base::in|ios_base::out);
+ VERIFY ( fbout.is_open() );
fbout.sputn("0123456789", 10);
fbout.pubsync();
sleep(2);
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14252.cc b/libstdc++-v3/testsuite/27_io/fpos/14252.cc
new file mode 100644
index 00000000000..bc201a213f0
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14252.cc
@@ -0,0 +1,62 @@
+// 2004-02-24 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// 27.4.3 template class fpos
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+// libstdc++/14252
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::streamoff off01 = 10;
+ std::streamoff off02 = 2;
+ std::streamoff off03 = 2004;
+ std::streamoff off04 = 1;
+
+ VERIFY( off01++ == 10 );
+ VERIFY( off01 == 11 );
+
+ VERIFY( ++off02 == 3 );
+ VERIFY( off02 == 3 );
+
+ VERIFY( off03-- == 2004 );
+ VERIFY( off03 == 2003 );
+
+ VERIFY( --off04 == 0 );
+ VERIFY( off04 == 0 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
new file mode 100644
index 00000000000..0df9c0c8b21
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
@@ -0,0 +1,63 @@
+// 2004-01-25 jlquinn@gcc.gnu.org
+
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.4.2.5 ios_base storage functions
+
+#include <cstdlib>
+#include <new>
+#include <iostream>
+#include <testsuite_hooks.h>
+
+int new_fails;
+
+void* operator new(std::size_t n) throw (std::bad_alloc)
+{
+ if (new_fails)
+ throw std::bad_alloc();
+ return malloc(n);
+}
+void* operator new[] (std::size_t n) throw (std::bad_alloc)
+{ return operator new(n); }
+
+void operator delete (void *p) throw() { free(p); }
+void operator delete[] (void *p) throw() { operator delete(p); }
+
+int main ()
+{
+ bool test __attribute__((unused)) = true;
+ const int i = std::ios::xalloc ();
+
+ new_fails = 1;
+
+ // Successive accesses to failure storage clears to zero.
+ std::cout.iword(100) = 0xdeadbeef;
+ VERIFY(std::cout.iword(100) == 0);
+
+ // Access to pword failure storage shouldn't clear iword pword storage.
+ long& lr = std::cout.iword(100);
+ lr = 0xdeadbeef;
+
+ void* pv = std::cout.pword(100);
+ VERIFY(pv == 0);
+ VERIFY(lr == 0xdeadbeef);
+
+ return 0;
+}
+
diff --git a/libstdc++-v3/testsuite/27_io/objects/char/7.cc b/libstdc++-v3/testsuite/27_io/objects/char/7.cc
index 06983d9fb7a..13574e67c92 100644
--- a/libstdc++-v3/testsuite/27_io/objects/char/7.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/char/7.cc
@@ -50,7 +50,8 @@ void test07()
{
filebuf fbout;
sleep(1);
- fbout.open(name, ios_base::out);
+ fbout.open(name, ios_base::in|ios_base::out);
+ VERIFY ( fbout.is_open() );
cout.rdbuf(&fbout);
fbout.sputc('a');
sleep(2);
diff --git a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
index 5b1780e1f0d..942cb094389 100644
--- a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
@@ -50,7 +50,8 @@ void test01()
if (child == 0)
{
sleep(1);
- FILE* file = fopen(name, "w");
+ FILE* file = fopen(name, "r+");
+ VERIFY (file != NULL);
fputs("Whatever\n", file);
fflush(file);
sleep(2);
diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/01.cc b/libstdc++-v3/testsuite/demangle/abi_examples/01.cc
index 585cfe0435c..e7c41e7b966 100644
--- a/libstdc++-v3/testsuite/demangle/abi_examples/01.cc
+++ b/libstdc++-v3/testsuite/demangle/abi_examples/01.cc
@@ -31,7 +31,7 @@ int main()
// extern "C" function
// extern "C" float f(void) { };
// T f
- verify_demangle("f", "f");
+ verify_demangle("f", "error code = -2: invalid mangled name");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/02.cc b/libstdc++-v3/testsuite/demangle/abi_examples/02.cc
index ce33e53894a..bbae9381e7d 100644
--- a/libstdc++-v3/testsuite/demangle/abi_examples/02.cc
+++ b/libstdc++-v3/testsuite/demangle/abi_examples/02.cc
@@ -31,7 +31,7 @@ int main()
// or variable "f"
// int f;
// B f
- verify_demangle("f", "f");
+ verify_demangle("f", "error code = -2: invalid mangled name");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-11.cc b/libstdc++-v3/testsuite/demangle/regression/cw-11.cc
index e5405b2f6e9..6fef1314d99 100644
--- a/libstdc++-v3/testsuite/demangle/regression/cw-11.cc
+++ b/libstdc++-v3/testsuite/demangle/regression/cw-11.cc
@@ -28,7 +28,8 @@ int main()
using namespace __gnu_test;
// cplus-dem CORE
- verify_demangle("_X11TransParseAddress", "_X11TransParseAddress");
+ verify_demangle("_X11TransParseAddress",
+ "error code = -2: invalid mangled name");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-16.cc b/libstdc++-v3/testsuite/demangle/regression/cw-16.cc
index 8dbfcb1f56e..78ae363a62b 100644
--- a/libstdc++-v3/testsuite/demangle/regression/cw-16.cc
+++ b/libstdc++-v3/testsuite/demangle/regression/cw-16.cc
@@ -29,14 +29,14 @@ int main()
// 2003/11/07, libstdc++/12736
verify_demangle("_Z3fooIA6_KiEvA9_KT_rVPrS4_",
- "void foo<int const [6]>(int const [9][6], int const restrict (* volatile restrict) [9][6])");
+ "void foo<int const [6]>(int const [9][6], int restrict const (* volatile restrict) [9][6])");
// 2003/11/12, libstdc++/12947
verify_demangle("_Z1fILi5E1AEvN1CIXqugtT_Li0ELi1ELi2EEE1qE",
"void f<5, A>(C<(((5) > (0))) ? (1) : (2)>::q)");
verify_demangle("_Z1fILi5EEvN1AIXcvimlT_Li22EEE1qE",
"void f<5>(A<(int)((5) * (22))>::q)");
verify_demangle("_Z1fPFYPFiiEiE",
- "f(int (*(*) [extern \"C\"] (int))(int))");
+ "f(int (*(*)(int))(int))");
verify_demangle("_Z1fI1XENT_1tES2_",
"X::t f<X>(X::t)");
verify_demangle("_Z1fILi5E1AEvN1CIXstN1T1tEEXszsrS2_1tEE1qE",
diff --git a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
index f4c3fe29957..966bf16acca 100644
--- a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
+++ b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
@@ -45,7 +45,6 @@ void test01()
}
catch(...)
{
- VERIFY( false );
}
}
diff --git a/libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc b/libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
index 0fd9b0dd3df..1d3f0423b53 100644
--- a/libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
+++ b/libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
@@ -45,7 +45,6 @@ void test01()
}
catch(...)
{
- VERIFY( false );
}
}
diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
index 299bc16ecc3..0b6cf921421 100644
--- a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
+++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
@@ -36,6 +36,7 @@ void test2()
fbuf.close();
FILE* file = fopen("tmp_10063-2", "r");
+ setbuf(file, NULL);
int c = getc(file);
VERIFY(c == '0');
c = getc(file);
diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
new file mode 100644
index 00000000000..a590898303e
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
@@ -0,0 +1,61 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// The ARM simulator does not provide support for "fstat", which
+// causes "sbumpc" to return an incorrect value.
+// { dg-do run { xfail arm-none-elf } }
+
+#include <cstdio>
+#include <fstream>
+#include <ext/stdio_sync_filebuf.h>
+#include <testsuite_hooks.h>
+
+void test3()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ filebuf fbuf;
+ fbuf.open("tmp_10063-3", ios_base::out | ios_base::trunc);
+ fbuf.sputn("01234", 5);
+ fbuf.close();
+
+ FILE* file = fopen("tmp_10063-3", "r");
+ int c = getc(file);
+ VERIFY(c == '0');
+ c = getc(file);
+ VERIFY(c == '1');
+ {
+ __gnu_cxx::stdio_sync_filebuf<char> sbuf(file);
+ c = sbuf.sbumpc();
+ VERIFY(c == '2');
+ c = sbuf.sbumpc();
+ VERIFY(c == '3');
+ c = sbuf.sbumpc();
+ VERIFY(c == '4');
+ c = sbuf.sgetc();
+ VERIFY(c == EOF);
+ }
+ fclose(file);
+}
+
+int main()
+{
+ test3();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index d6b4dc8d392..9abdec1228e 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -245,11 +245,15 @@ proc v3_target_compile { source dest type options } {
# Called once, from libstdc++*/dg.exp.
proc v3-list-tests { filename } {
global srcdir
- global outdir
-
- set tests_file "${outdir}/${filename}"
+ global blddir
+
+ set tests_file "${blddir}/testsuite/${filename}"
set sfiles ""
+ verbose -log "In v3-list-tests"
+ verbose -log "blddir = ${blddir}"
+ verbose -log "tests_file = $tests_file"
+
# If there is a testsuite_file, use it.
if { [file exists $tests_file] } {
set f [open $tests_file]
diff --git a/libstdc++-v3/testsuite/performance/fmtflags_manipulators.cc b/libstdc++-v3/testsuite/performance/fmtflags_manipulators.cc
new file mode 100644
index 00000000000..0ef4510f39c
--- /dev/null
+++ b/libstdc++-v3/testsuite/performance/fmtflags_manipulators.cc
@@ -0,0 +1,69 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cstdlib>
+#include <sstream>
+#include <testsuite_performance.h>
+
+// libstdc++/14078
+int main(int argc, char** argv)
+{
+ using namespace std;
+ using namespace __gnu_test;
+
+ time_counter time;
+ resource_counter resource;
+
+ int iters = 50000000;
+ if (argc > 1)
+ iters = atoi(argv[1]);
+
+ ostringstream os_s, os_m;
+
+ // setf
+ start_counters(time, resource);
+ for (int i = 0; i < iters; ++i)
+ {
+ os_s.setf(ios_base::uppercase);
+ os_s.unsetf(ios_base::uppercase);
+ }
+ stop_counters(time, resource);
+ report_performance(__FILE__, "setf", time, resource);
+ clear_counters(time, resource);
+
+ // manipulator
+ start_counters(time, resource);
+ for (int i = 0; i < iters; ++i)
+ {
+ os_m << uppercase;
+ os_m << nouppercase;
+ }
+ stop_counters(time, resource);
+ report_performance(__FILE__, "manipulator", time, resource);
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/performance/string_append.cc b/libstdc++-v3/testsuite/performance/string_append.cc
index 846d424c65c..fccd82cd037 100644
--- a/libstdc++-v3/testsuite/performance/string_append.cc
+++ b/libstdc++-v3/testsuite/performance/string_append.cc
@@ -77,10 +77,10 @@ run_benchmark2(int how_much)
// libstdc++/4960
int main()
{
- run_benchmark1(10000);
- run_benchmark2(10000);
run_benchmark1(100000);
run_benchmark2(100000);
run_benchmark1(1000000);
run_benchmark2(1000000);
+ run_benchmark1(10000000);
+ run_benchmark2(10000000);
}
diff --git a/libstdc++-v3/testsuite/performance/string_cons_input_iterator.cc b/libstdc++-v3/testsuite/performance/string_cons_input_iterator.cc
new file mode 100644
index 00000000000..655c85fd970
--- /dev/null
+++ b/libstdc++-v3/testsuite/performance/string_cons_input_iterator.cc
@@ -0,0 +1,58 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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 library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <iterator>
+#include <sstream>
+
+#include <testsuite_performance.h>
+
+void benchmark(long len)
+{
+ using namespace std;
+ using namespace __gnu_test;
+
+ time_counter time;
+ resource_counter resource;
+
+ istringstream isstr(string(len, 'a'));
+
+ start_counters(time, resource);
+ string str((istreambuf_iterator<char>(isstr)),
+ istreambuf_iterator<char>());
+ stop_counters(time, resource);
+
+ report_performance(__FILE__, "", time, resource);
+ clear_counters(time, resource);
+}
+
+int main()
+{
+ benchmark(500000);
+ benchmark(5000000);
+ benchmark(50000000);
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/testsuite_hooks.cc b/libstdc++-v3/testsuite/testsuite_hooks.cc
index 1271b5653a5..18ea13e1e86 100644
--- a/libstdc++-v3/testsuite/testsuite_hooks.cc
+++ b/libstdc++-v3/testsuite/testsuite_hooks.cc
@@ -74,7 +74,10 @@ namespace __gnu_test
#endif
// Virtual memory.
-#if _GLIBCXX_HAVE_MEMLIMIT_AS
+ // On HP-UX 11.23, a trivial C++ program that sets RLIMIT_AS to
+ // anything less than 128MB cannot "malloc" even 1K of memory.
+ // Therefore, we skip RLIMIT_AS on HP-UX.
+#if _GLIBCXX_HAVE_MEMLIMIT_AS && !defined(__hpux__)
getrlimit(RLIMIT_AS, &r);
r.rlim_cur = limit;
setrlimit(RLIMIT_AS, &r);
diff --git a/ltmain.sh b/ltmain.sh
index 5ccf95c7d1d..c1ef9974d0e 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2106,9 +2106,10 @@ EOF
else
$show "extracting exported symbol list from \`$soname'"
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- eval cmds=\"$extract_expsyms_cmds\"
+ cmds=$extract_expsyms_cmds
for cmd in $cmds; do
IFS="$save_ifs"
+ eval cmd=\"$cmd\"
$show "$cmd"
$run eval "$cmd" || exit $?
done
@@ -2119,9 +2120,10 @@ EOF
if test -f "$output_objdir/$newlib"; then :; else
$show "generating import library for \`$soname'"
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- eval cmds=\"$old_archive_from_expsyms_cmds\"
+ cmds=$old_archive_from_expsyms_cmds
for cmd in $cmds; do
IFS="$save_ifs"
+ eval cmd=\"$cmd\"
$show "$cmd"
$run eval "$cmd" || exit $?
done
@@ -3249,11 +3251,13 @@ EOF
# Do each of the archive commands.
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
else
- eval cmds=\"$archive_cmds\"
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
fi
- if len=`expr "X$cmds" : ".*"` &&
+ if len=`expr "X$test_cmds" : ".*"` &&
test $len -le $max_cmd_len; then
:
else
@@ -3329,6 +3333,7 @@ EOF
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
for cmd in $concat_cmds; do
IFS="$save_ifs"
+ eval cmd=\"$cmd\"
$show "$cmd"
$run eval "$cmd" || exit $?
done
@@ -3346,9 +3351,9 @@ EOF
# Do each of the archive commands.
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
- else
- eval cmds=\"$archive_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
fi
# Append the command to remove the reloadable object files
@@ -3358,6 +3363,7 @@ EOF
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
for cmd in $cmds; do
IFS="$save_ifs"
+ eval cmd=\"$cmd\"
$show "$cmd"
$run eval "$cmd" || exit $?
done
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
index 1537ad9da53..ba701d10b0c 100644
--- a/maintainer-scripts/ChangeLog
+++ b/maintainer-scripts/ChangeLog
@@ -1,3 +1,7 @@
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (build_sources): Delete call to make f77.rebuilt.
+
2004-01-03 Joseph S. Myers <jsm@polyomino.org.uk>
* update_web_docs: Create tarballs of documentation sources and
diff --git a/maintainer-scripts/gcc_release b/maintainer-scripts/gcc_release
index 9e19475d7dd..d0a99fadf5d 100755
--- a/maintainer-scripts/gcc_release
+++ b/maintainer-scripts/gcc_release
@@ -239,10 +239,6 @@ EOF
contrib/gcc_build -d ${SOURCE_DIRECTORY} -o ${OBJECT_DIRECTORY} \
-c "--enable-generated-files-in-srcdir" build || \
error "Could not rebuild GCC"
-
- # Regenerate the Fotran NEWS and BUGS files.
- (cd ${OBJECT_DIRECTORY}/gcc && make f77.rebuilt) || \
- error "Could not regenerate Fortran NEWS and BUGS files"
fi
# Move message catalogs to source directory.
diff --git a/mkinstalldirs b/mkinstalldirs
index d2d5f21b611..6fbe5e11762 100755
--- a/mkinstalldirs
+++ b/mkinstalldirs
@@ -1,20 +1,32 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+
+scriptversion=2004-02-15.20
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
-# Public domain
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
errstatus=0
dirmode=""
usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
# process command line arguments
while test $# -gt 0 ; do
case $1 in
-h | --help | --h*) # -h for help
- echo "$usage" 1>&2
+ echo "$usage"
exit 0
;;
-m) # -m PERM arg
@@ -23,6 +35,10 @@ while test $# -gt 0 ; do
dirmode=$1
shift
;;
+ --version)
+ echo "$0 $scriptversion"
+ exit 0
+ ;;
--) # stop option processing
shift
break
@@ -50,17 +66,37 @@ case $# in
0) exit 0 ;;
esac
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
case $dirmode in
'')
- if mkdir -p -- . 2>/dev/null; then
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
fi
;;
*)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
fi
;;
esac
@@ -84,17 +120,17 @@ do
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
- errstatus=$lasterr
+ errstatus=$lasterr
else
- if test ! -z "$dirmode"; then
+ if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
+ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
fi
fi
@@ -107,5 +143,8 @@ exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
# End:
-# mkinstalldirs ends here