aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2009-10-23 20:45:33 +0000
committerJeff Law <law@redhat.com>2009-10-23 20:45:33 +0000
commit1842abc1729f8464ebb6841bbba53c16e2ef85e4 (patch)
tree11cd53c01c82fef4a36dc441c177c8f5791e42b5
parent7cb10b40862da77eb3b5b1d8849fcf9586cc76ee (diff)
parent4305ca1e7fb07a4366633371d39928486f440d40 (diff)
Merge from trunkreload-v2
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/reload-v2@153515 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog25
-rw-r--r--MAINTAINERS1
-rw-r--r--config/ChangeLog4
-rw-r--r--config/acx.m42
-rwxr-xr-xconfigure39
-rw-r--r--configure.ac37
-rw-r--r--fixincludes/ChangeLog6
-rw-r--r--fixincludes/fixincl.x10
-rw-r--r--fixincludes/inclhack.def13
-rw-r--r--fixincludes/tests/base/stdint.h13
-rw-r--r--gcc/ChangeLog1048
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in13
-rw-r--r--gcc/ada/ChangeLog110
-rw-r--r--gcc/ada/env.c5
-rw-r--r--gcc/ada/exp_dbug.ads8
-rw-r--r--gcc/ada/gcc-interface/ada-tree.h18
-rw-r--r--gcc/ada/gcc-interface/decl.c161
-rw-r--r--gcc/ada/gcc-interface/gigi.h21
-rw-r--r--gcc/ada/gcc-interface/misc.c5
-rw-r--r--gcc/ada/gcc-interface/trans.c114
-rw-r--r--gcc/ada/gcc-interface/utils.c86
-rw-r--r--gcc/ada/gcc-interface/utils2.c50
-rw-r--r--gcc/ada/s-osinte-rtems.ads1
-rw-r--r--gcc/ada/s-stchop-rtems.adb5
-rw-r--r--gcc/alias.c9
-rw-r--r--gcc/alloc-pool.c4
-rw-r--r--gcc/builtins.c47
-rw-r--r--gcc/c-common.c12
-rw-r--r--gcc/c-lex.c18
-rw-r--r--gcc/c-parser.c1
-rw-r--r--gcc/c-pragma.h6
-rw-r--r--gcc/cfgexpand.c110
-rw-r--r--gcc/cfgloop.h1
-rw-r--r--gcc/cfgloopmanip.c3
-rw-r--r--gcc/cgraphunit.c8
-rw-r--r--gcc/combine.c76
-rw-r--r--gcc/common.opt5
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config.in6
-rw-r--r--gcc/config/arm/arm.c18
-rw-r--r--gcc/config/arm/neon.md3
-rw-r--r--gcc/config/avr/avr.md4
-rw-r--r--gcc/config/cris/cris-protos.h2
-rw-r--r--gcc/config/cris/cris.c41
-rw-r--r--gcc/config/cris/cris.h25
-rw-r--r--gcc/config/cris/cris.md6
-rw-r--r--gcc/config/darwin.c11
-rw-r--r--gcc/config/darwin10.h5
-rw-r--r--gcc/config/h8300/h8300.c60
-rw-r--r--gcc/config/h8300/h8300.h11
-rw-r--r--gcc/config/i386/cygming.h5
-rw-r--r--gcc/config/i386/i386.c93
-rw-r--r--gcc/config/i386/i386.h3
-rw-r--r--gcc/config/i386/i386.md25
-rw-r--r--gcc/config/i386/linux.h2
-rw-r--r--gcc/config/ia64/ia64.c8
-rw-r--r--gcc/config/m32c/m32c-protos.h3
-rw-r--r--gcc/config/m32c/m32c.c35
-rw-r--r--gcc/config/m32c/m32c.h5
-rw-r--r--gcc/config/mips/mips.c40
-rw-r--r--gcc/config/pa/pa.md25
-rw-r--r--gcc/config/rs6000/altivec.md2
-rw-r--r--gcc/config/rs6000/option-defaults.h12
-rw-r--r--gcc/config/rs6000/predicates.md2
-rw-r--r--gcc/config/rs6000/rs6000-builtin.def990
-rw-r--r--gcc/config/rs6000/rs6000.c142
-rw-r--r--gcc/config/rs6000/rs6000.h985
-rw-r--r--gcc/config/rs6000/t-rs60003
-rw-r--r--gcc/config/s390/2097.md34
-rw-r--r--gcc/config/s390/s390.c8
-rw-r--r--gcc/config/s390/s390.md2
-rw-r--r--gcc/config/sh/sh.c207
-rw-r--r--gcc/config/spu/spu.c2
-rwxr-xr-xgcc/configure31
-rw-r--r--gcc/configure.ac6
-rw-r--r--gcc/cp/ChangeLog62
-rw-r--r--gcc/cp/call.c27
-rw-r--r--gcc/cp/error.c8
-rw-r--r--gcc/cp/mangle.c2
-rw-r--r--gcc/cp/parser.c73
-rw-r--r--gcc/cp/pt.c11
-rw-r--r--gcc/cp/semantics.c59
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/cselib.c69
-rw-r--r--gcc/dbxout.c2
-rw-r--r--gcc/ddg.c4
-rw-r--r--gcc/debug.c1
-rw-r--r--gcc/debug.h4
-rw-r--r--gcc/doc/extend.texi10
-rw-r--r--gcc/doc/install.texi9
-rw-r--r--gcc/doc/invoke.texi35
-rw-r--r--gcc/doc/md.texi34
-rw-r--r--gcc/doc/rtl.texi5
-rw-r--r--gcc/doc/tm.texi11
-rw-r--r--gcc/dwarf2out.c87
-rw-r--r--gcc/emit-rtl.c8
-rw-r--r--gcc/fortran/ChangeLog137
-rw-r--r--gcc/fortran/decl.c72
-rw-r--r--gcc/fortran/gfortran.h3
-rw-r--r--gcc/fortran/intrinsic.texi14
-rw-r--r--gcc/fortran/match.c89
-rw-r--r--gcc/fortran/parse.c8
-rw-r--r--gcc/fortran/resolve.c331
-rw-r--r--gcc/fortran/symbol.c13
-rw-r--r--gcc/fortran/trans-array.c51
-rw-r--r--gcc/fortran/trans-decl.c59
-rw-r--r--gcc/fortran/trans-expr.c114
-rw-r--r--gcc/fortran/trans-stmt.c135
-rw-r--r--gcc/fortran/trans-stmt.h1
-rw-r--r--gcc/fortran/trans.c10
-rw-r--r--gcc/gcc.c9
-rw-r--r--gcc/gcse.c11
-rw-r--r--gcc/gengtype.c4
-rw-r--r--gcc/ggc-page.c60
-rw-r--r--gcc/gimple-iterator.c8
-rw-r--r--gcc/gimple-low.c75
-rw-r--r--gcc/gimple.c461
-rw-r--r--gcc/gimple.h2
-rw-r--r--gcc/haifa-sched.c45
-rw-r--r--gcc/input.h9
-rw-r--r--gcc/ipa-cp.c51
-rw-r--r--gcc/ipa-inline.c66
-rw-r--r--gcc/ipa-prop.c317
-rw-r--r--gcc/ipa-prop.h49
-rw-r--r--gcc/ipa-pure-const.c64
-rw-r--r--gcc/ipa-reference.c157
-rw-r--r--gcc/ira-costs.c1
-rw-r--r--gcc/ira.c6
-rw-r--r--gcc/java/ChangeLog7
-rw-r--r--gcc/java/mangle_name.c10
-rw-r--r--gcc/loop-invariant.c621
-rw-r--r--gcc/lto-cgraph.c12
-rw-r--r--gcc/lto-opts.c50
-rw-r--r--gcc/lto-streamer-in.c206
-rw-r--r--gcc/lto-streamer-out.c4
-rw-r--r--gcc/lto-streamer.c3
-rw-r--r--gcc/lto-streamer.h4
-rw-r--r--gcc/lto-symtab.c810
-rw-r--r--gcc/lto/ChangeLog31
-rw-r--r--gcc/lto/lto.c38
-rw-r--r--gcc/optabs.c6
-rw-r--r--gcc/opts.c63
-rw-r--r--gcc/opts.h1
-rw-r--r--gcc/params.def5
-rw-r--r--gcc/params.h2
-rw-r--r--gcc/passes.c35
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/gcc.pot15570
-rw-r--r--gcc/print-rtl.c23
-rw-r--r--gcc/print-tree.c2
-rw-r--r--gcc/real.h3
-rw-r--r--gcc/reginfo.c69
-rw-r--r--gcc/regmove.c6
-rw-r--r--gcc/reload1.c27
-rw-r--r--gcc/rtl.c18
-rw-r--r--gcc/rtl.def4
-rw-r--r--gcc/rtl.h12
-rw-r--r--gcc/sched-deps.c132
-rw-r--r--gcc/sched-vis.c13
-rw-r--r--gcc/sdbout.c2
-rw-r--r--gcc/sel-sched-ir.h3
-rw-r--r--gcc/simplify-rtx.c105
-rw-r--r--gcc/stor-layout.c6
-rw-r--r--gcc/target.h2
-rw-r--r--gcc/targhooks.c9
-rw-r--r--gcc/targhooks.h2
-rw-r--r--gcc/testsuite/ChangeLog577
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle33.C19
-rw-r--r--gcc/testsuite/g++.dg/abi/rtti3.C1
-rw-r--r--gcc/testsuite/g++.dg/abi/thunk4.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype18.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted14.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/explicit4.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C31
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing1.C (renamed from gcc/testsuite/g++.dg/cpp0x/auto6.C)0
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing2.C (renamed from gcc/testsuite/g++.dg/cpp0x/auto8.C)0
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing3.C (renamed from gcc/testsuite/g++.dg/cpp0x/auto12.C)0
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing4.C (renamed from gcc/testsuite/g++.dg/cpp0x/auto13.C)0
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing5.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/vt-40092.C21
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-2.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-1.C96
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-2.C104
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-3.C58
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-4.C28
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-5.C23
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-6.C5
-rw-r--r--gcc/testsuite/g++.dg/ext/raw-string-7.C23
-rw-r--r--gcc/testsuite/g++.dg/ext/utf-badconcat2.C15
-rw-r--r--gcc/testsuite/g++.dg/ext/utf-dflt2.C12
-rw-r--r--gcc/testsuite/g++.dg/ext/utf8-1.C45
-rw-r--r--gcc/testsuite/g++.dg/ext/utf8-2.C21
-rw-r--r--gcc/testsuite/g++.dg/ipa/iinline-1.C2
-rw-r--r--gcc/testsuite/g++.dg/lto/20091022-1_0.C13
-rw-r--r--gcc/testsuite/g++.dg/lto/20091022-2_0.C12
-rw-r--r--gcc/testsuite/g++.dg/opt/eh5.C43
-rw-r--r--gcc/testsuite/g++.dg/opt/vt1.C1
-rw-r--r--gcc/testsuite/g++.dg/other/first-global.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C2
-rw-r--r--gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C2
-rw-r--r--gcc/testsuite/g++.dg/template/spec35.C2
-rw-r--r--gcc/testsuite/g++.dg/torture/pr40323.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/copyprop.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40556.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41661.c20
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41728.c12
-rw-r--r--gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-1.c33
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-2.c33
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-3.c33
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-4.c37
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-5.c50
-rw-r--r--gcc/testsuite/gcc.dg/autopar/outer-6.c51
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-13.c319
-rw-r--r--gcc/testsuite/gcc.dg/cpp/include6.c14
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c14
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c18
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr41264-1.c36
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr41343-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr41717.c10
-rw-r--r--gcc/testsuite/gcc.dg/debug/vta-1.c34
-rw-r--r--gcc/testsuite/gcc.dg/debug/vta-2.c21
-rw-r--r--gcc/testsuite/gcc.dg/debug/vta-3.c17
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr41447-1.c26
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr41616-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/inline-33.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-7.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipacost-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20090914-2_0.c3
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091006-2_0.c4
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091006-2_1.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091006-2_2.c1
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091013-1_0.c21
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091013-1_1.c111
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091013-1_2.c220
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091014-1_0.c4
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_0.c5
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_1.c4
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_2.c5
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_a.h2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091015-1_b.h2
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091016-1_0.c13
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091016-1_1.c18
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091016-1_a.h6
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091017-1_0.c15
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091017-1_1.c6
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-1_0.c8
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-1_1.c15
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-2_0.c18
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-2_1.c5
-rw-r--r--gcc/testsuite/gcc.dg/lto/20091020-3_0.c20
-rw-r--r--gcc/testsuite/gcc.dg/plugin/one_time_plugin.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr41340.c68
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-1.c101
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-2.c109
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-3.c53
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-4.c28
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-5.c23
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-6.c5
-rw-r--r--gcc/testsuite/gcc.dg/raw-string-7.c23
-rw-r--r--gcc/testsuite/gcc.dg/tls/pie-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/torture/builtin-math-6.c49
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr26515.c27
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr38948.c101
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr41555.c1
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/inline-3.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c3
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr41497.c27
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c27
-rw-r--r--gcc/testsuite/gcc.dg/utf-badconcat2.c15
-rw-r--r--gcc/testsuite/gcc.dg/utf-dflt2.c12
-rw-r--r--gcc/testsuite/gcc.dg/utf8-1.c45
-rw-r--r--gcc/testsuite/gcc.dg/utf8-2.c26
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-thumb2-move.c98
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/i386.exp12
-rw-r--r--gcc/testsuite/gcc.target/i386/ms_hook_prologue.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/pic-1.c1
-rw-r--r--gcc/testsuite/gcc.target/powerpc/altivec-4.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-1.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-2.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-3.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-4.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-5.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-6.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-7.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c (renamed from gcc/testsuite/gcc.target/vsx-vectorize-8.c)0
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-vrsave.c20
-rw-r--r--gcc/testsuite/gfortran.dg/auto_dealloc_1.f9059
-rw-r--r--gcc/testsuite/gfortran.dg/class_10.f0332
-rw-r--r--gcc/testsuite/gfortran.dg/class_5.f0331
-rw-r--r--gcc/testsuite/gfortran.dg/class_6.f0321
-rw-r--r--gcc/testsuite/gfortran.dg/class_7.f0321
-rw-r--r--gcc/testsuite/gfortran.dg/class_8.f0316
-rw-r--r--gcc/testsuite/gfortran.dg/class_9.f0368
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_1.f033
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_2.f032
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_3.f0339
-rw-r--r--gcc/testsuite/gfortran.dg/complex_intrinsic_8.f9050
-rw-r--r--gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f0396
-rw-r--r--gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03185
-rw-r--r--gcc/testsuite/gfortran.dg/equiv_8.f907
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_error_9.f4
-rw-r--r--gcc/testsuite/gfortran.dg/goto_8.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/lto/20091015-1_0.f8
-rw-r--r--gcc/testsuite/gfortran.dg/lto/20091015-1_1.f4
-rw-r--r--gcc/testsuite/gfortran.dg/lto/20091015-1_2.f5
-rw-r--r--gcc/testsuite/gfortran.dg/lto/20091016-1_0.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/lto/pr41521_0.f909
-rw-r--r--gcc/testsuite/gfortran.dg/lto/pr41521_1.f909
-rw-r--r--gcc/testsuite/gfortran.dg/select_type_7.f0340
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_operator_2.f031
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_operator_4.f034
-rw-r--r--gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f901
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_5.f902
-rw-r--r--gcc/testsuite/gfortran.dg/whole_file_6.f902
-rw-r--r--gcc/testsuite/gnat.dg/aggr11.adb17
-rw-r--r--gcc/testsuite/gnat.dg/aggr11_pkg.ads14
-rw-r--r--gcc/testsuite/gnat.dg/discr21.adb34
-rw-r--r--gcc/testsuite/gnat.dg/discr21.ads5
-rw-r--r--gcc/testsuite/gnat.dg/discr21_pkg.ads19
-rw-r--r--gcc/testsuite/gnat.dg/discr22.adb23
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization7.adb16
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization7.ads9
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization7_pkg.ads10
-rw-r--r--gcc/testsuite/gnat.dg/nested_proc1.adb (renamed from gcc/testsuite/gnat.dg/nested_proc.adb)2
-rw-r--r--gcc/testsuite/gnat.dg/nested_proc2.adb30
-rw-r--r--gcc/testsuite/gnat.dg/noreturn1.adb15
-rw-r--r--gcc/testsuite/gnat.dg/noreturn1.ads8
-rw-r--r--gcc/testsuite/gnat.dg/noreturn2.adb23
-rw-r--r--gcc/testsuite/gnat.dg/noreturn2.ads8
-rw-r--r--gcc/testsuite/gnat.dg/slice8.adb13
-rw-r--r--gcc/testsuite/gnat.dg/slice8_pkg1.ads3
-rw-r--r--gcc/testsuite/gnat.dg/slice8_pkg2.ads23
-rw-r--r--gcc/testsuite/gnat.dg/slice8_pkg3.adb17
-rw-r--r--gcc/testsuite/gnat.dg/slice8_pkg3.ads11
-rw-r--r--gcc/testsuite/gnat.dg/unchecked_convert4.adb24
-rw-r--r--gcc/testsuite/lib/lto.exp10
-rw-r--r--gcc/testsuite/lib/target-supports.exp45
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-4.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/layout-1.mm2
-rw-r--r--gcc/toplev.h1
-rw-r--r--gcc/tree-cfg.c137
-rw-r--r--gcc/tree-chrec.h1
-rw-r--r--gcc/tree-dump.c4
-rw-r--r--gcc/tree-eh.c72
-rw-r--r--gcc/tree-flow.h6
-rw-r--r--gcc/tree-nested.c12
-rw-r--r--gcc/tree-parloops.c68
-rw-r--r--gcc/tree-pass.h2
-rw-r--r--gcc/tree-pretty-print.c3
-rw-r--r--gcc/tree-scalar-evolution.c15
-rw-r--r--gcc/tree-sra.c8
-rw-r--r--gcc/tree-ssa-dce.c29
-rw-r--r--gcc/tree-ssa-dom.c1
-rw-r--r--gcc/tree-ssa-forwprop.c8
-rw-r--r--gcc/tree-ssa-loop-im.c20
-rw-r--r--gcc/tree-ssa-operands.c4
-rw-r--r--gcc/tree-ssa-pre.c15
-rw-r--r--gcc/tree-ssa-reassoc.c2
-rw-r--r--gcc/tree-ssa-sink.c7
-rw-r--r--gcc/tree-ssa.c240
-rw-r--r--gcc/tree-ssanames.c2
-rw-r--r--gcc/tree-vect-stmts.c10
-rw-r--r--gcc/tree.c26
-rw-r--r--gcc/tree.def4
-rw-r--r--gcc/tree.h4
-rw-r--r--gcc/unwind-dw2.c12
-rw-r--r--gcc/var-tracking.c67
-rw-r--r--gcc/vmsdbgout.c11
-rw-r--r--include/ChangeLog16
-rw-r--r--include/dwarf2.h1
-rw-r--r--include/plugin-api.h8
-rw-r--r--include/splay-tree.h6
-rw-r--r--intl/ChangeLog6
-rw-r--r--intl/libgnuintl.h45
-rw-r--r--libcpp/ChangeLog25
-rw-r--r--libcpp/charset.c52
-rw-r--r--libcpp/directives.c6
-rw-r--r--libcpp/include/cpplib.h5
-rw-r--r--libcpp/include/line-map.h5
-rw-r--r--libcpp/internal.h4
-rw-r--r--libcpp/lex.c223
-rw-r--r--libcpp/line-map.c4
-rw-r--r--libcpp/macro.c3
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/cpplib.pot303
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/format.c3
-rw-r--r--libgomp/ChangeLog7
-rwxr-xr-xlibgomp/configure19
-rw-r--r--libgomp/configure.ac7
-rw-r--r--libgomp/testsuite/libgomp.graphite/force-parallel-2.c2
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/classpath/ChangeLog7
-rw-r--r--libjava/classpath/tools/classes/gnu/classpath/tools/jar/Creator.classbin7259 -> 6001 bytes
-rw-r--r--libjava/classpath/tools/gnu/classpath/tools/jar/Creator.java11
-rwxr-xr-xlibjava/configure80
-rw-r--r--libjava/configure.ac16
-rw-r--r--libstdc++-v3/ChangeLog159
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver4
-rw-r--r--libstdc++-v3/doc/html/api.html2
-rw-r--r--libstdc++-v3/doc/html/manual/abi.html24
-rw-r--r--libstdc++-v3/doc/html/manual/algorithms.html2
-rw-r--r--libstdc++-v3/doc/html/manual/api.html4
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_contributing.html2
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_free.html2
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_gpl.html4
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_porting.html4
-rw-r--r--libstdc++-v3/doc/html/manual/backwards.html48
-rw-r--r--libstdc++-v3/doc/html/manual/bitmap_allocator.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01ix01.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02pr01.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch08.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt09pr02.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12pr03.html2
-rw-r--r--libstdc++-v3/doc/html/manual/codecvt.html24
-rw-r--r--libstdc++-v3/doc/html/manual/containers.html2
-rw-r--r--libstdc++-v3/doc/html/manual/debug.html46
-rw-r--r--libstdc++-v3/doc/html/manual/diagnostics.html4
-rw-r--r--libstdc++-v3/doc/html/manual/documentation_style.html4
-rw-r--r--libstdc++-v3/doc/html/manual/exceptions.html2
-rw-r--r--libstdc++-v3/doc/html/manual/extensions.html2
-rw-r--r--libstdc++-v3/doc/html/manual/facets.html20
-rw-r--r--libstdc++-v3/doc/html/manual/internals.html8
-rw-r--r--libstdc++-v3/doc/html/manual/intro.html4
-rw-r--r--libstdc++-v3/doc/html/manual/io.html2
-rw-r--r--libstdc++-v3/doc/html/manual/iterators.html2
-rw-r--r--libstdc++-v3/doc/html/manual/locales.html18
-rw-r--r--libstdc++-v3/doc/html/manual/localization.html2
-rw-r--r--libstdc++-v3/doc/html/manual/make.html4
-rw-r--r--libstdc++-v3/doc/html/manual/memory.html20
-rw-r--r--libstdc++-v3/doc/html/manual/messages.html20
-rw-r--r--libstdc++-v3/doc/html/manual/numerics.html2
-rw-r--r--libstdc++-v3/doc/html/manual/parallel_mode.html4
-rw-r--r--libstdc++-v3/doc/html/manual/profile_mode.html2
-rw-r--r--libstdc++-v3/doc/html/manual/setup.html2
-rw-r--r--libstdc++-v3/doc/html/manual/shared_ptr.html22
-rw-r--r--libstdc++-v3/doc/html/manual/spine.html10
-rw-r--r--libstdc++-v3/doc/html/manual/status.html8
-rw-r--r--libstdc++-v3/doc/html/manual/strings.html2
-rw-r--r--libstdc++-v3/doc/html/manual/support.html2
-rw-r--r--libstdc++-v3/doc/html/manual/test.html7
-rw-r--r--libstdc++-v3/doc/html/manual/using.html6
-rw-r--r--libstdc++-v3/doc/html/manual/using_exceptions.html321
-rw-r--r--libstdc++-v3/doc/html/manual/using_headers.html12
-rw-r--r--libstdc++-v3/doc/html/manual/utilities.html8
-rw-r--r--libstdc++-v3/doc/html/spine.html8
-rw-r--r--libstdc++-v3/doc/xml/authors.xml13
-rw-r--r--libstdc++-v3/doc/xml/manual/appendix_porting.xml5
-rw-r--r--libstdc++-v3/doc/xml/manual/diagnostics.xml5
-rw-r--r--libstdc++-v3/doc/xml/manual/intro.xml5
-rw-r--r--libstdc++-v3/doc/xml/manual/using.xml30
-rw-r--r--libstdc++-v3/doc/xml/manual/using_exceptions.xml579
-rw-r--r--libstdc++-v3/include/bits/atomic_0.h5
-rw-r--r--libstdc++-v3/include/bits/atomic_2.h5
-rw-r--r--libstdc++-v3/include/bits/basic_string.h13
-rw-r--r--libstdc++-v3/include/bits/c++config6
-rw-r--r--libstdc++-v3/include/bits/random.h138
-rw-r--r--libstdc++-v3/include/bits/valarray_array.h31
-rw-r--r--libstdc++-v3/include/c_compatibility/stdatomic.h7
-rw-r--r--libstdc++-v3/include/parallel/for_each_selectors.h50
-rw-r--r--libstdc++-v3/include/precompiled/stdc++.h1
-rw-r--r--libstdc++-v3/include/std/future2
-rw-r--r--libstdc++-v3/include/std/random1
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py59
-rw-r--r--libstdc++-v3/src/atomic.cc8
-rw-r--r--libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc11
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.c34
-rw-r--r--libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc33
-rw-r--r--libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc27
-rw-r--r--libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc2
-rw-r--r--lto-plugin/ChangeLog33
-rw-r--r--lto-plugin/Makefile.am2
-rw-r--r--lto-plugin/Makefile.in5
-rwxr-xr-xlto-plugin/configure94
-rw-r--r--lto-plugin/configure.ac1
-rw-r--r--lto-plugin/lto-plugin.c135
504 files changed, 23124 insertions, 11299 deletions
diff --git a/ChangeLog b/ChangeLog
index 853bf1b7f2c..d8cbbd8dffd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2009-10-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (CLooG test): Use = with test.
+ * configure: Regenerate.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ * configure.ac: Do not set LIBS for ppl/cloog checks. Disable
+ cloog if the ppl version check failed. Move flags saving
+ before setting in libelf check.
+ * configure: Regenerate.
+
+2009-10-21 Richard Guenther <rguenther@suse.de>
+
+ * configure.ac: Adjust the ppl and cloog configure to work as
+ documented. Disable cloog if ppl was disabled. Omit the version
+ checks if they were disabled.
+ * configure: Re-generate.
+
+2009-10-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure.ac: Add 'lto' to enable_languages, not
+ new_enable_languages, and only if not already present.
+ * configure: Regenerate.
+
2009-10-10 Gerald Pfeifer <gerald@pfeifer.com>
* README: Refer to the various COPYING* files instead of just
diff --git a/MAINTAINERS b/MAINTAINERS
index 4f75f969c20..0b122acc12a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -454,6 +454,7 @@ Ghassan Shobaki ghassan.shobaki@amd.com
Johannes Singler singler@ira.uka.de
Franz Sirl franz.sirl-kernel@lauterbach.com
Jan Sjodin jan.sjodin@amd.com
+Edward Smith-Rowland 3dw4rd@verizon.net
Michael Sokolov msokolov@ivan.Harhan.ORG
Richard Stallman rms@gnu.org
Basile Starynkevitch basile@starynkevitch.net
diff --git a/config/ChangeLog b/config/ChangeLog
index ceea52ed782..4d50df66bbe 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2009-10-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acx.m4 (ACX_CHECK_CYGWIN_CAT_WORKS): Use = with test.
+
2009-09-09 Paolo Bonzini <bonzini@gnu.org>
* stdint.m4 (GCC_HEADER_STDINT): Revert changes to this macro in
diff --git a/config/acx.m4 b/config/acx.m4
index cea08b7204f..b559c03ebdf 100644
--- a/config/acx.m4
+++ b/config/acx.m4
@@ -605,7 +605,7 @@ dnl # See binutils PR 4334 for more details.
AC_DEFUN([ACX_CHECK_CYGWIN_CAT_WORKS],[
AC_MSG_CHECKING([to see if cat works as expected])
echo a >cygwin-cat-check
-if test `cat cygwin-cat-check` == a ; then
+if test `cat cygwin-cat-check` = a ; then
rm cygwin-cat-check
AC_MSG_RESULT(yes)
else
diff --git a/configure b/configure
index 76084ed5158..4af7b475754 100755
--- a/configure
+++ b/configure
@@ -3855,7 +3855,7 @@ case "${host}" in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if cat works as expected" >&5
$as_echo_n "checking to see if cat works as expected... " >&6; }
echo a >cygwin-cat-check
-if test `cat cygwin-cat-check` == a ; then
+if test `cat cygwin-cat-check` = a ; then
rm cygwin-cat-check
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -5750,7 +5750,7 @@ pplinc=
if test "${with_ppl+set}" = set; then :
withval=$with_ppl;
else
- with_ppl=no
+ with_ppl=yes
fi
@@ -5770,10 +5770,11 @@ case $with_ppl in
no)
ppllibs=
;;
+ yes)
+ ;;
*)
ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx"
pplinc="-I$with_ppl/include $pplinc"
- LIBS="$ppllibs $LIBS"
;;
esac
if test "x$with_ppl_include" != x; then
@@ -5781,12 +5782,10 @@ if test "x$with_ppl_include" != x; then
fi
if test "x$with_ppl_lib" != x; then
ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx"
- LIBS="$ppllibs $LIBS"
fi
if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then
ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '
pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include '
- LIBS="$ppllibs $LIBS"
fi
# Check whether --enable-ppl-version-check was given.
@@ -5797,7 +5796,7 @@ else
fi
-if test "${ENABLE_PPL_CHECK}" = "yes"; then
+if test "x$with_ppl" != "xno" -a "${ENABLE_PPL_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for version $ppl_major_version.$ppl_minor_version of PPL" >&5
@@ -5822,7 +5821,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; ppllibs= ; pplinc=
+$as_echo "no" >&6; }; ppllibs= ; pplinc= ; with_ppl=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$saved_CFLAGS"
@@ -5842,7 +5841,7 @@ clooginc=" -DCLOOG_PPL_BACKEND "
if test "${with_cloog+set}" = set; then :
withval=$with_cloog;
else
- with_cloog=no
+ with_cloog=yes
fi
@@ -5858,15 +5857,20 @@ if test "${with_cloog_lib+set}" = set; then :
fi
+if test "x$with_ppl" = "xno"; then
+ with_cloog=no
+fi
+
case $with_cloog in
no)
clooglibs=
clooginc=
;;
+ yes)
+ ;;
*)
clooglibs="-L$with_cloog/lib -lcloog"
clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
- LIBS="$clooglibs $LIBS"
;;
esac
if test "x$with_cloog_include" != x; then
@@ -5874,12 +5878,10 @@ if test "x$with_cloog_include" != x; then
fi
if test "x$with_cloog_lib" != x; then
clooglibs="-L$with_cloog_lib -lcloog"
- LIBS="$clooglibs $LIBS"
fi
if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog '
clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
- LIBS="$clooglibs $LIBS"
fi
# Check whether --enable-cloog-version-check was given.
@@ -5890,7 +5892,7 @@ else
fi
-if test "${ENABLE_CLOOG_CHECK}" = "yes"; then
+if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct version of CLooG" >&5
@@ -5957,6 +5959,10 @@ if test "${with_libelf_lib+set}" = set; then :
fi
+ saved_CFLAGS="$CFLAGS"
+ saved_CPPFLAGS="$CPPFLAGS"
+ saved_LIBS="$LIBS"
+
case $with_libelf in
"")
libelflibs="-lelf"
@@ -5985,10 +5991,6 @@ fi
LIBS="$libelflibs $LIBS"
fi
- saved_CFLAGS="$CFLAGS"
- saved_CPPFLAGS="$CPPFLAGS"
- saved_LIBS="$LIBS"
-
CFLAGS="$CFLAGS $libelfinc"
CPPFLAGS="$CPPFLAGS $libelfinc"
LIBS="$LIBS $libelflibs"
@@ -6593,7 +6595,10 @@ if test -d ${srcdir}/gcc; then
# If LTO is enabled, add the LTO front end.
extra_host_libiberty_configure_flags=
if test "$enable_lto" = "yes" ; then
- new_enable_languages="${new_enable_languages}lto,"
+ case ,${enable_languages}, in
+ *,lto,*) ;;
+ *) enable_languages="${enable_languages},lto" ;;
+ esac
if test "${ENABLE_GOLD}" = "yes" ; then
configdirs="$configdirs lto-plugin"
extra_host_libiberty_configure_flags=--enable-shared
diff --git a/configure.ac b/configure.ac
index c961fe8ba98..7fdf357febf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1514,7 +1514,7 @@ pplinc=
AC_ARG_WITH(ppl, [ --with-ppl=PATH Specify prefix directory for the installed PPL package
Equivalent to --with-ppl-include=PATH/include
- plus --with-ppl-lib=PATH/lib],, with_ppl=no)
+ plus --with-ppl-lib=PATH/lib],, with_ppl=yes)
AC_ARG_WITH(ppl_include, [ --with-ppl-include=PATH Specify directory for installed PPL include files])
AC_ARG_WITH(ppl_lib, [ --with-ppl-lib=PATH Specify the directory for the installed PPL library])
@@ -1522,10 +1522,11 @@ case $with_ppl in
no)
ppllibs=
;;
+ yes)
+ ;;
*)
ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx"
pplinc="-I$with_ppl/include $pplinc"
- LIBS="$ppllibs $LIBS"
;;
esac
if test "x$with_ppl_include" != x; then
@@ -1533,12 +1534,10 @@ if test "x$with_ppl_include" != x; then
fi
if test "x$with_ppl_lib" != x; then
ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx"
- LIBS="$ppllibs $LIBS"
fi
if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then
ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '
pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include '
- LIBS="$ppllibs $LIBS"
fi
AC_ARG_ENABLE(ppl-version-check,
@@ -1546,7 +1545,7 @@ AC_ARG_ENABLE(ppl-version-check,
ENABLE_PPL_CHECK=$enableval,
ENABLE_PPL_CHECK=yes)
-if test "${ENABLE_PPL_CHECK}" = "yes"; then
+if test "x$with_ppl" != "xno" -a "${ENABLE_PPL_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
AC_MSG_CHECKING([for version $ppl_major_version.$ppl_minor_version of PPL])
@@ -1554,7 +1553,7 @@ if test "${ENABLE_PPL_CHECK}" = "yes"; then
#if PPL_VERSION_MAJOR != $ppl_major_version || PPL_VERSION_MINOR != $ppl_minor_version
choke me
#endif
- ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ])
+ ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; with_ppl=no ])
CFLAGS="$saved_CFLAGS"
fi
@@ -1569,19 +1568,24 @@ clooginc=" -DCLOOG_PPL_BACKEND "
AC_ARG_WITH(cloog, [ --with-cloog=PATH Specify prefix directory for the installed CLooG-PPL package
Equivalent to --with-cloog-include=PATH/include
- plus --with-cloog-lib=PATH/lib],, with_cloog=no)
+ plus --with-cloog-lib=PATH/lib],, with_cloog=yes)
AC_ARG_WITH(cloog_include, [ --with-cloog-include=PATH Specify directory for installed CLooG include files])
AC_ARG_WITH(cloog_lib, [ --with-cloog-lib=PATH Specify the directory for the installed CLooG library])
+if test "x$with_ppl" = "xno"; then
+ with_cloog=no
+fi
+
case $with_cloog in
no)
clooglibs=
clooginc=
;;
+ yes)
+ ;;
*)
clooglibs="-L$with_cloog/lib -lcloog"
clooginc="-I$with_cloog/include -DCLOOG_PPL_BACKEND "
- LIBS="$clooglibs $LIBS"
;;
esac
if test "x$with_cloog_include" != x; then
@@ -1589,12 +1593,10 @@ if test "x$with_cloog_include" != x; then
fi
if test "x$with_cloog_lib" != x; then
clooglibs="-L$with_cloog_lib -lcloog"
- LIBS="$clooglibs $LIBS"
fi
if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog '
clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
- LIBS="$clooglibs $LIBS"
fi
AC_ARG_ENABLE(cloog-version-check,
@@ -1602,7 +1604,7 @@ AC_ARG_ENABLE(cloog-version-check,
ENABLE_CLOOG_CHECK=$enableval,
ENABLE_CLOOG_CHECK=yes)
-if test "${ENABLE_CLOOG_CHECK}" = "yes"; then
+if test "x$with_cloog" != "xno" -a "${ENABLE_CLOOG_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $clooginc $gmpinc $pplinc"
AC_MSG_CHECKING([for correct version of CLooG])
@@ -1634,6 +1636,10 @@ if test x"$enable_lto" = x"yes" ; then
AC_ARG_WITH(libelf_lib, [ --with-libelf-lib=PATH Specify the directory for the installed libelf library])
+ saved_CFLAGS="$CFLAGS"
+ saved_CPPFLAGS="$CPPFLAGS"
+ saved_LIBS="$LIBS"
+
case $with_libelf in
"")
libelflibs="-lelf"
@@ -1662,10 +1668,6 @@ if test x"$enable_lto" = x"yes" ; then
LIBS="$libelflibs $LIBS"
fi
- saved_CFLAGS="$CFLAGS"
- saved_CPPFLAGS="$CPPFLAGS"
- saved_LIBS="$LIBS"
-
CFLAGS="$CFLAGS $libelfinc"
CPPFLAGS="$CPPFLAGS $libelfinc"
LIBS="$LIBS $libelflibs"
@@ -1811,7 +1813,10 @@ if test -d ${srcdir}/gcc; then
# If LTO is enabled, add the LTO front end.
extra_host_libiberty_configure_flags=
if test "$enable_lto" = "yes" ; then
- new_enable_languages="${new_enable_languages}lto,"
+ case ,${enable_languages}, in
+ *,lto,*) ;;
+ *) enable_languages="${enable_languages},lto" ;;
+ esac
if test "${ENABLE_GOLD}" = "yes" ; then
configdirs="$configdirs lto-plugin"
extra_host_libiberty_configure_flags=--enable-shared
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 37258669eed..5ba356d40f6 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-21 Steve Ellcey <sje@cup.hp.com>
+
+ * inclhack.def (hpux_stdint_least_fast): Simplify.
+ * fixincl.x: Regenerate.
+ * tests/base/stdint.h: Update.
+
2009-09-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* inclhack.def (isc_fmod, isc_omits_with_stdc)
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
index b9b9b040f4d..2d6e1fcd9cf 100644
--- a/fixincludes/fixincl.x
+++ b/fixincludes/fixincl.x
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
- * It has been AutoGen-ed Tuesday September 15, 2009 at 06:55:13 AM CEST
+ * It has been AutoGen-ed Tuesday October 20, 2009 at 04:21:49 PM PDT
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT SVN-MERGE THIS FILE, EITHER Di 15. Sep 06:55:13 CEST 2009
+/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Oct 20 16:21:49 PDT 2009
*
* You must regenerate it. Use the ./genfixes script.
*
@@ -4082,11 +4082,7 @@ static tTestDesc aHpux_Stdint_Least_FastTests[] = {
*/
static const char* apzHpux_Stdint_Least_FastPatch[] = {
"format",
- "#ifdef __LP64__\n\
-# define\tUINT_%164_MAX\tULONG_MAX\n\
-#else\n\
-%0\n\
-#endif",
+ "# define\tUINT_%164_MAX\t__UINT64_MAX__",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
index 72841b31f7a..da4a94ce9f9 100644
--- a/fixincludes/inclhack.def
+++ b/fixincludes/inclhack.def
@@ -2213,16 +2213,9 @@ fix = {
select =
"^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX";
c_fix = format;
- c-fix-arg = <<- _EOFix_
- #ifdef __LP64__
- # define UINT_%164_MAX ULONG_MAX
- #else
- %0
- #endif
- _EOFix_;
- test-text = <<- _EOFix_
- # define UINT_FAST64_MAX ULLONG_MAX
- # define UINT_LEAST64_MAX ULLONG_MAX
+ c-fix-arg = "# define UINT_%164_MAX __UINT64_MAX__";
+ test-text = "# define UINT_FAST64_MAX ULLONG_MAX\n"
+ "# define UINT_LEAST64_MAX ULLONG_MAX\n";
_EOFix_;
};
diff --git a/fixincludes/tests/base/stdint.h b/fixincludes/tests/base/stdint.h
index 1c59442182f..3159505f3c3 100644
--- a/fixincludes/tests/base/stdint.h
+++ b/fixincludes/tests/base/stdint.h
@@ -146,16 +146,9 @@
#if defined( HPUX_STDINT_LEAST_FAST_CHECK )
-#ifdef __LP64__
-# define UINT_FAST64_MAX ULONG_MAX
-#else
-# define UINT_FAST64_MAX ULLONG_MAX
-#endif
-#ifdef __LP64__
-# define UINT_LEAST64_MAX ULONG_MAX
-#else
-# define UINT_LEAST64_MAX ULLONG_MAX
-#endif
+# define UINT_FAST64_MAX __UINT64_MAX__
+# define UINT_LEAST64_MAX __UINT64_MAX__
+
#endif /* HPUX_STDINT_LEAST_FAST_CHECK */
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b79f323a11e..e7068a9a543 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,1018 @@
+2009-10-23 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/41787
+ * config/rs6000/rs6000.c (struct machine_function): Add
+ vsx_or_altivec_used_p to record if vector types are used.
+ (rs6000_expand_to_rtl_hook): Rename from
+ rs6000_alloc_sdmode_stack_slot. If VSX, check to see if there are
+ any vector operations, so if there are, we can set VRSAVE to
+ non-zero when only floating point vector registers are used.
+ (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
+ (rs6000_check_vector_mode): Inner function to check if vector
+ types are used in the code.
+ (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
+ vector instructions are used.
+
+ * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
+ Indicate that VSX registers which overlap floating point
+ registers, can't be used across a call, since the ABI only states
+ the scalar part of the register will be saved and restored.
+
+2009-10-23 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/41673
+ * alias.c (get_alias_set): Call langhook before returning 0 for
+ types with structural equality.
+ * c-common.c (c_common_get_alias_set): Use alias set of element
+ type for arrays with structural comparison.
+
+2009-10-23 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/41805
+ * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
+ gimple_call_nothrow_p.
+
+2009-10-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41778
+ * tree-ssa-pre.c (do_regular_insertion): Only insert if a
+ redundancy along a path in the CFG we want to optimize for speed
+ is going to be removed.
+ (execute_pre): Do partial-PRE only if the function is to be
+ optimized for speed.
+ (gate_pre): Do not turn off all of PRE when not optimizing a
+ function for speed.
+
+2009-10-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (fold_builtin_cabs): Use validate_arg().
+ (fold_builtin_cexp): Fix if-logic.
+ (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
+
+2009-10-22 Jeff Law <law@redhat.com>
+
+ * ira-lives.c (process_single_reg_class_operands): Update the
+ hard reg costs for all the hard registers desired by the
+ single reg class operand.
+
+2009-10-22 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
+ for rtxes that aren't handled specially.
+
+2009-10-22 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (shallow_copy_rtvec): Declare.
+ * rtl.c (shallow_copy_rtvec): New function.
+ * cselib.c (cselib_subst_to_values): Use it. Only modify an
+ rtx field if the subrtx has changed.
+
+2009-10-22 Anatoly Sokolov <aesok@post.ru>
+
+ * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
+ (m32c_function_value): Make static, add new 'outgoing' argument.
+ (m32c_libcall_value): Make static, add new 'fun' argument.
+ (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
+ * config/m32c/m32c.h: (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
+ (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
+ * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
+ (m32c_function_value, m32c_libcall_value): Delete declaration.
+
+2009-10-22 Diego Novillo <dnovillo@google.com>
+
+ * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
+
+2009-10-22 Razya Ladelsky <razya@il.ibm.com>
+
+ * testsuite/gcc.dg/autopar/outer-4.c: Adjust scan.
+ * testsuite/gcc.dg/autopar/outer-5.c: Adjust scan.
+ * testsuite/gcc.dg/autopar/outer-5.c: Add scan optimized.
+ * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
+ space.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
+ * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
+ (lto_symtab_merge): Do not merge cgraph nodes here.
+ (lto_symtab_resolve_can_prevail_p): Simplify.
+ (lto_symtab_resolve_symbols): Store cgraph node.
+ (lto_symtab_merge_decls_1): Simplify. Do not drop non-prevailing
+ functions from the symtab.
+ (lto_symtab_merge_cgraph_nodes_1): New function.
+ (lto_symtab_merge_cgraph_nodes): Likewise.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41791
+ * lto-streamer-out.c (lto_output_location): Stream the
+ system header flag.
+ * lto-streamer-in.c (lto_input_location): Likewise.
+
+2009-10-22 Razya Ladelsky <razya@il.ibm.com>
+
+ * cfgloopmanip.c (duplicate_subloops): Export.
+ * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
+ (transform_to_exit_first_loop): Duplicate bbs starting from
+ header up to loop->latch instead of exit->src.
+ Initialize control variable to the correct number of iterations.
+ (gather_scalar_reductions): Do not register double reductions.
+ (parallelize_loops): Dump which loop is tested.
+ Indicate whether the parallelized loop is inner or not.
+ Remove the innermost-loop requirement.
+ * cfgloop.h (duplicate_subloops): Export.
+ * tree-cfg.c (add_phi_args_after_redirect): New function.
+ (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
+ Call duplicate_subloops.
+ Update number of iterations at the exit condition.
+ Don't redirect nexits always to the loop exit.
+ Redirect copied edges from latch to the loop exit.
+ * testsuite/libgomp.graphite/force-parallel-2.c: Adjust scan.
+ * testsuite/gcc.dg/autopar/outer-1.c: New testcase.
+ * testsuite/gcc.dg/autopar/outer-2.c: New testcase.
+ * testsuite/gcc.dg/autopar/outer-3.c: New testcase.
+ * testsuite/gcc.dg/autopar/outer-4.c: New testcase.
+ * testsuite/gcc.dg/autopar/outer-5.c: New testcase.
+ * testsuite/gcc.dg/autopar/outer-6.c: New testcase.
+
+2009-10-22 Jan Hubicka <jh@suse.cz>
+
+ * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
+ flag_ltrans check.
+ * ipa-inline.c (cgraph_mark_inline_edge,
+ cgraph_decide_inlining_of_small_function,
+ cgraph_decide_inlining, inline_read_summary): Disable indirect inlining
+ for WPA for time being.
+
+ PR tree-optimize/40556
+ * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ * lto-streamer.h (lto_symtab_clear_resolution): Remove.
+ * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
+
+2009-10-22 Jan Hubicka <jh@suse.cz>
+
+ PR lto/41730
+ * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
+ global vars.
+ (check_call): Handle only indirect calls.
+ (propagate_bits): Update comment.
+ (write_node_summary_p): Turn bogus check to assert.
+ (ipa_reference_write_summary): Stream calls_read_all properly.
+ (ipa_reference_read_summary): Stream in calls_read_all properly.
+ (read_write_all_from_decl): New function.
+ (propagate): Handle OVERWRITABLE nodes and external calls here.
+ * ipa-pre-const.c (check_call): In IPA mode handle indirect calls
+ only.
+ (analyze_function): Do not check visibility here.
+ (add_new_function): We summary OVERWRITABLE too.
+ (generate_summary): Stream OVERWRITABLE nodes too.
+ (propagate): Handle external calls and OVERWRITABLE nodes here.
+ (local_pure_const): Check visibility here.
+
+2009-10-22 Jan Hubicka <jh@suse.cz>
+
+ * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
+ (pass_ipa_cp): Register them.
+ (ipcp_init_stage): Analyze all functions for whopr/lto.
+ (ipcp_propagate_stage): Skip external calls.
+ (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
+ * ipa-reference.c (write_node_summary_p): Fix thinko about availability.
+ * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
+ when in ltrans, skip executing of ipa passes since everything should've
+ been done.
+ * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
+ (inline_generate_summary): Likewise.
+ (inline_read_summary): New function.
+ (inline_write_summary): New function.
+ (pass_ipa_inline): Register new hooks.
+ * ipa-prop.c: Inlcude lto-streamer.h
+ (ipa_edge_args_vector): Update declaration.
+ (ipa_count_arguments, ipa_compute_jump_functions,
+ ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
+ (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
+ ipa_read_node_info): New static functions.
+ (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
+ (duplicate_array): Use xmalloc.
+ (duplicate_ggc_array): New.
+ (ipa_edge_duplication_hook): Use it.
+ (ipa_update_after_lto_read): New function.
+ * ipa-prop.h (ipa_prop_write_jump_functions,
+ ipa_prop_read_jump_functions): Declare.
+ (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
+ jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
+ (ipa_edge_args_vector): Move into GGC.
+ (ipa_check_create_edge_args): Update.
+ (ipa_update_after_lto_read): New.
+ * passes.c (ipa_write_summaries_1): When in wpa, do not write summaries.
+ (ipa_read_summaries): When in ltrans, so not read summaries.
+ * lto-streamer.c (lto_get_section_name): Add LTO_section_jump_functions.
+ * lto-streamer.h (LTO_section_jump_functions): New section.
+ (produce_asm): Declare.
+ * lto-cgraph.c (output_cgraph): Output edges in reverse order.
+ * lto-streamer-out.c (produce_asm): Export.
+ * lto-streamer-in.c: Include tree-pass.h
+ (input_function): Free dominance info when done.
+ (lto_read_body): Push ipa_inline in ltrans stage.
+ * gengtype.c (open_base_files): Add ipa-prop.h into includes.
+ * Makefile.in (GTFILES): Add ipa-prop.h
+
+2009-10-22 Matthias Klose <doko@ubuntu.com>
+
+ * doc/install.texi: Document --enable-browser-plugin.
+
+2009-10-21 Vladimir Makarov <vmakarov@redhat.com>
+
+ * doc/invoke.texi (fira-loop-pressure): Update default value.
+ * opts.c (decode_options): Remove default value setting for
+ flag_ira_loop_pressure.
+ * config/ia64/ia64.c (ia64_override_options): Set
+ flag_ira_loop_pressure up for -O3.
+ * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
+
+2009-10-21 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/41497
+ * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
+ chrec_dont_know if the evolution function returned by follow_ssa_edge
+ is constant in the analyzed loop and is not compatible with the
+ initial value before the loop.
+ * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
+
+2009-10-21 Joseph Myers <joseph@codesourcery.com>
+
+ * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
+
+2009-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR other/25507
+ * doc/invoke.texi: Document -print-multi-os-directory.
+
+2009-10-21 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR c++/41313
+ * gcc/config/darwin10.h: Use default_emit_unwind_label.
+ * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
+ when darwin_emit_unwind_label is used.
+
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
+ order of checks.
+
+2009-10-20 Richard Henderson <rth@redhat.com>
+
+ * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
+ before emit_post_landing_pad.
+
+2009-10-20 Adam Nemet <anemet@caviumnetworks.com>
+
+ * config/mips/mips.c (mips_binary_cost): Add new argument speed.
+ Use when calling rtx_costs.
+ (mips_rtx_costs): Fix formatting. Use argument speed rather than the
+ global optimize_size. Pass speed to mips_binary_cost.
+
+2009-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
+ of TREE_CONSTANT.
+
+2009-10-20 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (simplify_replace_fn_rtx): Declare.
+ (wrap_constant, unwrap_constant): Delete.
+ * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
+ (expand_debug_expr): Don't call wrap_constant.
+ * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
+ (auto_adjust_pair): Fold into...
+ (propagate_for_debug_subst): ...here. Only define for AUTO_INC_DEC.
+ Just return a new value.
+ (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
+ otherwise use simplify_replace_rtx.
+ * cselib.c (wrap_constant): Reinstate old definition.
+ (cselib_expand_value_rtx_1): Don't wrap constants.
+ * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
+ simplify_replace_rtx.
+ (bypass_block): Fix formatting in calls to simplify_replace_rtx.
+ * reload1.c (reload): Skip all uses for an insn before adjusting it.
+ Use simplify_replace_rtx.
+ * simplify-rtx.c (simplify_replace_fn_rtx): New function,
+ adapted from...
+ (simplify_replace_rtx): ...here. Turn into a wrapper for
+ simplify_replace_fn_rtx.
+ (simplify_unary_operation): Don't unwrap CONSTs.
+ * var-tracking.c (check_wrap_constant): Delete.
+ (vt_expand_loc_callback): Don't call it.
+ (vt_expand_loc): Likewise.
+
+2009-10-20 Pascal Obry <obry@adacore.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
+
+2009-10-20 Michael Matz <matz@suse.de>
+
+ * loop-invariant.c (create_new_invariant): Use different magic number.
+
+2009-10-20 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/39247
+ * arm.c (arm_override_options): Forcibly disable hot/cold block
+ partitioning.
+
+2009-10-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41739
+ * haifa-sched.c (try_ready): Skip debug deps updating speculation
+ status.
+
+2009-10-20 Richard Guenther <rguenther@suse.de>
+
+ * ggc-page.c: Include cfgloop.h.
+ (struct max_alignment): Drop long double, add void *.
+ (extra_order_size_table): Add low non-power-of-two multiples
+ of MAX_ALIGNMENT. Drop small type-based entries, add
+ tree_type, cgraph_node and loop.
+ * alloc-pool.c (struct allocation_object_def): Drop long double
+ aligning element.
+
+2009-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/41340
+ * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
+ referenced just in DEBUG_INSNs.
+
+2009-10-20 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41761
+ * gimple.c (gimple_register_type): Make sure we register
+ the types main variant first.
+
+2009-10-20 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (gimple_types_compatible_p): Simplify. Move
+ cheap checks before hashtable queries. Add checks for
+ TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
+
+2009-10-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
+ without size or with size that can't be represented as a host integer.
+
+2009-10-20 Alexandre Oliva <aoliva@redhat.com>
+
+ * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
+ the removal of a debug stmt as a significant change.
+
+2009-10-20 Wolfgang Gellerich <gellerich@de.ibm.com>
+
+ * config/s390/s390.md: Added agen condition to operand
+ forwarding bypasses.
+ Added bypass for early address generation use of int results.
+ Updated comments.
+
+2009-10-20 Stefan Dösinger <stefan@codeweavers.com>
+
+ * config/i386/i386.c: Remove signal.h #include.
+
+2009-10-20 Jie Zhang <jie.zhang@analog.com>
+
+ * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
+ * doc/rtl.texi: Document ss_abs.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
+ * c-lex.c (c_lex_with_flags): Likewise. Test C_LEX_STRING_NO_JOIN
+ instead of C_LEX_RAW_STRINGS.
+ (lex_string): Handle CPP_UTF8STRING.
+ * c-parser.c (c_parser_postfix_expression): Likewise.
+ * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
+ (C_LEX_STRING_NO_JOIN): ... this.
+
+2009-10-19 Anatoly Sokolov <aesok@post.ru>
+
+ * config/cris/cris.c (cris_function_value, cris_libcall_value,
+ cris_function_value_regno_p): New functions.
+ (cris_promote_function_mode): Update comment.
+ (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
+ * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
+ (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
+ * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * unwind-dw2.c (execute_stack_op): Fix operand order for
+ DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
+
+2009-10-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple-low.c (struct lower_data): Add cannot_fallthru field.
+ (lower_stmt) <GIMPLE_BIND>: Add comment.
+ <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
+ and return.
+ <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
+ Otherwise lower it and set cannot_fallthru to true.
+ <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
+ <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
+ <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
+ to true for a noreturn call. Do not remove statements.
+ <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
+ Set cannot_fallthru to false on function exit.
+ (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
+ <GIMPLE_ASSIGN>: Remove.
+
+2009-10-19 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
+
+2009-10-19 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_z10_optimize_cmp): Use
+ next/prev_active_insn to skip DEBUG_INSNs as well.
+
+2009-10-19 Joseph Myers <joseph@codesourcery.com>
+
+ * config/arm/arm.c (output_move_neon): Use DImode in call to
+ adjust_address.
+
+2009-10-19 Matthias Klose <doko@ubuntu.com>
+
+ PR target/40134
+ * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
+
+2009-10-17 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
+
+ PR middle-end/41738
+ * optabs.c (expand_binop): Make mode of shift count expression mode
+ of shift count not target.
+ Remove indent nit.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
+ case. Force using values to replace references within the statement.
+ (convert_local_reference_stmt): Likewise.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
+ remove a subsequent GOTO or RETURN statement.
+
+2009-10-17 Andy Hutchinson <hutchinsonandy@aim.com>
+
+ * config/avr.md (*movqi): Add zero as equally preferable constraint
+ as general register.
+ (*movhi): Ditto.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
+
+2009-10-17 Richard Guenther <rguenther@suse.de>
+
+ * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
+
+2009-10-17 Richard Guenther <rguenther@suse.de>
+
+ * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
+ operands in COMPONENT_REFs.
+
+2009-10-17 Anatoly Sokolov <aesok@post.ru>
+
+ * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
+ if not defined. Change type of second argument to const_rtx.
+ (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
+ macro not defined.
+ * targhooks.h (default_libcall_value): Update prototype.
+ * target.h (struct gcc_target): Change type of second argument of
+ libcall_value to const_rtx.
+ * config/arm/arm.c (arm_libcall_value): Change type of second argument
+ to const_rtx.
+ (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
+ * doc/tm.texi (TARGET_LIBCALL_VALUE): Revise documentation.
+
+2009-10-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/40521
+ * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
+ * cgraphunit.c (cgraph_optimize): Call it.
+ * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
+ (dwarf2out_assembly_start): ... here. New hook.
+ (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
+ * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
+ hook.
+ * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
+ * sdbout.c (sdb_debug_hooks): Likewise.
+ * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
+ (vmsdbgout_assembly_start): New hook.
+
+2009-10-17 Alexandre Oliva <aoliva@redhat.com>
+
+ * rtl.h (RTL_LOCATION): Fix typo.
+
+2009-10-17 Alexandre Oliva <aoliva@redhat.com>
+
+ * print-rtl.c (print_rtx): Print locators in asm_operands
+ and asm_input.
+
+2009-10-17 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41535
+ * sched-deps.c (depl_on_debug_p): New.
+ (attach_dep_link): Reject debug deps before nondebug deps.
+ (add_to_deps_list): Insert debug deps after nondebug deps.
+ (sd_lists_empty_p): Stop at first nonempty list. Disregard debug
+ deps.
+ (sd_add_dep): Do not reject debug deps.
+ (add_insn_mem_dependence): Don't count debug deps.
+ (remove_from_deps): Likewise.
+ (sched_analyze_2): Set up mem deps on debug insns.
+ (sched_analyze_insn): Record reg uses for deps on debug insns.
+ * haifa-sched.c (schedule_insn): Reset deferred debug insn. Don't
+ try_ready nondebug insn after debug insn.
+ * ddg.c (create_ddg_dep_from_intra_loop_link,
+ create_ddg_dep_no_link): Don't reject debug deps.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
+ (maybe_merge_incomplete_and_complete_type): Likewise.
+ (lto_symtab_merge): Do not call them. Do not warn for
+ complete vs. incomplete compatible types.
+ (lto_symtab_merge_decls_2): Simplify.
+ * gimple.c (gimple_force_type_merge): Remove.
+ (gimple_types_compatible_p): Make it static.
+ * gimple.h (gimple_force_type_merge): Remove.
+ (gimple_types_compatible_p): Likewise.
+
+2009-10-16 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
+ DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41728
+ * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
+ if fold_stmt did anything.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41715
+ * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
+ (maybe_fixup_handled_component): New function.
+ (input_gimple_stmt): Fixup mismatched decl replacements.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41713
+ * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
+ the same as VAR_DECL.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (iterative_hash_gimple_type): For integer types
+ also hash their minimum and maximum values and the string flag.
+ For array types hash their domain and the string flag.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (gimple_types_compatible_p): Restrict completing
+ types to record or unions. Simplify completion.
+ Do not merge records or unions with different
+ TYPE_STRUCTURAL_EQUALITY_P tag.
+ (iterative_hash_gimple_type): Restrict non-recursing into
+ pointer targets for records and unions.
+
+2009-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/41717
+ * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
+ * dwarf2out.c (mem_loc_descriptor): Don't handle
+ POST_INT/POST_DEC/POST_MODIFY like SUBREG. For SUBREG
+ punt if it is not lowpart subreg or if inner mode isn't
+ MODE_INT.
+
+2009-10-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
+ investigating previous or next insns.
+
+2009-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-sra.c (build_ref_for_offset_1): Update comment.
+
+2009-10-16 Wolfgang Gellerich <gellerich@de.ibm.com>
+
+ * config/s390/s390.md (atype): Added missing values.
+
+2009-10-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/41702
+ * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
+ (casesi64p): Update pattern to reflect above.
+
+2009-10-15 Steve Ellcey <sje@cup.hp.com>
+
+ PR rtl-optimization/41697
+ * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
+
+2009-10-15 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/23983
+ * config/rs6000/predicates.md: Update copyright year.
+ * config/rs6000/altivec.md: Ditto.
+
+ * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
+ (MD_INCLUDES): Add a2.md.
+
+ * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
+ RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
+ (builtin_classify): New static vector to classify various builtins
+ to get the tree attributes correct.
+ (def_builtin): Set the attributes of builtins based on what the
+ builtin does (i.e. memory operation, floating point, saturation
+ need special attributes, others are pure functions).
+
+ * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
+ the builtins.
+ (enum rs6000_builtins): Include rs6000-builtin.def to define the
+ builtins. Change the end marker to MAX_RS6000_BUILTINS from
+ RS6000_BUILTIN_COUNT.
+ (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
+ MAX_RS6000_BUILTINS.
+
+ * config/rs6000/rs6000-builtin.def: New file that combines the
+ builtin enumeration name and attributes.
+
+2009-10-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/linux.h (ASM_SPEC): Add --32.
+
+2009-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
+ and DW_TAG_template_alias.
+ (dwarf_attr_name): Handle DW_AT_main_subprogram,
+ DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
+ DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
+ DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
+ DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
+ and DW_AT_GNU_odr_signature.
+ (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
+ DW_FORM_flag_present and DW_FORM_ref_sig8.
+ (output_signature): Only print name on the first byte.
+ (output_die): Likewise for dw_val_class_data8.
+
+2009-10-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * doc/invoke.texi: Clarify that most optimizations are not enabled
+ without -O.
+
+2009-10-15 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41668
+ * gimple.c (compare_type_names_p): Handle anonymous names
+ differently based on new mode argument.
+ (gimple_types_compatible_p): For structs also compare the tags.
+ (iterative_hash_type_name): Rename to ...
+ (iterative_hash_name): ... this. Hash all names.
+ (iterative_hash_gimple_type): Fix hashing the struct tag of
+ pointer targets. Hash field decl names.
+
+2009-10-15 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41669
+ * gimple.c (gimple_get_alias_set): Avoid recursing on
+ invalid type topology.
+
+2009-10-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
+
+2009-10-15 Richard Guenther <rguenther@suse.de>
+
+ * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
+
+2009-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
+ add --with-tune{,-32,-64} configured default for -mtune if explicit
+ -mcpu is used.
+
+2009-10-14 Daniel Gutson <dgutson@codesourcery.com>
+
+ * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
+
+2009-10-14 DJ Delorie <dj@redhat.com>
+
+ * config/h8300/h8300.c (F): New.
+ (Fpa): New.
+ (h8300_emit_stack_adjustment): Call them.
+ (push): Likewise.
+ (h8300_push_pop): Likewise.
+ (h8300_expand_prologue): Likewise.
+ * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
+ (MUST_USE_SJLJ_EXCEPTIONS): Define.
+ (INCOMING_RETURN_ADDR_RTX): Define.
+ (INCOMING_FRAME_SP_OFFSET): Define.
+ (DWARF_CIE_DATA_ALIGNMENT): Define.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ * stor-layout.c (place_field): Don't emit -Wpadded warnings for
+ fields in builtin structs.
+ (finalize_record_size): Likewise.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (gtc_ob): New global.
+ (struct type_pair_d): Replace pointers with type UIDs.
+ (type_pair_hash): Adjust.
+ (type_pair_eq): Likewise.
+ (lookup_type_pair): Likewise. Allocate from an obstack.
+ (gimple_force_type_merge): Adjust.
+ (gimple_types_compatible_p): Likewise.
+ (free_gimple_type_tables): Free the obstack.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
+ stmts setting DEBUG_EXPR_DECLs.
+
+ * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
+ Don't crash if mode1 is VOIDmode.
+
+2009-09-26 Vladimir Makarov <vmakarov@redhat.com>
+
+ * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
+ * params.h (IRA_LOOP_RESERVED_REGS): New.
+ * tree-pass.h (pass_subregs_of_mode_init,
+ pass_subregs_of_mode_finish): Remove.
+ * passes.c (pass_subregs_of_mode_init,
+ pass_subregs_of_mode_finish): Remove.
+ (pass_reginfo_init): Move before loop optimizations.
+ * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
+ * common.opt (fira-loop-pressure): New.
+ * toplev.h (flag_ira_loop_pressure): New.
+ * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
+ * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
+ Make external and void type functions.
+ (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
+ pass_subregs_of_mode_finish): Remove.
+ * ira-costs.c (init_costs): Call init_subregs_of_mode.
+ * regmove.c: Include ira.h.
+ (regmove_optimize): Call ira_set_pseudo_classes after IRA based
+ register pressure calculation in loops.
+ * loop-invariant.c: Include REGS_H and ira.h.
+ (struct loop_data): New members max_reg_pressure, regs_ref, and
+ regs_live.
+ (struct invariant): New member orig_regno.
+ (curr_loop): New variable.
+ (find_exits): Initialize regs_ref and regs_live.
+ (create_new_invariant): Initialize orig_regno.
+ (get_cover_class_and_nregs): New.
+ (get_inv_cost): Make aregs_needed an array. Use regs_needed as an
+ array. Add code for flag_ira_loop_pressure.
+ (gain_for_invariant): Make new_regs an array. Add code for
+ flag_ira_loop_pressure.
+ (best_gain_for_invariant): Ditto.
+ (set_move_mark): New parameter gain. Use it for debugging output.
+ (find_invariants_to_move): Make regs_needed and new_regs an array.
+ Add code for flag_ira_loop_pressure.
+ (move_invariant_reg): Set up orig_regno.
+ (move_invariants): Set up reg classes for pseudos for
+ flag_ira_loop_pressure.
+ (free_loop_data): Clear regs_ref and regs_live.
+ (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
+ get_regno_cover_class, change_pressure, mark_regno_live,
+ mark_regno_death, mark_reg_store, mark_reg_clobber,
+ mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
+ (move_loop_invariants): Calculate pressure. Initialize curr_loop.
+ * ira.c (ira): Call ira_set_pseudo_classes after IRA based
+ register pressure calculation in loops if new regs were added.
+ Call finish_subregs_of_mode.
+ * opts.c (decode_options): Set up flag_ira_loop_pressure.
+ * Makefile.in (loop-invariant.o): Add ira.h.
+ (regmove.o): Ditto.
+ * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
+ Describe.
+ * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ * lto-symtab.c (lto_symtab_compatible): Fold in ...
+ (lto_symtab_merge): ... here. Rewrite both to take the
+ prevailing and a to-be-merged entry and to queue diagnostics properly.
+ (lto_symtab_resolve_replaceable_p): New predicate for
+ symbol resolution.
+ (lto_symtab_resolve_can_prevail_p): Likewise.
+ (lto_symtab_resolve_symbols): Rewrite. Fold in code that
+ handles merging commons by choosing the largest decl. Fold
+ in code that gives ODR errors.
+ (lto_symtab_merge_decls_2): Simplify a lot. Emit queued
+ diagnostics here.
+ (lto_symtab_merge_decls_1): Re-structure. Deal with the
+ case of no prevailing decl here. Diagnose mismatches
+ in object types here. Drop all but the prevailing decls.
+ (lto_symtab_prevailing_decl): Return the single prevailing decl.
+ * lto-streamer-in.c (lto_input_tree_ref): Deal with
+ VIEW_CONVERT_EXPRs in decl slots. Unshare the tree in this case.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41521
+ * lto-streamer-in.c (input_bb): Replace debug stmts with
+ nops instead of dropping them.
+
+2009-10-14 Nick Clifton <nickc@redhat.com>
+
+ * gcc/doc/extended.texi: Replace the dash character with @minus{}
+ in situations where it is being used as a minus symbol.
+ * gcc/doc/tm.texi: Likewise.
+ * gcc/doc/md.texi: Likewise.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/41543
+ * input.h (BUILTINS_LOCATION): Change to 1 from 2.
+ Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
+ * tree.c: Include intl.h.
+ (expand_location): Handle BUILTINS_LOCATION.
+ * Makefile.in (tree.o): Depend on intl.h.
+
+ PR debug/41695
+ * dwarf2out.c (dwarf2out_var_location): Always clear
+ last_postcall_label when changing last_label.
+
+2009-10-14 Pascal Obry <obry@adacore.com>
+
+ * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
+ (process_command): Handle -E as done with -c and -S. Do not add
+ the target executable suffix to the output file when -E is used.
+ (main): Adjust error message accordingly.
+
+2009-10-14 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41343
+ PR debug/41447
+ PR debug/41264
+ PR debug/41338
+ * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
+ decl with rtl.
+ (tree_code_size): Likewise.
+
+2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (fold_builtin_1): Support complex "arc" functions.
+ * real.h (HAVE_mpc_arc): Define.
+
+2009-10-14 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
+ (struct builtin_description): Add fndecl field.
+ (bdesc): Remove const qualifier. Update initializer.
+ (sh_media_init_builtins): Remove const qualifier for d. Record
+ the result of add_builtin_function to the fndecl field.
+ (sh_builtin_decl): New.
+ (sh_media_builtin_decl): New.
+
+2009-10-14 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/38948
+ * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
+ requests between special registers.
+
+2009-10-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
+
+2009-10-13 Richard Henderson <rth@redhat.com>
+
+ PR tree-optimization/41377
+ * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
+ (cleanup_empty_eh_merge_phis): New change_region parameter;
+ pass it on to redirect_eh_edge_1. Update callers.
+ (cleanup_empty_eh_unsplit): Don't require an existing EH label
+ at the destination block.
+
+2009-10-13 Basile Starynkevitch <basile@starynkevitch.net>
+
+ * passes.c (register_pass): Replaced gcc_unreachable by
+ fatal_error on failure. Mentions plugins in comments & messages.
+
+2009-10-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/41693
+ * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
+ * sched-vis.c (print_value): Use it.
+ * cselib.c (cselib_hash_rtx): Likewise.
+ * print-rtl.c (print_rtx): Likewise.
+ * cfgexpand.c (expand_debug_rtx): Likewise.
+ * var-tracking.c (vt_expand_loc_callback): Likewise.
+
+2009-10-13 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41565
+ * opts.c (handle_option): Split out code to handle setting
+ the options flag var ...
+ (set_option): ... here.
+ * opts.h (set_option): Declare.
+ * lto-opts.c (register_user_option_p): Include -fexceptions
+ and all position independent code variants.
+ (handle_common_option): Remove.
+ (lto_reissue_options): Use set_option.
+
+2009-10-13 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/41661
+ * ipa-prop.c (compute_complex_pass_through): Allow only operations
+ that are tcc_comparisons or do not change the type in any
+ un-usleless way.
+ * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
+ folding tcc_comparison operations.
+
+2009-10-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
+ properly.
+
+2009-10-12 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41343
+ PR debug/41447
+ PR debug/41264
+ PR debug/41338
+ * tree.def (DEBUG_EXPR_DECL): New.
+ * rtl.def (DEBUG_EXPR): New.
+ * gengtype.c (adjust_field_rtx_def): Handle it.
+ * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
+ (insert_debug_temp_for_var_def): ... this. Drop support for
+ moving. Take iterator for def stmt; insert debug stmt before it.
+ Scan early for use count and kind in debug stmts.
+ (propagate_defs_into_debug_stmts): Rename to...
+ (insert_debug_temps_for_defs): ... this. Likewise.
+ * tree.h (DEBUG_TEMP_UID): New.
+ * tree.c (next_debug_decl_uid): New.
+ (make_node_stat): Count debug decls separately.
+ (copy_node_stat): Likewise.
+ * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
+ * var-tracking.c (dv_is_decl_p): Recognize it.
+ (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
+ (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
+ (vt_expand_loc_callback): Expand DEBUG_EXPRs.
+ (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
+ * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
+ (cselib_hash_rtx): Likewise.
+ (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
+ * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
+ debug bind stmts.
+ * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
+ (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
+ * rtl.c (copy_rtx): Likewise.
+ (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
+ * print-rtl.c (print_rtx): Likewise.
+ * sched-vis.c (print_value): Likewise.
+ (print_insn): Handle DEBUG_EXPR_DECL.
+ * tree-dump.c (dequeue_and_dump): Likewise.
+ * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
+ * gimple-iterator (gsi_replace): Check for same lhs.
+ (gsi_remove): Insert debug temps.
+ * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
+ (move_computations_stmt): Drop explicit propagation into debug stmts.
+ (rewrite_bittest): Likewise. Use gsi_remove for propagation.
+ * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
+ * tree-ssa-sink.c (statement_sink_location): Likewise.
+ * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
+ * tree-ssanames.c (release_ssa_name): Adjust for rename.
+ * tree-flow.h: Likewise.
+ * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
+ debug temps without values.
+ (eliminate_unnecessary_stmts): Don't discard just-inserted
+ debug stmts.
+
+2009-10-12 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/26515
+ * config/cris/cris.md (andu): Check that operand 1 is one of the
+ general registers. Fix typo in head comment.
+
+2009-10-12 Stefan Dösinger <stefan@codeweavers.com>
+
+ * config/i386/i386.md (vswapmov): New.
+ * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
+ (ix86_function_ms_hook_prologue): New.
+ (ix86_expand_prologue): Handle ms_hook_prologue attribute.
+ * configure.ac: Test for swap suffix support in as.
+ * configure: Rebuild.
+
2009-10-12 Jakub Jelinek <jakub@redhat.com>
PR target/41680
@@ -7,8 +1022,7 @@
2009-10-12 Uros Bizjak <ubizjak@gmail.com>
- * config/i386/i386.md (*setcc_<mode>_2): Do not use ix86_expand_clear
- to zero operand 0.
+ * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
2009-10-12 Dodji Seketeli <dodji@redhat.com>
@@ -118,7 +1132,7 @@
(ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
(processor_type): Add PROCESSOR_PPC476.
(EXTRA_SPECS): Add asm_cpu_476 string.
- * config/rs6000/rs6000.md: (define_attr "type"): Add isel attribute.
+ * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
(define_attr "cpu"): Add ppc476.
Include 476.md.
Update comments for 476.
@@ -1695,7 +2709,7 @@
(x86_64-*-*): Ditto.
* config/i386/smmintrin.h: Move instructions in mmintrin-common.h
back to smmintrin.h.
- * config/i386/cpuid.h: (bit_SSE5): Remove SSE5 bit.
+ * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
* config/i386/x86intrin.h: Remove SSE5.
* config/i386/mmintrin-common.h: Delete file.
* doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
@@ -7763,7 +8777,7 @@
(function_value): Adjust for above modification.
(alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
virtual_incoming_args_rtx as base object, not next_arg.
- * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
+ * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
2009-08-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
@@ -7856,7 +8870,7 @@
* config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
(DO_CRTL_NAMES): Define.
(LIB_SPEC): Remove.
- * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
+ * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
(LONG_TYPE_SIZE): Define.
(TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
(SUBTARGET_SWITCHES): Define malloc64 switch.
@@ -9748,7 +10762,7 @@
combined_args_to_skip and args_to_skip.
* tree-inline.c (update_clone_info): New function.
(tree_function_versioning): Call update_clone_info.
- * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
+ * cgraphunit.c (cgraph_materialize_clone): Dump materialized
functions.
(cgraph_materialize_all_clones): More extensive dumping, working
with combined_args_to_skip rather than args_to_skip.
@@ -10078,7 +11092,7 @@
* doc/sourcebuild.texi: Document install-plugin target.
* configure.ac: Added install-plugin target to language makefiles.
* configure: Regenerate.
- * Makefile.in: (install-plugin): Install more headers,
+ * Makefile.in (install-plugin): Install more headers,
depend on lang.install-plugin.
2009-07-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
@@ -10407,7 +11421,7 @@
2009-07-08 DJ Delorie <dj@redhat.com>
- * config/mep/mep.c: (mep_option_can_inline_p): New.
+ * config/mep/mep.c (mep_option_can_inline_p): New.
(TARGET_OPTION_CAN_INLINE_P): Define.
2009-07-08 Mark Wielaard <mjw@redhat.com>
@@ -12631,10 +13645,10 @@
(LARGEST_EXPONENT_IS_NORMAL): Define.
* config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
* config/arm/arm-modes.def (HFmode): Define.
- * config/arm/vfp.md: (*movhf_vfp): New.
+ * config/arm/vfp.md (*movhf_vfp): New.
(extendhfsf2): New.
(truncsfhf2): New.
- * config/arm/arm.md: (fpu): Add neon_fp16.
+ * config/arm/arm.md (fpu): Add neon_fp16.
(floatsihf2, floatdihf2): New.
(fix_trunchfsi2, fix_trunchfdi2): New.
(truncdfhf2): New.
@@ -13348,7 +14362,7 @@
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
- * c-tree.h: (struct c_declarator): Add comment to id_loc.
+ * c-tree.h (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
@@ -16064,7 +17078,7 @@
* hooks.h (hook_tree_const_tree_null): Declare.
* target.h (struct gcc_target): Add invalid_parameter_type,
invalid_return_type, promoted_type, and convert_to_type fields.
- * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
+ * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
(TARGET_INVALID_RETURN_TYPE): Define.
(TARGET_PROMOTED_TYPE): Define.
(TARGET_CONVERT_TO_TYPE): Define.
@@ -18481,7 +19495,7 @@
2009-05-04 Michael Eager <eager@eagercon.com>
- * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
+ * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
* config/rs6000/t-xilinx: New
2009-05-04 Paolo Bonzini <bonzini@gnu.org>
@@ -19509,7 +20523,7 @@
* ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
(get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
- * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
+ * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
(dump_replaceable_exprs): Take a bitmap.
* cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
array.
@@ -20513,7 +21527,7 @@
* cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
references from comments.
- * cfgbuild.c: (count_basic_blocks): Delete.
+ * cfgbuild.c (count_basic_blocks): Delete.
(find_basic_blocks_1): Delete.
(find_basic_blocks): Delete.
* except.c (finish_eh_generation): Make static. Move comment from
@@ -23752,7 +24766,7 @@
* config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
jbbccihi, jbbccisi): Remova trailing whitespace.
* config/vax/constraints.md: Likewise.
- * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
+ * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
* config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
* config/vax/predicates.md: Likewise.
* config/vax/vax.c (print_operand_address, vax_output_int_move,
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index ea0930452d6..1dc1d7a6c52 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20091012
+20091023
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f018ca774f5..ea57af4db53 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -2244,7 +2244,7 @@ tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
langhooks.h $(REAL_H) gt-tree.h $(TREE_INLINE_H) tree-iterator.h \
$(BASIC_BLOCK_H) $(TREE_FLOW_H) $(OBSTACK_H) pointer-set.h fixed-value.h \
tree-pass.h $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) $(TIMEVAR_H) \
- $(EXCEPT_H) debug.h
+ $(EXCEPT_H) debug.h intl.h
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TOPLEV_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) \
tree-iterator.h $(TREE_PASS_H) $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h
@@ -3077,9 +3077,9 @@ loop-iv.o : loop-iv.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \
hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) \
output.h intl.h $(TOPLEV_H) $(DF_H) $(HASHTAB_H)
loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) coretypes.h \
- $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) $(OBSTACK_H) output.h \
- $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H)
+ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) \
+ coretypes.h $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) \
+ $(OBSTACK_H) output.h $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H) $(REGS_H) ira.h
cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) output.h \
coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) $(TREE_FLOW_H)
@@ -3199,7 +3199,7 @@ ira-reload.o: ira-reload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)\
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
- $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(EXCEPT_H) reload.h
+ $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(EXCEPT_H) ira.h reload.h
combine-stack-adj.o : combine-stack-adj.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) \
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
@@ -3592,6 +3592,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/tree-ssa-structalias.c \
$(srcdir)/lto-symtab.c \
$(srcdir)/tree-ssa-alias.h \
+ $(srcdir)/ipa-prop.h \
@all_gtfiles@
# Compute the list of GT header files from the corresponding C sources,
@@ -4266,7 +4267,7 @@ PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(host_xm_file_list) $(host_xm_include_list) $(xm_include_list) \
intl.h $(PLUGIN_VERSION_H) $(DIAGNOSTIC_H) $(C_COMMON_H) $(C_PRETTY_PRINT_H) \
tree-iterator.h $(PLUGIN_H) $(TREE_FLOW_H) langhooks.h incpath.h \
- tree-ssa-sccvn.h real.h
+ tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H)
# Install the headers needed to build a plugin.
install-plugin: installdirs lang.install-plugin
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 13df4f3a704..e4761d82e1f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,113 @@
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interfaces/decl.c (build_subst_list): Convert the expression of
+ the constraint to the type of the discriminant.
+
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interfaces/decl.c (gnat_to_gnu_entity): Do not create a new
+ TYPE_DECL when a type is padded if there is already one and reset
+ TYPE_STUB_DECL in this case.
+
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interfaces/utils.c (create_subprog_decl): Do not redefine
+ main_identifier_node.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (convert): When converting to a padded type
+ with an inner type of self-referential size, pad the expression before
+ doing the unchecked conversion.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Make
+ sure the element type is consistent.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (addressable_p): Handle bitwise operations.
+
+2009-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/ada-tree.h (TYPE_FAT_POINTER_P): Swap with...
+ (TYPE_IS_FAT_POINTER_P): ...this.
+ (TYPE_THIN_POINTER_P): Rename into...
+ (TYPE_IS_THIN_POINTER_P): ...this.
+ (TYPE_FAT_OR_THIN_POINTER_P): Rename into...
+ (TYPE_IS_FAT_OR_THIN_POINTER_P): ...this.
+ (TYPE_IS_PADDING_P): Change definition, move old one to...
+ (TYPE_PADDING_P): ...this.
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for above changes.
+ (get_unpadded_type): Likewise.
+ (gnat_to_gnu_component_type): Likewise.
+ (gnat_to_gnu_param): Likewise.
+ (relate_alias_sets): Likewise.
+ (make_packable_type): Likewise.
+ (maybe_pad_type): Likewise.
+ (gnat_to_gnu_field): Likewise.
+ (is_variable_size): Likewise.
+ (annotate_object): Likewise.
+ (validate_size): Likewise.
+ (set_rm_size): Likewise.
+ (make_type_from_size): Likewise.
+ (rm_size): Likewise.
+ * gcc-interface/misc.c (gnat_print_type): Likewise.
+ (gnat_get_alias_set): Likewise.
+ * gcc-interface/trans.c (Identifier_to_gnu): Likewise.
+ (Attribute_to_gnu): Likewise.
+ (call_to_gnu): Likewise.
+ (gnat_to_gnu): Likewise.
+ (add_decl_expr): Likewise.
+ (convert_with_check): Likewise.
+ (addressable_p): Likewise.
+ (maybe_implicit_deref): Likewise.
+ (protect_multiple_eval): Likewise.
+ (gnat_stabilize_reference_1): Likewise.
+ * gcc-interface/utils.c (gnat_pushdecl): Likewise.
+ (finish_record_type): Likewise.
+ (rest_of_record_type_compilation): Likewise.
+ (create_type_decl): Likewise.
+ (gnat_types_compatible_p): Likewise.
+ (build_template): Likewise.
+ (convert_vms_descriptor64): Likewise.
+ (convert_vms_descriptor32): Likewise.
+ (build_unc_object_type_from_ptr): Likewise.
+ (update_pointer_to): Likewise.
+ (convert_to_fat_pointer): Likewise.
+ (convert_to_fat_pointer): Likewise.
+ (convert): Likewise.
+ (remove_conversions): Likewise.
+ (maybe_unconstrained_array): Likewise.
+ (unchecked_convert): Likewise.
+ (handle_vector_type_attribute): Likewise.
+ * gcc-interface/utils2.c (build_binary_op): Likewise.
+ (build_unary_op): Likewise.
+ (build_allocator): Likewise.
+
+2009-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_dbug.ads: Adjust type names in comments.
+ * gcc-interface/decl.c (maybe_pad_type): Remove NAME_TRAILER parameter,
+ add new IS_COMPONENT_TYPE parameter. Adjust. Remove dead code.
+ (gnat_to_gnu_entity): Adjust for above change.
+ (gnat_to_gnu_component_type): Likewise.
+ (gnat_to_gnu_field): Likewise.
+ * gcc-interface/trans.c (call_to_gnu): Likewise. Do not unnecessarily
+ call max_size.
+ * gcc-interface/utils.c (finish_record_type): Remove obsolete code.
+ * gcc-interface/gigi.h (maybe_pad_type): Adjust prototype.
+
+2009-10-16 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * s-osinte-rtems.ads: Add mutex type to pthread_mutexattr_t
+ * s-stchop-rtems.adb: Correct binding to rtems_stack_checker_is_blown.
+
+2009-10-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * env.c [__alpha__ && __osf__] (AES_SOURCE): Define.
+
2009-10-10 Samuel Tardieu <sam@rfc1149.net>
* sem_eval.adb: Give a more precise error message.
diff --git a/gcc/ada/env.c b/gcc/ada/env.c
index ac6e835df9f..d9486977433 100644
--- a/gcc/ada/env.c
+++ b/gcc/ada/env.c
@@ -29,8 +29,11 @@
* *
****************************************************************************/
-/* Tru64 UNIX <stdlib.h> declares unsetenv() only if _BSD. */
+/* Tru64 UNIX V4.0F <stdlib.h> declares unsetenv() only if AES_SOURCE (which
+ is plain broken, this should be _AES_SOURCE instead as everywhere else;
+ Tru64 UNIX V5.1B declares it only if _BSD. */
#if defined (__alpha__) && defined (__osf__)
+#define AES_SOURCE
#define _BSD
#endif
diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads
index 3c3144641d8..1d26bb3ef75 100644
--- a/gcc/ada/exp_dbug.ads
+++ b/gcc/ada/exp_dbug.ads
@@ -873,12 +873,12 @@ package Exp_Dbug is
-- the element type for AT1 might have a type defined as if it had
-- been written:
--
- -- type at1___C_PAD is record null; end record;
- -- for at1___C_PAD'Size use 16 * 8;
+ -- type at1___PAD is record null; end record;
+ -- for at1___PAD'Size use 16 * 8;
--
-- and there would also be
--
- -- type at1___C_PAD___XVS is record t1: Integer; end record;
+ -- type at1___PAD___XVS is record t1: Integer; end record;
-- type t1 is ...
--
-- Had the subtype Int been dynamic:
@@ -888,7 +888,7 @@ package Exp_Dbug is
-- Then the compiler would also generate a declaration whose effect
-- would be
--
- -- at1___C_PAD___XVZ: constant Integer := 32 + M * 8 + padding term;
+ -- at1___PAD___XVZ: constant Integer := 32 + M * 8 + padding term;
--
-- Not all unconstrained types are so encoded; the XVS convention may be
-- unnecessary for unconstrained types of fixed size. However, this
diff --git a/gcc/ada/gcc-interface/ada-tree.h b/gcc/ada/gcc-interface/ada-tree.h
index 94b18bde6b5..67a16ef0eb8 100644
--- a/gcc/ada/gcc-interface/ada-tree.h
+++ b/gcc/ada/gcc-interface/ada-tree.h
@@ -65,11 +65,11 @@ do { \
/* For RECORD_TYPE, UNION_TYPE, and QUAL_UNION_TYPE, nonzero if this is a
record being used as a fat pointer (only true for RECORD_TYPE). */
-#define TYPE_IS_FAT_POINTER_P(NODE) \
+#define TYPE_FAT_POINTER_P(NODE) \
TYPE_LANG_FLAG_0 (RECORD_OR_UNION_CHECK (NODE))
-#define TYPE_FAT_POINTER_P(NODE) \
- (TREE_CODE (NODE) == RECORD_TYPE && TYPE_IS_FAT_POINTER_P (NODE))
+#define TYPE_IS_FAT_POINTER_P(NODE) \
+ (TREE_CODE (NODE) == RECORD_TYPE && TYPE_FAT_POINTER_P (NODE))
/* For integral types and array types, nonzero if this is a packed array type
used for bit-packed types. Such types should not be extended to a larger
@@ -117,15 +117,15 @@ do { \
TYPE_LANG_FLAG_3 (INTEGER_TYPE_CHECK (NODE))
/* True if NODE is a thin pointer. */
-#define TYPE_THIN_POINTER_P(NODE) \
+#define TYPE_IS_THIN_POINTER_P(NODE) \
(POINTER_TYPE_P (NODE) \
&& TREE_CODE (TREE_TYPE (NODE)) == RECORD_TYPE \
&& TYPE_CONTAINS_TEMPLATE_P (TREE_TYPE (NODE)))
/* True if TYPE is either a fat or thin pointer to an unconstrained
array. */
-#define TYPE_FAT_OR_THIN_POINTER_P(NODE) \
- (TYPE_FAT_POINTER_P (NODE) || TYPE_THIN_POINTER_P (NODE))
+#define TYPE_IS_FAT_OR_THIN_POINTER_P(NODE) \
+ (TYPE_IS_FAT_POINTER_P (NODE) || TYPE_IS_THIN_POINTER_P (NODE))
/* For INTEGER_TYPEs, nonzero if the type has a biased representation. */
#define TYPE_BIASED_REPRESENTATION_P(NODE) \
@@ -143,7 +143,6 @@ do { \
is a dummy type, made to correspond to a private or incomplete type. */
#define TYPE_DUMMY_P(NODE) TYPE_LANG_FLAG_4 (NODE)
-/* True if TYPE is such a dummy type. */
#define TYPE_IS_DUMMY_P(NODE) \
((TREE_CODE (NODE) == VOID_TYPE || TREE_CODE (NODE) == RECORD_TYPE \
|| TREE_CODE (NODE) == UNION_TYPE || TREE_CODE (NODE) == ENUMERAL_TYPE) \
@@ -160,7 +159,10 @@ do { \
/* For a RECORD_TYPE, nonzero if this was made just to supply needed
padding or alignment. */
-#define TYPE_IS_PADDING_P(NODE) TYPE_LANG_FLAG_5 (RECORD_TYPE_CHECK (NODE))
+#define TYPE_PADDING_P(NODE) TYPE_LANG_FLAG_5 (RECORD_TYPE_CHECK (NODE))
+
+#define TYPE_IS_PADDING_P(NODE) \
+ (TREE_CODE (NODE) == RECORD_TYPE && TYPE_PADDING_P (NODE))
/* True if TYPE can alias any other types. */
#define TYPE_UNIVERSAL_ALIASING_P(NODE) TYPE_LANG_FLAG_6 (NODE)
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index f2f0f159abd..d0b52f2e745 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -633,7 +633,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
else
gnu_type
= maybe_pad_type (gnu_type, NULL_TREE, align, gnat_entity,
- "PAD", false, definition, true);
+ false, false, definition, true);
}
/* If we are defining the object, see if it has a Size value and
@@ -676,8 +676,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
despite having a nominal type with self-referential
size, we can get the size directly from it. */
if (TREE_CODE (gnu_expr) == COMPONENT_REF
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))
- == RECORD_TYPE
&& TYPE_IS_PADDING_P
(TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))
&& TREE_CODE (TREE_OPERAND (gnu_expr, 0)) == VAR_DECL
@@ -838,7 +836,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_object_size = gnu_size ? gnu_size : TYPE_SIZE (gnu_type);
if (gnu_size || align > 0)
gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
- "PAD", false, definition,
+ false, false, definition,
gnu_size ? true : false);
/* If this is a renaming, avoid as much as possible to create a new
@@ -852,8 +850,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
/* If the renamed object had padding, strip off the reference
to the inner object and reset our type. */
if ((TREE_CODE (gnu_expr) == COMPONENT_REF
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))
- == RECORD_TYPE
&& TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0))))
/* Strip useless conversions around the object. */
|| (TREE_CODE (gnu_expr) == NOP_EXPR
@@ -1017,16 +1013,15 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& !gnu_expr
&& TREE_CODE (gnu_type) == RECORD_TYPE
&& (TYPE_CONTAINS_TEMPLATE_P (gnu_type)
- /* Beware that padding might have been introduced
- via maybe_pad_type above. */
- || (TYPE_IS_PADDING_P (gnu_type)
+ /* Beware that padding might have been introduced above. */
+ || (TYPE_PADDING_P (gnu_type)
&& TREE_CODE (TREE_TYPE (TYPE_FIELDS (gnu_type)))
== RECORD_TYPE
&& TYPE_CONTAINS_TEMPLATE_P
(TREE_TYPE (TYPE_FIELDS (gnu_type))))))
{
tree template_field
- = TYPE_IS_PADDING_P (gnu_type)
+ = TYPE_PADDING_P (gnu_type)
? TYPE_FIELDS (TREE_TYPE (TYPE_FIELDS (gnu_type)))
: TYPE_FIELDS (gnu_type);
@@ -1050,17 +1045,16 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
if (gnu_expr
&& TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE
&& !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type))
- && !(TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type)
- && (CONTAINS_PLACEHOLDER_P
- (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS (gnu_type)))))))
+ && !(TYPE_IS_PADDING_P (gnu_type)
+ && CONTAINS_PLACEHOLDER_P
+ (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS (gnu_type))))))
gnu_expr = convert (gnu_type, gnu_expr);
/* If this is a pointer and it does not have an initializing
expression, initialize it to NULL, unless the object is
imported. */
if (definition
- && (POINTER_TYPE_P (gnu_type) || TYPE_FAT_POINTER_P (gnu_type))
+ && (POINTER_TYPE_P (gnu_type) || TYPE_IS_FAT_POINTER_P (gnu_type))
&& !Is_Imported (gnat_entity) && !gnu_expr)
gnu_expr = integer_zero_node;
@@ -1279,10 +1273,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
if (gnu_expr
&& TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE
&& !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type))
- && !(TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type)
- && (CONTAINS_PLACEHOLDER_P
- (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS (gnu_type)))))))
+ && !(TYPE_IS_PADDING_P (gnu_type)
+ && CONTAINS_PLACEHOLDER_P
+ (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS (gnu_type))))))
gnu_expr = convert (gnu_type, gnu_expr);
/* If this name is external or there was a name specified, use it,
@@ -1304,8 +1297,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& gnu_expr && TREE_CONSTANT (gnu_expr)
&& AGGREGATE_TYPE_P (gnu_type)
&& host_integerp (TYPE_SIZE_UNIT (gnu_type), 1)
- && !(TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type)
+ && !(TYPE_IS_PADDING_P (gnu_type)
&& !host_integerp (TYPE_SIZE_UNIT
(TREE_TYPE (TYPE_FIELDS (gnu_type))), 1)))
static_p = true;
@@ -1687,7 +1679,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_field_type, gnu_type, 1, 0, 0, 0);
finish_record_type (gnu_type, gnu_field, 0, false);
- TYPE_IS_PADDING_P (gnu_type) = 1;
+ TYPE_PADDING_P (gnu_type) = 1;
relate_alias_sets (gnu_type, gnu_field_type, ALIAS_SET_COPY);
}
@@ -1835,7 +1827,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
/* Do not finalize this record type since the types of its fields
are still incomplete at this point. */
finish_record_type (gnu_fat_type, tem, 0, true);
- TYPE_IS_FAT_POINTER_P (gnu_fat_type) = 1;
+ TYPE_FAT_POINTER_P (gnu_fat_type) = 1;
/* Build a reference to the template from a PLACEHOLDER_EXPR that
is the fat pointer. This will be used to access the individual
@@ -2477,7 +2469,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_inner = gnu_type;
while (TREE_CODE (gnu_inner) == RECORD_TYPE
&& (TYPE_JUSTIFIED_MODULAR_P (gnu_inner)
- || TYPE_IS_PADDING_P (gnu_inner)))
+ || TYPE_PADDING_P (gnu_inner)))
gnu_inner = TREE_TYPE (TYPE_FIELDS (gnu_inner));
/* We need to attach the index type to the type we just made so
@@ -2986,8 +2978,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
copy_and_substitute_in_size (gnu_type, gnu_base_type,
gnu_subst_list);
- if (TREE_CODE (gnu_base_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_base_type))
+ if (TYPE_IS_PADDING_P (gnu_base_type))
gnu_unpad_base_type = TREE_TYPE (TYPE_FIELDS (gnu_base_type));
else
gnu_unpad_base_type = gnu_base_type;
@@ -3097,7 +3088,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
{
gnu_size = DECL_SIZE (gnu_old_field);
if (TREE_CODE (gnu_field_type) == RECORD_TYPE
- && !TYPE_IS_FAT_POINTER_P (gnu_field_type)
+ && !TYPE_FAT_POINTER_P (gnu_field_type)
&& host_integerp (TYPE_SIZE (gnu_field_type), 1))
gnu_field_type
= make_packable_type (gnu_field_type, true);
@@ -3465,7 +3456,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
/* Make sure we can place this into a register. */
TYPE_ALIGN (gnu_type)
= MIN (BIGGEST_ALIGNMENT, 2 * POINTER_SIZE);
- TYPE_IS_FAT_POINTER_P (gnu_type) = 1;
+ TYPE_FAT_POINTER_P (gnu_type) = 1;
/* Do not finalize this record type since the types of
its fields are incomplete. */
@@ -3599,11 +3590,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
if ((! in_main_unit || is_from_limited_with) && made_dummy)
{
tree gnu_old_type
- = TYPE_FAT_POINTER_P (gnu_type)
+ = TYPE_IS_FAT_POINTER_P (gnu_type)
? TYPE_UNCONSTRAINED_ARRAY (gnu_type) : TREE_TYPE (gnu_type);
if (esize == POINTER_SIZE
- && (got_fat_p || TYPE_FAT_POINTER_P (gnu_type)))
+ && (got_fat_p || TYPE_IS_FAT_POINTER_P (gnu_type)))
gnu_type
= build_pointer_type
(TYPE_OBJECT_RECORD_TYPE
@@ -3915,8 +3906,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
/* If the type is a padded type and the underlying type would not
be passed by reference or this function has a foreign convention,
return the underlying type. */
- else if (TREE_CODE (gnu_return_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_return_type)
+ else if (TYPE_IS_PADDING_P (gnu_return_type)
&& (!default_pass_by_ref (TREE_TYPE
(TYPE_FIELDS (gnu_return_type)))
|| Has_Foreign_Convention (gnat_entity)))
@@ -4054,7 +4044,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
between two calls, so they can't be CSE'ed. The latter
case also handles by-ref parameters. */
if (POINTER_TYPE_P (gnu_param_type)
- || TYPE_FAT_POINTER_P (gnu_param_type))
+ || TYPE_IS_FAT_POINTER_P (gnu_param_type))
const_flag = false;
}
@@ -4417,7 +4407,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
else if ((TREE_CODE (gnu_type) == RECORD_TYPE
|| TREE_CODE (gnu_type) == UNION_TYPE
|| TREE_CODE (gnu_type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (gnu_type))
+ && !TYPE_FAT_POINTER_P (gnu_type))
size = rm_size (gnu_type);
else
size = TYPE_SIZE (gnu_type);
@@ -4446,10 +4436,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
us when we make the new TYPE_DECL below. */
if (gnu_size || align > 0)
gnu_type = maybe_pad_type (gnu_type, gnu_size, align, gnat_entity,
- "PAD", true, definition, false);
+ false, !gnu_decl, definition, false);
- if (TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type))
+ if (TYPE_IS_PADDING_P (gnu_type))
{
gnu_entity_name = TYPE_NAME (gnu_type);
if (TREE_CODE (gnu_entity_name) == TYPE_DECL)
@@ -4566,7 +4555,10 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
!Comes_From_Source (gnat_entity),
debug_info_p, gnat_entity);
else
- TREE_TYPE (gnu_decl) = gnu_type;
+ {
+ TREE_TYPE (gnu_decl) = gnu_type;
+ TYPE_STUB_DECL (gnu_type) = gnu_decl;
+ }
}
if (is_type && !TYPE_IS_DUMMY_P (TREE_TYPE (gnu_decl)))
@@ -4705,8 +4697,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
tree gnu_low_bound, gnu_high_bound;
/* If this is a padded type, we need to use the underlying type. */
- if (TREE_CODE (gnu_scalar_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_scalar_type))
+ if (TYPE_IS_PADDING_P (gnu_scalar_type))
gnu_scalar_type = TREE_TYPE (TYPE_FIELDS (gnu_scalar_type));
/* If this is a floating point type and we haven't set a floating
@@ -4852,7 +4843,7 @@ get_unpadded_type (Entity_Id gnat_entity)
{
tree type = gnat_to_gnu_type (gnat_entity);
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
type = TREE_TYPE (TYPE_FIELDS (type));
return type;
@@ -4985,7 +4976,7 @@ gnat_to_gnu_component_type (Entity_Id gnat_array, bool definition,
&& !Has_Aliased_Components (gnat_array)
&& !Strict_Alignment (Component_Type (gnat_array))
&& TREE_CODE (gnu_type) == RECORD_TYPE
- && !TYPE_IS_FAT_POINTER_P (gnu_type)
+ && !TYPE_FAT_POINTER_P (gnu_type)
&& host_integerp (TYPE_SIZE (gnu_type), 1))
gnu_type = make_packable_type (gnu_type, false);
@@ -5037,7 +5028,7 @@ gnat_to_gnu_component_type (Entity_Id gnat_array, bool definition,
orig_type = gnu_type;
gnu_type = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
- "C_PAD", false, definition, true);
+ true, false, definition, true);
/* If a padding record was made, declare it now since it will never be
declared otherwise. This is necessary to ensure that its subtrees
@@ -5089,8 +5080,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech,
/* If this is either a foreign function or if the underlying type won't
be passed by reference, strip off possible padding type. */
- if (TREE_CODE (gnu_param_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_param_type))
+ if (TYPE_IS_PADDING_P (gnu_param_type))
{
tree unpadded_type = TREE_TYPE (TYPE_FIELDS (gnu_param_type));
@@ -5162,7 +5152,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech,
}
/* Fat pointers are passed as thin pointers for foreign conventions. */
- else if (foreign && TYPE_FAT_POINTER_P (gnu_param_type))
+ else if (foreign && TYPE_IS_FAT_POINTER_P (gnu_param_type))
gnu_param_type
= make_type_from_size (gnu_param_type, size_int (POINTER_SIZE), 0);
@@ -5463,7 +5453,7 @@ relate_alias_sets (tree gnu_new_type, tree gnu_old_type, enum alias_set_op op)
see the inner types. */
while (TREE_CODE (gnu_old_type) == RECORD_TYPE
&& (TYPE_JUSTIFIED_MODULAR_P (gnu_old_type)
- || TYPE_IS_PADDING_P (gnu_old_type)))
+ || TYPE_PADDING_P (gnu_old_type)))
gnu_old_type = TREE_TYPE (TYPE_FIELDS (gnu_old_type));
/* Unconstrained array types are deemed incomplete and would thus be given
@@ -5929,7 +5919,7 @@ make_packable_type (tree type, bool in_record)
TYPE_JUSTIFIED_MODULAR_P (new_type) = TYPE_JUSTIFIED_MODULAR_P (type);
TYPE_CONTAINS_TEMPLATE_P (new_type) = TYPE_CONTAINS_TEMPLATE_P (type);
if (TREE_CODE (type) == RECORD_TYPE)
- TYPE_IS_PADDING_P (new_type) = TYPE_IS_PADDING_P (type);
+ TYPE_PADDING_P (new_type) = TYPE_PADDING_P (type);
/* If we are in a record and have a small size, set the alignment to
try for an integral mode. Otherwise set it to try for a smaller
@@ -5972,7 +5962,7 @@ make_packable_type (tree type, bool in_record)
if ((TREE_CODE (new_field_type) == RECORD_TYPE
|| TREE_CODE (new_field_type) == UNION_TYPE
|| TREE_CODE (new_field_type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (new_field_type)
+ && !TYPE_FAT_POINTER_P (new_field_type)
&& host_integerp (TYPE_SIZE (new_field_type), 1))
new_field_type = make_packable_type (new_field_type, true);
@@ -5984,7 +5974,7 @@ make_packable_type (tree type, bool in_record)
&& (TREE_CODE (new_field_type) == RECORD_TYPE
|| TREE_CODE (new_field_type) == UNION_TYPE
|| TREE_CODE (new_field_type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (new_field_type)
+ && !TYPE_FAT_POINTER_P (new_field_type)
&& !TYPE_CONTAINS_TEMPLATE_P (new_field_type)
&& TYPE_ADA_SIZE (new_field_type))
new_size = TYPE_ADA_SIZE (new_field_type);
@@ -6013,8 +6003,7 @@ make_packable_type (tree type, bool in_record)
/* If this is a padding record, we never want to make the size smaller
than what was specified. For QUAL_UNION_TYPE, also copy the size. */
- if ((TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
- || TREE_CODE (type) == QUAL_UNION_TYPE)
+ if (TYPE_IS_PADDING_P (type) || TREE_CODE (type) == QUAL_UNION_TYPE)
{
TYPE_SIZE (new_type) = TYPE_SIZE (type);
TYPE_SIZE_UNIT (new_type) = TYPE_SIZE_UNIT (type);
@@ -6046,25 +6035,20 @@ make_packable_type (tree type, bool in_record)
/* Ensure that TYPE has SIZE and ALIGN. Make and return a new padded type
if needed. We have already verified that SIZE and TYPE are large enough.
-
- GNAT_ENTITY and NAME_TRAILER are used to name the resulting record and
- to issue a warning.
-
- IS_USER_TYPE is true if we must complete the original type.
-
- DEFINITION is true if this type is being defined.
-
- SAME_RM_SIZE is true if the RM size of the resulting type is to be set
- to SIZE too; otherwise, it's set to the RM size of the original type. */
+ GNAT_ENTITY is used to name the resulting record and to issue a warning.
+ IS_COMPONENT_TYPE is true if this is being done for the component type
+ of an array. IS_USER_TYPE is true if we must complete the original type.
+ DEFINITION is true if this type is being defined. SAME_RM_SIZE is true
+ if the RM size of the resulting type is to be set to SIZE too; otherwise,
+ it's set to the RM size of the original type. */
tree
maybe_pad_type (tree type, tree size, unsigned int align,
- Entity_Id gnat_entity, const char *name_trailer,
+ Entity_Id gnat_entity, bool is_component_type,
bool is_user_type, bool definition, bool same_rm_size)
{
tree orig_rm_size = same_rm_size ? NULL_TREE : rm_size (type);
tree orig_size = TYPE_SIZE (type);
- unsigned int orig_align = align;
tree record, field;
/* If TYPE is a padded type, see if it agrees with any size and alignment
@@ -6072,7 +6056,7 @@ maybe_pad_type (tree type, tree size, unsigned int align,
off the padding, since we will either be returning the inner type
or repadding it. If no size or alignment is specified, use that of
the original padded type. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
{
if ((!size
|| operand_equal_p (round_up (size,
@@ -6121,18 +6105,15 @@ maybe_pad_type (tree type, tree size, unsigned int align,
generate incorrect debugging information. So make a new record
type and name. */
record = make_node (RECORD_TYPE);
- TYPE_IS_PADDING_P (record) = 1;
+ TYPE_PADDING_P (record) = 1;
if (Present (gnat_entity))
- TYPE_NAME (record) = create_concat_name (gnat_entity, name_trailer);
+ TYPE_NAME (record) = create_concat_name (gnat_entity, "PAD");
TYPE_VOLATILE (record)
= Present (gnat_entity) && Treat_As_Volatile (gnat_entity);
TYPE_ALIGN (record) = align;
- if (orig_align)
- TYPE_USER_ALIGN (record) = align;
-
TYPE_SIZE (record) = size ? size : orig_size;
TYPE_SIZE_UNIT (record)
= convert (sizetype,
@@ -6256,7 +6237,7 @@ maybe_pad_type (tree type, tree size, unsigned int align,
post_error_ne_tree ("{^ }bits of & unused?",
gnat_error_node, gnat_entity,
size_diffop (size, orig_size));
- else if (name_trailer[0] == 'C')
+ else if (is_component_type)
post_error_ne_tree ("component of& padded{ by ^ bits}?",
gnat_entity, gnat_entity,
size_diffop (size, orig_size));
@@ -6447,7 +6428,7 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed,
from a component clause. */
if (TREE_CODE (gnu_field_type) == RECORD_TYPE
- && !TYPE_IS_FAT_POINTER_P (gnu_field_type)
+ && !TYPE_FAT_POINTER_P (gnu_field_type)
&& host_integerp (TYPE_SIZE (gnu_field_type), 1)
&& (packed == 1
|| (gnu_size
@@ -6634,7 +6615,7 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed,
orig_field_type = gnu_field_type;
gnu_field_type = maybe_pad_type (gnu_field_type, gnu_size, 0, gnat_field,
- "PAD", false, definition, true);
+ false, false, definition, true);
/* If a padding record was made, declare it now since it will never be
declared otherwise. This is necessary to ensure that its subtrees
@@ -6677,8 +6658,7 @@ is_variable_size (tree type)
if (!TREE_CONSTANT (TYPE_SIZE (type)))
return true;
- if (TREE_CODE (type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (type)
+ if (TYPE_IS_PADDING_P (type)
&& !TREE_CONSTANT (DECL_SIZE (TYPE_FIELDS (type))))
return true;
@@ -7227,7 +7207,7 @@ annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size, bool by_ref)
{
if (by_ref)
{
- if (TYPE_FAT_POINTER_P (gnu_type))
+ if (TYPE_IS_FAT_POINTER_P (gnu_type))
gnu_type = TYPE_UNCONSTRAINED_ARRAY (gnu_type);
else
gnu_type = TREE_TYPE (gnu_type);
@@ -7394,12 +7374,16 @@ build_subst_list (Entity_Id gnat_subtype, Entity_Id gnat_type, bool definition)
gnat_value = Next_Elmt (gnat_value))
/* Ignore access discriminants. */
if (!Is_Access_Type (Etype (Node (gnat_value))))
- gnu_list = tree_cons (gnat_to_gnu_field_decl (gnat_discrim),
- elaborate_expression
- (Node (gnat_value), gnat_subtype,
- get_entity_name (gnat_discrim), definition,
- true, false),
- gnu_list);
+ {
+ tree gnu_field = gnat_to_gnu_field_decl (gnat_discrim);
+ gnu_list = tree_cons (gnu_field,
+ convert (TREE_TYPE (gnu_field),
+ elaborate_expression
+ (Node (gnat_value), gnat_subtype,
+ get_entity_name (gnat_discrim),
+ definition, true, false)),
+ gnu_list);
+ }
return gnu_list;
}
@@ -7542,7 +7526,7 @@ validate_size (Uint uint_size, tree gnu_type, Entity_Id gnat_object,
/* If this is an access type or a fat pointer, the minimum size is that given
by the smallest integral mode that's valid for pointers. */
- if ((TREE_CODE (gnu_type) == POINTER_TYPE) || TYPE_FAT_POINTER_P (gnu_type))
+ if (TREE_CODE (gnu_type) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (gnu_type))
{
enum machine_mode p_mode;
@@ -7636,8 +7620,7 @@ set_rm_size (Uint uint_size, tree gnu_type, Entity_Id gnat_entity)
|| (AGGREGATE_TYPE_P (gnu_type)
&& !(TREE_CODE (gnu_type) == ARRAY_TYPE
&& TYPE_PACKED_ARRAY_TYPE_P (gnu_type))
- && !(TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type)
+ && !(TYPE_IS_PADDING_P (gnu_type)
&& TREE_CODE (TREE_TYPE (TYPE_FIELDS (gnu_type))) == ARRAY_TYPE
&& TYPE_PACKED_ARRAY_TYPE_P (TREE_TYPE (TYPE_FIELDS (gnu_type))))
&& tree_int_cst_lt (size, old_size)))
@@ -7660,7 +7643,7 @@ set_rm_size (Uint uint_size, tree gnu_type, Entity_Id gnat_entity)
else if ((TREE_CODE (gnu_type) == RECORD_TYPE
|| TREE_CODE (gnu_type) == UNION_TYPE
|| TREE_CODE (gnu_type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (gnu_type))
+ && !TYPE_FAT_POINTER_P (gnu_type))
SET_TYPE_ADA_SIZE (gnu_type, size);
}
@@ -7727,7 +7710,7 @@ make_type_from_size (tree type, tree size_tree, bool for_biased)
case RECORD_TYPE:
/* Do something if this is a fat pointer, in which case we
may need to return the thin pointer. */
- if (TYPE_IS_FAT_POINTER_P (type) && size < POINTER_SIZE * 2)
+ if (TYPE_FAT_POINTER_P (type) && size < POINTER_SIZE * 2)
{
enum machine_mode p_mode = mode_for_size (size, MODE_INT, 0);
if (!targetm.valid_pointer_mode (p_mode))
@@ -7742,7 +7725,7 @@ make_type_from_size (tree type, tree size_tree, bool for_biased)
case POINTER_TYPE:
/* Only do something if this is a thin pointer, in which case we
may need to return the fat pointer. */
- if (TYPE_THIN_POINTER_P (type) && size >= POINTER_SIZE * 2)
+ if (TYPE_IS_THIN_POINTER_P (type) && size >= POINTER_SIZE * 2)
return
build_pointer_type (TYPE_UNCONSTRAINED_ARRAY (TREE_TYPE (type)));
break;
@@ -8393,7 +8376,7 @@ rm_size (tree gnu_type)
if ((TREE_CODE (gnu_type) == RECORD_TYPE
|| TREE_CODE (gnu_type) == UNION_TYPE
|| TREE_CODE (gnu_type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (gnu_type)
+ && !TYPE_FAT_POINTER_P (gnu_type)
&& TYPE_ADA_SIZE (gnu_type))
return TYPE_ADA_SIZE (gnu_type);
diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h
index ea1a65d485b..f376b22e2cc 100644
--- a/gcc/ada/gcc-interface/gigi.h
+++ b/gcc/ada/gcc-interface/gigi.h
@@ -124,21 +124,16 @@ extern tree make_aligning_type (tree type, unsigned int align, tree size,
/* Ensure that TYPE has SIZE and ALIGN. Make and return a new padded type
if needed. We have already verified that SIZE and TYPE are large enough.
-
- GNAT_ENTITY and NAME_TRAILER are used to name the resulting record and
- to issue a warning.
-
- IS_USER_TYPE is true if we must be sure we complete the original type.
-
- DEFINITION is true if this type is being defined.
-
- SAME_RM_SIZE is true if the RM_Size of the resulting type is to be
- set to its TYPE_SIZE; otherwise, it's set to the RM_Size of the original
- type. */
+ GNAT_ENTITY is used to name the resulting record and to issue a warning.
+ IS_COMPONENT_TYPE is true if this is being done for the component type
+ of an array. IS_USER_TYPE is true if we must complete the original type.
+ DEFINITION is true if this type is being defined. SAME_RM_SIZE is true
+ if the RM size of the resulting type is to be set to SIZE too; otherwise,
+ it's set to the RM size of the original type. */
extern tree maybe_pad_type (tree type, tree size, unsigned int align,
- Entity_Id gnat_entity, const char *name_trailer,
+ Entity_Id gnat_entity, bool is_component_type,
bool is_user_type, bool definition,
- bool same_rm_size);
+ bool same_rm_size);
/* Given a GNU tree and a GNAT list of choices, generate an expression to test
the value passed against the list of choices. */
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index 67823789ab3..570bd111a95 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -527,7 +527,7 @@ gnat_print_type (FILE *file, tree node, int indent)
break;
case RECORD_TYPE:
- if (TYPE_IS_FAT_POINTER_P (node) || TYPE_CONTAINS_TEMPLATE_P (node))
+ if (TYPE_FAT_POINTER_P (node) || TYPE_CONTAINS_TEMPLATE_P (node))
print_node (file, "unconstrained array",
TYPE_UNCONSTRAINED_ARRAY (node), indent + 4);
else
@@ -600,8 +600,7 @@ static alias_set_type
gnat_get_alias_set (tree type)
{
/* If this is a padding type, use the type of the first field. */
- if (TREE_CODE (type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
return get_alias_set (TREE_TYPE (TYPE_FIELDS (type)));
/* If the type is an unconstrained array, use the type of the
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index d94d1f45bfc..271581a65e8 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -946,8 +946,7 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
|| Is_Constr_Subt_For_UN_Aliased (gnat_temp_type))
{
gnu_result_type = TREE_TYPE (gnu_result);
- if (TREE_CODE (gnu_result_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_result_type))
+ if (TYPE_IS_PADDING_P (gnu_result_type))
gnu_result_type = TREE_TYPE (TYPE_FIELDS (gnu_result_type));
}
@@ -1256,7 +1255,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
/* If this is an unconstrained array, we know the object has been
allocated with the template in front of the object. So compute
the template address. */
- if (TYPE_FAT_POINTER_P (TREE_TYPE (gnu_ptr)))
+ if (TYPE_IS_FAT_POINTER_P (TREE_TYPE (gnu_ptr)))
gnu_ptr
= convert (build_pointer_type
(TYPE_OBJECT_RECORD_TYPE
@@ -1334,8 +1333,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
of the relevant field. Using the MAX of those two produces the
right result in all case. Don't use the size of the field if it's
a self-referential type, since that's never what's wanted. */
- if (TREE_CODE (gnu_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_type)
+ if (TYPE_IS_PADDING_P (gnu_type)
&& TREE_CODE (gnu_expr) == COMPONENT_REF)
{
gnu_result = rm_size (gnu_type);
@@ -1353,7 +1351,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
tree gnu_ptr_type
= TREE_TYPE (gnat_to_gnu (Prefix (gnat_deref)));
- if (TYPE_FAT_OR_THIN_POINTER_P (gnu_ptr_type)
+ if (TYPE_IS_FAT_OR_THIN_POINTER_P (gnu_ptr_type)
&& Present (gnat_actual_subtype))
{
tree gnu_actual_obj_type
@@ -1403,9 +1401,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
unsigned int align;
if (TREE_CODE (gnu_prefix) == COMPONENT_REF
- && (TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0)))
- == RECORD_TYPE)
- && (TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0)))))
+ && TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0))))
gnu_prefix = TREE_OPERAND (gnu_prefix, 0);
gnu_type = TREE_TYPE (gnu_prefix);
@@ -1742,9 +1738,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
case Attr_Component_Size:
if (TREE_CODE (gnu_prefix) == COMPONENT_REF
- && (TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0)))
- == RECORD_TYPE)
- && (TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0)))))
+ && TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_prefix, 0))))
gnu_prefix = TREE_OPERAND (gnu_prefix, 0);
gnu_prefix = maybe_implicit_deref (gnu_prefix);
@@ -2423,22 +2417,27 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
}
}
- /* If we are calling by supplying a pointer to a target, set up that
- pointer as the first argument. Use GNU_TARGET if one was passed;
- otherwise, make a target by building a variable of the maximum size
- of the type. */
+ /* If we are calling by supplying a pointer to a target, set up that pointer
+ as the first argument. Use GNU_TARGET if one was passed; otherwise, make
+ a target by building a variable and use the maximum size of the type if
+ it has self-referential size. */
if (TYPE_RETURNS_BY_TARGET_PTR_P (gnu_subprog_type))
{
- tree gnu_real_ret_type
+ tree gnu_ret_type
= TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (gnu_subprog_type)));
if (!gnu_target)
{
- tree gnu_obj_type
- = maybe_pad_type (gnu_real_ret_type,
- max_size (TYPE_SIZE (gnu_real_ret_type), true),
- 0, Etype (Name (gnat_node)), "PAD", false,
- false, false);
+ tree gnu_obj_type;
+
+ if (CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_ret_type)))
+ gnu_obj_type
+ = maybe_pad_type (gnu_ret_type,
+ max_size (TYPE_SIZE (gnu_ret_type), true),
+ 0, Etype (Name (gnat_node)), false, false,
+ false, true);
+ else
+ gnu_obj_type = gnu_ret_type;
/* ??? We may be about to create a static temporary if we happen to
be at the global binding level. That's a regression from what
@@ -2454,7 +2453,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
gnu_actual_list
= tree_cons (NULL_TREE,
build_unary_op (ADDR_EXPR, NULL_TREE,
- unchecked_convert (gnu_real_ret_type,
+ unchecked_convert (gnu_ret_type,
gnu_target,
false)),
NULL_TREE);
@@ -2557,10 +2556,8 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
/* Otherwise remove unpadding from the object and reset the copy. */
else if (TREE_CODE (gnu_name) == COMPONENT_REF
- && ((TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_name, 0)))
- == RECORD_TYPE)
- && (TYPE_IS_PADDING_P
- (TREE_TYPE (TREE_OPERAND (gnu_name, 0))))))
+ && TYPE_IS_PADDING_P
+ (TREE_TYPE (TREE_OPERAND (gnu_name, 0))))
gnu_name = gnu_copy = TREE_OPERAND (gnu_name, 0);
/* Otherwise convert to the nominal type of the object if it's
@@ -2599,7 +2596,6 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
/* If this was a procedure call, we may not have removed any padding.
So do it here for the part we will use as an input, if any. */
if (Ekind (gnat_formal) != E_Out_Parameter
- && TREE_CODE (TREE_TYPE (gnu_actual)) == RECORD_TYPE
&& TYPE_IS_PADDING_P (TREE_TYPE (gnu_actual)))
gnu_actual = convert (get_unpadded_type (Etype (gnat_actual)),
gnu_actual);
@@ -2669,8 +2665,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
gnu_actual = gnu_name;
/* If we have a padded type, be sure we've removed padding. */
- if (TREE_CODE (TREE_TYPE (gnu_actual)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (gnu_actual))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_actual))
&& TREE_CODE (gnu_actual) != SAVE_EXPR)
gnu_actual = convert (get_unpadded_type (Etype (gnat_actual)),
gnu_actual);
@@ -2703,8 +2698,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
gnu_actual = maybe_implicit_deref (gnu_actual);
gnu_actual = maybe_unconstrained_array (gnu_actual);
- if (TREE_CODE (gnu_formal_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (gnu_formal_type))
+ if (TYPE_IS_PADDING_P (gnu_formal_type))
{
gnu_formal_type = TREE_TYPE (TYPE_FIELDS (gnu_formal_type));
gnu_actual = convert (gnu_formal_type, gnu_actual);
@@ -2896,8 +2890,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
= maybe_unconstrained_array (TREE_VALUE (gnu_name_list));
/* If the result is a padded type, remove the padding. */
- if (TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
gnu_result = convert (TREE_TYPE (TYPE_FIELDS
(TREE_TYPE (gnu_result))),
gnu_result);
@@ -3856,8 +3849,7 @@ gnat_to_gnu (Node_Id gnat_node)
gnu_array_object = maybe_unconstrained_array (gnu_array_object);
/* If we got a padded type, remove it too. */
- if (TREE_CODE (TREE_TYPE (gnu_array_object)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (gnu_array_object)))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_array_object)))
gnu_array_object
= convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_array_object))),
gnu_array_object);
@@ -4713,12 +4705,10 @@ gnat_to_gnu (Node_Id gnat_node)
type is self-referential since we want to allocate the fixed
size in that case. */
if (TREE_CODE (gnu_ret_val) == COMPONENT_REF
- && (TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_ret_val, 0)))
- == RECORD_TYPE)
- && (TYPE_IS_PADDING_P
- (TREE_TYPE (TREE_OPERAND (gnu_ret_val, 0))))
- && (CONTAINS_PLACEHOLDER_P
- (TYPE_SIZE (TREE_TYPE (gnu_ret_val)))))
+ && TYPE_IS_PADDING_P
+ (TREE_TYPE (TREE_OPERAND (gnu_ret_val, 0)))
+ && CONTAINS_PLACEHOLDER_P
+ (TYPE_SIZE (TREE_TYPE (gnu_ret_val))))
gnu_ret_val = TREE_OPERAND (gnu_ret_val, 0);
if (TYPE_RETURNS_BY_REF_P (gnu_subprog_type)
@@ -5151,7 +5141,7 @@ gnat_to_gnu (Node_Id gnat_node)
a fat pointer, then go back below to a thin pointer. The
reason for this is that we need a fat pointer someplace in
order to properly compute the size. */
- if (TYPE_THIN_POINTER_P (TREE_TYPE (gnu_ptr)))
+ if (TYPE_IS_THIN_POINTER_P (TREE_TYPE (gnu_ptr)))
gnu_ptr = build_unary_op (ADDR_EXPR, NULL_TREE,
build_unary_op (INDIRECT_REF, NULL_TREE,
gnu_ptr));
@@ -5160,7 +5150,7 @@ gnat_to_gnu (Node_Id gnat_node)
have been allocated with the template in front of the object.
So pass the template address, but get the total size. Do this
by converting to a thin pointer. */
- if (TYPE_FAT_POINTER_P (TREE_TYPE (gnu_ptr)))
+ if (TYPE_IS_FAT_POINTER_P (TREE_TYPE (gnu_ptr)))
gnu_ptr
= convert (build_pointer_type
(TYPE_OBJECT_RECORD_TYPE
@@ -5174,7 +5164,7 @@ gnat_to_gnu (Node_Id gnat_node)
gnu_actual_obj_type
= gnat_to_gnu_type (Actual_Designated_Subtype (gnat_node));
- if (TYPE_FAT_OR_THIN_POINTER_P (gnu_ptr_type))
+ if (TYPE_IS_FAT_OR_THIN_POINTER_P (gnu_ptr_type))
gnu_actual_obj_type
= build_unc_object_type_from_ptr (gnu_ptr_type,
gnu_actual_obj_type,
@@ -5286,10 +5276,10 @@ gnat_to_gnu (Node_Id gnat_node)
/* But if the result is a fat pointer type, we have no mechanism to
do that, so we unconditionally warn in problematic cases. */
- else if (TYPE_FAT_POINTER_P (gnu_target_type))
+ else if (TYPE_IS_FAT_POINTER_P (gnu_target_type))
{
tree gnu_source_array_type
- = TYPE_FAT_POINTER_P (gnu_source_type)
+ = TYPE_IS_FAT_POINTER_P (gnu_source_type)
? TREE_TYPE (TREE_TYPE (TYPE_FIELDS (gnu_source_type)))
: NULL_TREE;
tree gnu_target_array_type
@@ -5297,7 +5287,7 @@ gnat_to_gnu (Node_Id gnat_node)
if ((TYPE_DUMMY_P (gnu_target_array_type)
|| get_alias_set (gnu_target_array_type) != 0)
- && (!TYPE_FAT_POINTER_P (gnu_source_type)
+ && (!TYPE_IS_FAT_POINTER_P (gnu_source_type)
|| (TYPE_DUMMY_P (gnu_source_array_type)
!= TYPE_DUMMY_P (gnu_target_array_type))
|| (TYPE_DUMMY_P (gnu_source_array_type)
@@ -5438,8 +5428,7 @@ gnat_to_gnu (Node_Id gnat_node)
size: in that case it must be an object of unconstrained type
with a default discriminant and we want to avoid copying too
much data. */
- if (TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (gnu_result))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_result))
&& CONTAINS_PLACEHOLDER_P (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS
(TREE_TYPE (gnu_result))))))
gnu_result = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
@@ -5459,8 +5448,7 @@ gnat_to_gnu (Node_Id gnat_node)
&& TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE))
{
/* Remove any padding. */
- if (TREE_CODE (TREE_TYPE (gnu_result)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (gnu_result)))
gnu_result = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_result))),
gnu_result);
}
@@ -5602,7 +5590,7 @@ add_decl_expr (tree gnu_decl, Entity_Id gnat_entity)
{
/* If GNU_DECL has a padded type, convert it to the unpadded
type so the assignment is done properly. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
t = convert (TREE_TYPE (TYPE_FIELDS (type)), gnu_decl);
else
t = gnu_decl;
@@ -6786,8 +6774,7 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp,
= FP_ARITH_MAY_WIDEN ? longest_float_type_node : gnu_in_basetype;
/* FIXME: Should not have padding in the first place. */
- if (TREE_CODE (calc_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (calc_type))
+ if (TYPE_IS_PADDING_P (calc_type))
calc_type = TREE_TYPE (TYPE_FIELDS (calc_type));
/* Compute the exact value calc_type'Pred (0.5) at compile time. */
@@ -6962,6 +6949,10 @@ addressable_p (tree gnu_expr, tree gnu_type)
case CALL_EXPR:
case PLUS_EXPR:
case MINUS_EXPR:
+ case BIT_IOR_EXPR:
+ case BIT_XOR_EXPR:
+ case BIT_AND_EXPR:
+ case BIT_NOT_EXPR:
/* All rvalues are deemed addressable since taking their address will
force a temporary to be created by the middle-end. */
return true;
@@ -6984,7 +6975,7 @@ addressable_p (tree gnu_expr, tree gnu_type)
|| DECL_ALIGN (TREE_OPERAND (gnu_expr, 1))
>= TYPE_ALIGN (TREE_TYPE (gnu_expr))))
/* The field of a padding record is always addressable. */
- || TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0))))
+ || TYPE_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0))))
&& addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE));
case ARRAY_REF: case ARRAY_RANGE_REF:
@@ -7264,13 +7255,12 @@ static tree
maybe_implicit_deref (tree exp)
{
/* If the type is a pointer, dereference it. */
-
- if (POINTER_TYPE_P (TREE_TYPE (exp)) || TYPE_FAT_POINTER_P (TREE_TYPE (exp)))
+ if (POINTER_TYPE_P (TREE_TYPE (exp))
+ || TYPE_IS_FAT_POINTER_P (TREE_TYPE (exp)))
exp = build_unary_op (INDIRECT_REF, NULL_TREE, exp);
/* If we got a padded type, remove it too. */
- if (TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (exp)))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (exp)))
exp = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (exp))), exp);
return exp;
@@ -7308,7 +7298,7 @@ protect_multiple_eval (tree exp)
/* If this is a fat pointer or something that can be placed into a
register, just make a SAVE_EXPR. */
- if (TYPE_FAT_POINTER_P (type) || TYPE_MODE (type) != BLKmode)
+ if (TYPE_IS_FAT_POINTER_P (type) || TYPE_MODE (type) != BLKmode)
return save_expr (exp);
/* Otherwise, reference, protect the address and dereference. */
@@ -7493,7 +7483,7 @@ gnat_stabilize_reference_1 (tree e, bool force)
fat pointer. This may be more efficient, but will also allow
us to more easily find the match for the PLACEHOLDER_EXPR. */
if (code == COMPONENT_REF
- && TYPE_FAT_POINTER_P (TREE_TYPE (TREE_OPERAND (e, 0))))
+ && TYPE_IS_FAT_POINTER_P (TREE_TYPE (TREE_OPERAND (e, 0))))
result = build3 (COMPONENT_REF, type,
gnat_stabilize_reference_1 (TREE_OPERAND (e, 0),
force),
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 7acb2ce2de4..b1e2e588347 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -490,7 +490,7 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
;
- else if (TYPE_FAT_POINTER_P (t))
+ else if (TYPE_IS_FAT_POINTER_P (t))
{
tree tt = build_variant_type_copy (t);
TYPE_NAME (tt) = decl;
@@ -643,7 +643,7 @@ finish_record_type (tree record_type, tree fieldlist, int rep_level,
if ((TREE_CODE (type) == RECORD_TYPE
|| TREE_CODE (type) == UNION_TYPE
|| TREE_CODE (type) == QUAL_UNION_TYPE)
- && !TYPE_IS_FAT_POINTER_P (type)
+ && !TYPE_FAT_POINTER_P (type)
&& !TYPE_CONTAINS_TEMPLATE_P (type)
&& TYPE_ADA_SIZE (type))
this_ada_size = TYPE_ADA_SIZE (type);
@@ -739,21 +739,15 @@ finish_record_type (tree record_type, tree fieldlist, int rep_level,
if (code == QUAL_UNION_TYPE)
nreverse (fieldlist);
- /* If the type is discriminated, it can be used to access all its
- constrained subtypes, so force structural equality checks. */
- if (CONTAINS_PLACEHOLDER_P (size))
- SET_TYPE_STRUCTURAL_EQUALITY (record_type);
-
if (rep_level < 2)
{
/* If this is a padding record, we never want to make the size smaller
than what was specified in it, if any. */
- if (TREE_CODE (record_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (record_type) && TYPE_SIZE (record_type))
+ if (TYPE_IS_PADDING_P (record_type) && TYPE_SIZE (record_type))
size = TYPE_SIZE (record_type);
/* Now set any of the values we've just computed that apply. */
- if (!TYPE_IS_FAT_POINTER_P (record_type)
+ if (!TYPE_FAT_POINTER_P (record_type)
&& !TYPE_CONTAINS_TEMPLATE_P (record_type))
SET_TYPE_ADA_SIZE (record_type, ada_size);
@@ -815,9 +809,7 @@ rest_of_record_type_compilation (tree record_type)
that tells the debugger how the record is laid out. See
exp_dbug.ads. But don't do this for records that are padding
since they confuse GDB. */
- if (var_size
- && !(TREE_CODE (record_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (record_type)))
+ if (var_size && !TYPE_IS_PADDING_P (record_type))
{
tree new_record_type
= make_node (TREE_CODE (record_type) == QUAL_UNION_TYPE
@@ -1306,7 +1298,7 @@ create_type_decl (tree type_name, tree type, struct attrib *attr_list,
if (code == UNCONSTRAINED_ARRAY_TYPE || !debug_info_p)
DECL_IGNORED_P (type_decl) = 1;
else if (code != ENUMERAL_TYPE
- && (code != RECORD_TYPE || TYPE_IS_FAT_POINTER_P (type))
+ && (code != RECORD_TYPE || TYPE_FAT_POINTER_P (type))
&& !((code == POINTER_TYPE || code == REFERENCE_TYPE)
&& TYPE_IS_DUMMY_P (TREE_TYPE (type)))
&& !(code == RECORD_TYPE
@@ -1874,9 +1866,9 @@ create_subprog_decl (tree subprog_name, tree asm_name,
to be declared as the "main" function literally by default. Ada
program entry points are typically declared with a different name
within the binder generated file, exported as 'main' to satisfy the
- system expectations. Redirect main_identifier_node in this case. */
+ system expectations. Force main_identifier_node in this case. */
if (asm_name == main_identifier_node)
- main_identifier_node = DECL_NAME (subprog_decl);
+ DECL_NAME (subprog_decl) = main_identifier_node;
}
process_attributes (subprog_decl, attr_list);
@@ -2291,7 +2283,7 @@ gnat_types_compatible_p (tree t1, tree t2)
/* Padding record types are also compatible if they pad the same
type and have the same constant size. */
if (code == RECORD_TYPE
- && TYPE_IS_PADDING_P (t1) && TYPE_IS_PADDING_P (t2)
+ && TYPE_PADDING_P (t1) && TYPE_PADDING_P (t2)
&& TREE_TYPE (TYPE_FIELDS (t1)) == TREE_TYPE (TYPE_FIELDS (t2))
&& tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)))
return 1;
@@ -2441,7 +2433,7 @@ build_template (tree template_type, tree array_type, tree expr)
tree field;
while (TREE_CODE (array_type) == RECORD_TYPE
- && (TYPE_IS_PADDING_P (array_type)
+ && (TYPE_PADDING_P (array_type)
|| TYPE_JUSTIFIED_MODULAR_P (array_type)))
array_type = TREE_TYPE (TYPE_FIELDS (array_type));
@@ -3155,7 +3147,7 @@ convert_vms_descriptor64 (tree gnu_type, tree gnu_expr, Entity_Id gnat_subprog)
if (POINTER_TYPE_P (gnu_type))
return convert (gnu_type, gnu_expr64);
- else if (TYPE_FAT_POINTER_P (gnu_type))
+ else if (TYPE_IS_FAT_POINTER_P (gnu_type))
{
tree p_array_type = TREE_TYPE (TYPE_FIELDS (gnu_type));
tree p_bounds_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (gnu_type)));
@@ -3304,7 +3296,7 @@ convert_vms_descriptor32 (tree gnu_type, tree gnu_expr, Entity_Id gnat_subprog)
if (POINTER_TYPE_P (gnu_type))
return convert (gnu_type, gnu_expr32);
- else if (TYPE_FAT_POINTER_P (gnu_type))
+ else if (TYPE_IS_FAT_POINTER_P (gnu_type))
{
tree p_array_type = TREE_TYPE (TYPE_FIELDS (gnu_type));
tree p_bounds_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (gnu_type)));
@@ -3542,10 +3534,10 @@ build_unc_object_type_from_ptr (tree thin_fat_ptr_type, tree object_type,
{
tree template_type;
- gcc_assert (TYPE_FAT_OR_THIN_POINTER_P (thin_fat_ptr_type));
+ gcc_assert (TYPE_IS_FAT_OR_THIN_POINTER_P (thin_fat_ptr_type));
template_type
- = (TYPE_FAT_POINTER_P (thin_fat_ptr_type)
+ = (TYPE_IS_FAT_POINTER_P (thin_fat_ptr_type)
? TREE_TYPE (TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (thin_fat_ptr_type))))
: TREE_TYPE (TYPE_FIELDS (TREE_TYPE (thin_fat_ptr_type))));
return build_unc_object_type (template_type, object_type, name);
@@ -3641,7 +3633,7 @@ update_pointer_to (tree old_type, tree new_type)
/* Now deal with the unconstrained array case. In this case the "pointer"
is actually a RECORD_TYPE where both fields are pointers to dummy nodes.
Turn them into pointers to the correct types using update_pointer_to. */
- else if (!TYPE_FAT_POINTER_P (ptr))
+ else if (!TYPE_IS_FAT_POINTER_P (ptr))
gcc_unreachable ();
else
@@ -3742,7 +3734,7 @@ convert_to_fat_pointer (tree type, tree expr)
NULL_TREE)));
/* If EXPR is a thin pointer, make template and data from the record.. */
- else if (TYPE_THIN_POINTER_P (etype))
+ else if (TYPE_IS_THIN_POINTER_P (etype))
{
tree fields = TYPE_FIELDS (TREE_TYPE (etype));
@@ -3792,7 +3784,7 @@ convert_to_fat_pointer (tree type, tree expr)
static tree
convert_to_thin_pointer (tree type, tree expr)
{
- if (!TYPE_FAT_POINTER_P (TREE_TYPE (expr)))
+ if (!TYPE_IS_FAT_POINTER_P (TREE_TYPE (expr)))
expr
= convert_to_fat_pointer
(TREE_TYPE (TYPE_UNCONSTRAINED_ARRAY (TREE_TYPE (type))), expr);
@@ -3827,7 +3819,7 @@ convert (tree type, tree expr)
as an unchecked conversion. Likewise if one is a mere variant of the
other, so we avoid a pointless unpad/repad sequence. */
else if (code == RECORD_TYPE && ecode == RECORD_TYPE
- && TYPE_IS_PADDING_P (type) && TYPE_IS_PADDING_P (etype)
+ && TYPE_PADDING_P (type) && TYPE_PADDING_P (etype)
&& (!TREE_CONSTANT (TYPE_SIZE (type))
|| !TREE_CONSTANT (TYPE_SIZE (etype))
|| gnat_types_compatible_p (type, etype)
@@ -3837,7 +3829,7 @@ convert (tree type, tree expr)
/* If the output type has padding, convert to the inner type and make a
constructor to build the record, unless a variable size is involved. */
- else if (code == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ else if (code == RECORD_TYPE && TYPE_PADDING_P (type))
{
/* If we previously converted from another type and our type is
of variable size, remove the conversion to avoid the need for
@@ -3855,7 +3847,6 @@ convert (tree type, tree expr)
variable-sized temporaries. Likewise if the padding is a variant
of the other, so we avoid a pointless unpad/repad sequence. */
if (TREE_CODE (expr) == COMPONENT_REF
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == RECORD_TYPE
&& TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (expr, 0)))
&& (!TREE_CONSTANT (TYPE_SIZE (type))
|| gnat_types_compatible_p (type,
@@ -3865,12 +3856,17 @@ convert (tree type, tree expr)
== TYPE_NAME (TREE_TYPE (TYPE_FIELDS (type))))))
return convert (type, TREE_OPERAND (expr, 0));
- /* If the result type is a padded type with a self-referentially-sized
- field and the expression type is a record, do this as an unchecked
- conversion. */
+ /* If the inner type is of self-referential size and the expression type
+ is a record, do this as an unchecked conversion. But first pad the
+ expression if possible to have the same size on both sides. */
if (TREE_CODE (etype) == RECORD_TYPE
&& CONTAINS_PLACEHOLDER_P (DECL_SIZE (TYPE_FIELDS (type))))
- return unchecked_convert (type, expr, false);
+ {
+ if (TREE_CONSTANT (TYPE_SIZE (etype)))
+ expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
+ false, false, false, true), expr);
+ return unchecked_convert (type, expr, false);
+ }
/* If we are converting between array types with variable size, do the
final conversion as an unchecked conversion, again to avoid the need
@@ -3898,7 +3894,7 @@ convert (tree type, tree expr)
The conditions ordering is arranged to ensure that the output type is not
a padding type here, as it is not clear whether the conversion would
always be correct if this was to happen. */
- else if (ecode == RECORD_TYPE && TYPE_IS_PADDING_P (etype))
+ else if (ecode == RECORD_TYPE && TYPE_PADDING_P (etype))
{
tree unpadded;
@@ -4147,7 +4143,8 @@ convert (tree type, tree expr)
/* Otherwise, we may just bypass the input view conversion unless
one of the types is a fat pointer, which is handled by
specialized code below which relies on exact type matching. */
- else if (!TYPE_FAT_POINTER_P (type) && !TYPE_FAT_POINTER_P (etype))
+ else if (!TYPE_IS_FAT_POINTER_P (type)
+ && !TYPE_IS_FAT_POINTER_P (etype))
return convert (type, op0);
}
}
@@ -4166,7 +4163,7 @@ convert (tree type, tree expr)
|| TREE_CODE (type) == UNION_TYPE)
&& (TREE_CODE (etype) == RECORD_TYPE
|| TREE_CODE (etype) == UNION_TYPE)
- && !TYPE_FAT_POINTER_P (type) && !TYPE_FAT_POINTER_P (etype))
+ && !TYPE_IS_FAT_POINTER_P (type) && !TYPE_IS_FAT_POINTER_P (etype))
return build_unary_op (INDIRECT_REF, NULL_TREE,
convert (build_pointer_type (type),
TREE_OPERAND (expr, 0)));
@@ -4177,7 +4174,7 @@ convert (tree type, tree expr)
}
/* Check for converting to a pointer to an unconstrained array. */
- if (TYPE_FAT_POINTER_P (type) && !TYPE_FAT_POINTER_P (etype))
+ if (TYPE_IS_FAT_POINTER_P (type) && !TYPE_IS_FAT_POINTER_P (etype))
return convert_to_fat_pointer (type, expr);
/* If we are converting between two aggregate or vector types that are mere
@@ -4249,7 +4246,7 @@ convert (tree type, tree expr)
/* If converting between two pointers to records denoting
both a template and type, adjust if needed to account
for any differing offsets, since one might be negative. */
- if (TYPE_THIN_POINTER_P (etype) && TYPE_THIN_POINTER_P (type))
+ if (TYPE_IS_THIN_POINTER_P (etype) && TYPE_IS_THIN_POINTER_P (type))
{
tree bit_diff
= size_diffop (bit_position (TYPE_FIELDS (TREE_TYPE (etype))),
@@ -4267,13 +4264,13 @@ convert (tree type, tree expr)
}
/* If converting to a thin pointer, handle specially. */
- if (TYPE_THIN_POINTER_P (type)
+ if (TYPE_IS_THIN_POINTER_P (type)
&& TYPE_UNCONSTRAINED_ARRAY (TREE_TYPE (type)))
return convert_to_thin_pointer (type, expr);
/* If converting fat pointer to normal pointer, get the pointer to the
array and then convert it. */
- else if (TYPE_FAT_POINTER_P (etype))
+ else if (TYPE_IS_FAT_POINTER_P (etype))
expr = build_component_ref (expr, get_identifier ("P_ARRAY"),
NULL_TREE, false);
@@ -4370,8 +4367,7 @@ remove_conversions (tree exp, bool true_address)
break;
case COMPONENT_REF:
- if (TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (exp, 0))))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (exp, 0))))
return remove_conversions (TREE_OPERAND (exp, 0), true_address);
break;
@@ -4420,7 +4416,7 @@ maybe_unconstrained_array (tree exp)
case RECORD_TYPE:
/* If this is a padded type, convert to the unpadded type and see if
it contains a template. */
- if (TYPE_IS_PADDING_P (TREE_TYPE (exp)))
+ if (TYPE_PADDING_P (TREE_TYPE (exp)))
{
new_exp = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (exp))), exp);
if (TREE_CODE (TREE_TYPE (new_exp)) == RECORD_TYPE
@@ -4523,13 +4519,13 @@ unchecked_convert (tree type, tree expr, bool notrunc_p)
if ((((INTEGRAL_TYPE_P (type)
&& !(TREE_CODE (type) == INTEGER_TYPE
&& TYPE_VAX_FLOATING_POINT_P (type)))
- || (POINTER_TYPE_P (type) && ! TYPE_THIN_POINTER_P (type))
+ || (POINTER_TYPE_P (type) && ! TYPE_IS_THIN_POINTER_P (type))
|| (TREE_CODE (type) == RECORD_TYPE
&& TYPE_JUSTIFIED_MODULAR_P (type)))
&& ((INTEGRAL_TYPE_P (etype)
&& !(TREE_CODE (etype) == INTEGER_TYPE
&& TYPE_VAX_FLOATING_POINT_P (etype)))
- || (POINTER_TYPE_P (etype) && !TYPE_THIN_POINTER_P (etype))
+ || (POINTER_TYPE_P (etype) && !TYPE_IS_THIN_POINTER_P (etype))
|| (TREE_CODE (etype) == RECORD_TYPE
&& TYPE_JUSTIFIED_MODULAR_P (etype))))
|| TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
@@ -5509,7 +5505,7 @@ handle_vector_type_attribute (tree *node, tree name, tree ARG_UNUSED (args),
/* Get the representative array type, possibly nested within a
padding record e.g. for alignment purposes. */
- if (TREE_CODE (rep_type) == RECORD_TYPE && TYPE_IS_PADDING_P (rep_type))
+ if (TYPE_IS_PADDING_P (rep_type))
rep_type = TREE_TYPE (TYPE_FIELDS (rep_type));
if (TREE_CODE (rep_type) != ARRAY_TYPE)
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index f8a3dfbd525..7176740f453 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -654,12 +654,9 @@ build_binary_op (enum tree_code op_code, tree result_type,
can convert the constructor to the inner type, to avoid putting a
VIEW_CONVERT_EXPR on the LHS. But don't do so if we wouldn't have
actually copied anything. */
- else if (TREE_CODE (left_type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (left_type)
+ else if (TYPE_IS_PADDING_P (left_type)
&& TREE_CONSTANT (TYPE_SIZE (left_type))
&& ((TREE_CODE (right_operand) == COMPONENT_REF
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (right_operand, 0)))
- == RECORD_TYPE
&& TYPE_IS_PADDING_P
(TREE_TYPE (TREE_OPERAND (right_operand, 0)))
&& gnat_types_compatible_p
@@ -758,6 +755,12 @@ build_binary_op (enum tree_code op_code, tree result_type,
left_type = TREE_TYPE (left_operand);
}
+ /* For a range, make sure the element type is consistent. */
+ if (op_code == ARRAY_RANGE_REF
+ && TREE_TYPE (operation_type) != TREE_TYPE (left_type))
+ operation_type = build_array_type (TREE_TYPE (left_type),
+ TYPE_DOMAIN (operation_type));
+
/* Then convert the right operand to its base type. This will prevent
unneeded sign conversions when sizetype is wider than integer. */
right_operand = convert (right_base_type, right_operand);
@@ -836,8 +839,8 @@ build_binary_op (enum tree_code op_code, tree result_type,
convert both operands to that type. */
if (left_base_type != right_base_type)
{
- if (TYPE_FAT_POINTER_P (left_base_type)
- && TYPE_FAT_POINTER_P (right_base_type)
+ if (TYPE_IS_FAT_POINTER_P (left_base_type)
+ && TYPE_IS_FAT_POINTER_P (right_base_type)
&& TYPE_MAIN_VARIANT (left_base_type)
== TYPE_MAIN_VARIANT (right_base_type))
best_type = left_base_type;
@@ -872,7 +875,7 @@ build_binary_op (enum tree_code op_code, tree result_type,
/* If we are comparing a fat pointer against zero, we need to
just compare the data pointer. */
- else if (TYPE_FAT_POINTER_P (left_base_type)
+ else if (TYPE_IS_FAT_POINTER_P (left_base_type)
&& TREE_CODE (right_operand) == CONSTRUCTOR
&& integer_zerop (VEC_index (constructor_elt,
CONSTRUCTOR_ELTS (right_operand),
@@ -1117,11 +1120,10 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
/* If INNER is a padding type whose field has a self-referential
size, convert to that inner type. We know the offset is zero
and we need to have that type visible. */
- if (TREE_CODE (TREE_TYPE (inner)) == RECORD_TYPE
- && TYPE_IS_PADDING_P (TREE_TYPE (inner))
- && (CONTAINS_PLACEHOLDER_P
- (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS
- (TREE_TYPE (inner)))))))
+ if (TYPE_IS_PADDING_P (TREE_TYPE (inner))
+ && CONTAINS_PLACEHOLDER_P
+ (TYPE_SIZE (TREE_TYPE (TYPE_FIELDS
+ (TREE_TYPE (inner))))))
inner = convert (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (inner))),
inner);
@@ -1154,13 +1156,11 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
/* If this is just a constructor for a padded record, we can
just take the address of the single field and convert it to
a pointer to our type. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
{
- result = (VEC_index (constructor_elt,
- CONSTRUCTOR_ELTS (operand),
- 0)
- ->value);
-
+ result = VEC_index (constructor_elt,
+ CONSTRUCTOR_ELTS (operand),
+ 0)->value;
result = convert (build_pointer_type (TREE_TYPE (operand)),
build_unary_op (ADDR_EXPR, NULL_TREE, result));
break;
@@ -1202,8 +1202,7 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
/* If we are taking the address of a padded record whose field is
contains a template, take the address of the template. */
- if (TREE_CODE (type) == RECORD_TYPE
- && TYPE_IS_PADDING_P (type)
+ if (TYPE_IS_PADDING_P (type)
&& TREE_CODE (TREE_TYPE (TYPE_FIELDS (type))) == RECORD_TYPE
&& TYPE_CONTAINS_TEMPLATE_P (TREE_TYPE (TYPE_FIELDS (type))))
{
@@ -1226,7 +1225,7 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
make up an expression to do so. This will never survive to
the backend. If TYPE is a thin pointer, first convert the
operand to a fat pointer. */
- if (TYPE_THIN_POINTER_P (type)
+ if (TYPE_IS_THIN_POINTER_P (type)
&& TYPE_UNCONSTRAINED_ARRAY (TREE_TYPE (type)))
{
operand
@@ -1235,7 +1234,7 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
type = TREE_TYPE (operand);
}
- if (TYPE_FAT_POINTER_P (type))
+ if (TYPE_IS_FAT_POINTER_P (type))
{
result = build1 (UNCONSTRAINED_ARRAY_REF,
TYPE_UNCONSTRAINED_ARRAY (type), operand);
@@ -1252,7 +1251,7 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand)
}
side_effects
- = (!TYPE_FAT_POINTER_P (type) && TYPE_VOLATILE (TREE_TYPE (type)));
+ = (!TYPE_IS_FAT_POINTER_P (type) && TYPE_VOLATILE (TREE_TYPE (type)));
break;
case NEGATE_EXPR:
@@ -2027,7 +2026,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
/* If RESULT_TYPE is a fat or thin pointer, set SIZE to be the sum of the
sizes of the object and its template. Allocate the whole thing and
fill in the parts that are known. */
- else if (TYPE_FAT_OR_THIN_POINTER_P (result_type))
+ else if (TYPE_IS_FAT_OR_THIN_POINTER_P (result_type))
{
tree storage_type
= build_unc_object_type_from_ptr (result_type, type,
@@ -2049,10 +2048,9 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
gnat_proc, gnat_pool, gnat_node);
storage = convert (storage_ptr_type, protect_multiple_eval (storage));
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_IS_PADDING_P (type))
+ if (TYPE_IS_PADDING_P (type))
{
type = TREE_TYPE (TYPE_FIELDS (type));
-
if (init)
init = convert (type, init);
}
diff --git a/gcc/ada/s-osinte-rtems.ads b/gcc/ada/s-osinte-rtems.ads
index 5e3d9192014..70e4a27e0a4 100644
--- a/gcc/ada/s-osinte-rtems.ads
+++ b/gcc/ada/s-osinte-rtems.ads
@@ -625,6 +625,7 @@ private
process_shared : int;
prio_ceiling : int;
protocol : int;
+ mutex_type : int;
recursive : int;
end record;
pragma Convention (C, pthread_mutexattr_t);
diff --git a/gcc/ada/s-stchop-rtems.adb b/gcc/ada/s-stchop-rtems.adb
index 615950e7fee..ac0cfd0f489 100644
--- a/gcc/ada/s-stchop-rtems.adb
+++ b/gcc/ada/s-stchop-rtems.adb
@@ -80,8 +80,9 @@ package body System.Stack_Checking.Operations is
is
pragma Unreferenced (Stack_Address);
- -- RTEMS has a routine to check this. So use it.
- function rtems_stack_checker_is_blown return Interfaces.C.int;
+ -- RTEMS has a routine to check if the stack is blown.
+ -- It returns a C99 bool.
+ function rtems_stack_checker_is_blown return Interfaces.C.unsigned_char;
pragma Import (C,
rtems_stack_checker_is_blown, "rtems_stack_checker_is_blown");
diff --git a/gcc/alias.c b/gcc/alias.c
index 694498ab55a..09ec775c5d0 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -691,7 +691,14 @@ get_alias_set (tree t)
requires structural comparisons to identify compatible types
use alias set zero. */
if (TYPE_STRUCTURAL_EQUALITY_P (t))
- return 0;
+ {
+ /* Allow the language to specify another alias set for this
+ type. */
+ set = lang_hooks.get_alias_set (t);
+ if (set != -1)
+ return set;
+ return 0;
+ }
t = TYPE_CANONICAL (t);
/* Canonical types shouldn't form a tree nor should the canonical
type require structural equality checks. */
diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c
index c9d990464ad..cb5d83d23ee 100644
--- a/gcc/alloc-pool.c
+++ b/gcc/alloc-pool.c
@@ -41,10 +41,10 @@ typedef struct allocation_object_def
/* Because we want any type of data to be well aligned after the ID,
the following elements are here. They are never accessed so
- the allocated object may be even smaller than this structure. */
+ the allocated object may be even smaller than this structure.
+ We do not care about alignment for floating-point types. */
char *align_p;
HOST_WIDEST_INT align_i;
- long double align_ld;
} u;
} allocation_object;
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 55228d22c40..1243d72048b 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -7194,7 +7194,7 @@ fold_builtin_cabs (location_t loc, tree arg, tree type, tree fndecl)
{
tree res;
- if (TREE_CODE (TREE_TYPE (arg)) != COMPLEX_TYPE
+ if (!validate_arg (arg, COMPLEX_TYPE)
|| TREE_CODE (TREE_TYPE (TREE_TYPE (arg))) != REAL_TYPE)
return NULL_TREE;
@@ -7583,7 +7583,7 @@ fold_builtin_cexp (location_t loc, tree arg0, tree type)
#endif
if (!validate_arg (arg0, COMPLEX_TYPE)
- && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ || TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) != REAL_TYPE)
return NULL_TREE;
#ifdef HAVE_mpc
@@ -10017,7 +10017,8 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0, bool ignore)
break;
CASE_FLT_FN (BUILT_IN_CIMAG):
- if (validate_arg (arg0, COMPLEX_TYPE))
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
return non_lvalue_loc (loc, fold_build1_loc (loc, IMAGPART_EXPR, type, arg0));
break;
@@ -10063,7 +10064,45 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0, bool ignore)
&& TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
return do_mpc_arg1 (arg0, type, mpc_sqrt);
break;
-#endif
+
+#ifdef HAVE_mpc_arc
+ CASE_FLT_FN (BUILT_IN_CASIN):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_asin);
+ break;
+
+ CASE_FLT_FN (BUILT_IN_CACOS):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_acos);
+ break;
+
+ CASE_FLT_FN (BUILT_IN_CATAN):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_atan);
+ break;
+
+ CASE_FLT_FN (BUILT_IN_CASINH):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_asinh);
+ break;
+
+ CASE_FLT_FN (BUILT_IN_CACOSH):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_acosh);
+ break;
+
+ CASE_FLT_FN (BUILT_IN_CATANH):
+ if (validate_arg (arg0, COMPLEX_TYPE)
+ && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+ return do_mpc_arg1 (arg0, type, mpc_atanh);
+ break;
+#endif /* HAVE_mpc_arc */
+#endif /* HAVE_mpc */
CASE_FLT_FN (BUILT_IN_CABS):
return fold_builtin_cabs (loc, arg0, type, fndecl);
diff --git a/gcc/c-common.c b/gcc/c-common.c
index fb2a84ebbf4..8a6d15b9d9b 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -4183,6 +4183,15 @@ c_common_get_alias_set (tree t)
tree u;
PTR *slot;
+ /* For VLAs, use the alias set of the element type rather than the
+ default of alias set 0 for types compared structurally. */
+ if (TYPE_P (t) && TYPE_STRUCTURAL_EQUALITY_P (t))
+ {
+ if (TREE_CODE (t) == ARRAY_TYPE)
+ return get_alias_set (TREE_TYPE (t));
+ return -1;
+ }
+
/* Permit type-punning when accessing a union, provided the access
is directly through the union. For example, this code does not
permit taking the address of a union member and then storing
@@ -8181,7 +8190,8 @@ c_parse_error (const char *gmsgid, enum cpp_ttype token_type,
else if (token_type == CPP_STRING
|| token_type == CPP_WSTRING
|| token_type == CPP_STRING16
- || token_type == CPP_STRING32)
+ || token_type == CPP_STRING32
+ || token_type == CPP_UTF8STRING)
message = catenate_messages (gmsgid, " before string constant");
else if (token_type == CPP_NUMBER)
message = catenate_messages (gmsgid, " before numeric constant");
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index 0c6cdab9dff..fd3df8c0a48 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -365,6 +365,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
+ case CPP_UTF8STRING:
type = lex_string (tok, value, true, true);
break;
@@ -423,7 +424,8 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
- if ((lex_flags & C_LEX_RAW_STRINGS) == 0)
+ case CPP_UTF8STRING:
+ if ((lex_flags & C_LEX_STRING_NO_JOIN) == 0)
{
type = lex_string (tok, value, false,
(lex_flags & C_LEX_STRING_NO_TRANSLATE) == 0);
@@ -871,12 +873,13 @@ interpret_fixed (const cpp_token *token, unsigned int flags)
return value;
}
-/* Convert a series of STRING, WSTRING, STRING16 and/or STRING32 tokens
- into a tree, performing string constant concatenation. TOK is the
- first of these. VALP is the location to write the string into.
- OBJC_STRING indicates whether an '@' token preceded the incoming token.
+/* Convert a series of STRING, WSTRING, STRING16, STRING32 and/or
+ UTF8STRING tokens into a tree, performing string constant
+ concatenation. TOK is the first of these. VALP is the location
+ to write the string into. OBJC_STRING indicates whether an '@' token
+ preceded the incoming token.
Returns the CPP token type of the result (CPP_STRING, CPP_WSTRING,
- CPP_STRING32, CPP_STRING16, or CPP_OBJC_STRING).
+ CPP_STRING32, CPP_STRING16, CPP_UTF8STRING, or CPP_OBJC_STRING).
This is unfortunately more work than it should be. If any of the
strings in the series has an L prefix, the result is a wide string
@@ -921,6 +924,7 @@ lex_string (const cpp_token *tok, tree *valp, bool objc_string, bool translate)
case CPP_WSTRING:
case CPP_STRING16:
case CPP_STRING32:
+ case CPP_UTF8STRING:
if (type != tok->type)
{
if (type == CPP_STRING)
@@ -966,6 +970,7 @@ lex_string (const cpp_token *tok, tree *valp, bool objc_string, bool translate)
{
default:
case CPP_STRING:
+ case CPP_UTF8STRING:
value = build_string (1, "");
break;
case CPP_STRING16:
@@ -991,6 +996,7 @@ lex_string (const cpp_token *tok, tree *valp, bool objc_string, bool translate)
{
default:
case CPP_STRING:
+ case CPP_UTF8STRING:
TREE_TYPE (value) = char_array_type_node;
break;
case CPP_STRING16:
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 3f6e949fe8e..767d97fbe58 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -5349,6 +5349,7 @@ c_parser_postfix_expression (c_parser *parser)
case CPP_STRING16:
case CPP_STRING32:
case CPP_WSTRING:
+ case CPP_UTF8STRING:
expr.value = c_parser_peek_token (parser)->value;
expr.original_code = STRING_CST;
c_parser_consume_token (parser);
diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h
index 188afb8dbaa..be085ee1115 100644
--- a/gcc/c-pragma.h
+++ b/gcc/c-pragma.h
@@ -118,9 +118,9 @@ extern enum cpp_ttype pragma_lex (tree *);
so that 0 means to translate and join strings. */
#define C_LEX_STRING_NO_TRANSLATE 1 /* Do not lex strings into
execution character set. */
-#define C_LEX_RAW_STRINGS 2 /* Return raw strings -- no
- concatenation, no
- translation. */
+#define C_LEX_STRING_NO_JOIN 2 /* Do not concatenate strings
+ nor translate them into execution
+ character set. */
/* This is not actually available to pragma parsers. It's merely a
convenient location to declare this function for c-lex, after
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 2117ee3bc52..be46028fa58 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1768,10 +1768,10 @@ expand_call_stmt (gimple stmt)
for (i = 0; i < gimple_call_num_args (stmt); i++)
CALL_EXPR_ARG (exp, i) = gimple_call_arg (stmt, i);
- if (!(gimple_call_flags (stmt) & (ECF_CONST | ECF_PURE)))
+ if (gimple_has_side_effects (stmt))
TREE_SIDE_EFFECTS (exp) = 1;
- if (gimple_call_flags (stmt) & ECF_NOTHROW)
+ if (gimple_call_nothrow_p (stmt))
TREE_NOTHROW (exp) = 1;
CALL_EXPR_TAILCALL (exp) = gimple_call_tail_p (stmt);
@@ -2194,46 +2194,6 @@ round_udiv_adjust (enum machine_mode mode, rtx mod, rtx op1)
const1_rtx, const0_rtx);
}
-/* Wrap modeless constants in CONST:MODE. */
-rtx
-wrap_constant (enum machine_mode mode, rtx x)
-{
- if (GET_MODE (x) != VOIDmode)
- return x;
-
- if (CONST_INT_P (x)
- || GET_CODE (x) == CONST_FIXED
- || GET_CODE (x) == CONST_DOUBLE
- || GET_CODE (x) == LABEL_REF)
- {
- gcc_assert (mode != VOIDmode);
-
- x = gen_rtx_CONST (mode, x);
- }
-
- return x;
-}
-
-/* Remove CONST wrapper added by wrap_constant(). */
-rtx
-unwrap_constant (rtx x)
-{
- rtx ret = x;
-
- if (GET_CODE (x) != CONST)
- return x;
-
- x = XEXP (x, 0);
-
- if (CONST_INT_P (x)
- || GET_CODE (x) == CONST_FIXED
- || GET_CODE (x) == CONST_DOUBLE
- || GET_CODE (x) == LABEL_REF)
- ret = x;
-
- return ret;
-}
-
/* Convert X to MODE, that must be Pmode or ptr_mode, without emitting
any rtl. */
@@ -2356,11 +2316,21 @@ expand_debug_expr (tree exp)
case COMPLEX_CST:
gcc_assert (COMPLEX_MODE_P (mode));
op0 = expand_debug_expr (TREE_REALPART (exp));
- op0 = wrap_constant (GET_MODE_INNER (mode), op0);
op1 = expand_debug_expr (TREE_IMAGPART (exp));
- op1 = wrap_constant (GET_MODE_INNER (mode), op1);
return gen_rtx_CONCAT (mode, op0, op1);
+ case DEBUG_EXPR_DECL:
+ op0 = DECL_RTL_IF_SET (exp);
+
+ if (op0)
+ return op0;
+
+ op0 = gen_rtx_DEBUG_EXPR (mode);
+ DEBUG_EXPR_TREE_DECL (op0) = exp;
+ SET_DECL_RTL (exp, op0);
+
+ return op0;
+
case VAR_DECL:
case PARM_DECL:
case FUNCTION_DECL:
@@ -2512,6 +2482,9 @@ expand_debug_expr (tree exp)
&mode1, &unsignedp, &volatilep, false);
rtx orig_op0;
+ if (bitsize == 0)
+ return NULL;
+
orig_op0 = op0 = expand_debug_expr (tem);
if (!op0)
@@ -2549,6 +2522,9 @@ expand_debug_expr (tree exp)
if (MEM_P (op0))
{
+ if (mode1 == VOIDmode)
+ /* Bitfield. */
+ mode1 = smallest_mode_for_size (bitsize, MODE_INT);
if (bitpos >= BITS_PER_UNIT)
{
op0 = adjust_address_nv (op0, mode1, bitpos / BITS_PER_UNIT);
@@ -2556,7 +2532,8 @@ expand_debug_expr (tree exp)
}
else if (bitpos < 0)
{
- int units = (-bitpos + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
+ HOST_WIDE_INT units
+ = (-bitpos + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
op0 = adjust_address_nv (op0, mode1, units);
bitpos += units * BITS_PER_UNIT;
}
@@ -2574,6 +2551,9 @@ expand_debug_expr (tree exp)
if (bitpos == 0 && mode == GET_MODE (op0))
return op0;
+ if (bitpos < 0)
+ return NULL;
+
if ((bitpos % BITS_PER_UNIT) == 0
&& bitsize == GET_MODE_BITSIZE (mode1))
{
@@ -2850,6 +2830,46 @@ expand_debug_expr (tree exp)
op1 = gen_rtx_CONST (GET_MODE_INNER (mode), op1);
return gen_rtx_CONCAT (mode, op0, op1);
+ case CONJ_EXPR:
+ if (GET_CODE (op0) == CONCAT)
+ return gen_rtx_CONCAT (mode, XEXP (op0, 0),
+ gen_rtx_NEG (GET_MODE_INNER (mode),
+ XEXP (op0, 1)));
+ else
+ {
+ enum machine_mode imode = GET_MODE_INNER (mode);
+ rtx re, im;
+
+ if (MEM_P (op0))
+ {
+ re = adjust_address_nv (op0, imode, 0);
+ im = adjust_address_nv (op0, imode, GET_MODE_SIZE (imode));
+ }
+ else
+ {
+ enum machine_mode ifmode = int_mode_for_mode (mode);
+ enum machine_mode ihmode = int_mode_for_mode (imode);
+ rtx halfsize;
+ if (ifmode == BLKmode || ihmode == BLKmode)
+ return NULL;
+ halfsize = GEN_INT (GET_MODE_BITSIZE (ihmode));
+ re = op0;
+ if (mode != ifmode)
+ re = gen_rtx_SUBREG (ifmode, re, 0);
+ re = gen_rtx_ZERO_EXTRACT (ihmode, re, halfsize, const0_rtx);
+ if (imode != ihmode)
+ re = gen_rtx_SUBREG (imode, re, 0);
+ im = copy_rtx (op0);
+ if (mode != ifmode)
+ im = gen_rtx_SUBREG (ifmode, im, 0);
+ im = gen_rtx_ZERO_EXTRACT (ihmode, im, halfsize, halfsize);
+ if (imode != ihmode)
+ im = gen_rtx_SUBREG (imode, im, 0);
+ }
+ im = gen_rtx_NEG (imode, im);
+ return gen_rtx_CONCAT (mode, re, im);
+ }
+
case ADDR_EXPR:
op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
if (!op0 || !MEM_P (op0))
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index d6c26bf0ba0..4abdf8bfe15 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -288,6 +288,7 @@ extern edge create_empty_if_region_on_edge (edge, tree);
extern struct loop *create_empty_loop_on_edge (edge, tree, tree, tree, tree,
tree *, tree *, struct loop *);
extern struct loop * duplicate_loop (struct loop *, struct loop *);
+extern void duplicate_subloops (struct loop *, struct loop *);
extern bool duplicate_loop_to_header_edge (struct loop *, edge,
unsigned, sbitmap, edge,
VEC (edge, heap) **, int);
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index a357a2fd77a..6f24415a72d 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "tree-flow.h"
-static void duplicate_subloops (struct loop *, struct loop *);
static void copy_loops_to (struct loop **, int,
struct loop *);
static void loop_redirect_edge (edge, basic_block);
@@ -886,7 +885,7 @@ duplicate_loop (struct loop *loop, struct loop *target)
/* Copies structure of subloops of LOOP into TARGET loop, placing
newly created loops into loop tree. */
-static void
+void
duplicate_subloops (struct loop *loop, struct loop *target)
{
struct loop *aloop, *cloop;
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 9a97bef2962..7b8b738ed1f 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1375,15 +1375,16 @@ ipa_passes (void)
set_cfun (NULL);
current_function_decl = NULL;
cgraph_process_new_functions ();
- }
- execute_ipa_summary_passes ((struct ipa_opt_pass_d *) all_regular_ipa_passes);
+ execute_ipa_summary_passes ((struct ipa_opt_pass_d *) all_regular_ipa_passes);
+ }
execute_ipa_summary_passes ((struct ipa_opt_pass_d *) all_lto_gen_passes);
if (!in_lto_p)
ipa_write_summaries ();
- execute_ipa_pass_list (all_regular_ipa_passes);
+ if (!flag_ltrans)
+ execute_ipa_pass_list (all_regular_ipa_passes);
bitmap_obstack_release (NULL);
}
@@ -1441,6 +1442,7 @@ cgraph_optimize (void)
timevar_pop (TV_CGRAPHOPT);
/* Output everything. */
+ (*debug_hooks->assembly_start) ();
if (!quiet_flag)
fprintf (stderr, "Assembling functions:\n");
#ifdef ENABLE_CHECKING
diff --git a/gcc/combine.c b/gcc/combine.c
index af9cea2fe2a..129cd4dff39 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2264,68 +2264,33 @@ cleanup_auto_inc_dec (rtx src, bool after, enum machine_mode mem_mode)
return x;
}
-#endif
/* Auxiliary data structure for propagate_for_debug_stmt. */
struct rtx_subst_pair
{
- rtx from, to;
- bool changed;
-#ifdef AUTO_INC_DEC
+ rtx to;
bool adjusted;
bool after;
-#endif
};
-/* Clean up any auto-updates in PAIR->to the first time it is called
- for a PAIR. PAIR->adjusted is used to tell whether we've cleaned
- up before. */
+/* DATA points to an rtx_subst_pair. Return the value that should be
+ substituted. */
-static void
-auto_adjust_pair (struct rtx_subst_pair *pair ATTRIBUTE_UNUSED)
+static rtx
+propagate_for_debug_subst (rtx from ATTRIBUTE_UNUSED, void *data)
{
-#ifdef AUTO_INC_DEC
+ struct rtx_subst_pair *pair = (struct rtx_subst_pair *)data;
+
if (!pair->adjusted)
{
pair->adjusted = true;
pair->to = cleanup_auto_inc_dec (pair->to, pair->after, VOIDmode);
+ return pair->to;
}
-#endif
-}
-
-/* If *LOC is the same as FROM in the struct rtx_subst_pair passed as
- DATA, replace it with a copy of TO. Handle SUBREGs of *LOC as
- well. */
-
-static int
-propagate_for_debug_subst (rtx *loc, void *data)
-{
- struct rtx_subst_pair *pair = (struct rtx_subst_pair *)data;
- rtx from = pair->from, to = pair->to;
- rtx x = *loc, s = x;
-
- if (rtx_equal_p (x, from)
- || (GET_CODE (x) == SUBREG && rtx_equal_p ((s = SUBREG_REG (x)), from)))
- {
- auto_adjust_pair (pair);
- if (pair->to != to)
- to = pair->to;
- else
- to = copy_rtx (to);
- if (s != x)
- {
- gcc_assert (GET_CODE (x) == SUBREG && SUBREG_REG (x) == s);
- to = simplify_gen_subreg (GET_MODE (x), to,
- GET_MODE (from), SUBREG_BYTE (x));
- }
- *loc = wrap_constant (GET_MODE (x), to);
- pair->changed = true;
- return -1;
- }
-
- return 0;
+ return copy_rtx (pair->to);
}
+#endif
/* Replace occurrences of DEST with SRC in DEBUG_INSNs between INSN
and LAST. If MOVE holds, debug insns must also be moved past
@@ -2334,14 +2299,11 @@ propagate_for_debug_subst (rtx *loc, void *data)
static void
propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src, bool move)
{
- struct rtx_subst_pair p;
- rtx next, move_pos = move ? last : NULL_RTX;
-
- p.from = dest;
- p.to = src;
- p.changed = false;
+ rtx next, move_pos = move ? last : NULL_RTX, loc;
#ifdef AUTO_INC_DEC
+ struct rtx_subst_pair p;
+ p.to = src;
p.adjusted = false;
p.after = move;
#endif
@@ -2353,11 +2315,15 @@ propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src, bool move)
next = NEXT_INSN (insn);
if (DEBUG_INSN_P (insn))
{
- for_each_rtx (&INSN_VAR_LOCATION_LOC (insn),
- propagate_for_debug_subst, &p);
- if (!p.changed)
+#ifdef AUTO_INC_DEC
+ loc = simplify_replace_fn_rtx (INSN_VAR_LOCATION_LOC (insn),
+ dest, propagate_for_debug_subst, &p);
+#else
+ loc = simplify_replace_rtx (INSN_VAR_LOCATION_LOC (insn), dest, src);
+#endif
+ if (loc == INSN_VAR_LOCATION_LOC (insn))
continue;
- p.changed = false;
+ INSN_VAR_LOCATION_LOC (insn) = loc;
if (move_pos)
{
remove_insn (insn);
diff --git a/gcc/common.opt b/gcc/common.opt
index dd2d8155c5e..b57234a92ab 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -717,6 +717,11 @@ fira-coalesce
Common Report Var(flag_ira_coalesce) Init(0)
Do optimistic coalescing.
+fira-loop-pressure
+Common Report Var(flag_ira_loop_pressure)
+Use IRA based register pressure calculation
+in RTL loop optimizations.
+
fira-share-save-slots
Common Report Var(flag_ira_share_save_slots) Init(1)
Share slots for saving different hard registers.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index e83382c1059..7666dd61861 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -722,7 +722,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
case ${target} in
arm*-*-linux-*eabi)
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
- tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
# The BPABI long long divmod functions return a 128-bit value in
# registers r0-r3. Correctly modeling that requires the use of
# TImode.
diff --git a/gcc/config.in b/gcc/config.in
index 4c3da5baed7..a3e9069e129 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -315,6 +315,12 @@
#endif
+/* Define if your assembler supports the swap suffix. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_IX86_SWAP
+#endif
+
+
/* Define if your assembler supports the lituse_jsrdirect relocation. */
#ifndef USED_FOR_TARGET
#undef HAVE_AS_JSRDIRECT_RELOCS
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index fb4e59fff47..93c35901116 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -133,7 +133,7 @@ static enum machine_mode arm_promote_function_mode (const_tree,
const_tree, int);
static bool arm_return_in_memory (const_tree, const_tree);
static rtx arm_function_value (const_tree, const_tree, bool);
-static rtx arm_libcall_value (enum machine_mode, rtx);
+static rtx arm_libcall_value (enum machine_mode, const_rtx);
static void arm_internal_label (FILE *, const char *, unsigned long);
static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
@@ -1864,6 +1864,16 @@ arm_override_options (void)
max_insns_skipped = 3;
}
+ /* Hot/Cold partitioning is not currently supported, since we can't
+ handle literal pool placement in that case. */
+ if (flag_reorder_blocks_and_partition)
+ {
+ inform (input_location,
+ "-freorder-blocks-and-partition not supported on this architecture");
+ flag_reorder_blocks_and_partition = 0;
+ flag_reorder_blocks = 1;
+ }
+
/* Ideally we would want to use CFI directives to generate
debug info. However this also creates the .eh_frame
section, so disable them until GAS can handle
@@ -3264,7 +3274,7 @@ add_libcall (htab_t htab, rtx libcall)
}
static bool
-arm_libcall_uses_aapcs_base (rtx libcall)
+arm_libcall_uses_aapcs_base (const_rtx libcall)
{
static bool init_done = false;
static htab_t libcall_htab;
@@ -3311,7 +3321,7 @@ arm_libcall_uses_aapcs_base (rtx libcall)
}
rtx
-arm_libcall_value (enum machine_mode mode, rtx libcall)
+arm_libcall_value (enum machine_mode mode, const_rtx libcall)
{
if (TARGET_AAPCS_BASED && arm_pcs_default != ARM_PCS_AAPCS
&& GET_MODE_CLASS (mode) == MODE_FLOAT)
@@ -12269,7 +12279,7 @@ output_move_neon (rtx *operands)
{
/* We're only using DImode here because it's a convenient size. */
ops[0] = gen_rtx_REG (DImode, REGNO (reg) + 2 * i);
- ops[1] = adjust_address (mem, SImode, 8 * i);
+ ops[1] = adjust_address (mem, DImode, 8 * i);
if (reg_overlap_mentioned_p (ops[0], mem))
{
gcc_assert (overlap == -1);
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
index 85bc3eed100..7d1ef111339 100644
--- a/gcc/config/arm/neon.md
+++ b/gcc/config/arm/neon.md
@@ -3655,7 +3655,8 @@
UNSPEC_VSHLL_N))]
"TARGET_NEON"
{
- neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
+ /* The boundaries are: 0 < imm <= size. */
+ neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode) + 1);
return "vshll.%T3%#<V_sz_elem>\t%q0, %P1, %2";
}
[(set_attr "neon_type" "neon_shift_1")]
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 5a15200ffe3..b2d6b44a57d 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -235,7 +235,7 @@
(define_insn "*movqi"
[(set (match_operand:QI 0 "nonimmediate_operand" "=r,d,Qm,r,q,r,*r")
- (match_operand:QI 1 "general_operand" "r,i,rL,Qm,r,q,i"))]
+ (match_operand:QI 1 "general_operand" "rL,i,rL,Qm,r,q,i"))]
"(register_operand (operands[0],QImode)
|| register_operand (operands[1], QImode) || const0_rtx == operands[1])"
"* return output_movqi (insn, operands, NULL);"
@@ -336,7 +336,7 @@
(define_insn "*movhi"
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,d,*r,q,r")
- (match_operand:HI 1 "general_operand" "r,m,rL,i,i,r,q"))]
+ (match_operand:HI 1 "general_operand" "rL,m,rL,i,i,r,q"))]
"(register_operand (operands[0],HImode)
|| register_operand (operands[1],HImode) || const0_rtx == operands[1])"
"* return output_movhi (insn, operands, NULL);"
diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h
index db6aa9fe9ce..721c90ff887 100644
--- a/gcc/config/cris/cris-protos.h
+++ b/gcc/config/cris/cris-protos.h
@@ -71,3 +71,5 @@ extern void cris_override_options (void);
extern int cris_initial_elimination_offset (int, int);
extern void cris_init_expanders (void);
+
+extern bool cris_function_value_regno_p (const unsigned int);
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index bf00a57a3b6..225ad403dda 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -130,6 +130,9 @@ static bool cris_frame_pointer_required (void);
static void cris_asm_trampoline_template (FILE *);
static void cris_trampoline_init (rtx, tree, rtx);
+static rtx cris_function_value(const_tree, const_tree, bool);
+static rtx cris_libcall_value (enum machine_mode, const_rtx);
+
/* This is the parsed result of the "-max-stack-stackframe=" option. If
it (still) is zero, then there was no such option given. */
int cris_max_stackframe = 0;
@@ -197,6 +200,11 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION;
#undef TARGET_TRAMPOLINE_INIT
#define TARGET_TRAMPOLINE_INIT cris_trampoline_init
+#undef TARGET_FUNCTION_VALUE
+#define TARGET_FUNCTION_VALUE cris_function_value
+#undef TARGET_LIBCALL_VALUE
+#define TARGET_LIBCALL_VALUE cris_libcall_value
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Helper for cris_load_multiple_op and cris_ret_movem_op. */
@@ -3777,13 +3785,42 @@ cris_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
int for_return)
{
/* Defining PROMOTE_FUNCTION_RETURN in gcc-2.7.2 uncovered bug 981110 (even
- when modifying FUNCTION_VALUE to return the promoted mode). Maybe
- pointless as of now, but let's keep the old behavior. */
+ when modifying TARGET_FUNCTION_VALUE to return the promoted mode).
+ Maybe pointless as of now, but let's keep the old behavior. */
if (for_return == 1)
return mode;
return CRIS_PROMOTED_MODE (mode, *punsignedp, type);
}
+/* Let's assume all functions return in r[CRIS_FIRST_ARG_REG] for the
+ time being. */
+
+static rtx
+cris_function_value(const_tree type,
+ const_tree func ATTRIBUTE_UNUSED,
+ bool outgoing ATTRIBUTE_UNUSED)
+{
+ return gen_rtx_REG (TYPE_MODE (type), CRIS_FIRST_ARG_REG);
+}
+
+/* Let's assume all functions return in r[CRIS_FIRST_ARG_REG] for the
+ time being. */
+
+static rtx
+cris_libcall_value (enum machine_mode mode,
+ const_rtx fun ATTRIBUTE_UNUSED)
+{
+ return gen_rtx_REG (mode, CRIS_FIRST_ARG_REG);
+}
+
+/* Let's assume all functions return in r[CRIS_FIRST_ARG_REG] for the
+ time being. */
+
+bool
+cris_function_value_regno_p (const unsigned int regno)
+{
+ return (regno == CRIS_FIRST_ARG_REG);
+}
static int
cris_arg_partial_bytes (CUMULATIVE_ARGS *ca, enum machine_mode mode,
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index 586f7ff2077..0fea7d77b39 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -630,12 +630,17 @@ enum reg_class
? GENERAL_REGS : (CLASS))
/* We can't move special registers to and from memory in smaller than
- word_mode. */
-#define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \
- (((CLASS) != SPECIAL_REGS && (CLASS) != MOF_REGS) \
- || GET_MODE_SIZE (MODE) == 4 \
- || !MEM_P (X) \
- ? NO_REGS : GENERAL_REGS)
+ word_mode. We also can't move between special registers. Luckily,
+ -1, as returned by true_regnum for non-sub/registers, is valid as a
+ parameter to our REGNO_REG_CLASS, returning GENERAL_REGS, so we get
+ the effect that any X that isn't a special-register is treated as
+ a non-empty intersection with GENERAL_REGS. */
+#define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \
+ ((((CLASS) == SPECIAL_REGS || (CLASS) == MOF_REGS) \
+ && ((GET_MODE_SIZE (MODE) < 4 && MEM_P (X)) \
+ || !reg_classes_intersect_p (REGNO_REG_CLASS (true_regnum (X)), \
+ GENERAL_REGS))) \
+ ? GENERAL_REGS : NO_REGS)
/* FIXME: Fix regrename.c; it should check validity of replacements,
not just with a silly pass-specific macro. We may miss some
@@ -901,14 +906,8 @@ struct cum_args {int regs;};
/* Node: Scalar Return */
-/* Let's assume all functions return in r[CRIS_FIRST_ARG_REG] for the
- time being. */
-#define FUNCTION_VALUE(VALTYPE, FUNC) \
- gen_rtx_REG (TYPE_MODE (VALTYPE), CRIS_FIRST_ARG_REG)
+#define FUNCTION_VALUE_REGNO_P(N) cris_function_value_regno_p (N)
-#define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, CRIS_FIRST_ARG_REG)
-
-#define FUNCTION_VALUE_REGNO_P(N) ((N) == CRIS_FIRST_ARG_REG)
/* Node: Aggregate Return */
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 79eb8da3b0d..bd14a16337e 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -4936,7 +4936,7 @@
;; It should be:
;; movu.b some_byte,reg_32
;; and.b const,reg_32
-;; but is turns into:
+;; but it turns into:
;; move.b some_byte,reg_32
;; and.d const,reg_32
;; Fix it here.
@@ -4953,7 +4953,9 @@
"REGNO (operands[2]) == REGNO (operands[0])
&& INTVAL (operands[3]) <= 65535 && INTVAL (operands[3]) >= 0
&& !CRIS_CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'I')
- && !side_effects_p (operands[1])"
+ && !side_effects_p (operands[1])
+ && (!REG_P (operands[1])
+ || REGNO (operands[1]) <= CRIS_LAST_GENERAL_REGISTER)"
;; FIXME: CC0 valid except for M (i.e. CC_NOT_NEGATIVE).
[(set (match_dup 0) (match_dup 4))
(set (match_dup 5) (match_dup 6))]
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index a8933e66348..b5c4fb8e0d9 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1697,6 +1697,17 @@ darwin_override_options (void)
if (dwarf_strict < 0)
dwarf_strict = 1;
+ /* Disable -freorder-blocks-and-partition for darwin_emit_unwind_label. */
+ if (flag_reorder_blocks_and_partition
+ && (targetm.asm_out.unwind_label == darwin_emit_unwind_label))
+ {
+ inform (input_location,
+ "-freorder-blocks-and-partition does not work with exceptions "
+ "on this architecture");
+ flag_reorder_blocks_and_partition = 0;
+ flag_reorder_blocks = 1;
+ }
+
if (flag_mkernel || flag_apple_kext)
{
/* -mkernel implies -fapple-kext for C++ */
diff --git a/gcc/config/darwin10.h b/gcc/config/darwin10.h
index 65ba2632a8f..b1edf36ce3d 100644
--- a/gcc/config/darwin10.h
+++ b/gcc/config/darwin10.h
@@ -23,3 +23,8 @@ unwinder in libSystem is fixed to digest new epilog unwinding notes. */
#undef LIB_SPEC
#define LIB_SPEC "%{!static:-no_compact_unwind -lSystem}"
+
+/* Unwind labels are no longer required in darwin10. */
+
+#undef TARGET_ASM_EMIT_UNWIND_LABEL
+#define TARGET_ASM_EMIT_UNWIND_LABEL default_emit_unwind_label
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 404595405f3..7bb1e7a6c5c 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -507,6 +507,32 @@ byte_reg (rtx x, int b)
&& call_used_regs[regno] \
&& !current_function_is_leaf)))
+/* We use this to wrap all emitted insns in the prologue. */
+static rtx
+F (rtx x)
+{
+ RTX_FRAME_RELATED_P (x) = 1;
+ return x;
+}
+
+/* Mark all the subexpressions of the PARALLEL rtx PAR as
+ frame-related. Return PAR.
+
+ dwarf2out.c:dwarf2out_frame_debug_expr ignores sub-expressions of a
+ PARALLEL rtx other than the first if they do not have the
+ FRAME_RELATED flag set on them. */
+static rtx
+Fpa (rtx par)
+{
+ int len = XVECLEN (par, 0);
+ int i;
+
+ for (i = 0; i < len; i++)
+ F (XVECEXP (par, 0, i));
+
+ return par;
+}
+
/* Output assembly language to FILE for the operation OP with operand size
SIZE to adjust the stack pointer. */
@@ -526,22 +552,27 @@ h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
&& !(cfun->static_chain_decl != NULL && sign < 0))
{
rtx r3 = gen_rtx_REG (Pmode, 3);
- emit_insn (gen_movhi (r3, GEN_INT (sign * size)));
- emit_insn (gen_addhi3 (stack_pointer_rtx,
- stack_pointer_rtx, r3));
+ F (emit_insn (gen_movhi (r3, GEN_INT (sign * size))));
+ F (emit_insn (gen_addhi3 (stack_pointer_rtx,
+ stack_pointer_rtx, r3)));
}
else
{
/* The stack adjustment made here is further optimized by the
splitter. In case of H8/300, the splitter always splits the
- addition emitted here to make the adjustment
- interrupt-safe. */
+ addition emitted here to make the adjustment interrupt-safe.
+ FIXME: We don't always tag those, because we don't know what
+ the splitter will do. */
if (Pmode == HImode)
- emit_insn (gen_addhi3 (stack_pointer_rtx,
- stack_pointer_rtx, GEN_INT (sign * size)));
+ {
+ rtx x = emit_insn (gen_addhi3 (stack_pointer_rtx,
+ stack_pointer_rtx, GEN_INT (sign * size)));
+ if (size < 4)
+ F (x);
+ }
else
- emit_insn (gen_addsi3 (stack_pointer_rtx,
- stack_pointer_rtx, GEN_INT (sign * size)));
+ F (emit_insn (gen_addsi3 (stack_pointer_rtx,
+ stack_pointer_rtx, GEN_INT (sign * size))));
}
}
@@ -591,7 +622,7 @@ push (int rn)
x = gen_push_h8300hs_advanced (reg);
else
x = gen_push_h8300hs_normal (reg);
- x = emit_insn (x);
+ x = F (emit_insn (x));
REG_NOTES (x) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, 0);
}
@@ -634,7 +665,7 @@ h8300_push_pop (int regno, int nregs, int pop_p, int return_p)
{
int i, j;
rtvec vec;
- rtx sp, offset;
+ rtx sp, offset, x;
/* See whether we can use a simple push or pop. */
if (!return_p && nregs == 1)
@@ -685,7 +716,10 @@ h8300_push_pop (int regno, int nregs, int pop_p, int return_p)
RTVEC_ELT (vec, i + j) = gen_rtx_SET (VOIDmode, sp,
gen_rtx_PLUS (Pmode, sp, offset));
- emit_insn (gen_rtx_PARALLEL (VOIDmode, vec));
+ x = gen_rtx_PARALLEL (VOIDmode, vec);
+ if (!pop_p)
+ x = Fpa (x);
+ emit_insn (x);
}
/* Return true if X has the value sp + OFFSET. */
@@ -820,7 +854,7 @@ h8300_expand_prologue (void)
{
/* Push fp. */
push (HARD_FRAME_POINTER_REGNUM);
- emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
+ F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx));
}
/* Push the rest of the registers in ascending order. */
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index e0f0ea62f4e..9757afc2de3 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -147,6 +147,17 @@ extern const char * const *h8_reg_names;
/* Show we can debug even without a frame pointer. */
/* #define CAN_DEBUG_WITHOUT_FP */
+/* We want dwarf2 info available to gdb... */
+#define DWARF2_DEBUGGING_INFO 1
+/* ... but we don't actually support full dwarf2 EH. */
+#define MUST_USE_SJLJ_EXCEPTIONS 1
+
+/* The return address is pushed on the stack. */
+#define INCOMING_RETURN_ADDR_RTX gen_rtx_MEM (Pmode, gen_rtx_REG (Pmode, STACK_POINTER_REGNUM))
+#define INCOMING_FRAME_SP_OFFSET (POINTER_SIZE / 8)
+
+#define DWARF_CIE_DATA_ALIGNMENT 2
+
/* Define this if addresses of constant functions
shouldn't be put through pseudo regs where they can be cse'd.
Desirable on machines where ordinary constants are expensive
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 43003cc5cad..cdab21c91a2 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -49,8 +49,9 @@ along with GCC; see the file COPYING3. If not see
target, always use the svr4_dbx_register_map for DWARF .eh_frame
even if we don't use DWARF .debug_frame. */
#undef DWARF_FRAME_REGNUM
-#define DWARF_FRAME_REGNUM(n) TARGET_64BIT \
- ? dbx64_register_map[(n)] : svr4_dbx_register_map[(n)]
+#define DWARF_FRAME_REGNUM(n) \
+ (TARGET_64BIT ? dbx64_register_map[(n)] \
+ : svr4_dbx_register_map[(n)])
#ifdef HAVE_GAS_PE_SECREL32_RELOC
/* Use section relative relocations for debugging offsets. Unlike
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b5bb6a0352f..6065f49a042 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4774,6 +4774,25 @@ ix86_function_type_abi (const_tree fntype)
return ix86_abi;
}
+static bool
+ix86_function_ms_hook_prologue (const_tree fntype)
+{
+ if (!TARGET_64BIT)
+ {
+ if (lookup_attribute ("ms_hook_prologue", DECL_ATTRIBUTES (fntype)))
+ {
+ if (decl_function_context (fntype) != NULL_TREE)
+ {
+ error_at (DECL_SOURCE_LOCATION (fntype),
+ "ms_hook_prologue is not compatible with nested function");
+ }
+
+ return true;
+ }
+ }
+ return false;
+}
+
static enum calling_abi
ix86_function_abi (const_tree fndecl)
{
@@ -8295,6 +8314,7 @@ ix86_expand_prologue (void)
bool pic_reg_used;
struct ix86_frame frame;
HOST_WIDE_INT allocate;
+ int gen_frame_pointer = frame_pointer_needed;
ix86_finalize_stack_realign_flags ();
@@ -8307,6 +8327,46 @@ ix86_expand_prologue (void)
ix86_compute_frame_layout (&frame);
+ if (ix86_function_ms_hook_prologue (current_function_decl))
+ {
+ rtx push, mov;
+
+ /* Make sure the function starts with
+ 8b ff movl.s %edi,%edi
+ 55 push %ebp
+ 8b ec movl.s %esp,%ebp
+
+ This matches the hookable function prologue in Win32 API
+ functions in Microsoft Windows XP Service Pack 2 and newer.
+ Wine uses this to enable Windows apps to hook the Win32 API
+ functions provided by Wine. */
+ insn = emit_insn (gen_vswapmov (gen_rtx_REG (SImode, DI_REG),
+ gen_rtx_REG (SImode, DI_REG)));
+ push = emit_insn (gen_push (hard_frame_pointer_rtx));
+ mov = emit_insn (gen_vswapmov (hard_frame_pointer_rtx,
+ stack_pointer_rtx));
+
+ if (frame_pointer_needed && !(crtl->drap_reg
+ && crtl->stack_realign_needed))
+ {
+ /* The push %ebp and movl.s %esp, %ebp already set up
+ the frame pointer. No need to do this again. */
+ gen_frame_pointer = 0;
+ RTX_FRAME_RELATED_P (push) = 1;
+ RTX_FRAME_RELATED_P (mov) = 1;
+ if (ix86_cfa_state->reg == stack_pointer_rtx)
+ ix86_cfa_state->reg = hard_frame_pointer_rtx;
+ }
+ else
+ /* If the frame pointer is not needed, pop %ebp again. This
+ could be optimized for cases where ebp needs to be backed up
+ for some other reason. If stack realignment is needed, pop
+ the base pointer again, align the stack, and later regenerate
+ the frame pointer setup. The frame pointer generated by the
+ hook prologue is not aligned, so it can't be used. */
+ insn = emit_insn ((*ix86_gen_pop1) (hard_frame_pointer_rtx));
+ }
+
/* The first insn of a function that accepts its static chain on the
stack is to push the register that would be filled in by a direct
call. This insn will be skipped by the trampoline. */
@@ -8378,7 +8438,7 @@ ix86_expand_prologue (void)
/* Note: AT&T enter does NOT have reversed args. Enter is probably
slower on all targets. Also sdb doesn't like it. */
- if (frame_pointer_needed)
+ if (gen_frame_pointer)
{
insn = emit_insn (gen_push (hard_frame_pointer_rtx));
RTX_FRAME_RELATED_P (insn) = 1;
@@ -8962,7 +9022,8 @@ ix86_expand_epilogue (int style)
0, red_offset,
style == 2);
pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
- GEN_INT (frame.nsseregs * 16 + frame.padding0),
+ GEN_INT (frame.nsseregs * 16
+ + frame.padding0),
style, false);
}
else if (frame.to_allocate || frame.padding0 || frame.nsseregs)
@@ -26470,6 +26531,33 @@ ix86_handle_struct_attribute (tree *node, tree name,
return NULL_TREE;
}
+static tree
+ix86_handle_fndecl_attribute (tree *node, tree name,
+ tree args ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
+{
+ if (TREE_CODE (*node) != FUNCTION_DECL)
+ {
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
+ *no_add_attrs = true;
+ return NULL_TREE;
+ }
+
+ if (TARGET_64BIT)
+ {
+ warning (OPT_Wattributes, "%qE attribute only available for 32-bit",
+ name);
+ return NULL_TREE;
+ }
+
+#ifndef HAVE_AS_IX86_SWAP
+ sorry ("ms_hook_prologue attribute needs assembler swap suffix support");
+#endif
+
+ return NULL_TREE;
+}
+
static bool
ix86_ms_bitfield_layout_p (const_tree record_type)
{
@@ -29512,6 +29600,7 @@ static const struct attribute_spec ix86_attribute_table[] =
/* ms_abi and sysv_abi calling convention function attributes. */
{ "ms_abi", 0, 0, false, true, true, ix86_handle_abi_attribute },
{ "sysv_abi", 0, 0, false, true, true, ix86_handle_abi_attribute },
+ { "ms_hook_prologue", 0, 0, true, false, false, ix86_handle_fndecl_attribute },
/* End element. */
{ NULL, 0, 0, false, false, false, NULL }
};
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 8d525727eec..33a50771471 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -873,6 +873,9 @@ enum target_cpu_default
|| ((MODE) == DFmode && (!TARGET_SSE2 || !TARGET_SSE_MATH)) \
|| (MODE) == XFmode)
+/* Cover class containing the stack registers. */
+#define STACK_REG_COVER_CLASS FLOAT_REGS
+
/* Number of actual hardware registers.
The hardware registers are assigned numbers for the compiler
from 0 to just below FIRST_PSEUDO_REGISTER.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 22ea39cf79b..408787b8ab4 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -241,6 +241,7 @@
(UNSPECV_RDTSC 18)
(UNSPECV_RDTSCP 19)
(UNSPECV_RDPMC 20)
+ (UNSPECV_VSWAPMOV 21)
])
;; Constants to represent pcomtrue/pcomfalse variants
@@ -13822,20 +13823,6 @@
operands[2] = gen_lowpart (QImode, operands[0]);
})
-(define_insn_and_split "*setcc_<mode>_2"
- [(set (match_operand:SWI48 0 "register_operand" "=q")
- (match_operator:SWI48 1 "ix86_comparison_operator"
- [(reg FLAGS_REG) (const_int 0)]))]
- "TARGET_PARTIAL_REG_STALL"
- "#"
- "&& reload_completed"
- [(set (match_dup 0) (const_int 0))
- (set (strict_low_part (match_dup 2)) (match_dup 1))]
-{
- PUT_MODE (operands[1], QImode);
- operands[2] = gen_lowpart (QImode, operands[0]);
-})
-
(define_insn "*setcc_qi"
[(set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(match_operator:QI 1 "ix86_comparison_operator"
@@ -14893,6 +14880,16 @@
(set_attr "length_immediate" "0")
(set_attr "modrm" "0")])
+(define_insn "vswapmov"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (match_operand:SI 1 "register_operand" "r"))
+ (unspec_volatile [(const_int 0)] UNSPECV_VSWAPMOV)]
+ ""
+ "movl.s\t{%1, %0|%0, %1}"
+ [(set_attr "length" "2")
+ (set_attr "length_immediate" "0")
+ (set_attr "modrm" "0")])
+
;; Pad to 16-byte boundary, max skip in op0. Used to avoid
;; branch prediction penalty for the third jump in a 16-byte
;; block on K8.
diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
index 9b51496a864..5e2e0136fcb 100644
--- a/gcc/config/i386/linux.h
+++ b/gcc/config/i386/linux.h
@@ -104,7 +104,7 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC
#define ASM_SPEC \
- "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
+ "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} --32 \
%{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
#undef SUBTARGET_EXTRA_SPECS
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 75c8f0ee6c4..23fc7540ec0 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -5496,6 +5496,14 @@ ia64_override_options (void)
if (TARGET_AUTO_PIC)
target_flags |= MASK_CONST_GP;
+ /* Numerous experiment shows that IRA based loop pressure
+ calculation works better for RTL loop invariant motion on targets
+ with enough (>= 32) registers. It is an expensive optimization.
+ So it is on only for peak performance. */
+ if (optimize >= 3)
+ flag_ira_loop_pressure = 1;
+
+
ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
flag_schedule_insns_after_reload = 0;
diff --git a/gcc/config/m32c/m32c-protos.h b/gcc/config/m32c/m32c-protos.h
index e571fe9d25e..42b92feb506 100644
--- a/gcc/config/m32c/m32c-protos.h
+++ b/gcc/config/m32c/m32c-protos.h
@@ -49,7 +49,6 @@ int m32c_trampoline_size (void);
#if defined(RTX_CODE) && defined(TREE_CODE)
rtx m32c_function_arg (CUMULATIVE_ARGS *, MM, tree, int);
-rtx m32c_function_value (const_tree, const_tree);
#endif
@@ -75,7 +74,7 @@ bool m32c_immd_dbl_mov (rtx *, MM);
rtx m32c_incoming_return_addr_rtx (void);
int m32c_legitimate_constant_p (rtx);
int m32c_legitimize_reload_address (rtx *, MM, int, int, int);
-rtx m32c_libcall_value (MM);
+bool m32c_function_value_regno_p (const unsigned int);
int m32c_limit_reload_class (MM, int);
int m32c_memory_move_cost (MM, int, int);
int m32c_modes_tieable_p (MM, MM);
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index 4eeedb183e7..1085aa7c25a 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -81,6 +81,9 @@ static bool m32c_strict_argument_naming (CUMULATIVE_ARGS *);
static rtx m32c_struct_value_rtx (tree, int);
static rtx m32c_subreg (enum machine_mode, rtx, enum machine_mode, int);
static int need_to_save (int);
+static rtx m32c_function_value (const_tree, const_tree, bool);
+static rtx m32c_libcall_value (enum machine_mode, const_rtx);
+
int current_function_special_page_vector (rtx);
#define SYMBOL_FLAG_FUNCVEC_FUNCTION (SYMBOL_FLAG_MACH_DEP << 0)
@@ -1591,15 +1594,19 @@ m32c_valid_pointer_mode (enum machine_mode mode)
/* How Scalar Function Values Are Returned */
-/* Implements LIBCALL_VALUE. Most values are returned in $r0, or some
+/* Implements TARGET_LIBCALL_VALUE. Most values are returned in $r0, or some
combination of registers starting there (r2r0 for longs, r3r1r2r0
for long long, r3r2r1r0 for doubles), except that that ABI
currently doesn't work because it ends up using all available
general registers and gcc often can't compile it. So, instead, we
return anything bigger than 16 bits in "mem0" (effectively, a
memory location). */
-rtx
-m32c_libcall_value (enum machine_mode mode)
+
+#undef TARGET_LIBCALL_VALUE
+#define TARGET_LIBCALL_VALUE m32c_libcall_value
+
+static rtx
+m32c_libcall_value (enum machine_mode mode, const_rtx fun ATTRIBUTE_UNUSED)
{
/* return reg or parallel */
#if 0
@@ -1649,14 +1656,28 @@ m32c_libcall_value (enum machine_mode mode)
return gen_rtx_REG (mode, R0_REGNO);
}
-/* Implements FUNCTION_VALUE. Functions and libcalls have the same
+/* Implements TARGET_FUNCTION_VALUE. Functions and libcalls have the same
conventions. */
-rtx
-m32c_function_value (const_tree valtype, const_tree func ATTRIBUTE_UNUSED)
+
+#undef TARGET_FUNCTION_VALUE
+#define TARGET_FUNCTION_VALUE m32c_function_value
+
+static rtx
+m32c_function_value (const_tree valtype,
+ const_tree fn_decl_or_type ATTRIBUTE_UNUSED,
+ bool outgoing ATTRIBUTE_UNUSED)
{
/* return reg or parallel */
const enum machine_mode mode = TYPE_MODE (valtype);
- return m32c_libcall_value (mode);
+ return m32c_libcall_value (mode, NULL_RTX);
+}
+
+/* Implements FUNCTION_VALUE_REGNO_P. */
+
+bool
+m32c_function_value_regno_p (const unsigned int regno)
+{
+ return (regno == R0_REGNO || regno == MEM0_REGNO);
}
/* How Large Values Are Returned */
diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h
index 0f12158c0e4..c0914d3be02 100644
--- a/gcc/config/m32c/m32c.h
+++ b/gcc/config/m32c/m32c.h
@@ -533,10 +533,7 @@ typedef struct m32c_cumulative_args
/* How Scalar Function Values Are Returned */
-#define FUNCTION_VALUE(VT,F) m32c_function_value (VT, F)
-#define LIBCALL_VALUE(MODE) m32c_libcall_value (MODE)
-
-#define FUNCTION_VALUE_REGNO_P(r) ((r) == R0_REGNO || (r) == MEM0_REGNO)
+#define FUNCTION_VALUE_REGNO_P(r) m32c_function_value_regno_p (r)
/* How Large Values Are Returned */
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index e44eb49b943..4b4353c95ac 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3387,10 +3387,11 @@ mips_immediate_operand_p (int code, HOST_WIDE_INT x)
/* Return the cost of binary operation X, given that the instruction
sequence for a word-sized or smaller operation has cost SINGLE_COST
- and that the sequence of a double-word operation has cost DOUBLE_COST. */
+ and that the sequence of a double-word operation has cost DOUBLE_COST.
+ If SPEED is true, optimize for speed otherwise optimize for size. */
static int
-mips_binary_cost (rtx x, int single_cost, int double_cost)
+mips_binary_cost (rtx x, int single_cost, int double_cost, bool speed)
{
int cost;
@@ -3399,8 +3400,8 @@ mips_binary_cost (rtx x, int single_cost, int double_cost)
else
cost = single_cost;
return (cost
- + rtx_cost (XEXP (x, 0), SET, !optimize_size)
- + rtx_cost (XEXP (x, 1), GET_CODE (x), !optimize_size));
+ + rtx_cost (XEXP (x, 0), SET, speed)
+ + rtx_cost (XEXP (x, 1), GET_CODE (x), speed));
}
/* Return the cost of floating-point multiplications of mode MODE. */
@@ -3470,8 +3471,7 @@ mips_zero_extend_cost (enum machine_mode mode, rtx op)
/* Implement TARGET_RTX_COSTS. */
static bool
-mips_rtx_costs (rtx x, int code, int outer_code, int *total,
- bool speed)
+mips_rtx_costs (rtx x, int code, int outer_code, int *total, bool speed)
{
enum machine_mode mode = GET_MODE (x);
bool float_mode_p = FLOAT_MODE_P (mode);
@@ -3527,8 +3527,7 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
operand needs to be forced into a register, we will often be
able to hoist the constant load out of the loop, so the load
should not contribute to the cost. */
- if (!optimize_size
- || mips_immediate_operand_p (outer_code, INTVAL (x)))
+ if (speed || mips_immediate_operand_p (outer_code, INTVAL (x)))
{
*total = 0;
return true;
@@ -3626,7 +3625,8 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
case IOR:
case XOR:
/* Double-word operations use two single-word operations. */
- *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (2));
+ *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (2),
+ speed);
return true;
case ASHIFT:
@@ -3635,9 +3635,11 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
case ROTATE:
case ROTATERT:
if (CONSTANT_P (XEXP (x, 1)))
- *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4));
+ *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4),
+ speed);
else
- *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (12));
+ *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (12),
+ speed);
return true;
case ABS:
@@ -3673,7 +3675,8 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
*total = mips_cost->fp_add;
return false;
}
- *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4));
+ *total = mips_binary_cost (x, COSTS_N_INSNS (1), COSTS_N_INSNS (4),
+ speed);
return true;
case MINUS:
@@ -3724,7 +3727,8 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
an SLTU. The MIPS16 version then needs to move the result of
the SLTU from $24 to a MIPS16 register. */
*total = mips_binary_cost (x, COSTS_N_INSNS (1),
- COSTS_N_INSNS (TARGET_MIPS16 ? 5 : 4));
+ COSTS_N_INSNS (TARGET_MIPS16 ? 5 : 4),
+ speed);
return true;
case NEG:
@@ -3760,10 +3764,10 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
else if (mode == DImode && !TARGET_64BIT)
/* Synthesized from 2 mulsi3s, 1 mulsidi3 and two additions,
where the mulsidi3 always includes an MFHI and an MFLO. */
- *total = (optimize_size
- ? COSTS_N_INSNS (ISA_HAS_MUL3 ? 7 : 9)
- : mips_cost->int_mult_si * 3 + 6);
- else if (optimize_size)
+ *total = (speed
+ ? mips_cost->int_mult_si * 3 + 6
+ : COSTS_N_INSNS (ISA_HAS_MUL3 ? 7 : 9));
+ else if (!speed)
*total = (ISA_HAS_MUL3 ? 1 : 2);
else if (mode == DImode)
*total = mips_cost->int_mult_di;
@@ -3800,7 +3804,7 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total,
case UDIV:
case UMOD:
- if (optimize_size)
+ if (!speed)
{
/* It is our responsibility to make division by a power of 2
as cheap as 2 register additions if we want the division
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 20f64449097..d10a40d55e1 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -7120,17 +7120,6 @@
operands[0] = index;
}
- /* In 64bit mode we must make sure to wipe the upper bits of the register
- just in case the addition overflowed or we had random bits in the
- high part of the register. */
- if (TARGET_64BIT)
- {
- rtx index = gen_reg_rtx (DImode);
-
- emit_insn (gen_extendsidi2 (index, operands[0]));
- operands[0] = gen_rtx_SUBREG (SImode, index, 4);
- }
-
if (!INT_5_BITS (operands[2]))
operands[2] = force_reg (SImode, operands[2]);
@@ -7149,6 +7138,17 @@
emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2], operands[4]));
}
+ /* In 64bit mode we must make sure to wipe the upper bits of the register
+ just in case the addition overflowed or we had random bits in the
+ high part of the register. */
+ if (TARGET_64BIT)
+ {
+ rtx index = gen_reg_rtx (DImode);
+
+ emit_insn (gen_extendsidi2 (index, operands[0]));
+ operands[0] = index;
+ }
+
if (TARGET_BIG_SWITCH)
{
if (TARGET_64BIT)
@@ -7209,8 +7209,7 @@
;;; 64-bit code, 32-bit relative branch table.
(define_insn "casesi64p"
[(set (pc) (mem:DI (plus:DI
- (mult:DI (sign_extend:DI
- (match_operand:SI 0 "register_operand" "r"))
+ (mult:DI (match_operand:DI 0 "register_operand" "r")
(const_int 8))
(label_ref (match_operand 1 "" "")))))
(clobber (match_scratch:DI 2 "=&r"))
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index 53b1054d200..6fbb7cdcdac 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -1,5 +1,5 @@
;; AltiVec patterns.
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
;; Free Software Foundation, Inc.
;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
diff --git a/gcc/config/rs6000/option-defaults.h b/gcc/config/rs6000/option-defaults.h
index 682add7605d..7e117d731da 100644
--- a/gcc/config/rs6000/option-defaults.h
+++ b/gcc/config/rs6000/option-defaults.h
@@ -50,15 +50,15 @@
/* Support for a compile-time default CPU, et cetera. The rules are:
--with-cpu is ignored if -mcpu is specified; likewise --with-cpu-32
and --with-cpu-64.
- --with-tune is ignored if -mtune is specified; likewise --with-tune-32
- and --with-tune-64.
+ --with-tune is ignored if -mtune or -mcpu is specified; likewise
+ --with-tune-32 and --with-tune-64.
--with-float is ignored if -mhard-float or -msoft-float are
- specified. */
+ specified. */
#define OPTION_DEFAULT_SPECS \
+ {"tune", "%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}" }, \
+ {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}}" }, \
+ {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}}" }, \
{"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \
{"cpu_32", "%{" OPT_ARCH32 ":%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
{"cpu_64", "%{" OPT_ARCH64 ":%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
- {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
- {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
- {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
{"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index d03cce6f8a2..2d8a2a8d5d1 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -1,5 +1,5 @@
;; Predicate definitions for POWER and PowerPC.
-;; Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
;;
;; This file is part of GCC.
;;
diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def
new file mode 100644
index 00000000000..f5ad34882d4
--- /dev/null
+++ b/gcc/config/rs6000/rs6000-builtin.def
@@ -0,0 +1,990 @@
+/* Builtin functions for rs6000/powerpc.
+ Copyright (C) 2009
+ Free Software Foundation, Inc.
+ Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
+
+ This file is part of GCC.
+
+ GCC 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 3, or (at your
+ option) any later version.
+
+ GCC 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.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Before including this file, two macros must be defined:
+ RS6000_BUILTIN -- 2 arguments, the enum name, and classification
+ RS6000_BUILTIN_EQUATE -- 2 arguments, enum name and value */
+
+/* AltiVec builtins. */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4si, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4si, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_8hi, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_8hi, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_16qi, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_16qi, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4sf, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4sf, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDCUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSBS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSWS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAND, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VANDC, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFUX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFSX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTSXS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTUXS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEXPTEFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VLOGEFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMADDFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHADDSHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHRADDSHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMLADDUHM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUBM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMMBM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNMSUBFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNOR, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VOR, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKPX, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHSS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHSS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWSS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWSS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHUS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWUS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VREFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIM, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIN, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIZ, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRSQRTEFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSL, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLO, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSR, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRO, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWM, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBFP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBCUW, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSBS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSWS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4UBS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SBS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SHS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM2SWS, RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUMSWS, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VXOR, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHPX, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSB, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLPX, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSH, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MTVSCR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MFVSCR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSSALL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSR, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTST, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTSTT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DST, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEBX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEHX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEWX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEBX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEHX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEWX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRX, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRXL, RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW_P, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_LOAD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_STORE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_COPYSIGN_V4SF, RS6000_BTC_CONST)
+
+/* Altivec overloaded builtins. */
+/* For now, don't set the classification for overloaded functions.
+ The function should be converted to the type specific instruction
+ before we get to the point about classifying the builtin type. */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQ_P, RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_FIRST,
+ ALTIVEC_BUILTIN_VCMPEQ_P)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGT_P, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGE_P, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABSS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDC, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AND, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ANDC, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AVG, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXTRACT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CEIL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_COPYSIGN, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTF, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTU, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DST, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTST, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTSTT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXPTE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_FLOOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LOGE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEBX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEHX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEWX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLXL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRXL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADDS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MAX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MIN, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MLADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MPERM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRADDS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUMS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MTVSCR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULO, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NEARBYINT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NMSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_OR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACK, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKPX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKSU, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PERM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RINT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ROUND, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RSQRTE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SEL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLD, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLO, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S16, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S32, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S8, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U16, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U32, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U8, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SQRT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRA, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRO, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ST, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEBX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEHX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEWX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLXL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRXL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBC, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM2S, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM4S, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUMS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_TRUNC, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKL, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFSX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFUX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMMBM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUBM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHSS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHUS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWSS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWUS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRW, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBFP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWM, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SHS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4UBS, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHPX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLPX, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_XOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STEP, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PROMOTE, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INSERT, RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLATS, RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_LAST,
+ ALTIVEC_BUILTIN_VEC_SPLATS)
+
+/* SPE builtins. */
+RS6000_BUILTIN(SPE_BUILTIN_EVADDW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVAND, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVANDC, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEQV, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSDIV, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSMUL, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDDX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDHX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDWX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLATX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLATX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLATX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHEX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOSX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOUX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLATX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLATX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHILO, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELO, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELOHI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIANW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNAND, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVORC, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDDX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDHX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDWX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHEX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHOX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWEX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWOX, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVXOR, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVABS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLSW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLZW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSB, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSH, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSABS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSIZ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUF, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUIZ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNABS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNEG, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMRA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNEG, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRNDW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUMIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUSIAAW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDIW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDD, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDH, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHE, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLAT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLWI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLWI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDD, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDH, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDW, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHE, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHO, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWE, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWO, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBIFW, RS6000_BTC_MISC)
+
+ /* Compares. */
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPGT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPLT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTGT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTLT, RS6000_BTC_MISC)
+
+/* EVSEL compares. */
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTS, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTU, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPGT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPLT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTEQ, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTGT, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTLT, RS6000_BTC_MISC)
+
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATFI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATI, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSMAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAA, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAN, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MTSPEFSCR, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MFSPEFSCR, RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_BRINC, RS6000_BTC_MISC)
+
+/* PAIRED builtins. */
+RS6000_BUILTIN(PAIRED_BUILTIN_DIVV2SF3, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ABSV2SF2, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NEGV2SF2, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SQRTV2SF2, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ADDV2SF3, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUBV2SF3, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_RESV2SF2, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULV2SF3, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NABSV2SF2, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM0, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM1, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS0, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS1, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE00, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE01, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE10, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE11, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS0, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS1, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_STX, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_LX, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SELV2SF4, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU0, RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU1, RS6000_BTC_MISC)
+
+ /* VSX builtins. */
+RS6000_BUILTIN(VSX_BUILTIN_LXSDX, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVD2X, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVDSX, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVW4X, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXSDX, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXVD2X, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXVW4X, RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_XSABSDP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSADDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPODP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPUDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCPSGNDP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSPDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSXDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVUXDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSDIVDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDADP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDMDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMAXDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMINDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMOVDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBADP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBMDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMULDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNABSDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNEGDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDADP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDMDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBADP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBMDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPI, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIC, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIM, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIZ, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSREDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRSQRTEDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSQRTDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSUBDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNDP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNSP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSDP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSSP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP_P, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNDP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNSP, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS_UNS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXDS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXWS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP_UNS, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPI, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIC, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIM, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIZ, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVREDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRESP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPI, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIC, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIM, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIZ, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTEDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTESP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBDP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBSP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FE, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FG, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI_UNS, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DF, RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DI, RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_16QI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_8HI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DI, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DF, RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DI, RS6000_BTC_CONST)
+
+/* VSX overloaded builtins, add the overloaded functions not present in
+ Altivec. */
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MUL, RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_FIRST,
+ VSX_BUILTIN_VEC_MUL)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_NMADD, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUITLIN_VEC_NMSUB, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_DIV, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGHW, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGLW, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXPERMDI, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSLDWI, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTD, RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTW, RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_LAST,
+ VSX_BUILTIN_VEC_XXSPLTW)
+
+/* Combined VSX/Altivec builtins. */
+RS6000_BUILTIN(VECTOR_BUILTIN_FLOAT_V4SI_V4SF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIX_V4SF_V4SI, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIXUNS_V4SF_V4SI, RS6000_BTC_FP_PURE)
+
+/* Power7 builtins, that aren't VSX instructions. */
+RS6000_BUILTIN(POWER7_BUILTIN_BPERMD, RS6000_BTC_CONST)
+
+/* Miscellaneous builtins. */
+RS6000_BUILTIN(RS6000_BUILTIN_RECIP, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RECIPF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RSQRTF, RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_BSWAP_HI, RS6000_BTC_CONST)
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index dea4a5334b0..88649ea0735 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -130,6 +130,8 @@ typedef struct GTY(()) machine_function
64-bits wide and is allocated early enough so that the offset
does not overflow the 16-bit load/store offset field. */
rtx sdmode_stack_slot;
+ /* True if any VSX or ALTIVEC vector type was used. */
+ bool vsx_or_altivec_used_p;
} machine_function;
/* Target cpu type */
@@ -836,6 +838,21 @@ struct processor_costs ppca2_cost = {
};
+/* Table that classifies rs6000 builtin functions (pure, const, etc.). */
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) TYPE,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE)
+
+static const enum rs6000_btc builtin_classify[(int)RS6000_BUILTIN_COUNT] =
+{
+#include "rs6000-builtin.def"
+};
+
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
+
static bool rs6000_function_ok_for_sibcall (tree, tree);
static const char *rs6000_invalid_within_doloop (const_rtx);
static bool rs6000_legitimate_address_p (enum machine_mode, rtx, bool);
@@ -898,7 +915,7 @@ static void rs6000_elf_encode_section_info (tree, rtx, int)
ATTRIBUTE_UNUSED;
#endif
static bool rs6000_use_blocks_for_constant_p (enum machine_mode, const_rtx);
-static void rs6000_alloc_sdmode_stack_slot (void);
+static void rs6000_expand_to_rtl_hook (void);
static void rs6000_instantiate_decls (void);
#if TARGET_XCOFF
static void rs6000_xcoff_asm_output_anchor (rtx);
@@ -1490,7 +1507,7 @@ static const struct attribute_spec rs6000_attribute_table[] =
#define TARGET_BUILTIN_RECIPROCAL rs6000_builtin_reciprocal
#undef TARGET_EXPAND_TO_RTL_HOOK
-#define TARGET_EXPAND_TO_RTL_HOOK rs6000_alloc_sdmode_stack_slot
+#define TARGET_EXPAND_TO_RTL_HOOK rs6000_expand_to_rtl_hook
#undef TARGET_INSTANTIATE_DECLS
#define TARGET_INSTANTIATE_DECLS rs6000_instantiate_decls
@@ -2266,6 +2283,13 @@ rs6000_override_options (const char *default_cpu)
| MASK_POPCNTD | MASK_VSX | MASK_ISEL | MASK_NO_UPDATE)
};
+ /* Numerous experiment shows that IRA based loop pressure
+ calculation works better for RTL loop invariant motion on targets
+ with enough (>= 32) registers. It is an expensive optimization.
+ So it is on only for peak performance. */
+ if (optimize >= 3)
+ flag_ira_loop_pressure = 1;
+
/* Set the pointer size. */
if (TARGET_64BIT)
{
@@ -8494,13 +8518,54 @@ def_builtin (int mask, const char *name, tree type, int code)
{
if ((mask & target_flags) || TARGET_PAIRED_FLOAT)
{
+ tree t;
if (rs6000_builtin_decls[code])
fatal_error ("internal error: builtin function to %s already processed.",
name);
- rs6000_builtin_decls[code] =
+ rs6000_builtin_decls[code] = t =
add_builtin_function (name, type, code, BUILT_IN_MD,
NULL, NULL_TREE);
+
+ gcc_assert (code >= 0 && code < (int)RS6000_BUILTIN_COUNT);
+ switch (builtin_classify[code])
+ {
+ default:
+ gcc_unreachable ();
+
+ /* assume builtin can do anything. */
+ case RS6000_BTC_MISC:
+ break;
+
+ /* const function, function only depends on the inputs. */
+ case RS6000_BTC_CONST:
+ TREE_READONLY (t) = 1;
+ TREE_NOTHROW (t) = 1;
+ break;
+
+ /* pure function, function can read global memory. */
+ case RS6000_BTC_PURE:
+ DECL_PURE_P (t) = 1;
+ TREE_NOTHROW (t) = 1;
+ break;
+
+ /* Function is a math function. If rounding mode is on, then treat
+ the function as not reading global memory, but it can have
+ arbitrary side effects. If it is off, then assume the function is
+ a const function. This mimics the ATTR_MATHFN_FPROUNDING
+ attribute in builtin-attribute.def that is used for the math
+ functions. */
+ case RS6000_BTC_FP_PURE:
+ TREE_NOTHROW (t) = 1;
+ if (flag_rounding_math)
+ {
+ DECL_PURE_P (t) = 1;
+ DECL_IS_NOVOPS (t) = 1;
+ }
+ else
+ TREE_READONLY (t) = 1;
+ break;
+ }
}
}
@@ -13127,6 +13192,38 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
return NULL_TREE;
}
+static tree
+rs6000_check_vector_mode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
+{
+ /* Don't walk into types. */
+ if (*tp == NULL_TREE || *tp == error_mark_node || TYPE_P (*tp))
+ {
+ *walk_subtrees = 0;
+ return NULL_TREE;
+ }
+
+ switch (TREE_CODE (*tp))
+ {
+ case VAR_DECL:
+ case PARM_DECL:
+ case FIELD_DECL:
+ case RESULT_DECL:
+ case SSA_NAME:
+ case REAL_CST:
+ case INDIRECT_REF:
+ case ALIGN_INDIRECT_REF:
+ case MISALIGNED_INDIRECT_REF:
+ case VIEW_CONVERT_EXPR:
+ if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (*tp))))
+ return *tp;
+ break;
+ default:
+ break;
+ }
+
+ return NULL_TREE;
+}
+
enum reload_reg_type {
GPR_REGISTER_TYPE,
VECTOR_REGISTER_TYPE,
@@ -13567,11 +13664,17 @@ rs6000_ira_cover_classes (void)
return (TARGET_VSX) ? cover_vsx : cover_pre_vsx;
}
-/* Allocate a 64-bit stack slot to be used for copying SDmode
- values through if this function has any SDmode references. */
+/* Scan the trees looking for certain types.
+
+ Allocate a 64-bit stack slot to be used for copying SDmode values through if
+ this function has any SDmode references.
+
+ If VSX, note whether any vector operation was done so we can set VRSAVE to
+ non-zero, even if we just use the floating point registers to tell the
+ kernel to save the vector registers. */
static void
-rs6000_alloc_sdmode_stack_slot (void)
+rs6000_expand_to_rtl_hook (void)
{
tree t;
basic_block bb;
@@ -13579,6 +13682,24 @@ rs6000_alloc_sdmode_stack_slot (void)
gcc_assert (cfun->machine->sdmode_stack_slot == NULL_RTX);
+ /* Check for vectors. */
+ if (TARGET_VSX)
+ {
+ FOR_EACH_BB (bb)
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ if (walk_gimple_op (gsi_stmt (gsi), rs6000_check_vector_mode,
+ NULL))
+ {
+ cfun->machine->vsx_or_altivec_used_p = true;
+ goto found_vector;
+ }
+ }
+ found_vector:
+ ;
+ }
+
+ /* Check for SDmode being used. */
FOR_EACH_BB (bb)
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
@@ -16720,6 +16841,15 @@ compute_vrsave_mask (void)
if (df_regs_ever_live_p (i))
mask |= ALTIVEC_REG_BIT (i);
+ /* If VSX is used, we might have used a traditional floating point register
+ in a vector mode without using any altivec registers. However the VRSAVE
+ register does not have room to indicate the floating point registers.
+ Modern kernels only look to see if the value is non-zero to determine if
+ they need to save the vector registers, so we just set an arbitrary
+ value if any vector type was used. */
+ if (mask == 0 && TARGET_VSX && cfun->machine->vsx_or_altivec_used_p)
+ mask = 0xFFF;
+
if (mask == 0)
return mask;
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index c8ab4369a39..4b1ca3d635a 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -1033,10 +1033,12 @@ extern unsigned rs6000_pointer_size;
#define HARD_REGNO_NREGS(REGNO, MODE) rs6000_hard_regno_nregs[(MODE)][(REGNO)]
-#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \
- ((TARGET_32BIT && TARGET_POWERPC64 \
- && (GET_MODE_SIZE (MODE) > 4) \
- && INT_REGNO_P (REGNO)) ? 1 : 0)
+#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \
+ (((TARGET_32BIT && TARGET_POWERPC64 \
+ && (GET_MODE_SIZE (MODE) > 4) \
+ && INT_REGNO_P (REGNO)) ? 1 : 0) \
+ || (TARGET_VSX && FP_REGNO_P (REGNO) \
+ && GET_MODE_SIZE (MODE) > 8))
#define VSX_VECTOR_MODE(MODE) \
((MODE) == V4SFmode \
@@ -2424,964 +2426,35 @@ extern int optimize;
extern int flag_expensive_optimizations;
extern int frame_pointer_needed;
+/* Classification of the builtin functions to properly set the declaration tree
+ flags. */
+enum rs6000_btc
+{
+ RS6000_BTC_MISC, /* assume builtin can do anything */
+ RS6000_BTC_CONST, /* builtin is a 'const' function. */
+ RS6000_BTC_PURE, /* builtin is a 'pure' function. */
+ RS6000_BTC_FP_PURE /* builtin is 'pure' if rounding math. */
+};
+
+/* Convenience macros to document the instruction type. */
+#define RS6000_BTC_MEM RS6000_BTC_MISC /* load/store touches memory */
+#define RS6000_BTC_SAT RS6000_BTC_MISC /* VMX saturate sets VSCR register */
+
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) NAME,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE) NAME = VALUE,
+
enum rs6000_builtins
{
- /* AltiVec builtins. */
- ALTIVEC_BUILTIN_ST_INTERNAL_4si,
- ALTIVEC_BUILTIN_LD_INTERNAL_4si,
- ALTIVEC_BUILTIN_ST_INTERNAL_8hi,
- ALTIVEC_BUILTIN_LD_INTERNAL_8hi,
- ALTIVEC_BUILTIN_ST_INTERNAL_16qi,
- ALTIVEC_BUILTIN_LD_INTERNAL_16qi,
- ALTIVEC_BUILTIN_ST_INTERNAL_4sf,
- ALTIVEC_BUILTIN_LD_INTERNAL_4sf,
- ALTIVEC_BUILTIN_VADDUBM,
- ALTIVEC_BUILTIN_VADDUHM,
- ALTIVEC_BUILTIN_VADDUWM,
- ALTIVEC_BUILTIN_VADDFP,
- ALTIVEC_BUILTIN_VADDCUW,
- ALTIVEC_BUILTIN_VADDUBS,
- ALTIVEC_BUILTIN_VADDSBS,
- ALTIVEC_BUILTIN_VADDUHS,
- ALTIVEC_BUILTIN_VADDSHS,
- ALTIVEC_BUILTIN_VADDUWS,
- ALTIVEC_BUILTIN_VADDSWS,
- ALTIVEC_BUILTIN_VAND,
- ALTIVEC_BUILTIN_VANDC,
- ALTIVEC_BUILTIN_VAVGUB,
- ALTIVEC_BUILTIN_VAVGSB,
- ALTIVEC_BUILTIN_VAVGUH,
- ALTIVEC_BUILTIN_VAVGSH,
- ALTIVEC_BUILTIN_VAVGUW,
- ALTIVEC_BUILTIN_VAVGSW,
- ALTIVEC_BUILTIN_VCFUX,
- ALTIVEC_BUILTIN_VCFSX,
- ALTIVEC_BUILTIN_VCTSXS,
- ALTIVEC_BUILTIN_VCTUXS,
- ALTIVEC_BUILTIN_VCMPBFP,
- ALTIVEC_BUILTIN_VCMPEQUB,
- ALTIVEC_BUILTIN_VCMPEQUH,
- ALTIVEC_BUILTIN_VCMPEQUW,
- ALTIVEC_BUILTIN_VCMPEQFP,
- ALTIVEC_BUILTIN_VCMPGEFP,
- ALTIVEC_BUILTIN_VCMPGTUB,
- ALTIVEC_BUILTIN_VCMPGTSB,
- ALTIVEC_BUILTIN_VCMPGTUH,
- ALTIVEC_BUILTIN_VCMPGTSH,
- ALTIVEC_BUILTIN_VCMPGTUW,
- ALTIVEC_BUILTIN_VCMPGTSW,
- ALTIVEC_BUILTIN_VCMPGTFP,
- ALTIVEC_BUILTIN_VEXPTEFP,
- ALTIVEC_BUILTIN_VLOGEFP,
- ALTIVEC_BUILTIN_VMADDFP,
- ALTIVEC_BUILTIN_VMAXUB,
- ALTIVEC_BUILTIN_VMAXSB,
- ALTIVEC_BUILTIN_VMAXUH,
- ALTIVEC_BUILTIN_VMAXSH,
- ALTIVEC_BUILTIN_VMAXUW,
- ALTIVEC_BUILTIN_VMAXSW,
- ALTIVEC_BUILTIN_VMAXFP,
- ALTIVEC_BUILTIN_VMHADDSHS,
- ALTIVEC_BUILTIN_VMHRADDSHS,
- ALTIVEC_BUILTIN_VMLADDUHM,
- ALTIVEC_BUILTIN_VMRGHB,
- ALTIVEC_BUILTIN_VMRGHH,
- ALTIVEC_BUILTIN_VMRGHW,
- ALTIVEC_BUILTIN_VMRGLB,
- ALTIVEC_BUILTIN_VMRGLH,
- ALTIVEC_BUILTIN_VMRGLW,
- ALTIVEC_BUILTIN_VMSUMUBM,
- ALTIVEC_BUILTIN_VMSUMMBM,
- ALTIVEC_BUILTIN_VMSUMUHM,
- ALTIVEC_BUILTIN_VMSUMSHM,
- ALTIVEC_BUILTIN_VMSUMUHS,
- ALTIVEC_BUILTIN_VMSUMSHS,
- ALTIVEC_BUILTIN_VMINUB,
- ALTIVEC_BUILTIN_VMINSB,
- ALTIVEC_BUILTIN_VMINUH,
- ALTIVEC_BUILTIN_VMINSH,
- ALTIVEC_BUILTIN_VMINUW,
- ALTIVEC_BUILTIN_VMINSW,
- ALTIVEC_BUILTIN_VMINFP,
- ALTIVEC_BUILTIN_VMULEUB,
- ALTIVEC_BUILTIN_VMULEUB_UNS,
- ALTIVEC_BUILTIN_VMULESB,
- ALTIVEC_BUILTIN_VMULEUH,
- ALTIVEC_BUILTIN_VMULEUH_UNS,
- ALTIVEC_BUILTIN_VMULESH,
- ALTIVEC_BUILTIN_VMULOUB,
- ALTIVEC_BUILTIN_VMULOUB_UNS,
- ALTIVEC_BUILTIN_VMULOSB,
- ALTIVEC_BUILTIN_VMULOUH,
- ALTIVEC_BUILTIN_VMULOUH_UNS,
- ALTIVEC_BUILTIN_VMULOSH,
- ALTIVEC_BUILTIN_VNMSUBFP,
- ALTIVEC_BUILTIN_VNOR,
- ALTIVEC_BUILTIN_VOR,
- ALTIVEC_BUILTIN_VSEL_2DF, /* needed for VSX */
- ALTIVEC_BUILTIN_VSEL_2DI, /* needed for VSX */
- ALTIVEC_BUILTIN_VSEL_4SI,
- ALTIVEC_BUILTIN_VSEL_4SF,
- ALTIVEC_BUILTIN_VSEL_8HI,
- ALTIVEC_BUILTIN_VSEL_16QI,
- ALTIVEC_BUILTIN_VSEL_2DI_UNS,
- ALTIVEC_BUILTIN_VSEL_4SI_UNS,
- ALTIVEC_BUILTIN_VSEL_8HI_UNS,
- ALTIVEC_BUILTIN_VSEL_16QI_UNS,
- ALTIVEC_BUILTIN_VPERM_2DF, /* needed for VSX */
- ALTIVEC_BUILTIN_VPERM_2DI, /* needed for VSX */
- ALTIVEC_BUILTIN_VPERM_4SI,
- ALTIVEC_BUILTIN_VPERM_4SF,
- ALTIVEC_BUILTIN_VPERM_8HI,
- ALTIVEC_BUILTIN_VPERM_16QI,
- ALTIVEC_BUILTIN_VPERM_2DI_UNS,
- ALTIVEC_BUILTIN_VPERM_4SI_UNS,
- ALTIVEC_BUILTIN_VPERM_8HI_UNS,
- ALTIVEC_BUILTIN_VPERM_16QI_UNS,
- ALTIVEC_BUILTIN_VPKUHUM,
- ALTIVEC_BUILTIN_VPKUWUM,
- ALTIVEC_BUILTIN_VPKPX,
- ALTIVEC_BUILTIN_VPKUHSS,
- ALTIVEC_BUILTIN_VPKSHSS,
- ALTIVEC_BUILTIN_VPKUWSS,
- ALTIVEC_BUILTIN_VPKSWSS,
- ALTIVEC_BUILTIN_VPKUHUS,
- ALTIVEC_BUILTIN_VPKSHUS,
- ALTIVEC_BUILTIN_VPKUWUS,
- ALTIVEC_BUILTIN_VPKSWUS,
- ALTIVEC_BUILTIN_VREFP,
- ALTIVEC_BUILTIN_VRFIM,
- ALTIVEC_BUILTIN_VRFIN,
- ALTIVEC_BUILTIN_VRFIP,
- ALTIVEC_BUILTIN_VRFIZ,
- ALTIVEC_BUILTIN_VRLB,
- ALTIVEC_BUILTIN_VRLH,
- ALTIVEC_BUILTIN_VRLW,
- ALTIVEC_BUILTIN_VRSQRTEFP,
- ALTIVEC_BUILTIN_VSLB,
- ALTIVEC_BUILTIN_VSLH,
- ALTIVEC_BUILTIN_VSLW,
- ALTIVEC_BUILTIN_VSL,
- ALTIVEC_BUILTIN_VSLO,
- ALTIVEC_BUILTIN_VSPLTB,
- ALTIVEC_BUILTIN_VSPLTH,
- ALTIVEC_BUILTIN_VSPLTW,
- ALTIVEC_BUILTIN_VSPLTISB,
- ALTIVEC_BUILTIN_VSPLTISH,
- ALTIVEC_BUILTIN_VSPLTISW,
- ALTIVEC_BUILTIN_VSRB,
- ALTIVEC_BUILTIN_VSRH,
- ALTIVEC_BUILTIN_VSRW,
- ALTIVEC_BUILTIN_VSRAB,
- ALTIVEC_BUILTIN_VSRAH,
- ALTIVEC_BUILTIN_VSRAW,
- ALTIVEC_BUILTIN_VSR,
- ALTIVEC_BUILTIN_VSRO,
- ALTIVEC_BUILTIN_VSUBUBM,
- ALTIVEC_BUILTIN_VSUBUHM,
- ALTIVEC_BUILTIN_VSUBUWM,
- ALTIVEC_BUILTIN_VSUBFP,
- ALTIVEC_BUILTIN_VSUBCUW,
- ALTIVEC_BUILTIN_VSUBUBS,
- ALTIVEC_BUILTIN_VSUBSBS,
- ALTIVEC_BUILTIN_VSUBUHS,
- ALTIVEC_BUILTIN_VSUBSHS,
- ALTIVEC_BUILTIN_VSUBUWS,
- ALTIVEC_BUILTIN_VSUBSWS,
- ALTIVEC_BUILTIN_VSUM4UBS,
- ALTIVEC_BUILTIN_VSUM4SBS,
- ALTIVEC_BUILTIN_VSUM4SHS,
- ALTIVEC_BUILTIN_VSUM2SWS,
- ALTIVEC_BUILTIN_VSUMSWS,
- ALTIVEC_BUILTIN_VXOR,
- ALTIVEC_BUILTIN_VSLDOI_16QI,
- ALTIVEC_BUILTIN_VSLDOI_8HI,
- ALTIVEC_BUILTIN_VSLDOI_4SI,
- ALTIVEC_BUILTIN_VSLDOI_4SF,
- ALTIVEC_BUILTIN_VUPKHSB,
- ALTIVEC_BUILTIN_VUPKHPX,
- ALTIVEC_BUILTIN_VUPKHSH,
- ALTIVEC_BUILTIN_VUPKLSB,
- ALTIVEC_BUILTIN_VUPKLPX,
- ALTIVEC_BUILTIN_VUPKLSH,
- ALTIVEC_BUILTIN_MTVSCR,
- ALTIVEC_BUILTIN_MFVSCR,
- ALTIVEC_BUILTIN_DSSALL,
- ALTIVEC_BUILTIN_DSS,
- ALTIVEC_BUILTIN_LVSL,
- ALTIVEC_BUILTIN_LVSR,
- ALTIVEC_BUILTIN_DSTT,
- ALTIVEC_BUILTIN_DSTST,
- ALTIVEC_BUILTIN_DSTSTT,
- ALTIVEC_BUILTIN_DST,
- ALTIVEC_BUILTIN_LVEBX,
- ALTIVEC_BUILTIN_LVEHX,
- ALTIVEC_BUILTIN_LVEWX,
- ALTIVEC_BUILTIN_LVXL,
- ALTIVEC_BUILTIN_LVX,
- ALTIVEC_BUILTIN_STVX,
- ALTIVEC_BUILTIN_LVLX,
- ALTIVEC_BUILTIN_LVLXL,
- ALTIVEC_BUILTIN_LVRX,
- ALTIVEC_BUILTIN_LVRXL,
- ALTIVEC_BUILTIN_STVEBX,
- ALTIVEC_BUILTIN_STVEHX,
- ALTIVEC_BUILTIN_STVEWX,
- ALTIVEC_BUILTIN_STVXL,
- ALTIVEC_BUILTIN_STVLX,
- ALTIVEC_BUILTIN_STVLXL,
- ALTIVEC_BUILTIN_STVRX,
- ALTIVEC_BUILTIN_STVRXL,
- ALTIVEC_BUILTIN_VCMPBFP_P,
- ALTIVEC_BUILTIN_VCMPEQFP_P,
- ALTIVEC_BUILTIN_VCMPEQUB_P,
- ALTIVEC_BUILTIN_VCMPEQUH_P,
- ALTIVEC_BUILTIN_VCMPEQUW_P,
- ALTIVEC_BUILTIN_VCMPGEFP_P,
- ALTIVEC_BUILTIN_VCMPGTFP_P,
- ALTIVEC_BUILTIN_VCMPGTSB_P,
- ALTIVEC_BUILTIN_VCMPGTSH_P,
- ALTIVEC_BUILTIN_VCMPGTSW_P,
- ALTIVEC_BUILTIN_VCMPGTUB_P,
- ALTIVEC_BUILTIN_VCMPGTUH_P,
- ALTIVEC_BUILTIN_VCMPGTUW_P,
- ALTIVEC_BUILTIN_ABSS_V4SI,
- ALTIVEC_BUILTIN_ABSS_V8HI,
- ALTIVEC_BUILTIN_ABSS_V16QI,
- ALTIVEC_BUILTIN_ABS_V4SI,
- ALTIVEC_BUILTIN_ABS_V4SF,
- ALTIVEC_BUILTIN_ABS_V8HI,
- ALTIVEC_BUILTIN_ABS_V16QI,
- ALTIVEC_BUILTIN_MASK_FOR_LOAD,
- ALTIVEC_BUILTIN_MASK_FOR_STORE,
- ALTIVEC_BUILTIN_VEC_INIT_V4SI,
- ALTIVEC_BUILTIN_VEC_INIT_V8HI,
- ALTIVEC_BUILTIN_VEC_INIT_V16QI,
- ALTIVEC_BUILTIN_VEC_INIT_V4SF,
- ALTIVEC_BUILTIN_VEC_SET_V4SI,
- ALTIVEC_BUILTIN_VEC_SET_V8HI,
- ALTIVEC_BUILTIN_VEC_SET_V16QI,
- ALTIVEC_BUILTIN_VEC_SET_V4SF,
- ALTIVEC_BUILTIN_VEC_EXT_V4SI,
- ALTIVEC_BUILTIN_VEC_EXT_V8HI,
- ALTIVEC_BUILTIN_VEC_EXT_V16QI,
- ALTIVEC_BUILTIN_VEC_EXT_V4SF,
- ALTIVEC_BUILTIN_COPYSIGN_V4SF,
-
- /* Altivec overloaded builtins. */
- ALTIVEC_BUILTIN_VCMPEQ_P,
- ALTIVEC_BUILTIN_OVERLOADED_FIRST = ALTIVEC_BUILTIN_VCMPEQ_P,
- ALTIVEC_BUILTIN_VCMPGT_P,
- ALTIVEC_BUILTIN_VCMPGE_P,
- ALTIVEC_BUILTIN_VEC_ABS,
- ALTIVEC_BUILTIN_VEC_ABSS,
- ALTIVEC_BUILTIN_VEC_ADD,
- ALTIVEC_BUILTIN_VEC_ADDC,
- ALTIVEC_BUILTIN_VEC_ADDS,
- ALTIVEC_BUILTIN_VEC_AND,
- ALTIVEC_BUILTIN_VEC_ANDC,
- ALTIVEC_BUILTIN_VEC_AVG,
- ALTIVEC_BUILTIN_VEC_EXTRACT,
- ALTIVEC_BUILTIN_VEC_CEIL,
- ALTIVEC_BUILTIN_VEC_CMPB,
- ALTIVEC_BUILTIN_VEC_CMPEQ,
- ALTIVEC_BUILTIN_VEC_CMPEQUB,
- ALTIVEC_BUILTIN_VEC_CMPEQUH,
- ALTIVEC_BUILTIN_VEC_CMPEQUW,
- ALTIVEC_BUILTIN_VEC_CMPGE,
- ALTIVEC_BUILTIN_VEC_CMPGT,
- ALTIVEC_BUILTIN_VEC_CMPLE,
- ALTIVEC_BUILTIN_VEC_CMPLT,
- ALTIVEC_BUILTIN_VEC_COPYSIGN,
- ALTIVEC_BUILTIN_VEC_CTF,
- ALTIVEC_BUILTIN_VEC_CTS,
- ALTIVEC_BUILTIN_VEC_CTU,
- ALTIVEC_BUILTIN_VEC_DST,
- ALTIVEC_BUILTIN_VEC_DSTST,
- ALTIVEC_BUILTIN_VEC_DSTSTT,
- ALTIVEC_BUILTIN_VEC_DSTT,
- ALTIVEC_BUILTIN_VEC_EXPTE,
- ALTIVEC_BUILTIN_VEC_FLOOR,
- ALTIVEC_BUILTIN_VEC_LD,
- ALTIVEC_BUILTIN_VEC_LDE,
- ALTIVEC_BUILTIN_VEC_LDL,
- ALTIVEC_BUILTIN_VEC_LOGE,
- ALTIVEC_BUILTIN_VEC_LVEBX,
- ALTIVEC_BUILTIN_VEC_LVEHX,
- ALTIVEC_BUILTIN_VEC_LVEWX,
- ALTIVEC_BUILTIN_VEC_LVLX,
- ALTIVEC_BUILTIN_VEC_LVLXL,
- ALTIVEC_BUILTIN_VEC_LVRX,
- ALTIVEC_BUILTIN_VEC_LVRXL,
- ALTIVEC_BUILTIN_VEC_LVSL,
- ALTIVEC_BUILTIN_VEC_LVSR,
- ALTIVEC_BUILTIN_VEC_MADD,
- ALTIVEC_BUILTIN_VEC_MADDS,
- ALTIVEC_BUILTIN_VEC_MAX,
- ALTIVEC_BUILTIN_VEC_MERGEH,
- ALTIVEC_BUILTIN_VEC_MERGEL,
- ALTIVEC_BUILTIN_VEC_MIN,
- ALTIVEC_BUILTIN_VEC_MLADD,
- ALTIVEC_BUILTIN_VEC_MPERM,
- ALTIVEC_BUILTIN_VEC_MRADDS,
- ALTIVEC_BUILTIN_VEC_MRGHB,
- ALTIVEC_BUILTIN_VEC_MRGHH,
- ALTIVEC_BUILTIN_VEC_MRGHW,
- ALTIVEC_BUILTIN_VEC_MRGLB,
- ALTIVEC_BUILTIN_VEC_MRGLH,
- ALTIVEC_BUILTIN_VEC_MRGLW,
- ALTIVEC_BUILTIN_VEC_MSUM,
- ALTIVEC_BUILTIN_VEC_MSUMS,
- ALTIVEC_BUILTIN_VEC_MTVSCR,
- ALTIVEC_BUILTIN_VEC_MULE,
- ALTIVEC_BUILTIN_VEC_MULO,
- ALTIVEC_BUILTIN_VEC_NEARBYINT,
- ALTIVEC_BUILTIN_VEC_NMSUB,
- ALTIVEC_BUILTIN_VEC_NOR,
- ALTIVEC_BUILTIN_VEC_OR,
- ALTIVEC_BUILTIN_VEC_PACK,
- ALTIVEC_BUILTIN_VEC_PACKPX,
- ALTIVEC_BUILTIN_VEC_PACKS,
- ALTIVEC_BUILTIN_VEC_PACKSU,
- ALTIVEC_BUILTIN_VEC_PERM,
- ALTIVEC_BUILTIN_VEC_RE,
- ALTIVEC_BUILTIN_VEC_RL,
- ALTIVEC_BUILTIN_VEC_RINT,
- ALTIVEC_BUILTIN_VEC_ROUND,
- ALTIVEC_BUILTIN_VEC_RSQRTE,
- ALTIVEC_BUILTIN_VEC_SEL,
- ALTIVEC_BUILTIN_VEC_SL,
- ALTIVEC_BUILTIN_VEC_SLD,
- ALTIVEC_BUILTIN_VEC_SLL,
- ALTIVEC_BUILTIN_VEC_SLO,
- ALTIVEC_BUILTIN_VEC_SPLAT,
- ALTIVEC_BUILTIN_VEC_SPLAT_S16,
- ALTIVEC_BUILTIN_VEC_SPLAT_S32,
- ALTIVEC_BUILTIN_VEC_SPLAT_S8,
- ALTIVEC_BUILTIN_VEC_SPLAT_U16,
- ALTIVEC_BUILTIN_VEC_SPLAT_U32,
- ALTIVEC_BUILTIN_VEC_SPLAT_U8,
- ALTIVEC_BUILTIN_VEC_SPLTB,
- ALTIVEC_BUILTIN_VEC_SPLTH,
- ALTIVEC_BUILTIN_VEC_SPLTW,
- ALTIVEC_BUILTIN_VEC_SQRT,
- ALTIVEC_BUILTIN_VEC_SR,
- ALTIVEC_BUILTIN_VEC_SRA,
- ALTIVEC_BUILTIN_VEC_SRL,
- ALTIVEC_BUILTIN_VEC_SRO,
- ALTIVEC_BUILTIN_VEC_ST,
- ALTIVEC_BUILTIN_VEC_STE,
- ALTIVEC_BUILTIN_VEC_STL,
- ALTIVEC_BUILTIN_VEC_STVEBX,
- ALTIVEC_BUILTIN_VEC_STVEHX,
- ALTIVEC_BUILTIN_VEC_STVEWX,
- ALTIVEC_BUILTIN_VEC_STVLX,
- ALTIVEC_BUILTIN_VEC_STVLXL,
- ALTIVEC_BUILTIN_VEC_STVRX,
- ALTIVEC_BUILTIN_VEC_STVRXL,
- ALTIVEC_BUILTIN_VEC_SUB,
- ALTIVEC_BUILTIN_VEC_SUBC,
- ALTIVEC_BUILTIN_VEC_SUBS,
- ALTIVEC_BUILTIN_VEC_SUM2S,
- ALTIVEC_BUILTIN_VEC_SUM4S,
- ALTIVEC_BUILTIN_VEC_SUMS,
- ALTIVEC_BUILTIN_VEC_TRUNC,
- ALTIVEC_BUILTIN_VEC_UNPACKH,
- ALTIVEC_BUILTIN_VEC_UNPACKL,
- ALTIVEC_BUILTIN_VEC_VADDFP,
- ALTIVEC_BUILTIN_VEC_VADDSBS,
- ALTIVEC_BUILTIN_VEC_VADDSHS,
- ALTIVEC_BUILTIN_VEC_VADDSWS,
- ALTIVEC_BUILTIN_VEC_VADDUBM,
- ALTIVEC_BUILTIN_VEC_VADDUBS,
- ALTIVEC_BUILTIN_VEC_VADDUHM,
- ALTIVEC_BUILTIN_VEC_VADDUHS,
- ALTIVEC_BUILTIN_VEC_VADDUWM,
- ALTIVEC_BUILTIN_VEC_VADDUWS,
- ALTIVEC_BUILTIN_VEC_VAVGSB,
- ALTIVEC_BUILTIN_VEC_VAVGSH,
- ALTIVEC_BUILTIN_VEC_VAVGSW,
- ALTIVEC_BUILTIN_VEC_VAVGUB,
- ALTIVEC_BUILTIN_VEC_VAVGUH,
- ALTIVEC_BUILTIN_VEC_VAVGUW,
- ALTIVEC_BUILTIN_VEC_VCFSX,
- ALTIVEC_BUILTIN_VEC_VCFUX,
- ALTIVEC_BUILTIN_VEC_VCMPEQFP,
- ALTIVEC_BUILTIN_VEC_VCMPEQUB,
- ALTIVEC_BUILTIN_VEC_VCMPEQUH,
- ALTIVEC_BUILTIN_VEC_VCMPEQUW,
- ALTIVEC_BUILTIN_VEC_VCMPGTFP,
- ALTIVEC_BUILTIN_VEC_VCMPGTSB,
- ALTIVEC_BUILTIN_VEC_VCMPGTSH,
- ALTIVEC_BUILTIN_VEC_VCMPGTSW,
- ALTIVEC_BUILTIN_VEC_VCMPGTUB,
- ALTIVEC_BUILTIN_VEC_VCMPGTUH,
- ALTIVEC_BUILTIN_VEC_VCMPGTUW,
- ALTIVEC_BUILTIN_VEC_VMAXFP,
- ALTIVEC_BUILTIN_VEC_VMAXSB,
- ALTIVEC_BUILTIN_VEC_VMAXSH,
- ALTIVEC_BUILTIN_VEC_VMAXSW,
- ALTIVEC_BUILTIN_VEC_VMAXUB,
- ALTIVEC_BUILTIN_VEC_VMAXUH,
- ALTIVEC_BUILTIN_VEC_VMAXUW,
- ALTIVEC_BUILTIN_VEC_VMINFP,
- ALTIVEC_BUILTIN_VEC_VMINSB,
- ALTIVEC_BUILTIN_VEC_VMINSH,
- ALTIVEC_BUILTIN_VEC_VMINSW,
- ALTIVEC_BUILTIN_VEC_VMINUB,
- ALTIVEC_BUILTIN_VEC_VMINUH,
- ALTIVEC_BUILTIN_VEC_VMINUW,
- ALTIVEC_BUILTIN_VEC_VMRGHB,
- ALTIVEC_BUILTIN_VEC_VMRGHH,
- ALTIVEC_BUILTIN_VEC_VMRGHW,
- ALTIVEC_BUILTIN_VEC_VMRGLB,
- ALTIVEC_BUILTIN_VEC_VMRGLH,
- ALTIVEC_BUILTIN_VEC_VMRGLW,
- ALTIVEC_BUILTIN_VEC_VMSUMMBM,
- ALTIVEC_BUILTIN_VEC_VMSUMSHM,
- ALTIVEC_BUILTIN_VEC_VMSUMSHS,
- ALTIVEC_BUILTIN_VEC_VMSUMUBM,
- ALTIVEC_BUILTIN_VEC_VMSUMUHM,
- ALTIVEC_BUILTIN_VEC_VMSUMUHS,
- ALTIVEC_BUILTIN_VEC_VMULESB,
- ALTIVEC_BUILTIN_VEC_VMULESH,
- ALTIVEC_BUILTIN_VEC_VMULEUB,
- ALTIVEC_BUILTIN_VEC_VMULEUH,
- ALTIVEC_BUILTIN_VEC_VMULOSB,
- ALTIVEC_BUILTIN_VEC_VMULOSH,
- ALTIVEC_BUILTIN_VEC_VMULOUB,
- ALTIVEC_BUILTIN_VEC_VMULOUH,
- ALTIVEC_BUILTIN_VEC_VPKSHSS,
- ALTIVEC_BUILTIN_VEC_VPKSHUS,
- ALTIVEC_BUILTIN_VEC_VPKSWSS,
- ALTIVEC_BUILTIN_VEC_VPKSWUS,
- ALTIVEC_BUILTIN_VEC_VPKUHUM,
- ALTIVEC_BUILTIN_VEC_VPKUHUS,
- ALTIVEC_BUILTIN_VEC_VPKUWUM,
- ALTIVEC_BUILTIN_VEC_VPKUWUS,
- ALTIVEC_BUILTIN_VEC_VRLB,
- ALTIVEC_BUILTIN_VEC_VRLH,
- ALTIVEC_BUILTIN_VEC_VRLW,
- ALTIVEC_BUILTIN_VEC_VSLB,
- ALTIVEC_BUILTIN_VEC_VSLH,
- ALTIVEC_BUILTIN_VEC_VSLW,
- ALTIVEC_BUILTIN_VEC_VSPLTB,
- ALTIVEC_BUILTIN_VEC_VSPLTH,
- ALTIVEC_BUILTIN_VEC_VSPLTW,
- ALTIVEC_BUILTIN_VEC_VSRAB,
- ALTIVEC_BUILTIN_VEC_VSRAH,
- ALTIVEC_BUILTIN_VEC_VSRAW,
- ALTIVEC_BUILTIN_VEC_VSRB,
- ALTIVEC_BUILTIN_VEC_VSRH,
- ALTIVEC_BUILTIN_VEC_VSRW,
- ALTIVEC_BUILTIN_VEC_VSUBFP,
- ALTIVEC_BUILTIN_VEC_VSUBSBS,
- ALTIVEC_BUILTIN_VEC_VSUBSHS,
- ALTIVEC_BUILTIN_VEC_VSUBSWS,
- ALTIVEC_BUILTIN_VEC_VSUBUBM,
- ALTIVEC_BUILTIN_VEC_VSUBUBS,
- ALTIVEC_BUILTIN_VEC_VSUBUHM,
- ALTIVEC_BUILTIN_VEC_VSUBUHS,
- ALTIVEC_BUILTIN_VEC_VSUBUWM,
- ALTIVEC_BUILTIN_VEC_VSUBUWS,
- ALTIVEC_BUILTIN_VEC_VSUM4SBS,
- ALTIVEC_BUILTIN_VEC_VSUM4SHS,
- ALTIVEC_BUILTIN_VEC_VSUM4UBS,
- ALTIVEC_BUILTIN_VEC_VUPKHPX,
- ALTIVEC_BUILTIN_VEC_VUPKHSB,
- ALTIVEC_BUILTIN_VEC_VUPKHSH,
- ALTIVEC_BUILTIN_VEC_VUPKLPX,
- ALTIVEC_BUILTIN_VEC_VUPKLSB,
- ALTIVEC_BUILTIN_VEC_VUPKLSH,
- ALTIVEC_BUILTIN_VEC_XOR,
- ALTIVEC_BUILTIN_VEC_STEP,
- ALTIVEC_BUILTIN_VEC_PROMOTE,
- ALTIVEC_BUILTIN_VEC_INSERT,
- ALTIVEC_BUILTIN_VEC_SPLATS,
- ALTIVEC_BUILTIN_OVERLOADED_LAST = ALTIVEC_BUILTIN_VEC_SPLATS,
-
- /* SPE builtins. */
- SPE_BUILTIN_EVADDW,
- SPE_BUILTIN_EVAND,
- SPE_BUILTIN_EVANDC,
- SPE_BUILTIN_EVDIVWS,
- SPE_BUILTIN_EVDIVWU,
- SPE_BUILTIN_EVEQV,
- SPE_BUILTIN_EVFSADD,
- SPE_BUILTIN_EVFSDIV,
- SPE_BUILTIN_EVFSMUL,
- SPE_BUILTIN_EVFSSUB,
- SPE_BUILTIN_EVLDDX,
- SPE_BUILTIN_EVLDHX,
- SPE_BUILTIN_EVLDWX,
- SPE_BUILTIN_EVLHHESPLATX,
- SPE_BUILTIN_EVLHHOSSPLATX,
- SPE_BUILTIN_EVLHHOUSPLATX,
- SPE_BUILTIN_EVLWHEX,
- SPE_BUILTIN_EVLWHOSX,
- SPE_BUILTIN_EVLWHOUX,
- SPE_BUILTIN_EVLWHSPLATX,
- SPE_BUILTIN_EVLWWSPLATX,
- SPE_BUILTIN_EVMERGEHI,
- SPE_BUILTIN_EVMERGEHILO,
- SPE_BUILTIN_EVMERGELO,
- SPE_BUILTIN_EVMERGELOHI,
- SPE_BUILTIN_EVMHEGSMFAA,
- SPE_BUILTIN_EVMHEGSMFAN,
- SPE_BUILTIN_EVMHEGSMIAA,
- SPE_BUILTIN_EVMHEGSMIAN,
- SPE_BUILTIN_EVMHEGUMIAA,
- SPE_BUILTIN_EVMHEGUMIAN,
- SPE_BUILTIN_EVMHESMF,
- SPE_BUILTIN_EVMHESMFA,
- SPE_BUILTIN_EVMHESMFAAW,
- SPE_BUILTIN_EVMHESMFANW,
- SPE_BUILTIN_EVMHESMI,
- SPE_BUILTIN_EVMHESMIA,
- SPE_BUILTIN_EVMHESMIAAW,
- SPE_BUILTIN_EVMHESMIANW,
- SPE_BUILTIN_EVMHESSF,
- SPE_BUILTIN_EVMHESSFA,
- SPE_BUILTIN_EVMHESSFAAW,
- SPE_BUILTIN_EVMHESSFANW,
- SPE_BUILTIN_EVMHESSIAAW,
- SPE_BUILTIN_EVMHESSIANW,
- SPE_BUILTIN_EVMHEUMI,
- SPE_BUILTIN_EVMHEUMIA,
- SPE_BUILTIN_EVMHEUMIAAW,
- SPE_BUILTIN_EVMHEUMIANW,
- SPE_BUILTIN_EVMHEUSIAAW,
- SPE_BUILTIN_EVMHEUSIANW,
- SPE_BUILTIN_EVMHOGSMFAA,
- SPE_BUILTIN_EVMHOGSMFAN,
- SPE_BUILTIN_EVMHOGSMIAA,
- SPE_BUILTIN_EVMHOGSMIAN,
- SPE_BUILTIN_EVMHOGUMIAA,
- SPE_BUILTIN_EVMHOGUMIAN,
- SPE_BUILTIN_EVMHOSMF,
- SPE_BUILTIN_EVMHOSMFA,
- SPE_BUILTIN_EVMHOSMFAAW,
- SPE_BUILTIN_EVMHOSMFANW,
- SPE_BUILTIN_EVMHOSMI,
- SPE_BUILTIN_EVMHOSMIA,
- SPE_BUILTIN_EVMHOSMIAAW,
- SPE_BUILTIN_EVMHOSMIANW,
- SPE_BUILTIN_EVMHOSSF,
- SPE_BUILTIN_EVMHOSSFA,
- SPE_BUILTIN_EVMHOSSFAAW,
- SPE_BUILTIN_EVMHOSSFANW,
- SPE_BUILTIN_EVMHOSSIAAW,
- SPE_BUILTIN_EVMHOSSIANW,
- SPE_BUILTIN_EVMHOUMI,
- SPE_BUILTIN_EVMHOUMIA,
- SPE_BUILTIN_EVMHOUMIAAW,
- SPE_BUILTIN_EVMHOUMIANW,
- SPE_BUILTIN_EVMHOUSIAAW,
- SPE_BUILTIN_EVMHOUSIANW,
- SPE_BUILTIN_EVMWHSMF,
- SPE_BUILTIN_EVMWHSMFA,
- SPE_BUILTIN_EVMWHSMI,
- SPE_BUILTIN_EVMWHSMIA,
- SPE_BUILTIN_EVMWHSSF,
- SPE_BUILTIN_EVMWHSSFA,
- SPE_BUILTIN_EVMWHUMI,
- SPE_BUILTIN_EVMWHUMIA,
- SPE_BUILTIN_EVMWLSMIAAW,
- SPE_BUILTIN_EVMWLSMIANW,
- SPE_BUILTIN_EVMWLSSIAAW,
- SPE_BUILTIN_EVMWLSSIANW,
- SPE_BUILTIN_EVMWLUMI,
- SPE_BUILTIN_EVMWLUMIA,
- SPE_BUILTIN_EVMWLUMIAAW,
- SPE_BUILTIN_EVMWLUMIANW,
- SPE_BUILTIN_EVMWLUSIAAW,
- SPE_BUILTIN_EVMWLUSIANW,
- SPE_BUILTIN_EVMWSMF,
- SPE_BUILTIN_EVMWSMFA,
- SPE_BUILTIN_EVMWSMFAA,
- SPE_BUILTIN_EVMWSMFAN,
- SPE_BUILTIN_EVMWSMI,
- SPE_BUILTIN_EVMWSMIA,
- SPE_BUILTIN_EVMWSMIAA,
- SPE_BUILTIN_EVMWSMIAN,
- SPE_BUILTIN_EVMWHSSFAA,
- SPE_BUILTIN_EVMWSSF,
- SPE_BUILTIN_EVMWSSFA,
- SPE_BUILTIN_EVMWSSFAA,
- SPE_BUILTIN_EVMWSSFAN,
- SPE_BUILTIN_EVMWUMI,
- SPE_BUILTIN_EVMWUMIA,
- SPE_BUILTIN_EVMWUMIAA,
- SPE_BUILTIN_EVMWUMIAN,
- SPE_BUILTIN_EVNAND,
- SPE_BUILTIN_EVNOR,
- SPE_BUILTIN_EVOR,
- SPE_BUILTIN_EVORC,
- SPE_BUILTIN_EVRLW,
- SPE_BUILTIN_EVSLW,
- SPE_BUILTIN_EVSRWS,
- SPE_BUILTIN_EVSRWU,
- SPE_BUILTIN_EVSTDDX,
- SPE_BUILTIN_EVSTDHX,
- SPE_BUILTIN_EVSTDWX,
- SPE_BUILTIN_EVSTWHEX,
- SPE_BUILTIN_EVSTWHOX,
- SPE_BUILTIN_EVSTWWEX,
- SPE_BUILTIN_EVSTWWOX,
- SPE_BUILTIN_EVSUBFW,
- SPE_BUILTIN_EVXOR,
- SPE_BUILTIN_EVABS,
- SPE_BUILTIN_EVADDSMIAAW,
- SPE_BUILTIN_EVADDSSIAAW,
- SPE_BUILTIN_EVADDUMIAAW,
- SPE_BUILTIN_EVADDUSIAAW,
- SPE_BUILTIN_EVCNTLSW,
- SPE_BUILTIN_EVCNTLZW,
- SPE_BUILTIN_EVEXTSB,
- SPE_BUILTIN_EVEXTSH,
- SPE_BUILTIN_EVFSABS,
- SPE_BUILTIN_EVFSCFSF,
- SPE_BUILTIN_EVFSCFSI,
- SPE_BUILTIN_EVFSCFUF,
- SPE_BUILTIN_EVFSCFUI,
- SPE_BUILTIN_EVFSCTSF,
- SPE_BUILTIN_EVFSCTSI,
- SPE_BUILTIN_EVFSCTSIZ,
- SPE_BUILTIN_EVFSCTUF,
- SPE_BUILTIN_EVFSCTUI,
- SPE_BUILTIN_EVFSCTUIZ,
- SPE_BUILTIN_EVFSNABS,
- SPE_BUILTIN_EVFSNEG,
- SPE_BUILTIN_EVMRA,
- SPE_BUILTIN_EVNEG,
- SPE_BUILTIN_EVRNDW,
- SPE_BUILTIN_EVSUBFSMIAAW,
- SPE_BUILTIN_EVSUBFSSIAAW,
- SPE_BUILTIN_EVSUBFUMIAAW,
- SPE_BUILTIN_EVSUBFUSIAAW,
- SPE_BUILTIN_EVADDIW,
- SPE_BUILTIN_EVLDD,
- SPE_BUILTIN_EVLDH,
- SPE_BUILTIN_EVLDW,
- SPE_BUILTIN_EVLHHESPLAT,
- SPE_BUILTIN_EVLHHOSSPLAT,
- SPE_BUILTIN_EVLHHOUSPLAT,
- SPE_BUILTIN_EVLWHE,
- SPE_BUILTIN_EVLWHOS,
- SPE_BUILTIN_EVLWHOU,
- SPE_BUILTIN_EVLWHSPLAT,
- SPE_BUILTIN_EVLWWSPLAT,
- SPE_BUILTIN_EVRLWI,
- SPE_BUILTIN_EVSLWI,
- SPE_BUILTIN_EVSRWIS,
- SPE_BUILTIN_EVSRWIU,
- SPE_BUILTIN_EVSTDD,
- SPE_BUILTIN_EVSTDH,
- SPE_BUILTIN_EVSTDW,
- SPE_BUILTIN_EVSTWHE,
- SPE_BUILTIN_EVSTWHO,
- SPE_BUILTIN_EVSTWWE,
- SPE_BUILTIN_EVSTWWO,
- SPE_BUILTIN_EVSUBIFW,
-
- /* Compares. */
- SPE_BUILTIN_EVCMPEQ,
- SPE_BUILTIN_EVCMPGTS,
- SPE_BUILTIN_EVCMPGTU,
- SPE_BUILTIN_EVCMPLTS,
- SPE_BUILTIN_EVCMPLTU,
- SPE_BUILTIN_EVFSCMPEQ,
- SPE_BUILTIN_EVFSCMPGT,
- SPE_BUILTIN_EVFSCMPLT,
- SPE_BUILTIN_EVFSTSTEQ,
- SPE_BUILTIN_EVFSTSTGT,
- SPE_BUILTIN_EVFSTSTLT,
-
- /* EVSEL compares. */
- SPE_BUILTIN_EVSEL_CMPEQ,
- SPE_BUILTIN_EVSEL_CMPGTS,
- SPE_BUILTIN_EVSEL_CMPGTU,
- SPE_BUILTIN_EVSEL_CMPLTS,
- SPE_BUILTIN_EVSEL_CMPLTU,
- SPE_BUILTIN_EVSEL_FSCMPEQ,
- SPE_BUILTIN_EVSEL_FSCMPGT,
- SPE_BUILTIN_EVSEL_FSCMPLT,
- SPE_BUILTIN_EVSEL_FSTSTEQ,
- SPE_BUILTIN_EVSEL_FSTSTGT,
- SPE_BUILTIN_EVSEL_FSTSTLT,
-
- SPE_BUILTIN_EVSPLATFI,
- SPE_BUILTIN_EVSPLATI,
- SPE_BUILTIN_EVMWHSSMAA,
- SPE_BUILTIN_EVMWHSMFAA,
- SPE_BUILTIN_EVMWHSMIAA,
- SPE_BUILTIN_EVMWHUSIAA,
- SPE_BUILTIN_EVMWHUMIAA,
- SPE_BUILTIN_EVMWHSSFAN,
- SPE_BUILTIN_EVMWHSSIAN,
- SPE_BUILTIN_EVMWHSMFAN,
- SPE_BUILTIN_EVMWHSMIAN,
- SPE_BUILTIN_EVMWHUSIAN,
- SPE_BUILTIN_EVMWHUMIAN,
- SPE_BUILTIN_EVMWHGSSFAA,
- SPE_BUILTIN_EVMWHGSMFAA,
- SPE_BUILTIN_EVMWHGSMIAA,
- SPE_BUILTIN_EVMWHGUMIAA,
- SPE_BUILTIN_EVMWHGSSFAN,
- SPE_BUILTIN_EVMWHGSMFAN,
- SPE_BUILTIN_EVMWHGSMIAN,
- SPE_BUILTIN_EVMWHGUMIAN,
- SPE_BUILTIN_MTSPEFSCR,
- SPE_BUILTIN_MFSPEFSCR,
- SPE_BUILTIN_BRINC,
-
- /* PAIRED builtins. */
- PAIRED_BUILTIN_DIVV2SF3,
- PAIRED_BUILTIN_ABSV2SF2,
- PAIRED_BUILTIN_NEGV2SF2,
- PAIRED_BUILTIN_SQRTV2SF2,
- PAIRED_BUILTIN_ADDV2SF3,
- PAIRED_BUILTIN_SUBV2SF3,
- PAIRED_BUILTIN_RESV2SF2,
- PAIRED_BUILTIN_MULV2SF3,
- PAIRED_BUILTIN_MSUB,
- PAIRED_BUILTIN_MADD,
- PAIRED_BUILTIN_NMSUB,
- PAIRED_BUILTIN_NMADD,
- PAIRED_BUILTIN_NABSV2SF2,
- PAIRED_BUILTIN_SUM0,
- PAIRED_BUILTIN_SUM1,
- PAIRED_BUILTIN_MULS0,
- PAIRED_BUILTIN_MULS1,
- PAIRED_BUILTIN_MERGE00,
- PAIRED_BUILTIN_MERGE01,
- PAIRED_BUILTIN_MERGE10,
- PAIRED_BUILTIN_MERGE11,
- PAIRED_BUILTIN_MADDS0,
- PAIRED_BUILTIN_MADDS1,
- PAIRED_BUILTIN_STX,
- PAIRED_BUILTIN_LX,
- PAIRED_BUILTIN_SELV2SF4,
- PAIRED_BUILTIN_CMPU0,
- PAIRED_BUILTIN_CMPU1,
-
- RS6000_BUILTIN_RECIP,
- RS6000_BUILTIN_RECIPF,
- RS6000_BUILTIN_RSQRTF,
- RS6000_BUILTIN_BSWAP_HI,
-
- /* VSX builtins. */
- VSX_BUILTIN_LXSDX,
- VSX_BUILTIN_LXVD2X,
- VSX_BUILTIN_LXVDSX,
- VSX_BUILTIN_LXVW4X,
- VSX_BUILTIN_STXSDX,
- VSX_BUILTIN_STXVD2X,
- VSX_BUILTIN_STXVW4X,
- VSX_BUILTIN_XSABSDP,
- VSX_BUILTIN_XSADDDP,
- VSX_BUILTIN_XSCMPODP,
- VSX_BUILTIN_XSCMPUDP,
- VSX_BUILTIN_XSCPSGNDP,
- VSX_BUILTIN_XSCVDPSP,
- VSX_BUILTIN_XSCVDPSXDS,
- VSX_BUILTIN_XSCVDPSXWS,
- VSX_BUILTIN_XSCVDPUXDS,
- VSX_BUILTIN_XSCVDPUXWS,
- VSX_BUILTIN_XSCVSPDP,
- VSX_BUILTIN_XSCVSXDDP,
- VSX_BUILTIN_XSCVUXDDP,
- VSX_BUILTIN_XSDIVDP,
- VSX_BUILTIN_XSMADDADP,
- VSX_BUILTIN_XSMADDMDP,
- VSX_BUILTIN_XSMAXDP,
- VSX_BUILTIN_XSMINDP,
- VSX_BUILTIN_XSMOVDP,
- VSX_BUILTIN_XSMSUBADP,
- VSX_BUILTIN_XSMSUBMDP,
- VSX_BUILTIN_XSMULDP,
- VSX_BUILTIN_XSNABSDP,
- VSX_BUILTIN_XSNEGDP,
- VSX_BUILTIN_XSNMADDADP,
- VSX_BUILTIN_XSNMADDMDP,
- VSX_BUILTIN_XSNMSUBADP,
- VSX_BUILTIN_XSNMSUBMDP,
- VSX_BUILTIN_XSRDPI,
- VSX_BUILTIN_XSRDPIC,
- VSX_BUILTIN_XSRDPIM,
- VSX_BUILTIN_XSRDPIP,
- VSX_BUILTIN_XSRDPIZ,
- VSX_BUILTIN_XSREDP,
- VSX_BUILTIN_XSRSQRTEDP,
- VSX_BUILTIN_XSSQRTDP,
- VSX_BUILTIN_XSSUBDP,
- VSX_BUILTIN_CPSGNDP,
- VSX_BUILTIN_CPSGNSP,
- VSX_BUILTIN_XSTDIVDP_FE,
- VSX_BUILTIN_XSTDIVDP_FG,
- VSX_BUILTIN_XSTSQRTDP_FE,
- VSX_BUILTIN_XSTSQRTDP_FG,
- VSX_BUILTIN_XVABSDP,
- VSX_BUILTIN_XVABSSP,
- VSX_BUILTIN_XVADDDP,
- VSX_BUILTIN_XVADDSP,
- VSX_BUILTIN_XVCMPEQDP,
- VSX_BUILTIN_XVCMPEQSP,
- VSX_BUILTIN_XVCMPGEDP,
- VSX_BUILTIN_XVCMPGESP,
- VSX_BUILTIN_XVCMPGTDP,
- VSX_BUILTIN_XVCMPGTSP,
- VSX_BUILTIN_XVCMPEQDP_P,
- VSX_BUILTIN_XVCMPEQSP_P,
- VSX_BUILTIN_XVCMPGEDP_P,
- VSX_BUILTIN_XVCMPGESP_P,
- VSX_BUILTIN_XVCMPGTDP_P,
- VSX_BUILTIN_XVCMPGTSP_P,
- VSX_BUILTIN_XVCPSGNDP,
- VSX_BUILTIN_XVCPSGNSP,
- VSX_BUILTIN_XVCVDPSP,
- VSX_BUILTIN_XVCVDPSXDS,
- VSX_BUILTIN_XVCVDPSXWS,
- VSX_BUILTIN_XVCVDPUXDS,
- VSX_BUILTIN_XVCVDPUXDS_UNS,
- VSX_BUILTIN_XVCVDPUXWS,
- VSX_BUILTIN_XVCVSPDP,
- VSX_BUILTIN_XVCVSPSXDS,
- VSX_BUILTIN_XVCVSPSXWS,
- VSX_BUILTIN_XVCVSPUXDS,
- VSX_BUILTIN_XVCVSPUXWS,
- VSX_BUILTIN_XVCVSXDDP,
- VSX_BUILTIN_XVCVSXDSP,
- VSX_BUILTIN_XVCVSXWDP,
- VSX_BUILTIN_XVCVSXWSP,
- VSX_BUILTIN_XVCVUXDDP,
- VSX_BUILTIN_XVCVUXDDP_UNS,
- VSX_BUILTIN_XVCVUXDSP,
- VSX_BUILTIN_XVCVUXWDP,
- VSX_BUILTIN_XVCVUXWSP,
- VSX_BUILTIN_XVDIVDP,
- VSX_BUILTIN_XVDIVSP,
- VSX_BUILTIN_XVMADDDP,
- VSX_BUILTIN_XVMADDSP,
- VSX_BUILTIN_XVMAXDP,
- VSX_BUILTIN_XVMAXSP,
- VSX_BUILTIN_XVMINDP,
- VSX_BUILTIN_XVMINSP,
- VSX_BUILTIN_XVMSUBDP,
- VSX_BUILTIN_XVMSUBSP,
- VSX_BUILTIN_XVMULDP,
- VSX_BUILTIN_XVMULSP,
- VSX_BUILTIN_XVNABSDP,
- VSX_BUILTIN_XVNABSSP,
- VSX_BUILTIN_XVNEGDP,
- VSX_BUILTIN_XVNEGSP,
- VSX_BUILTIN_XVNMADDDP,
- VSX_BUILTIN_XVNMADDSP,
- VSX_BUILTIN_XVNMSUBDP,
- VSX_BUILTIN_XVNMSUBSP,
- VSX_BUILTIN_XVRDPI,
- VSX_BUILTIN_XVRDPIC,
- VSX_BUILTIN_XVRDPIM,
- VSX_BUILTIN_XVRDPIP,
- VSX_BUILTIN_XVRDPIZ,
- VSX_BUILTIN_XVREDP,
- VSX_BUILTIN_XVRESP,
- VSX_BUILTIN_XVRSPI,
- VSX_BUILTIN_XVRSPIC,
- VSX_BUILTIN_XVRSPIM,
- VSX_BUILTIN_XVRSPIP,
- VSX_BUILTIN_XVRSPIZ,
- VSX_BUILTIN_XVRSQRTEDP,
- VSX_BUILTIN_XVRSQRTESP,
- VSX_BUILTIN_XVSQRTDP,
- VSX_BUILTIN_XVSQRTSP,
- VSX_BUILTIN_XVSUBDP,
- VSX_BUILTIN_XVSUBSP,
- VSX_BUILTIN_XVTDIVDP_FE,
- VSX_BUILTIN_XVTDIVDP_FG,
- VSX_BUILTIN_XVTDIVSP_FE,
- VSX_BUILTIN_XVTDIVSP_FG,
- VSX_BUILTIN_XVTSQRTDP_FE,
- VSX_BUILTIN_XVTSQRTDP_FG,
- VSX_BUILTIN_XVTSQRTSP_FE,
- VSX_BUILTIN_XVTSQRTSP_FG,
- VSX_BUILTIN_XXSEL_2DI,
- VSX_BUILTIN_XXSEL_2DF,
- VSX_BUILTIN_XXSEL_4SI,
- VSX_BUILTIN_XXSEL_4SF,
- VSX_BUILTIN_XXSEL_8HI,
- VSX_BUILTIN_XXSEL_16QI,
- VSX_BUILTIN_XXSEL_2DI_UNS,
- VSX_BUILTIN_XXSEL_4SI_UNS,
- VSX_BUILTIN_XXSEL_8HI_UNS,
- VSX_BUILTIN_XXSEL_16QI_UNS,
- VSX_BUILTIN_VPERM_2DI,
- VSX_BUILTIN_VPERM_2DF,
- VSX_BUILTIN_VPERM_4SI,
- VSX_BUILTIN_VPERM_4SF,
- VSX_BUILTIN_VPERM_8HI,
- VSX_BUILTIN_VPERM_16QI,
- VSX_BUILTIN_VPERM_2DI_UNS,
- VSX_BUILTIN_VPERM_4SI_UNS,
- VSX_BUILTIN_VPERM_8HI_UNS,
- VSX_BUILTIN_VPERM_16QI_UNS,
- VSX_BUILTIN_XXPERMDI_2DF,
- VSX_BUILTIN_XXPERMDI_2DI,
- VSX_BUILTIN_XXPERMDI_4SF,
- VSX_BUILTIN_XXPERMDI_4SI,
- VSX_BUILTIN_XXPERMDI_8HI,
- VSX_BUILTIN_XXPERMDI_16QI,
- VSX_BUILTIN_CONCAT_2DF,
- VSX_BUILTIN_CONCAT_2DI,
- VSX_BUILTIN_SET_2DF,
- VSX_BUILTIN_SET_2DI,
- VSX_BUILTIN_SPLAT_2DF,
- VSX_BUILTIN_SPLAT_2DI,
- VSX_BUILTIN_XXMRGHW_4SF,
- VSX_BUILTIN_XXMRGHW_4SI,
- VSX_BUILTIN_XXMRGLW_4SF,
- VSX_BUILTIN_XXMRGLW_4SI,
- VSX_BUILTIN_XXSLDWI_16QI,
- VSX_BUILTIN_XXSLDWI_8HI,
- VSX_BUILTIN_XXSLDWI_4SI,
- VSX_BUILTIN_XXSLDWI_4SF,
- VSX_BUILTIN_XXSLDWI_2DI,
- VSX_BUILTIN_XXSLDWI_2DF,
- VSX_BUILTIN_VEC_INIT_V2DF,
- VSX_BUILTIN_VEC_INIT_V2DI,
- VSX_BUILTIN_VEC_SET_V2DF,
- VSX_BUILTIN_VEC_SET_V2DI,
- VSX_BUILTIN_VEC_EXT_V2DF,
- VSX_BUILTIN_VEC_EXT_V2DI,
-
- /* VSX overloaded builtins, add the overloaded functions not present in
- Altivec. */
- VSX_BUILTIN_VEC_MUL,
- VSX_BUILTIN_OVERLOADED_FIRST = VSX_BUILTIN_VEC_MUL,
- VSX_BUILTIN_VEC_MSUB,
- VSX_BUILTIN_VEC_NMADD,
- VSX_BUITLIN_VEC_NMSUB,
- VSX_BUILTIN_VEC_DIV,
- VSX_BUILTIN_VEC_XXMRGHW,
- VSX_BUILTIN_VEC_XXMRGLW,
- VSX_BUILTIN_VEC_XXPERMDI,
- VSX_BUILTIN_VEC_XXSLDWI,
- VSX_BUILTIN_VEC_XXSPLTD,
- VSX_BUILTIN_VEC_XXSPLTW,
- VSX_BUILTIN_OVERLOADED_LAST = VSX_BUILTIN_VEC_XXSPLTW,
-
- /* Combined VSX/Altivec builtins. */
- VECTOR_BUILTIN_FLOAT_V4SI_V4SF,
- VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF,
- VECTOR_BUILTIN_FIX_V4SF_V4SI,
- VECTOR_BUILTIN_FIXUNS_V4SF_V4SI,
-
- /* Power7 builtins, that aren't VSX instructions. */
- POWER7_BUILTIN_BPERMD,
+#include "rs6000-builtin.def"
RS6000_BUILTIN_COUNT
};
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
enum rs6000_builtin_type_index
{
RS6000_BTI_NOT_OPAQUE,
diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
index 66a367a7b62..773d710fa3f 100644
--- a/gcc/config/rs6000/t-rs6000
+++ b/gcc/config/rs6000/t-rs6000
@@ -19,6 +19,8 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
+TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
+
rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h \
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
@@ -56,6 +58,7 @@ MD_INCLUDES = $(srcdir)/config/rs6000/rios1.md \
$(srcdir)/config/rs6000/power7.md \
$(srcdir)/config/rs6000/cell.md \
$(srcdir)/config/rs6000/xfpu.md \
+ $(srcdir)/config/rs6000/a2.md \
$(srcdir)/config/rs6000/predicates.md \
$(srcdir)/config/rs6000/constraints.md \
$(srcdir)/config/rs6000/darwin.md \
diff --git a/gcc/config/s390/2097.md b/gcc/config/s390/2097.md
index eb7240effd4..56893596a74 100644
--- a/gcc/config/s390/2097.md
+++ b/gcc/config/s390/2097.md
@@ -57,7 +57,8 @@
z10_int_fr_A3"
"z10_other_super, z10_other_super_c_E1, z10_other_super_E1, \
z10_int_super, z10_int_super_E1, \
- z10_lr, z10_store_super")
+ z10_lr, z10_store_super"
+ " ! s390_agen_dep_p")
; Forwarding from z10_super to frz10_ and z10_rec.
@@ -68,7 +69,8 @@
z10_store_super"
"z10_int_fr, z10_int_fr_E1, z10_int_fr_A3, \
z10_other_fr, z10_other_fr_A3, z10_lr_fr, z10_lr_fr_E1, \
- z10_other_fr_E1, z10_store_rec")
+ z10_other_fr_E1, z10_store_rec"
+ " ! s390_agen_dep_p")
; Forwarding from z10_fwd and z10_fr to z10_rec and z10_fr.
@@ -84,7 +86,8 @@
z10_int_fr_A3"
"z10_int_fr, z10_int_fr_E1, z10_int_fr_A3, \
z10_other_fr, z10_other_fr_A3, z10_lr_fr, z10_lr_fr_E1, \
- z10_other_fr_E1, z10_store_rec")
+ z10_other_fr_E1, z10_store_rec"
+ " ! s390_agen_dep_p")
;
@@ -205,15 +208,12 @@
(and (eq_attr "type" "lr")
(eq_attr "z10prop" "z10_fr")))
"z10_e1_ANY, z10_Gate_ANY")
-; "z10_e1_ANY")
(define_insn_reservation "z10_lr_fr_E1" 6
(and (eq_attr "cpu" "z10")
(and (eq_attr "type" "lr")
(eq_attr "z10prop" "z10_fr_E1")))
"z10_e1_ANY, z10_Gate_ANY")
-; "z10_e1_ANY")
-
(define_insn_reservation "z10_la" 6
(and (eq_attr "cpu" "z10")
@@ -227,14 +227,12 @@
(and (eq_attr "type" "la")
(eq_attr "z10prop" "z10_fwd")))
"z10_e1_ANY, z10_Gate_ANY")
-; "z10_e1_ANY")
(define_insn_reservation "z10_la_fwd_A1" 6
(and (eq_attr "cpu" "z10")
(and (eq_attr "type" "la")
(eq_attr "z10prop" "z10_fwd_A1")))
"z10_e1_ANY, z10_Gate_ANY")
-; "z10_e1_ANY")
; larl-type instructions
@@ -666,13 +664,14 @@
; Address-related bypasses
;
-; Here is the cycle diagram for Address-related bypasses:
+; Here is the cycle diagram for address-related bypasses:
; ... G1 G2 G3 A0 A1 A2 A3 E1 P1 P2 P3 R0 ...
-; ^ ^ ^ ^ ^
-; | | | | E1-type bypasses provide the new addr AFTER this cycle
-; | | | A3-type bypasses provide the new addr AFTER this cycle
-; | | A1-type bypasses provide the new addr AFTER this cycle
-; | AGI resolution, actual USE of address is DURING this cycle
+; ^ ^ ^ ^ ^ ^
+; | | | | | without bypass, its available AFTER this cycle
+; | | | | E1-type bypasses provide the new value AFTER this cycle
+; | | | A3-type bypasses provide the new value AFTER this cycle
+; | | A1-type bypasses provide the new value AFTER this cycle
+; | AGI resolution, actual USE of new value is DURING this cycle
; AGI detection
(define_bypass 3 "z10_larl_A1, z10_la_fwd_A1, z10_other_fwd_A1, \
@@ -682,7 +681,6 @@
z10_cs, z10_stm, z10_other"
"s390_agen_dep_p")
-
(define_bypass 5 "z10_larl_fwd_A3, z10_load_fwd_A3, z10_other_fwd_A3, \
z10_other_fr_A3, z10_int_fwd_A3, z10_int_fr_A3"
"z10_agen, z10_la, z10_branch, z10_call, z10_load, \
@@ -699,6 +697,12 @@
z10_cs, z10_stm, z10_other"
"s390_agen_dep_p")
+(define_bypass 9 "z10_int_super, z10_int_fwd, z10_int_fr"
+ "z10_agen, z10_la, z10_branch, z10_call, z10_load, \
+ z10_store, \
+ z10_cs, z10_stm, z10_other"
+ "s390_agen_dep_p")
+
;
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index e439b01709f..a4334819203 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -9003,6 +9003,7 @@ s390_encode_section_info (tree decl, rtx rtl, int first)
&& GET_CODE (XEXP (rtl, 0)) == SYMBOL_REF
&& TREE_CONSTANT_POOL_ADDRESS_P (XEXP (rtl, 0))
&& (MEM_ALIGN (rtl) == 0
+ || GET_MODE_BITSIZE (GET_MODE (rtl)) == 0
|| MEM_ALIGN (rtl) < GET_MODE_BITSIZE (GET_MODE (rtl))))
SYMBOL_REF_FLAGS (XEXP (rtl, 0)) |= SYMBOL_FLAG_NOT_NATURALLY_ALIGNED;
}
@@ -9863,9 +9864,12 @@ s390_z10_optimize_cmp (rtx insn)
if (!REG_P (*op0) || !REG_P (*op1))
return false;
+ if (GET_MODE_CLASS (GET_MODE (*op0)) != MODE_INT)
+ return false;
+
/* Swap the COMPARE arguments and its mask if there is a
conflicting access in the previous insn. */
- prev_insn = PREV_INSN (insn);
+ prev_insn = prev_active_insn (insn);
if (prev_insn != NULL_RTX && INSN_P (prev_insn)
&& reg_referenced_p (*op1, PATTERN (prev_insn)))
s390_swap_cmp (cond, op0, op1, insn);
@@ -9876,7 +9880,7 @@ s390_z10_optimize_cmp (rtx insn)
the operands, or if swapping them would cause a conflict
with the previous insn, issue a NOP after the COMPARE in
order to separate the two instuctions. */
- next_insn = NEXT_INSN (insn);
+ next_insn = next_active_insn (insn);
if (next_insn != NULL_RTX && INSN_P (next_insn)
&& s390_non_addr_reg_read_p (*op1, next_insn))
{
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 90ed18b0f0d..8f4a71feb3f 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -220,7 +220,7 @@
;; reg: Instruction does not use the agen unit
(define_attr "atype" "agen,reg"
- (if_then_else (eq_attr "op_type" "E,RR,RI,RRE")
+ (if_then_else (eq_attr "op_type" "E,RR,RI,RRE,RSI,RIL,RIE,RRF,RRR")
(const_string "reg")
(const_string "agen")))
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 679cf11e83e..26bceea670d 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -222,7 +222,9 @@ static bool sh_optimize_target_register_callee_saved (bool);
static bool sh_ms_bitfield_layout_p (const_tree);
static void sh_init_builtins (void);
+static tree sh_builtin_decl (unsigned, bool);
static void sh_media_init_builtins (void);
+static tree sh_media_builtin_decl (unsigned, bool);
static rtx sh_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
static void sh_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree);
static void sh_file_start (void);
@@ -416,6 +418,8 @@ static const struct attribute_spec sh_attribute_table[] =
#undef TARGET_INIT_BUILTINS
#define TARGET_INIT_BUILTINS sh_init_builtins
+#undef TARGET_BUILTIN_DECL
+#define TARGET_BUILTIN_DECL sh_builtin_decl
#undef TARGET_EXPAND_BUILTIN
#define TARGET_EXPAND_BUILTIN sh_expand_builtin
@@ -9427,6 +9431,7 @@ nonpic_symbol_mentioned_p (rtx x)
|| XINT (x, 1) == UNSPEC_GOTPLT
|| XINT (x, 1) == UNSPEC_GOTTPOFF
|| XINT (x, 1) == UNSPEC_DTPOFF
+ || XINT (x, 1) == UNSPEC_TPOFF
|| XINT (x, 1) == UNSPEC_PLT
|| XINT (x, 1) == UNSPEC_SYMOFF
|| XINT (x, 1) == UNSPEC_PCREL_SYMOFF))
@@ -10520,6 +10525,7 @@ struct builtin_description
const enum insn_code icode;
const char *const name;
int signature;
+ tree fndecl;
};
/* describe number and signedness of arguments; arg[0] == result
@@ -10586,99 +10592,99 @@ static const char signature_args[][4] =
/* mshalds, mshard, mshards, mshlld, mshlrd: shift count is unsigned int. */
/* mshards_q: returns signed short. */
/* nsb: takes long long arg, returns unsigned char. */
-static const struct builtin_description bdesc[] =
-{
- { CODE_FOR_absv2si2, "__builtin_absv2si2", SH_BLTIN_V2SI2 },
- { CODE_FOR_absv4hi2, "__builtin_absv4hi2", SH_BLTIN_V4HI2 },
- { CODE_FOR_addv2si3, "__builtin_addv2si3", SH_BLTIN_V2SI3 },
- { CODE_FOR_addv4hi3, "__builtin_addv4hi3", SH_BLTIN_V4HI3 },
- { CODE_FOR_ssaddv2si3,"__builtin_ssaddv2si3", SH_BLTIN_V2SI3 },
- { CODE_FOR_usaddv8qi3,"__builtin_usaddv8qi3", SH_BLTIN_V8QI3 },
- { CODE_FOR_ssaddv4hi3,"__builtin_ssaddv4hi3", SH_BLTIN_V4HI3 },
- { CODE_FOR_alloco_i, "__builtin_sh_media_ALLOCO", SH_BLTIN_PV },
- { CODE_FOR_negcmpeqv8qi,"__builtin_sh_media_MCMPEQ_B", SH_BLTIN_V8QI3 },
- { CODE_FOR_negcmpeqv2si,"__builtin_sh_media_MCMPEQ_L", SH_BLTIN_V2SI3 },
- { CODE_FOR_negcmpeqv4hi,"__builtin_sh_media_MCMPEQ_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_negcmpgtuv8qi,"__builtin_sh_media_MCMPGT_UB", SH_BLTIN_V8QI3 },
- { CODE_FOR_negcmpgtv2si,"__builtin_sh_media_MCMPGT_L", SH_BLTIN_V2SI3 },
- { CODE_FOR_negcmpgtv4hi,"__builtin_sh_media_MCMPGT_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_mcmv, "__builtin_sh_media_MCMV", SH_BLTIN_UUUU },
- { CODE_FOR_mcnvs_lw, "__builtin_sh_media_MCNVS_LW", SH_BLTIN_3 },
- { CODE_FOR_mcnvs_wb, "__builtin_sh_media_MCNVS_WB", SH_BLTIN_V4HI2V8QI },
- { CODE_FOR_mcnvs_wub, "__builtin_sh_media_MCNVS_WUB", SH_BLTIN_V4HI2V8QI },
- { CODE_FOR_mextr1, "__builtin_sh_media_MEXTR1", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr2, "__builtin_sh_media_MEXTR2", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr3, "__builtin_sh_media_MEXTR3", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr4, "__builtin_sh_media_MEXTR4", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr5, "__builtin_sh_media_MEXTR5", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr6, "__builtin_sh_media_MEXTR6", SH_BLTIN_V8QI3 },
- { CODE_FOR_mextr7, "__builtin_sh_media_MEXTR7", SH_BLTIN_V8QI3 },
- { CODE_FOR_mmacfx_wl, "__builtin_sh_media_MMACFX_WL", SH_BLTIN_MAC_HISI },
- { CODE_FOR_mmacnfx_wl,"__builtin_sh_media_MMACNFX_WL", SH_BLTIN_MAC_HISI },
- { CODE_FOR_mulv2si3, "__builtin_mulv2si3", SH_BLTIN_V2SI3, },
- { CODE_FOR_mulv4hi3, "__builtin_mulv4hi3", SH_BLTIN_V4HI3 },
- { CODE_FOR_mmulfx_l, "__builtin_sh_media_MMULFX_L", SH_BLTIN_V2SI3 },
- { CODE_FOR_mmulfx_w, "__builtin_sh_media_MMULFX_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_mmulfxrp_w,"__builtin_sh_media_MMULFXRP_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_mmulhi_wl, "__builtin_sh_media_MMULHI_WL", SH_BLTIN_V4HI2V2SI },
- { CODE_FOR_mmullo_wl, "__builtin_sh_media_MMULLO_WL", SH_BLTIN_V4HI2V2SI },
- { CODE_FOR_mmulsum_wq,"__builtin_sh_media_MMULSUM_WQ", SH_BLTIN_XXUU },
- { CODE_FOR_mperm_w, "__builtin_sh_media_MPERM_W", SH_BLTIN_SH_HI },
- { CODE_FOR_msad_ubq, "__builtin_sh_media_MSAD_UBQ", SH_BLTIN_XXUU },
- { CODE_FOR_mshalds_l, "__builtin_sh_media_MSHALDS_L", SH_BLTIN_SH_SI },
- { CODE_FOR_mshalds_w, "__builtin_sh_media_MSHALDS_W", SH_BLTIN_SH_HI },
- { CODE_FOR_ashrv2si3, "__builtin_ashrv2si3", SH_BLTIN_SH_SI },
- { CODE_FOR_ashrv4hi3, "__builtin_ashrv4hi3", SH_BLTIN_SH_HI },
- { CODE_FOR_mshards_q, "__builtin_sh_media_MSHARDS_Q", SH_BLTIN_SUS },
- { CODE_FOR_mshfhi_b, "__builtin_sh_media_MSHFHI_B", SH_BLTIN_V8QI3 },
- { CODE_FOR_mshfhi_l, "__builtin_sh_media_MSHFHI_L", SH_BLTIN_V2SI3 },
- { CODE_FOR_mshfhi_w, "__builtin_sh_media_MSHFHI_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_mshflo_b, "__builtin_sh_media_MSHFLO_B", SH_BLTIN_V8QI3 },
- { CODE_FOR_mshflo_l, "__builtin_sh_media_MSHFLO_L", SH_BLTIN_V2SI3 },
- { CODE_FOR_mshflo_w, "__builtin_sh_media_MSHFLO_W", SH_BLTIN_V4HI3 },
- { CODE_FOR_ashlv2si3, "__builtin_ashlv2si3", SH_BLTIN_SH_SI },
- { CODE_FOR_ashlv4hi3, "__builtin_ashlv4hi3", SH_BLTIN_SH_HI },
- { CODE_FOR_lshrv2si3, "__builtin_lshrv2si3", SH_BLTIN_SH_SI },
- { CODE_FOR_lshrv4hi3, "__builtin_lshrv4hi3", SH_BLTIN_SH_HI },
- { CODE_FOR_subv2si3, "__builtin_subv2si3", SH_BLTIN_V2SI3 },
- { CODE_FOR_subv4hi3, "__builtin_subv4hi3", SH_BLTIN_V4HI3 },
- { CODE_FOR_sssubv2si3,"__builtin_sssubv2si3", SH_BLTIN_V2SI3 },
- { CODE_FOR_ussubv8qi3,"__builtin_ussubv8qi3", SH_BLTIN_V8QI3 },
- { CODE_FOR_sssubv4hi3,"__builtin_sssubv4hi3", SH_BLTIN_V4HI3 },
- { CODE_FOR_fcosa_s, "__builtin_sh_media_FCOSA_S", SH_BLTIN_SISF },
- { CODE_FOR_fsina_s, "__builtin_sh_media_FSINA_S", SH_BLTIN_SISF },
- { CODE_FOR_fipr, "__builtin_sh_media_FIPR_S", SH_BLTIN_3 },
- { CODE_FOR_ftrv, "__builtin_sh_media_FTRV_S", SH_BLTIN_3 },
- { CODE_FOR_mac_media, "__builtin_sh_media_FMAC_S", SH_BLTIN_3 },
- { CODE_FOR_sqrtdf2, "__builtin_sh_media_FSQRT_D", SH_BLTIN_2 },
- { CODE_FOR_sqrtsf2, "__builtin_sh_media_FSQRT_S", SH_BLTIN_2 },
- { CODE_FOR_fsrra_s, "__builtin_sh_media_FSRRA_S", SH_BLTIN_2 },
- { CODE_FOR_ldhi_l, "__builtin_sh_media_LDHI_L", SH_BLTIN_LDUA_L },
- { CODE_FOR_ldhi_q, "__builtin_sh_media_LDHI_Q", SH_BLTIN_LDUA_Q },
- { CODE_FOR_ldlo_l, "__builtin_sh_media_LDLO_L", SH_BLTIN_LDUA_L },
- { CODE_FOR_ldlo_q, "__builtin_sh_media_LDLO_Q", SH_BLTIN_LDUA_Q },
- { CODE_FOR_sthi_l, "__builtin_sh_media_STHI_L", SH_BLTIN_STUA_L },
- { CODE_FOR_sthi_q, "__builtin_sh_media_STHI_Q", SH_BLTIN_STUA_Q },
- { CODE_FOR_stlo_l, "__builtin_sh_media_STLO_L", SH_BLTIN_STUA_L },
- { CODE_FOR_stlo_q, "__builtin_sh_media_STLO_Q", SH_BLTIN_STUA_Q },
- { CODE_FOR_ldhi_l64, "__builtin_sh_media_LDHI_L", SH_BLTIN_LDUA_L64 },
- { CODE_FOR_ldhi_q64, "__builtin_sh_media_LDHI_Q", SH_BLTIN_LDUA_Q64 },
- { CODE_FOR_ldlo_l64, "__builtin_sh_media_LDLO_L", SH_BLTIN_LDUA_L64 },
- { CODE_FOR_ldlo_q64, "__builtin_sh_media_LDLO_Q", SH_BLTIN_LDUA_Q64 },
- { CODE_FOR_sthi_l64, "__builtin_sh_media_STHI_L", SH_BLTIN_STUA_L64 },
- { CODE_FOR_sthi_q64, "__builtin_sh_media_STHI_Q", SH_BLTIN_STUA_Q64 },
- { CODE_FOR_stlo_l64, "__builtin_sh_media_STLO_L", SH_BLTIN_STUA_L64 },
- { CODE_FOR_stlo_q64, "__builtin_sh_media_STLO_Q", SH_BLTIN_STUA_Q64 },
- { CODE_FOR_nsb, "__builtin_sh_media_NSB", SH_BLTIN_SU },
- { CODE_FOR_byterev, "__builtin_sh_media_BYTEREV", SH_BLTIN_2 },
- { CODE_FOR_prefetch, "__builtin_sh_media_PREFO", SH_BLTIN_PSSV },
+static struct builtin_description bdesc[] =
+{
+ { CODE_FOR_absv2si2, "__builtin_absv2si2", SH_BLTIN_V2SI2, 0 },
+ { CODE_FOR_absv4hi2, "__builtin_absv4hi2", SH_BLTIN_V4HI2, 0 },
+ { CODE_FOR_addv2si3, "__builtin_addv2si3", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_addv4hi3, "__builtin_addv4hi3", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_ssaddv2si3,"__builtin_ssaddv2si3", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_usaddv8qi3,"__builtin_usaddv8qi3", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_ssaddv4hi3,"__builtin_ssaddv4hi3", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_alloco_i, "__builtin_sh_media_ALLOCO", SH_BLTIN_PV, 0 },
+ { CODE_FOR_negcmpeqv8qi,"__builtin_sh_media_MCMPEQ_B", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_negcmpeqv2si,"__builtin_sh_media_MCMPEQ_L", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_negcmpeqv4hi,"__builtin_sh_media_MCMPEQ_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_negcmpgtuv8qi,"__builtin_sh_media_MCMPGT_UB", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_negcmpgtv2si,"__builtin_sh_media_MCMPGT_L", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_negcmpgtv4hi,"__builtin_sh_media_MCMPGT_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_mcmv, "__builtin_sh_media_MCMV", SH_BLTIN_UUUU, 0 },
+ { CODE_FOR_mcnvs_lw, "__builtin_sh_media_MCNVS_LW", SH_BLTIN_3, 0 },
+ { CODE_FOR_mcnvs_wb, "__builtin_sh_media_MCNVS_WB", SH_BLTIN_V4HI2V8QI, 0 },
+ { CODE_FOR_mcnvs_wub, "__builtin_sh_media_MCNVS_WUB", SH_BLTIN_V4HI2V8QI, 0 },
+ { CODE_FOR_mextr1, "__builtin_sh_media_MEXTR1", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr2, "__builtin_sh_media_MEXTR2", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr3, "__builtin_sh_media_MEXTR3", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr4, "__builtin_sh_media_MEXTR4", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr5, "__builtin_sh_media_MEXTR5", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr6, "__builtin_sh_media_MEXTR6", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mextr7, "__builtin_sh_media_MEXTR7", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mmacfx_wl, "__builtin_sh_media_MMACFX_WL", SH_BLTIN_MAC_HISI, 0 },
+ { CODE_FOR_mmacnfx_wl,"__builtin_sh_media_MMACNFX_WL", SH_BLTIN_MAC_HISI, 0 },
+ { CODE_FOR_mulv2si3, "__builtin_mulv2si3", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_mulv4hi3, "__builtin_mulv4hi3", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_mmulfx_l, "__builtin_sh_media_MMULFX_L", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_mmulfx_w, "__builtin_sh_media_MMULFX_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_mmulfxrp_w,"__builtin_sh_media_MMULFXRP_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_mmulhi_wl, "__builtin_sh_media_MMULHI_WL", SH_BLTIN_V4HI2V2SI, 0 },
+ { CODE_FOR_mmullo_wl, "__builtin_sh_media_MMULLO_WL", SH_BLTIN_V4HI2V2SI, 0 },
+ { CODE_FOR_mmulsum_wq,"__builtin_sh_media_MMULSUM_WQ", SH_BLTIN_XXUU, 0 },
+ { CODE_FOR_mperm_w, "__builtin_sh_media_MPERM_W", SH_BLTIN_SH_HI, 0 },
+ { CODE_FOR_msad_ubq, "__builtin_sh_media_MSAD_UBQ", SH_BLTIN_XXUU, 0 },
+ { CODE_FOR_mshalds_l, "__builtin_sh_media_MSHALDS_L", SH_BLTIN_SH_SI, 0 },
+ { CODE_FOR_mshalds_w, "__builtin_sh_media_MSHALDS_W", SH_BLTIN_SH_HI, 0 },
+ { CODE_FOR_ashrv2si3, "__builtin_ashrv2si3", SH_BLTIN_SH_SI, 0 },
+ { CODE_FOR_ashrv4hi3, "__builtin_ashrv4hi3", SH_BLTIN_SH_HI, 0 },
+ { CODE_FOR_mshards_q, "__builtin_sh_media_MSHARDS_Q", SH_BLTIN_SUS, 0 },
+ { CODE_FOR_mshfhi_b, "__builtin_sh_media_MSHFHI_B", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mshfhi_l, "__builtin_sh_media_MSHFHI_L", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_mshfhi_w, "__builtin_sh_media_MSHFHI_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_mshflo_b, "__builtin_sh_media_MSHFLO_B", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_mshflo_l, "__builtin_sh_media_MSHFLO_L", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_mshflo_w, "__builtin_sh_media_MSHFLO_W", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_ashlv2si3, "__builtin_ashlv2si3", SH_BLTIN_SH_SI, 0 },
+ { CODE_FOR_ashlv4hi3, "__builtin_ashlv4hi3", SH_BLTIN_SH_HI, 0 },
+ { CODE_FOR_lshrv2si3, "__builtin_lshrv2si3", SH_BLTIN_SH_SI, 0 },
+ { CODE_FOR_lshrv4hi3, "__builtin_lshrv4hi3", SH_BLTIN_SH_HI, 0 },
+ { CODE_FOR_subv2si3, "__builtin_subv2si3", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_subv4hi3, "__builtin_subv4hi3", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_sssubv2si3,"__builtin_sssubv2si3", SH_BLTIN_V2SI3, 0 },
+ { CODE_FOR_ussubv8qi3,"__builtin_ussubv8qi3", SH_BLTIN_V8QI3, 0 },
+ { CODE_FOR_sssubv4hi3,"__builtin_sssubv4hi3", SH_BLTIN_V4HI3, 0 },
+ { CODE_FOR_fcosa_s, "__builtin_sh_media_FCOSA_S", SH_BLTIN_SISF, 0 },
+ { CODE_FOR_fsina_s, "__builtin_sh_media_FSINA_S", SH_BLTIN_SISF, 0 },
+ { CODE_FOR_fipr, "__builtin_sh_media_FIPR_S", SH_BLTIN_3, 0 },
+ { CODE_FOR_ftrv, "__builtin_sh_media_FTRV_S", SH_BLTIN_3, 0 },
+ { CODE_FOR_mac_media, "__builtin_sh_media_FMAC_S", SH_BLTIN_3, 0 },
+ { CODE_FOR_sqrtdf2, "__builtin_sh_media_FSQRT_D", SH_BLTIN_2, 0 },
+ { CODE_FOR_sqrtsf2, "__builtin_sh_media_FSQRT_S", SH_BLTIN_2, 0 },
+ { CODE_FOR_fsrra_s, "__builtin_sh_media_FSRRA_S", SH_BLTIN_2, 0 },
+ { CODE_FOR_ldhi_l, "__builtin_sh_media_LDHI_L", SH_BLTIN_LDUA_L, 0 },
+ { CODE_FOR_ldhi_q, "__builtin_sh_media_LDHI_Q", SH_BLTIN_LDUA_Q, 0 },
+ { CODE_FOR_ldlo_l, "__builtin_sh_media_LDLO_L", SH_BLTIN_LDUA_L, 0 },
+ { CODE_FOR_ldlo_q, "__builtin_sh_media_LDLO_Q", SH_BLTIN_LDUA_Q, 0 },
+ { CODE_FOR_sthi_l, "__builtin_sh_media_STHI_L", SH_BLTIN_STUA_L, 0 },
+ { CODE_FOR_sthi_q, "__builtin_sh_media_STHI_Q", SH_BLTIN_STUA_Q, 0 },
+ { CODE_FOR_stlo_l, "__builtin_sh_media_STLO_L", SH_BLTIN_STUA_L, 0 },
+ { CODE_FOR_stlo_q, "__builtin_sh_media_STLO_Q", SH_BLTIN_STUA_Q, 0 },
+ { CODE_FOR_ldhi_l64, "__builtin_sh_media_LDHI_L", SH_BLTIN_LDUA_L64, 0 },
+ { CODE_FOR_ldhi_q64, "__builtin_sh_media_LDHI_Q", SH_BLTIN_LDUA_Q64, 0 },
+ { CODE_FOR_ldlo_l64, "__builtin_sh_media_LDLO_L", SH_BLTIN_LDUA_L64, 0 },
+ { CODE_FOR_ldlo_q64, "__builtin_sh_media_LDLO_Q", SH_BLTIN_LDUA_Q64, 0 },
+ { CODE_FOR_sthi_l64, "__builtin_sh_media_STHI_L", SH_BLTIN_STUA_L64, 0 },
+ { CODE_FOR_sthi_q64, "__builtin_sh_media_STHI_Q", SH_BLTIN_STUA_Q64, 0 },
+ { CODE_FOR_stlo_l64, "__builtin_sh_media_STLO_L", SH_BLTIN_STUA_L64, 0 },
+ { CODE_FOR_stlo_q64, "__builtin_sh_media_STLO_Q", SH_BLTIN_STUA_Q64, 0 },
+ { CODE_FOR_nsb, "__builtin_sh_media_NSB", SH_BLTIN_SU, 0 },
+ { CODE_FOR_byterev, "__builtin_sh_media_BYTEREV", SH_BLTIN_2, 0 },
+ { CODE_FOR_prefetch, "__builtin_sh_media_PREFO", SH_BLTIN_PSSV, 0 },
};
static void
sh_media_init_builtins (void)
{
tree shared[SH_BLTIN_NUM_SHARED_SIGNATURES];
- const struct builtin_description *d;
+ struct builtin_description *d;
memset (shared, 0, sizeof shared);
for (d = bdesc; d - bdesc < (int) ARRAY_SIZE (bdesc); d++)
@@ -10724,11 +10730,23 @@ sh_media_init_builtins (void)
if (signature < SH_BLTIN_NUM_SHARED_SIGNATURES)
shared[signature] = type;
}
- add_builtin_function (d->name, type, d - bdesc, BUILT_IN_MD,
- NULL, NULL_TREE);
+ d->fndecl =
+ add_builtin_function (d->name, type, d - bdesc, BUILT_IN_MD,
+ NULL, NULL_TREE);
}
}
+/* Returns the shmedia builtin decl for CODE. */
+
+static tree
+sh_media_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
+{
+ if (code >= ARRAY_SIZE (bdesc))
+ return error_mark_node;
+
+ return bdesc[code].fndecl;
+}
+
/* Implements target hook vector_mode_supported_p. */
bool
sh_vector_mode_supported_p (enum machine_mode mode)
@@ -10767,6 +10785,17 @@ sh_init_builtins (void)
sh_media_init_builtins ();
}
+/* Returns the sh builtin decl for CODE. */
+
+static tree
+sh_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
+{
+ if (TARGET_SHMEDIA)
+ return sh_media_builtin_decl (code, initialize_p);
+
+ return error_mark_node;
+}
+
/* Expand an expression EXP that calls a built-in function,
with result going to TARGET if that's convenient
(and in mode MODE if that's convenient).
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index a05e1d804d7..ed5d6c59345 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -2368,7 +2368,7 @@ get_branch_target (rtx branch)
return 0;
/* ASM GOTOs. */
- if (GET_CODE (PATTERN (branch)) == ASM_OPERANDS)
+ if (extract_asm_operands (PATTERN (branch)) != NULL)
return NULL;
set = single_set (branch);
diff --git a/gcc/configure b/gcc/configure
index 66b38ec99a1..292b3dca631 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -22917,6 +22917,37 @@ $as_echo "#define HAVE_AS_IX86_SAHF 1" >>confdefs.h
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for swap suffix" >&5
+$as_echo_n "checking assembler for swap suffix... " >&6; }
+if test "${gcc_cv_as_ix86_swap+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ gcc_cv_as_ix86_swap=no
+ if test x$gcc_cv_as != x; then
+ echo 'movl.s %esp, %ebp' > conftest.s
+ if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+ gcc_cv_as_ix86_swap=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ix86_swap" >&5
+$as_echo "$gcc_cv_as_ix86_swap" >&6; }
+if test $gcc_cv_as_ix86_swap = yes; then
+
+$as_echo "#define HAVE_AS_IX86_SWAP 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for different section symbol subtraction" >&5
$as_echo_n "checking assembler for different section symbol subtraction... " >&6; }
if test "${gcc_cv_as_ix86_diff_sect_delta+set}" = set; then :
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 7947d285629..dd3b7e890d2 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3047,6 +3047,12 @@ foo: nop
[AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
[Define if your assembler supports the sahf mnemonic.])])
+ gcc_GAS_CHECK_FEATURE([swap suffix],
+ gcc_cv_as_ix86_swap,,,
+ [movl.s %esp, %ebp],,
+ [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
+ [Define if your assembler supports the swap suffix.])])
+
gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
gcc_cv_as_ix86_diff_sect_delta,,,
[.section .rodata
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d2a46b2b1b2..e0bf4f2e6de 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,65 @@
+2009-10-23 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (outer_lambda_capture_p): New fn.
+ (thisify_lambda_field): Factor out...
+ (add_default_capture): ...from here.
+ (finish_id_expression): Use them.
+
+ Core issue 899
+ * call.c (add_function_candidate): Only permit explicit conversion
+ ops if copy ctor was called with a single argument.
+
+ * call.c (initialize_reference): Tweak error message.
+
+2009-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ * mangle.c (finish_mangling_get_identifier): Use
+ obstack_base (mangle_obstack) instead of name_base.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_lexer_print_token, cp_parser_is_string_literal,
+ cp_parser_string_literal, cp_parser_primary_expression): Likewise.
+ (cp_lexer_get_preprocessor_token): Use C_LEX_STRING_JOIN instead
+ of C_LEX_RAW_STRINGS.
+
+2009-10-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/38888
+ * error.c (dump_template_bindings): Wrap argument packs in {}.
+
+ PR c++/38798
+ * parser.c (CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS): New.
+ (cp_parser_type_specifier): Don't try to parse a class-specifier
+ or enum-specifier in that case.
+ (cp_parser_trailing_type_id): New.
+ (cp_parser_late_return_type_opt): Call it.
+ (cp_parser_type_id_1): Add is_trailing_return parm.
+ (cp_parser_type_specifier_seq): Likewise.
+
+2009-10-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/39866
+ * call.c (print_z_candidates): Don't print deleted candidates.
+ (print_z_candidate): Note deleted candidates.
+
+2009-10-14 Larry Evans <cppljevans@suddenlink.net>
+
+ PR c++/40092
+ * tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK
+ equality.
+
+2009-10-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/37875
+ * parser.c (cp_parser_decltype): Set greater_than_is_operator_p.
+
+ PR c++/37766
+ * pt.c (type_unification_real): Call convert_template_argument
+ for function default template arguments.
+ (check_default_tmpl_args): Suggest -std=c++0x when function default
+ template args seen in C++98 mode.
+
2009-10-11 Jason Merrill <jason@redhat.com>
PR c++/37204
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 3fc22f2b911..45428045b84 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1631,7 +1631,8 @@ add_function_candidate (struct z_candidate **candidates,
parmtype = build_pointer_type (parmtype);
}
- if (ctype && i == 0 && DECL_COPY_CONSTRUCTOR_P (fn))
+ if (ctype && i == 0 && DECL_COPY_CONSTRUCTOR_P (fn)
+ && (len-skip == 1))
{
/* Hack: Direct-initialize copy parm (i.e. suppress
LOOKUP_ONLYCONVERTING) to make explicit conversion ops
@@ -2718,6 +2719,8 @@ print_z_candidate (const char *msgstr, struct z_candidate *candidate)
inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
else if (candidate->viable == -1)
inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
+ else if (DECL_DELETED_FN (candidate->fn))
+ inform (input_location, "%s %+#D <deleted>", msgstr, candidate->fn);
else
inform (input_location, "%s %+#D", msgstr, candidate->fn);
}
@@ -2729,6 +2732,23 @@ print_z_candidates (struct z_candidate *candidates)
struct z_candidate *cand1;
struct z_candidate **cand2;
+ if (!candidates)
+ return;
+
+ /* Remove deleted candidates. */
+ cand1 = candidates;
+ for (cand2 = &cand1; *cand2; )
+ {
+ if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
+ && DECL_DELETED_FN ((*cand2)->fn))
+ *cand2 = (*cand2)->next;
+ else
+ cand2 = &(*cand2)->next;
+ }
+ /* ...if there are any non-deleted ones. */
+ if (cand1)
+ candidates = cand1;
+
/* There may be duplicates in the set of candidates. We put off
checking this condition as long as possible, since we have no way
to eliminate duplicates from a set of functions in less than n^2
@@ -2751,9 +2771,6 @@ print_z_candidates (struct z_candidate *candidates)
}
}
- if (!candidates)
- return;
-
str = _("candidates are:");
print_z_candidate (str, candidates);
if (candidates->next)
@@ -7603,7 +7620,7 @@ initialize_reference (tree type, tree expr, tree decl, tree *cleanup)
&& !TYPE_REF_IS_RVALUE (type)
&& !real_lvalue_p (expr))
error ("invalid initialization of non-const reference of "
- "type %qT from a temporary of type %qT",
+ "type %qT from an rvalue of type %qT",
type, TREE_TYPE (expr));
else
error ("invalid initialization of reference of type "
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index b50704a3ae4..ce5660f4a85 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -311,7 +311,13 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames)
pp_equal (cxx_pp);
pp_cxx_whitespace (cxx_pp);
if (arg)
- dump_template_argument (arg, TFF_PLAIN_IDENTIFIER);
+ {
+ if (ARGUMENT_PACK_P (arg))
+ pp_cxx_left_brace (cxx_pp);
+ dump_template_argument (arg, TFF_PLAIN_IDENTIFIER);
+ if (ARGUMENT_PACK_P (arg))
+ pp_cxx_right_brace (cxx_pp);
+ }
else
pp_string (cxx_pp, M_("<missing>"));
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index d96a929ec5c..f9a550394d6 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -2958,7 +2958,7 @@ finish_mangling_get_identifier (const bool warn)
finish_mangling_internal (warn);
/* Don't obstack_finish here, and the next start_mangling will
remove the identifier. */
- return get_identifier ((const char *) name_base);
+ return get_identifier ((const char *) obstack_base (mangle_obstack));
}
/* Initialize data structures for mangling. */
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 44dceb21f74..7fd995f9e83 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -402,7 +402,7 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer, cp_token *token)
/* Get a new token from the preprocessor. */
token->type
= c_lex_with_flags (&token->u.value, &token->location, &token->flags,
- lexer == NULL ? 0 : C_LEX_RAW_STRINGS);
+ lexer == NULL ? 0 : C_LEX_STRING_NO_JOIN);
token->keyword = RID_MAX;
token->pragma_kind = PRAGMA_NONE;
@@ -792,6 +792,7 @@ cp_lexer_print_token (FILE * stream, cp_token *token)
case CPP_STRING16:
case CPP_STRING32:
case CPP_WSTRING:
+ case CPP_UTF8STRING:
fprintf (stream, " \"%s\"", TREE_STRING_POINTER (token->u.value));
break;
@@ -1194,8 +1195,12 @@ enum
/* The construct is optional. If it is not present, then no error
should be issued. */
CP_PARSER_FLAGS_OPTIONAL = 0x1,
- /* When parsing a type-specifier, do not allow user-defined types. */
- CP_PARSER_FLAGS_NO_USER_DEFINED_TYPES = 0x2
+ /* When parsing a type-specifier, treat user-defined type-names
+ as non-type identifiers. */
+ CP_PARSER_FLAGS_NO_USER_DEFINED_TYPES = 0x2,
+ /* When parsing a type-specifier, do not try to parse a class-specifier
+ or enum-specifier. */
+ CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS = 0x4
};
/* This type is used for parameters and variables which hold
@@ -1741,10 +1746,11 @@ static tree cp_parser_type_id
(cp_parser *);
static tree cp_parser_template_type_arg
(cp_parser *);
+static tree cp_parser_trailing_type_id (cp_parser *);
static tree cp_parser_type_id_1
- (cp_parser *, bool);
+ (cp_parser *, bool, bool);
static void cp_parser_type_specifier_seq
- (cp_parser *, bool, cp_decl_specifier_seq *);
+ (cp_parser *, bool, bool, cp_decl_specifier_seq *);
static tree cp_parser_parameter_declaration_clause
(cp_parser *);
static tree cp_parser_parameter_declaration_list
@@ -2060,7 +2066,8 @@ cp_parser_is_string_literal (cp_token* token)
return (token->type == CPP_STRING ||
token->type == CPP_STRING16 ||
token->type == CPP_STRING32 ||
- token->type == CPP_WSTRING);
+ token->type == CPP_WSTRING ||
+ token->type == CPP_UTF8STRING);
}
/* Returns nonzero if TOKEN is the indicated KEYWORD. */
@@ -2999,6 +3006,7 @@ cp_parser_string_literal (cp_parser *parser, bool translate, bool wide_ok)
{
default:
case CPP_STRING:
+ case CPP_UTF8STRING:
TREE_TYPE (value) = char_array_type_node;
break;
case CPP_STRING16:
@@ -3228,6 +3236,7 @@ cp_parser_primary_expression (cp_parser *parser,
case CPP_STRING16:
case CPP_STRING32:
case CPP_WSTRING:
+ case CPP_UTF8STRING:
/* ??? Should wide strings be allowed when parser->translate_strings_p
is false (i.e. in attributes)? If not, we can kill the third
argument to cp_parser_string_literal. */
@@ -5795,6 +5804,7 @@ cp_parser_new_type_id (cp_parser* parser, tree *nelts)
= "types may not be defined in a new-type-id";
/* Parse the type-specifier-seq. */
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ /*is_trailing_return=*/false,
&type_specifier_seq);
/* Restore the old message. */
parser->type_definition_forbidden_message = saved_message;
@@ -8028,6 +8038,7 @@ cp_parser_condition (cp_parser* parser)
= "types may not be defined in conditions";
/* Parse the type-specifier-seq. */
cp_parser_type_specifier_seq (parser, /*is_condition==*/true,
+ /*is_trailing_return=*/false,
&type_specifiers);
/* Restore the saved message. */
parser->type_definition_forbidden_message = saved_message;
@@ -9541,12 +9552,25 @@ cp_parser_decltype (cp_parser *parser)
cp_parser_parse_definitely (parser);
else
{
+ bool saved_greater_than_is_operator_p;
+
/* Abort our attempt to parse an id-expression or member access
expression. */
cp_parser_abort_tentative_parse (parser);
+ /* Within a parenthesized expression, a `>' token is always
+ the greater-than operator. */
+ saved_greater_than_is_operator_p
+ = parser->greater_than_is_operator_p;
+ parser->greater_than_is_operator_p = true;
+
/* Parse a full expression. */
expr = cp_parser_expression (parser, /*cast_p=*/false, NULL);
+
+ /* The `>' token might be the end of a template-id or
+ template-parameter-list now. */
+ parser->greater_than_is_operator_p
+ = saved_greater_than_is_operator_p;
}
/* Go back to evaluating expressions. */
@@ -9656,6 +9680,7 @@ cp_parser_conversion_type_id (cp_parser* parser)
attributes = cp_parser_attributes_opt (parser);
/* Parse the type-specifiers. */
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ /*is_trailing_return=*/false,
&type_specifiers);
/* If that didn't work, stop. */
if (type_specifiers.type == error_mark_node)
@@ -11631,6 +11656,9 @@ cp_parser_type_specifier (cp_parser* parser,
switch (keyword)
{
case RID_ENUM:
+ if ((flags & CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS))
+ goto elaborated_type_specifier;
+
/* Look for the enum-specifier. */
type_spec = cp_parser_enum_specifier (parser);
/* If that worked, we're done. */
@@ -11653,6 +11681,9 @@ cp_parser_type_specifier (cp_parser* parser,
case RID_CLASS:
case RID_STRUCT:
case RID_UNION:
+ if ((flags & CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS))
+ goto elaborated_type_specifier;
+
/* Parse tentatively so that we can back up if we don't find a
class-specifier. */
cp_parser_parse_tentatively (parser);
@@ -12519,6 +12550,7 @@ cp_parser_enum_specifier (cp_parser* parser)
/* Parse the type-specifier-seq. */
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ /*is_trailing_return=*/false,
&type_specifiers);
/* At this point this is surely not elaborated type specifier. */
@@ -14409,7 +14441,7 @@ cp_parser_cv_qualifier_seq_opt (cp_parser* parser)
/* Parse a late-specified return type, if any. This is not a separate
non-terminal, but part of a function declarator, which looks like
- -> type-id
+ -> trailing-type-specifier-seq abstract-declarator(opt)
Returns the type indicated by the type-id. */
@@ -14427,7 +14459,7 @@ cp_parser_late_return_type_opt (cp_parser* parser)
/* Consume the ->. */
cp_lexer_consume_token (parser->lexer);
- return cp_parser_type_id (parser);
+ return cp_parser_trailing_type_id (parser);
}
/* Parse a declarator-id.
@@ -14480,13 +14512,15 @@ cp_parser_declarator_id (cp_parser* parser, bool optional_p)
Returns the TYPE specified. */
static tree
-cp_parser_type_id_1 (cp_parser* parser, bool is_template_arg)
+cp_parser_type_id_1 (cp_parser* parser, bool is_template_arg,
+ bool is_trailing_return)
{
cp_decl_specifier_seq type_specifier_seq;
cp_declarator *abstract_declarator;
/* Parse the type-specifier-seq. */
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ is_trailing_return,
&type_specifier_seq);
if (type_specifier_seq.type == error_mark_node)
return error_mark_node;
@@ -14524,12 +14558,17 @@ cp_parser_type_id_1 (cp_parser* parser, bool is_template_arg)
static tree cp_parser_type_id (cp_parser *parser)
{
- return cp_parser_type_id_1 (parser, false);
+ return cp_parser_type_id_1 (parser, false, false);
}
static tree cp_parser_template_type_arg (cp_parser *parser)
{
- return cp_parser_type_id_1 (parser, true);
+ return cp_parser_type_id_1 (parser, true, false);
+}
+
+static tree cp_parser_trailing_type_id (cp_parser *parser)
+{
+ return cp_parser_type_id_1 (parser, false, true);
}
/* Parse a type-specifier-seq.
@@ -14545,11 +14584,15 @@ static tree cp_parser_template_type_arg (cp_parser *parser)
If IS_CONDITION is true, we are at the start of a "condition",
e.g., we've just seen "if (".
+ If IS_TRAILING_RETURN is true, we are in a trailing-return-type,
+ i.e. we've just seen "->".
+
Sets *TYPE_SPECIFIER_SEQ to represent the sequence. */
static void
cp_parser_type_specifier_seq (cp_parser* parser,
bool is_condition,
+ bool is_trailing_return,
cp_decl_specifier_seq *type_specifier_seq)
{
bool seen_type_specifier = false;
@@ -14559,6 +14602,12 @@ cp_parser_type_specifier_seq (cp_parser* parser,
/* Clear the TYPE_SPECIFIER_SEQ. */
clear_decl_specs (type_specifier_seq);
+ /* In the context of a trailing return type, enum E { } is an
+ elaborated-type-specifier followed by a function-body, not an
+ enum-specifier. */
+ if (is_trailing_return)
+ flags |= CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS;
+
/* Parse the type-specifiers and attributes. */
while (true)
{
@@ -17270,6 +17319,7 @@ cp_parser_exception_declaration (cp_parser* parser)
/* Parse the type-specifier-seq. */
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ /*is_trailing_return=*/false,
&type_specifiers);
/* If it's a `)', then there is no declarator. */
if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN))
@@ -22043,6 +22093,7 @@ cp_parser_omp_for_loop (cp_parser *parser, tree clauses, tree *par_clauses)
cp_parser_parse_tentatively (parser);
cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
+ /*is_trailing_return=*/false,
&type_specifiers);
if (cp_parser_parse_definitely (parser))
{
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 148adab2cba..084ad1cb09f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -4025,7 +4025,8 @@ check_default_tmpl_args (tree decl, tree parms, int is_primary,
else if (is_friend_decl)
msg = "default template arguments may not be used in function template friend declarations";
else if (TREE_CODE (decl) == FUNCTION_DECL && (cxx_dialect == cxx98))
- msg = "default template arguments may not be used in function templates";
+ msg = ("default template arguments may not be used in function templates "
+ "without -std=c++0x or -std=gnu++0x");
else if (is_partial)
msg = "default template arguments may not be used in partial specializations";
else
@@ -13178,9 +13179,11 @@ type_unification_real (tree tparms,
to explicitly check cxx_dialect here. */
if (TREE_PURPOSE (TREE_VEC_ELT (tparms, i)))
{
- tree arg = tsubst_template_arg
- (TREE_PURPOSE (TREE_VEC_ELT (tparms, i)),
- targs, tf_none, NULL_TREE);
+ tree parm = TREE_VALUE (TREE_VEC_ELT (tparms, i));
+ tree arg = TREE_PURPOSE (TREE_VEC_ELT (tparms, i));
+ arg = tsubst_template_arg (arg, targs, tf_none, NULL_TREE);
+ arg = convert_template_argument (parm, arg, targs, tf_none,
+ i, NULL_TREE);
if (arg == error_mark_node)
return 1;
else
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 6cf22204a5e..3e39f3765e1 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
static tree maybe_convert_cond (tree);
static tree finalize_nrv_r (tree *, int *, void *);
static tree capture_decltype (tree);
+static tree thisify_lambda_field (tree);
/* Deferred Access Checking Overview
@@ -1447,14 +1448,13 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
return error_mark_node;
}
- /* If decl is a field, object has a lambda type, and decl is not a member
- of that type, then we have a reference to a member of 'this' from a
+ /* If decl is a non-capture field and object has a lambda type,
+ then we have a reference to a member of 'this' from a
lambda inside a non-static member function, and we must get to decl
through the 'this' capture. If decl is not a member of that object,
either, then its access will still fail later. */
if (LAMBDA_TYPE_P (TREE_TYPE (object))
- && !same_type_ignoring_top_level_qualifiers_p (DECL_CONTEXT (decl),
- TREE_TYPE (object)))
+ && !LAMBDA_TYPE_P (DECL_CONTEXT (decl)))
object = cp_build_indirect_ref (lambda_expr_this_capture
(CLASSTYPE_LAMBDA_EXPR
(TREE_TYPE (object))),
@@ -2648,6 +2648,18 @@ outer_automatic_var_p (tree decl)
&& DECL_CONTEXT (decl) != current_function_decl);
}
+/* Returns true iff DECL is a capture field from a lambda that is not our
+ immediate context. */
+
+static bool
+outer_lambda_capture_p (tree decl)
+{
+ return (TREE_CODE (decl) == FIELD_DECL
+ && LAMBDA_TYPE_P (DECL_CONTEXT (decl))
+ && (!current_class_type
+ || !DERIVED_FROM_P (DECL_CONTEXT (decl), current_class_type)));
+}
+
/* ID_EXPRESSION is a representation of parsed, but unprocessed,
id-expression. (See cp_parser_id_expression for details.) SCOPE,
if non-NULL, is the type or namespace used to explicitly qualify
@@ -2751,7 +2763,8 @@ finish_id_expression (tree id_expression,
/* Disallow uses of local variables from containing functions, except
within lambda-expressions. */
- if (outer_automatic_var_p (decl)
+ if ((outer_automatic_var_p (decl)
+ || outer_lambda_capture_p (decl))
/* It's not a use (3.2) if we're in an unevaluated context. */
&& !cp_unevaluated_operand)
{
@@ -2759,6 +2772,7 @@ finish_id_expression (tree id_expression,
tree containing_function = current_function_decl;
tree lambda_stack = NULL_TREE;
tree lambda_expr = NULL_TREE;
+ tree initializer = decl;
/* Core issue 696: "[At the July 2009 meeting] the CWG expressed
support for an approach in which a reference to a local
@@ -2770,6 +2784,13 @@ finish_id_expression (tree id_expression,
if (DECL_INTEGRAL_CONSTANT_VAR_P (decl))
return integral_constant_value (decl);
+ if (TYPE_P (context))
+ {
+ /* Implicit capture of an explicit capture. */
+ context = lambda_function (context);
+ initializer = thisify_lambda_field (decl);
+ }
+
/* If we are in a lambda function, we can move out until we hit
1. the context,
2. a non-lambda function, or
@@ -2796,7 +2817,7 @@ finish_id_expression (tree id_expression,
{
decl = add_default_capture (lambda_stack,
/*id=*/DECL_NAME (decl),
- /*initializer=*/decl);
+ initializer);
}
else if (lambda_expr)
{
@@ -5604,6 +5625,21 @@ add_capture (tree lambda, tree id, tree initializer, bool by_reference_p,
return member;
}
+/* Given a FIELD_DECL decl belonging to a closure type, return a
+ COMPONENT_REF of it relative to the 'this' parameter of the op() for
+ that type. */
+
+static tree
+thisify_lambda_field (tree decl)
+{
+ tree context = lambda_function (DECL_CONTEXT (decl));
+ tree object = cp_build_indirect_ref (DECL_ARGUMENTS (context),
+ /*errorstring*/"",
+ tf_warning_or_error);
+ return finish_non_static_data_member (decl, object,
+ /*qualifying_scope*/NULL_TREE);
+}
+
/* Similar to add_capture, except this works on a stack of nested lambdas.
BY_REFERENCE_P in this case is derived from the default capture mode.
Returns the capture for the lambda at the bottom of the stack. */
@@ -5634,16 +5670,7 @@ add_default_capture (tree lambda_stack, tree id, tree initializer)
&& (LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda)
== CPLD_REFERENCE)),
/*explicit_init_p=*/false);
-
- {
- /* Have to get the old value of current_class_ref. */
- tree object = cp_build_indirect_ref (DECL_ARGUMENTS
- (lambda_function (lambda)),
- /*errorstring=*/"",
- /*complain=*/tf_warning_or_error);
- initializer = finish_non_static_data_member
- (member, object, /*qualifying_scope=*/NULL_TREE);
- }
+ initializer = thisify_lambda_field (member);
}
current_class_type = saved_class_type;
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 76763735b97..99ce6562070 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -2081,6 +2081,8 @@ cp_tree_equal (tree t1, tree t2)
case TEMPLATE_PARM_INDEX:
return (TEMPLATE_PARM_IDX (t1) == TEMPLATE_PARM_IDX (t2)
&& TEMPLATE_PARM_LEVEL (t1) == TEMPLATE_PARM_LEVEL (t2)
+ && (TEMPLATE_PARM_PARAMETER_PACK (t1)
+ == TEMPLATE_PARM_PARAMETER_PACK (t2))
&& same_type_p (TREE_TYPE (TEMPLATE_PARM_DECL (t1)),
TREE_TYPE (TEMPLATE_PARM_DECL (t2))));
diff --git a/gcc/cselib.c b/gcc/cselib.c
index e6e5c143dad..7065429be8b 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -585,6 +585,7 @@ rtx_equal_for_cselib_p (rtx x, rtx y)
{
case CONST_DOUBLE:
case CONST_FIXED:
+ case DEBUG_EXPR:
return 0;
case LABEL_REF:
@@ -661,6 +662,19 @@ rtx_equal_for_cselib_p (rtx x, rtx y)
return 1;
}
+/* We need to pass down the mode of constants through the hash table
+ functions. For that purpose, wrap them in a CONST of the appropriate
+ mode. */
+static rtx
+wrap_constant (enum machine_mode mode, rtx x)
+{
+ if (!CONST_INT_P (x) && GET_CODE (x) != CONST_FIXED
+ && (GET_CODE (x) != CONST_DOUBLE || GET_MODE (x) != VOIDmode))
+ return x;
+ gcc_assert (mode != VOIDmode);
+ return gen_rtx_CONST (mode, x);
+}
+
/* Hash an rtx. Return 0 if we couldn't hash the rtx.
For registers and memory locations, we look up their cselib_val structure
and return its VALUE element.
@@ -703,6 +717,11 @@ cselib_hash_rtx (rtx x, int create)
return e->value;
+ case DEBUG_EXPR:
+ hash += ((unsigned) DEBUG_EXPR << 7)
+ + DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (x));
+ return hash ? hash : (unsigned int) DEBUG_EXPR;
+
case CONST_INT:
hash += ((unsigned) CONST_INT << 7) + INTVAL (x);
return hash ? hash : (unsigned int) CONST_INT;
@@ -1213,6 +1232,13 @@ cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd,
result = expand_loc (CSELIB_VAL_PTR (orig)->locs, evd, max_depth);
return result;
}
+
+ case DEBUG_EXPR:
+ if (evd->callback)
+ return evd->callback (orig, evd->regs_active, max_depth,
+ evd->callback_arg);
+ return orig;
+
default:
break;
}
@@ -1327,21 +1353,9 @@ cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd,
default:
break;
}
- if (scopy == NULL_RTX)
- {
- XEXP (copy, 0)
- = gen_rtx_CONST (GET_MODE (XEXP (orig, 0)), XEXP (copy, 0));
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, " wrapping const_int result in const to preserve mode %s\n",
- GET_MODE_NAME (GET_MODE (XEXP (copy, 0))));
- }
scopy = simplify_rtx (copy);
if (scopy)
- {
- if (GET_MODE (copy) != GET_MODE (scopy))
- scopy = wrap_constant (GET_MODE (copy), scopy);
- return scopy;
- }
+ return scopy;
return copy;
}
@@ -1408,30 +1422,31 @@ cselib_subst_to_values (rtx x)
{
rtx t = cselib_subst_to_values (XEXP (x, i));
- if (t != XEXP (x, i) && x == copy)
- copy = shallow_copy_rtx (x);
-
- XEXP (copy, i) = t;
+ if (t != XEXP (x, i))
+ {
+ if (x == copy)
+ copy = shallow_copy_rtx (x);
+ XEXP (copy, i) = t;
+ }
}
else if (fmt[i] == 'E')
{
- int j, k;
+ int j;
for (j = 0; j < XVECLEN (x, i); j++)
{
rtx t = cselib_subst_to_values (XVECEXP (x, i, j));
- if (t != XVECEXP (x, i, j) && XVEC (x, i) == XVEC (copy, i))
+ if (t != XVECEXP (x, i, j))
{
- if (x == copy)
- copy = shallow_copy_rtx (x);
-
- XVEC (copy, i) = rtvec_alloc (XVECLEN (x, i));
- for (k = 0; k < j; k++)
- XVECEXP (copy, i, k) = XVECEXP (x, i, k);
+ if (XVEC (x, i) == XVEC (copy, i))
+ {
+ if (x == copy)
+ copy = shallow_copy_rtx (x);
+ XVEC (copy, i) = shallow_copy_rtvec (XVEC (x, i));
+ }
+ XVECEXP (copy, i, j) = t;
}
-
- XVECEXP (copy, i, j) = t;
}
}
}
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index d09087a2f2c..b5688d98cf1 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -346,6 +346,7 @@ const struct gcc_debug_hooks dbx_debug_hooks =
{
dbxout_init,
dbxout_finish,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
dbxout_start_source_file,
@@ -386,6 +387,7 @@ const struct gcc_debug_hooks xcoff_debug_hooks =
{
dbxout_init,
dbxout_finish,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
dbxout_start_source_file,
diff --git a/gcc/ddg.c b/gcc/ddg.c
index 439acd1f434..c06ea75ea2d 100644
--- a/gcc/ddg.c
+++ b/gcc/ddg.c
@@ -167,7 +167,7 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node,
t = OUTPUT_DEP;
gcc_assert (!DEBUG_INSN_P (dest_node->insn) || t == ANTI_DEP);
- gcc_assert (!DEBUG_INSN_P (src_node->insn) || DEBUG_INSN_P (dest_node->insn));
+ gcc_assert (!DEBUG_INSN_P (src_node->insn) || t == ANTI_DEP);
/* We currently choose not to create certain anti-deps edges and
compensate for that by generating reg-moves based on the life-range
@@ -213,7 +213,7 @@ create_ddg_dep_no_link (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to,
struct _dep _dep, *dep = &_dep;
gcc_assert (!DEBUG_INSN_P (to->insn) || d_t == ANTI_DEP);
- gcc_assert (!DEBUG_INSN_P (from->insn) || DEBUG_INSN_P (to->insn));
+ gcc_assert (!DEBUG_INSN_P (from->insn) || d_t == ANTI_DEP);
if (d_t == ANTI_DEP)
dep_kind = REG_DEP_ANTI;
diff --git a/gcc/debug.c b/gcc/debug.c
index 8035c43ca4a..c413595078b 100644
--- a/gcc/debug.c
+++ b/gcc/debug.c
@@ -27,6 +27,7 @@ const struct gcc_debug_hooks do_nothing_debug_hooks =
{
debug_nothing_charstar,
debug_nothing_charstar,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
diff --git a/gcc/debug.h b/gcc/debug.h
index 4009cd6a93b..ef611d43572 100644
--- a/gcc/debug.h
+++ b/gcc/debug.h
@@ -31,6 +31,10 @@ struct gcc_debug_hooks
/* Output debug symbols. */
void (* finish) (const char *main_filename);
+ /* Called from cgraph_optimize before starting to assemble
+ functions/variables/toplevel asms. */
+ void (* assembly_start) (void);
+
/* Macro defined on line LINE with name and expansion TEXT. */
void (* define) (unsigned int line, const char *text);
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 6f0955577c3..a0f66214e3f 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -2679,6 +2679,14 @@ when targeting Windows. On all other systems, the default is the AMD ABI.
Note, This feature is currently sorried out for Windows targets trying to
+@item ms_hook_prologue
+@cindex @code{ms_hook_prologue} attribute
+
+On 32 bit i[34567]86-*-* targets, you can use this function attribute to make
+gcc generate the "hot-patching" function prologue used in Win32 API
+functions in Microsoft Windows XP Service Pack 2 and newer. This requires
+support for the swap suffix in the assembler. (GNU Binutils 2.19.51 or later)
+
@item naked
@cindex function without a prologue/epilogue code
Use this attribute on the ARM, AVR, IP2K and SPU ports to indicate that
@@ -9732,7 +9740,7 @@ storing the value 32767 if the result overflows.
@item int __builtin_subs (int @var{x}, int @var{y})
Saturating subtraction. Return the result of subtracting @var{y} from
-@var{x}, storing the value -32768 if the result overflows.
+@var{x}, storing the value @minus{}32768 if the result overflows.
@item void __builtin_halt (void)
Halt. The processor will stop execution. This built-in is useful for
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 73d8dedaacf..c04f9cb65d5 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1346,8 +1346,10 @@ powerpc-linux for powerpc64-linux, only generates 32-bit code. This
option enables the 32-bit target to be a bi-arch compiler, which is
useful when you want a bi-arch compiler that defaults to 32-bit, and
you are building a bi-arch or multi-arch binutils in a combined tree.
-Currently, this option only affects sparc-linux, powerpc-linux and
-x86-linux.
+On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
+defaulted to o32.
+Currently, this option only affects sparc-linux, powerpc-linux, x86-linux
+and mips-linux.
@item --enable-secureplt
This option enables @option{-msecure-plt} by default for powerpc-linux.
@@ -1882,6 +1884,9 @@ not specified, then the Python modules are installed in $(prefix)/share/python.
@item --enable-aot-compile-rpm
Adds aot-compile-rpm to the list of installed scripts.
+@item --enable-browser-plugin
+Build the gcjwebplugin web browser plugin.
+
@table @code
@item ansi
Use the single-byte @code{char} and the Win32 A functions natively,
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3f131fd02b4..7b20ced5483 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -321,7 +321,7 @@ Objective-C and Objective-C++ Dialects}.
-femit-struct-debug-baseonly -femit-struct-debug-reduced @gol
-femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]} @gol
-p -pg -print-file-name=@var{library} -print-libgcc-file-name @gol
--print-multi-directory -print-multi-lib @gol
+-print-multi-directory -print-multi-lib -print-multi-os-directory @gol
-print-prog-name=@var{program} -print-search-dirs -Q @gol
-print-sysroot -print-sysroot-headers-suffix @gol
-save-temps -save-temps=cwd -save-temps=obj -time@r{[}=@var{file}@r{]}}
@@ -346,7 +346,8 @@ Objective-C and Objective-C++ Dialects}.
-finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg -fipa-pta @gol
-fipa-pure-const -fipa-reference -fipa-struct-reorg @gol
-fipa-type-escape -fira-algorithm=@var{algorithm} @gol
--fira-region=@var{region} -fira-coalesce -fno-ira-share-save-slots @gol
+-fira-region=@var{region} -fira-coalesce @gol
+-fira-loop-pressure -fno-ira-share-save-slots @gol
-fno-ira-share-spill-slots -fira-verbose=@var{n} @gol
-fivopts -fkeep-inline-functions -fkeep-static-consts @gol
-floop-block -floop-interchange -floop-strip-mine -fgraphite-identity @gol
@@ -5530,6 +5531,16 @@ that enable them. The directory name is separated from the switches by
@samp{-}, without spaces between multiple switches. This is supposed to
ease shell-processing.
+@item -print-multi-os-directory
+@opindex print-multi-os-directory
+Print the path to OS libraries for the selected
+multilib, relative to some @file{lib} subdirectory. If OS libraries are
+present in the @file{lib} subdirectory and no multilibs are used, this is
+usually just @file{.}, if OS libraries are present in @file{lib@var{suffix}}
+sibling directories this prints e.g.@: @file{../lib64}, @file{../lib} or
+@file{../lib32}, or if OS libraries are present in @file{lib/@var{subdir}}
+subdirectories it prints e.g.@: @file{amd64}, @file{sparcv9} or @file{ev6}.
+
@item -print-prog-name=@var{program}
@opindex print-prog-name
Like @option{-print-file-name}, but searches for a program such as @samp{cpp}.
@@ -5627,6 +5638,9 @@ each of them.
Not all optimizations are controlled directly by a flag. Only
optimizations that have a flag are listed in this section.
+Most of the optimizations are not enabled if a @option{-O} level is not set on
+the command line, even if individual optimization flags are specified.
+
Depending on the target and how GCC was configured, a slightly different
set of optimizations may be enabled at each @option{-O} level than
those listed here. You can invoke GCC with @samp{-Q --help=optimizers}
@@ -6216,6 +6230,15 @@ give the best results in most cases and for most architectures.
Do optimistic register coalescing. This option might be profitable for
architectures with big regular register files.
+@item -fira-loop-pressure
+@opindex fira-loop-pressure
+Use IRA to evaluate register pressure in loops for decision to move
+loop invariants. Usage of this option usually results in generation
+of faster and smaller code on machines with big register files (>= 32
+registers) but it can slow compiler down.
+
+This option is enabled at level @option{-O3} for some targets.
+
@item -fno-ira-share-save-slots
@opindex fno-ira-share-save-slots
Switch off sharing stack slots used for saving call used hard
@@ -8387,6 +8410,14 @@ lower quality register allocation algorithm will be used. The
algorithm do not use pseudo-register conflicts. The default value of
the parameter is 2000.
+@item ira-loop-reserved-regs
+IRA can be used to evaluate more accurate register pressure in loops
+for decision to move loop invariants (see @option{-O3}). The number
+of available registers reserved for some other purposes is described
+by this parameter. The default value of the parameter is 2 which is
+minimal number of registers needed for execution of typical
+instruction. This value is the best found from numerous experiments.
+
@item loop-invariant-max-bbs-in-loop
Loop invariant motion can be very expensive, both in compile time and
in amount of needed compile time memory, with very large loops. Loops
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index 69a23b693b4..8a1a389924c 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -1756,7 +1756,7 @@ Constant integer 1
A floating point constant 0.0
@item R
-Integer constant in the range -6 @dots{} 5.
+Integer constant in the range @minus{}6 @dots{} 5.
@item Q
A memory address based on Y or Z pointer with displacement.
@@ -1787,7 +1787,7 @@ Constant that fits in 4 bits
Constant that fits in 5 bits
@item L
-Constant that is one of -1, 4, -4, 7, 8, 12, 16, 20, 32, 48
+Constant that is one of @minus{}1, 4, @minus{}4, 7, 8, 12, 16, 20, 32, 48
@item G
Floating point constant that is legal for store immediate
@@ -2381,13 +2381,13 @@ RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP.
Any register except accumulators or CC.
@item Ksh
-Signed 16 bit integer (in the range -32768 to 32767)
+Signed 16 bit integer (in the range @minus{}32768 to 32767)
@item Kuh
Unsigned 16 bit integer (in the range 0 to 65535)
@item Ks7
-Signed 7 bit integer (in the range -64 to 63)
+Signed 7 bit integer (in the range @minus{}64 to 63)
@item Ku7
Unsigned 7 bit integer (in the range 0 to 127)
@@ -2396,10 +2396,10 @@ Unsigned 7 bit integer (in the range 0 to 127)
Unsigned 5 bit integer (in the range 0 to 31)
@item Ks4
-Signed 4 bit integer (in the range -8 to 7)
+Signed 4 bit integer (in the range @minus{}8 to 7)
@item Ks3
-Signed 3 bit integer (in the range -3 to 4)
+Signed 3 bit integer (in the range @minus{}3 to 4)
@item Ku3
Unsigned 3 bit integer (in the range 0 to 7)
@@ -2511,28 +2511,28 @@ Matches multiple registers in a PARALLEL to form a larger register.
Used to match function return values.
@item Is3
--8 @dots{} 7
+@minus{}8 @dots{} 7
@item IS1
--128 @dots{} 127
+@minus{}128 @dots{} 127
@item IS2
--32768 @dots{} 32767
+@minus{}32768 @dots{} 32767
@item IU2
0 @dots{} 65535
@item In4
--8 @dots{} -1 or 1 @dots{} 8
+@minus{}8 @dots{} @minus{}1 or 1 @dots{} 8
@item In5
--16 @dots{} -1 or 1 @dots{} 16
+@minus{}16 @dots{} @minus{}1 or 1 @dots{} 16
@item In6
--32 @dots{} -1 or 1 @dots{} 32
+@minus{}32 @dots{} @minus{}1 or 1 @dots{} 32
@item IM2
--65536 @dots{} -1
+@minus{}65536 @dots{} @minus{}1
@item Ilb
An 8 bit value with exactly one bit set.
@@ -2717,7 +2717,7 @@ A constant that cannot be loaded using @code{lui}, @code{addiu}
or @code{ori}.
@item N
-A constant in the range -65535 to -1 (inclusive).
+A constant in the range @minus{}65535 to @minus{}1 (inclusive).
@item O
A signed 15-bit constant.
@@ -2893,7 +2893,7 @@ A register indirect memory operand
A constant in the range of 0 to 255.
@item N
-A constant in the range of 0 to -255.
+A constant in the range of 0 to @minus{}255.
@end table
@@ -3012,7 +3012,7 @@ An immediate for and/xor/or instructions. const_int is treated as a 32 bit valu
An immediate for the @code{iohl} instruction. const_int is treated as a 32 bit value.
@item I
-A constant in the range [-64, 63] for shift/rotate instructions.
+A constant in the range [@minus{}64, 63] for shift/rotate instructions.
@item J
An unsigned 7-bit constant for conversion/nop/channel instructions.
@@ -3083,7 +3083,7 @@ Value appropriate as displacement.
@table @code
@item (0..4095)
for short displacement
-@item (-524288..524287)
+@item (@minus{}524288..524287)
for long displacement
@end table
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index ba72b48096b..e28ba032cdd 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -2364,9 +2364,14 @@ Similar but represent left and right rotate. If @var{c} is a constant,
use @code{rotate}.
@findex abs
+@findex ss_abs
@cindex absolute value
@item (abs:@var{m} @var{x})
+@item (ss_abs:@var{m} @var{x})
Represents the absolute value of @var{x}, computed in mode @var{m}.
+@code{ss_abs} ensures that an out-of-bounds result saturates to the
+maximum signed value.
+
@findex sqrt
@cindex square root
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index db42742e9e2..805ebf2b3ab 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -2349,6 +2349,11 @@ with it, as well as defining these macros.
Define this if the machine has any stack-like registers.
@end defmac
+@defmac STACK_REG_COVER_CLASS
+This is a cover class containing the stack registers. Define this if
+the machine has any stack-like registers.
+@end defmac
+
@defmac FIRST_STACK_REG
The number of the first stack-like register. This one is the top
of the stack.
@@ -4394,7 +4399,7 @@ compiled.
@end defmac
@deftypefn {Target Hook} rtx TARGET_LIBCALL_VALUE (enum machine_mode
-@var{mode}, rtx @var{fun})
+@var{mode}, const_rtx @var{fun})
Define this hook if the back-end needs to know the name of the libcall
function in order to determine where the result should be returned.
@@ -5628,7 +5633,7 @@ should comply with the semantics expected by @code{REALIGN_LOAD}
described above.
If this hook is not defined, then @var{addr} will be used as
the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low
-log2(@var{VS})-1 bits of @var{addr} will be considered.
+log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered.
@end deftypefn
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree @var{x})
@@ -6610,7 +6615,7 @@ speculative dependencies and therefore can be scheduled speculatively.
The hook is used to check if the pattern of @var{insn} has a speculative
version and, in case of successful check, to generate that speculative
pattern. The hook should return 1, if the instruction has a speculative form,
-or -1, if it doesn't. @var{request} describes the type of requested
+or @minus{}1, if it doesn't. @var{request} describes the type of requested
speculation. If the return value equals 1 then @var{new_pat} is assigned
the generated speculative pattern.
@end deftypefn
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index a8d0048e17f..ba59251d66b 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -5401,6 +5401,7 @@ static int output_indirect_string (void **, void *);
static void dwarf2out_init (const char *);
static void dwarf2out_finish (const char *);
+static void dwarf2out_assembly_start (void);
static void dwarf2out_define (unsigned int, const char *);
static void dwarf2out_undef (unsigned int, const char *);
static void dwarf2out_start_source_file (unsigned, const char *);
@@ -5427,6 +5428,7 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
{
dwarf2out_init,
dwarf2out_finish,
+ dwarf2out_assembly_start,
dwarf2out_define,
dwarf2out_undef,
dwarf2out_start_source_file,
@@ -6478,6 +6480,10 @@ dwarf_tag_name (unsigned int tag)
return "DW_TAG_shared_type";
case DW_TAG_type_unit:
return "DW_TAG_type_unit";
+ case DW_TAG_rvalue_reference_type:
+ return "DW_TAG_rvalue_reference_type";
+ case DW_TAG_template_alias:
+ return "DW_TAG_template_alias";
case DW_TAG_GNU_template_parameter_pack:
return "DW_TAG_GNU_template_parameter_pack";
case DW_TAG_GNU_formal_parameter_pack:
@@ -6662,6 +6668,16 @@ dwarf_attr_name (unsigned int attr)
case DW_AT_signature:
return "DW_AT_signature";
+ case DW_AT_main_subprogram:
+ return "DW_AT_main_subprogram";
+ case DW_AT_data_bit_offset:
+ return "DW_AT_data_bit_offset";
+ case DW_AT_const_expr:
+ return "DW_AT_const_expr";
+ case DW_AT_enum_class:
+ return "DW_AT_enum_class";
+ case DW_AT_linkage_name:
+ return "DW_AT_linkage_name";
case DW_AT_MIPS_fde:
return "DW_AT_MIPS_fde";
@@ -6700,6 +6716,22 @@ dwarf_attr_name (unsigned int attr)
return "DW_AT_body_end";
case DW_AT_GNU_vector:
return "DW_AT_GNU_vector";
+ case DW_AT_GNU_guarded_by:
+ return "DW_AT_GNU_guarded_by";
+ case DW_AT_GNU_pt_guarded_by:
+ return "DW_AT_GNU_pt_guarded_by";
+ case DW_AT_GNU_guarded:
+ return "DW_AT_GNU_guarded";
+ case DW_AT_GNU_pt_guarded:
+ return "DW_AT_GNU_pt_guarded";
+ case DW_AT_GNU_locks_excluded:
+ return "DW_AT_GNU_locks_excluded";
+ case DW_AT_GNU_exclusive_locks_required:
+ return "DW_AT_GNU_exclusive_locks_required";
+ case DW_AT_GNU_shared_locks_required:
+ return "DW_AT_GNU_shared_locks_required";
+ case DW_AT_GNU_odr_signature:
+ return "DW_AT_GNU_odr_signature";
case DW_AT_GNU_template_name:
return "DW_AT_GNU_template_name";
@@ -6760,6 +6792,14 @@ dwarf_form_name (unsigned int form)
return "DW_FORM_ref_udata";
case DW_FORM_indirect:
return "DW_FORM_indirect";
+ case DW_FORM_sec_offset:
+ return "DW_FORM_sec_offset";
+ case DW_FORM_exprloc:
+ return "DW_FORM_exprloc";
+ case DW_FORM_flag_present:
+ return "DW_FORM_flag_present";
+ case DW_FORM_ref_sig8:
+ return "DW_FORM_ref_sig8";
default:
return "DW_FORM_<unknown>";
}
@@ -10352,7 +10392,7 @@ output_signature (const char *sig, const char *name)
int i;
for (i = 0; i < DWARF_TYPE_SIGNATURE_SIZE; i++)
- dw2_asm_output_data (1, sig[i], "%s", name);
+ dw2_asm_output_data (1, sig[i], i == 0 ? "%s" : NULL, name);
}
/* Output the DIE and its attributes. Called recursively to generate
@@ -10573,7 +10613,7 @@ output_die (dw_die_ref die)
for (i = 0; i < 8; i++)
dw2_asm_output_data (1, a->dw_attr_val.v.val_data8[i],
- "%s", name);
+ i == 0 ? "%s" : NULL, name);
break;
}
@@ -12856,10 +12896,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case POST_INC:
case POST_DEC:
case POST_MODIFY:
- /* POST_INC and POST_DEC can be handled just like a SUBREG. So we
- just fall into the SUBREG code. */
-
- /* ... fall through ... */
+ return mem_loc_descriptor (XEXP (rtl, 0), mode, initialized);
case SUBREG:
/* The case of a subreg may arise when we have a local (register)
@@ -12867,9 +12904,13 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
up an entire register. For now, just assume that it is
legitimate to make the Dwarf info refer to the whole register which
contains the given subreg. */
- rtl = XEXP (rtl, 0);
+ if (!subreg_lowpart_p (rtl))
+ break;
+ rtl = SUBREG_REG (rtl);
if (GET_MODE_SIZE (GET_MODE (rtl)) > DWARF2_ADDR_SIZE)
break;
+ if (GET_MODE_CLASS (GET_MODE (rtl)) != MODE_INT)
+ break;
mem_loc_result = mem_loc_descriptor (rtl, mode, initialized);
break;
@@ -13354,12 +13395,19 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
if (BITS_BIG_ENDIAN)
shift = GET_MODE_BITSIZE (GET_MODE (XEXP (rtl, 0)))
- shift - size;
- add_loc_descr (&mem_loc_result,
- int_loc_descriptor (DWARF2_ADDR_SIZE - shift - size));
- add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
- add_loc_descr (&mem_loc_result,
- int_loc_descriptor (DWARF2_ADDR_SIZE - size));
- add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
+ if (shift + size != (int) DWARF2_ADDR_SIZE)
+ {
+ add_loc_descr (&mem_loc_result,
+ int_loc_descriptor (DWARF2_ADDR_SIZE
+ - shift - size));
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
+ }
+ if (size != (int) DWARF2_ADDR_SIZE)
+ {
+ add_loc_descr (&mem_loc_result,
+ int_loc_descriptor (DWARF2_ADDR_SIZE - size));
+ add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
+ }
}
break;
@@ -13381,6 +13429,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case ORDERED:
case UNEQ:
case UNGE:
+ case UNGT:
case UNLE:
case UNLT:
case LTGT:
@@ -20012,8 +20061,7 @@ dwarf2out_var_location (rtx loc_note)
ASM_OUTPUT_DEBUG_LABEL (asm_out_file, "LVL", loclabel_num);
loclabel_num++;
last_label = ggc_strdup (loclabel);
- if (!NOTE_DURING_CALL_P (loc_note))
- last_postcall_label = NULL;
+ last_postcall_label = NULL;
}
newloc->var_loc_note = loc_note;
newloc->next = NULL;
@@ -20346,6 +20394,14 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED)
ASM_OUTPUT_LABEL (asm_out_file, cold_text_section_label);
}
+}
+
+/* Called before cgraph_optimize starts outputtting functions, variables
+ and toplevel asms into assembly. */
+
+static void
+dwarf2out_assembly_start (void)
+{
if (HAVE_GAS_CFI_SECTIONS_DIRECTIVE && dwarf2out_do_cfi_asm ())
{
#ifndef TARGET_UNWIND_INFO
@@ -21228,6 +21284,7 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
{
0, /* init */
0, /* finish */
+ 0, /* assembly_start */
0, /* define */
0, /* undef */
0, /* start_source_file */
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index b3672e3e5ad..b8682984eca 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -2393,6 +2393,8 @@ verify_rtx_sharing (rtx orig, rtx insn)
switch (code)
{
case REG:
+ case DEBUG_EXPR:
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
@@ -2593,6 +2595,8 @@ repeat:
switch (code)
{
case REG:
+ case DEBUG_EXPR:
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
@@ -2712,6 +2716,8 @@ repeat:
switch (code)
{
case REG:
+ case DEBUG_EXPR:
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
@@ -2783,6 +2789,8 @@ set_used_flags (rtx x)
switch (code)
{
case REG:
+ case DEBUG_EXPR:
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5082c0a8d72..bc4ecb03d3e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,140 @@
+2009-10-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41800
+ * trans-expr.c (gfc_trans_scalar_assign): Handle CLASS variables.
+
+2009-10-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41758
+ * match.c (conformable_arrays): Move to resolve.c.
+ (gfc_match_allocate): Don't resolve SOURCE expr yet, and move some
+ checks to resolve_allocate_expr.
+ * resolve.c (conformable_arrays): Moved here from match.c.
+ (resolve_allocate_expr): Moved some checks here from gfc_match_allocate.
+ (resolve_code): Resolve SOURCE tag for ALLOCATE expressions.
+
+2009-10-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41781
+ * resolve.c (resolve_codes): Don't clear 'cs_base' for BLOCK constructs,
+ to make sure labels are treated correctly.
+ * symbol.c (gfc_get_st_label): Create labels in the right namespace.
+ For BLOCK constructs go into the parent namespace.
+
+2009-10-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41706
+ PR fortran/41766
+ * match.c (select_type_set_tmp): Set flavor for temporary.
+ * resolve.c (resolve_class_typebound_call): Correctly resolve actual
+ arguments.
+
+2009-10-20 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41706
+ * resolve.c (resolve_arg_exprs): New function.
+ (resolve_class_compcall): Call the above.
+ (resolve_class_typebound_call): The same.
+
+2009-10-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41586
+ * parse.c (parse_derived): Correctly set 'alloc_comp' and 'pointer_comp'
+ for CLASS variables.
+ * trans-array.c (structure_alloc_comps): Handle deallocation and
+ nullification of allocatable scalar components.
+ * trans-decl.c (gfc_get_symbol_decl): Remember allocatable scalars for
+ automatic deallocation.
+ (gfc_trans_deferred_vars): Automatically deallocate allocatable scalars.
+
+2009-10-19 Tobias Burnus <burnus@net-b.de>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/41755
+ * symbol.c (gfc_undo_symbols): Add NULL check.
+ * match.c (gfc_match_equivalence): Add check for
+ missing comma.
+
+2009-10-19 Richard Guenther <rguenther@suse.de>
+
+ PR fortran/41494
+ * trans-expr.c (gfc_trans_scalar_assign): Do not call
+ gfc_evaluate_now.
+
+2009-10-17 Janus Weil <janus@gcc.gnu.org>
+ Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41608
+ * decl.c (gfc_match_data_decl): Add BT_CLASS for undefined type
+ and empty type errors.
+ * parse.c (gfc_build_block_ns): Only set recursive if parent ns
+ has a proc_name.
+
+ PR fortran/41629
+ PR fortran/41618
+ PR fortran/41587
+ * gfortran.h : Add class_ok bitfield to symbol_attr.
+ * decl.c (build_sym): Set attr.class_ok if dummy, pointer or
+ allocatable.
+ (build_struct): Use gfc_try 't' to carry errors past the call
+ to encapsulate_class_symbol.
+ (attr_decl1): For a CLASS object, apply the new attribute to
+ the data component.
+ * match.c (gfc_match_select_type): Set attr.class_ok for an
+ assigned selector.
+ * resolve.c (resolve_fl_variable_derived): Check a CLASS object
+ is dummy, pointer or allocatable by testing the class_ok and
+ the use_assoc attribute.
+
+2009-10-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41719
+ * resolve.c (resolve_ordinary_assign): Reject intrinsic assignments
+ to polymorphic variables.
+
+2009-10-16 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41648
+ PR fortran/41656
+ * trans-expr.c (select_class_proc): Convert the expression for the
+ vindex, carried on the first member of the esym list.
+ * gfortran.h : Add the vindex field to the esym_list structure.
+ and eliminate the class_object field.
+ * resolve.c (check_class_members): Remove the setting of the
+ class_object field.
+ (vindex_expr): New function.
+ (get_class_from_expr): New function.
+ (resolve_class_compcall): Call the above to find the ultimate
+ class or derived component. If derived, do not generate the
+ esym list. Add and expression for the vindex to the esym list
+ by calling the above.
+ (resolve_class_typebound_call): The same.
+
+2009-10-15 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/41712
+ * intrinsic.texi: Explicitly state that ETIME and DTIME take
+ REAL(4) arguments. Fix nearby typographically errors where
+ /leq was used instead of \leq.
+
+2009-10-13 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41581
+ * decl.c (encapsulate_class_symbol): Add new component '$size'.
+ * resolve.c (resolve_allocate_expr): Move CLASS handling to
+ gfc_trans_allocate.
+ (resolve_class_assign): Replaced by gfc_trans_class_assign.
+ (resolve_code): Remove calls to resolve_class_assign.
+ * trans.c (gfc_trans_code): Use new function gfc_trans_class_assign.
+ * trans-expr.c (get_proc_ptr_comp): Fix a memory leak.
+ (gfc_conv_procedure_call): For CLASS dummies, set the
+ $size component.
+ (gfc_trans_class_assign): New function, replacing resolve_class_assign.
+ * trans-stmt.h (gfc_trans_class_assign): New prototype.
+ * trans-stmt.c (gfc_trans_allocate): Use correct size when allocating
+ CLASS variables. Do proper initialization. Move some code here from
+ resolve_allocate_expr.
+
2009-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/38439
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 69449a32ce9..08d2bd69ddf 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -1028,7 +1028,8 @@ verify_c_interop_param (gfc_symbol *sym)
/* Build a polymorphic CLASS entity, using the symbol that comes from build_sym.
A CLASS entity is represented by an encapsulating type, which contains the
declared type as '$data' component, plus an integer component '$vindex'
- which determines the dynamic type. */
+ which determines the dynamic type, and another integer '$size', which
+ contains the size of the dynamic type structure. */
static gfc_try
encapsulate_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
@@ -1089,6 +1090,14 @@ encapsulate_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
c->ts.kind = 4;
c->attr.access = ACCESS_PRIVATE;
c->initializer = gfc_int_expr (0);
+
+ /* Add component '$size'. */
+ if (gfc_add_component (fclass, "$size", &c) == FAILURE)
+ return FAILURE;
+ c->ts.type = BT_INTEGER;
+ c->ts.kind = 4;
+ c->attr.access = ACCESS_PRIVATE;
+ c->initializer = gfc_int_expr (0);
}
fclass->attr.extension = 1;
@@ -1172,7 +1181,12 @@ build_sym (const char *name, gfc_charlen *cl,
sym->attr.implied_index = 0;
if (sym->ts.type == BT_CLASS)
- encapsulate_class_symbol (&sym->ts, &sym->attr, &sym->as);
+ {
+ sym->attr.class_ok = (sym->attr.dummy
+ || sym->attr.pointer
+ || sym->attr.allocatable) ? 1 : 0;
+ encapsulate_class_symbol (&sym->ts, &sym->attr, &sym->as);
+ }
return SUCCESS;
}
@@ -1463,6 +1477,7 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
gfc_array_spec **as)
{
gfc_component *c;
+ gfc_try t = SUCCESS;
/* F03:C438/C439. If the current symbol is of the same derived type that we're
constructing, it must have the pointer attribute. */
@@ -1545,12 +1560,9 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
}
}
- if (c->ts.type == BT_CLASS)
- encapsulate_class_symbol (&c->ts, &c->attr, &c->as);
-
/* Check array components. */
if (!c->attr.dimension)
- return SUCCESS;
+ goto scalar;
if (c->attr.pointer)
{
@@ -1558,7 +1570,7 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
{
gfc_error ("Pointer array component of structure at %C must have a "
"deferred shape");
- return FAILURE;
+ t = FAILURE;
}
}
else if (c->attr.allocatable)
@@ -1567,7 +1579,7 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
{
gfc_error ("Allocatable component of structure at %C must have a "
"deferred shape");
- return FAILURE;
+ t = FAILURE;
}
}
else
@@ -1576,11 +1588,15 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
{
gfc_error ("Array component of structure at %C must have an "
"explicit shape");
- return FAILURE;
+ t = FAILURE;
}
}
- return SUCCESS;
+scalar:
+ if (c->ts.type == BT_CLASS)
+ encapsulate_class_symbol (&c->ts, &c->attr, &c->as);
+
+ return t;
}
@@ -3752,7 +3768,8 @@ gfc_match_data_decl (void)
if (m != MATCH_YES)
return m;
- if (current_ts.type == BT_DERIVED && gfc_current_state () != COMP_DERIVED)
+ if ((current_ts.type == BT_DERIVED || current_ts.type == BT_CLASS)
+ && gfc_current_state () != COMP_DERIVED)
{
sym = gfc_use_derived (current_ts.u.derived);
@@ -3772,7 +3789,8 @@ gfc_match_data_decl (void)
goto cleanup;
}
- if (current_ts.type == BT_DERIVED && current_ts.u.derived->components == NULL
+ if ((current_ts.type == BT_DERIVED || current_ts.type == BT_CLASS)
+ && current_ts.u.derived->components == NULL
&& !current_ts.u.derived->attr.zero_comp)
{
@@ -5685,13 +5703,31 @@ attr_decl1 (void)
}
}
- /* Update symbol table. DIMENSION attribute is set
- in gfc_set_array_spec(). */
- if (current_attr.dimension == 0
- && gfc_copy_attr (&sym->attr, &current_attr, &var_locus) == FAILURE)
+ /* Update symbol table. DIMENSION attribute is set in
+ gfc_set_array_spec(). For CLASS variables, this must be applied
+ to the first component, or '$data' field. */
+ if (sym->ts.type == BT_CLASS && sym->ts.u.derived)
{
- m = MATCH_ERROR;
- goto cleanup;
+ gfc_component *comp;
+ comp = gfc_find_component (sym->ts.u.derived, "$data", true, true);
+ if (comp == NULL || gfc_copy_attr (&comp->attr, &current_attr,
+ &var_locus) == FAILURE)
+ {
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
+ sym->attr.class_ok = (sym->attr.class_ok
+ || current_attr.allocatable
+ || current_attr.pointer);
+ }
+ else
+ {
+ if (current_attr.dimension == 0
+ && gfc_copy_attr (&sym->attr, &current_attr, &var_locus) == FAILURE)
+ {
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
}
if (gfc_set_array_spec (sym, as, &var_locus) == FAILURE)
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index c602600165b..74a31d2661c 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -672,6 +672,7 @@ typedef struct
unsigned is_bind_c:1; /* say if is bound to C. */
unsigned extension:1; /* extends a derived type. */
unsigned is_class:1; /* is a CLASS container. */
+ unsigned class_ok:1; /* is a CLASS object with correct attributes. */
/* These flags are both in the typespec and attribute. The attribute
list is what gets read from/written to a module file. The typespec
@@ -1598,7 +1599,7 @@ typedef struct gfc_class_esym_list
{
gfc_symbol *derived;
gfc_symbol *esym;
- gfc_symbol *class_object;
+ struct gfc_expr *vindex;
struct gfc_class_esym_list *next;
}
gfc_class_esym_list;
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 2c993b9048a..3aa16b0f860 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -2744,7 +2744,7 @@ Inverse function: @ref{ACOSH}
@code{COUNT(MASK [, DIM [, KIND]])} counts the number of @code{.TRUE.}
elements of @var{MASK} along the dimension of @var{DIM}. If @var{DIM} is
omitted it is taken to be @code{1}. @var{DIM} is a scalar of type
-@code{INTEGER} in the range of @math{1 /leq DIM /leq n)} where @math{n}
+@code{INTEGER} in the range of @math{1 \leq DIM \leq n)} where @math{n}
is the rank of @var{MASK}.
@item @emph{Standard}:
@@ -2864,7 +2864,7 @@ end program test_cpu_time
@code{CSHIFT(ARRAY, SHIFT [, DIM])} performs a circular shift on elements of
@var{ARRAY} along the dimension of @var{DIM}. If @var{DIM} is omitted it is
taken to be @code{1}. @var{DIM} is a scalar of type @code{INTEGER} in the
-range of @math{1 /leq DIM /leq n)} where @math{n} is the rank of @var{ARRAY}.
+range of @math{1 \leq DIM \leq n)} where @math{n} is the rank of @var{ARRAY}.
If the rank of @var{ARRAY} is one, then all elements of @var{ARRAY} are shifted
by @var{SHIFT} places. If rank is greater than one, then all complete rank one
sections of @var{ARRAY} along the given dimension are shifted. Elements
@@ -3458,8 +3458,8 @@ Subroutine, function
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
-@item @var{VALUES}@tab The type shall be @code{REAL, DIMENSION(2)}.
-@item @var{TIME}@tab The type shall be @code{REAL}.
+@item @var{VALUES}@tab The type shall be @code{REAL(4), DIMENSION(2)}.
+@item @var{TIME}@tab The type shall be @code{REAL(4)}.
@end multitable
@item @emph{Return value}:
@@ -3503,7 +3503,7 @@ end program test_dtime
@code{EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])} performs an end-off shift on
elements of @var{ARRAY} along the dimension of @var{DIM}. If @var{DIM} is
omitted it is taken to be @code{1}. @var{DIM} is a scalar of type
-@code{INTEGER} in the range of @math{1 /leq DIM /leq n)} where @math{n} is the
+@code{INTEGER} in the range of @math{1 \leq DIM \leq n)} where @math{n} is the
rank of @var{ARRAY}. If the rank of @var{ARRAY} is one, then all elements of
@var{ARRAY} are shifted by @var{SHIFT} places. If rank is greater than one,
then all complete rank one sections of @var{ARRAY} along the given dimension are
@@ -3767,8 +3767,8 @@ Subroutine, function
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
-@item @var{VALUES}@tab The type shall be @code{REAL, DIMENSION(2)}.
-@item @var{TIME}@tab The type shall be @code{REAL}.
+@item @var{VALUES}@tab The type shall be @code{REAL(4), DIMENSION(2)}.
+@item @var{TIME}@tab The type shall be @code{REAL(4)}.
@end multitable
@item @emph{Return value}:
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 3542944a50b..24e292bd4d6 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -2388,58 +2388,6 @@ char_selector:
}
-/* Used in gfc_match_allocate to check that a allocation-object and
- a source-expr are conformable. This does not catch all possible
- cases; in particular a runtime checking is needed. */
-
-static gfc_try
-conformable_arrays (gfc_expr *e1, gfc_expr *e2)
-{
- /* First compare rank. */
- if (e2->ref && e1->rank != e2->ref->u.ar.as->rank)
- {
- gfc_error ("Source-expr at %L must be scalar or have the "
- "same rank as the allocate-object at %L",
- &e1->where, &e2->where);
- return FAILURE;
- }
-
- if (e1->shape)
- {
- int i;
- mpz_t s;
-
- mpz_init (s);
-
- for (i = 0; i < e1->rank; i++)
- {
- if (e2->ref->u.ar.end[i])
- {
- mpz_set (s, e2->ref->u.ar.end[i]->value.integer);
- mpz_sub (s, s, e2->ref->u.ar.start[i]->value.integer);
- mpz_add_ui (s, s, 1);
- }
- else
- {
- mpz_set (s, e2->ref->u.ar.start[i]->value.integer);
- }
-
- if (mpz_cmp (e1->shape[i], s) != 0)
- {
- gfc_error ("Source-expr at %L and allocate-object at %L must "
- "have the same shape", &e1->where, &e2->where);
- mpz_clear (s);
- return FAILURE;
- }
- }
-
- mpz_clear (s);
- }
-
- return SUCCESS;
-}
-
-
/* Match an ALLOCATE statement. */
match
@@ -2620,7 +2568,7 @@ alloc_opt_list:
goto cleanup;
}
- /* The next 3 conditionals check C631. */
+ /* The next 2 conditionals check C631. */
if (ts.type != BT_UNKNOWN)
{
gfc_error ("SOURCE tag at %L conflicts with the typespec at %L",
@@ -2635,28 +2583,6 @@ alloc_opt_list:
goto cleanup;
}
- gfc_resolve_expr (tmp);
-
- if (!gfc_type_compatible (&head->expr->ts, &tmp->ts))
- {
- gfc_error ("Type of entity at %L is type incompatible with "
- "source-expr at %L", &head->expr->where, &tmp->where);
- goto cleanup;
- }
-
- /* Check C633. */
- if (tmp->ts.kind != head->expr->ts.kind)
- {
- gfc_error ("The allocate-object at %L and the source-expr at %L "
- "shall have the same kind type parameter",
- &head->expr->where, &tmp->where);
- goto cleanup;
- }
-
- /* Check C632 and restriction following Note 6.18. */
- if (tmp->rank > 0 && conformable_arrays (tmp, head->expr) == FAILURE)
- goto cleanup;
-
source = tmp;
saw_source = true;
@@ -3750,7 +3676,10 @@ gfc_match_equivalence (void)
if (gfc_match_eos () == MATCH_YES)
break;
if (gfc_match_char (',') != MATCH_YES)
- goto syntax;
+ {
+ gfc_error ("Expecting a comma in EQUIVALENCE at %C");
+ goto cleanup;
+ }
}
return MATCH_YES;
@@ -4044,9 +3973,10 @@ select_type_set_tmp (gfc_typespec *ts)
sprintf (name, "tmp$%s", ts->u.derived->name);
gfc_get_sym_tree (name, gfc_current_ns, &tmp, false);
- tmp->n.sym->ts = *ts;
- tmp->n.sym->attr.referenced = 1;
- tmp->n.sym->attr.pointer = 1;
+ gfc_add_type (tmp->n.sym, ts, NULL);
+ gfc_set_sym_referenced (tmp->n.sym);
+ gfc_add_pointer (&tmp->n.sym->attr, NULL);
+ gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
select_type_stack->tmp = tmp;
}
@@ -4080,6 +4010,7 @@ gfc_match_select_type (void)
return MATCH_ERROR;
expr1->symtree->n.sym->ts = expr2->ts;
expr1->symtree->n.sym->attr.referenced = 1;
+ expr1->symtree->n.sym->attr.class_ok = 1;
}
else
{
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 49d449cfdc8..95a327bf23d 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -2068,11 +2068,15 @@ endType:
{
/* Look for allocatable components. */
if (c->attr.allocatable
+ || (c->ts.type == BT_CLASS
+ && c->ts.u.derived->components->attr.allocatable)
|| (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.alloc_comp))
sym->attr.alloc_comp = 1;
/* Look for pointer components. */
if (c->attr.pointer
+ || (c->ts.type == BT_CLASS
+ && c->ts.u.derived->components->attr.pointer)
|| (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.pointer_comp))
sym->attr.pointer_comp = 1;
@@ -3069,7 +3073,9 @@ gfc_build_block_ns (gfc_namespace *parent_ns)
my_ns->proc_name->name, NULL);
gcc_assert (t == SUCCESS);
}
- my_ns->proc_name->attr.recursive = parent_ns->proc_name->attr.recursive;
+
+ if (parent_ns->proc_name)
+ my_ns->proc_name->attr.recursive = parent_ns->proc_name->attr.recursive;
return my_ns;
}
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 5ea41c9bdf8..b17e8fef182 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5161,8 +5161,6 @@ check_class_members (gfc_symbol *derived)
= gfc_get_class_esym_list();
list_e->value.function.class_esym->next = etmp;
list_e->value.function.class_esym->derived = derived;
- list_e->value.function.class_esym->class_object
- = class_object;
list_e->value.function.class_esym->esym
= e->value.function.esym;
}
@@ -5206,19 +5204,120 @@ resolve_class_esym (gfc_expr *e)
}
+/* Generate an expression for the vindex, given the reference to
+ the class of the final expression (class_ref), the base of the
+ full reference list (new_ref), the declared type and the class
+ object (st). */
+static gfc_expr*
+vindex_expr (gfc_ref *class_ref, gfc_ref *new_ref,
+ gfc_symbol *declared, gfc_symtree *st)
+{
+ gfc_expr *vindex;
+ gfc_ref *ref;
+
+ /* Build an expression for the correct vindex; ie. that of the last
+ CLASS reference. */
+ ref = gfc_get_ref();
+ ref->type = REF_COMPONENT;
+ ref->u.c.component = declared->components->next;
+ ref->u.c.sym = declared;
+ ref->next = NULL;
+ if (class_ref)
+ {
+ class_ref->next = ref;
+ }
+ else
+ {
+ gfc_free_ref_list (new_ref);
+ new_ref = ref;
+ }
+ vindex = gfc_get_expr ();
+ vindex->expr_type = EXPR_VARIABLE;
+ vindex->symtree = st;
+ vindex->symtree->n.sym->refs++;
+ vindex->ts = ref->u.c.component->ts;
+ vindex->ref = new_ref;
+
+ return vindex;
+}
+
+
+/* Get the ultimate declared type from an expression. In addition,
+ return the last class/derived type reference and the copy of the
+ reference list. */
+static gfc_symbol*
+get_declared_from_expr (gfc_ref **class_ref, gfc_ref **new_ref,
+ gfc_expr *e)
+{
+ gfc_symbol *declared;
+ gfc_ref *ref;
+
+ declared = NULL;
+ *class_ref = NULL;
+ *new_ref = gfc_copy_ref (e->ref);
+ for (ref = *new_ref; ref; ref = ref->next)
+ {
+ if (ref->type != REF_COMPONENT)
+ continue;
+
+ if (ref->u.c.component->ts.type == BT_CLASS
+ || ref->u.c.component->ts.type == BT_DERIVED)
+ {
+ declared = ref->u.c.component->ts.u.derived;
+ *class_ref = ref;
+ }
+ }
+
+ if (declared == NULL)
+ declared = e->symtree->n.sym->ts.u.derived;
+
+ return declared;
+}
+
+
+/* Resolve the argument expressions so that any arguments expressions
+ that include class methods are resolved before the current call.
+ This is necessary because of the static variables used in CLASS
+ method resolution. */
+static void
+resolve_arg_exprs (gfc_actual_arglist *arg)
+{
+ /* Resolve the actual arglist expressions. */
+ for (; arg; arg = arg->next)
+ {
+ if (arg->expr)
+ gfc_resolve_expr (arg->expr);
+ }
+}
+
+
/* Resolve a CLASS typebound function, or 'method'. */
static gfc_try
resolve_class_compcall (gfc_expr* e)
{
- gfc_symbol *derived;
+ gfc_symbol *derived, *declared;
+ gfc_ref *new_ref;
+ gfc_ref *class_ref;
+ gfc_symtree *st;
- class_object = e->symtree->n.sym;
+ st = e->symtree;
+ class_object = st->n.sym;
- /* Get the CLASS type. */
- derived = e->symtree->n.sym->ts.u.derived;
+ /* Get the CLASS declared type. */
+ declared = get_declared_from_expr (&class_ref, &new_ref, e);
+
+ /* Weed out cases of the ultimate component being a derived type. */
+ if (class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
+ {
+ gfc_free_ref_list (new_ref);
+ return resolve_compcall (e, true);
+ }
+
+ /* Resolve the argument expressions, */
+ resolve_arg_exprs (e->value.function.actual);
/* Get the data component, which is of the declared type. */
- derived = derived->components->ts.u.derived;
+ derived = declared->components->ts.u.derived;
/* Resolve the function call for each member of the class. */
class_try = SUCCESS;
@@ -5238,6 +5337,12 @@ resolve_class_compcall (gfc_expr* e)
resolve_class_esym (e);
+ /* More than one typebound procedure so transmit an expression for
+ the vindex as the selector. */
+ if (e->value.function.class_esym != NULL)
+ e->value.function.class_esym->vindex
+ = vindex_expr (class_ref, new_ref, declared, st);
+
return class_try;
}
@@ -5245,15 +5350,29 @@ resolve_class_compcall (gfc_expr* e)
static gfc_try
resolve_class_typebound_call (gfc_code *code)
{
- gfc_symbol *derived;
+ gfc_symbol *derived, *declared;
+ gfc_ref *new_ref;
+ gfc_ref *class_ref;
+ gfc_symtree *st;
+
+ st = code->expr1->symtree;
+ class_object = st->n.sym;
+
+ /* Get the CLASS declared type. */
+ declared = get_declared_from_expr (&class_ref, &new_ref, code->expr1);
- class_object = code->expr1->symtree->n.sym;
+ /* Weed out cases of the ultimate component being a derived type. */
+ if (class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
+ {
+ gfc_free_ref_list (new_ref);
+ return resolve_typebound_call (code);
+ }
- /* Get the CLASS type. */
- derived = code->expr1->symtree->n.sym->ts.u.derived;
+ /* Resolve the argument expressions, */
+ resolve_arg_exprs (code->expr1->value.compcall.actual);
/* Get the data component, which is of the declared type. */
- derived = derived->components->ts.u.derived;
+ derived = declared->components->ts.u.derived;
class_try = SUCCESS;
fcn_flag = false;
@@ -5273,6 +5392,12 @@ resolve_class_typebound_call (gfc_code *code)
resolve_class_esym (code->expr1);
+ /* More than one typebound procedure so transmit an expression for
+ the vindex as the selector. */
+ if (code->expr1->value.function.class_esym != NULL)
+ code->expr1->value.function.class_esym->vindex
+ = vindex_expr (class_ref, new_ref, declared, st);
+
return class_try;
}
@@ -5833,6 +5958,58 @@ gfc_expr_to_initialize (gfc_expr *e)
}
+/* Used in resolve_allocate_expr to check that a allocation-object and
+ a source-expr are conformable. This does not catch all possible
+ cases; in particular a runtime checking is needed. */
+
+static gfc_try
+conformable_arrays (gfc_expr *e1, gfc_expr *e2)
+{
+ /* First compare rank. */
+ if (e2->ref && e1->rank != e2->ref->u.ar.as->rank)
+ {
+ gfc_error ("Source-expr at %L must be scalar or have the "
+ "same rank as the allocate-object at %L",
+ &e1->where, &e2->where);
+ return FAILURE;
+ }
+
+ if (e1->shape)
+ {
+ int i;
+ mpz_t s;
+
+ mpz_init (s);
+
+ for (i = 0; i < e1->rank; i++)
+ {
+ if (e2->ref->u.ar.end[i])
+ {
+ mpz_set (s, e2->ref->u.ar.end[i]->value.integer);
+ mpz_sub (s, s, e2->ref->u.ar.start[i]->value.integer);
+ mpz_add_ui (s, s, 1);
+ }
+ else
+ {
+ mpz_set (s, e2->ref->u.ar.start[i]->value.integer);
+ }
+
+ if (mpz_cmp (e1->shape[i], s) != 0)
+ {
+ gfc_error ("Source-expr at %L and allocate-object at %L must "
+ "have the same shape", &e1->where, &e2->where);
+ mpz_clear (s);
+ return FAILURE;
+ }
+ }
+
+ mpz_clear (s);
+ }
+
+ return SUCCESS;
+}
+
+
/* Resolve the expression in an ALLOCATE statement, doing the additional
checks to see whether the expression is OK or not. The expression must
have a trailing array reference that gives the size of the array. */
@@ -5844,7 +6021,6 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
symbol_attribute attr;
gfc_ref *ref, *ref2;
gfc_array_ref *ar;
- gfc_code *init_st;
gfc_symbol *sym;
gfc_alloc *a;
gfc_component *c;
@@ -5933,7 +6109,32 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
return FAILURE;
}
- if (is_abstract && !code->expr3 && code->ext.alloc.ts.type == BT_UNKNOWN)
+ /* Some checks for the SOURCE tag. */
+ if (code->expr3)
+ {
+ /* Check F03:C631. */
+ if (!gfc_type_compatible (&e->ts, &code->expr3->ts))
+ {
+ gfc_error ("Type of entity at %L is type incompatible with "
+ "source-expr at %L", &e->where, &code->expr3->where);
+ return FAILURE;
+ }
+
+ /* Check F03:C632 and restriction following Note 6.18. */
+ if (code->expr3->rank > 0
+ && conformable_arrays (code->expr3, e) == FAILURE)
+ return FAILURE;
+
+ /* Check F03:C633. */
+ if (code->expr3->ts.kind != e->ts.kind)
+ {
+ gfc_error ("The allocate-object at %L and the source-expr at %L "
+ "shall have the same kind type parameter",
+ &e->where, &code->expr3->where);
+ return FAILURE;
+ }
+ }
+ else if (is_abstract&& code->ext.alloc.ts.type == BT_UNKNOWN)
{
gcc_assert (e->ts.type == BT_CLASS);
gfc_error ("Allocating %s of ABSTRACT base type at %L requires a "
@@ -5948,41 +6149,6 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
return FAILURE;
}
- if (e->ts.type == BT_CLASS)
- {
- /* Initialize VINDEX for CLASS objects. */
- init_st = gfc_get_code ();
- init_st->loc = code->loc;
- init_st->expr1 = gfc_expr_to_initialize (e);
- init_st->op = EXEC_ASSIGN;
- gfc_add_component_ref (init_st->expr1, "$vindex");
- if (code->expr3 && code->expr3->ts.type == BT_CLASS)
- {
- /* vindex must be determined at run time. */
- init_st->expr2 = gfc_copy_expr (code->expr3);
- gfc_add_component_ref (init_st->expr2, "$vindex");
- }
- else
- {
- /* vindex is fixed at compile time. */
- int vindex;
- if (code->expr3)
- vindex = code->expr3->ts.u.derived->vindex;
- else if (code->ext.alloc.ts.type == BT_DERIVED)
- vindex = code->ext.alloc.ts.u.derived->vindex;
- else if (e->ts.type == BT_CLASS)
- vindex = e->ts.u.derived->components->ts.u.derived->vindex;
- else
- vindex = e->ts.u.derived->vindex;
- init_st->expr2 = gfc_int_expr (vindex);
- }
- init_st->expr2->where = init_st->expr1->where = init_st->loc;
- init_st->next = code->next;
- code->next = init_st;
- /* Only allocate the DATA component. */
- gfc_add_component_ref (e, "$data");
- }
-
if (pointer || dimension == 0)
return SUCCESS;
@@ -7562,46 +7728,16 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
}
}
- gfc_check_assign (lhs, rhs, 1);
- return false;
-}
-
-
-/* Check an assignment to a CLASS object (pointer or ordinary assignment). */
-
-static void
-resolve_class_assign (gfc_code *code)
-{
- gfc_code *assign_code = gfc_get_code ();
-
- if (code->expr2->ts.type != BT_CLASS)
+ /* F03:7.4.1.2. */
+ if (lhs->ts.type == BT_CLASS)
{
- /* Insert an additional assignment which sets the vindex. */
- assign_code->next = code->next;
- code->next = assign_code;
- assign_code->op = EXEC_ASSIGN;
- assign_code->expr1 = gfc_copy_expr (code->expr1);
- gfc_add_component_ref (assign_code->expr1, "$vindex");
- if (code->expr2->ts.type == BT_DERIVED)
- /* vindex is constant, determined at compile time. */
- assign_code->expr2 = gfc_int_expr (code->expr2->ts.u.derived->vindex);
- else if (code->expr2->ts.type == BT_CLASS)
- {
- /* vindex must be determined at run time. */
- assign_code->expr2 = gfc_copy_expr (code->expr2);
- gfc_add_component_ref (assign_code->expr2, "$vindex");
- }
- else if (code->expr2->expr_type == EXPR_NULL)
- assign_code->expr2 = gfc_int_expr (0);
- else
- gcc_unreachable ();
+ gfc_error ("Variable must not be polymorphic in assignment at %L",
+ &lhs->where);
+ return false;
}
- /* Modify the actual pointer assignment. */
- if (code->expr2->ts.type == BT_CLASS)
- code->op = EXEC_ASSIGN;
- else
- gfc_add_component_ref (code->expr1, "$data");
+ gfc_check_assign (lhs, rhs, 1);
+ return false;
}
@@ -7675,6 +7811,10 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
if (gfc_resolve_expr (code->expr2) == FAILURE)
t = FAILURE;
+ if (code->op == EXEC_ALLOCATE
+ && gfc_resolve_expr (code->expr3) == FAILURE)
+ t = FAILURE;
+
switch (code->op)
{
case EXEC_NOP:
@@ -7734,10 +7874,6 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
else
goto call;
}
-
- if (code->expr1->ts.type == BT_CLASS)
- resolve_class_assign (code);
-
break;
case EXEC_LABEL_ASSIGN:
@@ -7759,10 +7895,6 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
break;
gfc_check_pointer_assign (code->expr1, code->expr2);
-
- if (code->expr1->ts.type == BT_CLASS)
- resolve_class_assign (code);
-
break;
case EXEC_ARITHMETIC_IF:
@@ -8612,9 +8744,8 @@ resolve_fl_variable_derived (gfc_symbol *sym, int no_init_flag)
}
/* C509. */
- if (!(sym->attr.dummy || sym->attr.allocatable || sym->attr.pointer
- || sym->ts.u.derived->components->attr.allocatable
- || sym->ts.u.derived->components->attr.pointer))
+ /* Assume that use associated symbols were checked in the module ns. */
+ if (!sym->attr.class_ok && !sym->attr.use_assoc)
{
gfc_error ("CLASS variable '%s' at %L must be dummy, allocatable "
"or pointer", sym->name, &sym->declared_at);
@@ -12003,7 +12134,11 @@ resolve_codes (gfc_namespace *ns)
resolve_codes (n);
gfc_current_ns = ns;
- cs_base = NULL;
+
+ /* Don't clear 'cs_base' if this is the namespace of a BLOCK construct. */
+ if (!(ns->proc_name && ns->proc_name->attr.flavor == FL_LABEL))
+ cs_base = NULL;
+
/* Set to an out of range value. */
current_entry_id = -1;
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 2641df82b35..c1b39b0d9f1 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -2030,9 +2030,16 @@ gfc_st_label *
gfc_get_st_label (int labelno)
{
gfc_st_label *lp;
+ gfc_namespace *ns;
+
+ /* Find the namespace of the scoping unit:
+ If we're in a BLOCK construct, jump to the parent namespace. */
+ ns = gfc_current_ns;
+ while (ns->proc_name && ns->proc_name->attr.flavor == FL_LABEL)
+ ns = ns->parent;
/* First see if the label is already in this namespace. */
- lp = gfc_current_ns->st_labels;
+ lp = ns->st_labels;
while (lp)
{
if (lp->value == labelno)
@@ -2050,7 +2057,7 @@ gfc_get_st_label (int labelno)
lp->defined = ST_LABEL_UNKNOWN;
lp->referenced = ST_LABEL_UNKNOWN;
- gfc_insert_bbt (&gfc_current_ns->st_labels, lp, compare_st_labels);
+ gfc_insert_bbt (&ns->st_labels, lp, compare_st_labels);
return lp;
}
@@ -2741,7 +2748,7 @@ gfc_undo_symbols (void)
if (p->gfc_new)
{
/* Symbol was new. */
- if (p->attr.in_common && p->common_block->head)
+ if (p->attr.in_common && p->common_block && p->common_block->head)
{
/* If the symbol was added to any common block, it
needs to be removed to stop the resolver looking
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index e16200010d1..4e94373133a 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -5906,6 +5906,36 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
tmp = gfc_trans_dealloc_allocated (comp);
gfc_add_expr_to_block (&fnblock, tmp);
}
+ else if (c->attr.allocatable)
+ {
+ /* Allocatable scalar components. */
+ comp = fold_build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+
+ tmp = gfc_deallocate_with_status (comp, NULL_TREE, true, NULL);
+ gfc_add_expr_to_block (&fnblock, tmp);
+
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, comp,
+ build_int_cst (TREE_TYPE (comp), 0));
+ gfc_add_expr_to_block (&fnblock, tmp);
+ }
+ else if (c->ts.type == BT_CLASS
+ && c->ts.u.derived->components->attr.allocatable)
+ {
+ /* Allocatable scalar CLASS components. */
+ comp = fold_build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+
+ /* Add reference to '$data' component. */
+ tmp = c->ts.u.derived->components->backend_decl;
+ comp = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
+ comp, tmp, NULL_TREE);
+
+ tmp = gfc_deallocate_with_status (comp, NULL_TREE, true, NULL);
+ gfc_add_expr_to_block (&fnblock, tmp);
+
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, comp,
+ build_int_cst (TREE_TYPE (comp), 0));
+ gfc_add_expr_to_block (&fnblock, tmp);
+ }
break;
case NULLIFY_ALLOC_COMP:
@@ -5917,6 +5947,27 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
decl, cdecl, NULL_TREE);
gfc_conv_descriptor_data_set (&fnblock, comp, null_pointer_node);
}
+ else if (c->attr.allocatable)
+ {
+ /* Allocatable scalar components. */
+ comp = fold_build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, comp,
+ build_int_cst (TREE_TYPE (comp), 0));
+ gfc_add_expr_to_block (&fnblock, tmp);
+ }
+ else if (c->ts.type == BT_CLASS
+ && c->ts.u.derived->components->attr.allocatable)
+ {
+ /* Allocatable scalar CLASS components. */
+ comp = fold_build3 (COMPONENT_REF, ctype, decl, cdecl, NULL_TREE);
+ /* Add reference to '$data' component. */
+ tmp = c->ts.u.derived->components->backend_decl;
+ comp = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
+ comp, tmp, NULL_TREE);
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node, comp,
+ build_int_cst (TREE_TYPE (comp), 0));
+ gfc_add_expr_to_block (&fnblock, tmp);
+ }
else if (cmp_has_alloc_comps)
{
comp = fold_build3 (COMPONENT_REF, ctype,
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index ee38efbe27c..8812675990f 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1187,22 +1187,23 @@ gfc_get_symbol_decl (gfc_symbol * sym)
/* Create variables to hold the non-constant bits of array info. */
gfc_build_qualified_array (decl, sym);
- /* Remember this variable for allocation/cleanup. */
- gfc_defer_symbol_init (sym);
-
if ((sym->attr.allocatable || !sym->attr.dummy) && !sym->attr.pointer)
GFC_DECL_PACKED_ARRAY (decl) = 1;
}
- if (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.alloc_comp)
- gfc_defer_symbol_init (sym);
- /* This applies a derived type default initializer. */
- else if (sym->ts.type == BT_DERIVED
- && sym->attr.save == SAVE_NONE
- && !sym->attr.data
- && !sym->attr.allocatable
- && (sym->value && !sym->ns->proc_name->attr.is_main_program)
- && !sym->attr.use_assoc)
+ /* Remember this variable for allocation/cleanup. */
+ if (sym->attr.dimension || sym->attr.allocatable
+ || (sym->ts.type == BT_CLASS &&
+ (sym->ts.u.derived->components->attr.dimension
+ || sym->ts.u.derived->components->attr.allocatable))
+ || (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.alloc_comp)
+ /* This applies a derived type default initializer. */
+ || (sym->ts.type == BT_DERIVED
+ && sym->attr.save == SAVE_NONE
+ && !sym->attr.data
+ && !sym->attr.allocatable
+ && (sym->value && !sym->ns->proc_name->attr.is_main_program)
+ && !sym->attr.use_assoc))
gfc_defer_symbol_init (sym);
gfc_finish_var_decl (decl, sym);
@@ -3054,7 +3055,8 @@ init_intent_out_dt (gfc_symbol * proc_sym, tree body)
Allocation and initialization of array variables.
Allocation of character string variables.
Initialization and possibly repacking of dummy arrays.
- Initialization of ASSIGN statement auxiliary variable. */
+ Initialization of ASSIGN statement auxiliary variable.
+ Automatic deallocation. */
tree
gfc_trans_deferred_vars (gfc_symbol * proc_sym, tree fnbody)
@@ -3182,6 +3184,37 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, tree fnbody)
}
else if (sym_has_alloc_comp)
fnbody = gfc_trans_deferred_array (sym, fnbody);
+ else if (sym->attr.allocatable
+ || (sym->ts.type == BT_CLASS
+ && sym->ts.u.derived->components->attr.allocatable))
+ {
+ /* Automatic deallocatation of allocatable scalars. */
+ tree tmp;
+ gfc_expr *e;
+ gfc_se se;
+ stmtblock_t block;
+
+ e = gfc_lval_expr_from_sym (sym);
+ if (sym->ts.type == BT_CLASS)
+ gfc_add_component_ref (e, "$data");
+
+ gfc_init_se (&se, NULL);
+ se.want_pointer = 1;
+ gfc_conv_expr (&se, e);
+ gfc_free_expr (e);
+
+ gfc_start_block (&block);
+ gfc_add_expr_to_block (&block, fnbody);
+
+ tmp = gfc_deallocate_with_status (se.expr, NULL_TREE, true, NULL);
+ gfc_add_expr_to_block (&block, tmp);
+
+ tmp = fold_build2 (MODIFY_EXPR, void_type_node,
+ se.expr, build_int_cst (TREE_TYPE (se.expr), 0));
+ gfc_add_expr_to_block (&block, tmp);
+
+ fnbody = gfc_finish_block (&block);
+ }
else if (sym->ts.type == BT_CHARACTER)
{
gfc_get_backend_locus (&loc);
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 77953c8e15f..da442edba4b 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -1519,6 +1519,7 @@ get_proc_ptr_comp (gfc_expr *e)
e2 = gfc_copy_expr (e);
e2->expr_type = EXPR_VARIABLE;
gfc_conv_expr (&comp_se, e2);
+ gfc_free_expr (e2);
return build_fold_addr_expr_loc (input_location, comp_se.expr);
}
@@ -1526,7 +1527,7 @@ get_proc_ptr_comp (gfc_expr *e)
/* Select a class typebound procedure at runtime. */
static void
select_class_proc (gfc_se *se, gfc_class_esym_list *elist,
- tree declared, locus *where)
+ tree declared, gfc_expr *expr)
{
tree end_label;
tree label;
@@ -1534,16 +1535,16 @@ select_class_proc (gfc_se *se, gfc_class_esym_list *elist,
tree vindex;
stmtblock_t body;
gfc_class_esym_list *next_elist, *tmp_elist;
+ gfc_se tmpse;
- /* Calculate the switch expression: class_object.vindex. */
- gcc_assert (elist->class_object->ts.type == BT_CLASS);
- tmp = elist->class_object->ts.u.derived->components->next->backend_decl;
- vindex = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
- elist->class_object->backend_decl,
- tmp, NULL_TREE);
- vindex = gfc_evaluate_now (vindex, &se->pre);
+ /* Convert the vindex expression. */
+ gfc_init_se (&tmpse, NULL);
+ gfc_conv_expr (&tmpse, elist->vindex);
+ gfc_add_block_to_block (&se->pre, &tmpse.pre);
+ vindex = gfc_evaluate_now (tmpse.expr, &se->pre);
+ gfc_add_block_to_block (&se->post, &tmpse.post);
- /* Fix the function type to be that of the declared type. */
+ /* Fix the function type to be that of the declared type method. */
declared = gfc_create_var (TREE_TYPE (declared), "method");
end_label = gfc_build_label_decl (NULL_TREE);
@@ -1602,6 +1603,8 @@ select_class_proc (gfc_se *se, gfc_class_esym_list *elist,
segfaults because it occurs too early and too often. */
free_elist:
next_elist = elist->next;
+ if (elist->vindex)
+ gfc_free_expr (elist->vindex);
gfc_free (elist);
elist = NULL;
}
@@ -1611,7 +1614,7 @@ select_class_proc (gfc_se *se, gfc_class_esym_list *elist,
tmp = fold_build3 (CASE_LABEL_EXPR, void_type_node,
NULL_TREE, NULL_TREE, label);
gfc_add_expr_to_block (&body, tmp);
- tmp = gfc_trans_runtime_error (true, where,
+ tmp = gfc_trans_runtime_error (true, &expr->where,
"internal error: bad vindex in dynamic dispatch");
gfc_add_expr_to_block (&body, tmp);
@@ -1648,7 +1651,7 @@ conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr)
}
select_class_proc (se, expr->value.function.class_esym,
- tmp, &expr->where);
+ tmp, expr);
return;
}
@@ -2775,6 +2778,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
{
tree data;
tree vindex;
+ tree size;
/* The derived type needs to be converted to a temporary
CLASS object. */
@@ -2788,13 +2792,20 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
var, tmp, NULL_TREE);
tmp = fsym->ts.u.derived->components->next->backend_decl;
vindex = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
+ var, tmp, NULL_TREE);
+ tmp = fsym->ts.u.derived->components->next->next->backend_decl;
+ size = fold_build3 (COMPONENT_REF, TREE_TYPE (tmp),
var, tmp, NULL_TREE);
/* Set the vindex. */
- tmp = build_int_cst (TREE_TYPE (vindex),
- e->ts.u.derived->vindex);
+ tmp = build_int_cst (TREE_TYPE (vindex), e->ts.u.derived->vindex);
gfc_add_modify (&parmse.pre, vindex, tmp);
+ /* Set the size. */
+ tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&e->ts));
+ gfc_add_modify (&parmse.pre, size,
+ fold_convert (TREE_TYPE (size), tmp));
+
/* Now set the data field. */
argss = gfc_walk_expr (e);
if (argss == gfc_ss_terminator)
@@ -4649,12 +4660,11 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
gfc_add_expr_to_block (&block, tmp);
}
}
- else if (ts.type == BT_DERIVED)
+ else if (ts.type == BT_DERIVED || ts.type == BT_CLASS)
{
gfc_add_block_to_block (&block, &lse->pre);
gfc_add_block_to_block (&block, &rse->pre);
- tmp = gfc_evaluate_now (rse->expr, &block);
- tmp = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (lse->expr), tmp);
+ tmp = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (lse->expr), rse->expr);
gfc_add_modify (&block, lse->expr, tmp);
}
else
@@ -5261,3 +5271,75 @@ gfc_trans_assign (gfc_code * code)
{
return gfc_trans_assignment (code->expr1, code->expr2, false);
}
+
+
+/* Translate an assignment to a CLASS object
+ (pointer or ordinary assignment). */
+
+tree
+gfc_trans_class_assign (gfc_code *code)
+{
+ stmtblock_t block;
+ tree tmp;
+
+ gfc_start_block (&block);
+
+ if (code->expr2->ts.type != BT_CLASS)
+ {
+ /* Insert an additional assignment which sets the '$vindex' field. */
+ gfc_expr *lhs,*rhs;
+ lhs = gfc_copy_expr (code->expr1);
+ gfc_add_component_ref (lhs, "$vindex");
+ if (code->expr2->ts.type == BT_DERIVED)
+ /* vindex is constant, determined at compile time. */
+ rhs = gfc_int_expr (code->expr2->ts.u.derived->vindex);
+ else if (code->expr2->expr_type == EXPR_NULL)
+ rhs = gfc_int_expr (0);
+ else
+ gcc_unreachable ();
+ tmp = gfc_trans_assignment (lhs, rhs, false);
+ gfc_add_expr_to_block (&block, tmp);
+
+ /* Insert another assignment which sets the '$size' field. */
+ lhs = gfc_copy_expr (code->expr1);
+ gfc_add_component_ref (lhs, "$size");
+ if (code->expr2->ts.type == BT_DERIVED)
+ {
+ /* Size is fixed at compile time. */
+ gfc_se lse;
+ gfc_init_se (&lse, NULL);
+ gfc_conv_expr (&lse, lhs);
+ tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&code->expr2->ts));
+ gfc_add_modify (&block, lse.expr,
+ fold_convert (TREE_TYPE (lse.expr), tmp));
+ }
+ else if (code->expr2->expr_type == EXPR_NULL)
+ {
+ rhs = gfc_int_expr (0);
+ tmp = gfc_trans_assignment (lhs, rhs, false);
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ else
+ gcc_unreachable ();
+
+ gfc_free_expr (lhs);
+ gfc_free_expr (rhs);
+ }
+
+ /* Do the actual CLASS assignment. */
+ if (code->expr2->ts.type == BT_CLASS)
+ code->op = EXEC_ASSIGN;
+ else
+ gfc_add_component_ref (code->expr1, "$data");
+
+ if (code->op == EXEC_ASSIGN)
+ tmp = gfc_trans_assign (code);
+ else if (code->op == EXEC_POINTER_ASSIGN)
+ tmp = gfc_trans_pointer_assign (code);
+ else
+ gcc_unreachable();
+
+ gfc_add_expr_to_block (&block, tmp);
+
+ return gfc_finish_block (&block);
+}
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 110534d2a5e..7dc7405c67f 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -3976,7 +3976,7 @@ tree
gfc_trans_allocate (gfc_code * code)
{
gfc_alloc *al;
- gfc_expr *expr, *init_e, *rhs;
+ gfc_expr *expr, *init_e;
gfc_se se;
tree tmp;
tree parm;
@@ -4006,7 +4006,10 @@ gfc_trans_allocate (gfc_code * code)
for (al = code->ext.alloc.list; al != NULL; al = al->next)
{
- expr = al->expr;
+ expr = gfc_copy_expr (al->expr);
+
+ if (expr->ts.type == BT_CLASS)
+ gfc_add_component_ref (expr, "$data");
gfc_init_se (&se, NULL);
gfc_start_block (&se.pre);
@@ -4022,13 +4025,14 @@ gfc_trans_allocate (gfc_code * code)
/* Determine allocate size. */
if (code->expr3 && code->expr3->ts.type == BT_CLASS)
{
- gfc_typespec *ts;
- /* TODO: Size must be determined at run time, since it must equal
- the size of the dynamic type of SOURCE, not the declared type. */
- gfc_error ("Using SOURCE= with a class variable at %L not "
- "supported yet", &code->loc);
- ts = &code->expr3->ts.u.derived->components->ts;
- tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (ts));
+ gfc_expr *sz;
+ gfc_se se_sz;
+ sz = gfc_copy_expr (code->expr3);
+ gfc_add_component_ref (sz, "$size");
+ gfc_init_se (&se_sz, NULL);
+ gfc_conv_expr (&se_sz, sz);
+ gfc_free_expr (sz);
+ tmp = se_sz.expr;
}
else if (code->expr3 && code->expr3->ts.type != BT_CLASS)
tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&code->expr3->ts));
@@ -4070,17 +4074,120 @@ gfc_trans_allocate (gfc_code * code)
/* Initialization via SOURCE block. */
if (code->expr3)
{
- rhs = gfc_copy_expr (code->expr3);
+ gfc_expr *rhs = gfc_copy_expr (code->expr3);
if (rhs->ts.type == BT_CLASS)
- gfc_add_component_ref (rhs, "$data");
- tmp = gfc_trans_assignment (gfc_expr_to_initialize (expr), rhs, false);
+ {
+ gfc_se dst,src,len;
+ gfc_expr *sz;
+ gfc_add_component_ref (rhs, "$data");
+ sz = gfc_copy_expr (code->expr3);
+ gfc_add_component_ref (sz, "$size");
+ gfc_init_se (&dst, NULL);
+ gfc_init_se (&src, NULL);
+ gfc_init_se (&len, NULL);
+ gfc_conv_expr (&dst, expr);
+ gfc_conv_expr (&src, rhs);
+ gfc_conv_expr (&len, sz);
+ gfc_free_expr (sz);
+ tmp = gfc_build_memcpy_call (dst.expr, src.expr, len.expr);
+ }
+ else
+ tmp = gfc_trans_assignment (gfc_expr_to_initialize (expr),
+ rhs, false);
+ gfc_free_expr (rhs);
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ /* Default initializer for CLASS variables. */
+ else if (al->expr->ts.type == BT_CLASS
+ && code->ext.alloc.ts.type == BT_DERIVED
+ && (init_e = gfc_default_initializer (&code->ext.alloc.ts)))
+ {
+ gfc_se dst,src;
+ gfc_init_se (&dst, NULL);
+ gfc_init_se (&src, NULL);
+ gfc_conv_expr (&dst, expr);
+ gfc_conv_expr (&src, init_e);
+ gfc_add_block_to_block (&block, &src.pre);
+ tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&code->ext.alloc.ts));
+ tmp = gfc_build_memcpy_call (dst.expr, src.expr, tmp);
gfc_add_expr_to_block (&block, tmp);
}
/* Add default initializer for those derived types that need them. */
- else if (expr->ts.type == BT_DERIVED && (init_e = gfc_default_initializer (&expr->ts)))
+ else if (expr->ts.type == BT_DERIVED
+ && (init_e = gfc_default_initializer (&expr->ts)))
+ {
+ tmp = gfc_trans_assignment (gfc_expr_to_initialize (expr),
+ init_e, true);
+ gfc_add_expr_to_block (&block, tmp);
+ }
+
+ /* Allocation of CLASS entities. */
+ gfc_free_expr (expr);
+ expr = al->expr;
+ if (expr->ts.type == BT_CLASS)
{
- tmp = gfc_trans_assignment (gfc_expr_to_initialize (expr), init_e, true);
+ gfc_expr *lhs,*rhs;
+ /* Initialize VINDEX for CLASS objects. */
+ lhs = gfc_expr_to_initialize (expr);
+ gfc_add_component_ref (lhs, "$vindex");
+ if (code->expr3 && code->expr3->ts.type == BT_CLASS)
+ {
+ /* vindex must be determined at run time. */
+ rhs = gfc_copy_expr (code->expr3);
+ gfc_add_component_ref (rhs, "$vindex");
+ }
+ else
+ {
+ /* vindex is fixed at compile time. */
+ int vindex;
+ if (code->expr3)
+ vindex = code->expr3->ts.u.derived->vindex;
+ else if (code->ext.alloc.ts.type == BT_DERIVED)
+ vindex = code->ext.alloc.ts.u.derived->vindex;
+ else if (expr->ts.type == BT_CLASS)
+ vindex = expr->ts.u.derived->components->ts.u.derived->vindex;
+ else
+ vindex = expr->ts.u.derived->vindex;
+ rhs = gfc_int_expr (vindex);
+ }
+ tmp = gfc_trans_assignment (lhs, rhs, false);
+ gfc_free_expr (lhs);
+ gfc_free_expr (rhs);
gfc_add_expr_to_block (&block, tmp);
+
+ /* Initialize SIZE for CLASS objects. */
+ lhs = gfc_expr_to_initialize (expr);
+ gfc_add_component_ref (lhs, "$size");
+ rhs = NULL;
+ if (code->expr3 && code->expr3->ts.type == BT_CLASS)
+ {
+ /* Size must be determined at run time. */
+ rhs = gfc_copy_expr (code->expr3);
+ gfc_add_component_ref (rhs, "$size");
+ tmp = gfc_trans_assignment (lhs, rhs, false);
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ else
+ {
+ /* Size is fixed at compile time. */
+ gfc_typespec *ts;
+ gfc_se lse;
+ gfc_init_se (&lse, NULL);
+ gfc_conv_expr (&lse, lhs);
+ if (code->expr3)
+ ts = &code->expr3->ts;
+ else if (code->ext.alloc.ts.type == BT_DERIVED)
+ ts = &code->ext.alloc.ts;
+ else if (expr->ts.type == BT_CLASS)
+ ts = &expr->ts.u.derived->components->ts;
+ else
+ ts = &expr->ts;
+ tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (ts));
+ gfc_add_modify (&block, lse.expr,
+ fold_convert (TREE_TYPE (lse.expr), tmp));
+ }
+ gfc_free_expr (lhs);
+ gfc_free_expr (rhs);
}
}
diff --git a/gcc/fortran/trans-stmt.h b/gcc/fortran/trans-stmt.h
index 0b8461c4e15..e6faacd0022 100644
--- a/gcc/fortran/trans-stmt.h
+++ b/gcc/fortran/trans-stmt.h
@@ -29,6 +29,7 @@ tree gfc_trans_code (gfc_code *);
tree gfc_trans_assign (gfc_code *);
tree gfc_trans_pointer_assign (gfc_code *);
tree gfc_trans_init_assign (gfc_code *);
+tree gfc_trans_class_assign (gfc_code *code);
/* trans-stmt.c */
tree gfc_trans_cycle (gfc_code *);
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 09b424c378f..22c3e076085 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1079,7 +1079,10 @@ gfc_trans_code (gfc_code * code)
break;
case EXEC_ASSIGN:
- res = gfc_trans_assign (code);
+ if (code->expr1->ts.type == BT_CLASS)
+ res = gfc_trans_class_assign (code);
+ else
+ res = gfc_trans_assign (code);
break;
case EXEC_LABEL_ASSIGN:
@@ -1087,7 +1090,10 @@ gfc_trans_code (gfc_code * code)
break;
case EXEC_POINTER_ASSIGN:
- res = gfc_trans_pointer_assign (code);
+ if (code->expr1->ts.type == BT_CLASS)
+ res = gfc_trans_class_assign (code);
+ else
+ res = gfc_trans_pointer_assign (code);
break;
case EXEC_INIT_ASSIGN:
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 52fe2277b82..78e0ce8d87e 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -984,7 +984,7 @@ static struct user_specs *user_specs_head, *user_specs_tail;
#ifdef HAVE_TARGET_EXECUTABLE_SUFFIX
/* This defines which switches stop a full compilation. */
#define DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) \
- ((CHAR) == 'c' || (CHAR) == 'S')
+ ((CHAR) == 'c' || (CHAR) == 'S' || (CHAR) == 'E')
#ifndef SWITCH_CURTAILS_COMPILATION
#define SWITCH_CURTAILS_COMPILATION(CHAR) \
@@ -2000,7 +2000,7 @@ static int argbuf_index;
static int have_o_argbuf_index = 0;
-/* Were the options -c or -S passed. */
+/* Were the options -c, -S or -E passed. */
static int have_c = 0;
/* Was the option -o passed. */
@@ -4142,6 +4142,7 @@ process_command (int argc, const char **argv)
case 'S':
case 'c':
+ case 'E':
if (p[1] == 0)
{
have_c = 1;
@@ -4157,7 +4158,7 @@ process_command (int argc, const char **argv)
{
int skip;
- /* Forward scan, just in case -S or -c is specified
+ /* Forward scan, just in case -S, -E or -c is specified
after -o. */
int j = i + 1;
if (p[1] == 0)
@@ -7304,7 +7305,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
}
if (!combine_inputs && have_c && have_o && lang_n_infiles > 1)
- fatal ("cannot specify -o with -c or -S with multiple files");
+ fatal ("cannot specify -o with -c, -S or -E with multiple files");
if (combine_flag && save_temps_flag)
{
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 803ab3e5a14..7ccb05e1d85 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -2276,8 +2276,7 @@ try_replace_reg (rtx from, rtx to, rtx insn)
with our replacement. */
if (note != 0 && REG_NOTE_KIND (note) == REG_EQUAL)
set_unique_reg_note (insn, REG_EQUAL,
- simplify_replace_rtx (XEXP (note, 0), from,
- copy_rtx (to)));
+ simplify_replace_rtx (XEXP (note, 0), from, to));
if (!success && set && reg_mentioned_p (from, SET_SRC (set)))
{
/* If above failed and this is a single set, try to simplify the source of
@@ -3038,12 +3037,12 @@ bypass_block (basic_block bb, rtx setcc, rtx jump)
src = SET_SRC (pc_set (jump));
if (setcc != NULL)
- src = simplify_replace_rtx (src,
- SET_DEST (PATTERN (setcc)),
- SET_SRC (PATTERN (setcc)));
+ src = simplify_replace_rtx (src,
+ SET_DEST (PATTERN (setcc)),
+ SET_SRC (PATTERN (setcc)));
new_rtx = simplify_replace_rtx (src, reg_used->reg_rtx,
- SET_SRC (set->expr));
+ SET_SRC (set->expr));
/* Jump bypassing may have already placed instructions on
edges of the CFG. We can't bypass an outgoing edge that
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index e5b43dde96e..32abf6eff12 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -1117,6 +1117,8 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
t = scalar_tp, subname = "rt_int";
else if (i == VALUE && aindex == 0)
t = scalar_tp, subname = "rt_int";
+ else if (i == DEBUG_EXPR && aindex == 0)
+ t = tree_tp, subname = "rt_tree";
else if (i == REG && aindex == 1)
t = scalar_tp, subname = "rt_int";
else if (i == REG && aindex == 2)
@@ -1569,7 +1571,7 @@ open_base_files (void)
"optabs.h", "libfuncs.h", "debug.h", "ggc.h", "cgraph.h",
"tree-flow.h", "reload.h", "cpp-id-data.h", "tree-chrec.h",
"cfglayout.h", "except.h", "output.h", "gimple.h", "cfgloop.h",
- "target.h", NULL
+ "target.h", "ipa-prop.h", NULL
};
const char *const *ifp;
outf_p gtype_desc_c;
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index 744355e3de3..adb32880cfa 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "params.h"
#include "tree-flow.h"
+#include "cfgloop.h"
#include "plugin.h"
/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
@@ -157,6 +158,24 @@ along with GCC; see the file COPYING3. If not see
#define OFFSET_TO_BIT(OFFSET, ORDER) \
(((OFFSET) * DIV_MULT (ORDER)) >> DIV_SHIFT (ORDER))
+/* We use this structure to determine the alignment required for
+ allocations. For power-of-two sized allocations, that's not a
+ problem, but it does matter for odd-sized allocations.
+ We do not care about alignment for floating-point types. */
+
+struct max_alignment {
+ char c;
+ union {
+ HOST_WIDEST_INT i;
+ void *p;
+ } u;
+};
+
+/* The biggest alignment required. */
+
+#define MAX_ALIGNMENT (offsetof (struct max_alignment, u))
+
+
/* The number of extra orders, not corresponding to power-of-two sized
objects. */
@@ -173,42 +192,35 @@ along with GCC; see the file COPYING3. If not see
thing you need to do to add a new special allocation size. */
static const size_t extra_order_size_table[] = {
- sizeof (struct var_ann_d),
+ /* Extra orders for small non-power-of-two multiples of MAX_ALIGNMENT.
+ There are a lot of structures with these sizes and explicitly
+ listing them risks orders being dropped because they changed size. */
+ MAX_ALIGNMENT * 3,
+ MAX_ALIGNMENT * 5,
+ MAX_ALIGNMENT * 6,
+ MAX_ALIGNMENT * 7,
+ MAX_ALIGNMENT * 9,
+ MAX_ALIGNMENT * 10,
+ MAX_ALIGNMENT * 11,
+ MAX_ALIGNMENT * 12,
+ MAX_ALIGNMENT * 13,
+ MAX_ALIGNMENT * 14,
+ MAX_ALIGNMENT * 15,
sizeof (struct tree_decl_non_common),
sizeof (struct tree_field_decl),
sizeof (struct tree_parm_decl),
sizeof (struct tree_var_decl),
- sizeof (struct tree_list),
- sizeof (struct tree_ssa_name),
+ sizeof (struct tree_type),
sizeof (struct function),
sizeof (struct basic_block_def),
- sizeof (bitmap_element),
- sizeof (bitmap_head),
- TREE_EXP_SIZE (2),
- RTL_SIZE (2), /* MEM, PLUS, etc. */
- RTL_SIZE (9), /* INSN */
+ sizeof (struct cgraph_node),
+ sizeof (struct loop),
};
/* The total number of orders. */
#define NUM_ORDERS (HOST_BITS_PER_PTR + NUM_EXTRA_ORDERS)
-/* We use this structure to determine the alignment required for
- allocations. For power-of-two sized allocations, that's not a
- problem, but it does matter for odd-sized allocations. */
-
-struct max_alignment {
- char c;
- union {
- HOST_WIDEST_INT i;
- long double d;
- } u;
-};
-
-/* The biggest alignment required. */
-
-#define MAX_ALIGNMENT (offsetof (struct max_alignment, u))
-
/* Compute the smallest nonnegative number which when added to X gives
a multiple of F. */
diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c
index 66927d67c2c..c3ca0e37501 100644
--- a/gcc/gimple-iterator.c
+++ b/gcc/gimple-iterator.c
@@ -358,7 +358,8 @@ gsi_split_seq_before (gimple_stmt_iterator *i)
/* Replace the statement pointed-to by GSI to STMT. If UPDATE_EH_INFO
is true, the exception handling information of the original
- statement is moved to the new statement. */
+ statement is moved to the new statement. Assignments must only be
+ replaced with assignments to the same LHS. */
void
gsi_replace (gimple_stmt_iterator *gsi, gimple stmt, bool update_eh_info)
@@ -368,6 +369,9 @@ gsi_replace (gimple_stmt_iterator *gsi, gimple stmt, bool update_eh_info)
if (stmt == orig_stmt)
return;
+ gcc_assert (!gimple_has_lhs (orig_stmt)
+ || gimple_get_lhs (orig_stmt) == gimple_get_lhs (stmt));
+
gimple_set_location (stmt, gimple_location (orig_stmt));
gimple_set_bb (stmt, gsi_bb (*gsi));
@@ -470,6 +474,8 @@ gsi_remove (gimple_stmt_iterator *i, bool remove_permanently)
gimple_seq_node cur, next, prev;
gimple stmt = gsi_stmt (*i);
+ insert_debug_temps_for_defs (i);
+
/* Free all the data flow information for STMT. */
gimple_set_bb (stmt, NULL);
delink_stmt_imm_use (stmt);
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index b58fd7b42f5..cce31e946ff 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -76,6 +76,9 @@ struct lower_data
of the function. */
VEC(return_statements_t,heap) *return_statements;
+ /* True if the current statement cannot fall through. */
+ bool cannot_fallthru;
+
/* True if the function calls __builtin_setjmp. */
bool calls_builtin_setjmp;
};
@@ -317,7 +320,12 @@ lower_omp_directive (gimple_stmt_iterator *gsi, struct lower_data *data)
}
-/* Lower statement GSI. DATA is passed through the recursion. */
+/* Lower statement GSI. DATA is passed through the recursion. We try to
+ track the fallthruness of statements and get rid of unreachable return
+ statements in order to prevent the EH lowering pass from adding useless
+ edges that can cause bogus warnings to be issued later; this guess need
+ not be 100% accurate, simply be conservative and reset cannot_fallthru
+ to false if we don't know. */
static void
lower_stmt (gimple_stmt_iterator *gsi, struct lower_data *data)
@@ -330,36 +338,61 @@ lower_stmt (gimple_stmt_iterator *gsi, struct lower_data *data)
{
case GIMPLE_BIND:
lower_gimple_bind (gsi, data);
+ /* Propagate fallthruness. */
return;
case GIMPLE_COND:
- /* The gimplifier has already lowered this into gotos. */
- break;
+ case GIMPLE_GOTO:
+ case GIMPLE_SWITCH:
+ data->cannot_fallthru = true;
+ gsi_next (gsi);
+ return;
case GIMPLE_RETURN:
- lower_gimple_return (gsi, data);
+ if (data->cannot_fallthru)
+ {
+ gsi_remove (gsi, false);
+ /* Propagate fallthruness. */
+ }
+ else
+ {
+ lower_gimple_return (gsi, data);
+ data->cannot_fallthru = true;
+ }
return;
case GIMPLE_TRY:
- lower_sequence (gimple_try_eval (stmt), data);
- lower_sequence (gimple_try_cleanup (stmt), data);
+ {
+ bool try_cannot_fallthru;
+ lower_sequence (gimple_try_eval (stmt), data);
+ try_cannot_fallthru = data->cannot_fallthru;
+ data->cannot_fallthru = false;
+ lower_sequence (gimple_try_cleanup (stmt), data);
+ /* See gimple_stmt_may_fallthru for the rationale. */
+ if (gimple_try_kind (stmt) == GIMPLE_TRY_FINALLY)
+ {
+ data->cannot_fallthru |= try_cannot_fallthru;
+ gsi_next (gsi);
+ return;
+ }
+ }
break;
case GIMPLE_CATCH:
+ data->cannot_fallthru = false;
lower_sequence (gimple_catch_handler (stmt), data);
break;
case GIMPLE_EH_FILTER:
+ data->cannot_fallthru = false;
lower_sequence (gimple_eh_filter_failure (stmt), data);
break;
case GIMPLE_NOP:
case GIMPLE_ASM:
case GIMPLE_ASSIGN:
- case GIMPLE_GOTO:
case GIMPLE_PREDICT:
case GIMPLE_LABEL:
- case GIMPLE_SWITCH:
case GIMPLE_EH_MUST_NOT_THROW:
case GIMPLE_OMP_FOR:
case GIMPLE_OMP_SECTIONS:
@@ -383,8 +416,16 @@ lower_stmt (gimple_stmt_iterator *gsi, struct lower_data *data)
&& DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL
&& DECL_FUNCTION_CODE (decl) == BUILT_IN_SETJMP)
{
- data->calls_builtin_setjmp = true;
lower_builtin_setjmp (gsi);
+ data->cannot_fallthru = false;
+ data->calls_builtin_setjmp = true;
+ return;
+ }
+
+ if (decl && (flags_from_decl_or_type (decl) & ECF_NORETURN))
+ {
+ data->cannot_fallthru = true;
+ gsi_next (gsi);
return;
}
}
@@ -392,13 +433,16 @@ lower_stmt (gimple_stmt_iterator *gsi, struct lower_data *data)
case GIMPLE_OMP_PARALLEL:
case GIMPLE_OMP_TASK:
+ data->cannot_fallthru = false;
lower_omp_directive (gsi, data);
+ data->cannot_fallthru = false;
return;
default:
gcc_unreachable ();
}
+ data->cannot_fallthru = false;
gsi_next (gsi);
}
@@ -647,9 +691,9 @@ gimple_stmt_may_fallthru (gimple stmt)
return false;
case GIMPLE_SWITCH:
- /* Switch has already been lowered and represents a
- branch to a selected label and hence can not fall through. */
- return true;
+ /* Switch has already been lowered and represents a branch
+ to a selected label and hence can't fall through. */
+ return false;
case GIMPLE_COND:
/* GIMPLE_COND's are already lowered into a two-way branch. They
@@ -675,13 +719,10 @@ gimple_stmt_may_fallthru (gimple stmt)
return (gimple_seq_may_fallthru (gimple_try_eval (stmt))
&& gimple_seq_may_fallthru (gimple_try_cleanup (stmt)));
- case GIMPLE_ASSIGN:
- return true;
-
case GIMPLE_CALL:
/* Functions that do not return do not fall through. */
return (gimple_call_flags (stmt) & ECF_NORETURN) == 0;
-
+
default:
return true;
}
@@ -731,7 +772,7 @@ lower_gimple_return (gimple_stmt_iterator *gsi, struct lower_data *data)
gsi_remove (gsi, false);
}
-/* Lower a __builtin_setjmp TSI.
+/* Lower a __builtin_setjmp GSI.
__builtin_setjmp is passed a pointer to an array of five words (not
all will be used on all machines). It operates similarly to the C
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 29eec519b7d..f725a347bac 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -46,6 +46,7 @@ static struct pointer_map_t *type_hash_cache;
/* Global type comparison cache. */
static htab_t gtc_visited;
+static struct obstack gtc_ob;
/* All the tuples have their operand vector (if present) at the very bottom
of the structure. Therefore, the offset required to find the
@@ -3025,8 +3026,8 @@ static hashval_t gimple_type_hash (const void *);
infinite recursion due to self-referential types. */
struct type_pair_d
{
- tree t1;
- tree t2;
+ unsigned int uid1;
+ unsigned int uid2;
int same_p;
};
typedef struct type_pair_d *type_pair_t;
@@ -3037,8 +3038,8 @@ static hashval_t
type_pair_hash (const void *p)
{
const struct type_pair_d *pair = (const struct type_pair_d *) p;
- hashval_t val1 = iterative_hash_hashval_t (htab_hash_pointer (pair->t1), 0);
- hashval_t val2 = iterative_hash_hashval_t (htab_hash_pointer (pair->t2), 0);
+ hashval_t val1 = pair->uid1;
+ hashval_t val2 = pair->uid2;
return (iterative_hash_hashval_t (val2, val1)
^ iterative_hash_hashval_t (val1, val2));
}
@@ -3050,34 +3051,37 @@ type_pair_eq (const void *p1, const void *p2)
{
const struct type_pair_d *pair1 = (const struct type_pair_d *) p1;
const struct type_pair_d *pair2 = (const struct type_pair_d *) p2;
- return ((pair1->t1 == pair2->t1 && pair1->t2 == pair2->t2)
- || (pair1->t1 == pair2->t2 && pair1->t2 == pair2->t1));
+ return ((pair1->uid1 == pair2->uid1 && pair1->uid2 == pair2->uid2)
+ || (pair1->uid1 == pair2->uid2 && pair1->uid2 == pair2->uid1));
}
/* Lookup the pair of types T1 and T2 in *VISITED_P. Insert a new
entry if none existed. */
static type_pair_t
-lookup_type_pair (tree t1, tree t2, htab_t *visited_p)
+lookup_type_pair (tree t1, tree t2, htab_t *visited_p, struct obstack *ob_p)
{
struct type_pair_d pair;
type_pair_t p;
void **slot;
if (*visited_p == NULL)
- *visited_p = htab_create (251, type_pair_hash, type_pair_eq, free);
+ {
+ *visited_p = htab_create (251, type_pair_hash, type_pair_eq, NULL);
+ gcc_obstack_init (ob_p);
+ }
- pair.t1 = t1;
- pair.t2 = t2;
+ pair.uid1 = TYPE_UID (t1);
+ pair.uid2 = TYPE_UID (t2);
slot = htab_find_slot (*visited_p, &pair, INSERT);
if (*slot)
p = *((type_pair_t *) slot);
else
{
- p = XNEW (struct type_pair_d);
- p->t1 = t1;
- p->t2 = t2;
+ p = XOBNEW (ob_p, struct type_pair_d);
+ p->uid1 = TYPE_UID (t1);
+ p->uid2 = TYPE_UID (t2);
p->same_p = -2;
*slot = (void *) p;
}
@@ -3086,62 +3090,38 @@ lookup_type_pair (tree t1, tree t2, htab_t *visited_p)
}
-/* Force merging the type T2 into the type T1. */
-
-void
-gimple_force_type_merge (tree t1, tree t2)
-{
- void **slot;
- type_pair_t p;
-
- /* There's no other way than copying t2 to t1 in this case.
- Yuck. We'll just call this "completing" t1. */
- memcpy (t1, t2, tree_size (t1));
-
- /* Adjust the hash value of T1 if it was computed already. Otherwise
- we would be forced to not hash fields of structs to match the
- hash value of an incomplete struct. */
- if (type_hash_cache
- && (slot = pointer_map_contains (type_hash_cache, t1)) != NULL)
- {
- gimple_type_hash (t2);
- *slot = *pointer_map_contains (type_hash_cache, t2);
- }
-
- /* Adjust cached comparison results for T1 and T2 to make sure
- they now compare compatible. */
- p = lookup_type_pair (t1, t2, &gtc_visited);
- p->same_p = 1;
-}
-
-
-/* Return true if both types have the same name. */
+/* Return true if T1 and T2 have the same name. If FOR_COMPLETION_P is
+ true then if any type has no name return false, otherwise return
+ true if both types have no names. */
static bool
-compare_type_names_p (tree t1, tree t2)
+compare_type_names_p (tree t1, tree t2, bool for_completion_p)
{
tree name1 = TYPE_NAME (t1);
tree name2 = TYPE_NAME (t2);
- /* Consider anonymous types all unique. */
- if (!name1 || !name2)
+ /* Consider anonymous types all unique for completion. */
+ if (for_completion_p
+ && (!name1 || !name2))
return false;
- if (TREE_CODE (name1) == TYPE_DECL)
+ if (name1 && TREE_CODE (name1) == TYPE_DECL)
{
name1 = DECL_NAME (name1);
- if (!name1)
+ if (for_completion_p
+ && !name1)
return false;
}
- gcc_assert (TREE_CODE (name1) == IDENTIFIER_NODE);
+ gcc_assert (!name1 || TREE_CODE (name1) == IDENTIFIER_NODE);
- if (TREE_CODE (name2) == TYPE_DECL)
+ if (name2 && TREE_CODE (name2) == TYPE_DECL)
{
name2 = DECL_NAME (name2);
- if (!name2)
+ if (for_completion_p
+ && !name2)
return false;
}
- gcc_assert (TREE_CODE (name2) == IDENTIFIER_NODE);
+ gcc_assert (!name2 || TREE_CODE (name2) == IDENTIFIER_NODE);
/* Identifiers can be compared with pointer equality rather
than a string comparison. */
@@ -3187,30 +3167,64 @@ compare_field_offset (tree f1, tree f2)
/* Return 1 iff T1 and T2 are structurally identical.
Otherwise, return 0. */
-int
+static int
gimple_types_compatible_p (tree t1, tree t2)
{
type_pair_t p = NULL;
/* Check first for the obvious case of pointer identity. */
if (t1 == t2)
- goto same_types;
+ return 1;
/* Check that we have two types to compare. */
if (t1 == NULL_TREE || t2 == NULL_TREE)
- goto different_types;
+ return 0;
/* Can't be the same type if the types don't have the same code. */
if (TREE_CODE (t1) != TREE_CODE (t2))
- goto different_types;
+ return 0;
+
+ /* Can't be the same type if they have different CV qualifiers. */
+ if (TYPE_QUALS (t1) != TYPE_QUALS (t2))
+ return 0;
/* Void types are always the same. */
if (TREE_CODE (t1) == VOID_TYPE)
- goto same_types;
+ return 1;
- /* Can't be the same type if they have different CV qualifiers. */
- if (TYPE_QUALS (t1) != TYPE_QUALS (t2))
- goto different_types;
+ /* For numerical types do some simple checks before doing three
+ hashtable queries. */
+ if (INTEGRAL_TYPE_P (t1)
+ || SCALAR_FLOAT_TYPE_P (t1)
+ || FIXED_POINT_TYPE_P (t1)
+ || TREE_CODE (t1) == VECTOR_TYPE
+ || TREE_CODE (t1) == COMPLEX_TYPE)
+ {
+ /* Can't be the same type if they have different alignment,
+ sign, precision or mode. */
+ if (TYPE_ALIGN (t1) != TYPE_ALIGN (t2)
+ || TYPE_PRECISION (t1) != TYPE_PRECISION (t2)
+ || TYPE_MODE (t1) != TYPE_MODE (t2)
+ || TYPE_UNSIGNED (t1) != TYPE_UNSIGNED (t2))
+ return 0;
+
+ if (TREE_CODE (t1) == INTEGER_TYPE
+ && (TYPE_IS_SIZETYPE (t1) != TYPE_IS_SIZETYPE (t2)
+ || TYPE_STRING_FLAG (t1) != TYPE_STRING_FLAG (t2)))
+ return 0;
+
+ /* That's all we need to check for float and fixed-point types. */
+ if (SCALAR_FLOAT_TYPE_P (t1)
+ || FIXED_POINT_TYPE_P (t1))
+ return 1;
+
+ /* Perform cheap tail-recursion for vector and complex types. */
+ if (TREE_CODE (t1) == VECTOR_TYPE
+ || TREE_CODE (t1) == COMPLEX_TYPE)
+ return gimple_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2));
+
+ /* For integral types fall thru to more complex checks. */
+ }
/* If the hash values of t1 and t2 are different the types can't
possibly be the same. This helps keeping the type-pair hashtable
@@ -3220,7 +3234,7 @@ gimple_types_compatible_p (tree t1, tree t2)
/* If we've visited this type pair before (in the case of aggregates
with self-referential types), and we made a decision, return it. */
- p = lookup_type_pair (t1, t2, &gtc_visited);
+ p = lookup_type_pair (t1, t2, &gtc_visited, &gtc_ob);
if (p->same_p == 0 || p->same_p == 1)
{
/* We have already decided whether T1 and T2 are the
@@ -3243,71 +3257,6 @@ gimple_types_compatible_p (tree t1, tree t2)
if (!attribute_list_equal (TYPE_ATTRIBUTES (t1), TYPE_ATTRIBUTES (t2)))
goto different_types;
- /* For numerical types, the bounds must coincide. */
- if (INTEGRAL_TYPE_P (t1)
- || SCALAR_FLOAT_TYPE_P (t1)
- || FIXED_POINT_TYPE_P (t1))
- {
- /* Can't be the same type if they have different size, alignment,
- sign, precision or mode. Note that from now on, comparisons
- between *_CST nodes must be done using tree_int_cst_equal because
- we cannot assume that constants from T1 and T2 will be shared
- since T1 and T2 are distinct pointers. */
- if (!tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))
- || !tree_int_cst_equal (TYPE_SIZE_UNIT (t1), TYPE_SIZE_UNIT (t2))
- || TYPE_ALIGN (t1) != TYPE_ALIGN (t2)
- || TYPE_PRECISION (t1) != TYPE_PRECISION (t2)
- || TYPE_MODE (t1) != TYPE_MODE (t2)
- || TYPE_UNSIGNED (t1) != TYPE_UNSIGNED (t2))
- goto different_types;
-
- /* For non-enumeral types, check type bounds. FIXME lto, we
- cannot check bounds on enumeral types because different front
- ends will produce different values. In C, enumeral types are
- integers, while in C++ each element will have its own
- symbolic value. We should decide how enums are to be
- represented in GIMPLE and have each front end lower to that. */
- if (TREE_CODE (t1) != ENUMERAL_TYPE)
- {
- tree min1 = TYPE_MIN_VALUE (t1);
- tree max1 = TYPE_MAX_VALUE (t1);
- tree min2 = TYPE_MIN_VALUE (t2);
- tree max2 = TYPE_MAX_VALUE (t2);
- bool min_equal_p = false;
- bool max_equal_p = false;
-
- /* If either type has a minimum value, the other type must
- have the same. */
- if (min1 == NULL_TREE && min2 == NULL_TREE)
- min_equal_p = true;
- else if (min1 && min2 && operand_equal_p (min1, min2, 0))
- min_equal_p = true;
-
- /* Likewise, if either type has a maximum value, the other
- type must have the same. */
- if (max1 == NULL_TREE && max2 == NULL_TREE)
- max_equal_p = true;
- else if (max1 && max2 && operand_equal_p (max1, max2, 0))
- max_equal_p = true;
-
- if (!min_equal_p || !max_equal_p)
- goto different_types;
- }
-
- if (TREE_CODE (t1) == INTEGER_TYPE)
- {
- if (TYPE_IS_SIZETYPE (t1) == TYPE_IS_SIZETYPE (t2)
- && TYPE_STRING_FLAG (t1) == TYPE_STRING_FLAG (t2))
- goto same_types;
- else
- goto different_types;
- }
- else if (TREE_CODE (t1) == BOOLEAN_TYPE)
- goto same_types;
- else if (TREE_CODE (t1) == REAL_TYPE)
- goto same_types;
- }
-
/* Do type-specific comparisons. */
switch (TREE_CODE (t1))
{
@@ -3315,7 +3264,8 @@ gimple_types_compatible_p (tree t1, tree t2)
/* Array types are the same if the element types are the same and
the number of elements are the same. */
if (!gimple_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2))
- || TYPE_STRING_FLAG (t1) != TYPE_STRING_FLAG (t2))
+ || TYPE_STRING_FLAG (t1) != TYPE_STRING_FLAG (t2)
+ || TYPE_NONALIASED_COMPONENT (t1) != TYPE_NONALIASED_COMPONENT (t2))
goto different_types;
else
{
@@ -3395,118 +3345,157 @@ gimple_types_compatible_p (tree t1, tree t2)
case POINTER_TYPE:
case REFERENCE_TYPE:
- {
- /* If the two pointers have different ref-all attributes,
- they can't be the same type. */
- if (TYPE_REF_CAN_ALIAS_ALL (t1) != TYPE_REF_CAN_ALIAS_ALL (t2))
- goto different_types;
-
- /* If one pointer points to an incomplete type variant of
- the other pointed-to type they are the same. */
- if (TREE_CODE (TREE_TYPE (t1)) == TREE_CODE (TREE_TYPE (t2))
- && (!COMPLETE_TYPE_P (TREE_TYPE (t1))
- || !COMPLETE_TYPE_P (TREE_TYPE (t2)))
- && compare_type_names_p (TREE_TYPE (t1), TREE_TYPE (t2)))
- {
- /* If t2 is complete we want to choose it instead of t1. */
- if (COMPLETE_TYPE_P (TREE_TYPE (t2)))
- gimple_force_type_merge (TREE_TYPE (t1), TREE_TYPE (t2));
- goto same_types;
- }
+ {
+ /* If the two pointers have different ref-all attributes,
+ they can't be the same type. */
+ if (TYPE_REF_CAN_ALIAS_ALL (t1) != TYPE_REF_CAN_ALIAS_ALL (t2))
+ goto different_types;
- /* Otherwise, pointer and reference types are the same if the
- pointed-to types are the same. */
- if (gimple_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))
+ /* If one pointer points to an incomplete type variant of
+ the other pointed-to type they are the same. */
+ if (TREE_CODE (TREE_TYPE (t1)) == TREE_CODE (TREE_TYPE (t2))
+ && RECORD_OR_UNION_TYPE_P (TREE_TYPE (t1))
+ && (!COMPLETE_TYPE_P (TREE_TYPE (t1))
+ || !COMPLETE_TYPE_P (TREE_TYPE (t2)))
+ && compare_type_names_p (TREE_TYPE (t1), TREE_TYPE (t2), true))
+ {
+ /* Replace the pointed-to incomplete type with the
+ complete one. */
+ if (COMPLETE_TYPE_P (TREE_TYPE (t2)))
+ TREE_TYPE (t1) = TREE_TYPE (t2);
+ else
+ TREE_TYPE (t2) = TREE_TYPE (t1);
goto same_types;
-
+ }
+
+ /* Otherwise, pointer and reference types are the same if the
+ pointed-to types are the same. */
+ if (gimple_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))
+ goto same_types;
+
+ goto different_types;
+ }
+
+ case INTEGER_TYPE:
+ case BOOLEAN_TYPE:
+ {
+ tree min1 = TYPE_MIN_VALUE (t1);
+ tree max1 = TYPE_MAX_VALUE (t1);
+ tree min2 = TYPE_MIN_VALUE (t2);
+ tree max2 = TYPE_MAX_VALUE (t2);
+ bool min_equal_p = false;
+ bool max_equal_p = false;
+
+ /* If either type has a minimum value, the other type must
+ have the same. */
+ if (min1 == NULL_TREE && min2 == NULL_TREE)
+ min_equal_p = true;
+ else if (min1 && min2 && operand_equal_p (min1, min2, 0))
+ min_equal_p = true;
+
+ /* Likewise, if either type has a maximum value, the other
+ type must have the same. */
+ if (max1 == NULL_TREE && max2 == NULL_TREE)
+ max_equal_p = true;
+ else if (max1 && max2 && operand_equal_p (max1, max2, 0))
+ max_equal_p = true;
+
+ if (!min_equal_p || !max_equal_p)
goto different_types;
- }
- case ENUMERAL_TYPE:
- {
- /* For enumeral types, all the values must be the same. */
- tree v1, v2;
+ goto same_types;
+ }
- if (TYPE_VALUES (t1) == TYPE_VALUES (t2))
- goto same_types;
+ case ENUMERAL_TYPE:
+ {
+ /* FIXME lto, we cannot check bounds on enumeral types because
+ different front ends will produce different values.
+ In C, enumeral types are integers, while in C++ each element
+ will have its own symbolic value. We should decide how enums
+ are to be represented in GIMPLE and have each front end lower
+ to that. */
+ tree v1, v2;
+
+ /* For enumeral types, all the values must be the same. */
+ if (TYPE_VALUES (t1) == TYPE_VALUES (t2))
+ goto same_types;
- for (v1 = TYPE_VALUES (t1), v2 = TYPE_VALUES (t2);
- v1 && v2;
- v1 = TREE_CHAIN (v1), v2 = TREE_CHAIN (v2))
- {
- tree c1 = TREE_VALUE (v1);
- tree c2 = TREE_VALUE (v2);
+ for (v1 = TYPE_VALUES (t1), v2 = TYPE_VALUES (t2);
+ v1 && v2;
+ v1 = TREE_CHAIN (v1), v2 = TREE_CHAIN (v2))
+ {
+ tree c1 = TREE_VALUE (v1);
+ tree c2 = TREE_VALUE (v2);
- if (TREE_CODE (c1) == CONST_DECL)
- c1 = DECL_INITIAL (c1);
+ if (TREE_CODE (c1) == CONST_DECL)
+ c1 = DECL_INITIAL (c1);
- if (TREE_CODE (c2) == CONST_DECL)
- c2 = DECL_INITIAL (c2);
+ if (TREE_CODE (c2) == CONST_DECL)
+ c2 = DECL_INITIAL (c2);
- if (tree_int_cst_equal (c1, c2) != 1)
- goto different_types;
- }
+ if (tree_int_cst_equal (c1, c2) != 1)
+ goto different_types;
+ }
- /* If one enumeration has more values than the other, they
- are not the same. */
- if (v1 || v2)
- goto different_types;
+ /* If one enumeration has more values than the other, they
+ are not the same. */
+ if (v1 || v2)
+ goto different_types;
- goto same_types;
- }
+ goto same_types;
+ }
case RECORD_TYPE:
case UNION_TYPE:
case QUAL_UNION_TYPE:
- {
- /* For aggregate types, all the fields must be the same. */
- tree f1, f2;
+ {
+ tree f1, f2;
- /* Compare every field. */
- for (f1 = TYPE_FIELDS (t1), f2 = TYPE_FIELDS (t2);
- f1 && f2;
- f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
- {
- /* The fields must have the same name, offset and type. */
- if (DECL_NAME (f1) != DECL_NAME (f2)
- || !compare_field_offset (f1, f2)
- || !gimple_types_compatible_p (TREE_TYPE (f1),
- TREE_TYPE (f2)))
- goto different_types;
- }
+ /* If one type requires structural equality checks and the
+ other doesn't, do not merge the types. */
+ if (TYPE_STRUCTURAL_EQUALITY_P (t1)
+ != TYPE_STRUCTURAL_EQUALITY_P (t2))
+ goto different_types;
- /* If one aggregate has more fields than the other, they
- are not the same. */
- if (f1 || f2)
- goto different_types;
+ /* The struct tags shall compare equal. */
+ if (!compare_type_names_p (TYPE_MAIN_VARIANT (t1),
+ TYPE_MAIN_VARIANT (t2), false))
+ goto different_types;
- goto same_types;
- }
+ /* For aggregate types, all the fields must be the same. */
+ for (f1 = TYPE_FIELDS (t1), f2 = TYPE_FIELDS (t2);
+ f1 && f2;
+ f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
+ {
+ /* The fields must have the same name, offset and type. */
+ if (DECL_NAME (f1) != DECL_NAME (f2)
+ || DECL_NONADDRESSABLE_P (f1) != DECL_NONADDRESSABLE_P (f2)
+ || !compare_field_offset (f1, f2)
+ || !gimple_types_compatible_p (TREE_TYPE (f1),
+ TREE_TYPE (f2)))
+ goto different_types;
+ }
- case VECTOR_TYPE:
- if (TYPE_VECTOR_SUBPARTS (t1) != TYPE_VECTOR_SUBPARTS (t2))
- goto different_types;
+ /* If one aggregate has more fields than the other, they
+ are not the same. */
+ if (f1 || f2)
+ goto different_types;
- /* Fallthru */
- case COMPLEX_TYPE:
- if (!gimple_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))
- goto different_types;
- goto same_types;
+ goto same_types;
+ }
default:
- goto different_types;
+ gcc_unreachable ();
}
/* Common exit path for types that are not compatible. */
different_types:
- if (p)
- p->same_p = 0;
+ p->same_p = 0;
return 0;
/* Common exit path for types that are compatible. */
same_types:
- if (p)
- p->same_p = 1;
+ p->same_p = 1;
return 1;
}
@@ -3578,12 +3567,11 @@ visit (tree t, struct sccs *state, hashval_t v,
return v;
}
-/* Hash the name of TYPE with the previous hash value V and return it. */
+/* Hash NAME with the previous hash value V and return it. */
static hashval_t
-iterative_hash_type_name (tree type, hashval_t v)
+iterative_hash_name (tree name, hashval_t v)
{
- tree name = TYPE_NAME (TYPE_MAIN_VARIANT (type));
if (!name)
return v;
if (TREE_CODE (name) == TYPE_DECL)
@@ -3655,17 +3643,35 @@ iterative_hash_gimple_type (tree type, hashval_t val,
avoid hash differences for complete vs. incomplete types. */
if (POINTER_TYPE_P (type))
{
- if (AGGREGATE_TYPE_P (TREE_TYPE (type)))
+ if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (type)))
{
v = iterative_hash_hashval_t (TREE_CODE (TREE_TYPE (type)), v);
- v = iterative_hash_type_name (type, v);
+ v = iterative_hash_name
+ (TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (type))), v);
}
else
v = visit (TREE_TYPE (type), state, v,
sccstack, sccstate, sccstate_obstack);
}
- /* Recurse for aggregates with a single element. */
+ /* For integer types hash the types min/max values and the string flag. */
+ if (TREE_CODE (type) == INTEGER_TYPE)
+ {
+ v = iterative_hash_expr (TYPE_MIN_VALUE (type), v);
+ v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
+ v = iterative_hash_hashval_t (TYPE_STRING_FLAG (type), v);
+ }
+
+ /* For array types hash their domain and the string flag. */
+ if (TREE_CODE (type) == ARRAY_TYPE
+ && TYPE_DOMAIN (type))
+ {
+ v = iterative_hash_hashval_t (TYPE_STRING_FLAG (type), v);
+ v = visit (TYPE_DOMAIN (type), state, v,
+ sccstack, sccstate, sccstate_obstack);
+ }
+
+ /* Recurse for aggregates with a single element type. */
if (TREE_CODE (type) == ARRAY_TYPE
|| TREE_CODE (type) == COMPLEX_TYPE
|| TREE_CODE (type) == VECTOR_TYPE)
@@ -3703,10 +3709,11 @@ iterative_hash_gimple_type (tree type, hashval_t val,
unsigned nf;
tree f;
- v = iterative_hash_type_name (type, v);
+ v = iterative_hash_name (TYPE_NAME (TYPE_MAIN_VARIANT (type)), v);
for (f = TYPE_FIELDS (type), nf = 0; f; f = TREE_CHAIN (f))
{
+ v = iterative_hash_name (DECL_NAME (f), v);
v = visit (TREE_TYPE (f), state, v,
sccstack, sccstate, sccstate_obstack);
nf++;
@@ -3802,6 +3809,12 @@ gimple_register_type (tree t)
gcc_assert (TYPE_P (t));
+ /* Always register the main variant first. This is important so we
+ pick up the non-typedef variants as canonical, otherwise we'll end
+ up taking typedef ids for structure tags during comparison. */
+ if (TYPE_MAIN_VARIANT (t) != t)
+ gimple_register_type (TYPE_MAIN_VARIANT (t));
+
if (gimple_types == NULL)
gimple_types = htab_create (16381, gimple_type_hash, gimple_type_eq, 0);
@@ -3917,6 +3930,7 @@ free_gimple_type_tables (void)
if (gtc_visited)
{
htab_delete (gtc_visited);
+ obstack_free (&gtc_ob, NULL);
gtc_visited = NULL;
}
}
@@ -4106,6 +4120,7 @@ gimple_signed_type (tree type)
alias_set_type
gimple_get_alias_set (tree t)
{
+ static bool recursing_p;
tree u;
/* Permit type-punning when accessing a union, provided the access
@@ -4147,6 +4162,12 @@ gimple_get_alias_set (tree t)
{
tree t1;
+ /* ??? We can end up creating cycles with TYPE_MAIN_VARIANT
+ and TYPE_CANONICAL. Avoid recursing endlessly between
+ this langhook and get_alias_set. */
+ if (recursing_p)
+ return -1;
+
/* Unfortunately, there is no canonical form of a pointer type.
In particular, if we have `typedef int I', then `int *', and
`I *' are different types. So, we have to pick a canonical
@@ -4171,7 +4192,13 @@ gimple_get_alias_set (tree t)
C++ committee. */
t1 = build_type_no_quals (t);
if (t1 != t)
- return get_alias_set (t1);
+ {
+ alias_set_type set;
+ recursing_p = true;
+ set = get_alias_set (t1);
+ recursing_p = false;
+ return set;
+ }
}
return -1;
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 3998bdfe03e..87309b694d4 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -915,8 +915,6 @@ extern bool is_gimple_call_addr (tree);
extern tree get_call_expr_in (tree t);
extern void recalculate_side_effects (tree);
-extern void gimple_force_type_merge (tree, tree);
-extern int gimple_types_compatible_p (tree, tree);
extern tree gimple_register_type (tree);
extern void print_gimple_types_stats (void);
extern void free_gimple_type_tables (void);
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index dc0791f6f2f..7cbe1ecee51 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -989,7 +989,7 @@ dep_list_size (rtx insn)
{
if (DEBUG_INSN_P (DEP_CON (dep)))
dbgcount++;
- else
+ else if (!DEBUG_INSN_P (DEP_PRO (dep)))
nodbgcount++;
}
@@ -1688,6 +1688,39 @@ schedule_insn (rtx insn)
should have been removed from the ready list. */
gcc_assert (sd_lists_empty_p (insn, SD_LIST_BACK));
+ /* Reset debug insns invalidated by moving this insn. */
+ if (MAY_HAVE_DEBUG_INSNS && !DEBUG_INSN_P (insn))
+ for (sd_it = sd_iterator_start (insn, SD_LIST_BACK);
+ sd_iterator_cond (&sd_it, &dep);)
+ {
+ rtx dbg = DEP_PRO (dep);
+
+ gcc_assert (DEBUG_INSN_P (dbg));
+
+ if (sched_verbose >= 6)
+ fprintf (sched_dump, ";;\t\tresetting: debug insn %d\n",
+ INSN_UID (dbg));
+
+ /* ??? Rather than resetting the debug insn, we might be able
+ to emit a debug temp before the just-scheduled insn, but
+ this would involve checking that the expression at the
+ point of the debug insn is equivalent to the expression
+ before the just-scheduled insn. They might not be: the
+ expression in the debug insn may depend on other insns not
+ yet scheduled that set MEMs, REGs or even other debug
+ insns. It's not clear that attempting to preserve debug
+ information in these cases is worth the effort, given how
+ uncommon these resets are and the likelihood that the debug
+ temps introduced won't survive the schedule change. */
+ INSN_VAR_LOCATION_LOC (dbg) = gen_rtx_UNKNOWN_VAR_LOC ();
+ df_insn_rescan (dbg);
+
+ /* We delete rather than resolve these deps, otherwise we
+ crash in sched_free_deps(), because forward deps are
+ expected to be released before backward deps. */
+ sd_delete_dep (sd_it);
+ }
+
gcc_assert (QUEUE_INDEX (insn) == QUEUE_NOWHERE);
QUEUE_INDEX (insn) = QUEUE_SCHEDULED;
@@ -1712,6 +1745,12 @@ schedule_insn (rtx insn)
advancing the iterator. */
sd_resolve_dep (sd_it);
+ /* Don't bother trying to mark next as ready if insn is a debug
+ insn. If insn is the last hard dependency, it will have
+ already been discounted. */
+ if (DEBUG_INSN_P (insn) && !DEBUG_INSN_P (next))
+ continue;
+
if (!IS_SPECULATION_BRANCHY_CHECK_P (insn))
{
int effective_cost;
@@ -3715,6 +3754,10 @@ try_ready (rtx next)
{
ds_t ds = DEP_STATUS (dep) & SPECULATIVE;
+ if (DEBUG_INSN_P (DEP_PRO (dep))
+ && !DEBUG_INSN_P (next))
+ continue;
+
if (first_p)
{
first_p = false;
diff --git a/gcc/input.h b/gcc/input.h
index 299f56c3ce6..7f00dc7cd0a 100644
--- a/gcc/input.h
+++ b/gcc/input.h
@@ -1,6 +1,6 @@
/* Declarations for variables relating to reading the source file.
Used by parsers, lexical analyzers, and error message routines.
- Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008
+ Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -30,7 +30,12 @@ extern GTY(()) struct line_maps *line_table;
#define UNKNOWN_LOCATION ((source_location) 0)
/* The location for declarations in "<built-in>" */
-#define BUILTINS_LOCATION ((source_location) 2)
+#define BUILTINS_LOCATION ((source_location) 1)
+
+/* line-map.c reserves RESERVED_LOCATION_COUNT to the user. Ensure
+ both UNKNOWN_LOCATION and BUILTINS_LOCATION fit into that. */
+extern char builtins_location_check[(BUILTINS_LOCATION
+ < RESERVED_LOCATION_COUNT) ? 1 : -1];
typedef struct GTY (())
{
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 59a051915f6..79ff16e0e7f 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -299,9 +299,16 @@ ipcp_lattice_from_jfunc (struct ipa_node_params *info, struct ipcp_lattice *lat,
cst = caller_lat->constant;
if (jfunc->value.pass_through.operation != NOP_EXPR)
- cst = fold_binary (jfunc->value.pass_through.operation,
- TREE_TYPE (cst), cst,
- jfunc->value.pass_through.operand);
+ {
+ tree restype;
+ if (TREE_CODE_CLASS (jfunc->value.pass_through.operation)
+ == tcc_comparison)
+ restype = boolean_type_node;
+ else
+ restype = TREE_TYPE (cst);
+ cst = fold_binary (jfunc->value.pass_through.operation,
+ restype, cst, jfunc->value.pass_through.operand);
+ }
if (!cst || !is_gimple_ip_invariant (cst))
lat->type = IPA_BOTTOM;
lat->constant = cst;
@@ -607,7 +614,9 @@ ipcp_init_stage (void)
/* building jump functions */
for (cs = node->callees; cs; cs = cs->next_callee)
{
- if (!cs->callee->analyzed)
+ /* We do not need to bother analyzing calls to unknown
+ functions unless they may become known during lto/whopr. */
+ if (!cs->callee->analyzed && !flag_lto && !flag_whopr)
continue;
ipa_count_arguments (cs);
if (ipa_get_cs_argument_count (IPA_EDGE_REF (cs))
@@ -689,7 +698,9 @@ ipcp_propagate_stage (void)
struct ipa_node_params *callee_info = IPA_NODE_REF (cs->callee);
struct ipa_edge_args *args = IPA_EDGE_REF (cs);
- if (ipa_is_called_with_var_arguments (callee_info))
+ if (ipa_is_called_with_var_arguments (callee_info)
+ || !cs->callee->analyzed
+ || ipa_is_called_with_var_arguments (callee_info))
continue;
count = ipa_get_cs_argument_count (args);
@@ -720,6 +731,10 @@ ipcp_iterate_stage (void)
if (dump_file)
fprintf (dump_file, "\nIPA iterate stage:\n\n");
+
+ if (in_lto_p)
+ ipa_update_after_lto_read ();
+
for (node = cgraph_nodes; node; node = node->next)
{
ipcp_initialize_node_lattices (node);
@@ -1269,17 +1284,25 @@ ipcp_generate_summary (void)
ipcp_init_stage ();
}
+/* Write ipcp summary for nodes in SET. */
+static void
+ipcp_write_summary (cgraph_node_set set)
+{
+ ipa_prop_write_jump_functions (set);
+}
+
+/* Read ipcp summary. */
+static void
+ipcp_read_summary (void)
+{
+ ipa_prop_read_jump_functions ();
+}
+
/* Gate for IPCP optimization. */
static bool
cgraph_gate_cp (void)
{
- /* FIXME lto. IPA-CP does not tolerate running when the inlining decisions
- have not been applied. This happens when WPA modifies the callgraph.
- Since those decisions are not applied until after all the IPA passes
- have been run in LTRANS, this means that IPA passes may see partially
- modified callgraphs. The solution to this is to apply WPA decisions
- early during LTRANS. */
- return flag_ipa_cp && !flag_ltrans;
+ return flag_ipa_cp;
}
struct ipa_opt_pass_d pass_ipa_cp =
@@ -1301,8 +1324,8 @@ struct ipa_opt_pass_d pass_ipa_cp =
TODO_remove_functions /* todo_flags_finish */
},
ipcp_generate_summary, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
+ ipcp_write_summary, /* write_summary */
+ ipcp_read_summary, /* read_summary */
NULL, /* function_read_summary */
0, /* TODOs */
NULL, /* function_transform */
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 18e440a60fe..81c3379ca2e 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -310,7 +310,7 @@ cgraph_mark_inline_edge (struct cgraph_edge *e, bool update_original,
overall_size -= orig_size;
ncalls_inlined++;
- if (flag_indirect_inlining)
+ if (flag_indirect_inlining && !flag_wpa)
return ipa_propagate_indirect_call_infos (curr, new_edges);
else
return false;
@@ -876,7 +876,7 @@ cgraph_decide_inlining_of_small_functions (void)
int min_size, max_size;
VEC (cgraph_edge_p, heap) *new_indirect_edges = NULL;
- if (flag_indirect_inlining)
+ if (flag_indirect_inlining && !flag_wpa)
new_indirect_edges = VEC_alloc (cgraph_edge_p, heap, 8);
if (dump_file)
@@ -1023,10 +1023,10 @@ cgraph_decide_inlining_of_small_functions (void)
if (where->global.inlined_to)
where = where->global.inlined_to;
if (!cgraph_decide_recursive_inlining (where,
- flag_indirect_inlining
+ flag_indirect_inlining && !flag_wpa
? &new_indirect_edges : NULL))
continue;
- if (flag_indirect_inlining)
+ if (flag_indirect_inlining && !flag_wpa)
add_new_edges_to_heap (heap, new_indirect_edges);
update_callee_keys (heap, where, updated_nodes);
}
@@ -1045,7 +1045,7 @@ cgraph_decide_inlining_of_small_functions (void)
}
callee = edge->callee;
cgraph_mark_inline_edge (edge, true, &new_indirect_edges);
- if (flag_indirect_inlining)
+ if (flag_indirect_inlining && !flag_wpa)
add_new_edges_to_heap (heap, new_indirect_edges);
update_callee_keys (heap, callee, updated_nodes);
@@ -1113,13 +1113,9 @@ cgraph_decide_inlining (void)
bool redo_always_inline = true;
int initial_size = 0;
- /* FIXME lto. We need to rethink how to coordinate different passes. */
- if (flag_ltrans)
- return 0;
-
- /* FIXME lto. We need to re-think about how the passes get invoked. */
- if (!flag_wpa)
- cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
+ cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
+ if (in_lto_p && flag_indirect_inlining && !flag_wpa)
+ ipa_update_after_lto_read ();
max_count = 0;
max_benefit = 0;
@@ -1272,7 +1268,7 @@ cgraph_decide_inlining (void)
}
/* Free ipa-prop structures if they are no longer needed. */
- if (flag_indirect_inlining)
+ if (flag_indirect_inlining && !flag_wpa)
free_all_ipa_structures_after_iinln ();
if (dump_file)
@@ -1593,10 +1589,10 @@ cgraph_early_inlining (void)
if (sorrycount || errorcount)
return 0;
- while (cgraph_decide_inlining_incrementally (node,
- iterations
- ? INLINE_SIZE_NORECURSIVE : INLINE_SIZE, 0)
- && iterations < PARAM_VALUE (PARAM_EARLY_INLINER_MAX_ITERATIONS))
+ while (iterations < PARAM_VALUE (PARAM_EARLY_INLINER_MAX_ITERATIONS)
+ && cgraph_decide_inlining_incrementally (node,
+ iterations
+ ? INLINE_SIZE_NORECURSIVE : INLINE_SIZE, 0))
{
timevar_push (TV_INTEGRATION);
todo |= optimize_inline_calls (current_function_decl);
@@ -1928,10 +1924,6 @@ inline_generate_summary (void)
{
struct cgraph_node *node;
- /* FIXME lto. We should not run any IPA-summary pass in LTRANS mode. */
- if (flag_ltrans)
- return;
-
function_insertion_hook_holder =
cgraph_add_function_insertion_hook (&add_new_function, NULL);
@@ -1976,6 +1968,34 @@ inline_transform (struct cgraph_node *node)
return todo | execute_fixup_cfg ();
}
+/* Read inline summary. Jump functions are shared among ipa-cp
+ and inliner, so when ipa-cp is active, we don't need to write them
+ twice. */
+
+static void
+inline_read_summary (void)
+{
+ if (flag_indirect_inlining && !flag_wpa)
+ {
+ ipa_register_cgraph_hooks ();
+ if (!flag_ipa_cp)
+ ipa_prop_read_jump_functions ();
+ }
+ function_insertion_hook_holder =
+ cgraph_add_function_insertion_hook (&add_new_function, NULL);
+}
+
+/* Write inline summary for node in SET.
+ Jump functions are shared among ipa-cp and inliner, so when ipa-cp is
+ active, we don't need to write them twice. */
+
+static void
+inline_write_summary (cgraph_node_set set)
+{
+ if (flag_indirect_inlining && !flag_ipa_cp)
+ ipa_prop_write_jump_functions (set);
+}
+
struct ipa_opt_pass_d pass_ipa_inline =
{
{
@@ -1995,8 +2015,8 @@ struct ipa_opt_pass_d pass_ipa_inline =
| TODO_remove_functions /* todo_flags_finish */
},
inline_generate_summary, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
+ inline_write_summary, /* write_summary */
+ inline_read_summary, /* read_summary */
NULL, /* function_read_summary */
0, /* TODOs */
inline_transform, /* function_transform */
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 0e6aaf51168..9956fbc53b7 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -33,11 +33,12 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "flags.h"
#include "diagnostic.h"
+#include "lto-streamer.h"
/* Vector where the parameter infos are actually stored. */
VEC (ipa_node_params_t, heap) *ipa_node_params_vector;
/* Vector where the parameter infos are actually stored. */
-VEC (ipa_edge_args_t, heap) *ipa_edge_args_vector;
+VEC (ipa_edge_args_t, gc) *ipa_edge_args_vector;
/* Holders of ipa cgraph hooks: */
static struct cgraph_edge_hook_list *edge_removal_hook_holder;
@@ -248,7 +249,7 @@ ipa_count_arguments (struct cgraph_edge *cs)
arg_num = gimple_call_num_args (stmt);
if (VEC_length (ipa_edge_args_t, ipa_edge_args_vector)
<= (unsigned) cgraph_edge_max_uid)
- VEC_safe_grow_cleared (ipa_edge_args_t, heap,
+ VEC_safe_grow_cleared (ipa_edge_args_t, gc,
ipa_edge_args_vector, cgraph_edge_max_uid + 1);
ipa_set_cs_argument_count (IPA_EDGE_REF (cs), arg_num);
}
@@ -357,6 +358,9 @@ compute_complex_pass_through (struct ipa_node_params *info,
{
if (TREE_CODE (op1) != SSA_NAME
|| !SSA_NAME_IS_DEFAULT_DEF (op1)
+ || (TREE_CODE_CLASS (gimple_expr_code (stmt)) != tcc_comparison
+ && !useless_type_conversion_p (TREE_TYPE (name),
+ TREE_TYPE (op1)))
|| !is_gimple_ip_invariant (op2))
return;
@@ -658,8 +662,8 @@ ipa_compute_jump_functions (struct cgraph_edge *cs)
if (ipa_get_cs_argument_count (arguments) == 0 || arguments->jump_functions)
return;
- arguments->jump_functions = XCNEWVEC (struct ipa_jump_func,
- ipa_get_cs_argument_count (arguments));
+ arguments->jump_functions = GGC_CNEWVEC (struct ipa_jump_func,
+ ipa_get_cs_argument_count (arguments));
call = cs->call_stmt;
gcc_assert (is_gimple_call (call));
@@ -1170,7 +1174,7 @@ void
ipa_free_edge_args_substructures (struct ipa_edge_args *args)
{
if (args->jump_functions)
- free (args->jump_functions);
+ ggc_free (args->jump_functions);
memset (args, 0, sizeof (*args));
}
@@ -1188,7 +1192,7 @@ ipa_free_all_edge_args (void)
i++)
ipa_free_edge_args_substructures (args);
- VEC_free (ipa_edge_args_t, heap, ipa_edge_args_vector);
+ VEC_free (ipa_edge_args_t, gc, ipa_edge_args_vector);
ipa_edge_args_vector = NULL;
}
@@ -1259,7 +1263,22 @@ duplicate_array (void *src, size_t n)
if (!src)
return NULL;
- p = xcalloc (1, n);
+ p = xmalloc (n);
+ memcpy (p, src, n);
+ return p;
+}
+
+/* Like duplicate_array byt in GGC memory. */
+
+static void *
+duplicate_ggc_array (void *src, size_t n)
+{
+ void *p;
+
+ if (!src)
+ return NULL;
+
+ p = ggc_alloc (n);
memcpy (p, src, n);
return p;
}
@@ -1281,8 +1300,8 @@ ipa_edge_duplication_hook (struct cgraph_edge *src, struct cgraph_edge *dst,
arg_count = ipa_get_cs_argument_count (old_args);
ipa_set_cs_argument_count (new_args, arg_count);
new_args->jump_functions = (struct ipa_jump_func *)
- duplicate_array (old_args->jump_functions,
- sizeof (struct ipa_jump_func) * arg_count);
+ duplicate_ggc_array (old_args->jump_functions,
+ sizeof (struct ipa_jump_func) * arg_count);
}
/* Hook that is called by cgraph.c when a node is duplicated. */
@@ -1872,3 +1891,283 @@ ipa_dump_param_adjustments (FILE *file, ipa_parm_adjustment_vec adjustments,
VEC_free (tree, heap, parms);
}
+/* Stream out jump function JUMP_FUNC to OB. */
+
+static void
+ipa_write_jump_function (struct output_block *ob,
+ struct ipa_jump_func *jump_func)
+{
+ lto_output_uleb128_stream (ob->main_stream,
+ jump_func->type);
+
+ switch (jump_func->type)
+ {
+ case IPA_JF_UNKNOWN:
+ break;
+ case IPA_JF_CONST:
+ lto_output_tree (ob, jump_func->value.constant, true);
+ break;
+ case IPA_JF_PASS_THROUGH:
+ lto_output_tree (ob, jump_func->value.pass_through.operand, true);
+ lto_output_uleb128_stream (ob->main_stream,
+ jump_func->value.pass_through.formal_id);
+ lto_output_uleb128_stream (ob->main_stream,
+ jump_func->value.pass_through.operation);
+ break;
+ case IPA_JF_ANCESTOR:
+ lto_output_uleb128_stream (ob->main_stream,
+ jump_func->value.ancestor.offset);
+ lto_output_tree (ob, jump_func->value.ancestor.type, true);
+ lto_output_uleb128_stream (ob->main_stream,
+ jump_func->value.ancestor.formal_id);
+ break;
+ case IPA_JF_CONST_MEMBER_PTR:
+ lto_output_tree (ob, jump_func->value.member_cst.pfn, true);
+ lto_output_tree (ob, jump_func->value.member_cst.delta, false);
+ break;
+ }
+}
+
+/* Read in jump function JUMP_FUNC from IB. */
+
+static void
+ipa_read_jump_function (struct lto_input_block *ib,
+ struct ipa_jump_func *jump_func,
+ struct data_in *data_in)
+{
+ jump_func->type = (enum jump_func_type) lto_input_uleb128 (ib);
+
+ switch (jump_func->type)
+ {
+ case IPA_JF_UNKNOWN:
+ break;
+ case IPA_JF_CONST:
+ jump_func->value.constant = lto_input_tree (ib, data_in);
+ break;
+ case IPA_JF_PASS_THROUGH:
+ jump_func->value.pass_through.operand = lto_input_tree (ib, data_in);
+ jump_func->value.pass_through.formal_id = lto_input_uleb128 (ib);
+ jump_func->value.pass_through.operation = (enum tree_code) lto_input_uleb128 (ib);
+ break;
+ case IPA_JF_ANCESTOR:
+ jump_func->value.ancestor.offset = lto_input_uleb128 (ib);
+ jump_func->value.ancestor.type = lto_input_tree (ib, data_in);
+ jump_func->value.ancestor.formal_id = lto_input_uleb128 (ib);
+ break;
+ case IPA_JF_CONST_MEMBER_PTR:
+ jump_func->value.member_cst.pfn = lto_input_tree (ib, data_in);
+ jump_func->value.member_cst.delta = lto_input_tree (ib, data_in);
+ break;
+ }
+}
+
+/* Stream out NODE info to OB. */
+
+static void
+ipa_write_node_info (struct output_block *ob, struct cgraph_node *node)
+{
+ int node_ref;
+ lto_cgraph_encoder_t encoder;
+ struct ipa_node_params *info = IPA_NODE_REF (node);
+ int j;
+ struct cgraph_edge *e;
+ struct bitpack_d *bp;
+
+ encoder = ob->decl_state->cgraph_node_encoder;
+ node_ref = lto_cgraph_encoder_encode (encoder, node);
+ lto_output_uleb128_stream (ob->main_stream, node_ref);
+
+ /* Note that flags will need to be read in the opposite
+ order as we are pushing the bitflags into FLAGS. */
+ bp = bitpack_create ();
+ bp_pack_value (bp, info->called_with_var_arguments, 1);
+ gcc_assert (info->modification_analysis_done || ipa_get_param_count (info) == 0);
+ gcc_assert (info->uses_analysis_done || ipa_get_param_count (info) == 0);
+ gcc_assert (!info->node_enqueued);
+ gcc_assert (!info->ipcp_orig_node);
+ for (j = 0; j < ipa_get_param_count (info); j++)
+ {
+ bp_pack_value (bp, info->params[j].modified, 1);
+ bp_pack_value (bp, info->params[j].called, 1);
+ }
+ lto_output_bitpack (ob->main_stream, bp);
+ bitpack_delete (bp);
+ for (e = node->callees; e; e = e->next_callee)
+ {
+ struct ipa_edge_args *args = IPA_EDGE_REF (e);
+
+ lto_output_uleb128_stream (ob->main_stream, ipa_get_cs_argument_count (args));
+ for (j = 0; j < ipa_get_cs_argument_count (args); j++)
+ ipa_write_jump_function (ob, ipa_get_ith_jump_func (args, j));
+ }
+}
+
+/* Srtream in NODE info from IB. */
+
+static void
+ipa_read_node_info (struct lto_input_block *ib, struct cgraph_node *node,
+ struct data_in *data_in)
+{
+ struct ipa_node_params *info = IPA_NODE_REF (node);
+ int k;
+ struct cgraph_edge *e;
+ struct bitpack_d *bp;
+
+ ipa_initialize_node_params (node);
+
+ /* Note that the flags must be read in the opposite
+ order in which they were written (the bitflags were
+ pushed into FLAGS). */
+ bp = lto_input_bitpack (ib);
+ info->called_with_var_arguments = bp_unpack_value (bp, 1);
+ if (ipa_get_param_count (info) != 0)
+ {
+ info->modification_analysis_done = true;
+ info->uses_analysis_done = true;
+ }
+ info->node_enqueued = false;
+ for (k = 0; k < ipa_get_param_count (info); k++)
+ {
+ info->params[k].modified = bp_unpack_value (bp, 1);
+ info->params[k].called = bp_unpack_value (bp, 1);
+ }
+ bitpack_delete (bp);
+ for (e = node->callees; e; e = e->next_callee)
+ {
+ struct ipa_edge_args *args = IPA_EDGE_REF (e);
+ int count = lto_input_uleb128 (ib);
+
+ if (VEC_length (ipa_edge_args_t, ipa_edge_args_vector)
+ <= (unsigned) cgraph_edge_max_uid)
+ VEC_safe_grow_cleared (ipa_edge_args_t, gc,
+ ipa_edge_args_vector, cgraph_edge_max_uid + 1);
+ ipa_set_cs_argument_count (args, count);
+ if (!count)
+ continue;
+
+ args->jump_functions = GGC_CNEWVEC (struct ipa_jump_func,
+ ipa_get_cs_argument_count (args));
+ for (k = 0; k < ipa_get_cs_argument_count (args); k++)
+ ipa_read_jump_function (ib, ipa_get_ith_jump_func (args, k), data_in);
+ }
+}
+
+/* Write jump functions for nodes in SET. */
+
+void
+ipa_prop_write_jump_functions (cgraph_node_set set)
+{
+ struct cgraph_node *node;
+ struct output_block *ob = create_output_block (LTO_section_jump_functions);
+ unsigned int count = 0;
+ cgraph_node_set_iterator csi;
+
+ ob->cgraph_node = NULL;
+
+ for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ {
+ node = csi_node (csi);
+ if (node->analyzed && IPA_NODE_REF (node) != NULL)
+ count++;
+ }
+
+ lto_output_uleb128_stream (ob->main_stream, count);
+
+ /* Process all of the functions. */
+ for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+ {
+ node = csi_node (csi);
+ if (node->analyzed && IPA_NODE_REF (node) != NULL)
+ ipa_write_node_info (ob, node);
+ }
+ lto_output_1_stream (ob->main_stream, 0);
+ produce_asm (ob, NULL);
+ destroy_output_block (ob);
+}
+
+/* Read section in file FILE_DATA of length LEN with data DATA. */
+
+static void
+ipa_prop_read_section (struct lto_file_decl_data *file_data, const char *data,
+ size_t len)
+{
+ const struct lto_function_header *header =
+ (const struct lto_function_header *) data;
+ const int32_t cfg_offset = sizeof (struct lto_function_header);
+ const int32_t main_offset = cfg_offset + header->cfg_size;
+ const int32_t string_offset = main_offset + header->main_size;
+ struct data_in *data_in;
+ struct lto_input_block ib_main;
+ unsigned int i;
+ unsigned int count;
+
+ LTO_INIT_INPUT_BLOCK (ib_main, (const char *) data + main_offset, 0,
+ header->main_size);
+
+ data_in =
+ lto_data_in_create (file_data, (const char *) data + string_offset,
+ header->string_size, NULL);
+ count = lto_input_uleb128 (&ib_main);
+
+ for (i = 0; i < count; i++)
+ {
+ unsigned int index;
+ struct cgraph_node *node;
+ lto_cgraph_encoder_t encoder;
+
+ index = lto_input_uleb128 (&ib_main);
+ encoder = file_data->cgraph_node_encoder;
+ node = lto_cgraph_encoder_deref (encoder, index);
+ ipa_read_node_info (&ib_main, node, data_in);
+ }
+ lto_free_section_data (file_data, LTO_section_jump_functions, NULL, data,
+ len);
+ lto_data_in_delete (data_in);
+}
+
+/* Read ipcp jump functions. */
+
+void
+ipa_prop_read_jump_functions (void)
+{
+ struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data ();
+ struct lto_file_decl_data *file_data;
+ unsigned int j = 0;
+
+ ipa_check_create_node_params ();
+ ipa_check_create_edge_args ();
+ ipa_register_cgraph_hooks ();
+
+ while ((file_data = file_data_vec[j++]))
+ {
+ size_t len;
+ const char *data = lto_get_section_data (file_data, LTO_section_jump_functions, NULL, &len);
+
+ if (data)
+ ipa_prop_read_section (file_data, data, len);
+ }
+}
+
+/* After merging units, we can get mismatch in argument counts.
+ Also decl merging might've rendered parameter lists obsolette.
+ Also compute called_with_variable_arg info. */
+
+void
+ipa_update_after_lto_read (void)
+{
+ struct cgraph_node *node;
+ struct cgraph_edge *cs;
+
+ for (node = cgraph_nodes; node; node = node->next)
+ {
+ if (!node->analyzed)
+ continue;
+ ipa_populate_param_decls (node, IPA_NODE_REF (node));
+ for (cs = node->callees; cs; cs = cs->next_callee)
+ {
+ if (ipa_get_cs_argument_count (IPA_EDGE_REF (cs))
+ != ipa_get_param_count (IPA_NODE_REF (cs->callee)))
+ ipa_set_called_with_variable_arg (IPA_NODE_REF (cs->callee));
+ }
+ }
+}
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index 9b5f74f87ad..35005954deb 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -72,7 +72,7 @@ enum ipa_lattice_type
/* Structure holding data required to describe a pass-through jump function. */
-struct ipa_pass_through_data
+struct GTY(()) ipa_pass_through_data
{
/* If an operation is to be performed on the original parameter, this is the
second (constant) operand. */
@@ -89,7 +89,7 @@ struct ipa_pass_through_data
/* Structure holding data required to describe and ancestor pass throu
funkci. */
-struct ipa_ancestor_jf_data
+struct GTY(()) ipa_ancestor_jf_data
{
/* Offset of the field representing the ancestor. */
HOST_WIDE_INT offset;
@@ -101,30 +101,28 @@ struct ipa_ancestor_jf_data
/* Structure holding a C++ member pointer constant. Holds a pointer to the
method and delta offset. */
-struct ipa_member_ptr_cst
+struct GTY(()) ipa_member_ptr_cst
{
tree pfn;
tree delta;
};
-/* Represents a value of a jump function. pass_through is used only in jump
- function context. constant represents the actual constant in constant jump
- functions and member_cst holds constant c++ member functions. */
-union jump_func_value
-{
- tree constant;
- struct ipa_pass_through_data pass_through;
- struct ipa_ancestor_jf_data ancestor;
- struct ipa_member_ptr_cst member_cst;
-};
-
/* A jump function for a callsite represents the values passed as actual
arguments of the callsite. See enum jump_func_type for the various
types of jump functions supported. */
-struct ipa_jump_func
+struct GTY (()) ipa_jump_func
{
enum jump_func_type type;
- union jump_func_value value;
+ /* Represents a value of a jump function. pass_through is used only in jump
+ function context. constant represents the actual constant in constant jump
+ functions and member_cst holds constant c++ member functions. */
+ union jump_func_value
+ {
+ tree GTY ((tag ("IPA_JF_CONST"))) constant;
+ struct ipa_pass_through_data GTY ((tag ("IPA_JF_PASS_THROUGH"))) pass_through;
+ struct ipa_ancestor_jf_data GTY ((tag ("IPA_JF_ANCESTOR"))) ancestor;
+ struct ipa_member_ptr_cst GTY ((tag ("IPA_JF_CONST_MEMBER_PTR"))) member_cst;
+ } GTY ((desc ("%1.type"))) value;
};
/* All formal parameters in the program have a cval computed by
@@ -280,15 +278,15 @@ ipa_is_called_with_var_arguments (struct ipa_node_params *info)
/* ipa_edge_args stores information related to a callsite and particularly
its arguments. It is pointed to by a field in the
callsite's corresponding cgraph_edge. */
-struct ipa_edge_args
+typedef struct GTY(()) ipa_edge_args
{
/* Number of actual arguments in this callsite. When set to 0,
this callsite's parameters would not be analyzed by the different
stages of IPA CP. */
int argument_count;
/* Array of the callsite's jump function of each parameter. */
- struct ipa_jump_func *jump_functions;
-};
+ struct ipa_jump_func GTY ((length ("%h.argument_count"))) *jump_functions;
+} ipa_edge_args_t;
/* ipa_edge_args access functions. Please use these to access fields that
are or will be shared among various passes. */
@@ -321,18 +319,17 @@ ipa_get_ith_jump_func (struct ipa_edge_args *args, int i)
/* Vectors need to have typedefs of structures. */
typedef struct ipa_node_params ipa_node_params_t;
-typedef struct ipa_edge_args ipa_edge_args_t;
/* Types of vectors holding the infos. */
DEF_VEC_O (ipa_node_params_t);
DEF_VEC_ALLOC_O (ipa_node_params_t, heap);
DEF_VEC_O (ipa_edge_args_t);
-DEF_VEC_ALLOC_O (ipa_edge_args_t, heap);
+DEF_VEC_ALLOC_O (ipa_edge_args_t, gc);
/* Vector where the parameter infos are actually stored. */
extern VEC (ipa_node_params_t, heap) *ipa_node_params_vector;
/* Vector where the parameter infos are actually stored. */
-extern VEC (ipa_edge_args_t, heap) *ipa_edge_args_vector;
+extern GTY(()) VEC (ipa_edge_args_t, gc) *ipa_edge_args_vector;
/* Return the associated parameter/argument info corresponding to the given
node/edge. */
@@ -378,12 +375,12 @@ static inline void
ipa_check_create_edge_args (void)
{
if (!ipa_edge_args_vector)
- ipa_edge_args_vector = VEC_alloc (ipa_edge_args_t, heap,
+ ipa_edge_args_vector = VEC_alloc (ipa_edge_args_t, gc,
cgraph_edge_max_uid);
if (VEC_length (ipa_edge_args_t, ipa_edge_args_vector)
<= (unsigned) cgraph_edge_max_uid)
- VEC_safe_grow_cleared (ipa_edge_args_t, heap, ipa_edge_args_vector,
+ VEC_safe_grow_cleared (ipa_edge_args_t, gc, ipa_edge_args_vector,
cgraph_edge_max_uid + 1);
}
@@ -508,6 +505,10 @@ ipa_parm_adjustment_vec ipa_combine_adjustments (ipa_parm_adjustment_vec,
ipa_parm_adjustment_vec);
void ipa_dump_param_adjustments (FILE *, ipa_parm_adjustment_vec, tree);
+void ipa_prop_write_jump_functions (cgraph_node_set set);
+void ipa_prop_read_jump_functions (void);
+void ipa_update_after_lto_read (void);
+
/* From tree-sra.c: */
bool build_ref_for_offset (tree *, tree, HOST_WIDE_INT, tree, bool);
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index ea1d81ea5e2..e37af05d08e 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -330,12 +330,11 @@ check_call (funct_state local, gimple call, bool ipa)
/* When not in IPA mode, we can still handle self recursion. */
if (!ipa && callee_t == current_function_decl)
local->looping = true;
- /* The callee is either unknown (indirect call) or there is just no
- scannable code for it (external call) . We look to see if there
- are any bits available for the callee (such as by declaration or
- because it is builtin) and process solely on the basis of those
- bits. */
- else if (avail <= AVAIL_OVERWRITABLE || !ipa)
+ /* Either calle is unknown or we are doing local analysis.
+ Look to see if there are any bits available for the callee (such as by
+ declaration or because it is builtin) and process solely on the basis of
+ those bits. */
+ else if (!ipa || !callee_t)
{
if (possibly_throws && flag_non_call_exceptions)
{
@@ -492,13 +491,6 @@ analyze_function (struct cgraph_node *fn, bool ipa)
funct_state l;
basic_block this_block;
- if (cgraph_function_body_availability (fn) <= AVAIL_OVERWRITABLE)
- {
- if (dump_file)
- fprintf (dump_file, "Function is not available or overwrittable; not analyzing.\n");
- return NULL;
- }
-
l = XCNEW (struct funct_state_d);
l->pure_const_state = IPA_CONST;
l->state_previously_known = IPA_NEITHER;
@@ -609,7 +601,7 @@ end:
static void
add_new_function (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
{
- if (cgraph_function_body_availability (node) <= AVAIL_OVERWRITABLE)
+ if (cgraph_function_body_availability (node) < AVAIL_OVERWRITABLE)
return;
/* There are some shared nodes, in particular the initializers on
static declarations. We do not need to scan them more than once
@@ -686,12 +678,12 @@ generate_summary (void)
/* Process all of the functions.
- We do NOT process any AVAIL_OVERWRITABLE functions, we cannot
- guarantee that what we learn about the one we see will be true
- for the one that overrides it.
- */
+ We process AVAIL_OVERWRITABLE functions. We can not use the results
+ by default, but the info can be used at LTO with -fwhole-program or
+ when function got clonned and the clone is AVAILABLE. */
+
for (node = cgraph_nodes; node; node = node->next)
- if (cgraph_function_body_availability (node) > AVAIL_OVERWRITABLE)
+ if (cgraph_function_body_availability (node) >= AVAIL_OVERWRITABLE)
set_function_state (node, analyze_function (node, true));
pointer_set_destroy (visited_nodes);
@@ -878,6 +870,12 @@ propagate (void)
if (w_l->looping)
looping = true;
+ if (cgraph_function_body_availability (w) == AVAIL_OVERWRITABLE)
+ {
+ looping |= w_l->looping_previously_known;
+ if (pure_const_state < w_l->state_previously_known)
+ pure_const_state = w_l->state_previously_known;
+ }
if (pure_const_state == IPA_NEITHER)
break;
@@ -901,6 +899,20 @@ propagate (void)
if (y_l->looping)
looping = true;
}
+ else
+ {
+ int flags = flags_from_decl_or_type (y->decl);
+
+ if (flags & ECF_LOOPING_CONST_OR_PURE)
+ looping = true;
+ if (flags & ECF_CONST)
+ ;
+ else if ((flags & ECF_PURE) && pure_const_state == IPA_CONST)
+ pure_const_state = IPA_PURE;
+ else
+ pure_const_state = IPA_NEITHER, looping = true;
+
+ }
}
w_info = (struct ipa_dfs_info *) w->aux;
w = w_info->next_cycle;
@@ -988,7 +1000,8 @@ propagate (void)
struct cgraph_edge *e;
funct_state w_l = get_function_state (w);
- if (w_l->can_throw)
+ if (w_l->can_throw
+ || cgraph_function_body_availability (w) == AVAIL_OVERWRITABLE)
can_throw = true;
if (can_throw)
@@ -1008,6 +1021,8 @@ propagate (void)
&& e->can_throw_external)
can_throw = true;
}
+ else if (e->can_throw_external && !TREE_NOTHROW (y->decl))
+ can_throw = true;
}
w_info = (struct ipa_dfs_info *) w->aux;
w = w_info->next_cycle;
@@ -1046,7 +1061,7 @@ propagate (void)
free (node->aux);
node->aux = NULL;
}
- if (cgraph_function_body_availability (node) > AVAIL_OVERWRITABLE)
+ if (cgraph_function_body_availability (node) >= AVAIL_OVERWRITABLE)
free (get_function_state (node));
}
@@ -1109,15 +1124,16 @@ local_pure_const (void)
fprintf (dump_file, "Function called in recursive cycle; ignoring\n");
return 0;
}
-
- l = analyze_function (cgraph_node (current_function_decl), false);
- if (!l)
+ if (cgraph_function_body_availability (cgraph_node (current_function_decl))
+ <= AVAIL_OVERWRITABLE)
{
if (dump_file)
fprintf (dump_file, "Function has wrong visibility; ignoring\n");
return 0;
}
+ l = analyze_function (cgraph_node (current_function_decl), false);
+
switch (l->pure_const_state)
{
case IPA_CONST:
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 795684692bf..f0e8aa0aaed 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -318,6 +318,8 @@ has_proper_scope_for_analysis (tree t)
if (!TREE_STATIC (t) && !DECL_EXTERNAL (t))
return false;
+ /* FIXME: for LTO we should include PUBLIC vars too. This is bit difficult
+ as summarie would need unsharing. */
if (DECL_EXTERNAL (t) || TREE_PUBLIC (t))
return false;
@@ -413,31 +415,21 @@ check_call (ipa_reference_local_vars_info_t local, gimple stmt)
{
int flags = gimple_call_flags (stmt);
tree callee_t = gimple_call_fndecl (stmt);
- enum availability avail = AVAIL_NOT_AVAILABLE;
- if (callee_t)
+ /* Process indirect calls. All direct calles are handled at propagation
+ time. */
+ if (!callee_t)
{
- struct cgraph_node* callee = cgraph_node(callee_t);
- avail = cgraph_function_body_availability (callee);
- }
-
- if (avail <= AVAIL_OVERWRITABLE)
- if (local)
- {
- if (flags & ECF_CONST)
- ;
- else if (flags & ECF_PURE)
+ if (flags & ECF_CONST)
+ ;
+ else if (flags & ECF_PURE)
+ local->calls_read_all = true;
+ else
+ {
local->calls_read_all = true;
- else
- {
- local->calls_read_all = true;
- local->calls_write_all = true;
- }
- }
- /* TODO: To be able to produce sane results, we should also handle
- common builtins, in particular throw.
- Indirect calls hsould be only counted and as inliner is replacing them
- by direct calls, we can conclude if any indirect calls are left in body */
+ local->calls_write_all = true;
+ }
+ }
}
/* TP is the part of the tree currently under the microscope.
@@ -527,7 +519,7 @@ propagate_bits (ipa_reference_global_vars_info_t x_global, struct cgraph_node *x
{
struct cgraph_node *y = e->callee;
- /* Only look at the master nodes and skip external nodes. */
+ /* Only look into nodes we can propagate something. */
if (cgraph_function_body_availability (e->callee) > AVAIL_OVERWRITABLE)
{
if (get_reference_vars_info (y))
@@ -1012,9 +1004,9 @@ generate_summary (void)
static bool
write_node_summary_p (struct cgraph_node *node)
{
+ gcc_assert (node->global.inlined_to == NULL);
return (node->analyzed
- && node->global.inlined_to == NULL
- && cgraph_function_body_availability (node) == AVAIL_OVERWRITABLE
+ && cgraph_function_body_availability (node) >= AVAIL_OVERWRITABLE
&& get_reference_vars_info (node) != NULL);
}
@@ -1053,18 +1045,28 @@ ipa_reference_write_summary (cgraph_node_set set)
lto_output_uleb128_stream (ob->main_stream, node_ref);
/* Stream out the statics read. */
- lto_output_uleb128_stream (ob->main_stream,
- bitmap_count_bits (l->statics_read));
- EXECUTE_IF_SET_IN_BITMAP (l->statics_read, 0, index, bi)
- lto_output_var_decl_index(ob->decl_state, ob->main_stream,
- get_static_decl (index));
+ if (l->calls_read_all)
+ lto_output_sleb128_stream (ob->main_stream, -1);
+ else
+ {
+ lto_output_sleb128_stream (ob->main_stream,
+ bitmap_count_bits (l->statics_read));
+ EXECUTE_IF_SET_IN_BITMAP (l->statics_read, 0, index, bi)
+ lto_output_var_decl_index(ob->decl_state, ob->main_stream,
+ get_static_decl (index));
+ }
/* Stream out the statics written. */
- lto_output_uleb128_stream (ob->main_stream,
- bitmap_count_bits (l->statics_written));
- EXECUTE_IF_SET_IN_BITMAP (l->statics_written, 0, index, bi)
- lto_output_var_decl_index(ob->decl_state, ob->main_stream,
- get_static_decl (index));
+ if (l->calls_write_all)
+ lto_output_sleb128_stream (ob->main_stream, -1);
+ else
+ {
+ lto_output_sleb128_stream (ob->main_stream,
+ bitmap_count_bits (l->statics_written));
+ EXECUTE_IF_SET_IN_BITMAP (l->statics_written, 0, index, bi)
+ lto_output_var_decl_index(ob->decl_state, ob->main_stream,
+ get_static_decl (index));
+ }
}
}
lto_destroy_simple_output_block (ob);
@@ -1101,7 +1103,7 @@ ipa_reference_read_summary (void)
unsigned int j, index;
struct cgraph_node *node;
ipa_reference_local_vars_info_t l;
- unsigned int v_count;
+ int v_count;
lto_cgraph_encoder_t encoder;
index = lto_input_uleb128 (ib);
@@ -1110,26 +1112,32 @@ ipa_reference_read_summary (void)
l = init_function_info (node);
/* Set the statics read. */
- v_count = lto_input_uleb128 (ib);
- for (j = 0; j < v_count; j++)
- {
- unsigned int var_index = lto_input_uleb128 (ib);
- tree v_decl = lto_file_decl_data_get_var_decl (file_data,
- var_index);
- add_static_var (v_decl);
- bitmap_set_bit (l->statics_read, DECL_UID (v_decl));
- }
+ v_count = lto_input_sleb128 (ib);
+ if (v_count == -1)
+ l->calls_read_all = true;
+ else
+ for (j = 0; j < (unsigned int)v_count; j++)
+ {
+ unsigned int var_index = lto_input_uleb128 (ib);
+ tree v_decl = lto_file_decl_data_get_var_decl (file_data,
+ var_index);
+ add_static_var (v_decl);
+ bitmap_set_bit (l->statics_read, DECL_UID (v_decl));
+ }
/* Set the statics written. */
- v_count = lto_input_uleb128 (ib);
- for (j = 0; j < v_count; j++)
- {
- unsigned int var_index = lto_input_uleb128 (ib);
- tree v_decl = lto_file_decl_data_get_var_decl (file_data,
- var_index);
- add_static_var (v_decl);
- bitmap_set_bit (l->statics_written, DECL_UID (v_decl));
- }
+ v_count = lto_input_sleb128 (ib);
+ if (v_count == -1)
+ l->calls_read_all = true;
+ else
+ for (j = 0; j < (unsigned int)v_count; j++)
+ {
+ unsigned int var_index = lto_input_uleb128 (ib);
+ tree v_decl = lto_file_decl_data_get_var_decl (file_data,
+ var_index);
+ add_static_var (v_decl);
+ bitmap_set_bit (l->statics_written, DECL_UID (v_decl));
+ }
}
lto_destroy_simple_input_block (file_data,
@@ -1141,6 +1149,26 @@ ipa_reference_read_summary (void)
+/* Set READ_ALL/WRITE_ALL based on DECL flags. */
+static void
+read_write_all_from_decl (tree decl, bool * read_all, bool * write_all)
+{
+ int flags = flags_from_decl_or_type (decl);
+ if (flags & ECF_CONST)
+ ;
+ else if (flags & ECF_PURE)
+ *read_all = true;
+ else
+ {
+ /* TODO: To be able to produce sane results, we should also handle
+ common builtins, in particular throw.
+ Indirect calls hsould be only counted and as inliner is replacing them
+ by direct calls, we can conclude if any indirect calls are left in body */
+ *read_all = true;
+ *write_all = true;
+ }
+}
+
/* Produce the global information by preforming a transitive closure
on the local information that was produced by ipa_analyze_function
and ipa_analyze_variable. */
@@ -1173,6 +1201,7 @@ propagate (void)
ipa_reference_global_vars_info_t node_g =
XCNEW (struct ipa_reference_global_vars_info_d);
ipa_reference_local_vars_info_t node_l;
+ struct cgraph_edge *e;
bool read_all;
bool write_all;
@@ -1193,6 +1222,15 @@ propagate (void)
read_all = node_l->calls_read_all;
write_all = node_l->calls_write_all;
+ /* When function is overwrittable, we can not assume anything. */
+ if (cgraph_function_body_availability (node) <= AVAIL_OVERWRITABLE)
+ read_write_all_from_decl (node->decl, &read_all, &write_all);
+
+ for (e = node->callees; e; e = e->next_callee)
+ if (cgraph_function_body_availability (e->callee) <= AVAIL_OVERWRITABLE)
+ read_write_all_from_decl (e->callee->decl, &read_all, &write_all);
+
+
/* If any node in a cycle is calls_read_all or calls_write_all
they all are. */
w_info = (struct ipa_dfs_info *) node->aux;
@@ -1201,6 +1239,15 @@ propagate (void)
{
ipa_reference_local_vars_info_t w_l =
get_reference_vars_info (w)->local;
+
+ /* When function is overwrittable, we can not assume anything. */
+ if (cgraph_function_body_availability (w) <= AVAIL_OVERWRITABLE)
+ read_write_all_from_decl (w->decl, &read_all, &write_all);
+
+ for (e = w->callees; e; e = e->next_callee)
+ if (cgraph_function_body_availability (e->callee) <= AVAIL_OVERWRITABLE)
+ read_write_all_from_decl (e->callee->decl, &read_all, &write_all);
+
read_all |= w_l->calls_read_all;
write_all |= w_l->calls_write_all;
@@ -1208,6 +1255,7 @@ propagate (void)
w = w_info->next_cycle;
}
+
/* Initialized the bitmaps for the reduced nodes */
if (read_all)
node_g->statics_read = all_module_statics;
@@ -1217,7 +1265,6 @@ propagate (void)
bitmap_copy (node_g->statics_read,
node_l->statics_read);
}
-
if (write_all)
node_g->statics_written = all_module_statics;
else
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 7fb40bc7a93..7916cb27bf1 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1665,6 +1665,7 @@ ira_finish_costs_once (void)
static void
init_costs (void)
{
+ init_subregs_of_mode ();
costs = (struct costs *) ira_allocate (max_struct_costs_size
* cost_elements_num);
pref_buffer
diff --git a/gcc/ira.c b/gcc/ira.c
index 440166419b4..cf389a4f5a6 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3144,6 +3144,9 @@ ira (FILE *f)
epilogue thus changing register elimination offsets. */
current_function_is_leaf = leaf_function_p ();
+ if (resize_reg_info () && flag_ira_loop_pressure)
+ ira_set_pseudo_classes (ira_dump_file);
+
rebuild_p = update_equiv_regs ();
#ifndef IRA_NO_OBSTACK
@@ -3170,7 +3173,6 @@ ira (FILE *f)
}
max_regno_before_ira = allocated_reg_info_size = max_reg_num ();
- resize_reg_info ();
ira_setup_eliminable_regset ();
ira_overall_cost = ira_reg_cost = ira_mem_cost = 0;
@@ -3287,6 +3289,8 @@ ira (FILE *f)
reload_completed = !reload (get_insns (), ira_conflicts_p);
+ finish_subregs_of_mode ();
+
timevar_pop (TV_RELOAD);
timevar_push (TV_IRA);
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 6ce9d58b0e0..7815bc8a050 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-20 Joel Dice <dicej@mailsnare.net>
+
+ PR java/28474
+ * mangle_name.c (append_unicode_mangled_name): Fix mangling
+ of names with multiple underscores and "U".
+ (unicode_mangling_length): Likewise.
+
2009-10-03 Simon Baldwin <simonb@google.com>
* config-lang.in (lang_dirs): Remove zlib.
diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c
index a0e6887a04e..a75f5cad090 100644
--- a/gcc/java/mangle_name.c
+++ b/gcc/java/mangle_name.c
@@ -266,7 +266,10 @@ append_unicode_mangled_name (const char *name, int len)
int ch = UTF8_GET(ptr, limit);
if ((ISALNUM (ch) && ch != 'U') || ch == '$')
- obstack_1grow (mangle_obstack, ch);
+ {
+ obstack_1grow (mangle_obstack, ch);
+ uuU = 0;
+ }
/* Everything else needs encoding */
else
{
@@ -321,7 +324,10 @@ unicode_mangling_length (const char *name, int len)
if (ch < 0)
error ("internal error - invalid Utf8 name");
if ((ISALNUM (ch) && ch != 'U') || ch == '$')
- num_chars++;
+ {
+ num_chars++;
+ uuU = 0;
+ }
/* Everything else needs encoding */
else
{
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index 11a8310f33e..901ce51ac89 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -39,9 +39,9 @@ along with GCC; see the file COPYING3. If not see
#include "system.h"
#include "coretypes.h"
#include "tm.h"
+#include "hard-reg-set.h"
#include "rtl.h"
#include "tm_p.h"
-#include "hard-reg-set.h"
#include "obstack.h"
#include "basic-block.h"
#include "cfgloop.h"
@@ -54,6 +54,8 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "except.h"
#include "params.h"
+#include "regs.h"
+#include "ira.h"
/* The data stored for the loop. */
@@ -61,6 +63,12 @@ struct loop_data
{
struct loop *outermost_exit; /* The outermost exit of the loop. */
bool has_call; /* True if the loop contains a call. */
+ /* Maximal register pressure inside loop for given register class
+ (defined only for the cover classes). */
+ int max_reg_pressure[N_REG_CLASSES];
+ /* Loop regs referenced and live pseudo-registers. */
+ bitmap_head regs_ref;
+ bitmap_head regs_live;
};
#define LOOP_DATA(LOOP) ((struct loop_data *) (LOOP)->aux)
@@ -100,6 +108,10 @@ struct invariant
value. */
rtx reg;
+ /* If we moved the invariant out of the loop, the original regno
+ that contained its value. */
+ int orig_regno;
+
/* The definition of the invariant. */
struct def *def;
@@ -126,6 +138,9 @@ struct invariant
unsigned stamp;
};
+/* Currently processed loop. */
+static struct loop *curr_loop;
+
/* Table of invariants indexed by the df_ref uid field. */
static unsigned int invariant_table_size = 0;
@@ -615,7 +630,12 @@ find_exits (struct loop *loop, basic_block *body,
}
}
- loop->aux = xcalloc (1, sizeof (struct loop_data));
+ if (loop->aux == NULL)
+ {
+ loop->aux = xcalloc (1, sizeof (struct loop_data));
+ bitmap_initialize (&LOOP_DATA (loop)->regs_ref, &reg_obstack);
+ bitmap_initialize (&LOOP_DATA (loop)->regs_live, &reg_obstack);
+ }
LOOP_DATA (loop)->outermost_exit = outermost_exit;
LOOP_DATA (loop)->has_call = has_call;
}
@@ -685,8 +705,17 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on,
if (def)
{
inv->cost = rtx_cost (set, SET, speed);
+ /* ??? Try to determine cheapness of address computation. Unfortunately
+ the address cost is only a relative measure, we can't really compare
+ it with any absolute number, but only with other address costs.
+ But here we don't have any other addresses, so compare with a magic
+ number anyway. It has to be large enough to not regress PR33928
+ (by avoiding to move reg+8,reg+16,reg+24 invariants), but small
+ enough to not regress 410.bwaves either (by still moving reg+reg
+ invariants).
+ See http://gcc.gnu.org/ml/gcc-patches/2009-10/msg01210.html . */
inv->cheap_address = address_cost (SET_SRC (set), word_mode,
- speed) < COSTS_N_INSNS (1);
+ speed) < 3;
}
else
{
@@ -696,6 +725,7 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on,
inv->move = false;
inv->reg = NULL_RTX;
+ inv->orig_regno = -1;
inv->stamp = 0;
inv->insn = insn;
@@ -982,14 +1012,46 @@ free_use_list (struct use *use)
}
}
+/* Return cover class and number of hard registers (through *NREGS)
+ for destination of INSN. */
+static enum reg_class
+get_cover_class_and_nregs (rtx insn, int *nregs)
+{
+ rtx reg;
+ enum reg_class cover_class;
+ rtx set = single_set (insn);
+
+ /* Considered invariant insns have only one set. */
+ gcc_assert (set != NULL_RTX);
+ reg = SET_DEST (set);
+ if (GET_CODE (reg) == SUBREG)
+ reg = SUBREG_REG (reg);
+ if (MEM_P (reg))
+ {
+ *nregs = 0;
+ cover_class = NO_REGS;
+ }
+ else
+ {
+ if (! REG_P (reg))
+ reg = NULL_RTX;
+ if (reg == NULL_RTX)
+ cover_class = GENERAL_REGS;
+ else
+ cover_class = reg_cover_class (REGNO (reg));
+ *nregs = ira_reg_class_nregs[cover_class][GET_MODE (SET_SRC (set))];
+ }
+ return cover_class;
+}
+
/* Calculates cost and number of registers needed for moving invariant INV
out of the loop and stores them to *COST and *REGS_NEEDED. */
static void
get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
{
- int acomp_cost;
- unsigned aregs_needed;
+ int i, acomp_cost;
+ unsigned aregs_needed[N_REG_CLASSES];
unsigned depno;
struct invariant *dep;
bitmap_iterator bi;
@@ -998,13 +1060,30 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
inv = VEC_index (invariant_p, invariants, inv->eqto);
*comp_cost = 0;
- *regs_needed = 0;
+ if (! flag_ira_loop_pressure)
+ regs_needed[0] = 0;
+ else
+ {
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ regs_needed[ira_reg_class_cover[i]] = 0;
+ }
+
if (inv->move
|| inv->stamp == actual_stamp)
return;
inv->stamp = actual_stamp;
- (*regs_needed)++;
+ if (! flag_ira_loop_pressure)
+ regs_needed[0]++;
+ else
+ {
+ int nregs;
+ enum reg_class cover_class;
+
+ cover_class = get_cover_class_and_nregs (inv->insn, &nregs);
+ regs_needed[cover_class] += nregs;
+ }
+
if (!inv->cheap_address
|| inv->def->n_addr_uses < inv->def->n_uses)
(*comp_cost) += inv->cost;
@@ -1029,19 +1108,35 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
on floating point constants is unlikely to ever occur. */
rtx set = single_set (inv->insn);
if (set
- && IS_STACK_MODE (GET_MODE (SET_SRC (set)))
- && constant_pool_constant_p (SET_SRC (set)))
- (*regs_needed) += 2;
+ && IS_STACK_MODE (GET_MODE (SET_SRC (set)))
+ && constant_pool_constant_p (SET_SRC (set)))
+ {
+ if (flag_ira_loop_pressure)
+ regs_needed[STACK_REG_COVER_CLASS] += 2;
+ else
+ regs_needed[0] += 2;
+ }
}
#endif
EXECUTE_IF_SET_IN_BITMAP (inv->depends_on, 0, depno, bi)
{
+ bool check_p;
+
dep = VEC_index (invariant_p, invariants, depno);
- get_inv_cost (dep, &acomp_cost, &aregs_needed);
+ get_inv_cost (dep, &acomp_cost, aregs_needed);
- if (aregs_needed
+ if (! flag_ira_loop_pressure)
+ check_p = aregs_needed[0] != 0;
+ else
+ {
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ if (aregs_needed[ira_reg_class_cover[i]] != 0)
+ break;
+ check_p = i < ira_reg_class_cover_size;
+ }
+ if (check_p
/* We need to check always_executed, since if the original value of
the invariant may be preserved, we may need to keep it in a
separate register. TODO check whether the register has an
@@ -1051,10 +1146,26 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
{
/* If this is a single use, after moving the dependency we will not
need a new register. */
- aregs_needed--;
+ if (! flag_ira_loop_pressure)
+ aregs_needed[0]--;
+ else
+ {
+ int nregs;
+ enum reg_class cover_class;
+
+ cover_class = get_cover_class_and_nregs (inv->insn, &nregs);
+ aregs_needed[cover_class] -= nregs;
+ }
}
- (*regs_needed) += aregs_needed;
+ if (! flag_ira_loop_pressure)
+ regs_needed[0] += aregs_needed[0];
+ else
+ {
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ regs_needed[ira_reg_class_cover[i]]
+ += aregs_needed[ira_reg_class_cover[i]];
+ }
(*comp_cost) += acomp_cost;
}
}
@@ -1066,15 +1177,62 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
static int
gain_for_invariant (struct invariant *inv, unsigned *regs_needed,
- unsigned new_regs, unsigned regs_used, bool speed)
+ unsigned *new_regs, unsigned regs_used, bool speed)
{
int comp_cost, size_cost;
- get_inv_cost (inv, &comp_cost, regs_needed);
actual_stamp++;
- size_cost = (estimate_reg_pressure_cost (new_regs + *regs_needed, regs_used, speed)
- - estimate_reg_pressure_cost (new_regs, regs_used, speed));
+ get_inv_cost (inv, &comp_cost, regs_needed);
+
+ if (! flag_ira_loop_pressure)
+ {
+ size_cost = (estimate_reg_pressure_cost (new_regs[0] + regs_needed[0],
+ regs_used, speed)
+ - estimate_reg_pressure_cost (new_regs[0],
+ regs_used, speed));
+ }
+ else
+ {
+ int i;
+ enum reg_class cover_class;
+
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ {
+ cover_class = ira_reg_class_cover[i];
+ if ((int) new_regs[cover_class]
+ + (int) regs_needed[cover_class]
+ + LOOP_DATA (curr_loop)->max_reg_pressure[cover_class]
+ + IRA_LOOP_RESERVED_REGS
+ > ira_available_class_regs[cover_class])
+ break;
+ }
+ if (i < ira_reg_class_cover_size)
+ /* There will be register pressure excess and we want not to
+ make this loop invariant motion. All loop invariants with
+ non-positive gains will be rejected in function
+ find_invariants_to_move. Therefore we return the negative
+ number here.
+
+ One could think that this rejects also expensive loop
+ invariant motions and this will hurt code performance.
+ However numerous experiments with different heuristics
+ taking invariant cost into account did not confirm this
+ assumption. There are possible explanations for this
+ result:
+ o probably all expensive invariants were already moved out
+ of the loop by PRE and gimple invariant motion pass.
+ o expensive invariant execution will be hidden by insn
+ scheduling or OOO processor hardware because usually such
+ invariants have a lot of freedom to be executed
+ out-of-order.
+ Another reason for ignoring invariant cost vs spilling cost
+ heuristics is also in difficulties to evaluate accurately
+ spill cost at this stage. */
+ return -1;
+ else
+ size_cost = 0;
+ }
return comp_cost - size_cost;
}
@@ -1087,11 +1245,11 @@ gain_for_invariant (struct invariant *inv, unsigned *regs_needed,
static int
best_gain_for_invariant (struct invariant **best, unsigned *regs_needed,
- unsigned new_regs, unsigned regs_used, bool speed)
+ unsigned *new_regs, unsigned regs_used, bool speed)
{
struct invariant *inv;
- int gain = 0, again;
- unsigned aregs_needed, invno;
+ int i, gain = 0, again;
+ unsigned aregs_needed[N_REG_CLASSES], invno;
for (invno = 0; VEC_iterate (invariant_p, invariants, invno, inv); invno++)
{
@@ -1102,13 +1260,20 @@ best_gain_for_invariant (struct invariant **best, unsigned *regs_needed,
if (inv->eqto != inv->invno)
continue;
- again = gain_for_invariant (inv, &aregs_needed, new_regs, regs_used,
+ again = gain_for_invariant (inv, aregs_needed, new_regs, regs_used,
speed);
if (again > gain)
{
gain = again;
*best = inv;
- *regs_needed = aregs_needed;
+ if (! flag_ira_loop_pressure)
+ regs_needed[0] = aregs_needed[0];
+ else
+ {
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ regs_needed[ira_reg_class_cover[i]]
+ = aregs_needed[ira_reg_class_cover[i]];
+ }
}
}
@@ -1118,7 +1283,7 @@ best_gain_for_invariant (struct invariant **best, unsigned *regs_needed,
/* Marks invariant INVNO and all its dependencies for moving. */
static void
-set_move_mark (unsigned invno)
+set_move_mark (unsigned invno, int gain)
{
struct invariant *inv = VEC_index (invariant_p, invariants, invno);
bitmap_iterator bi;
@@ -1131,11 +1296,18 @@ set_move_mark (unsigned invno)
inv->move = true;
if (dump_file)
- fprintf (dump_file, "Decided to move invariant %d\n", invno);
+ {
+ if (gain >= 0)
+ fprintf (dump_file, "Decided to move invariant %d -- gain %d\n",
+ invno, gain);
+ else
+ fprintf (dump_file, "Decided to move dependent invariant %d\n",
+ invno);
+ };
EXECUTE_IF_SET_IN_BITMAP (inv->depends_on, 0, invno, bi)
{
- set_move_mark (invno);
+ set_move_mark (invno, -1);
}
}
@@ -1144,32 +1316,54 @@ set_move_mark (unsigned invno)
static void
find_invariants_to_move (bool speed)
{
- unsigned i, regs_used, regs_needed = 0, new_regs;
+ int gain;
+ unsigned i, regs_used, regs_needed[N_REG_CLASSES], new_regs[N_REG_CLASSES];
struct invariant *inv = NULL;
- unsigned int n_regs = DF_REG_SIZE (df);
if (!VEC_length (invariant_p, invariants))
return;
- /* We do not really do a good job in estimating number of registers used;
- we put some initial bound here to stand for induction variables etc.
- that we do not detect. */
- regs_used = 2;
-
- for (i = 0; i < n_regs; i++)
+ if (flag_ira_loop_pressure)
+ /* REGS_USED is actually never used when the flag is on. */
+ regs_used = 0;
+ else
+ /* We do not really do a good job in estimating number of
+ registers used; we put some initial bound here to stand for
+ induction variables etc. that we do not detect. */
{
- if (!DF_REGNO_FIRST_DEF (i) && DF_REGNO_LAST_USE (i))
+ unsigned int n_regs = DF_REG_SIZE (df);
+
+ regs_used = 2;
+
+ for (i = 0; i < n_regs; i++)
{
- /* This is a value that is used but not changed inside loop. */
- regs_used++;
+ if (!DF_REGNO_FIRST_DEF (i) && DF_REGNO_LAST_USE (i))
+ {
+ /* This is a value that is used but not changed inside loop. */
+ regs_used++;
+ }
}
}
- new_regs = 0;
- while (best_gain_for_invariant (&inv, &regs_needed, new_regs, regs_used, speed) > 0)
+ if (! flag_ira_loop_pressure)
+ new_regs[0] = regs_needed[0] = 0;
+ else
{
- set_move_mark (inv->invno);
- new_regs += regs_needed;
+ for (i = 0; (int) i < ira_reg_class_cover_size; i++)
+ new_regs[ira_reg_class_cover[i]] = 0;
+ }
+ while ((gain = best_gain_for_invariant (&inv, regs_needed,
+ new_regs, regs_used, speed)) > 0)
+ {
+ set_move_mark (inv->invno, gain);
+ if (! flag_ira_loop_pressure)
+ new_regs[0] += regs_needed[0];
+ else
+ {
+ for (i = 0; (int) i < ira_reg_class_cover_size; i++)
+ new_regs[ira_reg_class_cover[i]]
+ += regs_needed[ira_reg_class_cover[i]];
+ }
}
}
@@ -1186,11 +1380,13 @@ move_invariant_reg (struct loop *loop, unsigned invno)
rtx reg, set, dest, note;
struct use *use;
bitmap_iterator bi;
+ int regno;
if (inv->reg)
return true;
if (!repr->move)
return false;
+ regno = -1;
/* If this is a representative of the class of equivalent invariants,
really move the invariant. Otherwise just replace its use with
the register used for the representative. */
@@ -1211,7 +1407,12 @@ move_invariant_reg (struct loop *loop, unsigned invno)
would not be dominated by it, we may just move it (TODO). Otherwise we
need to create a temporary register. */
set = single_set (inv->insn);
- dest = SET_DEST (set);
+ reg = dest = SET_DEST (set);
+ if (GET_CODE (reg) == SUBREG)
+ reg = SUBREG_REG (reg);
+ if (REG_P (reg))
+ regno = REGNO (reg);
+
reg = gen_reg_rtx_and_attrs (dest);
/* Try replacing the destination by a new pseudoregister. */
@@ -1237,6 +1438,7 @@ move_invariant_reg (struct loop *loop, unsigned invno)
if (!move_invariant_reg (loop, repr->invno))
goto fail;
reg = repr->reg;
+ regno = repr->orig_regno;
set = single_set (inv->insn);
emit_insn_after (gen_move_insn (SET_DEST (set), reg), inv->insn);
delete_insn (inv->insn);
@@ -1244,6 +1446,7 @@ move_invariant_reg (struct loop *loop, unsigned invno)
inv->reg = reg;
+ inv->orig_regno = regno;
/* Replace the uses we know to be dominated. It saves work for copy
propagation, and also it is necessary so that dependent invariants
@@ -1266,6 +1469,7 @@ fail:
fprintf (dump_file, "Failed to move invariant %d\n", invno);
inv->move = false;
inv->reg = NULL_RTX;
+ inv->orig_regno = -1;
return false;
}
@@ -1281,6 +1485,21 @@ move_invariants (struct loop *loop)
for (i = 0; VEC_iterate (invariant_p, invariants, i, inv); i++)
move_invariant_reg (loop, i);
+ if (flag_ira_loop_pressure && resize_reg_info ())
+ {
+ for (i = 0; VEC_iterate (invariant_p, invariants, i, inv); i++)
+ if (inv->reg != NULL_RTX)
+ {
+ if (inv->orig_regno >= 0)
+ setup_reg_classes (REGNO (inv->reg),
+ reg_preferred_class (inv->orig_regno),
+ reg_alternate_class (inv->orig_regno),
+ reg_cover_class (inv->orig_regno));
+ else
+ setup_reg_classes (REGNO (inv->reg),
+ GENERAL_REGS, NO_REGS, GENERAL_REGS);
+ }
+ }
}
/* Initializes invariant motion data. */
@@ -1346,10 +1565,317 @@ free_loop_data (struct loop *loop)
{
struct loop_data *data = LOOP_DATA (loop);
+ bitmap_clear (&LOOP_DATA (loop)->regs_ref);
+ bitmap_clear (&LOOP_DATA (loop)->regs_live);
free (data);
loop->aux = NULL;
}
+
+
+/* Registers currently living. */
+static bitmap_head curr_regs_live;
+
+/* Current reg pressure for each cover class. */
+static int curr_reg_pressure[N_REG_CLASSES];
+
+/* Record all regs that are set in any one insn. Communication from
+ mark_reg_{store,clobber} and global_conflicts. Asm can refer to
+ all hard-registers. */
+static rtx regs_set[(FIRST_PSEUDO_REGISTER > MAX_RECOG_OPERANDS
+ ? FIRST_PSEUDO_REGISTER : MAX_RECOG_OPERANDS) * 2];
+/* Number of regs stored in the previous array. */
+static int n_regs_set;
+
+/* Return cover class and number of needed hard registers (through
+ *NREGS) of register REGNO. */
+static enum reg_class
+get_regno_cover_class (int regno, int *nregs)
+{
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ {
+ enum reg_class cover_class = reg_cover_class (regno);
+
+ *nregs = ira_reg_class_nregs[cover_class][PSEUDO_REGNO_MODE (regno)];
+ return cover_class;
+ }
+ else if (! TEST_HARD_REG_BIT (ira_no_alloc_regs, regno)
+ && ! TEST_HARD_REG_BIT (eliminable_regset, regno))
+ {
+ *nregs = 1;
+ return ira_class_translate[REGNO_REG_CLASS (regno)];
+ }
+ else
+ {
+ *nregs = 0;
+ return NO_REGS;
+ }
+}
+
+/* Increase (if INCR_P) or decrease current register pressure for
+ register REGNO. */
+static void
+change_pressure (int regno, bool incr_p)
+{
+ int nregs;
+ enum reg_class cover_class;
+
+ cover_class = get_regno_cover_class (regno, &nregs);
+ if (! incr_p)
+ curr_reg_pressure[cover_class] -= nregs;
+ else
+ {
+ curr_reg_pressure[cover_class] += nregs;
+ if (LOOP_DATA (curr_loop)->max_reg_pressure[cover_class]
+ < curr_reg_pressure[cover_class])
+ LOOP_DATA (curr_loop)->max_reg_pressure[cover_class]
+ = curr_reg_pressure[cover_class];
+ }
+}
+
+/* Mark REGNO birth. */
+static void
+mark_regno_live (int regno)
+{
+ struct loop *loop;
+
+ for (loop = curr_loop;
+ loop != current_loops->tree_root;
+ loop = loop_outer (loop))
+ bitmap_set_bit (&LOOP_DATA (loop)->regs_live, regno);
+ if (bitmap_bit_p (&curr_regs_live, regno))
+ return;
+ bitmap_set_bit (&curr_regs_live, regno);
+ change_pressure (regno, true);
+}
+
+/* Mark REGNO death. */
+static void
+mark_regno_death (int regno)
+{
+ if (! bitmap_bit_p (&curr_regs_live, regno))
+ return;
+ bitmap_clear_bit (&curr_regs_live, regno);
+ change_pressure (regno, false);
+}
+
+/* Mark setting register REG. */
+static void
+mark_reg_store (rtx reg, const_rtx setter ATTRIBUTE_UNUSED,
+ void *data ATTRIBUTE_UNUSED)
+{
+ int regno;
+
+ if (GET_CODE (reg) == SUBREG)
+ reg = SUBREG_REG (reg);
+
+ if (! REG_P (reg))
+ return;
+
+ regs_set[n_regs_set++] = reg;
+
+ regno = REGNO (reg);
+
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ mark_regno_live (regno);
+ else
+ {
+ int last = regno + hard_regno_nregs[regno][GET_MODE (reg)];
+
+ while (regno < last)
+ {
+ mark_regno_live (regno);
+ regno++;
+ }
+ }
+}
+
+/* Mark clobbering register REG. */
+static void
+mark_reg_clobber (rtx reg, const_rtx setter, void *data)
+{
+ if (GET_CODE (setter) == CLOBBER)
+ mark_reg_store (reg, setter, data);
+}
+
+/* Mark register REG death. */
+static void
+mark_reg_death (rtx reg)
+{
+ int regno = REGNO (reg);
+
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ mark_regno_death (regno);
+ else
+ {
+ int last = regno + hard_regno_nregs[regno][GET_MODE (reg)];
+
+ while (regno < last)
+ {
+ mark_regno_death (regno);
+ regno++;
+ }
+ }
+}
+
+/* Mark occurrence of registers in X for the current loop. */
+static void
+mark_ref_regs (rtx x)
+{
+ RTX_CODE code;
+ int i;
+ const char *fmt;
+
+ if (!x)
+ return;
+
+ code = GET_CODE (x);
+ if (code == REG)
+ {
+ struct loop *loop;
+
+ for (loop = curr_loop;
+ loop != current_loops->tree_root;
+ loop = loop_outer (loop))
+ bitmap_set_bit (&LOOP_DATA (loop)->regs_ref, REGNO (x));
+ return;
+ }
+
+ fmt = GET_RTX_FORMAT (code);
+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
+ if (fmt[i] == 'e')
+ mark_ref_regs (XEXP (x, i));
+ else if (fmt[i] == 'E')
+ {
+ int j;
+
+ for (j = 0; j < XVECLEN (x, i); j++)
+ mark_ref_regs (XVECEXP (x, i, j));
+ }
+}
+
+/* Calculate register pressure in the loops. */
+static void
+calculate_loop_reg_pressure (void)
+{
+ int i;
+ unsigned int j;
+ bitmap_iterator bi;
+ basic_block bb;
+ rtx insn, link;
+ struct loop *loop, *parent;
+ loop_iterator li;
+
+ FOR_EACH_LOOP (li, loop, 0)
+ if (loop->aux == NULL)
+ {
+ loop->aux = xcalloc (1, sizeof (struct loop_data));
+ bitmap_initialize (&LOOP_DATA (loop)->regs_ref, &reg_obstack);
+ bitmap_initialize (&LOOP_DATA (loop)->regs_live, &reg_obstack);
+ }
+ ira_setup_eliminable_regset ();
+ bitmap_initialize (&curr_regs_live, &reg_obstack);
+ FOR_EACH_BB (bb)
+ {
+ curr_loop = bb->loop_father;
+ if (curr_loop == current_loops->tree_root)
+ continue;
+
+ for (loop = curr_loop;
+ loop != current_loops->tree_root;
+ loop = loop_outer (loop))
+ bitmap_ior_into (&LOOP_DATA (loop)->regs_live, DF_LR_IN (bb));
+
+ bitmap_copy (&curr_regs_live, DF_LR_IN (bb));
+ for (i = 0; i < ira_reg_class_cover_size; i++)
+ curr_reg_pressure[ira_reg_class_cover[i]] = 0;
+ EXECUTE_IF_SET_IN_BITMAP (&curr_regs_live, 0, j, bi)
+ change_pressure (j, true);
+
+ FOR_BB_INSNS (bb, insn)
+ {
+ if (! NONDEBUG_INSN_P (insn))
+ continue;
+
+ mark_ref_regs (PATTERN (insn));
+ n_regs_set = 0;
+ note_stores (PATTERN (insn), mark_reg_clobber, NULL);
+
+ /* Mark any registers dead after INSN as dead now. */
+
+ for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
+ if (REG_NOTE_KIND (link) == REG_DEAD)
+ mark_reg_death (XEXP (link, 0));
+
+ /* Mark any registers set in INSN as live,
+ and mark them as conflicting with all other live regs.
+ Clobbers are processed again, so they conflict with
+ the registers that are set. */
+
+ note_stores (PATTERN (insn), mark_reg_store, NULL);
+
+#ifdef AUTO_INC_DEC
+ for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
+ if (REG_NOTE_KIND (link) == REG_INC)
+ mark_reg_store (XEXP (link, 0), NULL_RTX, NULL);
+#endif
+ while (n_regs_set-- > 0)
+ {
+ rtx note = find_regno_note (insn, REG_UNUSED,
+ REGNO (regs_set[n_regs_set]));
+ if (! note)
+ continue;
+
+ mark_reg_death (XEXP (note, 0));
+ }
+ }
+ }
+ bitmap_clear (&curr_regs_live);
+ if (flag_ira_region == IRA_REGION_MIXED
+ || flag_ira_region == IRA_REGION_ALL)
+ FOR_EACH_LOOP (li, loop, 0)
+ {
+ EXECUTE_IF_SET_IN_BITMAP (&LOOP_DATA (loop)->regs_live, 0, j, bi)
+ if (! bitmap_bit_p (&LOOP_DATA (loop)->regs_ref, j))
+ {
+ enum reg_class cover_class;
+ int nregs;
+
+ cover_class = get_regno_cover_class (j, &nregs);
+ LOOP_DATA (loop)->max_reg_pressure[cover_class] -= nregs;
+ }
+ }
+ if (dump_file == NULL)
+ return;
+ FOR_EACH_LOOP (li, loop, 0)
+ {
+ parent = loop_outer (loop);
+ fprintf (dump_file, "\n Loop %d (parent %d, header bb%d, depth %d)\n",
+ loop->num, (parent == NULL ? -1 : parent->num),
+ loop->header->index, loop_depth (loop));
+ fprintf (dump_file, "\n ref. regnos:");
+ EXECUTE_IF_SET_IN_BITMAP (&LOOP_DATA (loop)->regs_ref, 0, j, bi)
+ fprintf (dump_file, " %d", j);
+ fprintf (dump_file, "\n live regnos:");
+ EXECUTE_IF_SET_IN_BITMAP (&LOOP_DATA (loop)->regs_live, 0, j, bi)
+ fprintf (dump_file, " %d", j);
+ fprintf (dump_file, "\n Pressure:");
+ for (i = 0; (int) i < ira_reg_class_cover_size; i++)
+ {
+ enum reg_class cover_class;
+
+ cover_class = ira_reg_class_cover[i];
+ if (LOOP_DATA (loop)->max_reg_pressure[cover_class] == 0)
+ continue;
+ fprintf (dump_file, " %s=%d", reg_class_names[cover_class],
+ LOOP_DATA (loop)->max_reg_pressure[cover_class]);
+ }
+ fprintf (dump_file, "\n");
+ }
+}
+
+
+
/* Move the invariants out of the loops. */
void
@@ -1358,10 +1884,17 @@ move_loop_invariants (void)
struct loop *loop;
loop_iterator li;
+ if (flag_ira_loop_pressure)
+ {
+ df_analyze ();
+ ira_set_pseudo_classes (dump_file);
+ calculate_loop_reg_pressure ();
+ }
df_set_flags (DF_EQ_NOTES + DF_DEFER_INSN_RESCAN);
/* Process the loops, innermost first. */
FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
{
+ curr_loop = loop;
/* move_single_loop_invariants for very large loops
is time consuming and might need a lot of memory. */
if (loop->num_nodes <= (unsigned) LOOP_INVARIANT_MAX_BBS_IN_LOOP)
@@ -1373,6 +1906,10 @@ move_loop_invariants (void)
free_loop_data (loop);
}
+ if (flag_ira_loop_pressure)
+ /* There is no sense to keep this info because it was most
+ probably outdated by subsequent passes. */
+ free_reg_info ();
free (invariant_table);
invariant_table = NULL;
invariant_table_size = 0;
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index fbf0df21c24..6b340a37d58 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -372,8 +372,16 @@ output_cgraph (cgraph_node_set set)
for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
{
node = csi_node (csi);
- for (edge = node->callees; edge; edge = edge->next_callee)
- lto_output_edge (ob, edge, encoder);
+ if (node->callees)
+ {
+ /* Output edges in backward direction, so the reconstructed callgraph
+ match and it is easy to associate call sites in the IPA pass summaries. */
+ edge = node->callees;
+ while (edge->next_callee)
+ edge = edge->next_callee;
+ for (; edge; edge = edge->prev_callee)
+ lto_output_edge (ob, edge, encoder);
+ }
}
lto_output_uleb128_stream (ob->main_stream, 0);
diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c
index 2a379f40fdc..fd485b9db60 100644
--- a/gcc/lto-opts.c
+++ b/gcc/lto-opts.c
@@ -208,10 +208,19 @@ input_string_block (struct lto_input_block *ib)
static bool
register_user_option_p (size_t code, int type)
{
- return type == CL_TARGET
- || (type == CL_COMMON
- && (code == OPT_fPIC
- || code == OPT_fcommon));
+ if (type == CL_TARGET)
+ return true;
+ else if (type == CL_COMMON)
+ {
+ return (code == OPT_fPIC
+ || code == OPT_fpic
+ || code == OPT_fPIE
+ || code == OPT_fpie
+ || code == OPT_fcommon
+ || code == OPT_fexceptions);
+ }
+
+ return false;
}
/* Note command line option with the given TYPE and CODE, ARG, and VALUE.
@@ -358,32 +367,6 @@ lto_read_file_options (struct lto_file_decl_data *file_data)
lto_free_section_data (file_data, LTO_section_opts, 0, data, len);
}
-/* Re-handle option with type TYPE and CODE, ARG, and VALUE. Logic extracted
- from common_handle_option() in opts.c.
-
- FIXME lto. This section is not complete. If extended to handle
- optimization options, note that changing these after opts.c prescan may
- involve also adjusting other options that were defaulted from initial
- optimization option values. */
-
-static void
-handle_common_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
-{
- switch (code)
- {
- case OPT_fPIC:
- flag_pic = !!value;
- break;
-
- case OPT_fcommon:
- flag_no_common = !value;
- break;
-
- default:
- gcc_unreachable ();
- }
-}
-
/* Concatenate the user options and any file options read from an LTO IL
file, and reissue them as if all had just been read in from the command
line. As with serialization, file options precede user options. */
@@ -397,10 +380,15 @@ lto_reissue_options (void)
for (i = 0; VEC_iterate (opt_t, opts, i, o); i++)
{
+ const struct cl_option *option = &cl_options[o->code];
+
+ if (option->flag_var)
+ set_option (option, o->value, o->arg);
+
if (o->type == CL_TARGET)
targetm.handle_option (o->code, o->arg, o->value);
else if (o->type == CL_COMMON)
- handle_common_option (o->code, o->arg, o->value);
+ gcc_assert (option->flag_var);
else
gcc_unreachable ();
}
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index d9c207d0b7f..000be331a94 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "ipa-utils.h"
#include "lto-streamer.h"
+#include "tree-pass.h"
/* Data structure used to hash file names in the source_location field. */
struct string_slot
@@ -274,26 +275,31 @@ static location_t
lto_input_location (struct lto_input_block *ib, struct data_in *data_in)
{
expanded_location xloc;
- location_t loc;
xloc.file = input_string (data_in, ib);
if (xloc.file == NULL)
return UNKNOWN_LOCATION;
+ xloc.file = canon_file_name (xloc.file);
xloc.line = lto_input_sleb128 (ib);
xloc.column = lto_input_sleb128 (ib);
+ xloc.sysp = lto_input_sleb128 (ib);
- if (data_in->current_file)
- linemap_add (line_table, LC_LEAVE, false, NULL, 0);
+ if (data_in->current_file != xloc.file)
+ {
+ if (data_in->current_file)
+ linemap_add (line_table, LC_LEAVE, false, NULL, 0);
+
+ linemap_add (line_table, LC_ENTER, xloc.sysp, xloc.file, xloc.line);
+ }
+ else if (data_in->current_line != xloc.line)
+ linemap_line_start (line_table, xloc.line, xloc.column);
- data_in->current_file = canon_file_name (xloc.file);
+ data_in->current_file = xloc.file;
data_in->current_line = xloc.line;
data_in->current_col = xloc.column;
- linemap_add (line_table, LC_ENTER, false, data_in->current_file, xloc.line);
- LINEMAP_POSITION_FOR_COLUMN (loc, line_table, xloc.column);
-
- return loc;
+ return linemap_position_for_column (line_table, xloc.column);
}
@@ -868,6 +874,128 @@ input_ssa_names (struct lto_input_block *ib, struct data_in *data_in,
}
+/* Fixup the reference tree OP for replaced VAR_DECLs with mismatched
+ types. */
+
+static void
+maybe_fixup_handled_component (tree op)
+{
+ tree decl_type;
+ tree wanted_type;
+
+ while (handled_component_p (TREE_OPERAND (op, 0)))
+ op = TREE_OPERAND (op, 0);
+ if (TREE_CODE (TREE_OPERAND (op, 0)) != VAR_DECL)
+ return;
+
+ decl_type = TREE_TYPE (TREE_OPERAND (op, 0));
+
+ switch (TREE_CODE (op))
+ {
+ case COMPONENT_REF:
+ /* The DECL_CONTEXT of the field-decl is the record type we look for. */
+ wanted_type = DECL_CONTEXT (TREE_OPERAND (op, 1));
+ break;
+
+ case ARRAY_REF:
+ if (TREE_CODE (decl_type) == ARRAY_TYPE
+ && (TREE_TYPE (decl_type) == TREE_TYPE (op)
+ || useless_type_conversion_p (TREE_TYPE (op),
+ TREE_TYPE (decl_type))))
+ return;
+ /* An unknown size array type should be ok. But we do not
+ lower the lower bound in all cases - ugh. */
+ wanted_type = build_array_type (TREE_TYPE (op), NULL_TREE);
+ break;
+
+ case ARRAY_RANGE_REF:
+ if (TREE_CODE (decl_type) == ARRAY_TYPE
+ && (TREE_TYPE (decl_type) == TREE_TYPE (TREE_TYPE (op))
+ || useless_type_conversion_p (TREE_TYPE (TREE_TYPE (op)),
+ TREE_TYPE (decl_type))))
+ return;
+ /* An unknown size array type should be ok. But we do not
+ lower the lower bound in all cases - ugh. */
+ wanted_type = build_array_type (TREE_TYPE (TREE_TYPE (op)), NULL_TREE);
+ break;
+
+ case BIT_FIELD_REF:
+ case VIEW_CONVERT_EXPR:
+ /* Very nice - nothing to do. */
+ return;
+
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ if (TREE_CODE (decl_type) == COMPLEX_TYPE
+ && (TREE_TYPE (decl_type) == TREE_TYPE (op)
+ || useless_type_conversion_p (TREE_TYPE (op),
+ TREE_TYPE (decl_type))))
+ return;
+ wanted_type = build_complex_type (TREE_TYPE (op));
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+
+ if (!useless_type_conversion_p (wanted_type, decl_type))
+ TREE_OPERAND (op, 0) = build1 (VIEW_CONVERT_EXPR, wanted_type,
+ TREE_OPERAND (op, 0));
+}
+
+/* Fixup reference tree operands for substituted prevailing decls
+ with mismatched types in STMT. */
+
+static void
+maybe_fixup_decls (gimple stmt)
+{
+ /* We have to fixup replaced decls here in case there were
+ inter-TU type mismatches. Catch the most common cases
+ for now - this way we'll get testcases for the rest as
+ the type verifier will complain. */
+ if (gimple_assign_single_p (stmt))
+ {
+ tree lhs = gimple_assign_lhs (stmt);
+ tree rhs = gimple_assign_rhs1 (stmt);
+
+ /* First catch loads and aggregate copies by adjusting the rhs. */
+ if (TREE_CODE (rhs) == VAR_DECL)
+ {
+ if (!useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (rhs)))
+ gimple_assign_set_rhs1 (stmt, build1 (VIEW_CONVERT_EXPR,
+ TREE_TYPE (lhs), rhs));
+ }
+ else if (handled_component_p (rhs))
+ maybe_fixup_handled_component (rhs);
+ /* Then catch scalar stores. */
+ else if (TREE_CODE (lhs) == VAR_DECL)
+ {
+ if (!useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (rhs)))
+ gimple_assign_set_lhs (stmt, build1 (VIEW_CONVERT_EXPR,
+ TREE_TYPE (rhs), lhs));
+ }
+ else if (handled_component_p (lhs))
+ maybe_fixup_handled_component (lhs);
+ }
+ else if (is_gimple_call (stmt))
+ {
+ tree lhs = gimple_call_lhs (stmt);
+
+ if (lhs && TREE_CODE (lhs) == VAR_DECL)
+ {
+ if (!useless_type_conversion_p (TREE_TYPE (lhs),
+ gimple_call_return_type (stmt)))
+ gimple_call_set_lhs (stmt, build1 (VIEW_CONVERT_EXPR,
+ gimple_call_return_type (stmt),
+ lhs));
+ }
+ else if (lhs && handled_component_p (lhs))
+ maybe_fixup_handled_component (lhs);
+
+ /* Arguments, especially for varargs functions will be funny... */
+ }
+}
+
/* Read a statement with tag TAG in function FN from block IB using
descriptors in DATA_IN. */
@@ -939,6 +1067,36 @@ input_gimple_stmt (struct lto_input_block *ib, struct data_in *data_in,
{
tree op = lto_input_tree (ib, data_in);
gimple_set_op (stmt, i, op);
+
+ /* Fixup FIELD_DECLs. */
+ while (op && handled_component_p (op))
+ {
+ if (TREE_CODE (op) == COMPONENT_REF)
+ {
+ tree field, type, tem;
+ field = TREE_OPERAND (op, 1);
+ type = DECL_CONTEXT (field);
+ for (tem = TYPE_FIELDS (type); tem; tem = TREE_CHAIN (tem))
+ {
+ if (tem == field
+ || (TREE_TYPE (tem) == TREE_TYPE (field)
+ && (DECL_FIELD_OFFSET (tem)
+ == DECL_FIELD_OFFSET (field))
+ && (DECL_FIELD_BIT_OFFSET (tem)
+ == DECL_FIELD_BIT_OFFSET (field))
+ && (DECL_OFFSET_ALIGN (tem)
+ == DECL_OFFSET_ALIGN (field))))
+ break;
+ }
+ /* In case of type mismatches across units we can fail
+ to unify some types and thus not find a proper
+ field-decl here. Just do nothing in this case. */
+ if (tem != NULL_TREE)
+ TREE_OPERAND (op, 1) = tem;
+ }
+
+ op = TREE_OPERAND (op, 0);
+ }
}
break;
@@ -974,6 +1132,10 @@ input_gimple_stmt (struct lto_input_block *ib, struct data_in *data_in,
}
}
+ /* Fixup reference tree operands for substituted prevailing decls
+ with mismatched types. */
+ maybe_fixup_decls (stmt);
+
/* Mark the statement modified so its operand vectors can be filled in. */
gimple_set_modified (stmt, true);
@@ -1014,15 +1176,15 @@ input_bb (struct lto_input_block *ib, enum LTO_tags tag,
{
gimple stmt = input_gimple_stmt (ib, data_in, fn, tag);
- /* Drop debug stmts on-the-fly if we do not have VTA enabled.
+ /* Change debug stmts to nops on-the-fly if we do not have VTA enabled.
This allows us to build for example static libs with debugging
enabled and do the final link without. */
- if (MAY_HAVE_DEBUG_STMTS
- || !is_gimple_debug (stmt))
- {
- find_referenced_vars_in (stmt);
- gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
- }
+ if (!MAY_HAVE_DEBUG_STMTS
+ && is_gimple_debug (stmt))
+ stmt = gimple_build_nop ();
+
+ find_referenced_vars_in (stmt);
+ gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
/* After the statement, expect a 0 delimiter or the EH region
that the previous statement belongs to. */
@@ -1033,8 +1195,7 @@ input_bb (struct lto_input_block *ib, enum LTO_tags tag,
{
HOST_WIDE_INT region = lto_input_sleb128 (ib);
gcc_assert (region == (int) region);
- if (MAY_HAVE_DEBUG_STMTS || !is_gimple_debug (stmt))
- add_stmt_to_eh_lp (stmt, region);
+ add_stmt_to_eh_lp (stmt, region);
}
tag = input_record_start (ib);
@@ -1182,6 +1343,8 @@ input_function (tree fn_decl, struct data_in *data_in,
fixup_call_stmt_edges (cgraph_node (fn_decl), stmts);
update_ssa (TODO_update_ssa_only_virtuals);
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
free (stmts);
}
@@ -1296,6 +1459,15 @@ lto_read_body (struct lto_file_decl_data *file_data, tree fn_decl,
/* Restore decl state */
file_data->current_decl_state = file_data->global_decl_state;
+ /* FIXME: ipa_transforms_to_apply holds list of passes that have optimization
+ summaries computed and needs to apply changes. At the moment WHOPR only
+ supports inlining, so we can push it here by hand. In future we need to stream
+ this field into ltrans compilation. This will also need to move the field
+ from struct function into cgraph node where it belongs. */
+ if (flag_ltrans && !cgraph_node (fn_decl)->global.inlined_to)
+ VEC_safe_push (ipa_opt_pass, heap,
+ cfun->ipa_transforms_to_apply,
+ (ipa_opt_pass)&pass_ipa_inline);
pop_cfun ();
}
else
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 9d097f0b503..d593aacc4fc 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -618,6 +618,7 @@ lto_output_location (struct output_block *ob, location_t loc)
output_string (ob, ob->main_stream, xloc.file);
output_sleb128 (ob, xloc.line);
output_sleb128 (ob, xloc.column);
+ output_sleb128 (ob, xloc.sysp);
ob->current_file = xloc.file;
ob->current_line = xloc.line;
@@ -690,6 +691,7 @@ lto_output_tree_ref (struct output_block *ob, tree expr)
break;
case VAR_DECL:
+ case DEBUG_EXPR_DECL:
gcc_assert (decl_function_context (expr) == NULL);
output_record_start (ob, LTO_global_decl_ref);
lto_output_var_decl_index (ob->decl_state, ob->main_stream, expr);
@@ -1761,7 +1763,7 @@ output_bb (struct output_block *ob, basic_block bb, struct function *fn)
/* Create the header in the file using OB. If the section type is for
a function, set FN to the decl for that function. */
-static void
+void
produce_asm (struct output_block *ob, tree fn)
{
enum lto_section_type section_type = ob->section_type;
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index 36172c03131..5b925db504e 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -157,6 +157,9 @@ lto_get_section_name (int section_type, const char *name)
case LTO_section_cgraph:
return concat (LTO_SECTION_NAME_PREFIX, ".cgraph", NULL);
+ case LTO_section_jump_functions:
+ return concat (LTO_SECTION_NAME_PREFIX, ".jmpfuncs", NULL);
+
case LTO_section_ipa_pure_const:
return concat (LTO_SECTION_NAME_PREFIX, ".pureconst", NULL);
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 4d90ecb0d0c..de1ee080b84 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -256,6 +256,7 @@ enum lto_section_type
LTO_section_function_body,
LTO_section_static_initializer,
LTO_section_cgraph,
+ LTO_section_jump_functions,
LTO_section_ipa_pure_const,
LTO_section_ipa_reference,
LTO_section_symtab,
@@ -827,6 +828,7 @@ extern struct output_block *create_output_block (enum lto_section_type);
extern void destroy_output_block (struct output_block *);
extern void lto_output_tree (struct output_block *, tree, bool);
extern void lto_output_bitpack (struct lto_output_stream *, struct bitpack_d *);
+extern void produce_asm (struct output_block *ob, tree fn);
/* In lto-cgraph.c */
@@ -843,9 +845,9 @@ void input_cgraph (void);
extern void lto_symtab_register_decl (tree, ld_plugin_symbol_resolution_t,
struct lto_file_decl_data *);
extern void lto_symtab_merge_decls (void);
+extern void lto_symtab_merge_cgraph_nodes (void);
extern tree lto_symtab_prevailing_decl (tree decl);
extern enum ld_plugin_symbol_resolution lto_symtab_get_resolution (tree decl);
-extern void lto_symtab_clear_resolution (tree decl);
/* In lto-opts.c. */
diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
index 2a0783a12be..642b6235d90 100644
--- a/gcc/lto-symtab.c
+++ b/gcc/lto-symtab.c
@@ -41,6 +41,9 @@ struct GTY(()) lto_symtab_entry_def
tree id;
/* The symbol table entry, a DECL. */
tree decl;
+ /* The cgraph node if decl is a function decl. Filled in during the
+ merging process. */
+ struct cgraph_node *node;
/* LTO file-data and symbol resolution for this decl. */
struct lto_file_decl_data * GTY((skip (""))) file_data;
enum ld_plugin_symbol_resolution resolution;
@@ -109,200 +112,6 @@ lto_symtab_maybe_init_hash_table (void)
lto_symtab_entry_eq, NULL);
}
-static bool maybe_merge_incomplete_and_complete_type (tree, tree);
-
-/* Try to merge an incomplete type INCOMPLETE with a complete type
- COMPLETE of same kinds.
- Return true if they were merged, false otherwise. */
-
-static bool
-merge_incomplete_and_complete_type (tree incomplete, tree complete)
-{
- /* For merging array types do some extra sanity checking. */
- if (TREE_CODE (incomplete) == ARRAY_TYPE
- && !maybe_merge_incomplete_and_complete_type (TREE_TYPE (incomplete),
- TREE_TYPE (complete))
- && !gimple_types_compatible_p (TREE_TYPE (incomplete),
- TREE_TYPE (complete)))
- return false;
-
- /* ??? Ideally we would do this by means of a common canonical type, but
- that's difficult as we do not have links from the canonical type
- back to all its children. */
- gimple_force_type_merge (incomplete, complete);
-
- return true;
-}
-
-/* Try to merge a maybe complete / incomplete type pair TYPE1 and TYPE2.
- Return true if they were merged, false otherwise. */
-
-static bool
-maybe_merge_incomplete_and_complete_type (tree type1, tree type2)
-{
- bool res = false;
-
- if (TREE_CODE (type1) != TREE_CODE (type2))
- return false;
-
- if (!COMPLETE_TYPE_P (type1) && COMPLETE_TYPE_P (type2))
- res = merge_incomplete_and_complete_type (type1, type2);
- else if (COMPLETE_TYPE_P (type1) && !COMPLETE_TYPE_P (type2))
- res = merge_incomplete_and_complete_type (type2, type1);
-
- /* Recurse on pointer targets. */
- if (!res
- && POINTER_TYPE_P (type1)
- && POINTER_TYPE_P (type2))
- res = maybe_merge_incomplete_and_complete_type (TREE_TYPE (type1),
- TREE_TYPE (type2));
-
- return res;
-}
-
-/* Check if OLD_DECL and NEW_DECL are compatible. */
-
-static bool
-lto_symtab_compatible (tree old_decl, tree new_decl)
-{
- tree old_type, new_type;
-
- if (TREE_CODE (old_decl) != TREE_CODE (new_decl))
- {
- switch (TREE_CODE (new_decl))
- {
- case VAR_DECL:
- gcc_assert (TREE_CODE (old_decl) == FUNCTION_DECL);
- error_at (DECL_SOURCE_LOCATION (new_decl),
- "function %qD redeclared as variable", new_decl);
- inform (DECL_SOURCE_LOCATION (old_decl),
- "previously declared here");
- return false;
-
- case FUNCTION_DECL:
- gcc_assert (TREE_CODE (old_decl) == VAR_DECL);
- error_at (DECL_SOURCE_LOCATION (new_decl),
- "variable %qD redeclared as function", new_decl);
- inform (DECL_SOURCE_LOCATION (old_decl),
- "previously declared here");
- return false;
-
- default:
- gcc_unreachable ();
- }
- }
-
- if (TREE_CODE (new_decl) == FUNCTION_DECL)
- {
- if (!gimple_types_compatible_p (TREE_TYPE (old_decl),
- TREE_TYPE (new_decl)))
- /* If we don't have a merged type yet...sigh. The linker
- wouldn't complain if the types were mismatched, so we
- probably shouldn't either. Just use the type from
- whichever decl appears to be associated with the
- definition. If for some odd reason neither decl is, the
- older one wins. */
- (void) 0;
-
- return true;
- }
-
- /* Now we exclusively deal with VAR_DECLs. */
-
- /* Handle external declarations with incomplete type or pointed-to
- incomplete types by forcefully merging the types.
- ??? In principle all types involved in the two decls should
- be merged forcefully, for example without considering type or
- field names. */
- old_type = TREE_TYPE (old_decl);
- new_type = TREE_TYPE (new_decl);
-
- if (DECL_EXTERNAL (old_decl) || DECL_EXTERNAL (new_decl))
- maybe_merge_incomplete_and_complete_type (old_type, new_type);
- else if (POINTER_TYPE_P (old_type)
- && POINTER_TYPE_P (new_type))
- maybe_merge_incomplete_and_complete_type (TREE_TYPE (old_type),
- TREE_TYPE (new_type));
-
- /* For array types we have to accept external declarations with
- different sizes than the actual definition (164.gzip).
- ??? We could emit a warning here. */
- if (TREE_CODE (old_type) == TREE_CODE (new_type)
- && TREE_CODE (old_type) == ARRAY_TYPE
- && COMPLETE_TYPE_P (old_type)
- && COMPLETE_TYPE_P (new_type)
- && tree_int_cst_compare (TYPE_SIZE (old_type),
- TYPE_SIZE (new_type)) != 0
- && gimple_types_compatible_p (TREE_TYPE (old_type),
- TREE_TYPE (new_type)))
- {
- /* If only one is external use the type of the non-external decl.
- Else use the larger one and also adjust the decl size.
- ??? Directional merging would allow us to simply pick the
- larger one instead of rewriting it. */
- if (DECL_EXTERNAL (old_decl) ^ DECL_EXTERNAL (new_decl))
- {
- if (DECL_EXTERNAL (old_decl))
- TREE_TYPE (old_decl) = new_type;
- else if (DECL_EXTERNAL (new_decl))
- TREE_TYPE (new_decl) = old_type;
- }
- else
- {
- if (tree_int_cst_compare (TYPE_SIZE (old_type),
- TYPE_SIZE (new_type)) < 0)
- {
- TREE_TYPE (old_decl) = new_type;
- DECL_SIZE (old_decl) = DECL_SIZE (new_decl);
- DECL_SIZE_UNIT (old_decl) = DECL_SIZE_UNIT (new_decl);
- }
- else
- {
- TREE_TYPE (new_decl) = old_type;
- DECL_SIZE (new_decl) = DECL_SIZE (old_decl);
- DECL_SIZE_UNIT (new_decl) = DECL_SIZE_UNIT (old_decl);
- }
- }
- }
-
- /* We can tolerate differences in type qualification, the
- qualification of the prevailing definition will prevail. */
- old_type = TYPE_MAIN_VARIANT (TREE_TYPE (old_decl));
- new_type = TYPE_MAIN_VARIANT (TREE_TYPE (new_decl));
- if (!gimple_types_compatible_p (old_type, new_type))
- {
- if (warning_at (DECL_SOURCE_LOCATION (new_decl), 0,
- "type of %qD does not match original declaration",
- new_decl))
- inform (DECL_SOURCE_LOCATION (old_decl),
- "previously declared here");
- return false;
- }
-
- /* ??? We might want to emit a warning here if type qualification
- differences were spotted. Do not do this unconditionally though. */
-
- /* There is no point in comparing too many details of the decls here.
- The type compatibility checks or the completing of types has properly
- dealt with most issues. */
-
- /* The following should all not invoke fatal errors as in non-LTO
- mode the linker wouldn't complain either. Just emit warnings. */
-
- /* Report a warning if user-specified alignments do not match. */
- if ((DECL_USER_ALIGN (old_decl) && DECL_USER_ALIGN (new_decl))
- && DECL_ALIGN (old_decl) != DECL_ALIGN (new_decl))
- {
- warning_at (DECL_SOURCE_LOCATION (new_decl), 0,
- "alignment of %qD does not match original declaration",
- new_decl);
- inform (DECL_SOURCE_LOCATION (old_decl), "previously declared here");
- return false;
- }
-
- return true;
-}
-
/* Registers DECL with the LTO symbol table as having resolution RESOLUTION
and read from FILE_DATA. */
@@ -335,7 +144,7 @@ lto_symtab_register_decl (tree decl,
new_entry->decl = decl;
new_entry->resolution = resolution;
new_entry->file_data = file_data;
-
+
lto_symtab_maybe_init_hash_table ();
slot = htab_find_slot (lto_symtab_identifiers, new_entry, INSERT);
new_entry->next = (lto_symtab_entry_t) *slot;
@@ -375,128 +184,190 @@ lto_symtab_get_resolution (tree decl)
return e->resolution;
}
-/* Replace the cgraph node OLD_NODE with NEW_NODE in the cgraph, merging
+
+/* Replace the cgraph node NODE with PREVAILING_NODE in the cgraph, merging
all edges and removing the old node. */
static void
-lto_cgraph_replace_node (struct cgraph_node *old_node,
- struct cgraph_node *new_node)
+lto_cgraph_replace_node (struct cgraph_node *node,
+ struct cgraph_node *prevailing_node)
{
struct cgraph_edge *e, *next;
/* Merge node flags. */
- if (old_node->needed)
- cgraph_mark_needed_node (new_node);
- if (old_node->reachable)
- cgraph_mark_reachable_node (new_node);
- if (old_node->address_taken)
+ if (node->needed)
+ cgraph_mark_needed_node (prevailing_node);
+ if (node->reachable)
+ cgraph_mark_reachable_node (prevailing_node);
+ if (node->address_taken)
{
- gcc_assert (!new_node->global.inlined_to);
- cgraph_mark_address_taken_node (new_node);
+ gcc_assert (!prevailing_node->global.inlined_to);
+ cgraph_mark_address_taken_node (prevailing_node);
}
/* Redirect all incoming edges. */
- for (e = old_node->callers; e; e = next)
+ for (e = node->callers; e; e = next)
{
next = e->next_caller;
- cgraph_redirect_edge_callee (e, new_node);
+ cgraph_redirect_edge_callee (e, prevailing_node);
}
/* There are not supposed to be any outgoing edges from a node we
replace. Still this can happen for multiple instances of weak
- functions.
- ??? For now do what the old code did. Do not create edges for them. */
- for (e = old_node->callees; e; e = next)
+ functions. */
+ for (e = node->callees; e; e = next)
{
next = e->next_callee;
cgraph_remove_edge (e);
}
/* Finally remove the replaced node. */
- cgraph_remove_node (old_node);
+ cgraph_remove_node (node);
}
-/* Merge two variable or function symbol table entries ENTRY1 and ENTRY2.
- Return the prevailing one or NULL if a merge is not possible. */
+/* Merge two variable or function symbol table entries PREVAILING and ENTRY.
+ Return false if the symbols are not fully compatible and a diagnostic
+ should be emitted. */
-static lto_symtab_entry_t
-lto_symtab_merge (lto_symtab_entry_t entry1, lto_symtab_entry_t entry2)
+static bool
+lto_symtab_merge (lto_symtab_entry_t prevailing, lto_symtab_entry_t entry)
{
- tree old_decl = entry1->decl;
- tree new_decl = entry2->decl;
- ld_plugin_symbol_resolution_t old_resolution = entry1->resolution;
- ld_plugin_symbol_resolution_t new_resolution = entry2->resolution;
- struct cgraph_node *old_node = NULL;
- struct cgraph_node *new_node = NULL;
-
- /* Give ODR violation errors. */
- if (new_resolution == LDPR_PREVAILING_DEF
- || new_resolution == LDPR_PREVAILING_DEF_IRONLY)
+ tree prevailing_decl = prevailing->decl;
+ tree decl = entry->decl;
+ tree prevailing_type, type;
+
+ /* Merge decl state in both directions, we may still end up using
+ the new decl. */
+ TREE_ADDRESSABLE (prevailing_decl) |= TREE_ADDRESSABLE (decl);
+ TREE_ADDRESSABLE (decl) |= TREE_ADDRESSABLE (prevailing_decl);
+
+ /* The linker may ask us to combine two incompatible symbols.
+ Detect this case and notify the caller of required diagnostics. */
+
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ {
+ if (TREE_TYPE (prevailing_decl) != TREE_TYPE (decl))
+ /* If we don't have a merged type yet...sigh. The linker
+ wouldn't complain if the types were mismatched, so we
+ probably shouldn't either. Just use the type from
+ whichever decl appears to be associated with the
+ definition. If for some odd reason neither decl is, the
+ older one wins. */
+ (void) 0;
+
+ return true;
+ }
+
+ /* Now we exclusively deal with VAR_DECLs. */
+
+ /* Sharing a global symbol is a strong hint that two types are
+ compatible. We could use this information to complete
+ incomplete pointed-to types more aggressively here, ignoring
+ mismatches in both field and tag names. It's difficult though
+ to guarantee that this does not have side-effects on merging
+ more compatible types from other translation units though. */
+
+ /* We can tolerate differences in type qualification, the
+ qualification of the prevailing definition will prevail.
+ ??? In principle we might want to only warn for structurally
+ incompatible types here, but unless we have protective measures
+ for TBAA in place that would hide useful information. */
+ prevailing_type = TYPE_MAIN_VARIANT (TREE_TYPE (prevailing_decl));
+ type = TYPE_MAIN_VARIANT (TREE_TYPE (decl));
+
+ /* We have to register and fetch canonical types here as the global
+ fixup process didn't yet run. */
+ prevailing_type = gimple_register_type (prevailing_type);
+ type = gimple_register_type (type);
+ if (prevailing_type != type)
{
- if ((old_resolution == LDPR_PREVAILING_DEF
- || old_resolution == LDPR_PREVAILING_DEF_IRONLY)
- && (old_resolution != new_resolution || flag_no_common))
+ if (COMPLETE_TYPE_P (type))
+ return false;
+
+ /* If type is incomplete then avoid warnings in the cases
+ that TBAA handles just fine. */
+
+ if (TREE_CODE (prevailing_type) != TREE_CODE (type))
+ return false;
+
+ if (TREE_CODE (prevailing_type) == ARRAY_TYPE)
{
- error_at (DECL_SOURCE_LOCATION (new_decl),
- "%qD has already been defined", new_decl);
- inform (DECL_SOURCE_LOCATION (old_decl),
- "previously defined here");
- return NULL;
+ tree tem1 = TREE_TYPE (prevailing_type);
+ tree tem2 = TREE_TYPE (type);
+ while (TREE_CODE (tem1) == ARRAY_TYPE
+ && TREE_CODE (tem2) == ARRAY_TYPE)
+ {
+ tem1 = TREE_TYPE (tem1);
+ tem2 = TREE_TYPE (tem2);
+ }
+
+ if (TREE_CODE (tem1) != TREE_CODE (tem2))
+ return false;
+
+ if (gimple_register_type (tem1) != gimple_register_type (tem2))
+ return false;
}
+
+ /* Fallthru. Compatible enough. */
}
- /* The linker may ask us to combine two incompatible symbols. */
- if (!lto_symtab_compatible (old_decl, new_decl))
- return NULL;
+ /* ??? We might want to emit a warning here if type qualification
+ differences were spotted. Do not do this unconditionally though. */
- if (TREE_CODE (old_decl) == FUNCTION_DECL)
- old_node = cgraph_get_node (old_decl);
- if (TREE_CODE (new_decl) == FUNCTION_DECL)
- new_node = cgraph_get_node (new_decl);
+ /* There is no point in comparing too many details of the decls here.
+ The type compatibility checks or the completing of types has properly
+ dealt with most issues. */
- /* Merge decl state in both directions, we may still end up using
- the new decl. */
- TREE_ADDRESSABLE (old_decl) |= TREE_ADDRESSABLE (new_decl);
- TREE_ADDRESSABLE (new_decl) |= TREE_ADDRESSABLE (old_decl);
+ /* The following should all not invoke fatal errors as in non-LTO
+ mode the linker wouldn't complain either. Just emit warnings. */
- gcc_assert (new_resolution != LDPR_UNKNOWN
- && new_resolution != LDPR_UNDEF
- && old_resolution != LDPR_UNKNOWN
- && old_resolution != LDPR_UNDEF);
+ /* Report a warning if user-specified alignments do not match. */
+ if ((DECL_USER_ALIGN (prevailing_decl) && DECL_USER_ALIGN (decl))
+ && DECL_ALIGN (prevailing_decl) < DECL_ALIGN (decl))
+ return false;
- if (new_resolution == LDPR_PREVAILING_DEF
- || new_resolution == LDPR_PREVAILING_DEF_IRONLY
- || (!old_node && new_node))
- {
- gcc_assert ((!old_node && new_node)
- || old_resolution == LDPR_PREEMPTED_IR
- || old_resolution == LDPR_RESOLVED_IR
- || (old_resolution == new_resolution && !flag_no_common));
- if (old_node)
- lto_cgraph_replace_node (old_node, new_node);
- /* Choose new_decl, entry2. */
- return entry2;
- }
+ return true;
+}
+
+/* Return true if the symtab entry E can be replaced by another symtab
+ entry. */
+
+static bool
+lto_symtab_resolve_replaceable_p (lto_symtab_entry_t e)
+{
+ if (DECL_EXTERNAL (e->decl)
+ || DECL_COMDAT (e->decl)
+ || DECL_WEAK (e->decl))
+ return true;
+
+ if (TREE_CODE (e->decl) == VAR_DECL)
+ return (DECL_COMMON (e->decl)
+ || (!flag_no_common && !DECL_INITIAL (e->decl)));
+
+ return false;
+}
+
+/* Return true if the symtab entry E can be the prevailing one. */
+
+static bool
+lto_symtab_resolve_can_prevail_p (lto_symtab_entry_t e)
+{
+ if (!TREE_STATIC (e->decl))
+ return false;
+
+ /* For functions we need a non-discarded body. */
+ if (TREE_CODE (e->decl) == FUNCTION_DECL)
+ return (e->node && e->node->analyzed);
- if (new_resolution == LDPR_PREEMPTED_REG
- || new_resolution == LDPR_RESOLVED_EXEC
- || new_resolution == LDPR_RESOLVED_DYN)
- gcc_assert (old_resolution == LDPR_PREEMPTED_REG
- || old_resolution == LDPR_RESOLVED_EXEC
- || old_resolution == LDPR_RESOLVED_DYN);
-
- if (new_resolution == LDPR_PREEMPTED_IR
- || new_resolution == LDPR_RESOLVED_IR)
- gcc_assert (old_resolution == LDPR_PREVAILING_DEF
- || old_resolution == LDPR_PREVAILING_DEF_IRONLY
- || old_resolution == LDPR_PREEMPTED_IR
- || old_resolution == LDPR_RESOLVED_IR);
-
- if (new_node)
- lto_cgraph_replace_node (new_node, old_node);
-
- /* Choose old_decl, entry1. */
- return entry1;
+ /* A variable should have a size. */
+ else if (TREE_CODE (e->decl) == VAR_DECL)
+ return (DECL_SIZE (e->decl) != NULL_TREE
+ /* The C++ frontend retains TREE_STATIC on the declaration
+ of foo_ in struct Foo { static Foo *foo_; }; but it is
+ not a definition. g++.dg/lto/20090315_0.C. */
+ && !DECL_EXTERNAL (e->decl));
+
+ gcc_unreachable ();
}
/* Resolve the symbol with the candidates in the chain *SLOT and store
@@ -506,114 +377,121 @@ static void
lto_symtab_resolve_symbols (void **slot)
{
lto_symtab_entry_t e = (lto_symtab_entry_t) *slot;
+ lto_symtab_entry_t prevailing = NULL;
/* If the chain is already resolved there is nothing to do. */
if (e->resolution != LDPR_UNKNOWN)
return;
- /* This is a poor mans resolver. */
+ /* Find the single non-replaceable prevailing symbol and
+ diagnose ODR violations. */
for (; e; e = e->next)
{
- gcc_assert (e->resolution == LDPR_UNKNOWN);
- if (DECL_EXTERNAL (e->decl)
- || (TREE_CODE (e->decl) == FUNCTION_DECL
- && !cgraph_get_node (e->decl)))
- e->resolution = LDPR_RESOLVED_IR;
- else
+ if (TREE_CODE (e->decl) == FUNCTION_DECL)
+ e->node = cgraph_get_node (e->decl);
+
+ if (!lto_symtab_resolve_can_prevail_p (e))
+ {
+ e->resolution = LDPR_RESOLVED_IR;
+ continue;
+ }
+
+ /* Set a default resolution - the final prevailing one will get
+ adjusted later. */
+ e->resolution = LDPR_PREEMPTED_IR;
+ if (!lto_symtab_resolve_replaceable_p (e))
+ {
+ if (prevailing)
+ {
+ error_at (DECL_SOURCE_LOCATION (e->decl),
+ "%qD has already been defined", e->decl);
+ inform (DECL_SOURCE_LOCATION (prevailing->decl),
+ "previously defined here");
+ }
+ prevailing = e;
+ }
+ }
+ if (prevailing)
+ goto found;
+
+ /* Do a second round choosing one from the replaceable prevailing decls. */
+ for (e = (lto_symtab_entry_t) *slot; e; e = e->next)
+ {
+ if (e->resolution != LDPR_PREEMPTED_IR)
+ continue;
+
+ /* Choose the first function that can prevail as prevailing. */
+ if (TREE_CODE (e->decl) == FUNCTION_DECL)
{
- if (TREE_READONLY (e->decl))
- e->resolution = LDPR_PREVAILING_DEF_IRONLY;
- else
- e->resolution = LDPR_PREVAILING_DEF;
+ prevailing = e;
+ break;
}
+
+ /* From variables that can prevail choose the largest one. */
+ if (!prevailing
+ || tree_int_cst_lt (DECL_SIZE (prevailing->decl),
+ DECL_SIZE (e->decl)))
+ prevailing = e;
}
+
+ if (!prevailing)
+ return;
+
+found:
+ if (TREE_CODE (prevailing->decl) == VAR_DECL
+ && TREE_READONLY (prevailing->decl))
+ prevailing->resolution = LDPR_PREVAILING_DEF_IRONLY;
+ else
+ prevailing->resolution = LDPR_PREVAILING_DEF;
}
-/* Merge one symbol table chain to a (set of) prevailing decls. */
+/* Merge all decls in the symbol table chain to the prevailing decl and
+ issue diagnostics about type mismatches. */
static void
lto_symtab_merge_decls_2 (void **slot)
{
- lto_symtab_entry_t e2, e1;
+ lto_symtab_entry_t prevailing, e;
+ VEC(tree, heap) *mismatches = NULL;
+ unsigned i;
+ tree decl;
+ bool diagnosed_p = false;
/* Nothing to do for a single entry. */
- e1 = (lto_symtab_entry_t) *slot;
- if (!e1->next)
+ prevailing = (lto_symtab_entry_t) *slot;
+ if (!prevailing->next)
return;
- /* Try to merge each entry with each other entry. In case of a
- single prevailing decl this is linear. */
-restart:
- for (; e1; e1 = e1->next)
- for (e2 = e1->next; e2; e2 = e2->next)
- {
- lto_symtab_entry_t prevailing = lto_symtab_merge (e1, e2);
- if (prevailing == e1)
- {
- lto_symtab_entry_t tmp = prevailing;
- while (tmp->next != e2)
- tmp = tmp->next;
- tmp->next = e2->next;
- e2->next = NULL;
- e2 = tmp;
- }
- else if (prevailing == e2)
- {
- lto_symtab_entry_t tmp = (lto_symtab_entry_t) *slot;
- if (tmp == e1)
- {
- *slot = e1->next;
- tmp = e1->next;
- }
- else
- {
- while (tmp->next != e1)
- tmp = tmp->next;
- tmp->next = e1->next;
- }
- e1->next = NULL;
- e1 = tmp;
- goto restart;
- }
- }
-}
-
-/* Fixup the chain of prevailing variable decls *SLOT that are commonized
- during link-time. */
+ /* Try to merge each entry with the prevailing one. */
+ for (e = prevailing->next; e; e = e->next)
+ {
+ if (!lto_symtab_merge (prevailing, e))
+ VEC_safe_push (tree, heap, mismatches, e->decl);
+ }
+ if (VEC_empty (tree, mismatches))
+ return;
-static void
-lto_symtab_fixup_var_decls (void **slot)
-{
- lto_symtab_entry_t e = (lto_symtab_entry_t) *slot;
- tree size = bitsize_zero_node;
-
- /* Find the largest prevailing decl and move it to the front of the chain.
- This is the decl we will output as representative for the common
- section. */
- size = bitsize_zero_node;
- if (e->resolution == LDPR_PREVAILING_DEF_IRONLY
- || e->resolution == LDPR_PREVAILING_DEF)
- size = DECL_SIZE (e->decl);
- for (; e->next;)
+ /* Diagnose all mismatched re-declarations. */
+ for (i = 0; VEC_iterate (tree, mismatches, i, decl); ++i)
{
- lto_symtab_entry_t next = e->next;
- if ((next->resolution == LDPR_PREVAILING_DEF_IRONLY
- || next->resolution == LDPR_PREVAILING_DEF)
- && tree_int_cst_lt (size, DECL_SIZE (next->decl)))
+ if (TREE_TYPE (prevailing->decl) != TREE_TYPE (decl))
+ diagnosed_p |= warning_at (DECL_SOURCE_LOCATION (decl), 0,
+ "type of %qD does not match original "
+ "declaration", decl);
+
+ else if ((DECL_USER_ALIGN (prevailing->decl) && DECL_USER_ALIGN (decl))
+ && DECL_ALIGN (prevailing->decl) < DECL_ALIGN (decl))
{
- size = DECL_SIZE (next->decl);
- e->next = next->next;
- next->next = (lto_symtab_entry_t) *slot;
- *slot = next;
+ diagnosed_p |= warning_at (DECL_SOURCE_LOCATION (decl), 0,
+ "alignment of %qD is bigger than "
+ "original declaration", decl);
}
- else
- e = next;
}
+ if (diagnosed_p)
+ inform (DECL_SOURCE_LOCATION (prevailing->decl),
+ "previously declared here");
- /* Mark everything apart from the first var as written out. */
- e = (lto_symtab_entry_t) *slot;
- for (e = e->next; e; e = e->next)
- TREE_ASM_WRITTEN (e->decl) = true;
+ VEC_free (tree, heap, mismatches);
}
/* Helper to process the decl chain for the symbol table entry *SLOT. */
@@ -621,33 +499,106 @@ lto_symtab_fixup_var_decls (void **slot)
static int
lto_symtab_merge_decls_1 (void **slot, void *data ATTRIBUTE_UNUSED)
{
- lto_symtab_entry_t e;
+ lto_symtab_entry_t e, prevailing;
+ bool diagnosed_p = false;
- /* Compute the symbol resolutions. */
+ /* Compute the symbol resolutions. This is a no-op when using the
+ linker plugin. */
lto_symtab_resolve_symbols (slot);
- /* Register and adjust types of the entries. */
- for (e = (lto_symtab_entry_t) *slot; e; e = e->next)
- TREE_TYPE (e->decl) = gimple_register_type (TREE_TYPE (e->decl));
+ /* Find the prevailing decl. */
+ for (prevailing = (lto_symtab_entry_t) *slot;
+ prevailing
+ && prevailing->resolution != LDPR_PREVAILING_DEF_IRONLY
+ && prevailing->resolution != LDPR_PREVAILING_DEF;
+ prevailing = prevailing->next)
+ ;
+
+ /* Assert it's the only one. */
+ if (prevailing)
+ for (e = prevailing->next; e; e = e->next)
+ gcc_assert (e->resolution != LDPR_PREVAILING_DEF_IRONLY
+ && e->resolution != LDPR_PREVAILING_DEF);
+
+ /* If there's not a prevailing symbol yet it's an external reference.
+ Happens a lot during ltrans. Choose the first symbol with a
+ cgraph or a varpool node. */
+ if (!prevailing)
+ {
+ prevailing = (lto_symtab_entry_t) *slot;
+ /* For functions choose one with a cgraph node. */
+ if (TREE_CODE (prevailing->decl) == FUNCTION_DECL)
+ while (!prevailing->node
+ && prevailing->next)
+ prevailing = prevailing->next;
+ /* We do not stream varpool nodes, so the first decl has to
+ be good enough for now.
+ ??? For QOI choose a variable with readonly initializer
+ if there is one. This matches C++
+ struct Foo { static const int i = 1; }; without a real
+ definition. */
+ if (TREE_CODE (prevailing->decl) == VAR_DECL)
+ while (!(TREE_READONLY (prevailing->decl)
+ && DECL_INITIAL (prevailing->decl))
+ && prevailing->next)
+ prevailing = prevailing->next;
+ }
- /* Merge the chain to a (hopefully) single prevailing decl. */
- lto_symtab_merge_decls_2 (slot);
+ /* Move it first in the list. */
+ if ((lto_symtab_entry_t) *slot != prevailing)
+ {
+ for (e = (lto_symtab_entry_t) *slot; e->next != prevailing; e = e->next)
+ ;
+ e->next = prevailing->next;
+ prevailing->next = (lto_symtab_entry_t) *slot;
+ *slot = (void *) prevailing;
+ }
- /* ??? Ideally we should delay all diagnostics until this point to
- avoid duplicates. */
+ /* Record the prevailing variable. */
+ if (TREE_CODE (prevailing->decl) == VAR_DECL)
+ VEC_safe_push (tree, gc, lto_global_var_decls, prevailing->decl);
- /* All done for FUNCTION_DECLs. */
- e = (lto_symtab_entry_t) *slot;
- if (TREE_CODE (e->decl) == FUNCTION_DECL)
- return 1;
+ /* Diagnose mismatched objects. */
+ for (e = prevailing->next; e; e = e->next)
+ {
+ if (TREE_CODE (prevailing->decl) == TREE_CODE (e->decl))
+ continue;
+
+ switch (TREE_CODE (prevailing->decl))
+ {
+ case VAR_DECL:
+ gcc_assert (TREE_CODE (e->decl) == FUNCTION_DECL);
+ error_at (DECL_SOURCE_LOCATION (e->decl),
+ "variable %qD redeclared as function", prevailing->decl);
+ break;
- /* Fixup variables in case there are multiple prevailing ones. */
- if (e->next)
- lto_symtab_fixup_var_decls (slot);
+ case FUNCTION_DECL:
+ gcc_assert (TREE_CODE (e->decl) == VAR_DECL);
+ error_at (DECL_SOURCE_LOCATION (e->decl),
+ "function %qD redeclared as variable", prevailing->decl);
+ break;
- /* Insert all variable decls into the global variable decl vector. */
+ default:
+ gcc_unreachable ();
+ }
+
+ diagnosed_p = true;
+ }
+ if (diagnosed_p)
+ inform (DECL_SOURCE_LOCATION (prevailing->decl),
+ "previously declared here");
+
+ /* Register and adjust types of the entries. */
for (e = (lto_symtab_entry_t) *slot; e; e = e->next)
- VEC_safe_push (tree, gc, lto_global_var_decls, e->decl);
+ TREE_TYPE (e->decl) = gimple_register_type (TREE_TYPE (e->decl));
+
+ /* Merge the chain to the single prevailing decl and diagnose
+ mismatches. */
+ lto_symtab_merge_decls_2 (slot);
+
+ /* Drop all but the prevailing decl from the symtab. */
+ if (TREE_CODE (prevailing->decl) != FUNCTION_DECL)
+ prevailing->next = NULL;
return 1;
}
@@ -661,6 +612,40 @@ lto_symtab_merge_decls (void)
htab_traverse (lto_symtab_identifiers, lto_symtab_merge_decls_1, NULL);
}
+/* Helper to process the decl chain for the symbol table entry *SLOT. */
+
+static int
+lto_symtab_merge_cgraph_nodes_1 (void **slot, void *data ATTRIBUTE_UNUSED)
+{
+ lto_symtab_entry_t e, prevailing = (lto_symtab_entry_t) *slot;
+
+ if (!prevailing->next)
+ return 1;
+
+ gcc_assert (TREE_CODE (prevailing->decl) == FUNCTION_DECL);
+
+ /* Replace the cgraph node of each entry with the prevailing one. */
+ for (e = prevailing->next; e; e = e->next)
+ {
+ if (e->node != NULL)
+ lto_cgraph_replace_node (e->node, prevailing->node);
+ }
+
+ /* Drop all but the prevailing decl from the symtab. */
+ prevailing->next = NULL;
+
+ return 1;
+}
+
+/* Merge cgraph nodes according to the symbol merging done by
+ lto_symtab_merge_decls. */
+
+void
+lto_symtab_merge_cgraph_nodes (void)
+{
+ lto_symtab_maybe_init_hash_table ();
+ htab_traverse (lto_symtab_identifiers, lto_symtab_merge_cgraph_nodes_1, NULL);
+}
/* Given the decl DECL, return the prevailing decl with the same name. */
@@ -685,70 +670,7 @@ lto_symtab_prevailing_decl (tree decl)
if (!ret)
return NULL_TREE;
- /* If there is only one candidate return it. */
- if (ret->next == NULL)
- return ret->decl;
-
- /* If there are multiple decls to choose from find the one we merged
- with and return that. */
- while (ret)
- {
- if (gimple_types_compatible_p (TREE_TYPE (decl), TREE_TYPE (ret->decl)))
- return ret->decl;
-
- ret = ret->next;
- }
-
- gcc_unreachable ();
-}
-
-/* Remove any storage used to store resolution of DECL. */
-
-void
-lto_symtab_clear_resolution (tree decl)
-{
- struct lto_symtab_entry_def temp;
- lto_symtab_entry_t head;
- void **slot;
-
- if (!TREE_PUBLIC (decl))
- return;
-
- /* LTO FIXME: There should be no DECL_ABSTRACT in the middle end. */
- if (TREE_CODE (decl) == FUNCTION_DECL && DECL_ABSTRACT (decl))
- return;
-
- gcc_assert (DECL_ASSEMBLER_NAME_SET_P (decl));
-
- lto_symtab_maybe_init_hash_table ();
- temp.id = DECL_ASSEMBLER_NAME (decl);
- slot = htab_find_slot (lto_symtab_identifiers, &temp, NO_INSERT);
- if (!*slot)
- return;
-
- head = (lto_symtab_entry_t) *slot;
- if (head->decl == decl)
- {
- if (head->next)
- {
- *slot = head->next;
- head->next = NULL;
- }
- else
- htab_remove_elt (lto_symtab_identifiers, &temp);
- }
- else
- {
- lto_symtab_entry_t e;
- while (head->next && head->next->decl != decl)
- head = head->next;
- if (head->next)
- {
- e = head->next;
- head->next = e->next;
- e->next = NULL;
- }
- }
+ return ret->decl;
}
#include "gt-lto-symtab.h"
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 82b8bec7a47..d6c3325846d 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,34 @@
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ * lto.c (lto_fixup_jump_functions): Remove.
+ (lto_fixup_decls): Do not fixup jump functions.
+ (read_cgraph_and_symbols): Schedule cgraph merging after
+ summary reading. Schedule type and decl fixup before
+ summary reading.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ * lto.c (lto_fixup_data_t): Remove free_list member.
+ (lto_fixup_tree): Do not insert into free_list.
+ (free_decl): Remove.
+ (lto_fixup_decls): Remove free-list handling.
+
+2009-10-22 Jan Hubicka <jh@suse.cz>
+
+ * lto.c (lto_fixup_jump_functions): New function.
+ (lto_fixup_decls): Use it.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41715
+ * lto.c (lto_fixup_tree): Revert last change.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ * lto.c (lto_fixup_tree): In case the prevailing decl is not
+ compatible with the one we replace wrap it around a
+ VIEW_CONVERT_EXPR.
+
2009-10-09 Richard Guenther <rguenther@suse.de>
PR lto/41635
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index 2b674c176ac..54fde65c69a 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -1193,7 +1193,6 @@ lto_execute_ltrans (char *const *files)
typedef struct {
- struct pointer_set_t *free_list;
struct pointer_set_t *seen;
} lto_fixup_data_t;
@@ -1528,8 +1527,6 @@ lto_fixup_tree (tree *tp, int *walk_subtrees, void *data)
lto_mark_nothrow_fndecl (prevailing);
}
- pointer_set_insert (fixup_data->free_list, t);
-
/* Also replace t with prevailing defintion. We don't want to
insert the other defintion in the seen set as we want to
replace all instances of it. */
@@ -1638,20 +1635,6 @@ lto_fixup_state_aux (void **slot, void *aux)
return 1;
}
-/* A callback to pointer_set_traverse. Frees the tree pointed by p. Removes
- from it from the UID -> DECL mapping. */
-
-static bool
-free_decl (const void *p, void *data ATTRIBUTE_UNUSED)
-{
- const_tree ct = (const_tree) p;
- tree t = CONST_CAST_TREE (ct);
-
- lto_symtab_clear_resolution (t);
-
- return true;
-}
-
/* Fix the decls from all FILES. Replaces each decl with the corresponding
prevailing one. */
@@ -1660,11 +1643,9 @@ lto_fixup_decls (struct lto_file_decl_data **files)
{
unsigned int i;
tree decl;
- struct pointer_set_t *free_list = pointer_set_create ();
struct pointer_set_t *seen = pointer_set_create ();
lto_fixup_data_t data;
- data.free_list = free_list;
data.seen = seen;
for (i = 0; files[i]; i++)
{
@@ -1683,8 +1664,6 @@ lto_fixup_decls (struct lto_file_decl_data **files)
VEC_replace (tree, lto_global_var_decls, i, decl);
}
- pointer_set_traverse (free_list, free_decl, NULL);
- pointer_set_destroy (free_list);
pointer_set_destroy (seen);
}
@@ -1823,11 +1802,18 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames)
/* Read the callgraph. */
input_cgraph ();
+ /* Merge global decls. */
+ lto_symtab_merge_decls ();
+
+ /* Fixup all decls and types and free the type hash tables. */
+ lto_fixup_decls (all_file_decl_data);
+ free_gimple_type_tables ();
+
/* Read the IPA summary data. */
ipa_read_summaries ();
- /* Merge global decls. */
- lto_symtab_merge_decls ();
+ /* Finally merge the cgraph according to the decl merging decisions. */
+ lto_symtab_merge_cgraph_nodes ();
/* Mark cgraph nodes needed in the merged cgraph
This normally happens in whole-program pass, but for
@@ -1844,12 +1830,6 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames)
timevar_push (TV_IPA_LTO_DECL_IO);
- /* Fixup all decls and types. */
- lto_fixup_decls (all_file_decl_data);
-
- /* Free the type hash tables. */
- free_gimple_type_tables ();
-
/* FIXME lto. This loop needs to be changed to use the pass manager to
call the ipa passes directly. */
if (!errorcount)
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 1c136236060..39257f5a6c3 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -1595,11 +1595,11 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
unsigned int bits = GET_MODE_BITSIZE (mode);
if (CONST_INT_P (op1))
- newop1 = GEN_INT (bits - INTVAL (op1));
+ newop1 = GEN_INT (bits - INTVAL (op1));
else if (targetm.shift_truncation_mask (mode) == bits - 1)
- newop1 = negate_rtx (mode, op1);
+ newop1 = negate_rtx (GET_MODE (op1), op1);
else
- newop1 = expand_binop (mode, sub_optab,
+ newop1 = expand_binop (GET_MODE (op1), sub_optab,
GEN_INT (bits), op1,
NULL_RTX, unsignedp, OPTAB_DIRECT);
diff --git a/gcc/opts.c b/gcc/opts.c
index b12ed14c21d..51a0cb95419 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -610,32 +610,7 @@ handle_option (const char **argv, unsigned int lang_mask)
}
if (option->flag_var)
- switch (option->var_type)
- {
- case CLVC_BOOLEAN:
- *(int *) option->flag_var = value;
- break;
-
- case CLVC_EQUAL:
- *(int *) option->flag_var = (value
- ? option->var_value
- : !option->var_value);
- break;
-
- case CLVC_BIT_CLEAR:
- case CLVC_BIT_SET:
- if ((value != 0) == (option->var_type == CLVC_BIT_SET))
- *(int *) option->flag_var |= option->var_value;
- else
- *(int *) option->flag_var &= ~option->var_value;
- if (option->flag_var == &target_flags)
- target_flags_explicit |= option->var_value;
- break;
-
- case CLVC_STRING:
- *(const char **) option->flag_var = arg;
- break;
- }
+ set_option (option, value, arg);
if (option->flags & lang_mask)
{
@@ -2349,6 +2324,42 @@ get_option_state (int option, struct cl_option_state *state)
return true;
}
+/* Set *OPTION according to VALUE and ARG. */
+
+void
+set_option (const struct cl_option *option, int value, const char *arg)
+{
+ if (!option->flag_var)
+ return;
+
+ switch (option->var_type)
+ {
+ case CLVC_BOOLEAN:
+ *(int *) option->flag_var = value;
+ break;
+
+ case CLVC_EQUAL:
+ *(int *) option->flag_var = (value
+ ? option->var_value
+ : !option->var_value);
+ break;
+
+ case CLVC_BIT_CLEAR:
+ case CLVC_BIT_SET:
+ if ((value != 0) == (option->var_type == CLVC_BIT_SET))
+ *(int *) option->flag_var |= option->var_value;
+ else
+ *(int *) option->flag_var &= ~option->var_value;
+ if (option->flag_var == &target_flags)
+ target_flags_explicit |= option->var_value;
+ break;
+
+ case CLVC_STRING:
+ *(const char **) option->flag_var = arg;
+ break;
+ }
+}
+
/* Enable a warning option as an error. This is used by -Werror= and
also by legacy Werror-implicit-function-declaration. */
diff --git a/gcc/opts.h b/gcc/opts.h
index b4be1111675..a2eef1938c7 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -103,6 +103,7 @@ extern void prune_options (int *argcp, char ***argvp);
extern void decode_options (unsigned int argc, const char **argv);
extern int option_enabled (int opt_idx);
extern bool get_option_state (int, struct cl_option_state *);
+extern void set_option (const struct cl_option *, int, const char *);
extern void enable_warning_as_error (const char *arg, int value,
unsigned int lang_mask);
diff --git a/gcc/params.def b/gcc/params.def
index 051398573e6..21cfbdc7fec 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -719,6 +719,11 @@ DEFPARAM (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE,
"max size of conflict table in MB",
1000, 0, 0)
+DEFPARAM (PARAM_IRA_LOOP_RESERVED_REGS,
+ "ira-loop-reserved-regs",
+ "The number of registers in each class kept unused by loop invariant motion",
+ 2, 0, 0)
+
/* Switch initialization conversion will refuse to create arrays that are
bigger than this parameter times the number of switch branches. */
diff --git a/gcc/params.h b/gcc/params.h
index 67a7a05c3de..56db145e1f6 100644
--- a/gcc/params.h
+++ b/gcc/params.h
@@ -160,6 +160,8 @@ typedef enum compiler_param
PARAM_VALUE (PARAM_IRA_MAX_LOOPS_NUM)
#define IRA_MAX_CONFLICT_TABLE_SIZE \
PARAM_VALUE (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
+#define IRA_LOOP_RESERVED_REGS \
+ PARAM_VALUE (PARAM_IRA_LOOP_RESERVED_REGS)
#define SWITCH_CONVERSION_BRANCH_RATIO \
PARAM_VALUE (PARAM_SWITCH_CONVERSION_BRANCH_RATIO)
#define LOOP_INVARIANT_MAX_BBS_IN_LOOP \
diff --git a/gcc/passes.c b/gcc/passes.c
index 5ed12060739..db368f057db 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -600,24 +600,31 @@ position_pass (struct register_pass_info *new_pass_info,
void
register_pass (struct register_pass_info *pass_info)
{
+ /* The checks below could fail in buggy plugins. Existing GCC
+ passes should never fail these checks, so we mention plugin in
+ the messages. */
if (!pass_info->pass)
- {
- gcc_unreachable ();
- }
+ fatal_error ("plugin cannot register a missing pass");
+
+ if (!pass_info->pass->name)
+ fatal_error ("plugin cannot register an unnamed pass");
if (!pass_info->reference_pass_name)
- {
- gcc_unreachable ();
- }
+ fatal_error
+ ("plugin cannot register pass %qs without reference pass name",
+ pass_info->pass->name);
- /* Try to insert the new pass to the pass lists. We need to check all
- three lists as the reference pass could be in one (or all) of them. */
+ /* Try to insert the new pass to the pass lists. We need to check
+ all three lists as the reference pass could be in one (or all) of
+ them. */
if (!position_pass (pass_info, &all_lowering_passes)
&& !position_pass (pass_info, &all_small_ipa_passes)
&& !position_pass (pass_info, &all_regular_ipa_passes)
&& !position_pass (pass_info, &all_lto_gen_passes)
&& !position_pass (pass_info, &all_passes))
- gcc_unreachable ();
+ fatal_error
+ ("pass %qs not found but is referenced by new pass %qs",
+ pass_info->reference_pass_name, pass_info->pass->name);
else
{
/* OK, we have successfully inserted the new pass. We need to register
@@ -936,6 +943,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_rtl_store_motion);
NEXT_PASS (pass_cse_after_global_opts);
NEXT_PASS (pass_rtl_ifcvt);
+ NEXT_PASS (pass_reginfo_init);
/* Perform loop optimizations. It might be better to do them a bit
sooner, but we want the profile feedback to work more
efficiently. */
@@ -955,7 +963,6 @@ init_optimization_passes (void)
NEXT_PASS (pass_cse2);
NEXT_PASS (pass_rtl_dse1);
NEXT_PASS (pass_rtl_fwprop_addr);
- NEXT_PASS (pass_reginfo_init);
NEXT_PASS (pass_inc_dec);
NEXT_PASS (pass_initialize_regs);
NEXT_PASS (pass_ud_rtl_dce);
@@ -971,10 +978,8 @@ init_optimization_passes (void)
NEXT_PASS (pass_mode_switching);
NEXT_PASS (pass_match_asm_constraints);
NEXT_PASS (pass_sms);
- NEXT_PASS (pass_subregs_of_mode_init);
NEXT_PASS (pass_sched);
NEXT_PASS (pass_ira);
- NEXT_PASS (pass_subregs_of_mode_finish);
NEXT_PASS (pass_postreload);
{
struct opt_pass **p = &pass_postreload.pass.sub;
@@ -1613,7 +1618,8 @@ ipa_write_summaries_1 (cgraph_node_set set)
struct lto_out_decl_state *state = lto_new_out_decl_state ();
lto_push_out_decl_state (state);
- ipa_write_summaries_2 (all_regular_ipa_passes, set, state);
+ if (!flag_wpa)
+ ipa_write_summaries_2 (all_regular_ipa_passes, set, state);
ipa_write_summaries_2 (all_lto_gen_passes, set, state);
gcc_assert (lto_get_out_decl_state () == state);
@@ -1707,7 +1713,8 @@ ipa_read_summaries_1 (struct opt_pass *pass)
void
ipa_read_summaries (void)
{
- ipa_read_summaries_1 (all_regular_ipa_passes);
+ if (!flag_ltrans)
+ ipa_read_summaries_1 (all_regular_ipa_passes);
ipa_read_summaries_1 (all_lto_gen_passes);
}
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index e8ba16b4c8d..e565291c7e1 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-10-17 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.pot: Regenerate.
+
2009-09-03 Joseph Myers <joseph@codesourcery.com>
* fi.po: Update.
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index c3f85328bd8..c00b9d0d016 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: 2009-05-10 10:32+0000\n"
+"POT-Creation-Date: 2009-10-17 13:36+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"
@@ -16,265 +16,265 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:3944 c-pretty-print.c:393 c-typeck.c:5151 toplev.c:1597
-#: cp/error.c:585 cp/error.c:848
+#: c-decl.c:4539 c-pretty-print.c:393 c-typeck.c:5349 toplev.c:1641
+#: cp/error.c:602 cp/error.c:875
msgid "<anonymous>"
msgstr ""
-#: c-format.c:361 c-format.c:385 config/i386/msformat-c.c:49
+#: c-format.c:363 c-format.c:387 config/i386/msformat-c.c:49
msgid "' ' flag"
msgstr ""
-#: c-format.c:361 c-format.c:385 config/i386/msformat-c.c:49
+#: c-format.c:363 c-format.c:387 config/i386/msformat-c.c:49
msgid "the ' ' printf flag"
msgstr ""
-#: c-format.c:362 c-format.c:386 c-format.c:420 c-format.c:432 c-format.c:491
+#: c-format.c:364 c-format.c:388 c-format.c:422 c-format.c:434 c-format.c:493
#: config/i386/msformat-c.c:50
msgid "'+' flag"
msgstr ""
-#: c-format.c:362 c-format.c:386 c-format.c:420 c-format.c:432
+#: c-format.c:364 c-format.c:388 c-format.c:422 c-format.c:434
#: config/i386/msformat-c.c:50
msgid "the '+' printf flag"
msgstr ""
-#: c-format.c:363 c-format.c:387 c-format.c:433 c-format.c:467
+#: c-format.c:365 c-format.c:389 c-format.c:435 c-format.c:469
#: config/i386/msformat-c.c:51 config/i386/msformat-c.c:86
msgid "'#' flag"
msgstr ""
-#: c-format.c:363 c-format.c:387 c-format.c:433 config/i386/msformat-c.c:51
+#: c-format.c:365 c-format.c:389 c-format.c:435 config/i386/msformat-c.c:51
msgid "the '#' printf flag"
msgstr ""
-#: c-format.c:364 c-format.c:388 c-format.c:465 config/i386/msformat-c.c:52
+#: c-format.c:366 c-format.c:390 c-format.c:467 config/i386/msformat-c.c:52
msgid "'0' flag"
msgstr ""
-#: c-format.c:364 c-format.c:388 config/i386/msformat-c.c:52
+#: c-format.c:366 c-format.c:390 config/i386/msformat-c.c:52
msgid "the '0' printf flag"
msgstr ""
-#: c-format.c:365 c-format.c:389 c-format.c:464 c-format.c:494
+#: c-format.c:367 c-format.c:391 c-format.c:466 c-format.c:496
#: config/i386/msformat-c.c:53
msgid "'-' flag"
msgstr ""
-#: c-format.c:365 c-format.c:389 config/i386/msformat-c.c:53
+#: c-format.c:367 c-format.c:391 config/i386/msformat-c.c:53
msgid "the '-' printf flag"
msgstr ""
-#: c-format.c:366 c-format.c:447 config/i386/msformat-c.c:54
+#: c-format.c:368 c-format.c:449 config/i386/msformat-c.c:54
#: config/i386/msformat-c.c:74
msgid "''' flag"
msgstr ""
-#: c-format.c:366 config/i386/msformat-c.c:54
+#: c-format.c:368 config/i386/msformat-c.c:54
msgid "the ''' printf flag"
msgstr ""
-#: c-format.c:367 c-format.c:448
+#: c-format.c:369 c-format.c:450
msgid "'I' flag"
msgstr ""
-#: c-format.c:367
+#: c-format.c:369
msgid "the 'I' printf flag"
msgstr ""
-#: c-format.c:368 c-format.c:390 c-format.c:445 c-format.c:468 c-format.c:495
-#: c-format.c:1629 config/sol2-c.c:45 config/i386/msformat-c.c:55
+#: c-format.c:370 c-format.c:392 c-format.c:447 c-format.c:470 c-format.c:497
+#: c-format.c:1621 config/sol2-c.c:45 config/i386/msformat-c.c:55
#: config/i386/msformat-c.c:72
msgid "field width"
msgstr ""
-#: c-format.c:368 c-format.c:390 config/sol2-c.c:45
+#: c-format.c:370 c-format.c:392 config/sol2-c.c:45
#: config/i386/msformat-c.c:55
msgid "field width in printf format"
msgstr ""
-#: c-format.c:369 c-format.c:391 c-format.c:422 c-format.c:435
+#: c-format.c:371 c-format.c:393 c-format.c:424 c-format.c:437
#: config/i386/msformat-c.c:56
msgid "precision"
msgstr ""
-#: c-format.c:369 c-format.c:391 c-format.c:422 c-format.c:435
+#: c-format.c:371 c-format.c:393 c-format.c:424 c-format.c:437
#: config/i386/msformat-c.c:56
msgid "precision in printf format"
msgstr ""
-#: c-format.c:370 c-format.c:392 c-format.c:423 c-format.c:436 c-format.c:446
-#: c-format.c:498 config/sol2-c.c:46 config/i386/msformat-c.c:57
+#: c-format.c:372 c-format.c:394 c-format.c:425 c-format.c:438 c-format.c:448
+#: c-format.c:500 config/sol2-c.c:46 config/i386/msformat-c.c:57
#: config/i386/msformat-c.c:73
msgid "length modifier"
msgstr ""
-#: c-format.c:370 c-format.c:392 c-format.c:423 c-format.c:436
+#: c-format.c:372 c-format.c:394 c-format.c:425 c-format.c:438
#: config/sol2-c.c:46 config/i386/msformat-c.c:57
msgid "length modifier in printf format"
msgstr ""
-#: c-format.c:421 c-format.c:434
+#: c-format.c:423 c-format.c:436
msgid "'q' flag"
msgstr ""
-#: c-format.c:421 c-format.c:434
+#: c-format.c:423 c-format.c:436
msgid "the 'q' diagnostic flag"
msgstr ""
-#: c-format.c:442 config/i386/msformat-c.c:70
+#: c-format.c:444 config/i386/msformat-c.c:70
msgid "assignment suppression"
msgstr ""
-#: c-format.c:442 config/i386/msformat-c.c:70
+#: c-format.c:444 config/i386/msformat-c.c:70
msgid "the assignment suppression scanf feature"
msgstr ""
-#: c-format.c:443 config/i386/msformat-c.c:71
+#: c-format.c:445 config/i386/msformat-c.c:71
msgid "'a' flag"
msgstr ""
-#: c-format.c:443 config/i386/msformat-c.c:71
+#: c-format.c:445 config/i386/msformat-c.c:71
msgid "the 'a' scanf flag"
msgstr ""
-#: c-format.c:444
+#: c-format.c:446
msgid "'m' flag"
msgstr ""
-#: c-format.c:444
+#: c-format.c:446
msgid "the 'm' scanf flag"
msgstr ""
-#: c-format.c:445 config/i386/msformat-c.c:72
+#: c-format.c:447 config/i386/msformat-c.c:72
msgid "field width in scanf format"
msgstr ""
-#: c-format.c:446 config/i386/msformat-c.c:73
+#: c-format.c:448 config/i386/msformat-c.c:73
msgid "length modifier in scanf format"
msgstr ""
-#: c-format.c:447 config/i386/msformat-c.c:74
+#: c-format.c:449 config/i386/msformat-c.c:74
msgid "the ''' scanf flag"
msgstr ""
-#: c-format.c:448
+#: c-format.c:450
msgid "the 'I' scanf flag"
msgstr ""
-#: c-format.c:463
+#: c-format.c:465
msgid "'_' flag"
msgstr ""
-#: c-format.c:463
+#: c-format.c:465
msgid "the '_' strftime flag"
msgstr ""
-#: c-format.c:464
+#: c-format.c:466
msgid "the '-' strftime flag"
msgstr ""
-#: c-format.c:465
+#: c-format.c:467
msgid "the '0' strftime flag"
msgstr ""
-#: c-format.c:466 c-format.c:490
+#: c-format.c:468 c-format.c:492
msgid "'^' flag"
msgstr ""
-#: c-format.c:466
+#: c-format.c:468
msgid "the '^' strftime flag"
msgstr ""
-#: c-format.c:467 config/i386/msformat-c.c:86
+#: c-format.c:469 config/i386/msformat-c.c:86
msgid "the '#' strftime flag"
msgstr ""
-#: c-format.c:468
+#: c-format.c:470
msgid "field width in strftime format"
msgstr ""
-#: c-format.c:469
+#: c-format.c:471
msgid "'E' modifier"
msgstr ""
-#: c-format.c:469
+#: c-format.c:471
msgid "the 'E' strftime modifier"
msgstr ""
-#: c-format.c:470
+#: c-format.c:472
msgid "'O' modifier"
msgstr ""
-#: c-format.c:470
+#: c-format.c:472
msgid "the 'O' strftime modifier"
msgstr ""
-#: c-format.c:471
+#: c-format.c:473
msgid "the 'O' modifier"
msgstr ""
-#: c-format.c:489
+#: c-format.c:491
msgid "fill character"
msgstr ""
-#: c-format.c:489
+#: c-format.c:491
msgid "fill character in strfmon format"
msgstr ""
-#: c-format.c:490
+#: c-format.c:492
msgid "the '^' strfmon flag"
msgstr ""
-#: c-format.c:491
+#: c-format.c:493
msgid "the '+' strfmon flag"
msgstr ""
-#: c-format.c:492
+#: c-format.c:494
msgid "'(' flag"
msgstr ""
-#: c-format.c:492
+#: c-format.c:494
msgid "the '(' strfmon flag"
msgstr ""
-#: c-format.c:493
+#: c-format.c:495
msgid "'!' flag"
msgstr ""
-#: c-format.c:493
+#: c-format.c:495
msgid "the '!' strfmon flag"
msgstr ""
-#: c-format.c:494
+#: c-format.c:496
msgid "the '-' strfmon flag"
msgstr ""
-#: c-format.c:495
+#: c-format.c:497
msgid "field width in strfmon format"
msgstr ""
-#: c-format.c:496
+#: c-format.c:498
msgid "left precision"
msgstr ""
-#: c-format.c:496
+#: c-format.c:498
msgid "left precision in strfmon format"
msgstr ""
-#: c-format.c:497
+#: c-format.c:499
msgid "right precision"
msgstr ""
-#: c-format.c:497
+#: c-format.c:499
msgid "right precision in strfmon format"
msgstr ""
-#: c-format.c:498
+#: c-format.c:500
msgid "length modifier in strfmon format"
msgstr ""
-#: c-format.c:1731
+#: c-format.c:1724
msgid "field precision"
msgstr ""
@@ -282,12 +282,12 @@ msgstr ""
msgid "({anonymous})"
msgstr ""
-#: c-opts.c:1490 cp/error.c:990 fortran/cpp.c:552
+#: c-opts.c:1520 tree.c:3958 cp/error.c:1017 fortran/cpp.c:552
msgid "<built-in>"
msgstr ""
#. Handle deferred options from command-line.
-#: c-opts.c:1508 fortran/cpp.c:557
+#: c-opts.c:1538 fortran/cpp.c:557
msgid "<command-line>"
msgstr ""
@@ -327,57 +327,52 @@ msgstr ""
msgid "<return-value>"
msgstr ""
-#: c-typeck.c:5268
+#: c-typeck.c:5466
msgid "array initialized from parenthesized string constant"
msgstr ""
-#: c-typeck.c:5338 c-typeck.c:6197
+#: c-typeck.c:5539 c-typeck.c:6410
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:5348 cp/typeck2.c:756
+#: c-typeck.c:5549 cp/typeck2.c:758
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:5356
+#: c-typeck.c:5557
msgid "wide character array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:5362
+#: c-typeck.c:5563
msgid "wide character array initialized from incompatible wide string"
msgstr ""
-#: c-typeck.c:5380 cp/typeck2.c:784
-#, gcc-internal-format
-msgid "initializer-string for array of chars is too long"
-msgstr ""
-
-#: c-typeck.c:5386
+#: c-typeck.c:5597
msgid "array of inappropriate type initialized from string constant"
msgstr ""
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5453 c-typeck.c:4925 cp/typeck.c:1645
+#: c-typeck.c:5665 c-typeck.c:5118 cp/typeck.c:1658
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:5479
+#: c-typeck.c:5691
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:5493 c-typeck.c:5496 c-typeck.c:5504 c-typeck.c:5542
-#: c-typeck.c:6996
+#: c-typeck.c:5705 c-typeck.c:5708 c-typeck.c:5716 c-typeck.c:5755
+#: c-typeck.c:7209
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:5509 c-typeck.c:5554 c-typeck.c:7006
+#: c-typeck.c:5721 c-typeck.c:5767 c-typeck.c:7219
msgid "initializer element is not a constant expression"
msgstr ""
-#: c-typeck.c:5549 c-typeck.c:7001
+#: c-typeck.c:5762 c-typeck.c:7214
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr ""
@@ -386,276 +381,287 @@ msgstr ""
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-typeck.c:5563 c-decl.c:3337 c-decl.c:3352
+#: c-typeck.c:5776 c-decl.c:3921 c-decl.c:3936
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c-typeck.c:5567
+#: c-typeck.c:5780
msgid "invalid initializer"
msgstr ""
-#: c-typeck.c:5776
+#: c-typeck.c:5989
msgid "(anonymous)"
msgstr ""
-#: c-typeck.c:6054
+#: c-typeck.c:6267
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:6075
+#: c-typeck.c:6288
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:6136
+#: c-typeck.c:6349
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:6194
+#: c-typeck.c:6407
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:6225
+#: c-typeck.c:6438
msgid "missing initializer"
msgstr ""
-#: c-typeck.c:6247
+#: c-typeck.c:6460
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:6252
+#: c-typeck.c:6465
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:6360 c-typeck.c:6438
+#: c-typeck.c:6573 c-typeck.c:6651
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:6365 c-typeck.c:6494
+#: c-typeck.c:6578 c-typeck.c:6707
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:6411
+#: c-typeck.c:6624
msgid "array index in initializer not of integer type"
msgstr ""
-#: c-typeck.c:6420 c-typeck.c:6429
+#: c-typeck.c:6633 c-typeck.c:6642
msgid "array index in initializer is not an integer constant expression"
msgstr ""
-#: c-typeck.c:6434 c-typeck.c:6436
+#: c-typeck.c:6647 c-typeck.c:6649
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:6440 c-typeck.c:6443
+#: c-typeck.c:6653 c-typeck.c:6656
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:6457
+#: c-typeck.c:6670
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:6466
+#: c-typeck.c:6679
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:6549 c-typeck.c:6576 c-typeck.c:7095
+#: c-typeck.c:6762 c-typeck.c:6789 c-typeck.c:7308
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:6551 c-typeck.c:6578 c-typeck.c:7097
+#: c-typeck.c:6764 c-typeck.c:6791 c-typeck.c:7310
msgid "initialized field overwritten"
msgstr ""
-#: c-typeck.c:7023 c-typeck.c:4574
+#: c-typeck.c:7236 c-typeck.c:4761
#, gcc-internal-format
msgid "enum conversion in initialization is invalid in C++"
msgstr ""
-#: c-typeck.c:7312
+#: c-typeck.c:7525
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:7319 c-typeck.c:7378
+#: c-typeck.c:7532 c-typeck.c:7591
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:7393
+#: c-typeck.c:7606
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:7463
+#: c-typeck.c:7676
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:7552
+#: c-typeck.c:7765
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:7584
+#: c-typeck.c:7798
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:7614
+#: c-typeck.c:7829
msgid "excess elements in scalar initializer"
msgstr ""
-#: cfgrtl.c:1941
+#: cfgrtl.c:2026
msgid "flow control insn inside a basic block"
msgstr ""
-#: cfgrtl.c:2070
+#: cfgrtl.c:2157
msgid "wrong insn in the fallthru edge"
msgstr ""
-#: cfgrtl.c:2126
+#: cfgrtl.c:2211
msgid "insn outside basic block"
msgstr ""
-#: cfgrtl.c:2133
+#: cfgrtl.c:2218
msgid "return not followed by barrier"
msgstr ""
-#: collect2.c:396 gcc.c:7153
+#: collect2.c:486 gcc.c:7686
#, c-format
msgid "internal gcc abort in %s, at %s:%d"
msgstr ""
-#: collect2.c:910
+#: collect2.c:939
+#, c-format
+msgid "COLLECT_LTO_WRAPPER must be set."
+msgstr ""
+
+#: collect2.c:1081
+#, c-format
+msgid "too many lto output files"
+msgstr ""
+
+#: collect2.c:1284
#, c-format
msgid "no arguments"
msgstr ""
-#: collect2.c:1284 collect2.c:1432 collect2.c:1467
+#: collect2.c:1677 collect2.c:1839 collect2.c:1874
#, c-format
msgid "fopen %s"
msgstr ""
-#: collect2.c:1287 collect2.c:1437 collect2.c:1470
+#: collect2.c:1680 collect2.c:1844 collect2.c:1877
#, c-format
msgid "fclose %s"
msgstr ""
-#: collect2.c:1296
+#: collect2.c:1689
#, c-format
msgid "collect2 version %s"
msgstr ""
-#: collect2.c:1386
+#: collect2.c:1785
#, c-format
msgid "%d constructor(s) found\n"
msgstr ""
-#: collect2.c:1387
+#: collect2.c:1786
#, c-format
msgid "%d destructor(s) found\n"
msgstr ""
-#: collect2.c:1388
+#: collect2.c:1787
#, c-format
msgid "%d frame table(s) found\n"
msgstr ""
-#: collect2.c:1525
+#: collect2.c:1938 lto-wrapper.c:167
#, c-format
msgid "can't get program status"
msgstr ""
-#: collect2.c:1594
+#: collect2.c:2007
#, c-format
msgid "could not open response file %s"
msgstr ""
-#: collect2.c:1599
+#: collect2.c:2012
#, c-format
msgid "could not write to response file %s"
msgstr ""
-#: collect2.c:1604
+#: collect2.c:2017
#, c-format
msgid "could not close response file %s"
msgstr ""
-#: collect2.c:1622
+#: collect2.c:2035
#, c-format
msgid "[cannot find %s]"
msgstr ""
-#: collect2.c:1637
+#: collect2.c:2050
#, c-format
msgid "cannot find '%s'"
msgstr ""
-#: collect2.c:1641 collect2.c:2132 collect2.c:2287 gcc.c:3021
+#: collect2.c:2054 collect2.c:2577 collect2.c:2773 gcc.c:3075
+#: lto-wrapper.c:139
#, c-format
msgid "pex_init failed"
msgstr ""
-#: collect2.c:1679
+#: collect2.c:2092
#, c-format
msgid "[Leaving %s]\n"
msgstr ""
-#: collect2.c:1900
+#: collect2.c:2324
#, c-format
msgid ""
"\n"
"write_c_file - output name is %s, prefix is %s\n"
msgstr ""
-#: collect2.c:2106
+#: collect2.c:2551
#, c-format
msgid "cannot find 'nm'"
msgstr ""
-#: collect2.c:2153
+#: collect2.c:2599
#, c-format
msgid "can't open nm output"
msgstr ""
-#: collect2.c:2197
+#: collect2.c:2682
#, c-format
msgid "init function found in object %s"
msgstr ""
-#: collect2.c:2205
+#: collect2.c:2692
#, c-format
msgid "fini function found in object %s"
msgstr ""
-#: collect2.c:2308
+#: collect2.c:2794
#, c-format
msgid "can't open ldd output"
msgstr ""
-#: collect2.c:2311
+#: collect2.c:2797
#, c-format
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
msgstr ""
-#: collect2.c:2326
+#: collect2.c:2812
#, c-format
msgid "dynamic dependency %s not found"
msgstr ""
-#: collect2.c:2338
+#: collect2.c:2824
#, c-format
msgid "unable to open dynamic dependency '%s'"
msgstr ""
-#: collect2.c:2494
+#: collect2.c:2985
#, c-format
msgid "%s: not a COFF file"
msgstr ""
-#: collect2.c:2614
+#: collect2.c:3115
#, c-format
msgid "%s: cannot open as COFF file"
msgstr ""
-#: collect2.c:2672
+#: collect2.c:3173
#, c-format
msgid "library lib%s not found"
msgstr ""
@@ -670,12 +676,12 @@ msgstr ""
msgid "too many input files"
msgstr ""
-#: diagnostic.c:190
+#: diagnostic.c:185
#, c-format
msgid "compilation terminated due to -Wfatal-errors.\n"
msgstr ""
-#: diagnostic.c:199
+#: diagnostic.c:194
#, c-format
msgid ""
"Please submit a full bug report,\n"
@@ -683,66 +689,66 @@ msgid ""
"See %s for instructions.\n"
msgstr ""
-#: diagnostic.c:208
+#: diagnostic.c:203
#, c-format
msgid "compilation terminated.\n"
msgstr ""
-#: diagnostic.c:377
+#: diagnostic.c:381
#, c-format
msgid ""
"*** WARNING *** there are active plugins, do not report this as a bug unless "
"you can reproduce it without enabling any plugins.\n"
msgstr ""
-#: diagnostic.c:394
+#: diagnostic.c:398
#, c-format
msgid "%s:%d: confused by earlier errors, bailing out\n"
msgstr ""
-#: diagnostic.c:705
+#: diagnostic.c:709
#, c-format
msgid "Internal compiler error: Error reporting routines re-entered.\n"
msgstr ""
-#: final.c:1134
+#: final.c:1152
msgid "negative insn length"
msgstr ""
-#: final.c:2608
+#: final.c:2651
msgid "could not split insn"
msgstr ""
-#: final.c:3005
+#: final.c:3085
msgid "invalid 'asm': "
msgstr ""
-#: final.c:3188
+#: final.c:3268
#, c-format
msgid "nested assembly dialect alternatives"
msgstr ""
-#: final.c:3205 final.c:3217
+#: final.c:3285 final.c:3297
#, c-format
msgid "unterminated assembly dialect alternative"
msgstr ""
-#: final.c:3264
+#: final.c:3344
#, c-format
msgid "operand number missing after %%-letter"
msgstr ""
-#: final.c:3267 final.c:3308
+#: final.c:3347 final.c:3388
#, c-format
msgid "operand number out of range"
msgstr ""
-#: final.c:3327
+#: final.c:3407
#, c-format
msgid "invalid %%-code"
msgstr ""
-#: final.c:3357
+#: final.c:3437
#, c-format
msgid "'%%l' operand isn't a label"
msgstr ""
@@ -753,118 +759,118 @@ msgstr ""
#. handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3503 vmsdbgout.c:488 config/i386/i386.c:10285
-#: config/pdp11/pdp11.c:1677
+#: final.c:3583 vmsdbgout.c:495 config/i386/i386.c:10677
+#: config/pdp11/pdp11.c:1682
#, c-format
msgid "floating constant misused"
msgstr ""
-#: final.c:3565 vmsdbgout.c:545 config/i386/i386.c:10372
-#: config/pdp11/pdp11.c:1724
+#: final.c:3645 vmsdbgout.c:552 config/i386/i386.c:10764
+#: config/pdp11/pdp11.c:1729
#, c-format
msgid "invalid expression as operand"
msgstr ""
-#: gcc.c:1736
+#: gcc.c:1789
#, c-format
msgid "Using built-in specs.\n"
msgstr ""
-#: gcc.c:1921
+#: gcc.c:1974
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
-#: gcc.c:2036
+#: gcc.c:2089
#, c-format
msgid "Reading specs from %s\n"
msgstr ""
-#: gcc.c:2132 gcc.c:2151
+#: gcc.c:2185 gcc.c:2204
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:2159
+#: gcc.c:2212
#, c-format
msgid "could not find specs file %s\n"
msgstr ""
-#: gcc.c:2176 gcc.c:2184 gcc.c:2193 gcc.c:2202
+#: gcc.c:2229 gcc.c:2237 gcc.c:2246 gcc.c:2255
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:2211
+#: gcc.c:2264
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr ""
-#: gcc.c:2218
+#: gcc.c:2271
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
msgstr ""
-#: gcc.c:2223
+#: gcc.c:2276
#, c-format
msgid "rename spec %s to %s\n"
msgstr ""
-#: gcc.c:2225
+#: gcc.c:2278
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
-#: gcc.c:2238
+#: gcc.c:2291
#, c-format
msgid "specs unknown %% command after %ld characters"
msgstr ""
-#: gcc.c:2249 gcc.c:2262
+#: gcc.c:2302 gcc.c:2315
#, c-format
msgid "specs file malformed after %ld characters"
msgstr ""
-#: gcc.c:2314
+#: gcc.c:2367
#, c-format
msgid "spec file has no spec for linking"
msgstr ""
-#: gcc.c:2642 gcc.c:4954
+#: gcc.c:2695 gcc.c:5233
#, c-format
msgid "%s\n"
msgstr ""
-#: gcc.c:2843
+#: gcc.c:2896
#, c-format
msgid "system path '%s' is not absolute"
msgstr ""
-#: gcc.c:2915
+#: gcc.c:2968
#, c-format
msgid "-pipe not supported"
msgstr ""
-#: gcc.c:2977
+#: gcc.c:3030
#, c-format
msgid ""
"\n"
"Go ahead? (y or n) "
msgstr ""
-#: gcc.c:3060
+#: gcc.c:3114
msgid "failed to get exit status"
msgstr ""
-#: gcc.c:3066
+#: gcc.c:3120
msgid "failed to get process times"
msgstr ""
-#: gcc.c:3092
+#: gcc.c:3146
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -872,225 +878,231 @@ msgid ""
"See %s for instructions."
msgstr ""
-#: gcc.c:3118
+#: gcc.c:3174
#, c-format
msgid "# %s %.2f %.2f\n"
msgstr ""
-#: gcc.c:3252
+#: gcc.c:3365
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: gcc.c:3253
+#: gcc.c:3366
msgid "Options:\n"
msgstr ""
-#: gcc.c:3255
+#: gcc.c:3368
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
msgstr ""
-#: gcc.c:3256
+#: gcc.c:3369
msgid " --help Display this information\n"
msgstr ""
-#: gcc.c:3257
+#: gcc.c:3370
msgid ""
" --target-help Display target specific command line options\n"
msgstr ""
-#: gcc.c:3258
+#: gcc.c:3371
msgid ""
" --help={target|optimizers|warnings|params|[^]{joined|separate|"
"undocumented}}[,...]\n"
msgstr ""
-#: gcc.c:3259
+#: gcc.c:3372
msgid ""
" Display specific types of command line options\n"
msgstr ""
-#: gcc.c:3261
+#: gcc.c:3374
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr ""
-#: gcc.c:3262
+#: gcc.c:3375
msgid " --version Display compiler version information\n"
msgstr ""
-#: gcc.c:3263
+#: gcc.c:3376
msgid " -dumpspecs Display all of the built in spec strings\n"
msgstr ""
-#: gcc.c:3264
+#: gcc.c:3377
msgid " -dumpversion Display the version of the compiler\n"
msgstr ""
-#: gcc.c:3265
+#: gcc.c:3378
msgid " -dumpmachine Display the compiler's target processor\n"
msgstr ""
-#: gcc.c:3266
+#: gcc.c:3379
msgid ""
" -print-search-dirs Display the directories in the compiler's search "
"path\n"
msgstr ""
-#: gcc.c:3267
+#: gcc.c:3380
msgid ""
" -print-libgcc-file-name Display the name of the compiler's companion "
"library\n"
msgstr ""
-#: gcc.c:3268
+#: gcc.c:3381
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
msgstr ""
-#: gcc.c:3269
+#: gcc.c:3382
msgid ""
" -print-prog-name=<prog> Display the full path to compiler component "
"<prog>\n"
msgstr ""
-#: gcc.c:3270
+#: gcc.c:3383
msgid ""
" -print-multi-directory Display the root directory for versions of "
"libgcc\n"
msgstr ""
-#: gcc.c:3271
+#: gcc.c:3384
msgid ""
" -print-multi-lib Display the mapping between command line options "
"and\n"
" multiple library search directories\n"
msgstr ""
-#: gcc.c:3274
+#: gcc.c:3387
msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
msgstr ""
-#: gcc.c:3275
+#: gcc.c:3388
msgid " -print-sysroot Display the target libraries directory\n"
msgstr ""
-#: gcc.c:3276
+#: gcc.c:3389
msgid ""
" -print-sysroot-headers-suffix Display the sysroot suffix used to find "
"headers\n"
msgstr ""
-#: gcc.c:3277
+#: gcc.c:3390
msgid ""
" -Wa,<options> Pass comma-separated <options> on to the "
"assembler\n"
msgstr ""
-#: gcc.c:3278
+#: gcc.c:3391
msgid ""
" -Wp,<options> Pass comma-separated <options> on to the "
"preprocessor\n"
msgstr ""
-#: gcc.c:3279
+#: gcc.c:3392
msgid ""
" -Wl,<options> Pass comma-separated <options> on to the linker\n"
msgstr ""
-#: gcc.c:3280
+#: gcc.c:3393
msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
msgstr ""
-#: gcc.c:3281
+#: gcc.c:3394
msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
msgstr ""
-#: gcc.c:3282
+#: gcc.c:3395
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
msgstr ""
-#: gcc.c:3283
+#: gcc.c:3396
msgid ""
" -combine Pass multiple source files to compiler at once\n"
msgstr ""
-#: gcc.c:3284
+#: gcc.c:3397
msgid " -save-temps Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:3285
+#: gcc.c:3398
msgid " -save-temps=<arg> Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:3286
+#: gcc.c:3399
+msgid ""
+" -no-canonical-prefixes Do not canonicalize paths when building relative\n"
+" prefixes to other gcc components\n"
+msgstr ""
+
+#: gcc.c:3402
msgid " -pipe Use pipes rather than intermediate files\n"
msgstr ""
-#: gcc.c:3287
+#: gcc.c:3403
msgid " -time Time the execution of each subprocess\n"
msgstr ""
-#: gcc.c:3288
+#: gcc.c:3404
msgid ""
" -specs=<file> Override built-in specs with the contents of "
"<file>\n"
msgstr ""
-#: gcc.c:3289
+#: gcc.c:3405
msgid ""
" -std=<standard> Assume that the input sources are for <standard>\n"
msgstr ""
-#: gcc.c:3290
+#: gcc.c:3406
msgid ""
" --sysroot=<directory> Use <directory> as the root directory for "
"headers\n"
" and libraries\n"
msgstr ""
-#: gcc.c:3293
+#: gcc.c:3409
msgid ""
" -B <directory> Add <directory> to the compiler's search paths\n"
msgstr ""
-#: gcc.c:3294
+#: gcc.c:3410
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
-#: gcc.c:3295
+#: gcc.c:3411
msgid ""
" -V <version> Run gcc version number <version>, if installed\n"
msgstr ""
-#: gcc.c:3296
+#: gcc.c:3412
msgid ""
" -v Display the programs invoked by the compiler\n"
msgstr ""
-#: gcc.c:3297
+#: gcc.c:3413
msgid ""
" -### Like -v but options quoted and commands not "
"executed\n"
msgstr ""
-#: gcc.c:3298
+#: gcc.c:3414
msgid ""
" -E Preprocess only; do not compile, assemble or "
"link\n"
msgstr ""
-#: gcc.c:3299
+#: gcc.c:3415
msgid " -S Compile only; do not assemble or link\n"
msgstr ""
-#: gcc.c:3300
+#: gcc.c:3416
msgid " -c Compile and assemble, but do not link\n"
msgstr ""
-#: gcc.c:3301
+#: gcc.c:3417
msgid " -o <file> Place the output into <file>\n"
msgstr ""
-#: gcc.c:3302
+#: gcc.c:3418
msgid ""
" -x <language> Specify the language of the following input "
"files\n"
@@ -1101,7 +1113,7 @@ msgid ""
"extension\n"
msgstr ""
-#: gcc.c:3309
+#: gcc.c:3425
#, c-format
msgid ""
"\n"
@@ -1110,201 +1122,206 @@ msgid ""
" other options on to these processes the -W<letter> options must be used.\n"
msgstr ""
-#: gcc.c:3439
+#: gcc.c:3557
#, c-format
msgid "'-%c' option must have argument"
msgstr ""
-#: gcc.c:3465
+#: gcc.c:3583
#, c-format
msgid "couldn't run '%s': %s"
msgstr ""
-#: gcc.c:3467
+#: gcc.c:3585
#, c-format
msgid "couldn't run '%s': %s: %s"
msgstr ""
-#: gcc.c:3792
+#: gcc.c:3963
#, c-format
msgid "argument to '-Xlinker' is missing"
msgstr ""
-#: gcc.c:3800
+#: gcc.c:3971
#, c-format
msgid "argument to '-Xpreprocessor' is missing"
msgstr ""
-#: gcc.c:3807
+#: gcc.c:3978
#, c-format
msgid "argument to '-Xassembler' is missing"
msgstr ""
-#: gcc.c:3814
+#: gcc.c:3985
#, c-format
msgid "argument to '-l' is missing"
msgstr ""
-#: gcc.c:3835
+#: gcc.c:4006
#, c-format
msgid "'%s' is an unknown -save-temps option"
msgstr ""
-#: gcc.c:3846
+#: gcc.c:4020
#, c-format
msgid "argument to '-specs' is missing"
msgstr ""
-#: gcc.c:3860
+#: gcc.c:4034
#, c-format
msgid "argument to '-specs=' is missing"
msgstr ""
-#: gcc.c:3882
+#: gcc.c:4062
#, c-format
msgid "argument to '-wrapper' is missing"
msgstr ""
-#: gcc.c:3910
+#: gcc.c:4090
#, c-format
msgid "'-%c' must come at the start of the command line"
msgstr ""
-#: gcc.c:3919
+#: gcc.c:4099
#, c-format
msgid "argument to '-B' is missing"
msgstr ""
-#: gcc.c:4294
+#: gcc.c:4492
#, c-format
msgid "argument to '-x' is missing"
msgstr ""
-#: gcc.c:4322
+#: gcc.c:4520 gcc.c:4951
#, c-format
msgid "argument to '-%s' is missing"
msgstr ""
-#: gcc.c:4695
+#: gcc.c:4746
+#, c-format
+msgid "unable to locate default linker script '%s' in the library search paths"
+msgstr ""
+
+#: gcc.c:4927
#, c-format
msgid "switch '%s' does not start with '-'"
msgstr ""
-#: gcc.c:4770
+#: gcc.c:5043
#, c-format
msgid "could not open temporary response file %s"
msgstr ""
-#: gcc.c:4776
+#: gcc.c:5049
#, c-format
msgid "could not write to temporary response file %s"
msgstr ""
-#: gcc.c:4782
+#: gcc.c:5055
#, c-format
msgid "could not close temporary response file %s"
msgstr ""
-#: gcc.c:4882
+#: gcc.c:5157
#, c-format
msgid "spec '%s' invalid"
msgstr ""
-#: gcc.c:5027
+#: gcc.c:5306
#, c-format
msgid "spec '%s' has invalid '%%0%c'"
msgstr ""
-#: gcc.c:5326
+#: gcc.c:5615
#, c-format
msgid "spec '%s' has invalid '%%W%c"
msgstr ""
-#: gcc.c:5346
+#: gcc.c:5635
#, c-format
msgid "spec '%s' has invalid '%%x%c'"
msgstr ""
-#: gcc.c:5568
+#: gcc.c:5857
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr ""
-#: gcc.c:5692
+#: gcc.c:5982
#, c-format
msgid "unknown spec function '%s'"
msgstr ""
-#: gcc.c:5711
+#: gcc.c:6002
#, c-format
msgid "error in args to spec function '%s'"
msgstr ""
-#: gcc.c:5759
+#: gcc.c:6051
#, c-format
msgid "malformed spec function name"
msgstr ""
#. )
-#: gcc.c:5762
+#: gcc.c:6054
#, c-format
msgid "no arguments for spec function"
msgstr ""
-#: gcc.c:5781
+#: gcc.c:6073
#, c-format
msgid "malformed spec function arguments"
msgstr ""
-#: gcc.c:6027
+#: gcc.c:6319
#, c-format
msgid "braced spec '%s' is invalid at '%c'"
msgstr ""
-#: gcc.c:6115
+#: gcc.c:6407
#, c-format
msgid "braced spec body '%s' is invalid"
msgstr ""
-#: gcc.c:6644
+#: gcc.c:7106
#, c-format
msgid "install: %s%s\n"
msgstr ""
-#: gcc.c:6647
+#: gcc.c:7109
#, c-format
msgid "programs: %s\n"
msgstr ""
-#: gcc.c:6649
+#: gcc.c:7111
#, c-format
msgid "libraries: %s\n"
msgstr ""
#. The error status indicates that only one set of fixed
#. headers should be built.
-#: gcc.c:6715
+#: gcc.c:7177
#, c-format
msgid "not configured with sysroot headers suffix"
msgstr ""
-#: gcc.c:6724
+#: gcc.c:7186
#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
msgstr ""
-#: gcc.c:6740
+#: gcc.c:7202
#, c-format
msgid "%s %s%s\n"
msgstr ""
-#: gcc.c:6743 gcov.c:430 fortran/gfortranspec.c:383 java/jcf-dump.c:1170
+#: gcc.c:7205 gcov.c:430 fortran/gfortranspec.c:373 java/jcf-dump.c:1170
msgid "(C)"
msgstr ""
-#: gcc.c:6744 java/jcf-dump.c:1171
+#: gcc.c:7206 java/jcf-dump.c:1171
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@@ -1312,47 +1329,57 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:6761
+#: gcc.c:7223
#, c-format
msgid "Target: %s\n"
msgstr ""
-#: gcc.c:6762
+#: gcc.c:7224
#, c-format
msgid "Configured with: %s\n"
msgstr ""
-#: gcc.c:6776
+#: gcc.c:7238
#, c-format
msgid "Thread model: %s\n"
msgstr ""
-#: gcc.c:6787
+#: gcc.c:7249
#, c-format
msgid "gcc version %s %s\n"
msgstr ""
-#: gcc.c:6789
+#: gcc.c:7251
#, c-format
msgid "gcc driver version %s %sexecuting gcc version %s\n"
msgstr ""
-#: gcc.c:6797
+#: gcc.c:7259
#, c-format
msgid "no input files"
msgstr ""
-#: gcc.c:6846
+#: gcc.c:7308
#, c-format
-msgid "cannot specify -o with -c or -S with multiple files"
+msgid "cannot specify -o with -c, -S or -E with multiple files"
msgstr ""
-#: gcc.c:6880
+#: gcc.c:7342
#, c-format
msgid "spec '%s' is invalid"
msgstr ""
-#: gcc.c:7016
+#: gcc.c:7533
+#, c-format
+msgid "-use-linker-plugin, but liblto_plugin.so not found"
+msgstr ""
+
+#: gcc.c:7538
+#, c-format
+msgid "could not find libgcc.a"
+msgstr ""
+
+#: gcc.c:7549
#, c-format
msgid ""
"\n"
@@ -1361,59 +1388,59 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:7017
+#: gcc.c:7550
#, c-format
msgid ""
"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
"\n"
msgstr ""
-#: gcc.c:7369
+#: gcc.c:7902
#, c-format
msgid "multilib spec '%s' is invalid"
msgstr ""
-#: gcc.c:7560
+#: gcc.c:8093
#, c-format
msgid "multilib exclusions '%s' is invalid"
msgstr ""
-#: gcc.c:7618 gcc.c:7759
+#: gcc.c:8151 gcc.c:8292
#, c-format
msgid "multilib select '%s' is invalid"
msgstr ""
-#: gcc.c:7797
+#: gcc.c:8330
#, c-format
msgid "multilib exclusion '%s' is invalid"
msgstr ""
-#: gcc.c:8003
+#: gcc.c:8536
#, c-format
msgid "environment variable \"%s\" not defined"
msgstr ""
-#: gcc.c:8094 gcc.c:8099
+#: gcc.c:8627 gcc.c:8632
#, c-format
msgid "invalid version number `%s'"
msgstr ""
-#: gcc.c:8142
+#: gcc.c:8675
#, c-format
msgid "too few arguments to %%:version-compare"
msgstr ""
-#: gcc.c:8148
+#: gcc.c:8681
#, c-format
msgid "too many arguments to %%:version-compare"
msgstr ""
-#: gcc.c:8189
+#: gcc.c:8722
#, c-format
msgid "unknown operator '%s' in %%:version-compare"
msgstr ""
-#: gcc.c:8223
+#: gcc.c:8756
#, c-format
msgid ""
"Assembler options\n"
@@ -1421,13 +1448,38 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:8224
+#: gcc.c:8757
#, c-format
msgid ""
"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n"
"\n"
msgstr ""
+#: gcc.c:8803
+#, c-format
+msgid "too many arguments to %%:compare-debug-dump-opt"
+msgstr ""
+
+#: gcc.c:8870
+#, c-format
+msgid "too many arguments to %%:compare-debug-self-opt"
+msgstr ""
+
+#: gcc.c:8905
+#, c-format
+msgid "too few arguments to %%:compare-debug-auxbase-opt"
+msgstr ""
+
+#: gcc.c:8908
+#, c-format
+msgid "too many arguments to %%:compare-debug-auxbase-opt"
+msgstr ""
+
+#: gcc.c:8915
+#, c-format
+msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk"
+msgstr ""
+
#: gcov.c:403
#, c-format
msgid ""
@@ -1608,130 +1660,130 @@ msgstr ""
msgid "%s:stamp mismatch with graph file\n"
msgstr ""
-#: gcov.c:1082
+#: gcov.c:1083
#, c-format
msgid "%s:unknown function '%u'\n"
msgstr ""
-#: gcov.c:1095
+#: gcov.c:1097
#, c-format
msgid "%s:profile mismatch for '%s'\n"
msgstr ""
-#: gcov.c:1114
+#: gcov.c:1116
#, c-format
msgid "%s:overflowed\n"
msgstr ""
-#: gcov.c:1138
+#: gcov.c:1140
#, c-format
msgid "%s:'%s' lacks entry and/or exit blocks\n"
msgstr ""
-#: gcov.c:1143
+#: gcov.c:1145
#, c-format
msgid "%s:'%s' has arcs to entry block\n"
msgstr ""
-#: gcov.c:1151
+#: gcov.c:1153
#, c-format
msgid "%s:'%s' has arcs from exit block\n"
msgstr ""
-#: gcov.c:1359
+#: gcov.c:1361
#, c-format
msgid "%s:graph is unsolvable for '%s'\n"
msgstr ""
-#: gcov.c:1439
+#: gcov.c:1441
#, c-format
msgid "%s '%s'\n"
msgstr ""
-#: gcov.c:1442
+#: gcov.c:1444
#, c-format
msgid "Lines executed:%s of %d\n"
msgstr ""
-#: gcov.c:1446
+#: gcov.c:1448
#, c-format
msgid "No executable lines\n"
msgstr ""
-#: gcov.c:1452
+#: gcov.c:1454
#, c-format
msgid "Branches executed:%s of %d\n"
msgstr ""
-#: gcov.c:1456
+#: gcov.c:1458
#, c-format
msgid "Taken at least once:%s of %d\n"
msgstr ""
-#: gcov.c:1462
+#: gcov.c:1464
#, c-format
msgid "No branches\n"
msgstr ""
-#: gcov.c:1464
+#: gcov.c:1466
#, c-format
msgid "Calls executed:%s of %d\n"
msgstr ""
-#: gcov.c:1468
+#: gcov.c:1470
#, c-format
msgid "No calls\n"
msgstr ""
-#: gcov.c:1628
+#: gcov.c:1630
#, c-format
msgid "%s:no lines for '%s'\n"
msgstr ""
-#: gcov.c:1823
+#: gcov.c:1825
#, c-format
msgid "call %2d returned %s\n"
msgstr ""
-#: gcov.c:1828
+#: gcov.c:1830
#, c-format
msgid "call %2d never executed\n"
msgstr ""
-#: gcov.c:1833
+#: gcov.c:1835
#, c-format
msgid "branch %2d taken %s%s\n"
msgstr ""
-#: gcov.c:1837
+#: gcov.c:1839
#, c-format
msgid "branch %2d never executed\n"
msgstr ""
-#: gcov.c:1842
+#: gcov.c:1844
#, c-format
msgid "unconditional %2d taken %s\n"
msgstr ""
-#: gcov.c:1845
+#: gcov.c:1847
#, c-format
msgid "unconditional %2d never executed\n"
msgstr ""
-#: gcov.c:1881
+#: gcov.c:1883
#, c-format
msgid "%s:cannot open source file\n"
msgstr ""
-#: gcse.c:3944
+#: gcse.c:3967
msgid "PRE disabled"
msgstr ""
-#: gcse.c:4425
+#: gcse.c:4448
msgid "GCSE disabled"
msgstr ""
-#: gcse.c:4942
+#: gcse.c:4965
msgid "const/copy propagation disabled"
msgstr ""
@@ -1775,155 +1827,195 @@ msgstr ""
msgid "'"
msgstr ""
-#: langhooks.c:362
+#: langhooks.c:355
msgid "At top level:"
msgstr ""
-#: langhooks.c:382 cp/error.c:2661
+#: langhooks.c:375 cp/error.c:2710
#, c-format
msgid "In member function %qs"
msgstr ""
-#: langhooks.c:386 cp/error.c:2664
+#: langhooks.c:379 cp/error.c:2713
#, c-format
msgid "In function %qs"
msgstr ""
-#: langhooks.c:437 cp/error.c:2620
+#: langhooks.c:430 cp/error.c:2663
#, c-format
msgid " inlined from %qs at %s:%d:%d"
msgstr ""
-#: langhooks.c:442 cp/error.c:2625
+#: langhooks.c:435 cp/error.c:2668
#, c-format
msgid " inlined from %qs at %s:%d"
msgstr ""
-#: langhooks.c:448 cp/error.c:2631
+#: langhooks.c:441 cp/error.c:2674
#, c-format
msgid " inlined from %qs"
msgstr ""
-#: loop-iv.c:2965 tree-ssa-loop-niter.c:1871
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1874
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2966 tree-ssa-loop-niter.c:1872
+#: loop-iv.c:2967 tree-ssa-loop-niter.c:1875
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2974 tree-ssa-loop-niter.c:1876
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1879
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2975 tree-ssa-loop-niter.c:1877
+#: loop-iv.c:2976 tree-ssa-loop-niter.c:1880
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
+#: lto-wrapper.c:176
+#, c-format
+msgid "%s terminated with signal %d [%s], core dumped"
+msgstr ""
+
+#: lto-wrapper.c:179
+#, c-format
+msgid "%s terminated with signal %d [%s]"
+msgstr ""
+
+#: lto-wrapper.c:184 collect2.c:1964
+#, gcc-internal-format
+msgid "%s returned %d exit status"
+msgstr ""
+
+#: lto-wrapper.c:199
+#, c-format
+msgid "deleting LTRANS file %s"
+msgstr ""
+
+#: lto-wrapper.c:221
+#, c-format
+msgid "failed to open %s"
+msgstr ""
+
+#: lto-wrapper.c:226
+#, c-format
+msgid "could not write to temporary file %s"
+msgstr ""
+
+#: lto-wrapper.c:288 lto-wrapper.c:345
+#, c-format
+msgid "invalid LTO mode"
+msgstr ""
+
+#: lto-wrapper.c:336
+#, c-format
+msgid "fopen: %s"
+msgstr ""
+
#. What to print when a switch has no documentation.
-#: opts.c:339
+#: opts.c:341
msgid "This switch lacks documentation"
msgstr ""
-#: opts.c:1265
+#: opts.c:1289
msgid "[enabled]"
msgstr ""
-#: opts.c:1265
+#: opts.c:1289
msgid "[disabled]"
msgstr ""
-#: opts.c:1280
+#: opts.c:1304
#, c-format
msgid " No options with the desired characteristics were found\n"
msgstr ""
-#: opts.c:1289
+#: opts.c:1313
#, c-format
msgid ""
" None found. Use --help=%s to show *all* the options supported by the %s "
"front-end\n"
msgstr ""
-#: opts.c:1295
+#: opts.c:1319
#, c-format
msgid ""
" All options with the desired characteristics have already been displayed\n"
msgstr ""
-#: opts.c:1349
+#: opts.c:1373
msgid "The following options are target specific"
msgstr ""
-#: opts.c:1352
+#: opts.c:1376
msgid "The following options control compiler warning messages"
msgstr ""
-#: opts.c:1355
+#: opts.c:1379
msgid "The following options control optimizations"
msgstr ""
-#: opts.c:1358 opts.c:1397
+#: opts.c:1382 opts.c:1421
msgid "The following options are language-independent"
msgstr ""
-#: opts.c:1361
+#: opts.c:1385
msgid "The --param option recognizes the following as parameters"
msgstr ""
-#: opts.c:1367
+#: opts.c:1391
msgid "The following options are specific to just the language "
msgstr ""
-#: opts.c:1369
+#: opts.c:1393
msgid "The following options are supported by the language "
msgstr ""
-#: opts.c:1380
+#: opts.c:1404
msgid "The following options are not documented"
msgstr ""
-#: opts.c:1382
+#: opts.c:1406
msgid "The following options take separate arguments"
msgstr ""
-#: opts.c:1384
+#: opts.c:1408
msgid "The following options take joined arguments"
msgstr ""
-#: opts.c:1395
+#: opts.c:1419
msgid "The following options are language-related"
msgstr ""
-#: opts.c:1555
+#: opts.c:1579
#, c-format
msgid "warning: --help argument %.*s is ambiguous, please be more specific\n"
msgstr ""
-#: opts.c:1563
+#: opts.c:1587
#, c-format
msgid "warning: unrecognized argument to --help= option: %.*s\n"
msgstr ""
-#: reload.c:3780
+#: reload.c:3813
msgid "unable to generate reloads for:"
msgstr ""
-#: reload1.c:2094
+#: reload1.c:2151
msgid "this is the insn:"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:5619
+#: reload1.c:5671
msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:7597
+#: reload1.c:7656
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8352
+#: reload1.c:8411
msgid "Failure trying to reload:"
msgstr ""
@@ -1981,70 +2073,75 @@ msgstr ""
msgid "collect: relinking\n"
msgstr ""
-#: toplev.c:606
+#: toplev.c:621
#, c-format
msgid "unrecoverable error"
msgstr ""
-#: toplev.c:1168
+#: toplev.c:1196
#, c-format
msgid ""
"%s%s%s %sversion %s (%s)\n"
"%s\tcompiled by GNU C version %s, "
msgstr ""
-#: toplev.c:1170
+#: toplev.c:1198
#, c-format
msgid "%s%s%s %sversion %s (%s) compiled by CC, "
msgstr ""
-#: toplev.c:1174
+#: toplev.c:1203
#, c-format
-msgid "GMP version %s, MPFR version %s.\n"
+msgid "GMP version %s, MPFR version %s, MPC version %s\n"
msgstr ""
-#: toplev.c:1176
+#: toplev.c:1206
+#, c-format
+msgid "GMP version %s, MPFR version %s\n"
+msgstr ""
+
+#: toplev.c:1209
#, c-format
msgid "%s%swarning: %s header version %s differs from library version %s.\n"
msgstr ""
-#: toplev.c:1178
+#: toplev.c:1211
#, c-format
msgid ""
"%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
msgstr ""
-#: toplev.c:1336
+#: toplev.c:1380
msgid "options passed: "
msgstr ""
-#: toplev.c:1370
+#: toplev.c:1414
msgid "options enabled: "
msgstr ""
-#: toplev.c:1505
+#: toplev.c:1549
#, c-format
msgid "created and used with differing settings of '%s'"
msgstr ""
-#: toplev.c:1507
+#: toplev.c:1551
msgid "out of memory"
msgstr ""
-#: toplev.c:1522
+#: toplev.c:1566
msgid "created and used with different settings of -fpic"
msgstr ""
-#: toplev.c:1524
+#: toplev.c:1568
msgid "created and used with different settings of -fpie"
msgstr ""
-#: tree-vrp.c:6517
+#: tree-vrp.c:6516
msgid ""
"assuming signed overflow does not occur when simplifying && or || to & or |"
msgstr ""
-#: tree-vrp.c:6521
+#: tree-vrp.c:6520
msgid ""
"assuming signed overflow does not occur when simplifying ==, != or ! to "
"identity or ^"
@@ -2167,956 +2264,985 @@ msgstr ""
msgid "permerror: "
msgstr ""
-#: params.def:47
-msgid ""
-"The maximum structure size (in bytes) for which GCC will use by-element "
-"copies"
-msgstr ""
-
-#: params.def:56
-msgid ""
-"The maximum number of structure fields for which GCC will use by-element "
-"copies"
-msgstr ""
-
-#: params.def:68
-msgid ""
-"The threshold ratio between instantiated fields and the total structure size"
-msgstr ""
-
-#: params.def:78
+#: params.def:48
msgid "The threshold ratio between current and hottest structure counts"
msgstr ""
-#: params.def:85
+#: params.def:55
msgid "Maximal esitmated outcome of branch considered predictable"
msgstr ""
-#: params.def:102
+#: params.def:72
msgid ""
"The maximum number of instructions in a single function eligible for inlining"
msgstr ""
-#: params.def:114
+#: params.def:84
msgid "The maximum number of instructions when automatically inlining"
msgstr ""
-#: params.def:119
+#: params.def:89
msgid ""
"The maximum number of instructions inline function can grow to via recursive "
"inlining"
msgstr ""
-#: params.def:124
+#: params.def:94
msgid ""
"The maximum number of instructions non-inline function can grow to via "
"recursive inlining"
msgstr ""
-#: params.def:129
+#: params.def:99
msgid "The maximum depth of recursive inlining for inline functions"
msgstr ""
-#: params.def:134
+#: params.def:104
msgid "The maximum depth of recursive inlining for non-inline functions"
msgstr ""
-#: params.def:139
+#: params.def:109
msgid ""
"Inline recursively only when the probability of call being executed exceeds "
"the parameter"
msgstr ""
-#: params.def:146
+#: params.def:117
+msgid ""
+"The maximum number of nested indirect inlining performed by early inliner"
+msgstr ""
+
+#: params.def:124
msgid ""
"If -fvariable-expansion-in-unroller is used, the maximum number of times "
"that an individual variable will be expanded during loop unrolling"
msgstr ""
-#: params.def:152
+#: params.def:130
msgid ""
"If -ftree-vectorize is used, the minimal loop bound of a loop to be "
"considered for vectorization"
msgstr ""
-#: params.def:163
+#: params.def:141
msgid "The maximum number of instructions to consider to fill a delay slot"
msgstr ""
-#: params.def:174
+#: params.def:152
msgid ""
"The maximum number of instructions to consider to find accurate live "
"register information"
msgstr ""
-#: params.def:184
+#: params.def:162
msgid "The maximum length of scheduling's pending operations list"
msgstr ""
-#: params.def:189
+#: params.def:167
msgid "The size of function body to be considered large"
msgstr ""
-#: params.def:193
+#: params.def:171
msgid "Maximal growth due to inlining of large function (in percent)"
msgstr ""
-#: params.def:197
+#: params.def:175
msgid "The size of translation unit to be considered large"
msgstr ""
-#: params.def:201
+#: params.def:179
msgid ""
"how much can given compilation unit grow because of the inlining (in percent)"
msgstr ""
-#: params.def:205
+#: params.def:183
msgid ""
"how much can given compilation unit grow because of the interprocedural "
"constant propagation (in percent)"
msgstr ""
-#: params.def:209
-msgid "expense of call operation relative to ordinary arithmetic operations"
+#: params.def:187
+msgid ""
+"maximal estimated growth of function body caused by early inlining of single "
+"call"
msgstr ""
-#: params.def:213
+#: params.def:191
msgid "The size of stack frame to be considered large"
msgstr ""
-#: params.def:217
+#: params.def:195
msgid "Maximal stack frame growth due to inlining (in percent)"
msgstr ""
-#: params.def:224
+#: params.def:202
msgid "The maximum amount of memory to be allocated by GCSE"
msgstr ""
-#: params.def:235
+#: params.def:213
msgid ""
"The threshold ratio for performing partial redundancy elimination after "
"reload"
msgstr ""
-#: params.def:242
+#: params.def:220
msgid ""
"The threshold ratio of critical edges execution count that permit performing "
"redundancy elimination after reload"
msgstr ""
-#: params.def:253
+#: params.def:231
msgid "The maximum number of instructions to consider to unroll in a loop"
msgstr ""
-#: params.def:259
+#: params.def:237
msgid ""
"The maximum number of instructions to consider to unroll in a loop on average"
msgstr ""
-#: params.def:264
+#: params.def:242
msgid "The maximum number of unrollings of a single loop"
msgstr ""
-#: params.def:269
+#: params.def:247
msgid "The maximum number of insns of a peeled loop"
msgstr ""
-#: params.def:274
+#: params.def:252
msgid "The maximum number of peelings of a single loop"
msgstr ""
-#: params.def:279
+#: params.def:257
msgid "The maximum number of insns of a completely peeled loop"
msgstr ""
-#: params.def:284
+#: params.def:262
msgid ""
"The maximum number of peelings of a single loop that is peeled completely"
msgstr ""
-#: params.def:289
+#: params.def:267
msgid "The maximum number of insns of a peeled loop that rolls only once"
msgstr ""
-#: params.def:295
+#: params.def:273
msgid "The maximum number of insns of an unswitched loop"
msgstr ""
-#: params.def:300
+#: params.def:278
msgid "The maximum number of unswitchings in a single loop"
msgstr ""
-#: params.def:307
+#: params.def:285
msgid ""
"Bound on the number of iterations the brute force # of iterations analysis "
"algorithm evaluates"
msgstr ""
-#: params.def:313
+#: params.def:291
msgid "Bound on the cost of an expression to compute the number of iterations"
msgstr ""
-#: params.def:319
+#: params.def:297
msgid ""
"A factor for tuning the upper bound that swing modulo scheduler uses for "
"scheduling a loop"
msgstr ""
-#: params.def:323
+#: params.def:301
msgid ""
"The number of cycles the swing modulo scheduler considers when checking "
"conflicts using DFA"
msgstr ""
-#: params.def:327
+#: params.def:305
msgid ""
"A threshold on the average loop count considered by the swing modulo "
"scheduler"
msgstr ""
-#: params.def:332
+#: params.def:310
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:336
+#: params.def:314
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:341
+#: params.def:319
msgid ""
"Select fraction of the maximal frequency of executions of basic block in "
"function given basic block get alignment"
msgstr ""
-#: params.def:346
+#: params.def:324
msgid ""
"Loops iterating at least selected number of iterations will get loop "
"alignement."
msgstr ""
-#: params.def:362
+#: params.def:340
msgid "The maximum number of loop iterations we predict statically"
msgstr ""
-#: params.def:366
+#: params.def:344
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:370
+#: params.def:348
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:374
+#: params.def:352
msgid "Maximal code growth caused by tail duplication (in percent)"
msgstr ""
-#: params.def:378
+#: params.def:356
msgid ""
"Stop reverse growth if the reverse probability of best edge is less than "
"this threshold (in percent)"
msgstr ""
-#: params.def:382
+#: params.def:360
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:386
+#: params.def:364
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:392
+#: params.def:370
msgid "The maximum number of incoming edges to consider for crossjumping"
msgstr ""
-#: params.def:398
+#: params.def:376
msgid ""
"The minimum number of matching instructions to consider for crossjumping"
msgstr ""
-#: params.def:404
+#: params.def:382
msgid "The maximum expansion factor when copying basic blocks"
msgstr ""
-#: params.def:410
+#: params.def:388
msgid ""
"The maximum number of insns to duplicate when unfactoring computed gotos"
msgstr ""
-#: params.def:416
+#: params.def:394
msgid "The maximum length of path considered in cse"
msgstr ""
-#: params.def:420
+#: params.def:398
msgid "The maximum instructions CSE process before flushing"
msgstr ""
-#: params.def:427
+#: params.def:405
msgid ""
"The minimum cost of an expensive expression in the loop invariant motion"
msgstr ""
-#: params.def:436
+#: params.def:414
msgid ""
"Bound on number of candidates below that all candidates are considered in iv "
"optimizations"
msgstr ""
-#: params.def:444
+#: params.def:422
msgid "Bound on number of iv uses in loop optimized in iv optimizations"
msgstr ""
-#: params.def:452
+#: params.def:430
msgid ""
"If number of candidates in the set is smaller, we always try to remove "
"unused ivs during its optimization"
msgstr ""
-#: params.def:457
+#: params.def:435
msgid "Bound on size of expressions used in the scalar evolutions analyzer"
msgstr ""
-#: params.def:462
+#: params.def:440
msgid "Bound on the number of variables in Omega constraint systems"
msgstr ""
-#: params.def:467
+#: params.def:445
msgid "Bound on the number of inequalities in Omega constraint systems"
msgstr ""
-#: params.def:472
+#: params.def:450
msgid "Bound on the number of equalities in Omega constraint systems"
msgstr ""
-#: params.def:477
+#: params.def:455
msgid "Bound on the number of wild cards in Omega constraint systems"
msgstr ""
-#: params.def:482
+#: params.def:460
msgid "Bound on the size of the hash table in Omega constraint systems"
msgstr ""
-#: params.def:487
+#: params.def:465
msgid "Bound on the number of keys in Omega constraint systems"
msgstr ""
-#: params.def:492
+#: params.def:470
msgid ""
"When set to 1, use expensive methods to eliminate all redundant constraints"
msgstr ""
-#: params.def:497
+#: params.def:475
msgid ""
"Bound on number of runtime checks inserted by the vectorizer's loop "
"versioning for alignment check"
msgstr ""
-#: params.def:502
+#: params.def:480
msgid ""
"Bound on number of runtime checks inserted by the vectorizer's loop "
"versioning for alias check"
msgstr ""
-#: params.def:507
+#: params.def:485
msgid "The maximum memory locations recorded by cselib"
msgstr ""
-#: params.def:520
+#: params.def:498
msgid ""
"Minimum heap expansion to trigger garbage collection, as a percentage of the "
"total size of the heap"
msgstr ""
-#: params.def:525
+#: params.def:503
msgid "Minimum heap size before we start collecting garbage, in kilobytes"
msgstr ""
-#: params.def:533
+#: params.def:511
msgid ""
"The maximum number of instructions to search backward when looking for "
"equivalent reload"
msgstr ""
-#: params.def:538 params.def:548
+#: params.def:516 params.def:526
msgid ""
"The maximum number of blocks in a region to be considered for interblock "
"scheduling"
msgstr ""
-#: params.def:543 params.def:553
+#: params.def:521 params.def:531
msgid ""
"The maximum number of insns in a region to be considered for interblock "
"scheduling"
msgstr ""
-#: params.def:558
+#: params.def:536
msgid ""
"The minimum probability of reaching a source block for interblock "
"speculative scheduling"
msgstr ""
-#: params.def:563
+#: params.def:541
msgid "The maximum number of iterations through CFG to extend regions"
msgstr ""
-#: params.def:568
+#: params.def:546
msgid ""
"The maximum conflict delay for an insn to be considered for speculative "
"motion"
msgstr ""
-#: params.def:573
+#: params.def:551
msgid ""
"The minimal probability of speculation success (in percents), so that "
"speculative insn will be scheduled."
msgstr ""
-#: params.def:578
+#: params.def:556
msgid "The maximum size of the lookahead window of selective scheduling"
msgstr ""
-#: params.def:583
+#: params.def:561
msgid "Maximum number of times that an insn could be scheduled"
msgstr ""
-#: params.def:588
+#: params.def:566
msgid ""
"Maximum number of instructions in the ready list that are considered "
"eligible for renaming"
msgstr ""
-#: params.def:593
+#: params.def:571
msgid "Minimal distance between possibly conflicting store and load"
msgstr ""
-#: params.def:598
+#: params.def:576
msgid ""
"The maximum number of RTL nodes that can be recorded as combiner's last value"
msgstr ""
-#: params.def:606
+#: params.def:584
msgid "The upper bound for sharing integer constants"
msgstr ""
-#: params.def:625
+#: params.def:603
msgid ""
"Minimum number of virtual mappings to consider switching to full virtual "
"renames"
msgstr ""
-#: params.def:630
+#: params.def:608
msgid ""
"Ratio between virtual mappings and virtual symbols to do full virtual renames"
msgstr ""
-#: params.def:635
+#: params.def:613
msgid ""
"The lower bound for a buffer to be considered for stack smashing protection"
msgstr ""
-#: params.def:653
+#: params.def:631
msgid ""
"Maximum number of statements allowed in a block that needs to be duplicated "
"when threading jumps"
msgstr ""
-#: params.def:662
+#: params.def:640
msgid ""
"Maximum number of fields in a structure before pointer analysis treats the "
"structure as a single variable"
msgstr ""
-#: params.def:667
+#: params.def:645
msgid ""
"The maximum number of instructions ready to be issued to be considered by "
"the scheduler during the first scheduling pass"
msgstr ""
-#: params.def:677
+#: params.def:655
msgid "The number of insns executed before prefetch is completed"
msgstr ""
-#: params.def:684
+#: params.def:662
msgid "The number of prefetches that can run at the same time"
msgstr ""
-#: params.def:691
+#: params.def:669
msgid "The size of L1 cache"
msgstr ""
-#: params.def:698
+#: params.def:676
msgid "The size of L1 cache line"
msgstr ""
-#: params.def:705
+#: params.def:683
msgid "The size of L2 cache"
msgstr ""
-#: params.def:716
+#: params.def:694
msgid "Whether to use canonical types"
msgstr ""
-#: params.def:721
+#: params.def:699
msgid ""
"Maximum length of partial antic set when performing tree pre optimization"
msgstr ""
-#: params.def:731
+#: params.def:709
msgid "Maximum size of a SCC before SCCVN stops processing a function"
msgstr ""
-#: params.def:736
+#: params.def:714
msgid "max loops number for regional RA"
msgstr ""
-#: params.def:741
+#: params.def:719
msgid "max size of conflict table in MB"
msgstr ""
-#: params.def:749
+#: params.def:724
+msgid ""
+"The number of registers in each class kept unused by loop invariant motion"
+msgstr ""
+
+#: params.def:732
msgid ""
"The maximum ratio between array size and switch branches for a switch "
"conversion to take place"
msgstr ""
-#: params.def:757
+#: params.def:740
msgid "max basic blocks number in loop for loop invariant motion"
msgstr ""
-#: config/alpha/alpha.c:5054
+#: params.def:746
+msgid ""
+"Maximum number of instructions in basic block to be considered for SLP "
+"vectorization"
+msgstr ""
+
+#: params.def:751
+msgid ""
+"min. ratio of insns to prefetches to enable prefetching for a loop with an "
+"unknown trip count"
+msgstr ""
+
+#: params.def:757
+msgid "min. ratio of insns to mem ops to enable prefetching in a loop"
+msgstr ""
+
+#: params.def:764
+msgid "The minimum UID to be used for a nondebug insn"
+msgstr ""
+
+#: params.def:769
+msgid ""
+"maximum allowed growth of size of new parameters ipa-sra replaces a pointer "
+"to an aggregate with"
+msgstr ""
+
+#: config/alpha/alpha.c:5131
#, c-format
msgid "invalid %%H value"
msgstr ""
-#: config/alpha/alpha.c:5075 config/bfin/bfin.c:1631
+#: config/alpha/alpha.c:5152 config/bfin/bfin.c:1682
#, c-format
msgid "invalid %%J value"
msgstr ""
-#: config/alpha/alpha.c:5105 config/ia64/ia64.c:4765
+#: config/alpha/alpha.c:5182 config/ia64/ia64.c:4978
#, c-format
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:5115 config/ia64/ia64.c:4719
-#: config/rs6000/rs6000.c:12250 config/xtensa/xtensa.c:2242
+#: config/alpha/alpha.c:5192 config/ia64/ia64.c:4932
+#: config/rs6000/rs6000.c:14541 config/xtensa/xtensa.c:2253
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5121 config/rs6000/rs6000.c:12169
-#: config/xtensa/xtensa.c:2209
+#: config/alpha/alpha.c:5198 config/rs6000/rs6000.c:14460
+#: config/xtensa/xtensa.c:2220
#, c-format
msgid "invalid %%N value"
msgstr ""
-#: config/alpha/alpha.c:5129 config/rs6000/rs6000.c:12197
+#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:14488
#, c-format
msgid "invalid %%P value"
msgstr ""
-#: config/alpha/alpha.c:5137
+#: config/alpha/alpha.c:5214
#, c-format
msgid "invalid %%h value"
msgstr ""
-#: config/alpha/alpha.c:5145 config/xtensa/xtensa.c:2235
+#: config/alpha/alpha.c:5222 config/xtensa/xtensa.c:2246
#, c-format
msgid "invalid %%L value"
msgstr ""
-#: config/alpha/alpha.c:5184 config/rs6000/rs6000.c:12151
+#: config/alpha/alpha.c:5261 config/rs6000/rs6000.c:14442
#, c-format
msgid "invalid %%m value"
msgstr ""
-#: config/alpha/alpha.c:5192 config/rs6000/rs6000.c:12159
+#: config/alpha/alpha.c:5269 config/rs6000/rs6000.c:14450
#, c-format
msgid "invalid %%M value"
msgstr ""
-#: config/alpha/alpha.c:5236
+#: config/alpha/alpha.c:5313
#, c-format
msgid "invalid %%U value"
msgstr ""
-#: config/alpha/alpha.c:5248 config/alpha/alpha.c:5262
-#: config/rs6000/rs6000.c:12258
+#: config/alpha/alpha.c:5325 config/alpha/alpha.c:5339
+#: config/rs6000/rs6000.c:14549
#, c-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:5285
+#: config/alpha/alpha.c:5362
#, c-format
msgid "invalid %%C value"
msgstr ""
-#: config/alpha/alpha.c:5322 config/rs6000/rs6000.c:11986
-#: config/rs6000/rs6000.c:12005
+#: config/alpha/alpha.c:5399 config/rs6000/rs6000.c:14296
#, c-format
msgid "invalid %%E value"
msgstr ""
-#: config/alpha/alpha.c:5347 config/alpha/alpha.c:5395
+#: config/alpha/alpha.c:5424 config/alpha/alpha.c:5472
#, c-format
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5356 config/crx/crx.c:1081
-#: config/rs6000/rs6000.c:12589 config/spu/spu.c:1614
+#: config/alpha/alpha.c:5433 config/crx/crx.c:1092
+#: config/rs6000/rs6000.c:14903 config/spu/spu.c:1647
#, c-format
msgid "invalid %%xn code"
msgstr ""
-#: config/arc/arc.c:1729 config/m32r/m32r.c:1820
+#: config/arc/arc.c:1724 config/m32r/m32r.c:1980
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:1761 config/m32r/m32r.c:1843
+#: config/arc/arc.c:1756 config/m32r/m32r.c:2003
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:1783 config/m32r/m32r.c:1914
+#: config/arc/arc.c:1778 config/m32r/m32r.c:2074
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
-#: config/arc/arc.c:1794
+#: config/arc/arc.c:1789
#, c-format
msgid "invalid operand to %%V code"
msgstr ""
#. Unknown flag.
#. Undocumented flag.
-#: config/arc/arc.c:1801 config/m32r/m32r.c:1941 config/sparc/sparc.c:7048
+#: config/arc/arc.c:1796 config/m32r/m32r.c:2101 config/sparc/sparc.c:7184
#, c-format
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:13323 config/arm/arm.c:13341
+#: config/arm/arm.c:14627 config/arm/arm.c:14645
#, c-format
msgid "predicated Thumb instruction"
msgstr ""
-#: config/arm/arm.c:13329
+#: config/arm/arm.c:14633
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr ""
-#: config/arm/arm.c:13499
+#: config/arm/arm.c:14803
#, c-format
msgid "invalid shift operand"
msgstr ""
-#: config/arm/arm.c:13546 config/arm/arm.c:13556 config/arm/arm.c:13566
-#: config/arm/arm.c:13576 config/arm/arm.c:13586 config/arm/arm.c:13625
-#: config/arm/arm.c:13643 config/arm/arm.c:13678 config/arm/arm.c:13697
-#: config/arm/arm.c:13712 config/arm/arm.c:13740 config/arm/arm.c:13747
-#: config/arm/arm.c:13755 config/arm/arm.c:13776 config/arm/arm.c:13783
-#: config/bfin/bfin.c:1644 config/bfin/bfin.c:1651 config/bfin/bfin.c:1658
-#: config/bfin/bfin.c:1665 config/bfin/bfin.c:1674 config/bfin/bfin.c:1681
-#: config/bfin/bfin.c:1688 config/bfin/bfin.c:1695
+#: config/arm/arm.c:14850 config/arm/arm.c:14860 config/arm/arm.c:14870
+#: config/arm/arm.c:14880 config/arm/arm.c:14890 config/arm/arm.c:14929
+#: config/arm/arm.c:14947 config/arm/arm.c:14982 config/arm/arm.c:15001
+#: config/arm/arm.c:15016 config/arm/arm.c:15044 config/arm/arm.c:15051
+#: config/arm/arm.c:15059 config/arm/arm.c:15080 config/arm/arm.c:15087
+#: config/arm/arm.c:15178 config/arm/arm.c:15185 config/bfin/bfin.c:1695
+#: config/bfin/bfin.c:1702 config/bfin/bfin.c:1709 config/bfin/bfin.c:1716
+#: config/bfin/bfin.c:1725 config/bfin/bfin.c:1732 config/bfin/bfin.c:1739
+#: config/bfin/bfin.c:1746
#, c-format
msgid "invalid operand for code '%c'"
msgstr ""
-#: config/arm/arm.c:13638
+#: config/arm/arm.c:14942
#, c-format
msgid "instruction never executed"
msgstr ""
-#: config/arm/arm.c:13850
+#: config/arm/arm.c:15197
#, c-format
msgid "missing operand"
msgstr ""
-#: config/avr/avr.c:1212
+#: config/arm/arm.c:17472
+msgid "function parameters cannot have __fp16 type"
+msgstr ""
+
+#: config/arm/arm.c:17482
+msgid "functions cannot return __fp16 type"
+msgstr ""
+
+#: config/avr/avr.c:1083
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1324
+#: config/avr/avr.c:1195
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1331
+#: config/avr/avr.c:1202
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1342
+#: config/avr/avr.c:1213
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1355
+#: config/avr/avr.c:1226
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:1950 config/avr/avr.c:2638
+#: config/avr/avr.c:1813 config/avr/avr.c:2501
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:1989 config/avr/avr.c:2075 config/avr/avr.c:2124
-#: config/avr/avr.c:2152 config/avr/avr.c:2247 config/avr/avr.c:2416
-#: config/avr/avr.c:2677 config/avr/avr.c:2789
+#: config/avr/avr.c:1852 config/avr/avr.c:1938 config/avr/avr.c:1987
+#: config/avr/avr.c:2015 config/avr/avr.c:2110 config/avr/avr.c:2279
+#: config/avr/avr.c:2540 config/avr/avr.c:2652
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:2171 config/avr/avr.c:2332 config/avr/avr.c:2487
-#: config/avr/avr.c:2855
+#: config/avr/avr.c:2034 config/avr/avr.c:2195 config/avr/avr.c:2350
+#: config/avr/avr.c:2718
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:3085
+#: config/avr/avr.c:2948
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:3201 config/avr/avr.c:3621 config/avr/avr.c:3979
+#: config/avr/avr.c:3064 config/avr/avr.c:3484 config/avr/avr.c:3842
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/bfin/bfin.c:1593
+#: config/bfin/bfin.c:1644
#, c-format
msgid "invalid %%j value"
msgstr ""
-#: config/bfin/bfin.c:1786
+#: config/bfin/bfin.c:1837
#, c-format
msgid "invalid const_double operand"
msgstr ""
-#: config/cris/cris.c:504 c-typeck.c:5217 c-typeck.c:5233 c-typeck.c:5250
-#: final.c:3010 final.c:3012 gcc.c:4940 loop-iv.c:2967 loop-iv.c:2976
-#: rtl-error.c:105 toplev.c:610 tree-ssa-loop-niter.c:1882 cp/typeck.c:4743
-#: java/expr.c:411
+#: config/cris/cris.c:520 config/moxie/moxie.c:91 c-typeck.c:5415
+#: c-typeck.c:5431 c-typeck.c:5448 final.c:3090 final.c:3092 fold-const.c:996
+#: gcc.c:5219 loop-iv.c:2968 loop-iv.c:2977 rtl-error.c:105 toplev.c:625
+#: tree-ssa-loop-niter.c:1883 tree-vrp.c:5726 cp/typeck.c:4813 java/expr.c:411
#, gcc-internal-format
msgid "%s"
msgstr ""
-#: config/cris/cris.c:555
+#: config/cris/cris.c:571
msgid "unexpected index-type in cris_print_index"
msgstr ""
-#: config/cris/cris.c:572
+#: config/cris/cris.c:588
msgid "unexpected base-type in cris_print_base"
msgstr ""
-#: config/cris/cris.c:688
+#: config/cris/cris.c:704
msgid "invalid operand for 'b' modifier"
msgstr ""
-#: config/cris/cris.c:705
+#: config/cris/cris.c:721
msgid "invalid operand for 'o' modifier"
msgstr ""
-#: config/cris/cris.c:724
+#: config/cris/cris.c:740
msgid "invalid operand for 'O' modifier"
msgstr ""
-#: config/cris/cris.c:757
+#: config/cris/cris.c:773
msgid "invalid operand for 'p' modifier"
msgstr ""
-#: config/cris/cris.c:796
+#: config/cris/cris.c:812
msgid "invalid operand for 'z' modifier"
msgstr ""
-#: config/cris/cris.c:860 config/cris/cris.c:894
+#: config/cris/cris.c:876 config/cris/cris.c:910
msgid "invalid operand for 'H' modifier"
msgstr ""
-#: config/cris/cris.c:870
+#: config/cris/cris.c:886
msgid "bad register"
msgstr ""
-#: config/cris/cris.c:914
+#: config/cris/cris.c:930
msgid "invalid operand for 'e' modifier"
msgstr ""
-#: config/cris/cris.c:931
+#: config/cris/cris.c:947
msgid "invalid operand for 'm' modifier"
msgstr ""
-#: config/cris/cris.c:956
+#: config/cris/cris.c:972
msgid "invalid operand for 'A' modifier"
msgstr ""
-#: config/cris/cris.c:979
+#: config/cris/cris.c:995
msgid "invalid operand for 'D' modifier"
msgstr ""
-#: config/cris/cris.c:993
+#: config/cris/cris.c:1009
msgid "invalid operand for 'T' modifier"
msgstr ""
-#: config/cris/cris.c:1013
+#: config/cris/cris.c:1029 config/moxie/moxie.c:161
msgid "invalid operand modifier letter"
msgstr ""
-#: config/cris/cris.c:1070
+#: config/cris/cris.c:1086
msgid "unexpected multiplicative operand"
msgstr ""
-#: config/cris/cris.c:1090
+#: config/cris/cris.c:1106 config/moxie/moxie.c:186
msgid "unexpected operand"
msgstr ""
-#: config/cris/cris.c:1123 config/cris/cris.c:1133
+#: config/cris/cris.c:1139 config/cris/cris.c:1149
msgid "unrecognized address"
msgstr ""
-#: config/cris/cris.c:2231
+#: config/cris/cris.c:2257
msgid "unrecognized supposed constant"
msgstr ""
-#: config/cris/cris.c:2660 config/cris/cris.c:2724
+#: config/cris/cris.c:2686 config/cris/cris.c:2750
msgid "unexpected side-effects in address"
msgstr ""
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
-#: config/cris/cris.c:3561
+#: config/cris/cris.c:3587
msgid "Unidentifiable call op"
msgstr ""
-#: config/cris/cris.c:3613
+#: config/cris/cris.c:3639
#, c-format
msgid "PIC register isn't set up"
msgstr ""
-#: config/fr30/fr30.c:464
+#: config/fr30/fr30.c:481
#, c-format
msgid "fr30_print_operand_address: unhandled address"
msgstr ""
-#: config/fr30/fr30.c:488
+#: config/fr30/fr30.c:505
#, c-format
msgid "fr30_print_operand: unrecognized %%p code"
msgstr ""
-#: config/fr30/fr30.c:508
+#: config/fr30/fr30.c:525
#, c-format
msgid "fr30_print_operand: unrecognized %%b code"
msgstr ""
-#: config/fr30/fr30.c:529
+#: config/fr30/fr30.c:546
#, c-format
msgid "fr30_print_operand: unrecognized %%B code"
msgstr ""
-#: config/fr30/fr30.c:537
+#: config/fr30/fr30.c:554
#, c-format
msgid "fr30_print_operand: invalid operand to %%A code"
msgstr ""
-#: config/fr30/fr30.c:554
+#: config/fr30/fr30.c:571
#, c-format
msgid "fr30_print_operand: invalid %%x code"
msgstr ""
-#: config/fr30/fr30.c:561
+#: config/fr30/fr30.c:578
#, c-format
msgid "fr30_print_operand: invalid %%F code"
msgstr ""
-#: config/fr30/fr30.c:578
+#: config/fr30/fr30.c:595
#, c-format
msgid "fr30_print_operand: unknown code"
msgstr ""
-#: config/fr30/fr30.c:606 config/fr30/fr30.c:615 config/fr30/fr30.c:626
-#: config/fr30/fr30.c:639
+#: config/fr30/fr30.c:623 config/fr30/fr30.c:632 config/fr30/fr30.c:643
+#: config/fr30/fr30.c:656
#, c-format
msgid "fr30_print_operand: unhandled MEM"
msgstr ""
-#: config/frv/frv.c:2589
+#: config/frv/frv.c:2592
msgid "bad insn to frv_print_operand_address:"
msgstr ""
-#: config/frv/frv.c:2600
+#: config/frv/frv.c:2603
msgid "bad register to frv_print_operand_memory_reference_reg:"
msgstr ""
-#: config/frv/frv.c:2639 config/frv/frv.c:2649 config/frv/frv.c:2658
-#: config/frv/frv.c:2679 config/frv/frv.c:2684
+#: config/frv/frv.c:2642 config/frv/frv.c:2652 config/frv/frv.c:2661
+#: config/frv/frv.c:2682 config/frv/frv.c:2687
msgid "bad insn to frv_print_operand_memory_reference:"
msgstr ""
-#: config/frv/frv.c:2770
+#: config/frv/frv.c:2773
#, c-format
msgid "bad condition code"
msgstr ""
-#: config/frv/frv.c:2845
+#: config/frv/frv.c:2848
msgid "bad insn in frv_print_operand, bad const_double"
msgstr ""
-#: config/frv/frv.c:2906
+#: config/frv/frv.c:2909
msgid "bad insn to frv_print_operand, 'e' modifier:"
msgstr ""
-#: config/frv/frv.c:2914
+#: config/frv/frv.c:2917
msgid "bad insn to frv_print_operand, 'F' modifier:"
msgstr ""
-#: config/frv/frv.c:2930
+#: config/frv/frv.c:2933
msgid "bad insn to frv_print_operand, 'f' modifier:"
msgstr ""
-#: config/frv/frv.c:2944
+#: config/frv/frv.c:2947
msgid "bad insn to frv_print_operand, 'g' modifier:"
msgstr ""
-#: config/frv/frv.c:2992
+#: config/frv/frv.c:2995
msgid "bad insn to frv_print_operand, 'L' modifier:"
msgstr ""
-#: config/frv/frv.c:3005
+#: config/frv/frv.c:3008
msgid "bad insn to frv_print_operand, 'M/N' modifier:"
msgstr ""
-#: config/frv/frv.c:3026
+#: config/frv/frv.c:3029
msgid "bad insn to frv_print_operand, 'O' modifier:"
msgstr ""
-#: config/frv/frv.c:3044
+#: config/frv/frv.c:3047
msgid "bad insn to frv_print_operand, P modifier:"
msgstr ""
-#: config/frv/frv.c:3064
+#: config/frv/frv.c:3067
msgid "bad insn in frv_print_operand, z case"
msgstr ""
-#: config/frv/frv.c:3095
+#: config/frv/frv.c:3098
msgid "bad insn in frv_print_operand, 0 case"
msgstr ""
-#: config/frv/frv.c:3100
+#: config/frv/frv.c:3103
msgid "frv_print_operand: unknown code"
msgstr ""
-#: config/frv/frv.c:4469
+#: config/frv/frv.c:4456
msgid "bad output_move_single operand"
msgstr ""
-#: config/frv/frv.c:4596
+#: config/frv/frv.c:4583
msgid "bad output_move_double operand"
msgstr ""
-#: config/frv/frv.c:4738
+#: config/frv/frv.c:4725
msgid "bad output_condmove_single operand"
msgstr ""
@@ -3134,61 +3260,61 @@ msgstr ""
msgid " (frv)"
msgstr ""
-#: config/i386/i386.c:10366
+#: config/i386/i386.c:10758
#, c-format
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:10980 config/i386/i386.c:11055
+#: config/i386/i386.c:11370 config/i386/i386.c:11445
#, c-format
msgid "invalid operand size for operand code '%c'"
msgstr ""
-#: config/i386/i386.c:11050
+#: config/i386/i386.c:11440
#, c-format
msgid "invalid operand type used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:11130 config/i386/i386.c:11169 config/i386/i386.c:11343
+#: config/i386/i386.c:11520 config/i386/i386.c:11559
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:11194
+#: config/i386/i386.c:11584
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr ""
-#: config/i386/i386.c:11204
+#: config/i386/i386.c:11594
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr ""
-#: config/i386/i386.c:11222
+#: config/i386/i386.c:11612
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:11232
+#: config/i386/i386.c:11622
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr ""
-#: config/i386/i386.c:11357
+#: config/i386/i386.c:11692
#, c-format
msgid "invalid operand code '%c'"
msgstr ""
-#: config/i386/i386.c:11406
+#: config/i386/i386.c:11741
#, c-format
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:19388
+#: config/i386/i386.c:19309
msgid "unknown insn mode"
msgstr ""
@@ -3209,195 +3335,201 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/ia64/ia64.c:4647
+#: config/ia64/ia64.c:4860
#, c-format
msgid "invalid %%G mode"
msgstr ""
-#: config/ia64/ia64.c:4817
+#: config/ia64/ia64.c:5030
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:10495
+#: config/ia64/ia64.c:10748
msgid "invalid conversion from %<__fpreg%>"
msgstr ""
-#: config/ia64/ia64.c:10498
+#: config/ia64/ia64.c:10751
msgid "invalid conversion to %<__fpreg%>"
msgstr ""
-#: config/ia64/ia64.c:10511 config/ia64/ia64.c:10522
+#: config/ia64/ia64.c:10764 config/ia64/ia64.c:10775
msgid "invalid operation on %<__fpreg%>"
msgstr ""
-#: config/iq2000/iq2000.c:3137
+#: config/iq2000/iq2000.c:3130
#, c-format
msgid "invalid %%P operand"
msgstr ""
-#: config/iq2000/iq2000.c:3145 config/rs6000/rs6000.c:12187
+#: config/iq2000/iq2000.c:3138 config/rs6000/rs6000.c:14478
#, c-format
msgid "invalid %%p value"
msgstr ""
-#: config/iq2000/iq2000.c:3201
+#: config/iq2000/iq2000.c:3194
#, c-format
msgid "invalid use of %%d, %%x, or %%X"
msgstr ""
-#: config/m32r/m32r.c:1790
+#: config/m32r/m32r.c:1950
#, c-format
msgid "invalid operand to %%s code"
msgstr ""
-#: config/m32r/m32r.c:1797
+#: config/m32r/m32r.c:1957
#, c-format
msgid "invalid operand to %%p code"
msgstr ""
-#: config/m32r/m32r.c:1852
+#: config/m32r/m32r.c:2012
msgid "bad insn for 'A'"
msgstr ""
-#: config/m32r/m32r.c:1899
+#: config/m32r/m32r.c:2059
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr ""
-#: config/m32r/m32r.c:1922
+#: config/m32r/m32r.c:2082
#, c-format
msgid "invalid operand to %%N code"
msgstr ""
-#: config/m32r/m32r.c:1955
+#: config/m32r/m32r.c:2115
msgid "pre-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:1962
+#: config/m32r/m32r.c:2122
msgid "pre-decrement address is not a register"
msgstr ""
-#: config/m32r/m32r.c:1969
+#: config/m32r/m32r.c:2129
msgid "post-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2045 config/m32r/m32r.c:2059
-#: config/rs6000/rs6000.c:20957
+#: config/m32r/m32r.c:2205 config/m32r/m32r.c:2219
+#: config/rs6000/rs6000.c:23575
msgid "bad address"
msgstr ""
-#: config/m32r/m32r.c:2064
+#: config/m32r/m32r.c:2224
msgid "lo_sum not of register"
msgstr ""
#. !!!! SCz wrong here.
-#: config/m68hc11/m68hc11.c:3181 config/m68hc11/m68hc11.c:3559
+#: config/m68hc11/m68hc11.c:3204 config/m68hc11/m68hc11.c:3582
msgid "move insn not handled"
msgstr ""
-#: config/m68hc11/m68hc11.c:3405 config/m68hc11/m68hc11.c:3489
-#: config/m68hc11/m68hc11.c:3762
+#: config/m68hc11/m68hc11.c:3428 config/m68hc11/m68hc11.c:3512
+#: config/m68hc11/m68hc11.c:3785
msgid "invalid register in the move instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3439
+#: config/m68hc11/m68hc11.c:3462
msgid "invalid operand in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3736
+#: config/m68hc11/m68hc11.c:3759
msgid "invalid register in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3769
+#: config/m68hc11/m68hc11.c:3792
msgid "operand 1 must be a hard register"
msgstr ""
-#: config/m68hc11/m68hc11.c:3783
+#: config/m68hc11/m68hc11.c:3806
msgid "invalid rotate insn"
msgstr ""
-#: config/m68hc11/m68hc11.c:4207
+#: config/m68hc11/m68hc11.c:4234
msgid "registers IX, IY and Z used in the same INSN"
msgstr ""
-#: config/m68hc11/m68hc11.c:4540 config/m68hc11/m68hc11.c:4840
+#: config/m68hc11/m68hc11.c:4567 config/m68hc11/m68hc11.c:4867
msgid "cannot do z-register replacement"
msgstr ""
-#: config/m68hc11/m68hc11.c:4903
+#: config/m68hc11/m68hc11.c:4930
msgid "invalid Z register replacement for insn"
msgstr ""
-#: config/mips/mips.c:7131 config/mips/mips.c:7152 config/mips/mips.c:7264
+#: config/mep/mep.c:3414
+#, c-format
+msgid "invalid %%L code"
+msgstr ""
+
+#: config/mips/mips.c:7370 config/mips/mips.c:7391 config/mips/mips.c:7503
#, c-format
msgid "'%%%c' is not a valid operand prefix"
msgstr ""
-#: config/mips/mips.c:7201 config/mips/mips.c:7208 config/mips/mips.c:7215
-#: config/mips/mips.c:7222 config/mips/mips.c:7282
+#: config/mips/mips.c:7440 config/mips/mips.c:7447 config/mips/mips.c:7454
+#: config/mips/mips.c:7461 config/mips/mips.c:7521 config/mips/mips.c:7535
+#: config/mips/mips.c:7548 config/mips/mips.c:7557
#, c-format
msgid "invalid use of '%%%c'"
msgstr ""
-#: config/mips/mips.c:7534
+#: config/mips/mips.c:7779
msgid "mips_debugger_offset called with non stack/frame/arg pointer"
msgstr ""
-#: config/mmix/mmix.c:1484 config/mmix/mmix.c:1614
+#: config/mmix/mmix.c:1494 config/mmix/mmix.c:1624
msgid "MMIX Internal: Expected a CONST_INT, not this"
msgstr ""
-#: config/mmix/mmix.c:1563
+#: config/mmix/mmix.c:1573
msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
msgstr ""
-#: config/mmix/mmix.c:1582
+#: config/mmix/mmix.c:1592
msgid "MMIX Internal: Expected a register, not this"
msgstr ""
-#: config/mmix/mmix.c:1592
+#: config/mmix/mmix.c:1602
msgid "MMIX Internal: Expected a constant, not this"
msgstr ""
#. We need the original here.
-#: config/mmix/mmix.c:1676
+#: config/mmix/mmix.c:1686
msgid "MMIX Internal: Cannot decode this operand"
msgstr ""
-#: config/mmix/mmix.c:1733
+#: config/mmix/mmix.c:1743
msgid "MMIX Internal: This is not a recognized address"
msgstr ""
-#: config/mmix/mmix.c:2666
+#: config/mmix/mmix.c:2620
msgid "MMIX Internal: Trying to output invalidly reversed condition:"
msgstr ""
-#: config/mmix/mmix.c:2673
+#: config/mmix/mmix.c:2627
msgid "MMIX Internal: What's the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:2677
+#: config/mmix/mmix.c:2631
msgid "MMIX Internal: What is the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:2741
+#: config/mmix/mmix.c:2695
msgid "MMIX Internal: This is not a constant:"
msgstr ""
-#: config/picochip/picochip.c:2406
+#: config/picochip/picochip.c:2410
msgid "picochip_print_memory_address - Operand isn't memory based"
msgstr ""
-#: config/picochip/picochip.c:2665
+#: config/picochip/picochip.c:2669
msgid "Unknown mode in print_operand (CONST_DOUBLE) :"
msgstr ""
-#: config/picochip/picochip.c:2711 config/picochip/picochip.c:2743
+#: config/picochip/picochip.c:2715 config/picochip/picochip.c:2747
msgid "Bad address, not (reg+disp):"
msgstr ""
-#: config/picochip/picochip.c:2757
+#: config/picochip/picochip.c:2761
msgid "Bad address, not register:"
msgstr ""
@@ -3411,407 +3543,451 @@ msgstr ""
msgid "Try running '%s' in the shell to raise its limit.\n"
msgstr ""
-#: config/rs6000/rs6000.c:12014
+#: config/rs6000/rs6000.c:2391
+msgid "-mvsx requires hardware floating point"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2396
+msgid "-mvsx and -mpaired are incompatible"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2401
+msgid "-mvsx used with little endian code"
+msgstr ""
+
+#: config/rs6000/rs6000.c:2403
+msgid "-mvsx needs indexed addressing"
+msgstr ""
+
+#: config/rs6000/rs6000.c:6610
+msgid "bad move"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14277
+#, c-format
+msgid "invalid %%c value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14305
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:12023
+#: config/rs6000/rs6000.c:14314
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:12032
+#: config/rs6000/rs6000.c:14323
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:12067
+#: config/rs6000/rs6000.c:14358
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:12077
+#: config/rs6000/rs6000.c:14368
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:12087
+#: config/rs6000/rs6000.c:14378
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:12107 config/xtensa/xtensa.c:2228
+#: config/rs6000/rs6000.c:14398 config/xtensa/xtensa.c:2239
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:12177
+#: config/rs6000/rs6000.c:14468
#, c-format
msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:12224
+#: config/rs6000/rs6000.c:14515
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:12268
+#: config/rs6000/rs6000.c:14559
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/rs6000/rs6000.c:12308
+#: config/rs6000/rs6000.c:14599
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:12318
+#: config/rs6000/rs6000.c:14609
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:12327 config/xtensa/xtensa.c:2198
+#: config/rs6000/rs6000.c:14618 config/xtensa/xtensa.c:2209
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:12548
+#: config/rs6000/rs6000.c:14717 config/xtensa/xtensa.c:2260
+#, c-format
+msgid "invalid %%x value"
+msgstr ""
+
+#: config/rs6000/rs6000.c:14862
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr ""
-#: config/rs6000/rs6000.c:22826
+#: config/rs6000/rs6000.c:25542
msgid "AltiVec argument passed to unprototyped function"
msgstr ""
-#: config/s390/s390.c:4934
+#: config/s390/s390.c:4944
#, c-format
msgid "cannot decompose address"
msgstr ""
-#: config/s390/s390.c:5147
+#: config/s390/s390.c:5167
msgid "UNKNOWN in print_operand !?"
msgstr ""
-#: config/score/score3.c:1262 config/score/score3.c:1282
-#: config/score/score7.c:1253
+#: config/score/score3.c:1282 config/score/score3.c:1302
+#: config/score/score7.c:1270
#, c-format
msgid "invalid operand for code: '%c'"
msgstr ""
-#: config/sh/sh.c:785
+#: config/sh/sh.c:1114
#, c-format
msgid "invalid operand to %%R"
msgstr ""
-#: config/sh/sh.c:812
+#: config/sh/sh.c:1141
#, c-format
msgid "invalid operand to %%S"
msgstr ""
-#: config/sh/sh.c:8384
+#: config/sh/sh.c:8877
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:8386
+#: config/sh/sh.c:8879
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:8388
+#: config/sh/sh.c:8881
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:6856 config/sparc/sparc.c:6862
+#: config/sparc/sparc.c:6992 config/sparc/sparc.c:6998
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:6932
+#: config/sparc/sparc.c:7068
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:6942
+#: config/sparc/sparc.c:7078
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:6981
+#: config/sparc/sparc.c:7117
#, c-format
msgid "invalid %%c operand"
msgstr ""
-#: config/sparc/sparc.c:7003
+#: config/sparc/sparc.c:7139
#, c-format
msgid "invalid %%d operand"
msgstr ""
-#: config/sparc/sparc.c:7020
+#: config/sparc/sparc.c:7156
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:7034
+#: config/sparc/sparc.c:7170
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:7088
+#: config/sparc/sparc.c:7224
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:7091
+#: config/sparc/sparc.c:7227
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr ""
-#: config/stormy16/stormy16.c:1746 config/stormy16/stormy16.c:1817
+#: config/stormy16/stormy16.c:1755 config/stormy16/stormy16.c:1826
#, c-format
msgid "'B' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1773
+#: config/stormy16/stormy16.c:1782
#, c-format
msgid "'B' operand has multiple bits set"
msgstr ""
-#: config/stormy16/stormy16.c:1799
+#: config/stormy16/stormy16.c:1808
#, c-format
msgid "'o' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1831
+#: config/stormy16/stormy16.c:1840
#, c-format
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/v850/v850.c:372
+#: config/v850/v850.c:400
msgid "const_double_split got a bad insn:"
msgstr ""
-#: config/v850/v850.c:936
+#: config/v850/v850.c:971
msgid "output_move_single:"
msgstr ""
-#: config/vax/vax.c:382
+#: config/vax/vax.c:399
#, c-format
msgid "symbol used with both base and indexed registers"
msgstr ""
-#: config/vax/vax.c:391
+#: config/vax/vax.c:408
#, c-format
msgid "symbol with offset used in PIC mode"
msgstr ""
-#: config/vax/vax.c:475
+#: config/vax/vax.c:494
#, c-format
msgid "symbol used as immediate operand"
msgstr ""
-#: config/vax/vax.c:1469
+#: config/vax/vax.c:1519
msgid "illegal operand detected"
msgstr ""
-#: config/xtensa/xtensa.c:696 config/xtensa/xtensa.c:728
-#: config/xtensa/xtensa.c:737
+#: config/xtensa/xtensa.c:705 config/xtensa/xtensa.c:737
+#: config/xtensa/xtensa.c:746
msgid "bad test"
msgstr ""
-#: config/xtensa/xtensa.c:2186
+#: config/xtensa/xtensa.c:2197
#, c-format
msgid "invalid %%D value"
msgstr ""
-#: config/xtensa/xtensa.c:2223
+#: config/xtensa/xtensa.c:2234
msgid "invalid mask"
msgstr ""
-#: config/xtensa/xtensa.c:2249
-#, c-format
-msgid "invalid %%x value"
-msgstr ""
-
-#: config/xtensa/xtensa.c:2256
+#: config/xtensa/xtensa.c:2267
#, c-format
msgid "invalid %%d value"
msgstr ""
-#: config/xtensa/xtensa.c:2277 config/xtensa/xtensa.c:2287
+#: config/xtensa/xtensa.c:2288 config/xtensa/xtensa.c:2298
#, c-format
msgid "invalid %%t/%%b value"
msgstr ""
-#: config/xtensa/xtensa.c:2329
+#: config/xtensa/xtensa.c:2340
msgid "invalid address"
msgstr ""
-#: config/xtensa/xtensa.c:2354
+#: config/xtensa/xtensa.c:2365
msgid "no register in address"
msgstr ""
-#: config/xtensa/xtensa.c:2362
+#: config/xtensa/xtensa.c:2373
msgid "address offset not a constant"
msgstr ""
-#: cp/call.c:2604
+#: cp/call.c:2773
msgid "candidates are:"
msgstr ""
-#: cp/call.c:6904
+#: cp/call.c:7256
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:6905
+#: cp/call.c:7257
msgid "candidate 2:"
msgstr ""
-#: cp/cxx-pretty-print.c:173 cp/error.c:916 objc/objc-act.c:7078
+#: cp/cxx-pretty-print.c:173 cp/error.c:943 objc/objc-act.c:7141
msgid "<unnamed>"
msgstr ""
-#: cp/cxx-pretty-print.c:2055
+#: cp/cxx-pretty-print.c:2056
msgid "template-parameter-"
msgstr ""
-#: cp/decl2.c:676
+#: cp/decl2.c:683
msgid "candidates are: %+#D"
msgstr ""
-#: cp/decl2.c:678
+#: cp/decl2.c:685
msgid "candidate is: %+#D"
msgstr ""
-#: cp/error.c:305
+#: cp/error.c:322
msgid "<missing>"
msgstr ""
-#: cp/error.c:346
+#: cp/error.c:363
msgid "<brace-enclosed initializer list>"
msgstr ""
-#: cp/error.c:348
+#: cp/error.c:365
msgid "<unresolved overloaded function type>"
msgstr ""
-#: cp/error.c:488
+#: cp/error.c:505
msgid "<type error>"
msgstr ""
-#: cp/error.c:587
+#: cp/error.c:604
#, c-format
msgid "<anonymous %s>"
msgstr ""
-#: cp/error.c:709
+#. A lambda's "type" is essentially its signature.
+#: cp/error.c:609
+msgid "<lambda"
+msgstr ""
+
+#: cp/error.c:735
msgid "<typeprefixerror>"
msgstr ""
-#: cp/error.c:819
+#: cp/error.c:846
#, c-format
msgid "(static initializers for %s)"
msgstr ""
-#: cp/error.c:821
+#: cp/error.c:848
#, c-format
msgid "(static destructors for %s)"
msgstr ""
-#: cp/error.c:891
+#: cp/error.c:918
msgid "vtable for "
msgstr ""
-#: cp/error.c:903
+#: cp/error.c:930
msgid "<return value> "
msgstr ""
-#: cp/error.c:1029
+#: cp/error.c:1056
msgid "<enumerator>"
msgstr ""
-#: cp/error.c:1069
+#: cp/error.c:1096
msgid "<declaration error>"
msgstr ""
-#: cp/error.c:1299
+#: cp/error.c:1336
msgid "with"
msgstr ""
-#: cp/error.c:1464 cp/error.c:1484
+#: cp/error.c:1504 cp/error.c:1524
msgid "<template parameter error>"
msgstr ""
-#: cp/error.c:1610
+#: cp/error.c:1650
msgid "<statement>"
msgstr ""
#. While waiting for caret diagnostics, avoid printing
#. __cxa_allocate_exception, __cxa_throw, and the like.
-#: cp/error.c:1639
+#: cp/error.c:1679
msgid "<throw-expression>"
msgstr ""
-#: cp/error.c:2085
+#: cp/error.c:2125
msgid "<unparsed>"
msgstr ""
-#: cp/error.c:2231
+#: cp/error.c:2271
msgid "<expression error>"
msgstr ""
-#: cp/error.c:2245
+#: cp/error.c:2285
msgid "<unknown operator>"
msgstr ""
-#: cp/error.c:2449
+#: cp/error.c:2492
msgid "<unknown>"
msgstr ""
-#: cp/error.c:2469
+#: cp/error.c:2512
msgid "{unknown}"
msgstr ""
-#: cp/error.c:2551
+#: cp/error.c:2594
msgid "At global scope:"
msgstr ""
-#: cp/error.c:2653
+#: cp/error.c:2700
#, c-format
msgid "In static member function %qs"
msgstr ""
-#: cp/error.c:2655
+#: cp/error.c:2702
#, c-format
msgid "In copy constructor %qs"
msgstr ""
-#: cp/error.c:2657
+#: cp/error.c:2704
#, c-format
msgid "In constructor %qs"
msgstr ""
-#: cp/error.c:2659
+#: cp/error.c:2706
#, c-format
msgid "In destructor %qs"
msgstr ""
-#: cp/error.c:2689
+#: cp/error.c:2708
+msgid "In lambda function"
+msgstr ""
+
+#: cp/error.c:2738
#, c-format
msgid "%s: In instantiation of %qs:\n"
msgstr ""
-#: cp/error.c:2713
+#: cp/error.c:2767
+#, c-format
+msgid "%s:%d:%d: instantiated from %qs\n"
+msgstr ""
+
+#: cp/error.c:2771
#, c-format
msgid "%s:%d: instantiated from %qs\n"
msgstr ""
-#: cp/error.c:2719
+#: cp/error.c:2776
+#, c-format
+msgid "%s:%d:%d: instantiated from here"
+msgstr ""
+
+#: cp/error.c:2779
#, c-format
msgid "%s:%d: instantiated from here"
msgstr ""
-#: cp/g++spec.c:254 java/jvspec.c:406
+#: cp/g++spec.c:266 java/jvspec.c:407
#, c-format
msgid "argument to '%s' missing\n"
msgstr ""
@@ -3849,73 +4025,68 @@ msgstr ""
msgid "Integer outside symmetric range implied by Standard Fortran at %L"
msgstr ""
-#: fortran/arith.c:1072 fortran/arith.c:1096
+#: fortran/arith.c:1151 fortran/arith.c:1173
#, no-c-format
msgid "Fortran 2003: Noninteger exponent in an initialization expression at %L"
msgstr ""
-#: fortran/arith.c:1080
+#: fortran/arith.c:1159
#, no-c-format
msgid "Raising a negative REAL at %L to a REAL power is prohibited"
msgstr ""
-#: fortran/arith.c:1564
+#: fortran/arith.c:1666
msgid "elemental binary operation"
msgstr ""
-#: fortran/arith.c:2143
+#: fortran/arith.c:2250
#, no-c-format
msgid "Arithmetic OK converting %s to %s at %L"
msgstr ""
-#: fortran/arith.c:2147
+#: fortran/arith.c:2254
#, no-c-format
msgid ""
"Arithmetic overflow converting %s to %s at %L. This check can be disabled "
"with the option -fno-range-check"
msgstr ""
-#: fortran/arith.c:2152
+#: fortran/arith.c:2259
#, no-c-format
msgid ""
"Arithmetic underflow converting %s to %s at %L. This check can be disabled "
"with the option -fno-range-check"
msgstr ""
-#: fortran/arith.c:2157
+#: fortran/arith.c:2264
#, no-c-format
msgid ""
"Arithmetic NaN converting %s to %s at %L. This check can be disabled with "
"the option -fno-range-check"
msgstr ""
-#: fortran/arith.c:2162
+#: fortran/arith.c:2269
#, no-c-format
msgid "Division by zero converting %s to %s at %L"
msgstr ""
-#: fortran/arith.c:2166
+#: fortran/arith.c:2273
#, no-c-format
msgid "Array operands are incommensurate converting %s to %s at %L"
msgstr ""
-#: fortran/arith.c:2170
+#: fortran/arith.c:2277
#, no-c-format
msgid ""
"Integer outside symmetric range implied by Standard Fortran converting %s to "
"%s at %L"
msgstr ""
-#: fortran/arith.c:2503
+#: fortran/arith.c:2628
#, no-c-format
msgid "The Hollerith constant at %L is too long to convert to %s"
msgstr ""
-#: fortran/arith.c:2662
-#, no-c-format
-msgid "Enumerator exceeds the C integer type at %C"
-msgstr ""
-
#: fortran/array.c:90
#, no-c-format
msgid "Expected array subscript at %C"
@@ -3981,47 +4152,47 @@ msgstr ""
msgid "Fortran 2008: Array specification at %C with more than 7 dimensions"
msgstr ""
-#: fortran/array.c:644
+#: fortran/array.c:645
#, no-c-format
msgid "duplicated initializer"
msgstr ""
-#: fortran/array.c:736
+#: fortran/array.c:737
#, no-c-format
msgid "DO-iterator '%s' at %L is inside iterator of the same name"
msgstr ""
-#: fortran/array.c:838 fortran/array.c:980
+#: fortran/array.c:839 fortran/array.c:981
#, no-c-format
msgid "Syntax error in array constructor at %C"
msgstr ""
-#: fortran/array.c:895
+#: fortran/array.c:896
#, no-c-format
msgid "Fortran 2003: [...] style array constructors at %C"
msgstr ""
-#: fortran/array.c:915
+#: fortran/array.c:916
#, no-c-format
msgid "Fortran 2003: Array constructor including type specification at %C"
msgstr ""
-#: fortran/array.c:930
+#: fortran/array.c:931
#, no-c-format
msgid "Empty array constructor at %C is not allowed"
msgstr ""
-#: fortran/array.c:1027
+#: fortran/array.c:1028
#, no-c-format
msgid "Element in %s array constructor at %L is %s"
msgstr ""
-#: fortran/array.c:1364
+#: fortran/array.c:1365
#, no-c-format
msgid "Iterator step at %L cannot be zero"
msgstr ""
-#: fortran/array.c:1650
+#: fortran/array.c:1649
#, no-c-format
msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L"
msgstr ""
@@ -4041,7 +4212,7 @@ msgstr ""
msgid "'%s' argument of '%s' intrinsic at %L must be a numeric type"
msgstr ""
-#: fortran/check.c:101 fortran/check.c:830 fortran/check.c:840
+#: fortran/check.c:101 fortran/check.c:855 fortran/check.c:865
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or REAL"
msgstr ""
@@ -4107,290 +4278,359 @@ msgstr ""
msgid "'%s' argument of '%s' intrinsic at %L must be a variable"
msgstr ""
-#: fortran/check.c:361
+#: fortran/check.c:364
#, no-c-format
msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index"
msgstr ""
-#: fortran/check.c:431
+#: fortran/check.c:434
#, no-c-format
msgid "Unequal character lengths (%ld/%ld) in %s at %L"
msgstr ""
-#: fortran/check.c:537 fortran/check.c:2039 fortran/check.c:2054
+#: fortran/check.c:543 fortran/check.c:2141 fortran/check.c:2153
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
msgstr ""
-#: fortran/check.c:561 fortran/check.c:3908
+#: fortran/check.c:564 fortran/check.c:4236
#, no-c-format
msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type"
msgstr ""
-#: fortran/check.c:570 fortran/check.c:1202 fortran/check.c:1345
-#: fortran/check.c:1419 fortran/check.c:1708
+#: fortran/check.c:573 fortran/check.c:1316 fortran/check.c:1459
+#: fortran/check.c:1533 fortran/check.c:1819
#, no-c-format
msgid "Extension: Different type kinds at %L"
msgstr ""
-#: fortran/check.c:610 fortran/check.c:2123
+#: fortran/check.c:613 fortran/check.c:2222
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER"
msgstr ""
-#: fortran/check.c:630
+#: fortran/check.c:633
#, no-c-format
msgid ""
"'%s' argument of '%s' intrinsic at %L must be a pointer or target VARIABLE "
"or FUNCTION"
msgstr ""
-#: fortran/check.c:638
+#: fortran/check.c:641
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER or a TARGET"
msgstr ""
-#: fortran/check.c:654
+#: fortran/check.c:657
#, no-c-format
msgid ""
"Array section with a vector subscript at %L shall not be the target of a "
"pointer"
msgstr ""
-#: fortran/check.c:665
+#: fortran/check.c:668
#, no-c-format
msgid ""
"NULL pointer at %L is not permitted as actual argument of '%s' intrinsic "
"function"
msgstr ""
-#: fortran/check.c:811 fortran/check.c:935
+#: fortran/check.c:827 fortran/check.c:994
#, no-c-format
msgid ""
"'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPLEX"
msgstr ""
-#: fortran/check.c:861 fortran/check.c:1264 fortran/check.c:1367
-#: fortran/check.c:1526 fortran/check.c:1543 fortran/check.c:2427
-#: fortran/check.c:2569 fortran/check.c:2912 fortran/check.c:2973
+#: fortran/check.c:835 fortran/check.c:1002
#, no-c-format
-msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L"
+msgid ""
+"'%s' argument of '%s' intrinsic at %L must have a type of either REAL or "
+"INTEGER"
msgstr ""
-#: fortran/check.c:886
+#: fortran/check.c:888 fortran/check.c:1378 fortran/check.c:1481
+#: fortran/check.c:1637 fortran/check.c:1654 fortran/check.c:2710
+#: fortran/check.c:2849 fortran/check.c:3201 fortran/check.c:3301
#, no-c-format
-msgid "SHIFT argument at %L of CSHIFT must have rank %d or be a scalar"
+msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L"
msgstr ""
-#: fortran/check.c:984 fortran/check.c:1804 fortran/check.c:1812
+#: fortran/check.c:935 fortran/check.c:1141
#, no-c-format
-msgid "'%s' argument of '%s' intrinsic at %L must be numeric or LOGICAL"
+msgid ""
+"'%s' argument of '%s' intrinsic at %L has invalid shape in dimension %d (%ld/"
+"%ld)"
msgstr ""
-#: fortran/check.c:998
+#: fortran/check.c:950 fortran/check.c:1156 fortran/check.c:1184
#, no-c-format
msgid ""
-"Different shape for arguments '%s' and '%s' at %L for intrinsic 'dot_product'"
+"'%s' argument of intrinsic '%s' at %L of must have rank %d or be a scalar"
msgstr ""
-#: fortran/check.c:1017 fortran/check.c:1025
+#: fortran/check.c:1051 fortran/check.c:1913 fortran/check.c:1921
#, no-c-format
-msgid "'%s' argument of '%s' intrinsic at %L must be default real"
+msgid "'%s' argument of '%s' intrinsic at %L must be numeric or LOGICAL"
msgstr ""
-#: fortran/check.c:1052
+#: fortran/check.c:1065
#, no-c-format
-msgid "SHIFT argument at %L of EOSHIFT must have rank %d or be a scalar"
+msgid ""
+"Different shape for arguments '%s' and '%s' at %L for intrinsic 'dot_product'"
msgstr ""
-#: fortran/check.c:1072
+#: fortran/check.c:1084 fortran/check.c:1092
#, no-c-format
-msgid "BOUNDARY argument at %L of EOSHIFT must have rank %d or be a scalar"
+msgid "'%s' argument of '%s' intrinsic at %L must be default real"
msgstr ""
-#: fortran/check.c:1083
+#: fortran/check.c:1175 fortran/check.c:2028 fortran/check.c:2082
+#, c-format
+msgid "arguments '%s' and '%s' for intrinsic %s"
+msgstr ""
+
+#: fortran/check.c:1248
#, no-c-format
-msgid ""
-"Different shape in dimension %d for SHIFT and BOUNDARY arguments of EOSHIFT "
-"at %L"
+msgid "Fortran 2008: COMPLEX argument '%s' argument of '%s' intrinsic at %L"
msgstr ""
-#: fortran/check.c:1315
+#: fortran/check.c:1429
#, no-c-format
msgid "Argument of %s at %L must be of length one"
msgstr ""
-#: fortran/check.c:1374
+#: fortran/check.c:1488
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'"
msgstr ""
-#: fortran/check.c:1499
+#: fortran/check.c:1613
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type"
msgstr ""
-#: fortran/check.c:1681
+#: fortran/check.c:1792
#, no-c-format
msgid "Intrinsic '%s' at %L must have at least two arguments"
msgstr ""
-#: fortran/check.c:1714
+#: fortran/check.c:1825
#, no-c-format
msgid "'a%d' argument of '%s' intrinsic at %L must be %s(%d)"
msgstr ""
-#: fortran/check.c:1747
+#: fortran/check.c:1834
+#, c-format
+msgid "arguments 'a%d' and 'a%d' for intrinsic '%s'"
+msgstr ""
+
+#: fortran/check.c:1856
#, no-c-format
msgid "Fortran 2003: '%s' intrinsic with CHARACTER argument at %L"
msgstr ""
-#: fortran/check.c:1754
+#: fortran/check.c:1863
#, no-c-format
msgid ""
"'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER"
msgstr ""
-#: fortran/check.c:1821
+#: fortran/check.c:1930
#, no-c-format
msgid "Argument types of '%s' intrinsic at %L must match (%s/%s)"
msgstr ""
-#: fortran/check.c:1835
+#: fortran/check.c:1944
#, no-c-format
msgid ""
"Different shape on dimension 1 for arguments '%s' and '%s' at %L for "
"intrinsic matmul"
msgstr ""
-#: fortran/check.c:1854
+#: fortran/check.c:1963
#, no-c-format
msgid ""
"Different shape on dimension 2 for argument '%s' and dimension 1 for "
"argument '%s' at %L for intrinsic matmul"
msgstr ""
-#: fortran/check.c:1863
+#: fortran/check.c:1972
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of rank 1 or 2"
msgstr ""
-#: fortran/check.c:2065
+#: fortran/check.c:2164
#, no-c-format
msgid ""
"the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %"
"d/%d"
msgstr ""
-#: fortran/check.c:2074
+#: fortran/check.c:2173
#, no-c-format
msgid ""
"the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same kind "
"%d/%d"
msgstr ""
-#: fortran/check.c:2170
+#: fortran/check.c:2242 fortran/intrinsic.c:3639
+#, c-format
+msgid "arguments '%s' and '%s' for intrinsic '%s'"
+msgstr ""
+
+#: fortran/check.c:2293 fortran/check.c:3248
+#, no-c-format
+msgid ""
+"'%s' argument of '%s' intrinsic at %L must provide at least as many elements "
+"as there are .TRUE. values in '%s' (%ld/%d)"
+msgstr ""
+
+#: fortran/check.c:2318
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of type REAL or COMPLEX"
msgstr ""
-#: fortran/check.c:2191
+#: fortran/check.c:2339
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of a dummy variable"
msgstr ""
-#: fortran/check.c:2199
+#: fortran/check.c:2347
#, no-c-format
msgid ""
"'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable"
msgstr ""
-#: fortran/check.c:2215
+#: fortran/check.c:2363
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must not be a subobject of '%s'"
msgstr ""
-#: fortran/check.c:2340
+#: fortran/check.c:2488
#, no-c-format
msgid ""
"'shape' argument of 'reshape' intrinsic at %L must be an array of constant "
"size"
msgstr ""
-#: fortran/check.c:2350
+#: fortran/check.c:2498
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L is empty"
+msgstr ""
+
+#: fortran/check.c:2505
#, no-c-format
msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements"
msgstr ""
-#: fortran/check.c:2388
+#: fortran/check.c:2525
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L has negative element (%d)"
+msgstr ""
+
+#: fortran/check.c:2566
+#, no-c-format
+msgid ""
+"'%s' argument of '%s' intrinsic at %L has wrong number of elements (%d/%d)"
+msgstr ""
+
+#: fortran/check.c:2587
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L has out-of-range dimension (%d)"
+msgstr ""
+
+#: fortran/check.c:2596
+#, no-c-format
+msgid ""
+"'%s' argument of '%s' intrinsic at %L has invalid permutation of dimensions "
+"(dimension '%d' duplicated)"
+msgstr ""
+
+#: fortran/check.c:2631
#, no-c-format
msgid ""
"Without padding, there are not enough elements in the intrinsic RESHAPE "
"source at %L to match the shape"
msgstr ""
-#: fortran/check.c:2489
+#: fortran/check.c:2649 fortran/check.c:2665
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of a derived type"
+msgstr ""
+
+#: fortran/check.c:2657 fortran/check.c:2673
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L must be of an extensible type"
+msgstr ""
+
+#: fortran/check.c:2772
#, no-c-format
msgid "Missing arguments to %s intrinsic at %L"
msgstr ""
-#: fortran/check.c:2530
+#: fortran/check.c:2813
#, no-c-format
msgid ""
"'source' argument of 'shape' intrinsic at %L must not be an assumed size "
"array"
msgstr ""
-#: fortran/check.c:2604
+#: fortran/check.c:2884
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d"
msgstr ""
-#: fortran/check.c:2864
+#: fortran/check.c:2903
+#, no-c-format
+msgid "'%s' argument of '%s' intrinsic at %L is not a valid dimension index"
+msgstr ""
+
+#: fortran/check.c:3156
#, no-c-format
msgid "'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s"
msgstr ""
-#: fortran/check.c:2938
+#: fortran/check.c:3262
#, no-c-format
msgid ""
-"FIELD argument at %L of UNPACK must have the same rank as MASK or be a scalar"
+"'%s' argument of '%s' intrinsic at %L must have the same rank as '%s' or be "
+"a scalar"
msgstr ""
-#: fortran/check.c:2949
+#: fortran/check.c:3275
#, no-c-format
msgid ""
-"Different shape in dimension %d for MASK and FIELD arguments of UNPACK at %L"
+"'%s' and '%s' arguments of '%s' intrinsic at %L must have identical shape."
msgstr ""
-#: fortran/check.c:3190 fortran/check.c:3222
+#: fortran/check.c:3518 fortran/check.c:3550
#, no-c-format
msgid "Size of '%s' argument of '%s' intrinsic at %L too small (%i/%i)"
msgstr ""
-#: fortran/check.c:3230
+#: fortran/check.c:3558
#, no-c-format
msgid "Too many arguments to %s at %L"
msgstr ""
-#: fortran/check.c:3342 fortran/check.c:3819 fortran/check.c:3843
+#: fortran/check.c:3670 fortran/check.c:4147 fortran/check.c:4171
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or PROCEDURE"
msgstr ""
-#: fortran/check.c:3525
+#: fortran/check.c:3853
#, no-c-format
msgid ""
"'%s' argument of '%s' intrinsic at %L must be of a kind not wider than the "
"default kind (%d)"
msgstr ""
-#: fortran/check.c:3892 fortran/check.c:3900
+#: fortran/check.c:4220 fortran/check.c:4228
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL"
msgstr ""
-#: fortran/cpp.c:381 c-opts.c:902
+#: fortran/cpp.c:381 c-opts.c:909
#, gcc-internal-format
msgid "output filename specified twice"
msgstr ""
@@ -4440,497 +4680,502 @@ msgstr ""
msgid "Extension: re-initialization of '%s' at %L"
msgstr ""
-#: fortran/decl.c:258
+#: fortran/decl.c:259
#, no-c-format
msgid "Host associated variable '%s' may not be in the DATA statement at %C"
msgstr ""
-#: fortran/decl.c:265
+#: fortran/decl.c:266
#, no-c-format
msgid ""
"Extension: initialization of common block variable '%s' in DATA statement at "
"%C"
msgstr ""
-#: fortran/decl.c:370
+#: fortran/decl.c:371
#, no-c-format
msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C"
msgstr ""
-#: fortran/decl.c:395
+#: fortran/decl.c:396
#, no-c-format
msgid "Invalid initializer %s in Data statement at %C"
msgstr ""
-#: fortran/decl.c:498
+#: fortran/decl.c:499
#, no-c-format
msgid "Initialization at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:557
+#: fortran/decl.c:558
#, no-c-format
msgid "DATA statement at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:586
+#: fortran/decl.c:587
#, no-c-format
msgid "Bad INTENT specification at %C"
msgstr ""
-#: fortran/decl.c:633
+#: fortran/decl.c:634
#, no-c-format
msgid "Conflict in attributes of function argument at %C"
msgstr ""
-#: fortran/decl.c:686
+#: fortran/decl.c:658
+#, no-c-format
+msgid "Obsolescent feature: Old-style character length at %C"
+msgstr ""
+
+#: fortran/decl.c:690
#, no-c-format
msgid "Syntax error in character length specification at %C"
msgstr ""
-#: fortran/decl.c:805
+#: fortran/decl.c:813
#, no-c-format
msgid "Procedure '%s' at %C is already defined at %L"
msgstr ""
-#: fortran/decl.c:813
+#: fortran/decl.c:821
#, no-c-format
msgid "Name '%s' at %C is already defined as a generic interface at %L"
msgstr ""
-#: fortran/decl.c:826
+#: fortran/decl.c:834
#, no-c-format
msgid ""
"Procedure '%s' at %C has an explicit interface and must not have attributes "
"declared at %L"
msgstr ""
-#: fortran/decl.c:898
+#: fortran/decl.c:906
#, no-c-format
msgid ""
"Procedure '%s' at %L must have the BIND(C) attribute to be C interoperable"
msgstr ""
-#: fortran/decl.c:928
+#: fortran/decl.c:936
#, no-c-format
msgid ""
"Type '%s' at %L is a parameter to the BIND(C) procedure '%s' but is not C "
"interoperable because derived type '%s' is not C interoperable"
msgstr ""
-#: fortran/decl.c:935
+#: fortran/decl.c:943
#, no-c-format
msgid ""
"Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not "
"be C interoperable"
msgstr ""
-#: fortran/decl.c:950
+#: fortran/decl.c:958
#, no-c-format
msgid ""
"Character argument '%s' at %L must be length 1 because procedure '%s' is BIND"
"(C)"
msgstr ""
-#: fortran/decl.c:964
+#: fortran/decl.c:972
#, no-c-format
msgid ""
"Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure "
"'%s' is BIND(C)"
msgstr ""
-#: fortran/decl.c:973
+#: fortran/decl.c:981
#, no-c-format
msgid ""
"Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' "
"is BIND(C)"
msgstr ""
-#: fortran/decl.c:982
+#: fortran/decl.c:990
#, no-c-format
msgid ""
"Variable '%s' at %L cannot have the OPTIONAL attribute because procedure '%"
"s' is BIND(C)"
msgstr ""
-#: fortran/decl.c:995
+#: fortran/decl.c:1003
#, no-c-format
msgid ""
"Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"at %L because the procedure is BIND(C)"
msgstr ""
-#: fortran/decl.c:1005
+#: fortran/decl.c:1013
#, no-c-format
msgid ""
"Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"at %L because the procedure is BIND(C)"
msgstr ""
-#: fortran/decl.c:1081
+#: fortran/decl.c:1172
#, no-c-format
msgid ""
"Variable '%s' in common block '%s' at %C must be declared with a C "
"interoperable kind since common block '%s' is BIND(C)"
msgstr ""
-#: fortran/decl.c:1120
+#: fortran/decl.c:1214
#, no-c-format
msgid "CHARACTER expression at %L is being truncated (%d/%d)"
msgstr ""
-#: fortran/decl.c:1127
+#: fortran/decl.c:1221
#, no-c-format
msgid ""
"The CHARACTER elements of the array constructor at %L must have the same "
"length (%d/%d)"
msgstr ""
-#: fortran/decl.c:1217
+#: fortran/decl.c:1311
#, no-c-format
msgid "Initializer not allowed for PARAMETER '%s' at %C"
msgstr ""
-#: fortran/decl.c:1227
+#: fortran/decl.c:1321
#, no-c-format
msgid "PARAMETER at %L is missing an initializer"
msgstr ""
-#: fortran/decl.c:1237
+#: fortran/decl.c:1331
#, no-c-format
msgid ""
"Variable '%s' at %C with an initializer already appears in a DATA statement"
msgstr ""
-#: fortran/decl.c:1387
+#: fortran/decl.c:1482
#, no-c-format
msgid "Component at %C must have the POINTER attribute"
msgstr ""
-#: fortran/decl.c:1395
+#: fortran/decl.c:1490
#, no-c-format
msgid "Array component of structure at %C must have explicit or deferred shape"
msgstr ""
-#: fortran/decl.c:1468
-#, no-c-format
-msgid "Allocatable component at %C must be an array"
-msgstr ""
-
-#: fortran/decl.c:1479
+#: fortran/decl.c:1568
#, no-c-format
msgid "Pointer array component of structure at %C must have a deferred shape"
msgstr ""
-#: fortran/decl.c:1488
+#: fortran/decl.c:1577
#, no-c-format
msgid "Allocatable component of structure at %C must have a deferred shape"
msgstr ""
-#: fortran/decl.c:1497
+#: fortran/decl.c:1586
#, no-c-format
msgid "Array component of structure at %C must have an explicit shape"
msgstr ""
-#: fortran/decl.c:1523
+#: fortran/decl.c:1612
#, no-c-format
msgid "NULL() initialization at %C is ambiguous"
msgstr ""
-#: fortran/decl.c:1646 fortran/decl.c:5778
+#: fortran/decl.c:1731 fortran/decl.c:5890
#, no-c-format
msgid "Duplicate array spec for Cray pointee at %C"
msgstr ""
-#: fortran/decl.c:1717
+#: fortran/decl.c:1802
#, no-c-format
msgid "the type of '%s' at %C has not been declared within the interface"
msgstr ""
-#: fortran/decl.c:1733
+#: fortran/decl.c:1818
#, no-c-format
msgid "Function name '%s' not allowed at %C"
msgstr ""
-#: fortran/decl.c:1749
+#: fortran/decl.c:1834
#, no-c-format
msgid "Extension: Old-style initialization at %C"
msgstr ""
-#: fortran/decl.c:1764 fortran/decl.c:4330
+#: fortran/decl.c:1849 fortran/decl.c:4437
#, no-c-format
msgid "Initialization at %C isn't for a pointer variable"
msgstr ""
-#: fortran/decl.c:1772 fortran/decl.c:4338 fortran/decl.c:4480
+#: fortran/decl.c:1857 fortran/decl.c:4445 fortran/decl.c:4585
#, no-c-format
msgid "Pointer initialization requires a NULL() at %C"
msgstr ""
-#: fortran/decl.c:1778 fortran/decl.c:4344 fortran/decl.c:4485
+#: fortran/decl.c:1863 fortran/decl.c:4451 fortran/decl.c:4590
#, no-c-format
msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:1791
+#: fortran/decl.c:1876
#, no-c-format
msgid "Pointer initialization at %C requires '=>', not '='"
msgstr ""
-#: fortran/decl.c:1800 fortran/decl.c:6864
+#: fortran/decl.c:1885 fortran/decl.c:7071
#, no-c-format
msgid "Expected an initialization expression at %C"
msgstr ""
-#: fortran/decl.c:1806
+#: fortran/decl.c:1891
#, no-c-format
msgid "Initialization of variable at %C is not allowed in a PURE procedure"
msgstr ""
-#: fortran/decl.c:1819
+#: fortran/decl.c:1904
#, no-c-format
msgid "Initialization of allocatable component at %C is not allowed"
msgstr ""
-#: fortran/decl.c:1873 fortran/decl.c:1882
+#: fortran/decl.c:1958 fortran/decl.c:1967
#, no-c-format
msgid "Old-style type declaration %s*%d not supported at %C"
msgstr ""
-#: fortran/decl.c:1887
+#: fortran/decl.c:1972
#, no-c-format
msgid "Nonstandard type declaration %s*%d at %C"
msgstr ""
-#: fortran/decl.c:1938 fortran/decl.c:2014
+#: fortran/decl.c:2023 fortran/decl.c:2099
#, no-c-format
msgid "Missing right parenthesis at %C"
msgstr ""
-#: fortran/decl.c:1951 fortran/decl.c:2059
+#: fortran/decl.c:2036 fortran/decl.c:2144
#, no-c-format
msgid "Expected initialization expression at %C"
msgstr ""
-#: fortran/decl.c:1959 fortran/decl.c:2065
+#: fortran/decl.c:2044 fortran/decl.c:2150
#, no-c-format
msgid "Expected scalar initialization expression at %C"
msgstr ""
-#: fortran/decl.c:1990
+#: fortran/decl.c:2075
#, no-c-format
msgid "Kind %d not supported for type %s at %C"
msgstr ""
-#: fortran/decl.c:2003
+#: fortran/decl.c:2088
#, no-c-format
msgid "C kind type parameter is for type %s but type at %L is %s"
msgstr ""
-#: fortran/decl.c:2012
+#: fortran/decl.c:2097
#, no-c-format
msgid "Missing right parenthesis or comma at %C"
msgstr ""
-#: fortran/decl.c:2085
+#: fortran/decl.c:2170
#, no-c-format
msgid "Kind %d is not supported for CHARACTER at %C"
msgstr ""
-#: fortran/decl.c:2214
+#: fortran/decl.c:2300
#, no-c-format
msgid "Syntax error in CHARACTER declaration at %C"
msgstr ""
-#: fortran/decl.c:2299
+#: fortran/decl.c:2383
#, no-c-format
msgid "Extension: BYTE type at %C"
msgstr ""
-#: fortran/decl.c:2305
+#: fortran/decl.c:2389
#, no-c-format
msgid "BYTE type used at %C is not available on the target machine"
msgstr ""
-#: fortran/decl.c:2354
+#: fortran/decl.c:2438
#, no-c-format
msgid "DOUBLE COMPLEX at %C does not conform to the Fortran 95 standard"
msgstr ""
-#: fortran/decl.c:2394 fortran/decl.c:2403 fortran/decl.c:2718
-#: fortran/decl.c:2726
+#: fortran/decl.c:2464
+#, no-c-format
+msgid "Fortran 2003: CLASS statement at %C"
+msgstr ""
+
+#: fortran/decl.c:2487 fortran/decl.c:2496 fortran/decl.c:2809
+#: fortran/decl.c:2817
#, no-c-format
msgid "Type name '%s' at %C is ambiguous"
msgstr ""
-#: fortran/decl.c:2479
+#: fortran/decl.c:2572
#, no-c-format
msgid "Missing character range in IMPLICIT at %C"
msgstr ""
-#: fortran/decl.c:2525
+#: fortran/decl.c:2618
#, no-c-format
msgid "Letters must be in alphabetic order in IMPLICIT statement at %C"
msgstr ""
-#: fortran/decl.c:2581
+#: fortran/decl.c:2674
#, no-c-format
msgid "Empty IMPLICIT statement at %C"
msgstr ""
-#: fortran/decl.c:2684
+#: fortran/decl.c:2775
#, no-c-format
msgid "IMPORT statement at %C only permitted in an INTERFACE body"
msgstr ""
-#: fortran/decl.c:2689
+#: fortran/decl.c:2780
#, no-c-format
msgid "Fortran 2003: IMPORT statement at %C"
msgstr ""
-#: fortran/decl.c:2704
+#: fortran/decl.c:2795
#, no-c-format
msgid "Expecting list of named entities at %C"
msgstr ""
-#: fortran/decl.c:2732
+#: fortran/decl.c:2823
#, no-c-format
msgid "Cannot IMPORT '%s' from host scoping unit at %C - does not exist."
msgstr ""
-#: fortran/decl.c:2739
+#: fortran/decl.c:2830
#, no-c-format
msgid "'%s' is already IMPORTed from host scoping unit at %C."
msgstr ""
-#: fortran/decl.c:2768
+#: fortran/decl.c:2859
#, no-c-format
msgid "Syntax error in IMPORT statement at %C"
msgstr ""
-#: fortran/decl.c:3017
+#: fortran/decl.c:3108
#, no-c-format
msgid "Missing dimension specification at %C"
msgstr ""
-#: fortran/decl.c:3091
+#: fortran/decl.c:3182
#, no-c-format
msgid "Duplicate %s attribute at %L"
msgstr ""
-#: fortran/decl.c:3110
+#: fortran/decl.c:3201
#, no-c-format
msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3120
+#: fortran/decl.c:3211
#, no-c-format
msgid "Attribute at %L is not allowed in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3138
+#: fortran/decl.c:3229
#, no-c-format
msgid "Fortran 2003: Attribute %s at %L in a TYPE definition"
msgstr ""
-#: fortran/decl.c:3149
+#: fortran/decl.c:3240
#, no-c-format
msgid ""
"%s attribute at %L is not allowed outside of the specification part of a "
"module"
msgstr ""
-#: fortran/decl.c:3201 fortran/decl.c:6018
+#: fortran/decl.c:3292 fortran/decl.c:6143
#, no-c-format
msgid "PROTECTED at %C only allowed in specification part of a module"
msgstr ""
-#: fortran/decl.c:3207
+#: fortran/decl.c:3298
#, no-c-format
msgid "Fortran 2003: PROTECTED attribute at %C"
msgstr ""
-#: fortran/decl.c:3238
+#: fortran/decl.c:3329
#, no-c-format
msgid "Fortran 2003: VALUE attribute at %C"
msgstr ""
-#: fortran/decl.c:3248
+#: fortran/decl.c:3339
#, no-c-format
msgid "Fortran 2003: VOLATILE attribute at %C"
msgstr ""
-#: fortran/decl.c:3288
+#: fortran/decl.c:3379
#, no-c-format
msgid "Multiple identifiers provided with single NAME= specifier at %C"
msgstr ""
-#: fortran/decl.c:3384
+#: fortran/decl.c:3475
#, no-c-format
msgid ""
"Implicitly declared BIND(C) function '%s' at %L may not be C interoperable"
msgstr ""
-#: fortran/decl.c:3405
+#: fortran/decl.c:3496
#, no-c-format
msgid ""
"Variable '%s' in common block '%s' at %L may not be a C interoperable kind "
"though common block '%s' is BIND(C)"
msgstr ""
-#: fortran/decl.c:3414
+#: fortran/decl.c:3505
#, no-c-format
msgid "Type declaration '%s' at %L is not C interoperable but it is BIND(C)"
msgstr ""
-#: fortran/decl.c:3418
+#: fortran/decl.c:3509
#, no-c-format
msgid "Variable '%s' at %L may not be a C interoperable kind but it is bind(c)"
msgstr ""
-#: fortran/decl.c:3430
+#: fortran/decl.c:3521
#, no-c-format
msgid ""
"Variable '%s' in common block '%s' at %L cannot be declared with BIND(C) "
"since it is not a global"
msgstr ""
-#: fortran/decl.c:3444
+#: fortran/decl.c:3535
#, no-c-format
msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes"
msgstr ""
-#: fortran/decl.c:3452
+#: fortran/decl.c:3543
#, no-c-format
msgid ""
"Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
msgstr ""
-#: fortran/decl.c:3464
+#: fortran/decl.c:3555
#, no-c-format
msgid "Return type of BIND(C) function '%s' at %L cannot be an array"
msgstr ""
-#: fortran/decl.c:3472
+#: fortran/decl.c:3563
#, no-c-format
msgid "Return type of BIND(C) function '%s' at %L cannot be a character string"
msgstr ""
#. Use gfc_warning_now because we won't say that the symbol fails
#. just because of this.
-#: fortran/decl.c:3483
+#: fortran/decl.c:3574
#, no-c-format
msgid ""
"Symbol '%s' at %L is marked PRIVATE but has been given the binding label '%s'"
msgstr ""
-#: fortran/decl.c:3558
+#: fortran/decl.c:3649
#, no-c-format
msgid ""
"Need either entity or common block name for attribute specification "
"statement at %C"
msgstr ""
-#: fortran/decl.c:3605
+#: fortran/decl.c:3696
#, no-c-format
msgid ""
"Missing entity or common block name for attribute specification statement at "
@@ -4939,702 +5184,737 @@ msgstr ""
#. Now we have an error, which we signal, and then fix up
#. because the knock-on is plain and simple confusing.
-#: fortran/decl.c:3712
+#: fortran/decl.c:3803
#, no-c-format
msgid ""
"Derived type at %C has not been previously defined and so cannot appear in a "
"derived type definition"
msgstr ""
-#: fortran/decl.c:3744
+#: fortran/decl.c:3835
#, no-c-format
msgid "Syntax error in data declaration at %C"
msgstr ""
-#: fortran/decl.c:3901
+#: fortran/decl.c:3992
#, no-c-format
msgid "Name '%s' at %C is the name of the procedure"
msgstr ""
-#: fortran/decl.c:3913
+#: fortran/decl.c:4004
#, no-c-format
msgid "Unexpected junk in formal argument list at %C"
msgstr ""
-#: fortran/decl.c:3930
+#: fortran/decl.c:4021
#, no-c-format
msgid "Duplicate symbol '%s' in formal argument list at %C"
msgstr ""
-#: fortran/decl.c:3981
+#: fortran/decl.c:4072
#, no-c-format
msgid "RESULT variable at %C must be different than function name"
msgstr ""
-#: fortran/decl.c:4058
+#: fortran/decl.c:4149
#, no-c-format
msgid "Unexpected junk after function declaration at %C"
msgstr ""
-#: fortran/decl.c:4068 fortran/decl.c:5102
+#: fortran/decl.c:4159 fortran/decl.c:5204
#, no-c-format
msgid ""
"Fortran 2008: BIND(C) attribute at %L may not be specified for an internal "
"procedure"
msgstr ""
-#: fortran/decl.c:4196
+#: fortran/decl.c:4303
#, no-c-format
msgid "Interface '%s' at %C may not be generic"
msgstr ""
-#: fortran/decl.c:4202
+#: fortran/decl.c:4309
#, no-c-format
msgid "Interface '%s' at %C may not be a statement function"
msgstr ""
-#: fortran/decl.c:4215
+#: fortran/decl.c:4322
#, no-c-format
msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4270
+#: fortran/decl.c:4377
#, no-c-format
msgid "BIND(C) attribute at %C requires an interface with BIND(C)"
msgstr ""
-#: fortran/decl.c:4277
+#: fortran/decl.c:4384
#, no-c-format
msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:4283
+#: fortran/decl.c:4390
#, no-c-format
msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
msgstr ""
-#: fortran/decl.c:4306
+#: fortran/decl.c:4413
#, no-c-format
msgid "Procedure '%s' at %L already has basic type of %s"
msgstr ""
-#: fortran/decl.c:4367 fortran/decl.c:4547
+#: fortran/decl.c:4474 fortran/decl.c:4652
#, no-c-format
msgid "Syntax error in PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4410
+#: fortran/decl.c:4523 fortran/decl.c:7453
#, no-c-format
-msgid "Procedure Pointer Component with PASS at %C not yet implemented"
+msgid "Expected '::' after binding-attributes at %C"
msgstr ""
-#: fortran/decl.c:4424 fortran/decl.c:7246
+#: fortran/decl.c:4530
#, no-c-format
-msgid "Expected '::' after binding-attributes at %C"
+msgid "NOPASS or explicit interface required at %C"
msgstr ""
-#: fortran/decl.c:4431
+#: fortran/decl.c:4534
#, no-c-format
-msgid "NOPASS or explicit interface required at %C"
+msgid "Fortran 2003: Procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:4504
+#: fortran/decl.c:4609
#, no-c-format
msgid "Syntax error in procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:4521
+#: fortran/decl.c:4626
#, no-c-format
msgid "PROCEDURE at %C must be in a generic interface"
msgstr ""
-#: fortran/decl.c:4586
+#: fortran/decl.c:4691
#, no-c-format
msgid "Fortran 2003: PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4654
+#: fortran/decl.c:4759
#, no-c-format
msgid "Expected formal argument list in function definition at %C"
msgstr ""
-#: fortran/decl.c:4678 fortran/decl.c:4682 fortran/decl.c:4884
-#: fortran/decl.c:4888 fortran/decl.c:5070 fortran/decl.c:5074
-#: fortran/symbol.c:1484
+#: fortran/decl.c:4783 fortran/decl.c:4787 fortran/decl.c:4986
+#: fortran/decl.c:4990 fortran/decl.c:5172 fortran/decl.c:5176
+#: fortran/symbol.c:1490
#, no-c-format
msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
msgstr ""
-#: fortran/decl.c:4714
-#, no-c-format
-msgid "Function '%s' at %C already has a type of %s"
-msgstr ""
-
-#: fortran/decl.c:4806
+#: fortran/decl.c:4908
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a PROGRAM"
msgstr ""
-#: fortran/decl.c:4809
+#: fortran/decl.c:4911
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a MODULE"
msgstr ""
-#: fortran/decl.c:4812
+#: fortran/decl.c:4914
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a BLOCK DATA"
msgstr ""
-#: fortran/decl.c:4816
+#: fortran/decl.c:4918
#, no-c-format
msgid "ENTRY statement at %C cannot appear within an INTERFACE"
msgstr ""
-#: fortran/decl.c:4820
+#: fortran/decl.c:4922
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block"
msgstr ""
-#: fortran/decl.c:4824
+#: fortran/decl.c:4926
#, no-c-format
msgid "ENTRY statement at %C cannot appear within an IF-THEN block"
msgstr ""
-#: fortran/decl.c:4828
+#: fortran/decl.c:4930
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a DO block"
msgstr ""
-#: fortran/decl.c:4832
+#: fortran/decl.c:4934
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a SELECT block"
msgstr ""
-#: fortran/decl.c:4836
+#: fortran/decl.c:4938
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a FORALL block"
msgstr ""
-#: fortran/decl.c:4840
+#: fortran/decl.c:4942
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a WHERE block"
msgstr ""
-#: fortran/decl.c:4844
+#: fortran/decl.c:4946
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a contained subprogram"
msgstr ""
-#: fortran/decl.c:4862
+#: fortran/decl.c:4964
#, no-c-format
msgid "ENTRY statement at %C cannot appear in a contained procedure"
msgstr ""
-#: fortran/decl.c:4916 fortran/decl.c:5110
+#: fortran/decl.c:5018 fortran/decl.c:5212
#, no-c-format
msgid "Missing required parentheses before BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5172 fortran/decl.c:5188
+#: fortran/decl.c:5274 fortran/decl.c:5290
#, no-c-format
msgid "Syntax error in NAME= specifier for binding label at %C"
msgstr ""
-#: fortran/decl.c:5203
+#: fortran/decl.c:5305
#, no-c-format
msgid "Missing closing quote '\"' for binding label at %C"
msgstr ""
-#: fortran/decl.c:5212
+#: fortran/decl.c:5314
#, no-c-format
msgid "Missing closing quote ''' for binding label at %C"
msgstr ""
-#: fortran/decl.c:5222
+#: fortran/decl.c:5324
#, no-c-format
msgid "Missing closing paren for binding label at %C"
msgstr ""
-#: fortran/decl.c:5228
+#: fortran/decl.c:5330
#, no-c-format
msgid "No binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5234
+#: fortran/decl.c:5336
#, no-c-format
msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5265
+#: fortran/decl.c:5367
#, no-c-format
msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C"
msgstr ""
-#: fortran/decl.c:5438
+#: fortran/decl.c:5550
#, no-c-format
msgid "Unexpected END statement at %C"
msgstr ""
#. We would have required END [something].
-#: fortran/decl.c:5447
+#: fortran/decl.c:5559
#, no-c-format
msgid "%s statement expected at %L"
msgstr ""
-#: fortran/decl.c:5458
+#: fortran/decl.c:5570
#, no-c-format
msgid "Expecting %s statement at %C"
msgstr ""
-#: fortran/decl.c:5473
+#: fortran/decl.c:5585
#, no-c-format
msgid "Expected block name of '%s' in %s statement at %C"
msgstr ""
-#: fortran/decl.c:5490
+#: fortran/decl.c:5602
#, no-c-format
msgid "Expected terminating name at %C"
msgstr ""
-#: fortran/decl.c:5499 fortran/decl.c:5507
+#: fortran/decl.c:5611 fortran/decl.c:5619
#, no-c-format
msgid "Expected label '%s' for %s statement at %C"
msgstr ""
-#: fortran/decl.c:5562
+#: fortran/decl.c:5674
#, no-c-format
msgid "Missing array specification at %L in DIMENSION statement"
msgstr ""
-#: fortran/decl.c:5570
+#: fortran/decl.c:5682
#, no-c-format
msgid "Dimensions specified for %s at %L after its initialisation"
msgstr ""
-#: fortran/decl.c:5579
+#: fortran/decl.c:5691
#, no-c-format
msgid "Array specification must be deferred at %L"
msgstr ""
-#: fortran/decl.c:5658
+#: fortran/decl.c:5770
#, no-c-format
msgid "Unexpected character in variable list at %C"
msgstr ""
-#: fortran/decl.c:5695
+#: fortran/decl.c:5807
#, no-c-format
msgid "Expected '(' at %C"
msgstr ""
-#: fortran/decl.c:5709 fortran/decl.c:5749
+#: fortran/decl.c:5821 fortran/decl.c:5861
#, no-c-format
msgid "Expected variable name at %C"
msgstr ""
-#: fortran/decl.c:5725
+#: fortran/decl.c:5837
#, no-c-format
msgid "Cray pointer at %C must be an integer"
msgstr ""
-#: fortran/decl.c:5729
+#: fortran/decl.c:5841
#, no-c-format
msgid ""
"Cray pointer at %C has %d bytes of precision; memory addresses require %d "
"bytes"
msgstr ""
-#: fortran/decl.c:5735
+#: fortran/decl.c:5847
#, no-c-format
msgid "Expected \",\" at %C"
msgstr ""
-#: fortran/decl.c:5798
+#: fortran/decl.c:5910
#, no-c-format
msgid "Expected \")\" at %C"
msgstr ""
-#: fortran/decl.c:5810
+#: fortran/decl.c:5922
#, no-c-format
msgid "Expected \",\" or end of statement at %C"
msgstr ""
-#: fortran/decl.c:5874
+#: fortran/decl.c:5948
+#, no-c-format
+msgid "INTENT is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:5980
+#, no-c-format
+msgid "OPTIONAL is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:5999
#, no-c-format
msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
msgstr ""
-#: fortran/decl.c:5969
+#: fortran/decl.c:6094
#, no-c-format
msgid ""
"Access specification of the %s operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:5986
+#: fortran/decl.c:6111
#, no-c-format
msgid ""
"Access specification of the .%s. operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:6024
+#: fortran/decl.c:6149
#, no-c-format
msgid "Fortran 2003: PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:6064
+#: fortran/decl.c:6189
#, no-c-format
msgid "Syntax error in PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:6088
+#: fortran/decl.c:6213
#, no-c-format
msgid ""
"PRIVATE statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6125
+#: fortran/decl.c:6250
#, no-c-format
msgid ""
"PUBLIC statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6152
+#: fortran/decl.c:6278
#, no-c-format
msgid "Expected variable name at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:6159
+#: fortran/decl.c:6285
#, no-c-format
msgid "Expected = sign in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:6165
+#: fortran/decl.c:6291
#, no-c-format
msgid "Expected expression at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:6185
+#: fortran/decl.c:6311
#, no-c-format
msgid "Initializing already initialized variable at %C"
msgstr ""
-#: fortran/decl.c:6247
+#: fortran/decl.c:6346
#, no-c-format
msgid "Unexpected characters in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:6271
+#: fortran/decl.c:6370
#, no-c-format
msgid "Blanket SAVE statement at %C follows previous SAVE statement"
msgstr ""
-#: fortran/decl.c:6283
+#: fortran/decl.c:6382
#, no-c-format
msgid "SAVE statement at %C follows blanket SAVE statement"
msgstr ""
-#: fortran/decl.c:6330
+#: fortran/decl.c:6429
#, no-c-format
msgid "Syntax error in SAVE statement at %C"
msgstr ""
-#: fortran/decl.c:6341
+#: fortran/decl.c:6443
+#, no-c-format
+msgid "VALUE is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/decl.c:6447
#, no-c-format
msgid "Fortran 2003: VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:6381
+#: fortran/decl.c:6487
#, no-c-format
msgid "Syntax error in VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:6392
+#: fortran/decl.c:6498
#, no-c-format
msgid "Fortran 2003: VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:6434
+#: fortran/decl.c:6540
#, no-c-format
msgid "Syntax error in VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:6457
+#: fortran/decl.c:6563
#, no-c-format
msgid "MODULE PROCEDURE at %C must be in a generic module interface"
msgstr ""
-#: fortran/decl.c:6539
+#: fortran/decl.c:6608
+#, no-c-format
+msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE"
+msgstr ""
+
+#: fortran/decl.c:6657
#, no-c-format
msgid "Ambiguous symbol in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6545
+#: fortran/decl.c:6663
#, no-c-format
msgid "No such symbol in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6551
+#: fortran/decl.c:6669
#, no-c-format
msgid "'%s' in EXTENDS expression at %C is not a derived type"
msgstr ""
-#: fortran/decl.c:6558
+#: fortran/decl.c:6676
#, no-c-format
msgid "'%s' cannot be extended at %C because it is BIND(C)"
msgstr ""
-#: fortran/decl.c:6565
+#: fortran/decl.c:6683
#, no-c-format
msgid "'%s' cannot be extended at %C because it is a SEQUENCE type"
msgstr ""
-#: fortran/decl.c:6588
+#: fortran/decl.c:6706
#, no-c-format
msgid ""
"Derived type at %C can only be PRIVATE in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6600
+#: fortran/decl.c:6718
#, no-c-format
msgid ""
"Derived type at %C can only be PUBLIC in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6621
+#: fortran/decl.c:6739
#, no-c-format
msgid "Fortran 2003: ABSTRACT type at %C"
msgstr ""
-#: fortran/decl.c:6685
+#: fortran/decl.c:6843
#, no-c-format
msgid "Expected :: in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6696
+#: fortran/decl.c:6854
#, no-c-format
msgid "Type name '%s' at %C cannot be the same as an intrinsic type"
msgstr ""
-#: fortran/decl.c:6706
+#: fortran/decl.c:6864
#, no-c-format
msgid "Derived type name '%s' at %C already has a basic type of %s"
msgstr ""
-#: fortran/decl.c:6722
+#: fortran/decl.c:6880
#, no-c-format
msgid "Derived type definition of '%s' at %C has already been defined"
msgstr ""
-#: fortran/decl.c:6789
+#: fortran/decl.c:6951
#, no-c-format
msgid "Cray Pointee at %C cannot be assumed shape array"
msgstr ""
-#: fortran/decl.c:6809
+#: fortran/decl.c:6971
#, no-c-format
msgid "Fortran 2003: ENUM and ENUMERATOR at %C"
msgstr ""
-#: fortran/decl.c:6881
+#: fortran/decl.c:7009
+#, no-c-format
+msgid "Enumerator exceeds the C integer type at %C"
+msgstr ""
+
+#: fortran/decl.c:7088
#, no-c-format
msgid "ENUMERATOR %L not initialized with integer expression"
msgstr ""
-#: fortran/decl.c:6930
+#: fortran/decl.c:7137
#, no-c-format
msgid "ENUM definition statement expected before %C"
msgstr ""
-#: fortran/decl.c:6963
+#: fortran/decl.c:7170
#, no-c-format
msgid "Syntax error in ENUMERATOR definition at %C"
msgstr ""
-#: fortran/decl.c:7011 fortran/decl.c:7026
+#: fortran/decl.c:7217 fortran/decl.c:7232
#, no-c-format
msgid "Duplicate access-specifier at %C"
msgstr ""
-#: fortran/decl.c:7046
+#: fortran/decl.c:7252
#, no-c-format
msgid "Binding attributes already specify passing, illegal NOPASS at %C"
msgstr ""
-#: fortran/decl.c:7066
+#: fortran/decl.c:7272
#, no-c-format
msgid "Binding attributes already specify passing, illegal PASS at %C"
msgstr ""
-#: fortran/decl.c:7093
+#: fortran/decl.c:7299
#, no-c-format
msgid "Duplicate POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:7112
+#: fortran/decl.c:7317
#, no-c-format
msgid "Duplicate NON_OVERRIDABLE at %C"
msgstr ""
-#: fortran/decl.c:7128
+#: fortran/decl.c:7333
#, no-c-format
msgid "Duplicate DEFERRED at %C"
msgstr ""
-#: fortran/decl.c:7141
+#: fortran/decl.c:7346
#, no-c-format
msgid "Expected access-specifier at %C"
msgstr ""
-#: fortran/decl.c:7143
+#: fortran/decl.c:7348
#, no-c-format
msgid "Expected binding attribute at %C"
msgstr ""
-#: fortran/decl.c:7151
+#: fortran/decl.c:7356
#, no-c-format
msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
msgstr ""
-#: fortran/decl.c:7160
+#: fortran/decl.c:7368
#, no-c-format
msgid "POINTER attribute is required for procedure pointer component at %C"
msgstr ""
-#: fortran/decl.c:7202
+#: fortran/decl.c:7409
#, no-c-format
msgid "Interface-name expected after '(' at %C"
msgstr ""
-#: fortran/decl.c:7208
+#: fortran/decl.c:7415
#, no-c-format
msgid "')' expected at %C"
msgstr ""
-#: fortran/decl.c:7230
+#: fortran/decl.c:7437
#, no-c-format
msgid "Interface must be specified for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:7235
+#: fortran/decl.c:7442
#, no-c-format
msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
msgstr ""
-#: fortran/decl.c:7256
+#: fortran/decl.c:7463
#, no-c-format
msgid "Expected binding name at %C"
msgstr ""
-#: fortran/decl.c:7268
+#: fortran/decl.c:7475
#, no-c-format
msgid "'=> target' is invalid for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:7274
+#: fortran/decl.c:7481
#, no-c-format
msgid "'::' needed in PROCEDURE binding with explicit target at %C"
msgstr ""
-#: fortran/decl.c:7284
+#: fortran/decl.c:7491
#, no-c-format
msgid "Expected binding target after '=>' at %C"
msgstr ""
-#: fortran/decl.c:7296
+#: fortran/decl.c:7503
#, no-c-format
msgid "Junk after PROCEDURE declaration at %C"
msgstr ""
-#: fortran/decl.c:7311
+#: fortran/decl.c:7518
#, no-c-format
msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT"
msgstr ""
-#: fortran/decl.c:7322
+#: fortran/decl.c:7529
#, no-c-format
msgid ""
"There's already a procedure with binding name '%s' for the derived type '%s' "
"at %C"
msgstr ""
-#: fortran/decl.c:7360
+#: fortran/decl.c:7569
#, no-c-format
msgid "GENERIC at %C must be inside a derived-type CONTAINS"
msgstr ""
-#: fortran/decl.c:7377
+#: fortran/decl.c:7586
#, no-c-format
msgid "Expected '::' at %C"
msgstr ""
-#: fortran/decl.c:7387
+#: fortran/decl.c:7598
#, no-c-format
-msgid "Expected generic name at %C"
+msgid "Expected generic name or operator descriptor at %C"
msgstr ""
-#: fortran/decl.c:7401
+#: fortran/decl.c:7624
+#, no-c-format
+msgid "Expected '=>' at %C"
+msgstr ""
+
+#: fortran/decl.c:7666
#, no-c-format
msgid ""
"There's already a non-generic procedure with binding name '%s' for the "
"derived type '%s' at %C"
msgstr ""
-#: fortran/decl.c:7409
+#: fortran/decl.c:7674
#, no-c-format
msgid "Binding at %C must have the same access as already defined binding '%s'"
msgstr ""
-#: fortran/decl.c:7437
+#: fortran/decl.c:7723
#, no-c-format
msgid "Expected specific binding name at %C"
msgstr ""
-#: fortran/decl.c:7447
+#: fortran/decl.c:7733
#, no-c-format
msgid "'%s' already defined as specific binding for the generic '%s' at %C"
msgstr ""
-#: fortran/decl.c:7463
+#: fortran/decl.c:7749
#, no-c-format
msgid "Junk after GENERIC binding at %C"
msgstr ""
-#: fortran/decl.c:7488
+#: fortran/decl.c:7774
#, no-c-format
msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
msgstr ""
-#: fortran/decl.c:7499
+#: fortran/decl.c:7785
#, no-c-format
msgid ""
"Derived type declaration with FINAL at %C must be in the specification part "
"of a MODULE"
msgstr ""
-#: fortran/decl.c:7521
+#: fortran/decl.c:7807
#, no-c-format
msgid "Empty FINAL at %C"
msgstr ""
-#: fortran/decl.c:7528
+#: fortran/decl.c:7814
#, no-c-format
msgid "Expected module procedure name at %C"
msgstr ""
-#: fortran/decl.c:7538
+#: fortran/decl.c:7824
#, no-c-format
msgid "Expected ',' at %C"
msgstr ""
-#: fortran/decl.c:7544
+#: fortran/decl.c:7830
#, no-c-format
msgid "Unknown procedure name \"%s\" at %C"
msgstr ""
-#: fortran/decl.c:7558
+#: fortran/decl.c:7844
#, no-c-format
msgid "'%s' at %C is already defined as FINAL procedure!"
msgstr ""
+#: fortran/decl.c:7913
+#, no-c-format
+msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C"
+msgstr ""
+
+#: fortran/decl.c:7960
+#, no-c-format
+msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
+msgstr ""
+
#. We are told not to check dependencies.
#. We do it, however, and issue a warning in case we find one.
#. If a dependency is found in the case
@@ -5646,435 +5926,443 @@ msgid ""
"INTENT(%s) actual argument at %L might interfere with actual argument at %L."
msgstr ""
-#: fortran/error.c:298
+#: fortran/error.c:300
#, no-c-format
msgid " Included at %s:%d:"
msgstr ""
-#: fortran/error.c:382
+#: fortran/error.c:384
#, no-c-format
msgid "<During initialization>\n"
msgstr ""
-#: fortran/error.c:716
+#: fortran/error.c:718
#, no-c-format
msgid "Error count reached limit of %d."
msgstr ""
-#: fortran/error.c:735 fortran/error.c:789 fortran/error.c:826
+#: fortran/error.c:737 fortran/error.c:791 fortran/error.c:826
+#: fortran/error.c:901
msgid "Warning:"
msgstr ""
-#: fortran/error.c:791 fortran/error.c:874 fortran/error.c:900
+#: fortran/error.c:793 fortran/error.c:881 fortran/error.c:931
msgid "Error:"
msgstr ""
-#: fortran/error.c:924
+#: fortran/error.c:955
msgid "Fatal Error:"
msgstr ""
-#: fortran/error.c:943
+#: fortran/error.c:974
#, no-c-format
msgid "Internal Error at (1):"
msgstr ""
-#: fortran/expr.c:257
+#: fortran/expr.c:261
#, c-format
msgid "Constant expression required at %C"
msgstr ""
-#: fortran/expr.c:260
+#: fortran/expr.c:264
#, c-format
msgid "Integer expression required at %C"
msgstr ""
-#: fortran/expr.c:265
+#: fortran/expr.c:269
#, c-format
msgid "Integer value too large in expression at %C"
msgstr ""
-#: fortran/expr.c:1058
+#: fortran/expr.c:1098
#, no-c-format
msgid "Index in dimension %d is out of bounds at %L"
msgstr ""
-#: fortran/expr.c:1234 fortran/expr.c:1285
+#: fortran/expr.c:1274 fortran/expr.c:1325
#, no-c-format
msgid "index in dimension %d is out of bounds at %L"
msgstr ""
-#: fortran/expr.c:1888
+#: fortran/expr.c:1923
#, no-c-format
msgid "elemental function arguments at %C are not compliant"
msgstr ""
-#: fortran/expr.c:1932
+#: fortran/expr.c:1967
#, no-c-format
msgid "Numeric or CHARACTER operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:1957
+#: fortran/expr.c:1992
#, no-c-format
msgid ""
"Concatenation operator in expression at %L must have two CHARACTER operands"
msgstr ""
-#: fortran/expr.c:1964
+#: fortran/expr.c:1999
#, no-c-format
msgid "Concat operator at %L must concatenate strings of the same kind"
msgstr ""
-#: fortran/expr.c:1974
+#: fortran/expr.c:2009
#, no-c-format
msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
msgstr ""
-#: fortran/expr.c:1990
+#: fortran/expr.c:2025
#, no-c-format
msgid "LOGICAL operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:2001
+#: fortran/expr.c:2036
#, no-c-format
msgid "Only intrinsic operators can be used in expression at %L"
msgstr ""
-#: fortran/expr.c:2009
+#: fortran/expr.c:2044
#, no-c-format
msgid "Numeric operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:2102
+#: fortran/expr.c:2137
#, no-c-format
msgid "Assumed character length variable '%s' in constant expression at %L"
msgstr ""
-#: fortran/expr.c:2153 fortran/expr.c:2159
+#: fortran/expr.c:2195
#, no-c-format
msgid ""
"transformational intrinsic '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2191
+#: fortran/expr.c:2226
#, no-c-format
msgid "Extension: Evaluation of nonstandard initialization expression at %L"
msgstr ""
-#: fortran/expr.c:2248
+#: fortran/expr.c:2283
#, no-c-format
msgid ""
"Function '%s' in initialization expression at %L must be an intrinsic or a "
"specification function"
msgstr ""
-#: fortran/expr.c:2260
+#: fortran/expr.c:2295
#, no-c-format
msgid ""
"Intrinsic function '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2292
+#: fortran/expr.c:2327
#, no-c-format
msgid "PARAMETER '%s' is used at %L before its definition is complete"
msgstr ""
-#: fortran/expr.c:2312
+#: fortran/expr.c:2347
#, no-c-format
msgid ""
"Assumed size array '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2318
+#: fortran/expr.c:2353
#, no-c-format
msgid ""
"Assumed shape array '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2324
+#: fortran/expr.c:2359
#, no-c-format
msgid ""
"Deferred array '%s' at %L is not permitted in an initialization expression"
msgstr ""
-#: fortran/expr.c:2330
+#: fortran/expr.c:2365
#, no-c-format
msgid ""
"Array '%s' at %L is a variable, which does not reduce to a constant "
"expression"
msgstr ""
-#: fortran/expr.c:2340
+#: fortran/expr.c:2375
#, no-c-format
msgid ""
"Parameter '%s' at %L has not been declared or is a variable, which does not "
"reduce to a constant expression"
msgstr ""
-#: fortran/expr.c:2416
+#: fortran/expr.c:2451
#, no-c-format
msgid "Initialization expression didn't reduce %C"
msgstr ""
-#: fortran/expr.c:2495
+#: fortran/expr.c:2530
#, no-c-format
msgid "Specification function '%s' at %L cannot be a statement function"
msgstr ""
-#: fortran/expr.c:2502
+#: fortran/expr.c:2537
#, no-c-format
msgid "Specification function '%s' at %L cannot be an internal function"
msgstr ""
-#: fortran/expr.c:2509
+#: fortran/expr.c:2544
#, no-c-format
msgid "Specification function '%s' at %L must be PURE"
msgstr ""
-#: fortran/expr.c:2516
+#: fortran/expr.c:2551
#, no-c-format
msgid "Specification function '%s' at %L cannot be RECURSIVE"
msgstr ""
-#: fortran/expr.c:2650
+#: fortran/expr.c:2685
#, no-c-format
msgid "Dummy argument '%s' not allowed in expression at %L"
msgstr ""
-#: fortran/expr.c:2657
+#: fortran/expr.c:2692
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be OPTIONAL"
msgstr ""
-#: fortran/expr.c:2664
+#: fortran/expr.c:2699
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgstr ""
-#: fortran/expr.c:2695
+#: fortran/expr.c:2730
#, no-c-format
msgid "Variable '%s' cannot appear in the expression at %L"
msgstr ""
-#: fortran/expr.c:2745
+#: fortran/expr.c:2780
#, no-c-format
msgid "Expression at %L must be of INTEGER type, found %s"
msgstr ""
-#: fortran/expr.c:2755
+#: fortran/expr.c:2790
#, no-c-format
msgid "Function '%s' at %L must be PURE"
msgstr ""
-#: fortran/expr.c:2764
+#: fortran/expr.c:2799
#, no-c-format
msgid "Expression at %L must be scalar"
msgstr ""
-#: fortran/expr.c:2791
+#: fortran/expr.c:2833
#, no-c-format
msgid "Incompatible ranks in %s (%d and %d) at %L"
msgstr ""
-#: fortran/expr.c:2805
+#: fortran/expr.c:2847
#, no-c-format
msgid "Different shape for %s at %L on dimension %d (%d and %d)"
msgstr ""
-#: fortran/expr.c:2851 fortran/expr.c:3111
+#: fortran/expr.c:2893 fortran/expr.c:3153
#, no-c-format
msgid "Cannot assign to INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/expr.c:2903
+#: fortran/expr.c:2945
#, no-c-format
msgid "'%s' at %L is not a VALUE"
msgstr ""
-#: fortran/expr.c:2910
+#: fortran/expr.c:2952
#, no-c-format
msgid "Incompatible ranks %d and %d in assignment at %L"
msgstr ""
-#: fortran/expr.c:2917
+#: fortran/expr.c:2959
#, no-c-format
msgid "Variable type is UNKNOWN in assignment at %L"
msgstr ""
-#: fortran/expr.c:2929
+#: fortran/expr.c:2971
#, no-c-format
msgid "NULL appears on right-hand side in assignment at %L"
msgstr ""
-#: fortran/expr.c:2940
+#: fortran/expr.c:2982
#, no-c-format
msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal"
msgstr ""
-#: fortran/expr.c:2949
+#: fortran/expr.c:2991
#, no-c-format
msgid "POINTER valued function appears on right-hand side of assignment at %L"
msgstr ""
-#: fortran/expr.c:2954
+#: fortran/expr.c:2996
msgid "array assignment"
msgstr ""
-#: fortran/expr.c:2959
+#: fortran/expr.c:3001
#, no-c-format
msgid ""
"Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:2965 fortran/resolve.c:6726
+#: fortran/expr.c:3007 fortran/resolve.c:7535
#, no-c-format
msgid ""
"Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/"
"DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:2975 fortran/resolve.c:6736
+#: fortran/expr.c:3017 fortran/resolve.c:7545
#, no-c-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:2983 fortran/resolve.c:6745
+#: fortran/expr.c:3025 fortran/resolve.c:7554
#, no-c-format
msgid ""
"Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be "
"disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:2987 fortran/resolve.c:6749
+#: fortran/expr.c:3029 fortran/resolve.c:7558
#, no-c-format
msgid ""
"Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be "
"disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:2991 fortran/resolve.c:6753
+#: fortran/expr.c:3033 fortran/resolve.c:7562
#, no-c-format
msgid ""
"Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled "
"with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3013
+#: fortran/expr.c:3055
#, no-c-format
msgid ""
"Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
msgstr ""
-#: fortran/expr.c:3049
+#: fortran/expr.c:3091
#, no-c-format
msgid "Pointer assignment target is not a POINTER at %L"
msgstr ""
-#: fortran/expr.c:3058
+#: fortran/expr.c:3100
#, no-c-format
msgid ""
"'%s' in the pointer assignment at %L cannot be an l-value since it is a "
"procedure"
msgstr ""
-#: fortran/expr.c:3089
+#: fortran/expr.c:3131
#, no-c-format
msgid "Expected bounds specification for '%s' at %L"
msgstr ""
-#: fortran/expr.c:3094
+#: fortran/expr.c:3136
#, no-c-format
msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3100
+#: fortran/expr.c:3142
#, no-c-format
msgid "Pointer bounds remapping at %L is not yet implemented in gfortran"
msgstr ""
-#: fortran/expr.c:3118
+#: fortran/expr.c:3162
#, no-c-format
msgid "Pointer assignment to non-POINTER at %L"
msgstr ""
-#: fortran/expr.c:3127
+#: fortran/expr.c:3171
#, no-c-format
msgid "Bad pointer object in PURE procedure at %L"
msgstr ""
-#: fortran/expr.c:3147
+#: fortran/expr.c:3196
#, no-c-format
msgid "Invalid procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3153
+#: fortran/expr.c:3202
#, no-c-format
msgid ""
"Abstract interface '%s' is invalid in procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3163
+#: fortran/expr.c:3212
#, no-c-format
msgid ""
"Statement function '%s' is invalid in procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3169
+#: fortran/expr.c:3218
#, no-c-format
msgid ""
"Internal procedure '%s' is invalid in procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3181
+#: fortran/expr.c:3241
#, no-c-format
-msgid "Interfaces don't match in procedure pointer assignment at %L"
+msgid ""
+"Mismatch in the procedure pointer assignment at %L: mismatch in the calling "
+"convention"
msgstr ""
-#: fortran/expr.c:3190
+#: fortran/expr.c:3272
+#, no-c-format
+msgid "Interface mismatch in procedure pointer assignment at %L: %s"
+msgstr ""
+
+#: fortran/expr.c:3282
#, no-c-format
msgid ""
"Different types in pointer assignment at %L; attempted assignment of %s to %s"
msgstr ""
-#: fortran/expr.c:3198
+#: fortran/expr.c:3290
#, no-c-format
msgid "Different kind type parameters in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3205
+#: fortran/expr.c:3297
#, no-c-format
msgid "Different ranks in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3227
+#: fortran/expr.c:3319
#, no-c-format
msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
msgstr ""
-#: fortran/expr.c:3234
+#: fortran/expr.c:3326
#, no-c-format
msgid "Bad target in pointer assignment in PURE procedure at %L"
msgstr ""
-#: fortran/expr.c:3240
+#: fortran/expr.c:3332
#, no-c-format
msgid "Pointer assignment with vector subscript on rhs at %L"
msgstr ""
-#: fortran/expr.c:3248
+#: fortran/expr.c:3340
#, no-c-format
msgid "Pointer assignment target has PROTECTED attribute at %L"
msgstr ""
-#: fortran/gfortranspec.c:251
+#: fortran/gfortranspec.c:245
#, c-format
msgid "overflowed output arg list for '%s'"
msgstr ""
-#: fortran/gfortranspec.c:384
+#: fortran/gfortranspec.c:374
#, c-format
msgid ""
"GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n"
@@ -6084,287 +6372,292 @@ msgid ""
"\n"
msgstr ""
-#: fortran/gfortranspec.c:406 fortran/gfortranspec.c:445
+#: fortran/gfortranspec.c:396 fortran/gfortranspec.c:435
#, c-format
msgid "argument to '%s' missing"
msgstr ""
-#: fortran/gfortranspec.c:410
+#: fortran/gfortranspec.c:400
#, c-format
msgid "no input files; unwilling to write output files"
msgstr ""
-#: fortran/gfortranspec.c:432
+#: fortran/gfortranspec.c:422
#, c-format
msgid "Warning: Using -M <directory> is deprecated, use -J instead\n"
msgstr ""
-#: fortran/gfortranspec.c:578
+#: fortran/gfortranspec.c:557
#, c-format
msgid "Driving:"
msgstr ""
-#: fortran/interface.c:173
+#: fortran/interface.c:174
#, no-c-format
msgid "Syntax error in generic specification at %C"
msgstr ""
-#: fortran/interface.c:200
+#: fortran/interface.c:201
#, no-c-format
msgid "Syntax error: Trailing garbage in INTERFACE statement at %C"
msgstr ""
-#: fortran/interface.c:219
+#: fortran/interface.c:220
#, no-c-format
msgid "Dummy procedure '%s' at %C cannot have a generic interface"
msgstr ""
-#: fortran/interface.c:252
+#: fortran/interface.c:253
#, no-c-format
msgid "Fortran 2003: ABSTRACT INTERFACE at %C"
msgstr ""
-#: fortran/interface.c:260
+#: fortran/interface.c:261
#, no-c-format
msgid "Syntax error in ABSTRACT INTERFACE statement at %C"
msgstr ""
-#: fortran/interface.c:291
+#: fortran/interface.c:292
#, no-c-format
msgid "Syntax error: Trailing garbage in END INTERFACE statement at %C"
msgstr ""
-#: fortran/interface.c:304
+#: fortran/interface.c:305
#, no-c-format
msgid "Expected a nameless interface at %C"
msgstr ""
-#: fortran/interface.c:315
+#: fortran/interface.c:316
#, no-c-format
msgid "Expected 'END INTERFACE ASSIGNMENT (=)' at %C"
msgstr ""
-#: fortran/interface.c:317
+#: fortran/interface.c:318
#, no-c-format
msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C"
msgstr ""
-#: fortran/interface.c:331
+#: fortran/interface.c:332
#, no-c-format
msgid "Expecting 'END INTERFACE OPERATOR (.%s.)' at %C"
msgstr ""
-#: fortran/interface.c:342
+#: fortran/interface.c:343
#, no-c-format
msgid "Expecting 'END INTERFACE %s' at %C"
msgstr ""
-#: fortran/interface.c:569
+#: fortran/interface.c:574
#, no-c-format
msgid "Alternate return cannot appear in operator interface at %L"
msgstr ""
-#: fortran/interface.c:599
+#: fortran/interface.c:602
#, no-c-format
msgid "Operator interface at %L has the wrong number of arguments"
msgstr ""
-#: fortran/interface.c:610
+#: fortran/interface.c:613
#, no-c-format
msgid "Assignment operator interface at %L must be a SUBROUTINE"
msgstr ""
-#: fortran/interface.c:616
+#: fortran/interface.c:619
#, no-c-format
msgid "Assignment operator interface at %L must have two arguments"
msgstr ""
-#: fortran/interface.c:631
+#: fortran/interface.c:634
#, no-c-format
msgid ""
"Assignment operator interface at %L must not redefine an INTRINSIC type "
"assignment"
msgstr ""
-#: fortran/interface.c:640
+#: fortran/interface.c:643
#, no-c-format
msgid "Intrinsic operator interface at %L must be a FUNCTION"
msgstr ""
-#: fortran/interface.c:650
+#: fortran/interface.c:654
#, no-c-format
msgid ""
"First argument of defined assignment at %L must be INTENT(OUT) or INTENT"
"(INOUT)"
msgstr ""
-#: fortran/interface.c:654
+#: fortran/interface.c:661
#, no-c-format
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:660 fortran/resolve.c:10741
+#: fortran/interface.c:670 fortran/resolve.c:11879
#, no-c-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:664 fortran/resolve.c:10753
+#: fortran/interface.c:677 fortran/resolve.c:11897
#, no-c-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:767
+#: fortran/interface.c:782
#, no-c-format
msgid "Operator interface at %L conflicts with intrinsic interface"
msgstr ""
-#: fortran/interface.c:1029
+#: fortran/interface.c:1074
#, no-c-format
msgid "Procedure '%s' in %s at %L has no explicit interface"
msgstr ""
-#: fortran/interface.c:1032
+#: fortran/interface.c:1077
#, no-c-format
msgid "Procedure '%s' in %s at %L is neither function nor subroutine"
msgstr ""
-#: fortran/interface.c:1087 fortran/interface.c:1093
+#: fortran/interface.c:1133 fortran/interface.c:1139
#, no-c-format
msgid "Ambiguous interfaces '%s' and '%s' in %s at %L"
msgstr ""
-#: fortran/interface.c:1129
+#: fortran/interface.c:1175
#, no-c-format
msgid "'%s' at %L is not a module procedure"
msgstr ""
-#: fortran/interface.c:1372
+#: fortran/interface.c:1408
#, no-c-format
-msgid "Type/rank mismatch in argument '%s' at %L"
+msgid "Invalid procedure argument at %L"
msgstr ""
-#: fortran/interface.c:1381
+#: fortran/interface.c:1416
+#, no-c-format
+msgid "Interface mismatch in dummy procedure '%s' at %L: %s"
+msgstr ""
+
+#: fortran/interface.c:1440
#, no-c-format
msgid "Type mismatch in argument '%s' at %L; passed %s to %s"
msgstr ""
-#: fortran/interface.c:1399 fortran/interface.c:1439
+#: fortran/interface.c:1458 fortran/interface.c:1498
#, no-c-format
msgid "Rank mismatch in argument '%s' at %L (%d and %d)"
msgstr ""
-#: fortran/interface.c:1426
+#: fortran/interface.c:1485
#, no-c-format
msgid ""
"Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%"
"s' at %L"
msgstr ""
-#: fortran/interface.c:1451
+#: fortran/interface.c:1510
#, no-c-format
msgid "Element of assumed-shaped array passed to dummy argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1768
+#: fortran/interface.c:1827
#, no-c-format
msgid "Keyword argument '%s' at %L is not in the procedure"
msgstr ""
-#: fortran/interface.c:1776
+#: fortran/interface.c:1835
#, no-c-format
msgid ""
"Keyword argument '%s' at %L is already associated with another actual "
"argument"
msgstr ""
-#: fortran/interface.c:1786
+#: fortran/interface.c:1845
#, no-c-format
msgid "More actual than formal arguments in procedure call at %L"
msgstr ""
-#: fortran/interface.c:1798 fortran/interface.c:2031
+#: fortran/interface.c:1857 fortran/interface.c:2093
#, no-c-format
msgid "Missing alternate return spec in subroutine call at %L"
msgstr ""
-#: fortran/interface.c:1806
+#: fortran/interface.c:1865
#, no-c-format
msgid "Unexpected alternate return spec in subroutine call at %L"
msgstr ""
-#: fortran/interface.c:1829
+#: fortran/interface.c:1888
#, no-c-format
msgid ""
"Character length mismatch (%ld/%ld) between actual argument and pointer or "
"allocatable dummy argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1836
+#: fortran/interface.c:1895
#, no-c-format
msgid ""
"Character length mismatch (%ld/%ld) between actual argument and assumed-"
"shape dummy argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1852
+#: fortran/interface.c:1911
#, no-c-format
msgid ""
"Character length of actual argument shorter than of dummy argument '%s' (%lu/"
"%lu) at %L"
msgstr ""
-#: fortran/interface.c:1857
+#: fortran/interface.c:1916
#, no-c-format
msgid ""
"Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) "
"at %L"
msgstr ""
-#: fortran/interface.c:1871
+#: fortran/interface.c:1933
#, no-c-format
msgid "Expected a procedure pointer for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1883
+#: fortran/interface.c:1945
#, no-c-format
msgid "Expected a procedure for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1893
+#: fortran/interface.c:1955
#, no-c-format
msgid "Expected a PURE procedure for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1907
+#: fortran/interface.c:1969
#, no-c-format
msgid "Actual argument for '%s' cannot be an assumed-size array at %L"
msgstr ""
-#: fortran/interface.c:1916
+#: fortran/interface.c:1978
#, no-c-format
msgid "Actual argument for '%s' must be a pointer at %L"
msgstr ""
-#: fortran/interface.c:1925
+#: fortran/interface.c:1987
#, no-c-format
msgid "Actual argument for '%s' must be ALLOCATABLE at %L"
msgstr ""
-#: fortran/interface.c:1938
+#: fortran/interface.c:2000
#, no-c-format
msgid ""
"Actual argument at %L must be definable as the dummy argument '%s' is INTENT "
"= OUT/INOUT"
msgstr ""
-#: fortran/interface.c:1947
+#: fortran/interface.c:2009
#, no-c-format
msgid ""
"Actual argument at %L is use-associated with PROTECTED attribute and dummy "
"argument '%s' is INTENT = OUT/INOUT"
msgstr ""
-#: fortran/interface.c:1960
+#: fortran/interface.c:2022
#, no-c-format
msgid ""
"Array-section actual argument with vector subscripts at %L is incompatible "
@@ -6372,80 +6665,88 @@ msgid ""
"'%s'"
msgstr ""
-#: fortran/interface.c:1977
+#: fortran/interface.c:2039
#, no-c-format
msgid ""
"Assumed-shape actual argument at %L is incompatible with the non-assumed-"
"shape dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:1989
+#: fortran/interface.c:2051
#, no-c-format
msgid ""
"Array-section actual argument at %L is incompatible with the non-assumed-"
"shape dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:2008
+#: fortran/interface.c:2070
#, no-c-format
msgid ""
"Pointer-array actual argument at %L requires an assumed-shape or pointer-"
"array dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:2038
+#: fortran/interface.c:2100
#, no-c-format
msgid "Missing actual argument for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:2224
+#: fortran/interface.c:2286
#, no-c-format
msgid ""
"Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) "
"argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:2280
+#: fortran/interface.c:2342
#, no-c-format
msgid ""
"Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)"
msgstr ""
-#: fortran/interface.c:2290
+#: fortran/interface.c:2352
#, no-c-format
msgid ""
"Procedure argument at %L is local to a PURE procedure and is passed to an "
"INTENT(%s) argument"
msgstr ""
-#: fortran/interface.c:2298
+#: fortran/interface.c:2360
#, no-c-format
msgid ""
"Procedure argument at %L is local to a PURE procedure and has the POINTER "
"attribute"
msgstr ""
-#: fortran/interface.c:2324
+#: fortran/interface.c:2386
#, no-c-format
msgid "Procedure '%s' called with an implicit interface at %L"
msgstr ""
-#: fortran/interface.c:2335
+#: fortran/interface.c:2397
#, no-c-format
msgid "Keyword argument requires explicit interface for procedure '%s' at %L"
msgstr ""
-#: fortran/interface.c:2570
+#: fortran/interface.c:2429
#, no-c-format
-msgid "Function '%s' called in lieu of an operator at %L must be PURE"
+msgid ""
+"Procedure pointer component '%s' called with an implicit interface at %L"
msgstr ""
-#: fortran/interface.c:2650
+#: fortran/interface.c:2440
+#, no-c-format
+msgid ""
+"Keyword argument requires explicit interface for procedure pointer component "
+"'%s' at %L"
+msgstr ""
+
+#: fortran/interface.c:2916
#, no-c-format
msgid "Entity '%s' at %C is already present in the interface"
msgstr ""
-#: fortran/intrinsic.c:842
+#: fortran/intrinsic.c:961
#, no-c-format
msgid ""
"The intrinsic '%s' at %L is not included in the selected standard but %s and "
@@ -6453,818 +6754,957 @@ msgid ""
"option or define -fall-intrinsics to allow this intrinsic."
msgstr ""
-#: fortran/intrinsic.c:3083
+#: fortran/intrinsic.c:3241
#, no-c-format
msgid "Too many arguments in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3098
+#: fortran/intrinsic.c:3256
#, no-c-format
msgid ""
"The argument list functions %%VAL, %%LOC or %%REF are not allowed in this "
"context at %L"
msgstr ""
-#: fortran/intrinsic.c:3101
+#: fortran/intrinsic.c:3259
#, no-c-format
msgid "Can't find keyword named '%s' in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3108
+#: fortran/intrinsic.c:3266
#, no-c-format
msgid "Argument '%s' is appears twice in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3122
+#: fortran/intrinsic.c:3280
#, no-c-format
msgid "Missing actual argument '%s' in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3137
+#: fortran/intrinsic.c:3295
#, no-c-format
msgid "ALTERNATE RETURN not permitted at %L"
msgstr ""
-#: fortran/intrinsic.c:3194
+#: fortran/intrinsic.c:3352
#, no-c-format
msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s"
msgstr ""
-#: fortran/intrinsic.c:3560
+#: fortran/intrinsic.c:3717
#, no-c-format
msgid "Intrinsic '%s' (is %s) is used at %L"
msgstr ""
-#: fortran/intrinsic.c:3624
+#: fortran/intrinsic.c:3781
#, no-c-format
msgid "Fortran 2003: Function '%s' as initialization expression at %L"
msgstr ""
-#: fortran/intrinsic.c:3700
+#: fortran/intrinsic.c:3857
#, no-c-format
msgid ""
"Fortran 2003: Elemental function as initialization expression with non-"
"integer/non-character arguments at %L"
msgstr ""
-#: fortran/intrinsic.c:3761
+#: fortran/intrinsic.c:3918
#, no-c-format
msgid "Subroutine call to intrinsic '%s' at %L is not PURE"
msgstr ""
-#: fortran/intrinsic.c:3833
+#: fortran/intrinsic.c:3990
#, no-c-format
msgid "Extension: Conversion from %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3836
+#: fortran/intrinsic.c:3993
#, no-c-format
msgid "Conversion from %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3883
+#: fortran/intrinsic.c:4041
#, no-c-format
msgid "Can't convert %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3979
+#: fortran/intrinsic.c:4137
#, no-c-format
msgid ""
"'%s' declared at %L may shadow the intrinsic of the same name. In order to "
"call the intrinsic, explicit INTRINSIC declarations may be required."
msgstr ""
-#: fortran/intrinsic.c:3984
+#: fortran/intrinsic.c:4142
#, no-c-format
msgid ""
"'%s' declared at %L is also the name of an intrinsic. It can only be called "
"via an explicit interface or if declared EXTERNAL."
msgstr ""
-#: fortran/io.c:165 fortran/primary.c:768
+#: fortran/io.c:167 fortran/primary.c:771
#, no-c-format
msgid "Extension: backslash character at %C"
msgstr ""
-#: fortran/io.c:201 fortran/io.c:204
+#: fortran/io.c:203 fortran/io.c:206
#, no-c-format
msgid "Extension: Tab character in format at %C"
msgstr ""
-#: fortran/io.c:448
+#: fortran/io.c:452
#, no-c-format
msgid "Fortran 2003: DP format specifier not allowed at %C"
msgstr ""
-#: fortran/io.c:455
+#: fortran/io.c:459
#, no-c-format
msgid "Fortran 2003: DC format specifier not allowed at %C"
msgstr ""
-#: fortran/io.c:491
+#: fortran/io.c:548
msgid "Positive width required"
msgstr ""
-#: fortran/io.c:492
+#: fortran/io.c:549
msgid "Nonnegative width required"
msgstr ""
-#: fortran/io.c:493
+#: fortran/io.c:550
msgid "Unexpected element '%c' in format string at %L"
msgstr ""
-#: fortran/io.c:495
+#: fortran/io.c:552
msgid "Unexpected end of format string"
msgstr ""
-#: fortran/io.c:496
+#: fortran/io.c:553
msgid "Zero width in format descriptor"
msgstr ""
-#: fortran/io.c:516
+#: fortran/io.c:573
msgid "Missing leading left parenthesis"
msgstr ""
-#: fortran/io.c:563
+#: fortran/io.c:602
+msgid "Left parenthesis required after '*'"
+msgstr ""
+
+#: fortran/io.c:633
msgid "Expected P edit descriptor"
msgstr ""
#. P requires a prior number.
-#: fortran/io.c:571
+#: fortran/io.c:641
msgid "P descriptor requires leading scale factor"
msgstr ""
-#. X requires a prior number if we're being pedantic.
-#: fortran/io.c:576
+#: fortran/io.c:648
#, no-c-format
-msgid "Extension: X descriptor requires leading space count at %C"
+msgid "Extension: X descriptor requires leading space count at %L"
msgstr ""
-#: fortran/io.c:600
+#: fortran/io.c:678
#, no-c-format
-msgid "Extension: $ descriptor at %C"
+msgid "Extension: $ descriptor at %L"
msgstr ""
-#: fortran/io.c:605
+#: fortran/io.c:683
#, no-c-format
-msgid "$ should be the last specifier in format at %C"
+msgid "$ should be the last specifier in format at %L"
msgstr ""
-#: fortran/io.c:654
-msgid "Repeat count cannot follow P descriptor"
+#: fortran/io.c:736 fortran/io.c:750
+msgid "Comma required after P descriptor"
msgstr ""
-#: fortran/io.c:669
+#: fortran/io.c:764
msgid "Positive width required with T descriptor"
msgstr ""
-#: fortran/io.c:684
+#: fortran/io.c:781
#, no-c-format
-msgid "Extension: Missing positive width after L descriptor at %C"
+msgid "Extension: Missing positive width after L descriptor at %L"
msgstr ""
-#: fortran/io.c:727
+#: fortran/io.c:825
#, no-c-format
-msgid "Fortran 2008: 'G0' in format at %C"
+msgid "Fortran 2008: 'G0' in format at %L"
msgstr ""
-#: fortran/io.c:745
+#: fortran/io.c:843
msgid "E specifier not allowed with g0 descriptor"
msgstr ""
-#: fortran/io.c:759 fortran/io.c:761 fortran/io.c:822 fortran/io.c:824
+#: fortran/io.c:853
#, no-c-format
-msgid "Period required in format specifier at %C"
+msgid "Positive width required in format specifier %s at %L"
msgstr ""
-#: fortran/io.c:793
+#: fortran/io.c:869 fortran/io.c:876
+#, no-c-format
+msgid "Period required in format specifier %s at %L"
+msgstr ""
+
+#: fortran/io.c:913
msgid "Positive exponent width required"
msgstr ""
-#: fortran/io.c:842
+#: fortran/io.c:943
+msgid "Period required in format specifier"
+msgstr ""
+
+#: fortran/io.c:948
+#, no-c-format
+msgid "Period required in format specifier at %L"
+msgstr ""
+
+#: fortran/io.c:970
#, no-c-format
-msgid "The H format specifier at %C is a Fortran 95 deleted feature"
+msgid "The H format specifier at %L is a Fortran 95 deleted feature"
msgstr ""
-#: fortran/io.c:927 fortran/io.c:984
+#: fortran/io.c:1058 fortran/io.c:1121
#, no-c-format
-msgid "Extension: Missing comma at %C"
+msgid "Extension: Missing comma at %L"
msgstr ""
-#: fortran/io.c:999
+#: fortran/io.c:1140
#, no-c-format
msgid "%s in format string at %L"
msgstr ""
-#: fortran/io.c:1044
+#: fortran/io.c:1185
#, no-c-format
msgid "Format statement in module main block at %C"
msgstr ""
-#: fortran/io.c:1050
+#: fortran/io.c:1191
#, no-c-format
msgid "Missing format label at %C"
msgstr ""
-#: fortran/io.c:1110 fortran/io.c:1141 fortran/io.c:1203
+#: fortran/io.c:1251 fortran/io.c:1282 fortran/io.c:1344
#, no-c-format
msgid "Invalid value for %s specification at %C"
msgstr ""
-#: fortran/io.c:1116 fortran/io.c:1147
+#: fortran/io.c:1257 fortran/io.c:1288
#, no-c-format
msgid "Duplicate %s specification at %C"
msgstr ""
-#: fortran/io.c:1154
+#: fortran/io.c:1295
#, no-c-format
msgid "Variable %s cannot be INTENT(IN) at %C"
msgstr ""
-#: fortran/io.c:1161
+#: fortran/io.c:1302
#, no-c-format
msgid "Variable %s cannot be assigned in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:1209
+#: fortran/io.c:1350
#, no-c-format
msgid "Duplicate %s label specification at %C"
msgstr ""
-#: fortran/io.c:1229
+#: fortran/io.c:1370
#, no-c-format
msgid ""
"Constant expression in FORMAT tag at %L must be of type default CHARACTER"
msgstr ""
-#: fortran/io.c:1242
+#: fortran/io.c:1386
#, no-c-format
msgid "FORMAT tag at %L must be of type CHARACTER or INTEGER"
msgstr ""
-#: fortran/io.c:1248
+#: fortran/io.c:1392
#, no-c-format
msgid "Deleted feature: ASSIGNED variable in FORMAT tag at %L"
msgstr ""
-#: fortran/io.c:1254
+#: fortran/io.c:1398
#, no-c-format
msgid "Variable '%s' at %L has not been assigned a format label"
msgstr ""
-#: fortran/io.c:1261
+#: fortran/io.c:1405
#, no-c-format
msgid "Scalar '%s' in FORMAT tag at %L is not an ASSIGNED variable"
msgstr ""
-#: fortran/io.c:1274
+#: fortran/io.c:1417
#, no-c-format
-msgid "Extension: Character array in FORMAT tag at %L"
+msgid "Extension: Non-character in FORMAT tag at %L"
msgstr ""
-#: fortran/io.c:1280
+#: fortran/io.c:1423
#, no-c-format
-msgid "Extension: Non-character in FORMAT tag at %L"
+msgid "Non-character assumed shape array element in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1430
+#, no-c-format
+msgid "Non-character assumed size array element in FORMAT tag at %L"
+msgstr ""
+
+#: fortran/io.c:1437
+#, no-c-format
+msgid "Non-character pointer array element in FORMAT tag at %L"
msgstr ""
-#: fortran/io.c:1305
+#: fortran/io.c:1463
#, no-c-format
msgid "%s tag at %L must be of type %s"
msgstr ""
-#: fortran/io.c:1312
+#: fortran/io.c:1470
#, no-c-format
msgid "%s tag at %L must be scalar"
msgstr ""
-#: fortran/io.c:1318
+#: fortran/io.c:1476
#, no-c-format
msgid "Fortran 2003: IOMSG tag at %L"
msgstr ""
-#: fortran/io.c:1326
+#: fortran/io.c:1484
#, no-c-format
msgid "Fortran 95 requires default INTEGER in %s tag at %L"
msgstr ""
-#: fortran/io.c:1334
+#: fortran/io.c:1492
#, no-c-format
msgid "Extension: CONVERT tag at %L"
msgstr ""
-#: fortran/io.c:1515 fortran/io.c:1523
+#: fortran/io.c:1678 fortran/io.c:1686
#, no-c-format
msgid "Fortran 2003: %s specifier in %s statement at %C has value '%s'"
msgstr ""
-#: fortran/io.c:1542 fortran/io.c:1550
+#: fortran/io.c:1705 fortran/io.c:1713
#, no-c-format
msgid "Extension: %s specifier in %s statement at %C has value '%s'"
msgstr ""
-#: fortran/io.c:1563 fortran/io.c:1571
+#: fortran/io.c:1726 fortran/io.c:1734
#, no-c-format
msgid "%s specifier in %s statement at %C has invalid value '%s'"
msgstr ""
-#: fortran/io.c:1626
+#: fortran/io.c:1789
#, no-c-format
msgid "OPEN statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:1659
+#: fortran/io.c:1800
+#, no-c-format
+msgid "UNIT specifier not allowed with NEWUNIT at %C"
+msgstr ""
+
+#: fortran/io.c:1808
+#, no-c-format
+msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %C"
+msgstr ""
+
+#: fortran/io.c:1842
#, no-c-format
msgid "Fortran 2003: ASYNCHRONOUS= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1677 fortran/io.c:3060
+#: fortran/io.c:1860 fortran/io.c:3274
#, no-c-format
msgid "Fortran 2003: BLANK= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1695 fortran/io.c:3039
+#: fortran/io.c:1878 fortran/io.c:3253
#, no-c-format
msgid "Fortran 2003: DECIMAL= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1713 fortran/io.c:3150
+#: fortran/io.c:1896 fortran/io.c:3361
#, no-c-format
msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1731
+#: fortran/io.c:1914
#, no-c-format
msgid "Fortran 2003: ENCODING= at %C not allowed in Fortran 95"
msgstr ""
-#. When implemented, change the following to use gfc_notify_std F2003.
-#: fortran/io.c:1783
+#: fortran/io.c:1965
#, no-c-format
-msgid "Fortran F2003: ROUND= specifier at %C not implemented"
+msgid "Fortran F2003: ROUND= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:1802
+#: fortran/io.c:1985
#, no-c-format
msgid "Fortran 2003: SIGN= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:2015
+#: fortran/io.c:2198
#, no-c-format
msgid "CLOSE statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2152 fortran/match.c:1949
+#: fortran/io.c:2245
+#, no-c-format
+msgid "UNIT number in CLOSE statement at %L must be non-negative"
+msgstr ""
+
+#: fortran/io.c:2343 fortran/match.c:1976
#, no-c-format
msgid "%s statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2208
+#: fortran/io.c:2375 fortran/io.c:2783
+#, no-c-format
+msgid "UNIT number in statement at %L must be non-negative"
+msgstr ""
+
+#: fortran/io.c:2407
#, no-c-format
msgid "Fortran 2003: FLUSH statement at %C"
msgstr ""
-#: fortran/io.c:2264
+#: fortran/io.c:2463
#, no-c-format
msgid "Duplicate UNIT specification at %C"
msgstr ""
-#: fortran/io.c:2324
+#: fortran/io.c:2523
#, no-c-format
msgid "Duplicate format specification at %C"
msgstr ""
-#: fortran/io.c:2341
+#: fortran/io.c:2540
#, no-c-format
msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C"
msgstr ""
-#: fortran/io.c:2377
+#: fortran/io.c:2576
#, no-c-format
msgid "Duplicate NML specification at %C"
msgstr ""
-#: fortran/io.c:2386
+#: fortran/io.c:2585
#, no-c-format
msgid "Symbol '%s' at %C must be a NAMELIST group name"
msgstr ""
-#: fortran/io.c:2451
+#: fortran/io.c:2650
#, no-c-format
msgid "END tag at %C not allowed in output statement"
msgstr ""
-#: fortran/io.c:2528
+#: fortran/io.c:2721
+#, no-c-format
+msgid "UNIT not specified at %L"
+msgstr ""
+
+#: fortran/io.c:2733
#, no-c-format
msgid ""
"UNIT specification at %L must be an INTEGER expression or a CHARACTER "
"variable"
msgstr ""
-#: fortran/io.c:2553
+#: fortran/io.c:2758
#, no-c-format
msgid "Invalid form of WRITE statement at %L, UNIT required"
msgstr ""
-#: fortran/io.c:2564
+#: fortran/io.c:2769
#, no-c-format
msgid "Internal unit with vector subscript at %L"
msgstr ""
-#: fortran/io.c:2571
+#: fortran/io.c:2776
#, no-c-format
msgid "External IO UNIT cannot be an array at %L"
msgstr ""
-#: fortran/io.c:2576
+#: fortran/io.c:2788
#, no-c-format
msgid "Extension: Comma before i/o item list at %L"
msgstr ""
-#: fortran/io.c:2586
+#: fortran/io.c:2798
#, no-c-format
msgid "ERR tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:2598
+#: fortran/io.c:2810
#, no-c-format
msgid "END tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:2610
+#: fortran/io.c:2822
#, no-c-format
msgid "EOR tag label %d at %L not defined"
msgstr ""
-#: fortran/io.c:2620
+#: fortran/io.c:2832
#, no-c-format
msgid "FORMAT label %d at %L not defined"
msgstr ""
-#: fortran/io.c:2741
+#: fortran/io.c:2953
#, no-c-format
msgid "Syntax error in I/O iterator at %C"
msgstr ""
-#: fortran/io.c:2772
+#: fortran/io.c:2984
#, no-c-format
msgid "Expected variable in READ statement at %C"
msgstr ""
-#: fortran/io.c:2778
+#: fortran/io.c:2990
#, no-c-format
msgid "Expected expression in %s statement at %C"
msgstr ""
-#: fortran/io.c:2788
+#: fortran/io.c:3000
#, no-c-format
msgid "Variable '%s' in input list at %C cannot be INTENT(IN)"
msgstr ""
-#: fortran/io.c:2797
+#: fortran/io.c:3010
#, no-c-format
msgid "Cannot read to variable '%s' in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2813
+#: fortran/io.c:3027
#, no-c-format
msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure"
msgstr ""
#. A general purpose syntax error.
-#: fortran/io.c:2874 fortran/io.c:3481 fortran/gfortran.h:2232
+#: fortran/io.c:3088 fortran/io.c:3692 fortran/gfortran.h:2362
#, no-c-format
msgid "Syntax error in %s statement at %C"
msgstr ""
-#: fortran/io.c:2959
+#: fortran/io.c:3173
#, no-c-format
msgid "Fortran 2003: Internal file at %L with namelist"
msgstr ""
-#: fortran/io.c:3013
+#: fortran/io.c:3227
#, no-c-format
msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression"
msgstr ""
-#: fortran/io.c:3081
+#: fortran/io.c:3295
#, no-c-format
msgid "Fortran 2003: PAD= at %C not allowed in Fortran 95"
msgstr ""
-#. When implemented, change the following to use gfc_notify_std F2003.
-#. if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: ROUND= at %C "
-#. "not allowed in Fortran 95") == FAILURE)
-#. return MATCH_ERROR;
-#: fortran/io.c:3106
+#: fortran/io.c:3316
#, no-c-format
-msgid "F2003 Feature: ROUND= specifier at %C not implemented"
+msgid "Fortran 2003: ROUND= at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:3299
+#: fortran/io.c:3510
#, no-c-format
msgid "PRINT namelist at %C is an extension"
msgstr ""
-#: fortran/io.c:3451
+#: fortran/io.c:3662
#, no-c-format
msgid "Expected comma in I/O list at %C"
msgstr ""
-#: fortran/io.c:3515
+#: fortran/io.c:3726
#, no-c-format
msgid "PRINT statement at %C not allowed within PURE procedure"
msgstr ""
-#: fortran/io.c:3671 fortran/io.c:3722
+#: fortran/io.c:3882 fortran/io.c:3933
#, no-c-format
msgid "INQUIRE statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:3698
+#: fortran/io.c:3909
#, no-c-format
msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
msgstr ""
-#: fortran/io.c:3708 fortran/trans-io.c:1176
+#: fortran/io.c:3919 fortran/trans-io.c:1181
#, no-c-format
msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
msgstr ""
-#: fortran/io.c:3715
+#: fortran/io.c:3926
#, no-c-format
msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
msgstr ""
-#: fortran/io.c:3728
+#: fortran/io.c:3939
#, no-c-format
msgid ""
"INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
msgstr ""
-#: fortran/io.c:3888
+#: fortran/io.c:4099
#, no-c-format
msgid "Fortran 2003: WAIT at %C not allowed in Fortran 95"
msgstr ""
-#: fortran/io.c:3894
+#: fortran/io.c:4105
#, no-c-format
msgid "WAIT statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/match.c:158
+#: fortran/match.c:161
#, no-c-format
msgid "Missing ')' in statement at or before %L"
msgstr ""
-#: fortran/match.c:163
+#: fortran/match.c:166
#, no-c-format
msgid "Missing '(' in statement at or before %L"
msgstr ""
-#: fortran/match.c:360
+#: fortran/match.c:363
#, no-c-format
msgid "Integer too large at %C"
msgstr ""
-#: fortran/match.c:453 fortran/parse.c:599
+#: fortran/match.c:456 fortran/parse.c:631
#, no-c-format
msgid "Too many digits in statement label at %C"
msgstr ""
-#: fortran/match.c:459
+#: fortran/match.c:462
#, no-c-format
msgid "Statement label at %C is zero"
msgstr ""
-#: fortran/match.c:492
+#: fortran/match.c:495
#, no-c-format
msgid "Label name '%s' at %C is ambiguous"
msgstr ""
-#: fortran/match.c:498
+#: fortran/match.c:501
#, no-c-format
msgid "Duplicate construct label '%s' at %C"
msgstr ""
-#: fortran/match.c:529
+#: fortran/match.c:532
#, no-c-format
msgid "Invalid character in name at %C"
msgstr ""
-#: fortran/match.c:542 fortran/match.c:623
+#: fortran/match.c:545 fortran/match.c:626
#, no-c-format
msgid "Name at %C is too long"
msgstr ""
-#: fortran/match.c:553
+#: fortran/match.c:556
#, no-c-format
msgid ""
"Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension"
msgstr ""
-#: fortran/match.c:604 fortran/match.c:652
+#: fortran/match.c:607 fortran/match.c:655
#, no-c-format
msgid "Invalid C name in NAME= specifier at %C"
msgstr ""
-#: fortran/match.c:643
+#: fortran/match.c:646
#, no-c-format
msgid "Embedded space in NAME= specifier at %C"
msgstr ""
-#: fortran/match.c:968
+#: fortran/match.c:971
#, no-c-format
msgid "Loop variable at %C cannot be a sub-component"
msgstr ""
-#: fortran/match.c:974
+#: fortran/match.c:977
#, no-c-format
msgid "Loop variable '%s' at %C cannot be INTENT(IN)"
msgstr ""
-#: fortran/match.c:1007
+#: fortran/match.c:1010
#, no-c-format
msgid "Expected a step value in iterator at %C"
msgstr ""
-#: fortran/match.c:1019
+#: fortran/match.c:1022
#, no-c-format
msgid "Syntax error in iterator at %C"
msgstr ""
-#: fortran/match.c:1260
+#: fortran/match.c:1263
#, no-c-format
msgid "Invalid form of PROGRAM statement at %C"
msgstr ""
-#: fortran/match.c:1386 fortran/match.c:1467
+#: fortran/match.c:1389 fortran/match.c:1470
#, no-c-format
-msgid "Obsolescent: arithmetic IF statement at %C"
+msgid "Obsolescent feature: Arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1442
+#: fortran/match.c:1445
#, no-c-format
msgid "Syntax error in IF-expression at %C"
msgstr ""
-#: fortran/match.c:1453
+#: fortran/match.c:1456
#, no-c-format
msgid "Block label not appropriate for arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1491
+#: fortran/match.c:1494
#, no-c-format
msgid "Block label is not appropriate for IF statement at %C"
msgstr ""
-#: fortran/match.c:1571 fortran/primary.c:2931
+#: fortran/match.c:1574 fortran/primary.c:2992
#, no-c-format
msgid "Cannot assign to a named constant at %C"
msgstr ""
-#: fortran/match.c:1581
+#: fortran/match.c:1584
#, no-c-format
msgid "Unclassifiable statement in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1588
+#: fortran/match.c:1591
#, no-c-format
msgid "Syntax error in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1632
+#: fortran/match.c:1635
#, no-c-format
msgid "Unexpected junk after ELSE statement at %C"
msgstr ""
-#: fortran/match.c:1638 fortran/match.c:1673
+#: fortran/match.c:1641 fortran/match.c:1676
#, no-c-format
msgid "Label '%s' at %C doesn't match IF label '%s'"
msgstr ""
-#: fortran/match.c:1667
+#: fortran/match.c:1670
#, no-c-format
msgid "Unexpected junk after ELSE IF statement at %C"
msgstr ""
-#: fortran/match.c:1835
+#: fortran/match.c:1862
#, no-c-format
msgid "Name '%s' in %s statement at %C is not a loop name"
msgstr ""
-#: fortran/match.c:1851
+#: fortran/match.c:1878
#, no-c-format
msgid "%s statement at %C is not within a loop"
msgstr ""
-#: fortran/match.c:1854
+#: fortran/match.c:1881
#, no-c-format
msgid "%s statement at %C is not within loop '%s'"
msgstr ""
-#: fortran/match.c:1862
+#: fortran/match.c:1889
#, no-c-format
msgid "%s statement at %C leaving OpenMP structured block"
msgstr ""
-#: fortran/match.c:1875
+#: fortran/match.c:1902
#, no-c-format
msgid "EXIT statement at %C terminating !$OMP DO loop"
msgstr ""
-#: fortran/match.c:1927
+#: fortran/match.c:1954
#, no-c-format
msgid "Too many digits in STOP code at %C"
msgstr ""
-#: fortran/match.c:1980
+#: fortran/match.c:2007
#, no-c-format
msgid "Deleted feature: PAUSE statement at %C"
msgstr ""
-#: fortran/match.c:2028
+#: fortran/match.c:2055
#, no-c-format
msgid "Deleted feature: ASSIGN statement at %C"
msgstr ""
-#: fortran/match.c:2074
+#: fortran/match.c:2101
#, no-c-format
msgid "Deleted feature: Assigned GOTO statement at %C"
msgstr ""
-#: fortran/match.c:2121 fortran/match.c:2173
+#: fortran/match.c:2148 fortran/match.c:2200
#, no-c-format
msgid "Statement label list in GOTO at %C cannot be empty"
msgstr ""
-#: fortran/match.c:2258
+#: fortran/match.c:2210
+#, no-c-format
+msgid "Obsolescent feature: Computed GOTO at %C"
+msgstr ""
+
+#. Enforce F03:C476.
+#: fortran/match.c:2273
+#, no-c-format
+msgid "'%s' at %L is not an accessible derived type"
+msgstr ""
+
+#: fortran/match.c:2351
+#, no-c-format
+msgid "Derived type '%s' at %L may not be ABSTRACT"
+msgstr ""
+
+#: fortran/match.c:2369
+#, no-c-format
+msgid "Invalid type-spec at %C"
+msgstr ""
+
+#: fortran/match.c:2401
+#, no-c-format
+msgid ""
+"Source-expr at %L must be scalar or have the same rank as the allocate-"
+"object at %L"
+msgstr ""
+
+#: fortran/match.c:2429
+#, no-c-format
+msgid "Source-expr at %L and allocate-object at %L must have the same shape"
+msgstr ""
+
+#: fortran/match.c:2474
+#, no-c-format
+msgid "Fortran 2003: typespec in ALLOCATE at %L"
+msgstr ""
+
+#: fortran/match.c:2506
#, no-c-format
msgid "Bad allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2274 fortran/match.c:2476
+#: fortran/match.c:2517
+#, no-c-format
+msgid "Type of entity at %L is type incompatible with typespec"
+msgstr ""
+
+#: fortran/match.c:2525
+#, no-c-format
+msgid ""
+"Kind type parameter for entity at %L differs from the kind type parameter of "
+"the typespec"
+msgstr ""
+
+#: fortran/match.c:2552 fortran/match.c:2829
#, no-c-format
msgid ""
"Allocate-object at %C is not a nonprocedure pointer or an allocatable "
"variable"
msgstr ""
-#: fortran/match.c:2291 fortran/match.c:2493
+#: fortran/match.c:2570 fortran/match.c:2846
#, no-c-format
msgid "Redundant STAT tag found at %L "
msgstr ""
-#: fortran/match.c:2311 fortran/match.c:2513
+#: fortran/match.c:2589
#, no-c-format
-msgid "Fortran 2003: ERRMSG at %L"
+msgid "Fortran 2003: ERRMSG tag at %L"
msgstr ""
-#: fortran/match.c:2317 fortran/match.c:2519
+#: fortran/match.c:2596 fortran/match.c:2872
#, no-c-format
msgid "Redundant ERRMSG tag found at %L "
msgstr ""
-#: fortran/match.c:2385
+#: fortran/match.c:2612
+#, no-c-format
+msgid "Fortran 2003: SOURCE tag at %L"
+msgstr ""
+
+#: fortran/match.c:2619
+#, no-c-format
+msgid "Redundant SOURCE tag found at %L "
+msgstr ""
+
+#: fortran/match.c:2626
+#, no-c-format
+msgid "SOURCE tag at %L conflicts with the typespec at %L"
+msgstr ""
+
+#: fortran/match.c:2633
+#, no-c-format
+msgid "SOURCE tag at %L requires only a single entity in the allocation-list"
+msgstr ""
+
+#: fortran/match.c:2642
+#, no-c-format
+msgid "Type of entity at %L is type incompatible with source-expr at %L"
+msgstr ""
+
+#: fortran/match.c:2650
+#, no-c-format
+msgid ""
+"The allocate-object at %L and the source-expr at %L shall have the same kind "
+"type parameter"
+msgstr ""
+
+#: fortran/match.c:2727
#, no-c-format
msgid "Illegal variable in NULLIFY at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2463
+#: fortran/match.c:2813
#, no-c-format
msgid "Illegal allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2573
+#: fortran/match.c:2866
+#, no-c-format
+msgid "Fortran 2003: ERRMSG at %L"
+msgstr ""
+
+#: fortran/match.c:2926
#, no-c-format
msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
msgstr ""
-#: fortran/match.c:2604
+#: fortran/match.c:2931
+#, no-c-format
+msgid "Obsolescent feature: Alternate RETURN at %C"
+msgstr ""
+
+#: fortran/match.c:2961
#, no-c-format
msgid "Extension: RETURN statement in main program at %C"
msgstr ""
-#: fortran/match.c:2635
+#: fortran/match.c:2992
#, no-c-format
msgid "Expected component reference at %C"
msgstr ""
-#: fortran/match.c:2641
+#: fortran/match.c:2998
#, no-c-format
msgid "Junk after CALL at %C"
msgstr ""
-#: fortran/match.c:2651
+#: fortran/match.c:3008
#, no-c-format
msgid "Expected type-bound procedure or procedure pointer component at %C"
msgstr ""
-#: fortran/match.c:2868
+#: fortran/match.c:3226
#, no-c-format
msgid "Syntax error in common block name at %C"
msgstr ""
-#: fortran/match.c:2904
+#: fortran/match.c:3262
#, no-c-format
msgid "Symbol '%s' at %C is already an external symbol that is not COMMON"
msgstr ""
@@ -7272,131 +7712,162 @@ msgstr ""
#. If we find an error, just print it and continue,
#. cause it's just semantic, and we can see if there
#. are more errors.
-#: fortran/match.c:2963
+#: fortran/match.c:3321
#, no-c-format
msgid ""
"Variable '%s' at %L in common block '%s' at %C must be declared with a C "
"interoperable kind since common block '%s' is bind(c)"
msgstr ""
-#: fortran/match.c:2972
+#: fortran/match.c:3330
#, no-c-format
msgid ""
"Variable '%s' in common block '%s' at %C can not be bind(c) since it is not "
"global"
msgstr ""
-#: fortran/match.c:2979
+#: fortran/match.c:3337
#, no-c-format
msgid "Symbol '%s' at %C is already in a COMMON block"
msgstr ""
-#: fortran/match.c:2987
+#: fortran/match.c:3345
#, no-c-format
msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA"
msgstr ""
-#: fortran/match.c:3014
+#: fortran/match.c:3372
#, no-c-format
msgid "Array specification for symbol '%s' in COMMON at %C must be explicit"
msgstr ""
-#: fortran/match.c:3024
+#: fortran/match.c:3382
#, no-c-format
msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array"
msgstr ""
-#: fortran/match.c:3056
+#: fortran/match.c:3414
#, no-c-format
msgid ""
"Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to "
"another COMMON block '%s'"
msgstr ""
-#: fortran/match.c:3164
+#: fortran/match.c:3522
#, no-c-format
msgid "Namelist group name '%s' at %C already has a basic type of %s"
msgstr ""
-#: fortran/match.c:3172
+#: fortran/match.c:3530
#, no-c-format
msgid ""
"Namelist group name '%s' at %C already is USE associated and cannot be "
"respecified."
msgstr ""
-#: fortran/match.c:3199
+#: fortran/match.c:3557
#, no-c-format
msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed"
msgstr ""
-#: fortran/match.c:3206
+#: fortran/match.c:3564
#, no-c-format
msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed"
msgstr ""
-#: fortran/match.c:3333
+#: fortran/match.c:3691
#, no-c-format
msgid "Derived type component %C is not a permitted EQUIVALENCE member"
msgstr ""
-#: fortran/match.c:3341
+#: fortran/match.c:3699
#, no-c-format
msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
msgstr ""
-#: fortran/match.c:3369
+#: fortran/match.c:3727
#, no-c-format
msgid "EQUIVALENCE at %C requires two or more objects"
msgstr ""
-#: fortran/match.c:3383
+#: fortran/match.c:3741
#, no-c-format
msgid ""
"Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
msgstr ""
-#: fortran/match.c:3509
+#: fortran/match.c:3867
#, no-c-format
msgid "Statement function at %L is recursive"
msgstr ""
-#: fortran/match.c:3597
+#: fortran/match.c:3873
+#, no-c-format
+msgid "Obsolescent feature: Statement function at %C"
+msgstr ""
+
+#: fortran/match.c:3959
#, no-c-format
msgid "Expected initialization expression in CASE at %C"
msgstr ""
-#: fortran/match.c:3620
+#: fortran/match.c:3991
+#, no-c-format
+msgid "Expected block name '%s' of SELECT construct at %C"
+msgstr ""
+
+#: fortran/match.c:4098
#, no-c-format
-msgid "Expected the name of the SELECT CASE construct at %C"
+msgid ""
+"Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
msgstr ""
-#: fortran/match.c:3632
+#: fortran/match.c:4106
#, no-c-format
-msgid "Expected case name of '%s' at %C"
+msgid "Selector shall be polymorphic in SELECT TYPE statement at %C"
msgstr ""
-#: fortran/match.c:3676
+#: fortran/match.c:4134
#, no-c-format
msgid "Unexpected CASE statement at %C"
msgstr ""
-#: fortran/match.c:3728
+#: fortran/match.c:4186
+#, no-c-format
+msgid "Syntax error in CASE specification at %C"
+msgstr ""
+
+#: fortran/match.c:4204
+#, no-c-format
+msgid "Unexpected TYPE IS statement at %C"
+msgstr ""
+
+#: fortran/match.c:4237
+#, no-c-format
+msgid "Syntax error in TYPE IS specification at %C"
+msgstr ""
+
+#: fortran/match.c:4303
#, no-c-format
-msgid "Syntax error in CASE-specification at %C"
+msgid "CLASS IS specification at %C is not yet supported"
msgstr ""
-#: fortran/match.c:3848
+#: fortran/match.c:4308
+#, no-c-format
+msgid "Syntax error in CLASS IS specification at %C"
+msgstr ""
+
+#: fortran/match.c:4430
#, no-c-format
msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
msgstr ""
-#: fortran/match.c:3886
+#: fortran/match.c:4468
#, no-c-format
msgid "Label '%s' at %C doesn't match WHERE label '%s'"
msgstr ""
-#: fortran/match.c:3986
+#: fortran/match.c:4568
#, no-c-format
msgid "Syntax error in FORALL iterator at %C"
msgstr ""
@@ -7439,284 +7910,284 @@ msgstr ""
msgid "Out of memory-- malloc() failed"
msgstr ""
-#: fortran/module.c:509
+#: fortran/module.c:519
#, no-c-format
msgid "Fortran 2003: module nature in USE statement at %C"
msgstr ""
-#: fortran/module.c:521
+#: fortran/module.c:531
#, no-c-format
msgid ""
"Module nature in USE statement at %C shall be either INTRINSIC or "
"NON_INTRINSIC"
msgstr ""
-#: fortran/module.c:534
+#: fortran/module.c:544
#, no-c-format
msgid "\"::\" was expected after module nature at %C but was not found"
msgstr ""
-#: fortran/module.c:543
+#: fortran/module.c:553
#, no-c-format
msgid "Fortran 2003: \"USE :: module\" at %C"
msgstr ""
-#: fortran/module.c:597
+#: fortran/module.c:607
#, no-c-format
msgid "Missing generic specification in USE statement at %C"
msgstr ""
-#: fortran/module.c:605
+#: fortran/module.c:615
#, no-c-format
msgid "Fortran 2003: Renaming operators in USE statements at %C"
msgstr ""
-#: fortran/module.c:647
+#: fortran/module.c:657
#, no-c-format
msgid "The name '%s' at %C has already been used as an external module name."
msgstr ""
-#: fortran/module.c:925
+#: fortran/module.c:935
#, no-c-format
msgid "Reading module %s at line %d column %d: %s"
msgstr ""
-#: fortran/module.c:929
+#: fortran/module.c:939
#, no-c-format
msgid "Writing module %s at line %d column %d: %s"
msgstr ""
-#: fortran/module.c:933
+#: fortran/module.c:943
#, no-c-format
msgid "Module %s at line %d column %d: %s"
msgstr ""
-#: fortran/module.c:973
+#: fortran/module.c:983
msgid "Unexpected EOF"
msgstr ""
-#: fortran/module.c:1005
+#: fortran/module.c:1015
msgid "Unexpected end of module in string constant"
msgstr ""
-#: fortran/module.c:1059
+#: fortran/module.c:1069
msgid "Integer overflow"
msgstr ""
-#: fortran/module.c:1090
+#: fortran/module.c:1100
msgid "Name too long"
msgstr ""
-#: fortran/module.c:1197
+#: fortran/module.c:1207
msgid "Bad name"
msgstr ""
-#: fortran/module.c:1241
+#: fortran/module.c:1251
msgid "Expected name"
msgstr ""
-#: fortran/module.c:1244
+#: fortran/module.c:1254
msgid "Expected left parenthesis"
msgstr ""
-#: fortran/module.c:1247
+#: fortran/module.c:1257
msgid "Expected right parenthesis"
msgstr ""
-#: fortran/module.c:1250
+#: fortran/module.c:1260
msgid "Expected integer"
msgstr ""
-#: fortran/module.c:1253
+#: fortran/module.c:1263
msgid "Expected string"
msgstr ""
-#: fortran/module.c:1277
+#: fortran/module.c:1287
msgid "find_enum(): Enum not found"
msgstr ""
-#: fortran/module.c:1291
+#: fortran/module.c:1301
#, no-c-format
msgid "Error writing modules file: %s"
msgstr ""
-#: fortran/module.c:1841
+#: fortran/module.c:1882
msgid "Expected attribute bit name"
msgstr ""
-#: fortran/module.c:2666
+#: fortran/module.c:2741
msgid "Expected integer string"
msgstr ""
-#: fortran/module.c:2670
+#: fortran/module.c:2745
msgid "Error converting integer"
msgstr ""
-#: fortran/module.c:2692
+#: fortran/module.c:2767
msgid "Expected real string"
msgstr ""
-#: fortran/module.c:2894
+#: fortran/module.c:2969
msgid "Expected expression type"
msgstr ""
-#: fortran/module.c:2948
+#: fortran/module.c:3023
msgid "Bad operator"
msgstr ""
-#: fortran/module.c:3037
+#: fortran/module.c:3112
msgid "Bad type in constant expression"
msgstr ""
-#: fortran/module.c:3079
+#: fortran/module.c:3154
#, no-c-format
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4261
+#: fortran/module.c:4428
#, no-c-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4268
+#: fortran/module.c:4435
#, no-c-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4273
+#: fortran/module.c:4440
#, no-c-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4836
+#: fortran/module.c:5049
#, no-c-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr ""
-#: fortran/module.c:4874
+#: fortran/module.c:5087
#, no-c-format
msgid "Error writing module file '%s' for writing: %s"
msgstr ""
-#: fortran/module.c:4883
+#: fortran/module.c:5096
#, no-c-format
msgid "Can't delete module file '%s': %s"
msgstr ""
-#: fortran/module.c:4886
+#: fortran/module.c:5099
#, no-c-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr ""
-#: fortran/module.c:4892
+#: fortran/module.c:5105
#, no-c-format
msgid "Can't delete temporary module file '%s': %s"
msgstr ""
-#: fortran/module.c:4912 fortran/module.c:4994
+#: fortran/module.c:5125 fortran/module.c:5208
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L does not exist in intrinsic module "
"ISO_C_BINDING."
msgstr ""
-#: fortran/module.c:5029
+#: fortran/module.c:5243
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5051
+#: fortran/module.c:5265
#, no-c-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5106
+#: fortran/module.c:5320
#, no-c-format
msgid ""
"Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name "
"used previously"
msgstr ""
-#: fortran/module.c:5119
+#: fortran/module.c:5333
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L does not exist in intrinsic module "
"ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:5127
+#: fortran/module.c:5341
#, no-c-format
msgid ""
"Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module "
"ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5155
+#: fortran/module.c:5369
#, no-c-format
msgid ""
"Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module "
"ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5171
+#: fortran/module.c:5385
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:5205
+#: fortran/module.c:5419
#, no-c-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:5213
+#: fortran/module.c:5427
#, no-c-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:5223
+#: fortran/module.c:5437
#, no-c-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:5228
+#: fortran/module.c:5442
#, no-c-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr ""
-#: fortran/module.c:5236
+#: fortran/module.c:5450
#, no-c-format
msgid ""
"Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name "
"used previously"
msgstr ""
-#: fortran/module.c:5251
+#: fortran/module.c:5465
msgid "Unexpected end of module"
msgstr ""
-#: fortran/module.c:5256
+#: fortran/module.c:5470
#, no-c-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:5263
+#: fortran/module.c:5477
#, no-c-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:5268
+#: fortran/module.c:5482
#, no-c-format
msgid "Wrong module version '%s' (expected '"
msgstr ""
-#: fortran/module.c:5281
+#: fortran/module.c:5495
#, no-c-format
msgid "Can't USE the same module we're building!"
msgstr ""
-#: fortran/openmp.c:134 fortran/openmp.c:562
+#: fortran/openmp.c:134 fortran/openmp.c:563
#, no-c-format
msgid "COMMON block /%s/ not found at %C"
msgstr ""
@@ -7736,689 +8207,701 @@ msgstr ""
msgid "COLLAPSE clause argument not constant positive integer at %C"
msgstr ""
-#: fortran/openmp.c:541
+#: fortran/openmp.c:542
#, no-c-format
msgid "Threadprivate variable at %C is an element of a COMMON block"
msgstr ""
-#: fortran/openmp.c:581
+#: fortran/openmp.c:582
#, no-c-format
msgid "Syntax error in !$OMP THREADPRIVATE list at %C"
msgstr ""
-#: fortran/openmp.c:759 fortran/resolve.c:6635 fortran/resolve.c:6989
+#: fortran/openmp.c:760 fortran/resolve.c:7424 fortran/resolve.c:7813
#, no-c-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
-#: fortran/openmp.c:767
+#: fortran/openmp.c:768
#, no-c-format
msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:775
+#: fortran/openmp.c:776
#, no-c-format
msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression"
msgstr ""
-#: fortran/openmp.c:815
+#: fortran/openmp.c:816
#, no-c-format
msgid "Object '%s' is not a variable at %L"
msgstr ""
-#: fortran/openmp.c:823 fortran/openmp.c:833 fortran/openmp.c:840
-#: fortran/openmp.c:850
+#: fortran/openmp.c:824 fortran/openmp.c:834 fortran/openmp.c:841
+#: fortran/openmp.c:851
#, no-c-format
msgid "Symbol '%s' present on multiple clauses at %L"
msgstr ""
-#: fortran/openmp.c:873
+#: fortran/openmp.c:874
#, no-c-format
msgid "Non-THREADPRIVATE object '%s' in COPYIN clause at %L"
msgstr ""
-#: fortran/openmp.c:876
+#: fortran/openmp.c:877
#, no-c-format
msgid "COPYIN clause object '%s' at %L has ALLOCATABLE components"
msgstr ""
-#: fortran/openmp.c:884
+#: fortran/openmp.c:885
#, no-c-format
msgid "Assumed size array '%s' in COPYPRIVATE clause at %L"
msgstr ""
-#: fortran/openmp.c:887
+#: fortran/openmp.c:888
#, no-c-format
msgid "COPYPRIVATE clause object '%s' at %L has ALLOCATABLE components"
msgstr ""
-#: fortran/openmp.c:895
+#: fortran/openmp.c:896
#, no-c-format
msgid "THREADPRIVATE object '%s' in SHARED clause at %L"
msgstr ""
-#: fortran/openmp.c:898
+#: fortran/openmp.c:899
#, no-c-format
msgid "Cray pointee '%s' in SHARED clause at %L"
msgstr ""
-#: fortran/openmp.c:906
+#: fortran/openmp.c:907
#, no-c-format
msgid "THREADPRIVATE object '%s' in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:909
+#: fortran/openmp.c:910
#, no-c-format
msgid "Cray pointee '%s' in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:914
+#: fortran/openmp.c:915
#, no-c-format
msgid "POINTER object '%s' in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:919
+#: fortran/openmp.c:920
#, no-c-format
msgid "%s clause object '%s' has ALLOCATABLE components at %L"
msgstr ""
-#: fortran/openmp.c:922
+#: fortran/openmp.c:923
#, no-c-format
msgid "Cray pointer '%s' in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:926
+#: fortran/openmp.c:927
#, no-c-format
msgid "Assumed size array '%s' in %s clause at %L"
msgstr ""
-#: fortran/openmp.c:931
+#: fortran/openmp.c:932
#, no-c-format
msgid "Variable '%s' in %s clause is used in NAMELIST statement at %L"
msgstr ""
-#: fortran/openmp.c:940
+#: fortran/openmp.c:941
#, no-c-format
msgid "%c REDUCTION variable '%s' at %L must be of numeric type, got %s"
msgstr ""
-#: fortran/openmp.c:951
+#: fortran/openmp.c:952
#, no-c-format
msgid "%s REDUCTION variable '%s' must be LOGICAL at %L"
msgstr ""
-#: fortran/openmp.c:962
+#: fortran/openmp.c:963
#, no-c-format
msgid "%s REDUCTION variable '%s' must be INTEGER or REAL at %L"
msgstr ""
-#: fortran/openmp.c:971
+#: fortran/openmp.c:972
#, no-c-format
msgid "%s REDUCTION variable '%s' must be INTEGER at %L"
msgstr ""
-#: fortran/openmp.c:1083
+#: fortran/openmp.c:1084
#, no-c-format
msgid ""
"!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
msgstr ""
-#: fortran/openmp.c:1123
+#: fortran/openmp.c:1124
#, no-c-format
msgid ""
"!$OMP ATOMIC assignment operator must be +, *, -, /, .AND., .OR., .EQV. or ."
"NEQV. at %L"
msgstr ""
-#: fortran/openmp.c:1171
+#: fortran/openmp.c:1172
#, no-c-format
msgid ""
"!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L"
msgstr ""
-#: fortran/openmp.c:1185
+#: fortran/openmp.c:1186
#, no-c-format
msgid ""
"!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op "
"(expr) at %L"
msgstr ""
-#: fortran/openmp.c:1217
+#: fortran/openmp.c:1218
#, no-c-format
msgid ""
"expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot "
"reference var at %L"
msgstr ""
-#: fortran/openmp.c:1241
+#: fortran/openmp.c:1242
#, no-c-format
msgid ""
"!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments "
"at %L"
msgstr ""
-#: fortran/openmp.c:1248
+#: fortran/openmp.c:1249
#, no-c-format
msgid ""
"!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L"
msgstr ""
-#: fortran/openmp.c:1264
+#: fortran/openmp.c:1265
#, no-c-format
msgid ""
"!$OMP ATOMIC intrinsic arguments except one must not reference '%s' at %L"
msgstr ""
-#: fortran/openmp.c:1267
+#: fortran/openmp.c:1268
#, no-c-format
msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L"
msgstr ""
-#: fortran/openmp.c:1273
+#: fortran/openmp.c:1274
#, no-c-format
msgid "First or last !$OMP ATOMIC intrinsic argument must be '%s' at %L"
msgstr ""
-#: fortran/openmp.c:1291
+#: fortran/openmp.c:1292
#, no-c-format
msgid ""
"!$OMP ATOMIC assignment must have an operator or intrinsic on right hand "
"side at %L"
msgstr ""
-#: fortran/openmp.c:1426
+#: fortran/openmp.c:1427
#, no-c-format
msgid "!$OMP DO cannot be a DO WHILE or DO without loop control at %L"
msgstr ""
-#: fortran/openmp.c:1432
+#: fortran/openmp.c:1433
#, no-c-format
msgid "!$OMP DO iteration variable must be of type integer at %L"
msgstr ""
-#: fortran/openmp.c:1436
+#: fortran/openmp.c:1437
#, no-c-format
msgid "!$OMP DO iteration variable must not be THREADPRIVATE at %L"
msgstr ""
-#: fortran/openmp.c:1444
+#: fortran/openmp.c:1445
#, no-c-format
msgid ""
"!$OMP DO iteration variable present on clause other than PRIVATE or "
"LASTPRIVATE at %L"
msgstr ""
-#: fortran/openmp.c:1462
+#: fortran/openmp.c:1463
#, no-c-format
msgid "!$OMP DO collapsed loops don't form rectangular iteration space at %L"
msgstr ""
-#: fortran/openmp.c:1476
+#: fortran/openmp.c:1477
#, no-c-format
msgid "collapsed !$OMP DO loops not perfectly nested at %L"
msgstr ""
-#: fortran/openmp.c:1485 fortran/openmp.c:1492
+#: fortran/openmp.c:1486 fortran/openmp.c:1493
#, no-c-format
msgid "not enough DO loops for collapsed !$OMP DO at %L"
msgstr ""
-#: fortran/options.c:243
-#, no-c-format
-msgid "Option -fwhole-program is not supported for Fortran"
-msgstr ""
-
-#: fortran/options.c:301
+#: fortran/options.c:326
#, no-c-format
msgid "Reading file '%s' as free form"
msgstr ""
-#: fortran/options.c:311
+#: fortran/options.c:336
#, no-c-format
msgid "'-fd-lines-as-comments' has no effect in free form"
msgstr ""
-#: fortran/options.c:314
+#: fortran/options.c:339
#, no-c-format
msgid "'-fd-lines-as-code' has no effect in free form"
msgstr ""
-#: fortran/options.c:332
+#: fortran/options.c:357
#, no-c-format
msgid "Flag -fno-automatic overwrites -fmax-stack-var-size=%d"
msgstr ""
-#: fortran/options.c:335
+#: fortran/options.c:360
#, no-c-format
msgid "Flag -fno-automatic overwrites -frecursive"
msgstr ""
-#: fortran/options.c:337
+#: fortran/options.c:362
#, no-c-format
msgid "Flag -fno-automatic overwrites -frecursive implied by -fopenmp"
msgstr ""
-#: fortran/options.c:341
+#: fortran/options.c:366
#, no-c-format
msgid "Flag -frecursive overwrites -fmax-stack-var-size=%d"
msgstr ""
-#: fortran/options.c:345
+#: fortran/options.c:370
#, no-c-format
msgid "Flag -fmax-stack-var-size=%d overwrites -frecursive implied by -fopenmp"
msgstr ""
-#: fortran/options.c:418
+#: fortran/options.c:446
#, no-c-format
msgid "gfortran: Only one -J option allowed"
msgstr ""
-#: fortran/options.c:461
+#: fortran/options.c:489
#, no-c-format
msgid "Argument to -ffpe-trap is not valid: %s"
msgstr ""
-#: fortran/options.c:498
+#: fortran/options.c:527
#, no-c-format
msgid "Argument to -fcheck is not valid: %s"
msgstr ""
-#: fortran/options.c:651
+#: fortran/options.c:680
#, no-c-format
msgid "Fixed line length must be at least seven."
msgstr ""
-#: fortran/options.c:669
+#: fortran/options.c:698
#, no-c-format
msgid "Free line length must be at least three."
msgstr ""
-#: fortran/options.c:687
+#: fortran/options.c:716
#, no-c-format
msgid "-static-libgfortran is not supported in this configuration"
msgstr ""
-#: fortran/options.c:735
+#: fortran/options.c:764
#, no-c-format
msgid "Maximum supported identifier length is %d"
msgstr ""
-#: fortran/options.c:767
+#: fortran/options.c:796
#, no-c-format
msgid "Unrecognized option to -finit-logical: %s"
msgstr ""
-#: fortran/options.c:783
+#: fortran/options.c:812
#, no-c-format
msgid "Unrecognized option to -finit-real: %s"
msgstr ""
-#: fortran/options.c:799
+#: fortran/options.c:828
#, no-c-format
msgid "The value of n in -finit-character=n must be between 0 and 127"
msgstr ""
-#: fortran/options.c:890
+#: fortran/options.c:919
#, no-c-format
msgid "Maximum subrecord length cannot exceed %d"
msgstr ""
-#: fortran/parse.c:455
+#: fortran/parse.c:459
#, no-c-format
msgid "Unclassifiable statement at %C"
msgstr ""
-#: fortran/parse.c:479
+#: fortran/parse.c:483
#, no-c-format
msgid "OpenMP directives at %C may not appear in PURE or ELEMENTAL procedures"
msgstr ""
-#: fortran/parse.c:560
+#: fortran/parse.c:564
#, no-c-format
msgid "Unclassifiable OpenMP directive at %C"
msgstr ""
-#: fortran/parse.c:602 fortran/parse.c:743
+#: fortran/parse.c:592
+#, no-c-format
+msgid "Unclassifiable GCC directive at %C"
+msgstr ""
+
+#: fortran/parse.c:634 fortran/parse.c:803
#, no-c-format
msgid "Zero is not a valid statement label at %C"
msgstr ""
-#: fortran/parse.c:609 fortran/parse.c:735
+#: fortran/parse.c:641 fortran/parse.c:795
#, no-c-format
msgid "Non-numeric character in statement label at %C"
msgstr ""
-#: fortran/parse.c:621 fortran/parse.c:657 fortran/parse.c:783
+#: fortran/parse.c:653 fortran/parse.c:707 fortran/parse.c:843
#, no-c-format
msgid "Semicolon at %C needs to be preceded by statement"
msgstr ""
-#: fortran/parse.c:629 fortran/parse.c:795
+#: fortran/parse.c:661 fortran/parse.c:855
#, no-c-format
-msgid "Ignoring statement label in empty statement at %C"
+msgid "Ignoring statement label in empty statement at %L"
msgstr ""
-#: fortran/parse.c:722 fortran/parse.c:762
+#: fortran/parse.c:782 fortran/parse.c:822
#, no-c-format
msgid "Bad continuation line at %C"
msgstr ""
-#: fortran/parse.c:822
-#, no-c-format
-msgid "Line truncated at %C"
-msgstr ""
-
-#: fortran/parse.c:1009
+#: fortran/parse.c:1069
#, no-c-format
msgid "FORMAT statement at %L does not have a statement label"
msgstr ""
-#: fortran/parse.c:1081
+#: fortran/parse.c:1141
msgid "arithmetic IF"
msgstr ""
-#: fortran/parse.c:1087
+#: fortran/parse.c:1147
msgid "attribute declaration"
msgstr ""
-#: fortran/parse.c:1117
+#: fortran/parse.c:1180
msgid "data declaration"
msgstr ""
-#: fortran/parse.c:1126
+#: fortran/parse.c:1189
msgid "derived type declaration"
msgstr ""
-#: fortran/parse.c:1208
+#: fortran/parse.c:1274
msgid "block IF"
msgstr ""
-#: fortran/parse.c:1217
+#: fortran/parse.c:1283
msgid "implied END DO"
msgstr ""
-#: fortran/parse.c:1293
+#: fortran/parse.c:1359
msgid "assignment"
msgstr ""
-#: fortran/parse.c:1296
+#: fortran/parse.c:1362
msgid "pointer assignment"
msgstr ""
-#: fortran/parse.c:1305
+#: fortran/parse.c:1380
msgid "simple IF"
msgstr ""
-#: fortran/parse.c:1541
+#: fortran/parse.c:1621
#, no-c-format
msgid "Unexpected %s statement at %C"
msgstr ""
-#: fortran/parse.c:1681
+#: fortran/parse.c:1768
#, no-c-format
msgid "%s statement at %C cannot follow %s statement at %L"
msgstr ""
-#: fortran/parse.c:1698
+#: fortran/parse.c:1785
#, no-c-format
msgid "Unexpected end of file in '%s'"
msgstr ""
-#: fortran/parse.c:1730
+#: fortran/parse.c:1817
#, no-c-format
msgid "Derived-type '%s' with SEQUENCE must not have a CONTAINS section at %C"
msgstr ""
-#: fortran/parse.c:1733
+#: fortran/parse.c:1820
#, no-c-format
msgid "Derived-type '%s' with BIND(C) must not have a CONTAINS section at %C"
msgstr ""
-#: fortran/parse.c:1753
+#: fortran/parse.c:1840
#, no-c-format
msgid "Components in TYPE at %C must precede CONTAINS"
msgstr ""
-#: fortran/parse.c:1758
+#: fortran/parse.c:1845
#, no-c-format
msgid "Fortran 2003: Type-bound procedure at %C"
msgstr ""
-#: fortran/parse.c:1767
+#: fortran/parse.c:1854
#, no-c-format
msgid "Fortran 2003: GENERIC binding at %C"
msgstr ""
-#: fortran/parse.c:1777
+#: fortran/parse.c:1864
#, no-c-format
msgid "Fortran 2003: FINAL procedure declaration at %C"
msgstr ""
-#: fortran/parse.c:1789
+#: fortran/parse.c:1876
#, no-c-format
msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section"
msgstr ""
-#: fortran/parse.c:1800 fortran/parse.c:1907
+#: fortran/parse.c:1887 fortran/parse.c:1994
#, no-c-format
msgid "PRIVATE statement in TYPE at %C must be inside a MODULE"
msgstr ""
-#: fortran/parse.c:1808
+#: fortran/parse.c:1895
#, no-c-format
msgid "PRIVATE statement at %C must precede procedure bindings"
msgstr ""
-#: fortran/parse.c:1816 fortran/parse.c:1923
+#: fortran/parse.c:1903 fortran/parse.c:2010
#, no-c-format
msgid "Duplicate PRIVATE statement at %C"
msgstr ""
-#: fortran/parse.c:1826
+#: fortran/parse.c:1913
#, no-c-format
msgid "SEQUENCE statement at %C must precede CONTAINS"
msgstr ""
-#: fortran/parse.c:1831
+#: fortran/parse.c:1918
#, no-c-format
msgid "Already inside a CONTAINS block at %C"
msgstr ""
-#: fortran/parse.c:1887
+#: fortran/parse.c:1974
#, no-c-format
msgid "FINAL declaration at %C must be inside CONTAINS"
msgstr ""
-#: fortran/parse.c:1896
+#: fortran/parse.c:1983
#, no-c-format
msgid "Fortran 2003: Derived type definition at %C without components"
msgstr ""
-#: fortran/parse.c:1915
+#: fortran/parse.c:2002
#, no-c-format
msgid "PRIVATE statement at %C must precede structure components"
msgstr ""
-#: fortran/parse.c:1936
+#: fortran/parse.c:2023
#, no-c-format
msgid "SEQUENCE statement at %C must precede structure components"
msgstr ""
-#: fortran/parse.c:1943
+#: fortran/parse.c:2030
#, no-c-format
msgid "SEQUENCE attribute at %C already specified in TYPE statement"
msgstr ""
-#: fortran/parse.c:1948
+#: fortran/parse.c:2035
#, no-c-format
msgid "Duplicate SEQUENCE statement at %C"
msgstr ""
-#: fortran/parse.c:1959
+#: fortran/parse.c:2046
#, no-c-format
msgid "Fortran 2003: CONTAINS block in derived type definition at %C"
msgstr ""
-#: fortran/parse.c:2047
+#: fortran/parse.c:2134
#, no-c-format
msgid "ENUM declaration at %C has no ENUMERATORS"
msgstr ""
-#: fortran/parse.c:2133
+#: fortran/parse.c:2220
#, no-c-format
msgid "Unexpected %s statement in INTERFACE block at %C"
msgstr ""
-#: fortran/parse.c:2159
+#: fortran/parse.c:2246
#, no-c-format
msgid "SUBROUTINE at %C does not belong in a generic function interface"
msgstr ""
-#: fortran/parse.c:2163
+#: fortran/parse.c:2250
#, no-c-format
msgid "FUNCTION at %C does not belong in a generic subroutine interface"
msgstr ""
-#: fortran/parse.c:2173
+#: fortran/parse.c:2260
#, no-c-format
msgid ""
"Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type"
msgstr ""
-#: fortran/parse.c:2204
+#: fortran/parse.c:2291
#, no-c-format
msgid "Unexpected %s statement at %C in INTERFACE body"
msgstr ""
-#: fortran/parse.c:2222
+#: fortran/parse.c:2309
#, no-c-format
msgid ""
"INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgstr ""
-#: fortran/parse.c:2408
+#: fortran/parse.c:2430
+#, no-c-format
+msgid "%s statement is not allowed inside of BLOCK at %C"
+msgstr ""
+
+#: fortran/parse.c:2516
#, no-c-format
msgid "%s statement must appear in a MODULE"
msgstr ""
-#: fortran/parse.c:2415
+#: fortran/parse.c:2523
#, no-c-format
msgid "%s statement at %C follows another accessibility specification"
msgstr ""
-#: fortran/parse.c:2465
+#: fortran/parse.c:2573
#, no-c-format
msgid "Bad kind expression for function '%s' at %L"
msgstr ""
-#: fortran/parse.c:2469
+#: fortran/parse.c:2577
#, no-c-format
msgid "The type for function '%s' at %L is not accessible"
msgstr ""
-#: fortran/parse.c:2527
+#: fortran/parse.c:2635
#, no-c-format
msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE"
msgstr ""
-#: fortran/parse.c:2548
+#: fortran/parse.c:2656
#, no-c-format
msgid "Unexpected %s statement in WHERE block at %C"
msgstr ""
-#: fortran/parse.c:2607
+#: fortran/parse.c:2715
#, no-c-format
msgid "Unexpected %s statement in FORALL block at %C"
msgstr ""
-#: fortran/parse.c:2658
+#: fortran/parse.c:2766
#, no-c-format
msgid "ELSE IF statement at %C cannot follow ELSE statement at %L"
msgstr ""
-#: fortran/parse.c:2676
+#: fortran/parse.c:2784
#, no-c-format
msgid "Duplicate ELSE statements at %L and %C"
msgstr ""
-#: fortran/parse.c:2737
+#: fortran/parse.c:2845
#, no-c-format
msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C"
msgstr ""
-#: fortran/parse.c:2795
+#: fortran/parse.c:2928
+#, no-c-format
+msgid ""
+"Expected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at %"
+"C"
+msgstr ""
+
+#: fortran/parse.c:2990
#, no-c-format
msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
msgstr ""
-#: fortran/parse.c:2828
+#: fortran/parse.c:3023
#, no-c-format
msgid "End of nonblock DO statement at %C is within another block"
msgstr ""
-#: fortran/parse.c:2837
+#: fortran/parse.c:3032
#, no-c-format
msgid "End of nonblock DO statement at %C is interwoven with another DO loop"
msgstr ""
-#: fortran/parse.c:2886
+#: fortran/parse.c:3086
+#, no-c-format
+msgid "Fortran 2008: BLOCK construct at %C"
+msgstr ""
+
+#: fortran/parse.c:3144
#, no-c-format
msgid "Statement label in ENDDO at %C doesn't match DO label"
msgstr ""
-#: fortran/parse.c:2902
+#: fortran/parse.c:3160
#, no-c-format
msgid "Named block DO at %L requires matching ENDDO name"
msgstr ""
-#: fortran/parse.c:3161
+#: fortran/parse.c:3419
#, no-c-format
msgid "Name after !$omp critical and !$omp end critical does not match at %C"
msgstr ""
-#: fortran/parse.c:3217
+#: fortran/parse.c:3475
#, no-c-format
msgid "%s statement at %C cannot terminate a non-block DO loop"
msgstr ""
-#: fortran/parse.c:3404
+#: fortran/parse.c:3665
#, no-c-format
msgid "Contained procedure '%s' at %C is already ambiguous"
msgstr ""
-#: fortran/parse.c:3454
+#: fortran/parse.c:3715
#, no-c-format
msgid "Unexpected %s statement in CONTAINS section at %C"
msgstr ""
-#: fortran/parse.c:3478
+#: fortran/parse.c:3739
#, no-c-format
msgid ""
"Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at "
"%C"
msgstr ""
-#: fortran/parse.c:3549
+#: fortran/parse.c:3816
#, no-c-format
msgid "CONTAINS statement at %C is already in a contained program unit"
msgstr ""
-#: fortran/parse.c:3598
+#: fortran/parse.c:3865
#, no-c-format
msgid "Global name '%s' at %L is already being used as a %s at %L"
msgstr ""
-#: fortran/parse.c:3619
+#: fortran/parse.c:3886
#, no-c-format
msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
msgstr ""
-#: fortran/parse.c:3645
+#: fortran/parse.c:3912
#, no-c-format
msgid "Unexpected %s statement in BLOCK DATA at %C"
msgstr ""
-#: fortran/parse.c:3688
+#: fortran/parse.c:3955
#, no-c-format
msgid "Unexpected %s statement in MODULE at %C"
msgstr ""
@@ -8426,291 +8909,291 @@ msgstr ""
#. If we see a duplicate main program, shut down. If the second
#. instance is an implied main program, i.e. data decls or executable
#. statements, we're in for lots of errors.
-#: fortran/parse.c:3936
+#: fortran/parse.c:4272
#, no-c-format
msgid "Two main PROGRAMs at %L and %C"
msgstr ""
-#: fortran/primary.c:90
+#: fortran/primary.c:93
#, no-c-format
msgid "Missing kind-parameter at %C"
msgstr ""
-#: fortran/primary.c:214
+#: fortran/primary.c:217
#, no-c-format
msgid "Integer kind %d at %C not available"
msgstr ""
-#: fortran/primary.c:222
+#: fortran/primary.c:225
#, no-c-format
msgid ""
"Integer too big for its kind at %C. This check can be disabled with the "
"option -fno-range-check"
msgstr ""
-#: fortran/primary.c:251
+#: fortran/primary.c:254
#, no-c-format
msgid "Extension: Hollerith constant at %C"
msgstr ""
-#: fortran/primary.c:263
+#: fortran/primary.c:266
#, no-c-format
msgid "Invalid Hollerith constant: %L must contain at least one character"
msgstr ""
-#: fortran/primary.c:269
+#: fortran/primary.c:272
#, no-c-format
msgid "Invalid Hollerith constant: Integer kind at %L should be default"
msgstr ""
-#: fortran/primary.c:286
+#: fortran/primary.c:289
#, no-c-format
msgid "Invalid Hollerith constant at %L contains a wide character"
msgstr ""
-#: fortran/primary.c:367
+#: fortran/primary.c:370
#, no-c-format
msgid "Extension: Hexadecimal constant at %C uses non-standard syntax"
msgstr ""
-#: fortran/primary.c:377
+#: fortran/primary.c:380
#, no-c-format
msgid "Empty set of digits in BOZ constant at %C"
msgstr ""
-#: fortran/primary.c:383
+#: fortran/primary.c:386
#, no-c-format
msgid "Illegal character in BOZ constant at %C"
msgstr ""
-#: fortran/primary.c:406
+#: fortran/primary.c:409
#, no-c-format
msgid "Extension: BOZ constant at %C uses non-standard postfix syntax"
msgstr ""
-#: fortran/primary.c:437
+#: fortran/primary.c:440
#, no-c-format
msgid "Integer too big for integer kind %i at %C"
msgstr ""
-#: fortran/primary.c:443
+#: fortran/primary.c:446
#, no-c-format
msgid "Fortran 2003: BOZ used outside a DATA statement at %C"
msgstr ""
-#: fortran/primary.c:543
+#: fortran/primary.c:546
#, no-c-format
msgid "Missing exponent in real number at %C"
msgstr ""
-#: fortran/primary.c:599
+#: fortran/primary.c:602
#, no-c-format
msgid "Real number at %C has a 'd' exponent and an explicit kind"
msgstr ""
-#: fortran/primary.c:612
+#: fortran/primary.c:615
#, no-c-format
msgid "Invalid real kind %d at %C"
msgstr ""
-#: fortran/primary.c:626
+#: fortran/primary.c:629
#, no-c-format
msgid "Real constant overflows its kind at %C"
msgstr ""
-#: fortran/primary.c:631
+#: fortran/primary.c:634
#, no-c-format
msgid "Real constant underflows its kind at %C"
msgstr ""
-#: fortran/primary.c:723
+#: fortran/primary.c:726
#, no-c-format
msgid "Syntax error in SUBSTRING specification at %C"
msgstr ""
-#: fortran/primary.c:935
+#: fortran/primary.c:938
#, no-c-format
msgid "Invalid kind %d for CHARACTER constant at %C"
msgstr ""
-#: fortran/primary.c:956
+#: fortran/primary.c:959
#, no-c-format
msgid "Unterminated character constant beginning at %C"
msgstr ""
-#: fortran/primary.c:997
+#: fortran/primary.c:1000
#, no-c-format
msgid ""
"Character '%s' in string at %C is not representable in character kind %d"
msgstr ""
-#: fortran/primary.c:1080
+#: fortran/primary.c:1083
#, no-c-format
msgid "Bad kind for logical constant at %C"
msgstr ""
-#: fortran/primary.c:1119
+#: fortran/primary.c:1122
#, no-c-format
msgid "Expected PARAMETER symbol in complex constant at %C"
msgstr ""
-#: fortran/primary.c:1125
+#: fortran/primary.c:1128
#, no-c-format
msgid "Numeric PARAMETER required in complex constant at %C"
msgstr ""
-#: fortran/primary.c:1131
+#: fortran/primary.c:1134
#, no-c-format
msgid "Scalar PARAMETER required in complex constant at %C"
msgstr ""
-#: fortran/primary.c:1135
+#: fortran/primary.c:1138
#, no-c-format
msgid "Fortran 2003: PARAMETER symbol in complex constant at %C"
msgstr ""
-#: fortran/primary.c:1165
+#: fortran/primary.c:1168
#, no-c-format
msgid "Error converting PARAMETER constant in complex constant at %C"
msgstr ""
-#: fortran/primary.c:1294
+#: fortran/primary.c:1297
#, no-c-format
msgid "Syntax error in COMPLEX constant at %C"
msgstr ""
-#: fortran/primary.c:1483
+#: fortran/primary.c:1486
#, no-c-format
msgid "Keyword '%s' at %C has already appeared in the current argument list"
msgstr ""
-#: fortran/primary.c:1547
+#: fortran/primary.c:1550
#, no-c-format
msgid "Extension: argument list function at %C"
msgstr ""
-#: fortran/primary.c:1614
+#: fortran/primary.c:1617
#, no-c-format
msgid "Expected alternate return label at %C"
msgstr ""
-#: fortran/primary.c:1632
+#: fortran/primary.c:1635
#, no-c-format
msgid "Missing keyword name in actual argument list at %C"
msgstr ""
-#: fortran/primary.c:1677
+#: fortran/primary.c:1680
#, no-c-format
msgid "Syntax error in argument list at %C"
msgstr ""
-#: fortran/primary.c:1775
+#: fortran/primary.c:1785
#, no-c-format
msgid "Expected structure component name at %C"
msgstr ""
-#: fortran/primary.c:1812
+#: fortran/primary.c:1829
#, no-c-format
msgid "Expected argument list at %C"
msgstr ""
-#: fortran/primary.c:2118
+#: fortran/primary.c:2179
#, no-c-format
msgid ""
"Fortran 2003: Structure constructor with missing optional arguments at %C"
msgstr ""
-#: fortran/primary.c:2126
+#: fortran/primary.c:2187
#, no-c-format
msgid ""
"No initializer for component '%s' given in the structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2182
+#: fortran/primary.c:2243
#, no-c-format
msgid "Can't construct ABSTRACT type '%s' at %C"
msgstr ""
-#: fortran/primary.c:2210
+#: fortran/primary.c:2271
#, no-c-format
msgid "Fortran 2003: Structure constructor with named arguments at %C"
msgstr ""
-#: fortran/primary.c:2225
+#: fortran/primary.c:2286
#, no-c-format
msgid "Component initializer without name after component named %s at %C!"
msgstr ""
-#: fortran/primary.c:2228
+#: fortran/primary.c:2289
#, no-c-format
msgid "Too many components in structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2261
+#: fortran/primary.c:2322
#, no-c-format
msgid "Component '%s' is initialized twice in the structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2317
+#: fortran/primary.c:2378
#, no-c-format
msgid ""
"component '%s' at %L has already been set by a parent derived type "
"constructor"
msgstr ""
-#: fortran/primary.c:2340
+#: fortran/primary.c:2401
#, no-c-format
msgid "Syntax error in structure constructor at %C"
msgstr ""
-#: fortran/primary.c:2456
+#: fortran/primary.c:2517
#, no-c-format
msgid ""
"'%s' at %C is the name of a recursive function and so refers to the result "
"variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
msgstr ""
-#: fortran/primary.c:2577
+#: fortran/primary.c:2638
#, no-c-format
msgid "Unexpected use of subroutine name '%s' at %C"
msgstr ""
-#: fortran/primary.c:2608
+#: fortran/primary.c:2669
#, no-c-format
msgid "Statement function '%s' requires argument list at %C"
msgstr ""
-#: fortran/primary.c:2611
+#: fortran/primary.c:2672
#, no-c-format
msgid "Function '%s' requires an argument list at %C"
msgstr ""
-#: fortran/primary.c:2658
+#: fortran/primary.c:2719
#, no-c-format
msgid "Missing argument to '%s' at %C"
msgstr ""
-#: fortran/primary.c:2799
+#: fortran/primary.c:2860
#, no-c-format
msgid "Missing argument list in function '%s' at %C"
msgstr ""
-#: fortran/primary.c:2827
+#: fortran/primary.c:2888
#, no-c-format
msgid "Symbol at %C is not appropriate for an expression"
msgstr ""
-#: fortran/primary.c:2895
+#: fortran/primary.c:2956
#, no-c-format
msgid "Assigning to PROTECTED variable at %C"
msgstr ""
-#: fortran/primary.c:2929
+#: fortran/primary.c:2990
#, no-c-format
msgid "Named constant at %C in an EQUIVALENCE"
msgstr ""
-#: fortran/primary.c:2965
+#: fortran/primary.c:3026
#, no-c-format
msgid "'%s' at %C is not a variable"
msgstr ""
@@ -8746,7 +9229,7 @@ msgstr ""
msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgstr ""
-#: fortran/resolve.c:201 fortran/resolve.c:1334
+#: fortran/resolve.c:201 fortran/resolve.c:1412
#, no-c-format
msgid ""
"Unable to find a specific INTRINSIC procedure for the reference '%s' at %L"
@@ -8801,218 +9284,248 @@ msgstr ""
msgid "Result '%s' of contained function '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:377
+#: fortran/resolve.c:386
+msgid "module procedure"
+msgstr ""
+
+#: fortran/resolve.c:387
+msgid "internal function"
+msgstr ""
+
+#: fortran/resolve.c:384
#, no-c-format
-msgid ""
-"Character-valued internal function '%s' at %L must not be assumed length"
+msgid "Character-valued %s '%s' at %L must not be assumed length"
msgstr ""
-#: fortran/resolve.c:548
+#: fortran/resolve.c:559
#, no-c-format
msgid "Function %s at %L has entries with mismatched array specifications"
msgstr ""
-#: fortran/resolve.c:565
+#: fortran/resolve.c:576
#, no-c-format
msgid ""
"Extension: Function %s at %L with entries returning variables of different "
"string lengths"
msgstr ""
-#: fortran/resolve.c:592
+#: fortran/resolve.c:603
#, no-c-format
msgid "FUNCTION result %s can't be an array in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:596
+#: fortran/resolve.c:607
#, no-c-format
msgid "ENTRY result %s can't be an array in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:603
+#: fortran/resolve.c:614
#, no-c-format
msgid "FUNCTION result %s can't be a POINTER in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:607
+#: fortran/resolve.c:618
#, no-c-format
msgid "ENTRY result %s can't be a POINTER in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:645
+#: fortran/resolve.c:656
#, no-c-format
msgid "FUNCTION result %s can't be of type %s in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:650
+#: fortran/resolve.c:661
#, no-c-format
msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L"
msgstr ""
-#: fortran/resolve.c:708
+#: fortran/resolve.c:719
#, no-c-format
msgid ""
"Variable '%s' at %L is in COMMON but only in BLOCK DATA initialization is "
"allowed"
msgstr ""
-#: fortran/resolve.c:712
+#: fortran/resolve.c:723
#, no-c-format
msgid ""
"Initialized variable '%s' at %L is in a blank COMMON but initialization is "
"only allowed in named common blocks"
msgstr ""
-#: fortran/resolve.c:723
+#: fortran/resolve.c:734
#, no-c-format
msgid ""
"Derived type variable '%s' in COMMON at %L has neither the SEQUENCE nor the "
"BIND(C) attribute"
msgstr ""
-#: fortran/resolve.c:727
+#: fortran/resolve.c:738
#, no-c-format
msgid ""
"Derived type variable '%s' in COMMON at %L has an ultimate component that is "
"allocatable"
msgstr ""
-#: fortran/resolve.c:731
+#: fortran/resolve.c:742
#, no-c-format
msgid ""
"Derived type variable '%s' in COMMON at %L may not have default initializer"
msgstr ""
-#: fortran/resolve.c:761
+#: fortran/resolve.c:772
#, no-c-format
msgid "COMMON block '%s' at %L is used as PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:765
+#: fortran/resolve.c:776
#, no-c-format
msgid "COMMON block '%s' at %L is also an intrinsic procedure"
msgstr ""
-#: fortran/resolve.c:769
+#: fortran/resolve.c:780
#, no-c-format
msgid "Fortran 2003: COMMON block '%s' at %L that is also a function result"
msgstr ""
-#: fortran/resolve.c:774
+#: fortran/resolve.c:785
#, no-c-format
msgid "Fortran 2003: COMMON block '%s' at %L that is also a global procedure"
msgstr ""
-#: fortran/resolve.c:836
+#: fortran/resolve.c:847
#, no-c-format
msgid "Components of structure constructor '%s' at %L are PRIVATE"
msgstr ""
-#: fortran/resolve.c:858
+#: fortran/resolve.c:869
#, no-c-format
msgid ""
"The rank of the element in the derived type constructor at %L does not match "
"that of the component (%d/%d)"
msgstr ""
-#: fortran/resolve.c:871
+#: fortran/resolve.c:882
#, no-c-format
msgid ""
"The element in the derived type constructor at %L, for pointer component '%"
"s', is %s but should be %s"
msgstr ""
-#: fortran/resolve.c:885
+#: fortran/resolve.c:899
#, no-c-format
msgid ""
"The NULL in the derived type constructor at %L is being applied to component "
"'%s', which is neither a POINTER nor ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:899
+#: fortran/resolve.c:913
#, no-c-format
msgid ""
"The element in the derived type constructor at %L, for pointer component '%"
"s' should be a POINTER or a TARGET"
msgstr ""
-#: fortran/resolve.c:1020
+#: fortran/resolve.c:1034
#, no-c-format
msgid ""
"The upper bound in the last dimension must appear in the reference to the "
"assumed size array '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1082
+#: fortran/resolve.c:1096
#, no-c-format
msgid "'%s' at %L is ambiguous"
msgstr ""
-#: fortran/resolve.c:1086
+#: fortran/resolve.c:1100
#, no-c-format
msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L"
msgstr ""
-#: fortran/resolve.c:1197
+#: fortran/resolve.c:1199
+#, no-c-format
+msgid "Type specified for intrinsic function '%s' at %L is ignored"
+msgstr ""
+
+#: fortran/resolve.c:1212
+#, no-c-format
+msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier"
+msgstr ""
+
+#: fortran/resolve.c:1223
+#, no-c-format
+msgid "'%s' declared INTRINSIC at %L does not exist"
+msgstr ""
+
+#: fortran/resolve.c:1234
+#, no-c-format
+msgid ""
+"The intrinsic '%s' declared INTRINSIC at %L is not available in the current "
+"standard settings but %s. Use an appropriate -std=* option or enable -fall-"
+"intrinsics in order to use it."
+msgstr ""
+
+#: fortran/resolve.c:1270
#, no-c-format
msgid ""
"Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. "
"Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1231 fortran/resolve.c:6214 fortran/resolve.c:6954
+#: fortran/resolve.c:1304 fortran/resolve.c:6991 fortran/resolve.c:7778
#, no-c-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
-#: fortran/resolve.c:1283
+#: fortran/resolve.c:1361
#, no-c-format
msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgstr ""
-#: fortran/resolve.c:1291
+#: fortran/resolve.c:1369
#, no-c-format
msgid "Intrinsic '%s' at %L is not allowed as an actual argument"
msgstr ""
-#: fortran/resolve.c:1298
+#: fortran/resolve.c:1376
#, no-c-format
msgid "Internal procedure '%s' is not allowed as an actual argument at %L"
msgstr ""
-#: fortran/resolve.c:1304
+#: fortran/resolve.c:1382
#, no-c-format
msgid ""
"ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument "
"at %L"
msgstr ""
-#: fortran/resolve.c:1356
+#: fortran/resolve.c:1434
#, no-c-format
msgid "Symbol '%s' at %L is ambiguous"
msgstr ""
-#: fortran/resolve.c:1407
+#: fortran/resolve.c:1485
#, no-c-format
msgid "By-value argument at %L is not of numeric type"
msgstr ""
-#: fortran/resolve.c:1414
+#: fortran/resolve.c:1492
#, no-c-format
msgid "By-value argument at %L cannot be an array or an array section"
msgstr ""
-#: fortran/resolve.c:1428
+#: fortran/resolve.c:1506
#, no-c-format
msgid "By-value argument at %L is not allowed in this context"
msgstr ""
-#: fortran/resolve.c:1440
+#: fortran/resolve.c:1518
#, no-c-format
msgid "Passing internal procedure at %L by location not allowed"
msgstr ""
-#: fortran/resolve.c:1565
+#: fortran/resolve.c:1643
#, no-c-format
msgid ""
"'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the "
@@ -9020,600 +9533,625 @@ msgid ""
"argument with the same rank (12.4.1.5)"
msgstr ""
-#: fortran/resolve.c:1587
+#: fortran/resolve.c:1666
msgid "elemental procedure"
msgstr ""
-#: fortran/resolve.c:1604
+#: fortran/resolve.c:1682
#, no-c-format
msgid ""
"Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' "
"is a scalar, but another actual argument is an array"
msgstr ""
-#: fortran/resolve.c:1773
+#: fortran/resolve.c:1828
+#, no-c-format
+msgid ""
+"The reference to function '%s' at %L either needs an explicit INTERFACE or "
+"the rank is incorrect"
+msgstr ""
+
+#: fortran/resolve.c:1928
#, no-c-format
msgid "There is no specific function for the generic '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1782
+#: fortran/resolve.c:1937
#, no-c-format
msgid ""
"Generic function '%s' at %L is not consistent with a specific intrinsic "
"interface"
msgstr ""
-#: fortran/resolve.c:1820
+#: fortran/resolve.c:1975
#, no-c-format
msgid ""
"Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
msgstr ""
-#: fortran/resolve.c:1866
+#: fortran/resolve.c:2024
#, no-c-format
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1922 fortran/resolve.c:10672
+#: fortran/resolve.c:2080 fortran/resolve.c:11813
#, no-c-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:2131
+#: fortran/resolve.c:2289
#, no-c-format
msgid "Argument to '%s' at %L is not a variable"
msgstr ""
-#: fortran/resolve.c:2179
+#: fortran/resolve.c:2337
#, no-c-format
msgid "More actual than formal arguments in '%s' call at %L"
msgstr ""
-#: fortran/resolve.c:2188
+#: fortran/resolve.c:2346
#, no-c-format
msgid ""
"Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer"
msgstr ""
-#: fortran/resolve.c:2211
+#: fortran/resolve.c:2369
#, no-c-format
msgid ""
"Allocatable variable '%s' used as a parameter to '%s' at %L must not be an "
"array of zero size"
msgstr ""
-#: fortran/resolve.c:2228
+#: fortran/resolve.c:2386
#, no-c-format
msgid ""
"Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"because it is not C interoperable"
msgstr ""
-#: fortran/resolve.c:2238
+#: fortran/resolve.c:2396
#, no-c-format
msgid ""
"Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"because it is not C interoperable"
msgstr ""
-#: fortran/resolve.c:2261 fortran/resolve.c:2298
+#: fortran/resolve.c:2419 fortran/resolve.c:2456
#, no-c-format
msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1"
msgstr ""
#. Case 1c, section 15.1.2.5, J3/04-007: an associated
#. scalar pointer.
-#: fortran/resolve.c:2274
+#: fortran/resolve.c:2432
#, no-c-format
msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER"
msgstr ""
-#: fortran/resolve.c:2290
+#: fortran/resolve.c:2448
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be a scalar"
msgstr ""
#. TODO: Update this error message to allow for procedure
#. pointers once they are implemented.
-#: fortran/resolve.c:2312
+#: fortran/resolve.c:2470
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be a procedure"
msgstr ""
-#: fortran/resolve.c:2320
+#: fortran/resolve.c:2478
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be BIND(C)"
msgstr ""
-#: fortran/resolve.c:2367
+#: fortran/resolve.c:2525
#, no-c-format
msgid "'%s' at %L is not a function"
msgstr ""
-#: fortran/resolve.c:2373
+#: fortran/resolve.c:2531
#, no-c-format
msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L"
msgstr ""
#. Internal procedures are taken care of in resolve_contained_fntype.
-#: fortran/resolve.c:2419
+#: fortran/resolve.c:2577
#, no-c-format
msgid ""
"Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is "
"not a dummy argument"
msgstr ""
-#: fortran/resolve.c:2472
+#: fortran/resolve.c:2630
#, no-c-format
msgid ""
"User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE "
"construct"
msgstr ""
-#: fortran/resolve.c:2522
+#: fortran/resolve.c:2680
#, no-c-format
msgid "reference to non-PURE function '%s' at %L inside a FORALL %s"
msgstr ""
-#: fortran/resolve.c:2529
+#: fortran/resolve.c:2687
#, no-c-format
msgid ""
"Function reference to '%s' at %L is to a non-PURE procedure within a PURE "
"procedure"
msgstr ""
-#: fortran/resolve.c:2545
+#: fortran/resolve.c:2703
#, no-c-format
msgid ""
"ENTRY '%s' at %L cannot be called recursively, as function '%s' is not "
"RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2549
+#: fortran/resolve.c:2707
#, no-c-format
msgid ""
"Function '%s' at %L cannot be called recursively, as it is not RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2597
+#: fortran/resolve.c:2755
#, no-c-format
msgid "Subroutine call to '%s' in FORALL block at %L is not PURE"
msgstr ""
-#: fortran/resolve.c:2600
+#: fortran/resolve.c:2758
#, no-c-format
msgid "Subroutine call to '%s' at %L is not PURE"
msgstr ""
-#: fortran/resolve.c:2663
+#: fortran/resolve.c:2821
#, no-c-format
msgid "There is no specific subroutine for the generic '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2672
+#: fortran/resolve.c:2830
#, no-c-format
msgid ""
"Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine "
"interface"
msgstr ""
-#: fortran/resolve.c:2780
+#: fortran/resolve.c:2938
#, no-c-format
msgid "Missing SHAPE parameter for call to %s at %L"
msgstr ""
-#: fortran/resolve.c:2788
+#: fortran/resolve.c:2946
#, no-c-format
msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array"
msgstr ""
-#: fortran/resolve.c:2855
+#: fortran/resolve.c:3013
#, no-c-format
msgid ""
"Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
msgstr ""
-#: fortran/resolve.c:2899
+#: fortran/resolve.c:3057
#, no-c-format
msgid "Unable to resolve the specific subroutine '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2959
+#: fortran/resolve.c:3117
#, no-c-format
msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
msgstr ""
-#: fortran/resolve.c:2988
+#: fortran/resolve.c:3146
#, no-c-format
msgid ""
"ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not "
"RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2992
+#: fortran/resolve.c:3150
#, no-c-format
msgid ""
"SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE"
msgstr ""
-#: fortran/resolve.c:3070
+#: fortran/resolve.c:3228
#, no-c-format
msgid "Shapes for operands at %L and %L are not conformable"
msgstr ""
-#: fortran/resolve.c:3121
+#: fortran/resolve.c:3279
#, c-format
msgid "Invalid context for NULL() pointer at %%L"
msgstr ""
-#: fortran/resolve.c:3137
+#: fortran/resolve.c:3295
#, c-format
msgid "Operand of unary numeric operator '%s' at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3153
+#: fortran/resolve.c:3311
#, c-format
msgid "Operands of binary numeric operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3168
+#: fortran/resolve.c:3326
#, c-format
msgid "Operands of string concatenation operator at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3187
+#: fortran/resolve.c:3345
#, c-format
msgid "Operands of logical operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3201
+#: fortran/resolve.c:3359
#, c-format
msgid "Operand of .not. operator at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3215
+#: fortran/resolve.c:3373
msgid "COMPLEX quantities cannot be compared at %L"
msgstr ""
-#: fortran/resolve.c:3244
+#: fortran/resolve.c:3402
#, c-format
msgid "Logicals at %%L must be compared with %s instead of %s"
msgstr ""
-#: fortran/resolve.c:3250
+#: fortran/resolve.c:3408
#, c-format
msgid "Operands of comparison operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3258
+#: fortran/resolve.c:3416
#, c-format
msgid "Unknown operator '%s' at %%L"
msgstr ""
-#: fortran/resolve.c:3260
+#: fortran/resolve.c:3418
#, c-format
msgid "Operand of user operator '%s' at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3263
+#: fortran/resolve.c:3421
#, c-format
msgid "Operands of user operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3349
+#: fortran/resolve.c:3507
#, c-format
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:3546
+#: fortran/resolve.c:3710
#, no-c-format
msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3554
+#: fortran/resolve.c:3718
#, no-c-format
msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3573
+#: fortran/resolve.c:3737
#, no-c-format
msgid "Illegal stride of zero at %L"
msgstr ""
-#: fortran/resolve.c:3590
+#: fortran/resolve.c:3754
#, no-c-format
msgid ""
"Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3598
+#: fortran/resolve.c:3762
#, no-c-format
msgid ""
"Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3614
+#: fortran/resolve.c:3778
#, no-c-format
msgid ""
"Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3623
+#: fortran/resolve.c:3787
#, no-c-format
msgid ""
"Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3662
+#: fortran/resolve.c:3826
#, no-c-format
msgid "Rightmost upper bound of assumed size array section not specified at %L"
msgstr ""
-#: fortran/resolve.c:3672
+#: fortran/resolve.c:3836
#, no-c-format
msgid "Rank mismatch in array reference at %L (%d/%d)"
msgstr ""
-#: fortran/resolve.c:3700
+#: fortran/resolve.c:3864
#, no-c-format
msgid "Array index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3706
+#: fortran/resolve.c:3870
#, no-c-format
msgid "Array index at %L must be of INTEGER type, found %s"
msgstr ""
-#: fortran/resolve.c:3712
+#: fortran/resolve.c:3876
#, no-c-format
msgid "Extension: REAL array index at %L"
msgstr ""
-#: fortran/resolve.c:3742
+#: fortran/resolve.c:3906
#, no-c-format
msgid "Argument dim at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3749
+#: fortran/resolve.c:3913
#, no-c-format
msgid "Argument dim at %L must be of INTEGER type"
msgstr ""
-#: fortran/resolve.c:3870
+#: fortran/resolve.c:4037
#, no-c-format
msgid "Array index at %L is an array of rank %d"
msgstr ""
-#: fortran/resolve.c:3907
+#: fortran/resolve.c:4076
#, no-c-format
msgid "Substring start index at %L must be of type INTEGER"
msgstr ""
-#: fortran/resolve.c:3914
+#: fortran/resolve.c:4083
#, no-c-format
msgid "Substring start index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3923
+#: fortran/resolve.c:4092
#, no-c-format
msgid "Substring start index at %L is less than one"
msgstr ""
-#: fortran/resolve.c:3936
+#: fortran/resolve.c:4105
#, no-c-format
msgid "Substring end index at %L must be of type INTEGER"
msgstr ""
-#: fortran/resolve.c:3943
+#: fortran/resolve.c:4112
#, no-c-format
msgid "Substring end index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3953
+#: fortran/resolve.c:4122
#, no-c-format
msgid "Substring end index at %L exceeds the string length"
msgstr ""
-#: fortran/resolve.c:4091
+#: fortran/resolve.c:4132
+#, no-c-format
+msgid "Substring end index at %L is too large"
+msgstr ""
+
+#: fortran/resolve.c:4266
#, no-c-format
msgid ""
"Component to the right of a part reference with nonzero rank must not have "
"the POINTER attribute at %L"
msgstr ""
-#: fortran/resolve.c:4098
+#: fortran/resolve.c:4273
#, no-c-format
msgid ""
"Component to the right of a part reference with nonzero rank must not have "
"the ALLOCATABLE attribute at %L"
msgstr ""
-#: fortran/resolve.c:4117
+#: fortran/resolve.c:4292
#, no-c-format
msgid ""
"Two or more part references with nonzero rank must not be specified at %L"
msgstr ""
-#: fortran/resolve.c:4300
+#: fortran/resolve.c:4475
#, no-c-format
msgid ""
"Variable '%s', used in a specification expression, is referenced at %L "
"before the ENTRY statement in which it is a parameter"
msgstr ""
-#: fortran/resolve.c:4305
+#: fortran/resolve.c:4480
#, no-c-format
msgid ""
"Variable '%s' is used at %L before the ENTRY statement in which it is a "
"parameter"
msgstr ""
-#: fortran/resolve.c:4589
+#: fortran/resolve.c:4767 fortran/resolve.c:4839
#, no-c-format
msgid "Passed-object at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:4622
+#: fortran/resolve.c:4868
#, no-c-format
msgid ""
"Base object for type-bound procedure call at %L is of ABSTRACT type '%s'"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:4723
+#: fortran/resolve.c:4970
#, no-c-format
msgid ""
"Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:4743
+#. To resolve class member calls, we borrow this bit
+#. of code to select the specific procedures.
+#: fortran/resolve.c:4990 fortran/resolve.c:5043
#, no-c-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:4782
+#: fortran/resolve.c:5035
#, no-c-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:4980
+#: fortran/resolve.c:5119
+#, no-c-format
+msgid "no typebound available procedure named '%s' at %L"
+msgstr ""
+
+#: fortran/resolve.c:5568
#, no-c-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:4990
+#: fortran/resolve.c:5578
#, no-c-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:4994 fortran/resolve.c:5001
+#: fortran/resolve.c:5582 fortran/resolve.c:5589
#, no-c-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:5021
+#: fortran/resolve.c:5609
#, no-c-format
msgid "Cannot assign to loop variable in PURE procedure at %L"
msgstr ""
-#: fortran/resolve.c:5045
+#: fortran/resolve.c:5633
#, no-c-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:5080
+#: fortran/resolve.c:5668
#, no-c-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:5141
+#: fortran/resolve.c:5729
#, no-c-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5146
+#: fortran/resolve.c:5734
#, no-c-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5153
+#: fortran/resolve.c:5741
#, no-c-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5161
+#: fortran/resolve.c:5749
#, no-c-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:5166
+#: fortran/resolve.c:5754
#, no-c-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:5182
+#: fortran/resolve.c:5770
#, no-c-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:5262 fortran/resolve.c:5396
+#: fortran/resolve.c:5870 fortran/resolve.c:6033
#, no-c-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:5269
+#: fortran/resolve.c:5876
#, no-c-format
msgid "Cannot deallocate INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5404
+#: fortran/resolve.c:6041
+#, no-c-format
+msgid ""
+"Allocating %s of ABSTRACT base type at %L requires a type-spec or SOURCE="
+msgstr ""
+
+#: fortran/resolve.c:6048
#, no-c-format
msgid "Cannot allocate INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5428
+#: fortran/resolve.c:6060
#, no-c-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:5458
+#: fortran/resolve.c:6090
#, no-c-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:5478
+#: fortran/resolve.c:6110
#, no-c-format
msgid ""
"'%s' must not appear in the array specification at %L in the same ALLOCATE "
"statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:5503
+#: fortran/resolve.c:6135
#, no-c-format
msgid "Stat-variable '%s' at %L cannot be INTENT(IN)"
msgstr ""
-#: fortran/resolve.c:5507
+#: fortran/resolve.c:6139
#, no-c-format
msgid "Illegal stat-variable at %L for a PURE procedure"
msgstr ""
-#: fortran/resolve.c:5513
+#: fortran/resolve.c:6146
#, no-c-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:5518
+#: fortran/resolve.c:6151
#, no-c-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:5526
+#: fortran/resolve.c:6159
#, no-c-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:5530
+#: fortran/resolve.c:6163
#, no-c-format
msgid "Errmsg-variable '%s' at %L cannot be INTENT(IN)"
msgstr ""
-#: fortran/resolve.c:5534
+#: fortran/resolve.c:6167
#, no-c-format
msgid "Illegal errmsg-variable at %L for a PURE procedure"
msgstr ""
-#: fortran/resolve.c:5541
+#: fortran/resolve.c:6175
#, no-c-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:5546
+#: fortran/resolve.c:6180
#, no-c-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:5564
+#: fortran/resolve.c:6198
#, no-c-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
@@ -9622,99 +10160,109 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:5731
+#: fortran/resolve.c:6365
#, no-c-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:5782
+#: fortran/resolve.c:6416
#, no-c-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:5793
+#: fortran/resolve.c:6427
#, no-c-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:5805
+#: fortran/resolve.c:6439
#, no-c-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:5851
+#: fortran/resolve.c:6485
#, no-c-format
msgid ""
"Selection expression in computed GOTO statement at %L must be a scalar "
"integer expression"
msgstr ""
-#: fortran/resolve.c:5869
+#: fortran/resolve.c:6503
#, no-c-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:5878
+#: fortran/resolve.c:6512
#, no-c-format
msgid "Argument of SELECT statement at %L must be a scalar expression"
msgstr ""
-#: fortran/resolve.c:5943
+#: fortran/resolve.c:6577 fortran/resolve.c:6797
#, no-c-format
msgid ""
"The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:5969
+#: fortran/resolve.c:6603
#, no-c-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:5981
+#: fortran/resolve.c:6615
#, no-c-format
msgid "constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:5995
+#: fortran/resolve.c:6629
#, no-c-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:6098
+#: fortran/resolve.c:6732
#, no-c-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:6136
+#: fortran/resolve.c:6778
+#, no-c-format
+msgid "Derived type '%s' at %L must be extensible"
+msgstr ""
+
+#: fortran/resolve.c:6787
+#, no-c-format
+msgid "Derived type '%s' at %L must be an extension of '%s'"
+msgstr ""
+
+#: fortran/resolve.c:6913
#, no-c-format
msgid "Data transfer element at %L cannot have POINTER components"
msgstr ""
-#: fortran/resolve.c:6143
+#: fortran/resolve.c:6920
#, no-c-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components"
msgstr ""
-#: fortran/resolve.c:6150
+#: fortran/resolve.c:6927
#, no-c-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:6159
+#: fortran/resolve.c:6936
#, no-c-format
msgid ""
"Data transfer element at %L cannot be a full reference to an assumed-size "
"array"
msgstr ""
-#: fortran/resolve.c:6221
+#: fortran/resolve.c:6998
#, no-c-format
msgid ""
"Statement at %L is not a valid branch target statement for the branch "
"statement at %L"
msgstr ""
-#: fortran/resolve.c:6230
+#: fortran/resolve.c:7007
#, no-c-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
@@ -9722,113 +10270,113 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:6258
+#: fortran/resolve.c:7035
#, no-c-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:6333
+#: fortran/resolve.c:7110
#, no-c-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:6349
+#: fortran/resolve.c:7126
#, no-c-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:6357 fortran/resolve.c:6444
+#: fortran/resolve.c:7134 fortran/resolve.c:7221
#, no-c-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:6367 fortran/resolve.c:6454
+#: fortran/resolve.c:7144 fortran/resolve.c:7231
#, no-c-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:6398
+#: fortran/resolve.c:7175
#, no-c-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:6407
+#: fortran/resolve.c:7184
#, no-c-format
msgid ""
"The FORALL with index '%s' is not used on the left side of the assignment at "
"%L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:6576
+#: fortran/resolve.c:7353
#, no-c-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:6643
+#: fortran/resolve.c:7432
#, no-c-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:6705
-#, no-c-format
-msgid "Subroutine '%s' called instead of assignment at %L must be PURE"
-msgstr ""
-
-#: fortran/resolve.c:6778
+#: fortran/resolve.c:7587
#, no-c-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:6803
+#: fortran/resolve.c:7612
#, no-c-format
msgid "Cannot assign to variable '%s' in PURE procedure at %L"
msgstr ""
-#: fortran/resolve.c:6815
+#: fortran/resolve.c:7624
#, no-c-format
msgid ""
"The impure variable at %L is assigned to a derived type variable with a "
"POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:6922
+#: fortran/resolve.c:7635
+#, no-c-format
+msgid "Variable must not be polymorphic in assignment at %L"
+msgstr ""
+
+#: fortran/resolve.c:7741
#, no-c-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:6925
+#: fortran/resolve.c:7744
#, no-c-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:6936
+#: fortran/resolve.c:7755
#, no-c-format
msgid ""
"Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:6962
+#: fortran/resolve.c:7786
#, no-c-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:6977
+#: fortran/resolve.c:7801
#, no-c-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:7027
+#: fortran/resolve.c:7864
#, no-c-format
msgid ""
"Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:7109
+#: fortran/resolve.c:7946
#, no-c-format
msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:7181 fortran/resolve.c:7237
+#: fortran/resolve.c:8018 fortran/resolve.c:8074
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L collides with the global "
@@ -9836,14 +10384,14 @@ msgid ""
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:7202
+#: fortran/resolve.c:8039
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L does not match the binding "
"label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:7249
+#: fortran/resolve.c:8086
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L collides with global entity '%"
@@ -9851,255 +10399,270 @@ msgid ""
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:7301
+#: fortran/resolve.c:8138
#, no-c-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:7314
+#: fortran/resolve.c:8151
#, no-c-format
msgid ""
"Binding label '%s' in interface body at %L collides with the global entity '%"
"s' at %L"
msgstr ""
-#: fortran/resolve.c:7327
+#: fortran/resolve.c:8164
#, no-c-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:7404
+#: fortran/resolve.c:8241
#, no-c-format
msgid "CHARACTER variable has zero length at %L"
msgstr ""
-#: fortran/resolve.c:7697
+#: fortran/resolve.c:8252
+#, no-c-format
+msgid "String length at %L is too large"
+msgstr ""
+
+#: fortran/resolve.c:8553
#, no-c-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7700
+#: fortran/resolve.c:8557
#, no-c-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:7707
+#: fortran/resolve.c:8565
#, no-c-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7718
+#: fortran/resolve.c:8576
#, no-c-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7746
+#: fortran/resolve.c:8604
#, no-c-format
msgid ""
"The type '%s' cannot be host associated at %L because it is blocked by an "
"incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:7769
+#: fortran/resolve.c:8627
#, no-c-format
msgid ""
"Object '%s' at %L must have the SAVE attribute for default initialization of "
"a component"
msgstr ""
+#: fortran/resolve.c:8638
+#, no-c-format
+msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
+msgstr ""
+
+#: fortran/resolve.c:8648
+#, no-c-format
+msgid "CLASS variable '%s' at %L must be dummy, allocatable or pointer"
+msgstr ""
+
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:7816
+#: fortran/resolve.c:8695
#, no-c-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:7829
+#: fortran/resolve.c:8708
#, no-c-format
msgid ""
"Entity with assumed character length at %L must be a dummy argument or a "
"PARAMETER"
msgstr ""
-#: fortran/resolve.c:7848
+#: fortran/resolve.c:8727
#, no-c-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:7884
+#: fortran/resolve.c:8763
#, no-c-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7887
+#: fortran/resolve.c:8766
#, no-c-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7891
+#: fortran/resolve.c:8770
#, no-c-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7894
+#: fortran/resolve.c:8773
#, no-c-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7897
+#: fortran/resolve.c:8776
#, no-c-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7900
+#: fortran/resolve.c:8779
#, no-c-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7923
+#: fortran/resolve.c:8802
#, no-c-format
msgid "Although not referenced, '%s' at %L has ambiguous interfaces"
msgstr ""
-#: fortran/resolve.c:7942
+#: fortran/resolve.c:8821
#, no-c-format
msgid ""
"Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:7950
+#: fortran/resolve.c:8829
#, no-c-format
msgid ""
"Automatic character length function '%s' at %L must have an explicit "
"interface"
msgstr ""
-#: fortran/resolve.c:7975
+#: fortran/resolve.c:8854
#, no-c-format
msgid ""
"Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%"
"s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:7998 fortran/resolve.c:8023
+#: fortran/resolve.c:8877 fortran/resolve.c:8902
#, no-c-format
msgid ""
"Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy "
"arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:8041
+#: fortran/resolve.c:8920
#, no-c-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:8050
+#: fortran/resolve.c:8929
#, no-c-format
msgid "External object '%s' at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:8058
+#: fortran/resolve.c:8937
#, no-c-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:8079
+#: fortran/resolve.c:8958
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:8083
+#: fortran/resolve.c:8962
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:8087
+#: fortran/resolve.c:8966
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:8091
+#: fortran/resolve.c:8970
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:8100
+#: fortran/resolve.c:8979
#, no-c-format
-msgid "CHARACTER(*) function '%s' at %L is obsolescent in fortran 95"
+msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8155
+#: fortran/resolve.c:9034
#, no-c-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8161
+#: fortran/resolve.c:9040
#, no-c-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8167
+#: fortran/resolve.c:9046
#, no-c-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8175
+#: fortran/resolve.c:9054
#, no-c-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8181
+#: fortran/resolve.c:9060
#, no-c-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:8227
+#: fortran/resolve.c:9106
#, no-c-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:8235
+#: fortran/resolve.c:9114
#, no-c-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:8244
+#: fortran/resolve.c:9123
#, no-c-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:8252
+#: fortran/resolve.c:9131
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:8258
+#: fortran/resolve.c:9137
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:8264
+#: fortran/resolve.c:9143
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:8272
+#: fortran/resolve.c:9151
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:8280
+#: fortran/resolve.c:9159
#, no-c-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:8299
+#: fortran/resolve.c:9178
#, no-c-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:8332
+#: fortran/resolve.c:9211
#, no-c-format
msgid ""
"Only array FINAL procedures declared for derived type '%s' defined at %L, "
@@ -10107,819 +10670,854 @@ msgid ""
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:8337
+#: fortran/resolve.c:9216
#, no-c-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:8363
+#: fortran/resolve.c:9242
#, no-c-format
msgid "Can't overwrite GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8375
+#: fortran/resolve.c:9254
#, no-c-format
msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE"
msgstr ""
-#: fortran/resolve.c:8383
+#: fortran/resolve.c:9262
#, no-c-format
msgid "'%s' at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
msgstr ""
-#: fortran/resolve.c:8391
+#: fortran/resolve.c:9270
#, no-c-format
msgid "'%s' at %L overrides a PURE procedure and must also be PURE"
msgstr ""
-#: fortran/resolve.c:8400
+#: fortran/resolve.c:9279
#, no-c-format
msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
msgstr ""
-#: fortran/resolve.c:8406
+#: fortran/resolve.c:9285
#, no-c-format
msgid ""
"'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, "
"either"
msgstr ""
-#: fortran/resolve.c:8415
+#: fortran/resolve.c:9294
#, no-c-format
msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:8426
+#: fortran/resolve.c:9305
#, no-c-format
msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:8437
+#: fortran/resolve.c:9316
#, no-c-format
msgid ""
"'%s' at %L and the overridden FUNCTION should have matching result types"
msgstr ""
-#: fortran/resolve.c:8448
+#: fortran/resolve.c:9327
#, no-c-format
msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE"
msgstr ""
-#: fortran/resolve.c:8477
+#: fortran/resolve.c:9356
#, no-c-format
msgid ""
"Dummy argument '%s' of '%s' at %L should be named '%s' as to match the "
"corresponding argument of the overridden procedure"
msgstr ""
-#: fortran/resolve.c:8490
+#: fortran/resolve.c:9369
#, no-c-format
msgid ""
"Types mismatch for dummy argument '%s' of '%s' %L in in respect to the "
"overridden procedure"
msgstr ""
-#: fortran/resolve.c:8500
+#: fortran/resolve.c:9379
#, no-c-format
msgid ""
"'%s' at %L must have the same number of formal arguments as the overridden "
"procedure"
msgstr ""
-#: fortran/resolve.c:8509
+#: fortran/resolve.c:9388
#, no-c-format
msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS"
msgstr ""
-#: fortran/resolve.c:8520
+#: fortran/resolve.c:9399
#, no-c-format
msgid "'%s' at %L overrides a binding with PASS and must also be PASS"
msgstr ""
-#: fortran/resolve.c:8527
+#: fortran/resolve.c:9406
#, no-c-format
msgid ""
"Passed-object dummy argument of '%s' at %L must be at the same position as "
"the passed-object dummy argument of the overridden procedure"
msgstr ""
-#: fortran/resolve.c:8558
+#: fortran/resolve.c:9440
#, no-c-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8567
+#: fortran/resolve.c:9449
#, no-c-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:8636
+#: fortran/resolve.c:9508
#, no-c-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8648
+#: fortran/resolve.c:9520
#, no-c-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:8678
+#: fortran/resolve.c:9550
#, no-c-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:8742
+#: fortran/resolve.c:9606
+#, no-c-format
+msgid "Type-bound operator at %L can't be NOPASS"
+msgstr ""
+
+#: fortran/resolve.c:9769
#, no-c-format
msgid ""
"'%s' must be a module procedure or an external procedure with an explicit "
"interface at %L"
msgstr ""
-#: fortran/resolve.c:8779
+#: fortran/resolve.c:9806
#, no-c-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:8793
+#: fortran/resolve.c:9820
#, no-c-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:8805
+#: fortran/resolve.c:9831 fortran/resolve.c:10199
#, no-c-format
-msgid ""
-"Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
+msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8811
+#: fortran/resolve.c:9839
#, no-c-format
msgid ""
-"Polymorphic entities are not yet implemented, non-polymorphic passed-object "
-"dummy argument of '%s' at %L accepted"
+"Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:8836
+#: fortran/resolve.c:9867
#, no-c-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:8845
+#: fortran/resolve.c:9876
#, no-c-format
msgid ""
"Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:8916
+#: fortran/resolve.c:9963
#, no-c-format
msgid ""
"Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED "
"and not overridden"
msgstr ""
-#: fortran/resolve.c:8974
+#: fortran/resolve.c:10024
#, no-c-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:8984
+#: fortran/resolve.c:10034
#, no-c-format
msgid ""
"Interface '%s', used by procedure pointer component '%s' at %L, is declared "
"in a later PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:9041
+#: fortran/resolve.c:10095
#, no-c-format
msgid ""
"Interface '%s' of procedure pointer component '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:9063
+#: fortran/resolve.c:10133
+#, no-c-format
+msgid ""
+"Procedure pointer component '%s' with PASS(%s) at %L has no argument '%s'"
+msgstr ""
+
+#: fortran/resolve.c:10147
+#, no-c-format
+msgid ""
+"Procedure pointer component '%s' with PASS at %L must have at least one "
+"argument"
+msgstr ""
+
+#: fortran/resolve.c:10163
+#, no-c-format
+msgid ""
+"Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
+msgstr ""
+
+#: fortran/resolve.c:10173
+#, no-c-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L must be scalar"
+msgstr ""
+
+#: fortran/resolve.c:10182
+#, no-c-format
+msgid ""
+"Argument '%s' of '%s' with PASS(%s) at %L may not have the POINTER attribute"
+msgstr ""
+
+#: fortran/resolve.c:10191
+#, no-c-format
+msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
+msgstr ""
+
+#: fortran/resolve.c:10214
#, no-c-format
msgid ""
"Component '%s' of '%s' at %L has the same name as an inherited type-bound "
"procedure"
msgstr ""
-#: fortran/resolve.c:9075
+#: fortran/resolve.c:10226
#, no-c-format
msgid ""
"Character length of component '%s' needs to be a constant specification "
"expression at %L"
msgstr ""
-#: fortran/resolve.c:9091
+#: fortran/resolve.c:10241
#, no-c-format
msgid ""
"Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component "
"of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:9102
+#: fortran/resolve.c:10251
#, no-c-format
msgid ""
"Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
"attribute"
msgstr ""
-#: fortran/resolve.c:9113
+#: fortran/resolve.c:10262
#, no-c-format
msgid ""
"The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:9141
+#: fortran/resolve.c:10273
+#, no-c-format
+msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
+msgstr ""
+
+#: fortran/resolve.c:10301
#, no-c-format
msgid "Component '%s' of '%s' at %L must have constant array bounds"
msgstr ""
-#: fortran/resolve.c:9186
+#: fortran/resolve.c:10346
#, no-c-format
msgid ""
"NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC "
"namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9196
+#: fortran/resolve.c:10356
#, no-c-format
msgid ""
"NAMELIST object '%s' has use-associated PRIVATE components and cannot be "
"member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9209
+#: fortran/resolve.c:10369
#, no-c-format
msgid ""
"NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC "
"namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9221
+#: fortran/resolve.c:10381
#, no-c-format
msgid ""
"NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9230
+#: fortran/resolve.c:10390
#, no-c-format
msgid ""
"NAMELIST array object '%s' must have constant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9242
+#: fortran/resolve.c:10402
#, no-c-format
msgid ""
"NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE "
"components"
msgstr ""
-#: fortran/resolve.c:9250
+#: fortran/resolve.c:10410
#, no-c-format
msgid ""
"NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components"
msgstr ""
-#: fortran/resolve.c:9276
+#: fortran/resolve.c:10436
#, no-c-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9295
+#: fortran/resolve.c:10455
#, no-c-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:9307
+#: fortran/resolve.c:10467
#, no-c-format
msgid ""
"Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:9318
+#: fortran/resolve.c:10478
#, no-c-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:9380
+#: fortran/resolve.c:10541
+#, no-c-format
+msgid "PROCEDURE '%s' at %L may not be used as its own interface"
+msgstr ""
+
+#: fortran/resolve.c:10547
#, no-c-format
msgid ""
"Interface '%s', used by procedure '%s' at %L, is declared in a later "
"PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:9437
+#: fortran/resolve.c:10600
#, no-c-format
msgid "Interface '%s' of procedure '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:9471
-#, no-c-format
-msgid "Type specified for intrinsic function '%s' at %L is ignored"
-msgstr ""
-
-#: fortran/resolve.c:9478
-#, no-c-format
-msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier"
-msgstr ""
-
-#: fortran/resolve.c:9485
-#, no-c-format
-msgid "'%s' declared INTRINSIC at %L does not exist"
-msgstr ""
-
-#: fortran/resolve.c:9494
-#, no-c-format
-msgid ""
-"The intrinsic '%s' declared INTRINSIC at %L is not available in the current "
-"standard settings but %s. Use an appropriate -std=* option or enable -fall-"
-"intrinsics in order to use it."
-msgstr ""
-
-#: fortran/resolve.c:9541
+#: fortran/resolve.c:10667
#, no-c-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:9544
+#: fortran/resolve.c:10670
#, no-c-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:9556
+#: fortran/resolve.c:10682
#, no-c-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:9562
+#: fortran/resolve.c:10688
#, no-c-format
msgid ""
"'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:9572
+#: fortran/resolve.c:10698
#, no-c-format
msgid ""
"Character dummy variable '%s' at %L with VALUE attribute must have constant "
"length"
msgstr ""
-#: fortran/resolve.c:9581
+#: fortran/resolve.c:10707
#, no-c-format
msgid ""
"C interoperable character dummy variable '%s' at %L with VALUE attribute "
"must have length one"
msgstr ""
-#: fortran/resolve.c:9607
+#: fortran/resolve.c:10733
#, no-c-format
msgid ""
"Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block "
"nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:9660
+#: fortran/resolve.c:10786
#, no-c-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:9701
+#: fortran/resolve.c:10827
#, no-c-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:9720
+#: fortran/resolve.c:10846
#, no-c-format
msgid ""
"The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have "
"a default initializer"
msgstr ""
-#: fortran/resolve.c:9779
+#: fortran/resolve.c:10920
#, no-c-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:9867
+#: fortran/resolve.c:10968
+#, no-c-format
+msgid "non-constant DATA value at %L"
+msgstr ""
+
+#: fortran/resolve.c:11011
#, no-c-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:9873
+#: fortran/resolve.c:11017
#, no-c-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:9889
+#: fortran/resolve.c:11033
#, no-c-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:9935
+#: fortran/resolve.c:11079
#, no-c-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:9948
+#: fortran/resolve.c:11092
#, no-c-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:10042
+#: fortran/resolve.c:11186
#, no-c-format
msgid "iterator start at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:10049
+#: fortran/resolve.c:11193
#, no-c-format
msgid "iterator end at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:10056
+#: fortran/resolve.c:11200
#, no-c-format
msgid "iterator step at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:10182
+#: fortran/resolve.c:11326
#, no-c-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:10273
+#: fortran/resolve.c:11417
#, no-c-format
msgid "Label %d at %L defined but not used"
msgstr ""
-#: fortran/resolve.c:10278
+#: fortran/resolve.c:11422
#, no-c-format
msgid "Label %d at %L defined but cannot be used"
msgstr ""
-#: fortran/resolve.c:10363
+#: fortran/resolve.c:11506
#, no-c-format
msgid ""
"Derived type variable '%s' at %L must have SEQUENCE attribute to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10372
+#: fortran/resolve.c:11515
#, no-c-format
msgid ""
"Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10380
+#: fortran/resolve.c:11523
#, no-c-format
msgid ""
"Derived type variable '%s' at %L with default initialization cannot be in "
"EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:10397
+#: fortran/resolve.c:11539
#, no-c-format
msgid ""
"Derived type variable '%s' at %L with pointer component(s) cannot be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10502
+#: fortran/resolve.c:11643
#, no-c-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:10517
+#: fortran/resolve.c:11658
#, no-c-format
msgid ""
"Either all or none of the objects in the EQUIVALENCE set at %L shall have "
"the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:10529
+#: fortran/resolve.c:11670
#, no-c-format
msgid ""
"Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure "
"procedure '%s'"
msgstr ""
-#: fortran/resolve.c:10538
+#: fortran/resolve.c:11679
#, no-c-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10617
+#: fortran/resolve.c:11758
#, no-c-format
msgid ""
"Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10628
+#: fortran/resolve.c:11769
#, no-c-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10639
+#: fortran/resolve.c:11780
#, no-c-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:10683
+#: fortran/resolve.c:11824
#, no-c-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:10696
+#: fortran/resolve.c:11837
#, no-c-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:10722
+#: fortran/resolve.c:11854
#, no-c-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:10729
+#: fortran/resolve.c:11864
#, no-c-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:10735
+#: fortran/resolve.c:11872
#, no-c-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:10745
+#: fortran/resolve.c:11886
#, no-c-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:10757
+#: fortran/resolve.c:11904
#, no-c-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:10761
+#: fortran/resolve.c:11911
#, no-c-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:10815
+#: fortran/resolve.c:11983
#, no-c-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
-#: fortran/scanner.c:727
+#: fortran/scanner.c:760
#, no-c-format
msgid ""
"!$OMP at %C starts a commented line as it neither is followed by a space nor "
"is a continuation line"
msgstr ""
-#: fortran/scanner.c:1030 fortran/scanner.c:1154
+#: fortran/scanner.c:1078 fortran/scanner.c:1221
#, no-c-format
msgid "Limit of %d continuations exceeded in statement at %C"
msgstr ""
-#: fortran/scanner.c:1078
+#: fortran/scanner.c:1090 fortran/scanner.c:1177
+#, no-c-format
+msgid "Line truncated at %L"
+msgstr ""
+
+#: fortran/scanner.c:1137
#, no-c-format
msgid "Missing '&' in continued character constant at %C"
msgstr ""
-#: fortran/scanner.c:1304
+#: fortran/scanner.c:1371
#, no-c-format
msgid "Nonconforming tab character at %C"
msgstr ""
-#: fortran/scanner.c:1392 fortran/scanner.c:1395
+#: fortran/scanner.c:1459 fortran/scanner.c:1462
#, no-c-format
msgid "'&' not allowed by itself in line %d"
msgstr ""
-#: fortran/scanner.c:1442
+#: fortran/scanner.c:1509
#, no-c-format
msgid "Nonconforming tab character in column %d of line %d"
msgstr ""
-#: fortran/scanner.c:1650
+#: fortran/scanner.c:1717
#, no-c-format
msgid "%s:%d: file %s left but not entered"
msgstr ""
-#: fortran/scanner.c:1684
+#: fortran/scanner.c:1751
#, no-c-format
msgid "%s:%d: Illegal preprocessor directive"
msgstr ""
-#: fortran/scanner.c:1802
+#: fortran/scanner.c:1869
#, no-c-format
msgid "Can't open file '%s'"
msgstr ""
-#: fortran/simplify.c:82
+#: fortran/simplify.c:86
#, no-c-format
msgid "Result of %s overflows its kind at %L"
msgstr ""
-#: fortran/simplify.c:87
+#: fortran/simplify.c:91
#, no-c-format
msgid "Result of %s underflows its kind at %L"
msgstr ""
-#: fortran/simplify.c:92
+#: fortran/simplify.c:96
#, no-c-format
msgid "Result of %s is NaN at %L"
msgstr ""
-#: fortran/simplify.c:96
+#: fortran/simplify.c:100
#, no-c-format
msgid "Result of %s gives range error for its kind at %L"
msgstr ""
-#: fortran/simplify.c:119
+#: fortran/simplify.c:123
#, no-c-format
msgid "KIND parameter of %s at %L must be an initialization expression"
msgstr ""
-#: fortran/simplify.c:127
+#: fortran/simplify.c:131
#, no-c-format
msgid "Invalid KIND parameter of %s at %L"
msgstr ""
-#: fortran/simplify.c:276
+#: fortran/simplify.c:680
#, no-c-format
msgid "Argument of %s function at %L is negative"
msgstr ""
-#: fortran/simplify.c:283
+#: fortran/simplify.c:687
#, no-c-format
msgid "Argument of %s function at %L outside of range [0,127]"
msgstr ""
-#: fortran/simplify.c:301
+#: fortran/simplify.c:705
#, no-c-format
msgid ""
"Argument of %s function at %L is too large for the collating sequence of "
"kind %d"
msgstr ""
-#: fortran/simplify.c:337
+#: fortran/simplify.c:744
#, no-c-format
msgid "Argument of ACOS at %L must be between -1 and 1"
msgstr ""
-#: fortran/simplify.c:359
+#: fortran/simplify.c:780
#, no-c-format
msgid "Argument of ACOSH at %L must not be less than 1"
msgstr ""
-#: fortran/simplify.c:576
+#: fortran/simplify.c:1049
#, no-c-format
msgid "Argument of ASIN at %L must be between -1 and 1"
msgstr ""
-#: fortran/simplify.c:632
+#: fortran/simplify.c:1146
#, no-c-format
msgid "Argument of ATANH at %L must be inside the range -1 to 1"
msgstr ""
-#: fortran/simplify.c:655
+#: fortran/simplify.c:1180
#, no-c-format
msgid ""
"If first argument of ATAN2 %L is zero, then the second argument must not be "
"zero"
msgstr ""
-#: fortran/simplify.c:1462
+#: fortran/simplify.c:2221
#, no-c-format
msgid "Argument of IACHAR at %L must be of length one"
msgstr ""
-#: fortran/simplify.c:1469
+#: fortran/simplify.c:2228
#, no-c-format
msgid "Argument of IACHAR function at %L outside of range 0..127"
msgstr ""
-#: fortran/simplify.c:1508
+#: fortran/simplify.c:2267
#, no-c-format
msgid "Invalid second argument of IBCLR at %L"
msgstr ""
-#: fortran/simplify.c:1516
+#: fortran/simplify.c:2275
#, no-c-format
msgid "Second argument of IBCLR exceeds bit size at %L"
msgstr ""
-#: fortran/simplify.c:1550
+#: fortran/simplify.c:2309
#, no-c-format
msgid "Invalid second argument of IBITS at %L"
msgstr ""
-#: fortran/simplify.c:1556
+#: fortran/simplify.c:2315
#, no-c-format
msgid "Invalid third argument of IBITS at %L"
msgstr ""
-#: fortran/simplify.c:1566
+#: fortran/simplify.c:2325
#, no-c-format
msgid "Sum of second and third arguments of IBITS exceeds bit size at %L"
msgstr ""
-#: fortran/simplify.c:1613
+#: fortran/simplify.c:2372
#, no-c-format
msgid "Invalid second argument of IBSET at %L"
msgstr ""
-#: fortran/simplify.c:1621
+#: fortran/simplify.c:2380
#, no-c-format
msgid "Second argument of IBSET exceeds bit size at %L"
msgstr ""
-#: fortran/simplify.c:1651
+#: fortran/simplify.c:2410
#, no-c-format
msgid "Argument of ICHAR at %L must be of length one"
msgstr ""
-#: fortran/simplify.c:1854
+#: fortran/simplify.c:2613
#, no-c-format
msgid "Argument of INT at %L is not a valid type"
msgstr ""
-#: fortran/simplify.c:1885
+#: fortran/simplify.c:2644
#, no-c-format
msgid "Argument of %s at %L is not a valid type"
msgstr ""
-#: fortran/simplify.c:1982
+#: fortran/simplify.c:2789
#, no-c-format
msgid "Invalid second argument of ISHFT at %L"
msgstr ""
-#: fortran/simplify.c:1997
+#: fortran/simplify.c:2804
#, no-c-format
msgid "Magnitude of second argument of ISHFT exceeds bit size at %L"
msgstr ""
-#: fortran/simplify.c:2061
+#: fortran/simplify.c:2868
#, no-c-format
msgid "Invalid second argument of ISHFTC at %L"
msgstr ""
-#: fortran/simplify.c:2075
+#: fortran/simplify.c:2882
#, no-c-format
msgid "Invalid third argument of ISHFTC at %L"
msgstr ""
-#: fortran/simplify.c:2081
+#: fortran/simplify.c:2888
#, no-c-format
msgid ""
"Magnitude of third argument of ISHFTC exceeds BIT_SIZE of first argument at %"
"L"
msgstr ""
-#: fortran/simplify.c:2097
+#: fortran/simplify.c:2904
#, no-c-format
msgid "Magnitude of second argument of ISHFTC exceeds third argument at %L"
msgstr ""
-#: fortran/simplify.c:2100
+#: fortran/simplify.c:2907
#, no-c-format
msgid ""
"Magnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at "
"%L"
msgstr ""
-#: fortran/simplify.c:2171
+#: fortran/simplify.c:2978
#, no-c-format
msgid "Argument of KIND at %L is a DERIVED type"
msgstr ""
-#: fortran/simplify.c:2383
+#: fortran/simplify.c:3190
#, no-c-format
msgid "DIM argument at %L is out of bounds"
msgstr ""
-#: fortran/simplify.c:2555
+#: fortran/simplify.c:3376
#, no-c-format
msgid "Argument of LOG at %L cannot be less than or equal to zero"
msgstr ""
-#: fortran/simplify.c:2568
+#: fortran/simplify.c:3389
#, no-c-format
msgid "Complex argument of LOG at %L cannot be zero"
msgstr ""
-#: fortran/simplify.c:2609
+#: fortran/simplify.c:3436
#, no-c-format
msgid "Argument of LOG10 at %L cannot be less than or equal to zero"
msgstr ""
#. Result is processor-dependent.
-#: fortran/simplify.c:2902
+#: fortran/simplify.c:3807
#, no-c-format
msgid "Second argument MOD at %L is zero"
msgstr ""
#. Result is processor-dependent.
-#: fortran/simplify.c:2913
+#: fortran/simplify.c:3818
#, no-c-format
msgid "Second argument of MOD at %L is zero"
msgstr ""
@@ -10927,95 +11525,49 @@ msgstr ""
#. Result is processor-dependent. This processor just opts
#. to not handle it at all.
#. Result is processor-dependent.
-#: fortran/simplify.c:2955 fortran/simplify.c:2967
+#: fortran/simplify.c:3860 fortran/simplify.c:3872
#, no-c-format
msgid "Second argument of MODULO at %L is zero"
msgstr ""
-#: fortran/simplify.c:3013
+#: fortran/simplify.c:3918
#, no-c-format
msgid "Second argument of NEAREST at %L shall not be zero"
msgstr ""
-#: fortran/simplify.c:3049
+#: fortran/simplify.c:3954
#, no-c-format
msgid "Result of NEAREST is NaN at %L"
msgstr ""
-#: fortran/simplify.c:3330
+#: fortran/simplify.c:4332
#, no-c-format
msgid "Argument NCOPIES of REPEAT intrinsic is negative at %L"
msgstr ""
-#: fortran/simplify.c:3385
+#: fortran/simplify.c:4387
#, no-c-format
msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L"
msgstr ""
-#: fortran/simplify.c:3496
-#, no-c-format
-msgid "Integer too large in shape specification at %L"
-msgstr ""
-
-#: fortran/simplify.c:3504
-#, no-c-format
-msgid "Too many dimensions in shape specification for RESHAPE at %L"
-msgstr ""
-
-#: fortran/simplify.c:3512
-#, no-c-format
-msgid "Shape specification at %L cannot be negative"
-msgstr ""
-
-#: fortran/simplify.c:3524
-#, no-c-format
-msgid "Shape specification at %L cannot be the null array"
-msgstr ""
-
-#: fortran/simplify.c:3545
-#, no-c-format
-msgid ""
-"ORDER parameter of RESHAPE at %L is not the same size as SHAPE parameter"
-msgstr ""
-
-#: fortran/simplify.c:3552
-#, no-c-format
-msgid "Error in ORDER parameter of RESHAPE at %L"
-msgstr ""
-
-#: fortran/simplify.c:3560
-#, no-c-format
-msgid "ORDER parameter of RESHAPE at %L is out of range"
-msgstr ""
-
-#: fortran/simplify.c:3570
-#, no-c-format
-msgid "Invalid permutation in ORDER parameter at %L"
-msgstr ""
-
-#: fortran/simplify.c:3629
-#, no-c-format
-msgid "PAD parameter required for short SOURCE parameter at %L"
-msgstr ""
-
-#: fortran/simplify.c:3748
+#: fortran/simplify.c:4659
#, no-c-format
msgid "Result of SCALE overflows its kind at %L"
msgstr ""
-#: fortran/simplify.c:4382
+#: fortran/simplify.c:5423
#, no-c-format
msgid "Argument of SQRT at %L has a negative value"
msgstr ""
-#: fortran/simplify.c:4537
+#: fortran/simplify.c:5623
#, no-c-format
msgid ""
"Intrinsic TRANSFER at %L has partly undefined result: source size %ld < "
"result size %ld"
msgstr ""
-#: fortran/simplify.c:4903
+#: fortran/simplify.c:6078
#, no-c-format
msgid ""
"Character '%s' in string at %L cannot be converted into character kind %d"
@@ -11047,7 +11599,7 @@ msgid "Symbol '%s' at %L has no IMPLICIT type"
msgstr ""
#. BIND(C) variables should not be implicitly declared.
-#: fortran/symbol.c:281
+#: fortran/symbol.c:278
#, no-c-format
msgid ""
"Implicitly declared BIND(C) variable '%s' at %L may not be C interoperable"
@@ -11055,270 +11607,282 @@ msgstr ""
#. Dummy args to a BIND(C) routine may not be interoperable if
#. they are implicitly typed.
-#: fortran/symbol.c:295
+#: fortran/symbol.c:292
#, no-c-format
msgid ""
"Implicitly declared variable '%s' at %L may not be C interoperable but it is "
"a dummy argument to the BIND(C) procedure '%s' at %L"
msgstr ""
-#: fortran/symbol.c:336
+#: fortran/symbol.c:333
#, no-c-format
msgid "Function result '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/symbol.c:415
+#: fortran/symbol.c:412
#, no-c-format
msgid "%s attribute not allowed in BLOCK DATA program unit at %L"
msgstr ""
-#: fortran/symbol.c:470
+#: fortran/symbol.c:467
#, no-c-format
msgid "Fortran 2003: Procedure pointer at %C"
msgstr ""
-#: fortran/symbol.c:620
+#: fortran/symbol.c:617
#, no-c-format
msgid "%s attribute applied to %s %s at %L"
msgstr ""
-#: fortran/symbol.c:627
+#: fortran/symbol.c:624
#, no-c-format
msgid "BIND(C) applied to %s %s at %L"
msgstr ""
-#: fortran/symbol.c:728 fortran/symbol.c:1381
+#: fortran/symbol.c:725 fortran/symbol.c:1387
#, no-c-format
msgid "%s attribute conflicts with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:731
+#: fortran/symbol.c:728
#, no-c-format
msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgstr ""
-#: fortran/symbol.c:739
+#: fortran/symbol.c:736
#, no-c-format
msgid "Fortran 2003: %s attribute with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:745
+#: fortran/symbol.c:742
#, no-c-format
msgid "Fortran 2003: %s attribute with %s attribute in '%s' at %L"
msgstr ""
-#: fortran/symbol.c:789
+#: fortran/symbol.c:786
#, no-c-format
msgid "Cannot change attributes of USE-associated symbol at %L"
msgstr ""
-#: fortran/symbol.c:792
+#: fortran/symbol.c:789
#, no-c-format
msgid "Cannot change attributes of USE-associated symbol %s at %L"
msgstr ""
-#: fortran/symbol.c:808
+#: fortran/symbol.c:805
#, no-c-format
msgid "Duplicate %s attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:841
+#: fortran/symbol.c:847
#, no-c-format
msgid "ALLOCATABLE specified outside of INTERFACE body at %L"
msgstr ""
-#: fortran/symbol.c:867
+#: fortran/symbol.c:873
#, no-c-format
msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L"
msgstr ""
-#: fortran/symbol.c:985
+#: fortran/symbol.c:991
#, no-c-format
msgid "Cray Pointee at %L appears in multiple pointer() statements"
msgstr ""
-#: fortran/symbol.c:1004
+#: fortran/symbol.c:1010
#, no-c-format
msgid "Duplicate PROTECTED attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1037
+#: fortran/symbol.c:1043
#, no-c-format
msgid "SAVE attribute at %L cannot be specified in a PURE procedure"
msgstr ""
-#: fortran/symbol.c:1045
+#: fortran/symbol.c:1051
#, no-c-format
msgid "Duplicate SAVE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1066
+#: fortran/symbol.c:1072
#, no-c-format
msgid "Duplicate VALUE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1086
+#: fortran/symbol.c:1092
#, no-c-format
msgid "Duplicate VOLATILE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1377
+#: fortran/symbol.c:1383
#, no-c-format
msgid "%s attribute of '%s' conflicts with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:1411
+#: fortran/symbol.c:1417
#, no-c-format
msgid "%s procedure at %L is already declared as %s procedure"
msgstr ""
-#: fortran/symbol.c:1446
+#: fortran/symbol.c:1452
#, no-c-format
msgid "INTENT (%s) conflicts with INTENT(%s) at %L"
msgstr ""
-#: fortran/symbol.c:1470
+#: fortran/symbol.c:1476
#, no-c-format
msgid "ACCESS specification at %L was already specified"
msgstr ""
-#: fortran/symbol.c:1487
+#: fortran/symbol.c:1493
#, no-c-format
msgid "Duplicate BIND attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1494
+#: fortran/symbol.c:1500
#, no-c-format
msgid "Fortran 2003: BIND(C) at %L"
msgstr ""
-#: fortran/symbol.c:1511
+#: fortran/symbol.c:1517
#, no-c-format
msgid "Duplicate EXTENDS attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1515
+#: fortran/symbol.c:1521
#, no-c-format
msgid "Fortran 2003: EXTENDS at %L"
msgstr ""
-#: fortran/symbol.c:1537
+#: fortran/symbol.c:1543
#, no-c-format
msgid "Symbol '%s' at %L already has an explicit interface"
msgstr ""
-#: fortran/symbol.c:1544
+#: fortran/symbol.c:1550
#, no-c-format
msgid "'%s' at %L has attributes specified outside its INTERFACE body"
msgstr ""
-#: fortran/symbol.c:1585
+#: fortran/symbol.c:1583
+#, no-c-format
+msgid "Symbol '%s' at %L already has basic type of %s"
+msgstr ""
+
+#: fortran/symbol.c:1590
#, no-c-format
msgid "Procedure '%s' at %L may not have basic type of %s"
msgstr ""
-#: fortran/symbol.c:1597
+#: fortran/symbol.c:1602
#, no-c-format
msgid "Symbol '%s' at %L cannot have a type"
msgstr ""
-#: fortran/symbol.c:1756
+#: fortran/symbol.c:1765
#, no-c-format
msgid "Component '%s' at %C already declared at %L"
msgstr ""
-#: fortran/symbol.c:1767
+#: fortran/symbol.c:1776
#, no-c-format
msgid "Component '%s' at %C already in the parent type at %L"
msgstr ""
-#: fortran/symbol.c:1843
+#: fortran/symbol.c:1852
#, no-c-format
msgid "Symbol '%s' at %C is ambiguous"
msgstr ""
-#: fortran/symbol.c:1875
+#: fortran/symbol.c:1884
#, no-c-format
msgid "Derived type '%s' at %C is being used before it is defined"
msgstr ""
-#: fortran/symbol.c:1916
+#: fortran/symbol.c:1925
#, no-c-format
msgid "'%s' at %C is not a member of the '%s' structure"
msgstr ""
-#: fortran/symbol.c:1924
+#: fortran/symbol.c:1933
#, no-c-format
msgid "Component '%s' at %C is a PRIVATE component of '%s'"
msgstr ""
-#: fortran/symbol.c:1934
+#: fortran/symbol.c:1943
#, no-c-format
msgid "All components of '%s' are PRIVATE in structure constructor at %C"
msgstr ""
-#: fortran/symbol.c:2063
+#: fortran/symbol.c:2072
#, no-c-format
msgid "Duplicate statement label %d at %L and %L"
msgstr ""
-#: fortran/symbol.c:2073
+#: fortran/symbol.c:2082
#, no-c-format
msgid "Label %d at %C already referenced as branch target"
msgstr ""
-#: fortran/symbol.c:2082
+#: fortran/symbol.c:2091
#, no-c-format
msgid "Label %d at %C already referenced as a format label"
msgstr ""
-#: fortran/symbol.c:2124
+#: fortran/symbol.c:2133
#, no-c-format
msgid "Label %d at %C previously used as a FORMAT label"
msgstr ""
-#: fortran/symbol.c:2132
+#: fortran/symbol.c:2141
#, no-c-format
msgid "Label %d at %C previously used as branch target"
msgstr ""
-#: fortran/symbol.c:2444
+#: fortran/symbol.c:2456
#, no-c-format
msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'"
msgstr ""
-#: fortran/symbol.c:2447
+#: fortran/symbol.c:2459
#, no-c-format
msgid ""
"Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgstr ""
#. Symbol is from another namespace.
-#: fortran/symbol.c:2591
+#: fortran/symbol.c:2618
#, no-c-format
msgid "Symbol '%s' at %C has already been host associated"
msgstr ""
-#: fortran/symbol.c:3398
+#: fortran/symbol.c:3452
#, no-c-format
msgid ""
"Derived type '%s' declared at %L must have the BIND attribute to be C "
"interoperable"
msgstr ""
-#: fortran/symbol.c:3409
+#: fortran/symbol.c:3463
#, no-c-format
msgid "Derived type '%s' at %L is empty"
msgstr ""
-#: fortran/symbol.c:3426
+#: fortran/symbol.c:3480
#, no-c-format
msgid ""
"Component '%s' at %L cannot have the POINTER attribute because it is a "
"member of the BIND(C) derived type '%s' at %L"
msgstr ""
-#: fortran/symbol.c:3438
+#: fortran/symbol.c:3490
+#, no-c-format
+msgid ""
+"Procedure pointer component '%s' at %L cannot be a member of the BIND(C) "
+"derived type '%s' at %L"
+msgstr ""
+
+#: fortran/symbol.c:3501
#, no-c-format
msgid ""
"Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a "
@@ -11327,7 +11891,7 @@ msgstr ""
#. If the derived type is bind(c), all fields must be
#. interop.
-#: fortran/symbol.c:3476
+#: fortran/symbol.c:3539
#, no-c-format
msgid ""
"Component '%s' in derived type '%s' at %L may not be C interoperable, even "
@@ -11337,136 +11901,136 @@ msgstr ""
#. If derived type is param to bind(c) routine, or to one
#. of the iso_c_binding procs, it must be interoperable, so
#. all fields must interop too.
-#: fortran/symbol.c:3485
+#: fortran/symbol.c:3548
#, no-c-format
msgid "Component '%s' in derived type '%s' at %L may not be C interoperable"
msgstr ""
-#: fortran/symbol.c:3499
+#: fortran/symbol.c:3562
#, no-c-format
msgid ""
"Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) "
"attributes"
msgstr ""
-#: fortran/symbol.c:3507
+#: fortran/symbol.c:3570
#, no-c-format
msgid ""
"Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND"
"(C)"
msgstr ""
-#: fortran/symbol.c:4379
+#: fortran/symbol.c:4500
#, no-c-format
msgid "Symbol '%s' is used before it is typed at %L"
msgstr ""
-#: fortran/symbol.c:4385
+#: fortran/symbol.c:4506
#, no-c-format
msgid "Extension: Symbol '%s' is used before it is typed at %L"
msgstr ""
-#: fortran/symbol.c:4457
+#: fortran/symbol.c:4639 fortran/symbol.c:4713
#, no-c-format
-msgid "'%s' of '%s' is PRIVATE at %C"
+msgid "'%s' of '%s' is PRIVATE at %L"
msgstr ""
-#: fortran/target-memory.c:615
+#: fortran/target-memory.c:659
#, no-c-format
msgid "Overlapping unequal initializers in EQUIVALENCE at %L"
msgstr ""
-#: fortran/target-memory.c:702
+#: fortran/target-memory.c:746
#, no-c-format
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:641 fortran/trans-array.c:4464
-#: fortran/trans-array.c:5453 fortran/trans-intrinsic.c:3722
+#: fortran/trans-array.c:705 fortran/trans-array.c:4557
+#: fortran/trans-array.c:5592 fortran/trans-intrinsic.c:4296
#, no-c-format
msgid "Creating array temporary at %L"
msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/trans-array.c:4033
+#: fortran/trans-array.c:4124
#, no-c-format
msgid ""
"The number of elements in the array constructor at %L requires an increase "
"of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
-#: fortran/trans-array.c:5450
+#: fortran/trans-array.c:5589
#, no-c-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
-#: fortran/trans-common.c:399
+#: fortran/trans-common.c:400
#, no-c-format
msgid "Named COMMON block '%s' at %L shall be of the same size"
msgstr ""
-#: fortran/trans-common.c:838
+#: fortran/trans-common.c:840
#, no-c-format
msgid "Bad array reference at %L"
msgstr ""
-#: fortran/trans-common.c:846
+#: fortran/trans-common.c:848
#, no-c-format
msgid "Illegal reference type at %L as EQUIVALENCE object"
msgstr ""
-#: fortran/trans-common.c:886
+#: fortran/trans-common.c:888
#, no-c-format
msgid "Inconsistent equivalence rules involving '%s' at %L and '%s' at %L"
msgstr ""
#. Aligning this field would misalign a previous field.
-#: fortran/trans-common.c:1019
+#: fortran/trans-common.c:1021
#, no-c-format
msgid ""
"The equivalence set for variable '%s' declared at %L violates alignment "
"requirements"
msgstr ""
-#: fortran/trans-common.c:1086
+#: fortran/trans-common.c:1088
#, no-c-format
msgid "Equivalence for '%s' does not match ordering of COMMON '%s' at %L"
msgstr ""
-#: fortran/trans-common.c:1101
+#: fortran/trans-common.c:1103
#, no-c-format
msgid ""
"The equivalence set for '%s' cause an invalid extension to COMMON '%s' at %L"
msgstr ""
-#: fortran/trans-common.c:1116
+#: fortran/trans-common.c:1118
#, no-c-format
msgid ""
"Padding of %d bytes required before '%s' in COMMON '%s' at %L; reorder "
"elements or use -fno-align-commons"
msgstr ""
-#: fortran/trans-common.c:1121
+#: fortran/trans-common.c:1123
#, no-c-format
msgid ""
"Padding of %d bytes required before '%s' in COMMON at %L; reorder elements "
"or use -fno-align-commons"
msgstr ""
-#: fortran/trans-common.c:1144
+#: fortran/trans-common.c:1146
#, no-c-format
msgid "COMMON '%s' at %L does not exist"
msgstr ""
-#: fortran/trans-common.c:1152
+#: fortran/trans-common.c:1154
#, no-c-format
msgid ""
"COMMON '%s' at %L requires %d bytes of padding at start; reorder elements or "
"use -fno-align-commons"
msgstr ""
-#: fortran/trans-common.c:1156
+#: fortran/trans-common.c:1158
#, no-c-format
msgid ""
"COMMON at %L requires %d bytes of padding at start; reorder elements or use -"
@@ -11478,66 +12042,76 @@ msgstr ""
msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L"
msgstr ""
-#: fortran/trans-decl.c:2957 fortran/trans-decl.c:4113
+#: fortran/trans-decl.c:3083 fortran/trans-decl.c:4375
#, no-c-format
msgid "Return value of function '%s' at %L not set"
msgstr ""
-#: fortran/trans-decl.c:3616
+#: fortran/trans-decl.c:3750
#, no-c-format
msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set"
msgstr ""
-#: fortran/trans-decl.c:3620
+#: fortran/trans-decl.c:3754
#, no-c-format
msgid "Unused dummy argument '%s' at %L"
msgstr ""
-#: fortran/trans-decl.c:3626
+#: fortran/trans-decl.c:3760
#, no-c-format
msgid "Unused variable '%s' declared at %L"
msgstr ""
-#: fortran/trans-decl.c:3672
+#: fortran/trans-decl.c:3808
#, no-c-format
msgid "Unused parameter '%s' declared at %L"
msgstr ""
-#: fortran/trans-decl.c:3686
+#: fortran/trans-decl.c:3822
#, no-c-format
msgid "Return value '%s' of function '%s' declared at %L not set"
msgstr ""
-#: fortran/trans-decl.c:3790
+#: fortran/trans-decl.c:3930
#, c-format
msgid ""
"Actual string length does not match the declared one for dummy argument '%"
"s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-decl.c:3796
+#: fortran/trans-decl.c:3938
#, c-format
msgid ""
"Actual string length is shorter than the declared one for dummy argument '%"
"s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-expr.c:2361
+#: fortran/trans-expr.c:1618
+msgid "internal error: bad vindex in dynamic dispatch"
+msgstr ""
+
+#: fortran/trans-expr.c:2532
#, no-c-format
msgid "Unknown argument list function at %L"
msgstr ""
-#: fortran/trans-intrinsic.c:883
+#: fortran/trans-intrinsic.c:888
#, no-c-format
msgid "'dim' argument of %s intrinsic at %L is not a valid dimension index"
msgstr ""
-#: fortran/trans-io.c:2002
+#. TODO: Implement EXTENDS_TYPE_OF.
+#: fortran/trans-intrinsic.c:4747
+#, no-c-format
+msgid "Intrinsic EXTENDS_TYPE_OF at %L not yet implemented"
+msgstr ""
+
+#: fortran/trans-io.c:2017
#, no-c-format
msgid "Derived type '%s' at %L has PRIVATE components"
msgstr ""
-#: fortran/trans-stmt.c:499
+#: fortran/trans-stmt.c:484
#, no-c-format
msgid "An alternate return at %L without a * dummy argument"
msgstr ""
@@ -11554,33 +12128,33 @@ msgstr ""
msgid "Incorrect function return value"
msgstr ""
-#: fortran/trans.c:516 fortran/trans.c:936
+#: fortran/trans.c:521 fortran/trans.c:951
msgid "Attempt to allocate a negative amount of memory."
msgstr ""
-#: fortran/trans.c:534
+#: fortran/trans.c:541
msgid "Memory allocation failed"
msgstr ""
-#: fortran/trans.c:616
+#: fortran/trans.c:624
msgid ""
"Attempt to allocate negative amount of memory. Possible integer overflow"
msgstr ""
-#: fortran/trans.c:647 fortran/trans.c:953
+#: fortran/trans.c:658 fortran/trans.c:970
msgid "Out of memory"
msgstr ""
-#: fortran/trans.c:738
+#: fortran/trans.c:750
#, c-format
msgid "Attempting to allocate already allocated array '%s'"
msgstr ""
-#: fortran/trans.c:744
+#: fortran/trans.c:756
msgid "Attempting to allocate already allocatedarray"
msgstr ""
-#: fortran/trans.c:853
+#: fortran/trans.c:867
#, c-format
msgid "Attempt to DEALLOCATE unallocated '%s'"
msgstr ""
@@ -11726,136 +12300,115 @@ msgstr ""
msgid "%s: Failed to close output file %s\n"
msgstr ""
-#: java/jvspec.c:409
+#: java/jvspec.c:410
#, c-format
msgid "can't specify '-D' without '--main'\n"
msgstr ""
-#: java/jvspec.c:412
+#: java/jvspec.c:413
#, c-format
msgid "'%s' is not a valid class name"
msgstr ""
-#: java/jvspec.c:418
+#: java/jvspec.c:419
#, c-format
msgid "--resource requires -o"
msgstr ""
-#: java/jvspec.c:432
+#: java/jvspec.c:433
#, c-format
msgid "cannot specify both -C and -o"
msgstr ""
-#: java/jvspec.c:444
+#: java/jvspec.c:445
#, c-format
msgid "cannot create temporary file"
msgstr ""
-#: java/jvspec.c:466
+#: java/jvspec.c:467
#, c-format
msgid "using both @FILE with multiple files not implemented"
msgstr ""
-#: java/jvspec.c:588
+#: java/jvspec.c:589
#, c-format
msgid "cannot specify 'main' class when not linking"
msgstr ""
-#: config/sparc/linux64.h:165 config/sparc/linux64.h:176
-#: config/sparc/netbsd-elf.h:125 config/sparc/netbsd-elf.h:144
-#: config/sparc/sol2-bi.h:240 config/sparc/sol2-bi.h:250
-msgid "may not use both -m32 and -m64"
-msgstr ""
-
-#: config/mips/mips.h:1183 config/arc/arc.h:61
-msgid "may not use both -EB and -EL"
-msgstr ""
-
-#: config/mips/r3900.h:34
-msgid "-mhard-float not supported"
-msgstr ""
-
-#: config/mips/r3900.h:36
-msgid "-msingle-float and -msoft-float cannot both be specified"
-msgstr ""
-
-#: config/i386/mingw-w64.h:65 config/i386/mingw32.h:85 config/i386/cygwin.h:91
+#: config/i386/mingw-w64.h:61 config/i386/mingw32.h:81 config/i386/cygwin.h:91
msgid "shared and mdll are not compatible"
msgstr ""
-#: gcc.c:820
-msgid "GCC does not support -C or -CC without -E"
-msgstr ""
-
-#: gcc.c:848 java/jvspec.c:80 ada/gcc-interface/lang-specs.h:33
-msgid "-pg and -fomit-frame-pointer are incompatible"
-msgstr ""
-
-#: gcc.c:1033
-msgid "-E or -x required when input is from standard input"
-msgstr ""
-
-#: config/darwin.h:274
+#: config/darwin.h:306
msgid "-current_version only allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:276
+#: config/darwin.h:308
msgid "-install_name only allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:281
+#: config/darwin.h:313
msgid "-bundle not allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:282
+#: config/darwin.h:314
msgid "-bundle_loader not allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:283
+#: config/darwin.h:315
msgid "-client_name not allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:288
+#: config/darwin.h:320
msgid "-force_flat_namespace not allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:290
+#: config/darwin.h:322
msgid "-keep_private_externs not allowed with -dynamiclib"
msgstr ""
-#: config/darwin.h:291
+#: config/darwin.h:323
msgid "-private_bundle not allowed with -dynamiclib"
msgstr ""
-#: ada/gcc-interface/lang-specs.h:34
-msgid "-c or -S required for Ada"
+#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
+msgid "gfortran does not support -E without -cpp"
msgstr ""
-#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217
-#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45
-msgid "does not support multilib"
+#: config/sh/sh.h:463
+msgid "SH2a does not support little-endian"
msgstr ""
-#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356
-#: config/rs6000/sysv4.h:908 config/rs6000/sysv4.h:910 config/linux.h:111
-#: config/linux.h:113 config/alpha/linux-elf.h:33 config/alpha/linux-elf.h:35
-msgid "-mglibc and -muclibc used together"
+#: config/rs6000/darwin.h:95
+msgid " conflicting code gen style switches are used"
msgstr ""
-#: config/bfin/elf.h:54
-msgid "no processor type specified for linking"
+#: ada/gcc-interface/lang-specs.h:33 gcc.c:887 java/jvspec.c:81
+msgid "-pg and -fomit-frame-pointer are incompatible"
msgstr ""
-#: config/vxworks.h:71
-msgid "-Xbind-now and -Xbind-lazy are incompatible"
+#: ada/gcc-interface/lang-specs.h:34
+msgid "-c or -S required for Ada"
+msgstr ""
+
+#: config/vax/vax.h:50 config/vax/vax.h:51
+msgid "profiling not supported with -mg\n"
+msgstr ""
+
+#: gcc.c:859
+msgid "GCC does not support -C or -CC without -E"
+msgstr ""
+
+#: gcc.c:1080
+msgid "-E or -x required when input is from standard input"
msgstr ""
#: config/i386/cygwin.h:28
msgid "mno-cygwin and mno-win32 are not compatible"
msgstr ""
-#: fortran/lang-specs.h:55 fortran/lang-specs.h:69
-msgid "gfortran does not support -E without -cpp"
+#: config/bfin/elf.h:54
+msgid "no processor type specified for linking"
msgstr ""
#: config/i386/nwld.h:34
@@ -11874,28 +12427,49 @@ msgstr ""
msgid "-femit-class-file should used along with -fsyntax-only"
msgstr ""
-#: config/sh/sh.h:461
-msgid "SH2a does not support little-endian"
+#: config/s390/tpf.h:119
+msgid "static is not supported on TPF-OS"
+msgstr ""
+
+#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356
+#: config/alpha/linux-elf.h:33 config/alpha/linux-elf.h:35
+#: config/rs6000/sysv4.h:906 config/rs6000/sysv4.h:908 config/linux.h:111
+#: config/linux.h:113
+msgid "-mglibc and -muclibc used together"
msgstr ""
-#: config/arm/arm.h:148
+#: config/mips/mips.h:1230 config/arc/arc.h:61
+msgid "may not use both -EB and -EL"
+msgstr ""
+
+#: config/arm/arm.h:154
msgid "-msoft-float and -mhard_float may not be used together"
msgstr ""
-#: config/arm/arm.h:150
+#: config/arm/arm.h:156
msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr ""
-#: config/cris/cris.h:207
-msgid "Do not specify both -march=... and -mcpu=..."
+#: config/vxworks.h:71
+msgid "-Xbind-now and -Xbind-lazy are incompatible"
msgstr ""
-#: config/vax/netbsd-elf.h:47
-msgid "the -shared option is not currently supported for VAX ELF"
+#: config/mips/r3900.h:34
+msgid "-mhard-float not supported"
msgstr ""
-#: config/vax/vax.h:50 config/vax/vax.h:51
-msgid "profiling not supported with -mg\n"
+#: config/mips/r3900.h:36
+msgid "-msingle-float and -msoft-float cannot both be specified"
+msgstr ""
+
+#: config/cris/cris.h:207
+msgid "Do not specify both -march=... and -mcpu=..."
+msgstr ""
+
+#: config/sparc/linux64.h:165 config/sparc/linux64.h:176
+#: config/sparc/netbsd-elf.h:125 config/sparc/netbsd-elf.h:144
+#: config/sparc/sol2-bi.h:240 config/sparc/sol2-bi.h:250
+msgid "may not use both -m32 and -m64"
msgstr ""
#: config/mcore/mcore.h:54
@@ -11910,12 +12484,13 @@ msgstr ""
msgid "cannot use mshared and static together"
msgstr ""
-#: config/s390/tpf.h:119
-msgid "static is not supported on TPF-OS"
+#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217
+#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45
+msgid "does not support multilib"
msgstr ""
-#: config/rs6000/darwin.h:95
-msgid " conflicting code gen style switches are used"
+#: config/vax/netbsd-elf.h:51
+msgid "the -shared option is not currently supported for VAX ELF"
msgstr ""
#: java/lang.opt:69
@@ -12013,14 +12588,18 @@ msgid "Call a library routine to do integer divisions"
msgstr ""
#: java/lang.opt:197
-msgid "Generated should be loaded by bootstrap loader"
+msgid "Generate code for built-in atomic operations"
msgstr ""
#: java/lang.opt:201
-msgid "Set the source language version"
+msgid "Generated should be loaded by bootstrap loader"
msgstr ""
#: java/lang.opt:205
+msgid "Set the source language version"
+msgstr ""
+
+#: java/lang.opt:209
msgid "Set the target VM version"
msgstr ""
@@ -12301,10 +12880,6 @@ msgstr ""
msgid "Append a second underscore if the name already contains an underscore"
msgstr ""
-#: fortran/lang.opt:353 c.opt:749
-msgid "Use the narrowest integer type possible for enumeration types"
-msgstr ""
-
#: fortran/lang.opt:357
msgid "Apply negative sign to zero values"
msgstr ""
@@ -12704,7 +13279,7 @@ msgid ""
msgstr ""
#: config/s390/s390.opt:87 config/ia64/ia64.opt:115 config/sparc/sparc.opt:95
-#: config/i386/i386.opt:229 config/rs6000/rs6000.opt:234 config/spu/spu.opt:84
+#: config/i386/i386.opt:229 config/rs6000/rs6000.opt:274 config/spu/spu.opt:84
msgid "Schedule code for given CPU"
msgstr ""
@@ -12894,7 +13469,19 @@ msgstr ""
msgid "Don't generate checks for control speculation in selective scheduling"
msgstr ""
-#: config/m32c/m32c.opt:24 config/bfin/bfin.opt:23
+#: config/ia64/ia64.opt:183
+msgid "Enable fused multiply/add and multiply/subtract instructions"
+msgstr ""
+
+#: config/ia64/vms_symvec_libgcc_s.opt:3
+msgid "! It would be better to auto-generate this file."
+msgstr ""
+
+#: config/ia64/vms_symvec_libgcc_s.opt:7
+msgid "SYMBOL_VECTOR=(__divdi3=PROCEDURE)"
+msgstr ""
+
+#: config/m32c/m32c.opt:24 config/bfin/bfin.opt:23 config/mep/mep.opt:138
msgid "Use simulator runtime"
msgstr ""
@@ -12990,7 +13577,7 @@ msgstr ""
msgid "Optimize tail call instructions in assembler and linker"
msgstr ""
-#: config/sparc/sparc.opt:91 config/rs6000/rs6000.opt:230
+#: config/sparc/sparc.opt:91 config/rs6000/rs6000.opt:270
msgid "Use features of and schedule code for given CPU"
msgstr ""
@@ -13218,6 +13805,10 @@ msgstr ""
msgid "Support more than 8192 GOT entries on ColdFire"
msgstr ""
+#: config/m68k/m68k.opt:188
+msgid "Support TLS segment larger than 64K"
+msgstr ""
+
#: config/m68k/ieee.opt:24 config/i386/i386.opt:137
msgid "Use IEEE math for fp comparisons"
msgstr ""
@@ -13387,111 +13978,114 @@ msgstr ""
msgid "Generate cld instruction in the function prologue."
msgstr ""
-#: config/i386/i386.opt:252
-msgid ""
-"Enable automatic generation of fused floating point multiply-add instructions"
-msgstr ""
-
-#: config/i386/i386.opt:260
+#: config/i386/i386.opt:251
msgid "Generate 32bit i386 code"
msgstr ""
-#: config/i386/i386.opt:264
+#: config/i386/i386.opt:255
msgid "Generate 64bit x86-64 code"
msgstr ""
-#: config/i386/i386.opt:268
+#: config/i386/i386.opt:259
msgid "Support MMX built-in functions"
msgstr ""
-#: config/i386/i386.opt:272
+#: config/i386/i386.opt:263
msgid "Support 3DNow! built-in functions"
msgstr ""
-#: config/i386/i386.opt:276
+#: config/i386/i386.opt:267
msgid "Support Athlon 3Dnow! built-in functions"
msgstr ""
-#: config/i386/i386.opt:280
+#: config/i386/i386.opt:271
msgid "Support MMX and SSE built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:284
+#: config/i386/i386.opt:275
msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:288
+#: config/i386/i386.opt:279
msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:292
+#: config/i386/i386.opt:283
msgid ""
"Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:296
+#: config/i386/i386.opt:287
msgid ""
"Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code "
"generation"
msgstr ""
-#: config/i386/i386.opt:300 config/i386/i386.opt:304
+#: config/i386/i386.opt:291 config/i386/i386.opt:295
msgid ""
"Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions "
"and code generation"
msgstr ""
-#: config/i386/i386.opt:308
+#: config/i386/i386.opt:299
msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:312
+#: config/i386/i386.opt:303
msgid ""
"Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in "
"functions and code generation"
msgstr ""
-#: config/i386/i386.opt:316
+#: config/i386/i386.opt:307
msgid ""
"Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in "
"functions and code generation"
msgstr ""
-#: config/i386/i386.opt:320
+#: config/i386/i386.opt:311
msgid ""
"Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:324
-msgid "Support SSE5 built-in functions and code generation"
+#: config/i386/i386.opt:315
+msgid "Support FMA4 built-in functions and code generation "
msgstr ""
-#: config/i386/i386.opt:328
+#: config/i386/i386.opt:319
msgid ""
"Support code generation of Advanced Bit Manipulation (ABM) instructions."
msgstr ""
-#: config/i386/i386.opt:332
+#: config/i386/i386.opt:323
msgid "Support code generation of popcnt instruction."
msgstr ""
-#: config/i386/i386.opt:336
+#: config/i386/i386.opt:327
msgid "Support code generation of cmpxchg16b instruction."
msgstr ""
-#: config/i386/i386.opt:340
+#: config/i386/i386.opt:331
msgid "Support code generation of sahf instruction in 64bit x86-64 code."
msgstr ""
-#: config/i386/i386.opt:344
+#: config/i386/i386.opt:335
+msgid "Support code generation of movbe instruction."
+msgstr ""
+
+#: config/i386/i386.opt:339
+msgid "Support code generation of crc32 instruction."
+msgstr ""
+
+#: config/i386/i386.opt:343
msgid "Support AES built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:348
+#: config/i386/i386.opt:347
msgid "Support PCLMUL built-in functions and code generation"
msgstr ""
-#: config/i386/i386.opt:352
+#: config/i386/i386.opt:351
msgid "Encode SSE instructions with VEX prefix"
msgstr ""
@@ -13523,11 +14117,15 @@ msgstr ""
msgid "Create GUI application"
msgstr ""
+#: config/i386/cygming.opt:51
+msgid "Use the GNU extension to the PE format for aligned common data"
+msgstr ""
+
#: config/i386/mingw-w64.opt:23
msgid "Use unicode startup and define UNICODE macro"
msgstr ""
-#: config/rs6000/aix.opt:24 config/rs6000/rs6000.opt:155
+#: config/rs6000/aix.opt:24 config/rs6000/rs6000.opt:195
msgid "Conform more closely to IBM XLC semantics"
msgstr ""
@@ -13632,166 +14230,170 @@ msgid "Do not use hardware floating point"
msgstr ""
#: config/rs6000/rs6000.opt:116
-msgid "Do not generate load/store with update instructions"
+msgid "Use PowerPC V2.06 popcntd instruction"
msgstr ""
#: config/rs6000/rs6000.opt:120
-msgid "Generate load/store with update instructions"
+msgid "Use vector/scalar (VSX) instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:124
-msgid "Avoid generation of indexed load/store instructions when possible"
+#: config/rs6000/rs6000.opt:160
+msgid "Do not generate load/store with update instructions"
+msgstr ""
+
+#: config/rs6000/rs6000.opt:164
+msgid "Generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:128
-msgid "Do not generate fused multiply/add instructions"
+#: config/rs6000/rs6000.opt:168
+msgid "Avoid generation of indexed load/store instructions when possible"
msgstr ""
-#: config/rs6000/rs6000.opt:132
+#: config/rs6000/rs6000.opt:172
msgid "Generate fused multiply/add instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:136
+#: config/rs6000/rs6000.opt:176
msgid "Mark __tls_get_addr calls with argument info"
msgstr ""
-#: config/rs6000/rs6000.opt:140
+#: config/rs6000/rs6000.opt:183
msgid "Schedule the start and end of the procedure"
msgstr ""
-#: config/rs6000/rs6000.opt:147
+#: config/rs6000/rs6000.opt:187
msgid "Return all structures in memory (AIX default)"
msgstr ""
-#: config/rs6000/rs6000.opt:151
+#: config/rs6000/rs6000.opt:191
msgid "Return small structures in registers (SVR4 default)"
msgstr ""
-#: config/rs6000/rs6000.opt:159
+#: config/rs6000/rs6000.opt:199
msgid "Generate software reciprocal sqrt for better throughput"
msgstr ""
-#: config/rs6000/rs6000.opt:163
+#: config/rs6000/rs6000.opt:203
msgid "Do not place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.opt:167
+#: config/rs6000/rs6000.opt:207
msgid "Place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.opt:171
+#: config/rs6000/rs6000.opt:211
msgid "Do not place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.opt:175
+#: config/rs6000/rs6000.opt:215
msgid "Place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.opt:186
+#: config/rs6000/rs6000.opt:226
msgid "Use only one TOC entry per procedure"
msgstr ""
-#: config/rs6000/rs6000.opt:190
+#: config/rs6000/rs6000.opt:230
msgid "Put everything in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.opt:194
+#: config/rs6000/rs6000.opt:234
msgid "Generate VRSAVE instructions when generating AltiVec code"
msgstr ""
-#: config/rs6000/rs6000.opt:198
+#: config/rs6000/rs6000.opt:238
msgid "Deprecated option. Use -mvrsave/-mno-vrsave instead"
msgstr ""
-#: config/rs6000/rs6000.opt:202
+#: config/rs6000/rs6000.opt:242
msgid "Generate isel instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:206
+#: config/rs6000/rs6000.opt:246
msgid "Deprecated option. Use -misel/-mno-isel instead"
msgstr ""
-#: config/rs6000/rs6000.opt:210
+#: config/rs6000/rs6000.opt:250
msgid "Generate SPE SIMD instructions on E500"
msgstr ""
-#: config/rs6000/rs6000.opt:214
+#: config/rs6000/rs6000.opt:254
msgid "Generate PPC750CL paired-single instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:218
+#: config/rs6000/rs6000.opt:258
msgid "Deprecated option. Use -mspe/-mno-spe instead"
msgstr ""
-#: config/rs6000/rs6000.opt:222
+#: config/rs6000/rs6000.opt:262
msgid "Enable debug output"
msgstr ""
-#: config/rs6000/rs6000.opt:226
+#: config/rs6000/rs6000.opt:266
msgid "Specify ABI to use"
msgstr ""
-#: config/rs6000/rs6000.opt:238
+#: config/rs6000/rs6000.opt:278
msgid "Select full, part, or no traceback table"
msgstr ""
-#: config/rs6000/rs6000.opt:242
+#: config/rs6000/rs6000.opt:282
msgid "Avoid all range limits on call instructions"
msgstr ""
-#: config/rs6000/rs6000.opt:246
+#: config/rs6000/rs6000.opt:286
msgid "Generate Cell microcode"
msgstr ""
-#: config/rs6000/rs6000.opt:250
+#: config/rs6000/rs6000.opt:290
msgid "Warn when a Cell microcoded instruction is emitted"
msgstr ""
-#: config/rs6000/rs6000.opt:254
+#: config/rs6000/rs6000.opt:294
msgid "Warn about deprecated 'vector long ...' AltiVec type usage"
msgstr ""
-#: config/rs6000/rs6000.opt:258
+#: config/rs6000/rs6000.opt:298
msgid "Select GPR floating point method"
msgstr ""
-#: config/rs6000/rs6000.opt:262
+#: config/rs6000/rs6000.opt:302
msgid "Specify size of long double (64 or 128 bits)"
msgstr ""
-#: config/rs6000/rs6000.opt:266
+#: config/rs6000/rs6000.opt:306
msgid "Determine which dependences between insns are considered costly"
msgstr ""
-#: config/rs6000/rs6000.opt:270
+#: config/rs6000/rs6000.opt:310
msgid "Specify which post scheduling nop insertion scheme to apply"
msgstr ""
-#: config/rs6000/rs6000.opt:274
+#: config/rs6000/rs6000.opt:314
msgid "Specify alignment of structure fields default/natural"
msgstr ""
-#: config/rs6000/rs6000.opt:278
+#: config/rs6000/rs6000.opt:318
msgid "Specify scheduling priority for dispatch slot restricted insns"
msgstr ""
-#: config/rs6000/rs6000.opt:282
+#: config/rs6000/rs6000.opt:322
msgid "Single-precision floating point unit"
msgstr ""
-#: config/rs6000/rs6000.opt:286
+#: config/rs6000/rs6000.opt:326
msgid "Double-precision floating point unit"
msgstr ""
-#: config/rs6000/rs6000.opt:290
+#: config/rs6000/rs6000.opt:330
msgid "Floating point unit does not support divide & sqrt"
msgstr ""
-#: config/rs6000/rs6000.opt:294
+#: config/rs6000/rs6000.opt:334
msgid "Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)"
msgstr ""
-#: config/rs6000/rs6000.opt:298
+#: config/rs6000/rs6000.opt:338
msgid "Specify Xilinx FPU."
msgstr ""
@@ -14030,7 +14632,7 @@ msgid "Generate SH2 code"
msgstr ""
#: config/sh/sh.opt:52
-msgid "Generate SH2a code"
+msgid "Generate default double-precision SH2a-FPU code"
msgstr ""
#: config/sh/sh.opt:56
@@ -14038,11 +14640,11 @@ msgid "Generate SH2a FPU-less code"
msgstr ""
#: config/sh/sh.opt:60
-msgid "Generate default single-precision SH2a code"
+msgid "Generate default single-precision SH2a-FPU code"
msgstr ""
#: config/sh/sh.opt:64
-msgid "Generate only single-precision SH2a code"
+msgid "Generate only single-precision SH2a-FPU code"
msgstr ""
#: config/sh/sh.opt:68
@@ -14204,107 +14806,107 @@ msgid "Enable cbranchdi4 pattern"
msgstr ""
#: config/sh/sh.opt:229
-msgid "Expand cbranchdi4 pattern early into separate comparisons and branches."
+msgid "Emit cmpeqdi_t pattern even when -mcbranchdi is in effect."
msgstr ""
#: config/sh/sh.opt:233
-msgid ""
-"Emit cmpeqdi_t pattern even when -mcbranchdi and -mexpand-cbranchdi are in "
-"effect."
-msgstr ""
-
-#: config/sh/sh.opt:237
msgid "Enable SH5 cut2 workaround"
msgstr ""
-#: config/sh/sh.opt:241
+#: config/sh/sh.opt:237
msgid "Align doubles at 64-bit boundaries"
msgstr ""
-#: config/sh/sh.opt:245
+#: config/sh/sh.opt:241
msgid ""
"Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, "
"inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
msgstr ""
-#: config/sh/sh.opt:249
+#: config/sh/sh.opt:245
msgid "Specify name for 32 bit signed division function"
msgstr ""
-#: config/sh/sh.opt:260
+#: config/sh/sh.opt:249
+msgid ""
+"Enable the use of 64-bit floating point registers in fmov instructions. See "
+"-mdalign if 64-bit alignment is required."
+msgstr ""
+
+#: config/sh/sh.opt:257
msgid ""
"Enable the use of the fused floating point multiply-accumulate operation"
msgstr ""
-#: config/sh/sh.opt:264
+#: config/sh/sh.opt:261
msgid "Cost to assume for gettr insn"
msgstr ""
-#: config/sh/sh.opt:268 config/sh/sh.opt:318
+#: config/sh/sh.opt:265 config/sh/sh.opt:315
msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions"
msgstr ""
-#: config/sh/sh.opt:272
+#: config/sh/sh.opt:269
msgid "Increase the IEEE compliance for floating-point code"
msgstr ""
-#: config/sh/sh.opt:276
+#: config/sh/sh.opt:273
msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact"
msgstr ""
-#: config/sh/sh.opt:280
+#: config/sh/sh.opt:277
msgid ""
"inline code to invalidate instruction cache entries after setting up nested "
"function trampolines"
msgstr ""
-#: config/sh/sh.opt:284
+#: config/sh/sh.opt:281
msgid "Assume symbols might be invalid"
msgstr ""
-#: config/sh/sh.opt:288
+#: config/sh/sh.opt:285
msgid "Annotate assembler instructions with estimated addresses"
msgstr ""
-#: config/sh/sh.opt:292
+#: config/sh/sh.opt:289
msgid "Generate code in little endian mode"
msgstr ""
-#: config/sh/sh.opt:296
+#: config/sh/sh.opt:293
msgid "Mark MAC register as call-clobbered"
msgstr ""
-#: config/sh/sh.opt:302
+#: config/sh/sh.opt:299
msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
msgstr ""
-#: config/sh/sh.opt:306
+#: config/sh/sh.opt:303
msgid "Emit function-calls using global offset table when generating PIC"
msgstr ""
-#: config/sh/sh.opt:310
+#: config/sh/sh.opt:307
msgid "Assume pt* instructions won't trap"
msgstr ""
-#: config/sh/sh.opt:314
+#: config/sh/sh.opt:311
msgid "Shorten address references during linking"
msgstr ""
-#: config/sh/sh.opt:322
-msgid "Deprecated. Use -Os instead"
+#: config/sh/sh.opt:319
+msgid "Deprecated. Use -Os instead"
msgstr ""
-#: config/sh/sh.opt:326
+#: config/sh/sh.opt:323
msgid "Cost to assume for a multiply insn"
msgstr ""
-#: config/sh/sh.opt:330
+#: config/sh/sh.opt:327
msgid ""
"Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate "
"if the inline code would not work in user mode."
msgstr ""
-#: config/sh/sh.opt:336
+#: config/sh/sh.opt:333
msgid "Pretend a branch-around-a-move is a conditional move."
msgstr ""
@@ -14364,84 +14966,88 @@ msgstr ""
msgid "Specify if floating point hardware should be used"
msgstr ""
-#: config/arm/arm.opt:90
-msgid "Specify the name of the target floating point hardware/format"
+#: config/arm/arm.opt:83
+msgid "Specify the __fp16 floating-point format"
msgstr ""
#: config/arm/arm.opt:94
-msgid "Alias for -mfloat-abi=hard"
+msgid "Specify the name of the target floating point hardware/format"
msgstr ""
#: config/arm/arm.opt:98
-msgid "Assume target CPU is configured as little endian"
+msgid "Alias for -mfloat-abi=hard"
msgstr ""
#: config/arm/arm.opt:102
-msgid "Generate call insns as indirect calls, if necessary"
+msgid "Assume target CPU is configured as little endian"
msgstr ""
#: config/arm/arm.opt:106
-msgid "Specify the register to be used for PIC addressing"
+msgid "Generate call insns as indirect calls, if necessary"
msgstr ""
#: config/arm/arm.opt:110
-msgid "Store function names in object code"
+msgid "Specify the register to be used for PIC addressing"
msgstr ""
#: config/arm/arm.opt:114
-msgid "Permit scheduling of a function's prologue sequence"
+msgid "Store function names in object code"
msgstr ""
#: config/arm/arm.opt:118
-msgid "Do not load the PIC register in function prologues"
+msgid "Permit scheduling of a function's prologue sequence"
msgstr ""
#: config/arm/arm.opt:122
-msgid "Alias for -mfloat-abi=soft"
+msgid "Do not load the PIC register in function prologues"
msgstr ""
#: config/arm/arm.opt:126
-msgid "Specify the minimum bit alignment of structures"
+msgid "Alias for -mfloat-abi=soft"
msgstr ""
#: config/arm/arm.opt:130
-msgid "Compile for the Thumb not the ARM"
+msgid "Specify the minimum bit alignment of structures"
msgstr ""
#: config/arm/arm.opt:134
-msgid "Support calls between Thumb and ARM instruction sets"
+msgid "Compile for the Thumb not the ARM"
msgstr ""
#: config/arm/arm.opt:138
-msgid "Specify how to access the thread pointer"
+msgid "Support calls between Thumb and ARM instruction sets"
msgstr ""
#: config/arm/arm.opt:142
-msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
+msgid "Specify how to access the thread pointer"
msgstr ""
#: config/arm/arm.opt:146
-msgid "Thumb: Generate (leaf) stack frames even if not needed"
+msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
msgstr ""
#: config/arm/arm.opt:150
-msgid "Tune code for the given processor"
+msgid "Thumb: Generate (leaf) stack frames even if not needed"
msgstr ""
#: config/arm/arm.opt:154
-msgid "Assume big endian bytes, little endian words"
+msgid "Tune code for the given processor"
msgstr ""
#: config/arm/arm.opt:158
+msgid "Assume big endian bytes, little endian words"
+msgstr ""
+
+#: config/arm/arm.opt:162
msgid ""
"Use Neon quad-word (rather than double-word) registers for vectorization"
msgstr ""
-#: config/arm/arm.opt:162
+#: config/arm/arm.opt:166
msgid "Only generate absolute relocations on word sized values."
msgstr ""
-#: config/arm/arm.opt:166
+#: config/arm/arm.opt:170
msgid ""
"Avoid overlapping destination and address registers on LDRD instructions"
msgstr ""
@@ -14535,18 +15141,14 @@ msgid "Use rjmp/rcall (limited range) on >8K devices"
msgstr ""
#: config/avr/avr.opt:52
-msgid "Output instruction sizes to the asm file"
-msgstr ""
-
-#: config/avr/avr.opt:56
msgid "Change only the low 8 bits of the stack pointer"
msgstr ""
-#: config/avr/avr.opt:60
+#: config/avr/avr.opt:56
msgid "Relax branches"
msgstr ""
-#: config/avr/avr.opt:64
+#: config/avr/avr.opt:60
msgid ""
"Make the linker relaxation machine assume that a program counter wrap-around "
"occures."
@@ -14737,11 +15339,11 @@ msgstr ""
msgid "Use MIPS-DSP REV 2 instructions"
msgstr ""
-#: config/mips/mips.opt:89
+#: config/mips/mips.opt:89 config/mep/mep.opt:80
msgid "Use big-endian byte order"
msgstr ""
-#: config/mips/mips.opt:93
+#: config/mips/mips.opt:93 config/mep/mep.opt:84
msgid "Use little-endian byte order"
msgstr ""
@@ -14900,45 +15502,53 @@ msgid "Specify when r10k cache barriers should be inserted"
msgstr ""
#: config/mips/mips.opt:249
+msgid "Try to allow the linker to turn PIC calls into direct calls"
+msgstr ""
+
+#: config/mips/mips.opt:253
msgid ""
"When generating -mabicalls code, make the code suitable for use in shared "
"libraries"
msgstr ""
-#: config/mips/mips.opt:253
+#: config/mips/mips.opt:257
msgid ""
"Restrict the use of hardware floating-point instructions to 32-bit operations"
msgstr ""
-#: config/mips/mips.opt:257
+#: config/mips/mips.opt:261
msgid "Use SmartMIPS instructions"
msgstr ""
-#: config/mips/mips.opt:261
+#: config/mips/mips.opt:265
msgid "Prevent the use of all hardware floating-point instructions"
msgstr ""
-#: config/mips/mips.opt:265
+#: config/mips/mips.opt:269
msgid "Optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.opt:269
+#: config/mips/mips.opt:273
msgid "Assume all symbols have 32-bit values"
msgstr ""
-#: config/mips/mips.opt:273
+#: config/mips/mips.opt:277
+msgid "Use synci instruction to invalidate i-cache"
+msgstr ""
+
+#: config/mips/mips.opt:281
msgid "Optimize the output for PROCESSOR"
msgstr ""
-#: config/mips/mips.opt:277 config/iq2000/iq2000.opt:44
+#: config/mips/mips.opt:285 config/iq2000/iq2000.opt:44
msgid "Put uninitialized constants in ROM (needs -membedded-data)"
msgstr ""
-#: config/mips/mips.opt:281
+#: config/mips/mips.opt:289
msgid "Perform VR4130-specific alignment optimizations"
msgstr ""
-#: config/mips/mips.opt:285
+#: config/mips/mips.opt:293
msgid "Lift restrictions on GOT size"
msgstr ""
@@ -15463,11 +16073,131 @@ msgid "Support SCORE 3d ISA"
msgstr ""
#: config/linux.opt:24
-msgid "Use uClibc instead of GNU libc"
+msgid "Use GNU libc instead of uClibc"
msgstr ""
#: config/linux.opt:28
-msgid "Use GNU libc instead of uClibc"
+msgid "Use uClibc instead of GNU libc"
+msgstr ""
+
+#: config/mep/mep.opt:21
+msgid "Enable absolute difference instructions"
+msgstr ""
+
+#: config/mep/mep.opt:25
+msgid "Enable all optional instructions"
+msgstr ""
+
+#: config/mep/mep.opt:29
+msgid "Enable average instructions"
+msgstr ""
+
+#: config/mep/mep.opt:33
+msgid "Variables this size and smaller go in the based section. (default 0)"
+msgstr ""
+
+#: config/mep/mep.opt:37
+msgid "Enable bit manipulation instructions"
+msgstr ""
+
+#: config/mep/mep.opt:41
+msgid "Section to put all const variables in (tiny, near, far) (no default)"
+msgstr ""
+
+#: config/mep/mep.opt:45
+msgid "Enable clip instructions"
+msgstr ""
+
+#: config/mep/mep.opt:49
+msgid "Configuration name"
+msgstr ""
+
+#: config/mep/mep.opt:53
+msgid "Enable MeP Coprocessor"
+msgstr ""
+
+#: config/mep/mep.opt:57
+msgid "Enable MeP Coprocessor with 32-bit registers"
+msgstr ""
+
+#: config/mep/mep.opt:61
+msgid "Enable MeP Coprocessor with 64-bit registers"
+msgstr ""
+
+#: config/mep/mep.opt:65
+msgid "Enable IVC2 scheduling"
+msgstr ""
+
+#: config/mep/mep.opt:69
+msgid "Const variables default to the near section"
+msgstr ""
+
+#: config/mep/mep.opt:76
+msgid "Enable 32-bit divide instructions"
+msgstr ""
+
+#: config/mep/mep.opt:88
+msgid "__io vars are volatile by default"
+msgstr ""
+
+#: config/mep/mep.opt:92
+msgid "All variables default to the far section"
+msgstr ""
+
+#: config/mep/mep.opt:96
+msgid "Enable leading zero instructions"
+msgstr ""
+
+#: config/mep/mep.opt:103
+msgid "All variables default to the near section"
+msgstr ""
+
+#: config/mep/mep.opt:107
+msgid "Enable min/max instructions"
+msgstr ""
+
+#: config/mep/mep.opt:111
+msgid "Enable 32-bit multiply instructions"
+msgstr ""
+
+#: config/mep/mep.opt:115
+msgid "Disable all optional instructions"
+msgstr ""
+
+#: config/mep/mep.opt:122
+msgid "Allow gcc to use the repeat/erepeat instructions"
+msgstr ""
+
+#: config/mep/mep.opt:126
+msgid "All variables default to the tiny section"
+msgstr ""
+
+#: config/mep/mep.opt:130
+msgid "Enable saturation instructions"
+msgstr ""
+
+#: config/mep/mep.opt:134
+msgid "Use sdram version of runtime"
+msgstr ""
+
+#: config/mep/mep.opt:142
+msgid "Use simulator runtime without vectors"
+msgstr ""
+
+#: config/mep/mep.opt:146
+msgid "All functions default to the far section"
+msgstr ""
+
+#: config/mep/mep.opt:150
+msgid "Variables this size and smaller go in the tiny section. (default 4)"
+msgstr ""
+
+#: config/vms/vms.opt:21
+msgid "Malloc data into P2 space"
+msgstr ""
+
+#: config/vms/vms.opt:25
+msgid "Set name of main routine for the debugger"
msgstr ""
#: c.opt:42
@@ -15498,7 +16228,7 @@ msgstr ""
msgid "Print the name of header files as they are used"
msgstr ""
-#: c.opt:69 c.opt:894
+#: c.opt:69 c.opt:906
msgid "Add <dir> to the end of the main include path"
msgstr ""
@@ -15713,653 +16443,689 @@ msgid "Warn about PCH files that are found but not used"
msgstr ""
#: c.opt:289
+msgid "Warn when a jump misses a variable initialization"
+msgstr ""
+
+#: c.opt:293
msgid ""
"Warn when a logical operator is suspiciously always evaluating to true or "
"false"
msgstr ""
-#: c.opt:293
+#: c.opt:297
msgid "Do not warn about using \"long long\" when -pedantic"
msgstr ""
-#: c.opt:297
+#: c.opt:301
msgid "Warn about suspicious declarations of \"main\""
msgstr ""
-#: c.opt:301
+#: c.opt:305
msgid "Warn about possibly missing braces around initializers"
msgstr ""
-#: c.opt:305
+#: c.opt:309
msgid "Warn about global functions without previous declarations"
msgstr ""
-#: c.opt:309
+#: c.opt:313
msgid "Warn about missing fields in struct initializers"
msgstr ""
-#: c.opt:313
+#: c.opt:317
msgid "Warn about functions which might be candidates for format attributes"
msgstr ""
-#: c.opt:317
+#: c.opt:321
msgid "Warn about user-specified include directories that do not exist"
msgstr ""
-#: c.opt:321
+#: c.opt:325
msgid ""
"Warn about function parameters declared without a type specifier in K&R-"
"style functions"
msgstr ""
-#: c.opt:325
+#: c.opt:329
msgid "Warn about global functions without prototypes"
msgstr ""
-#: c.opt:329
+#: c.opt:333
msgid "Warn about use of multi-character character constants"
msgstr ""
-#: c.opt:333
+#: c.opt:337
msgid "Warn about \"extern\" declarations not at file scope"
msgstr ""
-#: c.opt:337
+#: c.opt:341
msgid ""
"Warn when non-templatized friend functions are declared within a template"
msgstr ""
-#: c.opt:341
+#: c.opt:345
msgid "Warn about non-virtual destructors"
msgstr ""
-#: c.opt:345
+#: c.opt:349
msgid ""
"Warn about NULL being passed to argument slots marked as requiring non-NULL"
msgstr ""
-#: c.opt:349
+#: c.opt:353
msgid "Warn about non-normalised Unicode strings"
msgstr ""
-#: c.opt:353
+#: c.opt:357
msgid "Warn if a C-style cast is used in a program"
msgstr ""
-#: c.opt:357
+#: c.opt:361
msgid "Warn for obsolescent usage in a declaration"
msgstr ""
-#: c.opt:361
+#: c.opt:365
msgid "Warn if an old-style parameter definition is used"
msgstr ""
-#: c.opt:365
+#: c.opt:369
msgid ""
"Warn if a string is longer than the maximum portable length specified by the "
"standard"
msgstr ""
-#: c.opt:369
+#: c.opt:373
msgid "Warn about overloaded virtual function names"
msgstr ""
-#: c.opt:373
+#: c.opt:377
msgid "Warn about overriding initializers without side effects"
msgstr ""
-#: c.opt:377
+#: c.opt:381
msgid "Warn about packed bit-fields whose offset changed in GCC 4.4"
msgstr ""
-#: c.opt:381
+#: c.opt:385
msgid "Warn about possibly missing parentheses"
msgstr ""
-#: c.opt:385
+#: c.opt:389
msgid "Warn when converting the type of pointers to member functions"
msgstr ""
-#: c.opt:389
+#: c.opt:393
msgid "Warn about function pointer arithmetic"
msgstr ""
-#: c.opt:393
+#: c.opt:397
msgid "Warn when a pointer is cast to an integer of a different size"
msgstr ""
-#: c.opt:397
+#: c.opt:401
msgid "Warn about misuses of pragmas"
msgstr ""
-#: c.opt:401
+#: c.opt:405
msgid "Warn if inherited methods are unimplemented"
msgstr ""
-#: c.opt:405
+#: c.opt:409
msgid "Warn about multiple declarations of the same object"
msgstr ""
-#: c.opt:409
+#: c.opt:413
msgid "Warn when the compiler reorders code"
msgstr ""
-#: c.opt:413
+#: c.opt:417
msgid ""
"Warn whenever a function's return type defaults to \"int\" (C), or about "
"inconsistent return types (C++)"
msgstr ""
-#: c.opt:417
+#: c.opt:421
msgid "Warn if a selector has multiple methods"
msgstr ""
-#: c.opt:421
+#: c.opt:425
msgid "Warn about possible violations of sequence point rules"
msgstr ""
-#: c.opt:425
+#: c.opt:429
msgid "Warn about signed-unsigned comparisons"
msgstr ""
-#: c.opt:429
+#: c.opt:433
msgid "Warn when overload promotes from unsigned to signed"
msgstr ""
-#: c.opt:433
+#: c.opt:437
msgid "Warn about uncasted NULL used as sentinel"
msgstr ""
-#: c.opt:437
+#: c.opt:441
msgid "Warn about unprototyped function declarations"
msgstr ""
-#: c.opt:441
+#: c.opt:445
msgid "Warn if type signatures of candidate methods do not match exactly"
msgstr ""
-#: c.opt:445
+#: c.opt:449
msgid ""
"Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions "
"are used"
msgstr ""
-#: c.opt:449
+#: c.opt:453
msgid "Deprecated. This switch has no effect"
msgstr ""
-#: c.opt:457
+#: c.opt:461
msgid "Warn about features not present in traditional C"
msgstr ""
-#: c.opt:461
+#: c.opt:465
msgid ""
"Warn of prototypes causing type conversions different from what would happen "
"in the absence of prototype"
msgstr ""
-#: c.opt:465
+#: c.opt:469
msgid ""
"Warn if trigraphs are encountered that might affect the meaning of the "
"program"
msgstr ""
-#: c.opt:469
+#: c.opt:473
msgid "Warn about @selector()s without previously declared methods"
msgstr ""
-#: c.opt:473
+#: c.opt:477
msgid "Warn if an undefined macro is used in an #if directive"
msgstr ""
-#: c.opt:477
+#: c.opt:481
msgid "Warn about unrecognized pragmas"
msgstr ""
-#: c.opt:481
+#: c.opt:485
msgid "Warn about unsuffixed float constants"
msgstr ""
-#: c.opt:485
+#: c.opt:489
msgid "Warn about macros defined in the main file that are not used"
msgstr ""
-#: c.opt:489
+#: c.opt:493
+msgid ""
+"Warn if a caller of a function, marked with attribute warn_unused_result, "
+"does not use its return value"
+msgstr ""
+
+#: c.opt:497
msgid "Do not warn about using variadic macros when -pedantic"
msgstr ""
-#: c.opt:493
+#: c.opt:501
msgid "Warn if a variable length array is used"
msgstr ""
-#: c.opt:497
+#: c.opt:505
msgid "Warn when a register variable is declared volatile"
msgstr ""
-#: c.opt:501
+#: c.opt:509
msgid ""
"In C++, nonzero means warn about deprecated conversion from string literals "
"to `char *'. In C, similar warning, except that the conversion is of course "
"not deprecated by the ISO C standard."
msgstr ""
-#: c.opt:505
+#: c.opt:513
msgid "Warn when a pointer differs in signedness in an assignment"
msgstr ""
-#: c.opt:509
+#: c.opt:517
msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)"
msgstr ""
-#: c.opt:517
+#: c.opt:525
msgid "Enforce class member access control semantics"
msgstr ""
-#: c.opt:524
+#: c.opt:532
msgid "Change when template instances are emitted"
msgstr ""
-#: c.opt:528
+#: c.opt:536
msgid "Recognize the \"asm\" keyword"
msgstr ""
-#: c.opt:532
+#: c.opt:540
msgid "Recognize built-in functions"
msgstr ""
-#: c.opt:539
+#: c.opt:547
msgid "Check the return value of new"
msgstr ""
-#: c.opt:543
+#: c.opt:551
msgid "Allow the arguments of the '?' operator to have different types"
msgstr ""
-#: c.opt:547
+#: c.opt:555
msgid "Reduce the size of object files"
msgstr ""
-#: c.opt:551
+#: c.opt:559
msgid "Use class <name> for constant strings"
msgstr ""
-#: c.opt:555
+#: c.opt:563
+msgid ""
+"disable deduction of std::initializer_list for a template type parameter "
+"from a brace-enclosed initializer-list"
+msgstr ""
+
+#: c.opt:567
msgid "Inline member functions by default"
msgstr ""
-#: c.opt:559
+#: c.opt:571
msgid "Preprocess directives only."
msgstr ""
-#: c.opt:563
+#: c.opt:575
msgid "Permit '$' as an identifier character"
msgstr ""
-#: c.opt:570
+#: c.opt:582
msgid "Generate code to check exception specifications"
msgstr ""
-#: c.opt:577
+#: c.opt:589
msgid "Convert all strings and character constants to character set <cset>"
msgstr ""
-#: c.opt:581
+#: c.opt:593
msgid "Permit universal character names (\\u and \\U) in identifiers"
msgstr ""
-#: c.opt:585
+#: c.opt:597
msgid "Specify the default character set for source files"
msgstr ""
-#: c.opt:593
+#: c.opt:605
msgid "Scope of for-init-statement variables is local to the loop"
msgstr ""
-#: c.opt:597
+#: c.opt:609
msgid "Do not assume that standard C libraries and \"main\" exist"
msgstr ""
-#: c.opt:601
+#: c.opt:613
msgid "Recognize GNU-defined keywords"
msgstr ""
-#: c.opt:605
+#: c.opt:617
msgid "Generate code for GNU runtime environment"
msgstr ""
-#: c.opt:609
+#: c.opt:621
msgid "Use traditional GNU semantics for inline functions"
msgstr ""
-#: c.opt:622
+#: c.opt:634
msgid "Assume normal C execution environment"
msgstr ""
-#: c.opt:626
+#: c.opt:638
msgid "Enable support for huge objects"
msgstr ""
-#: c.opt:630
+#: c.opt:642
msgid "Export functions even if they can be inlined"
msgstr ""
-#: c.opt:634
+#: c.opt:646
msgid "Emit implicit instantiations of inline templates"
msgstr ""
-#: c.opt:638
+#: c.opt:650
msgid "Emit implicit instantiations of templates"
msgstr ""
-#: c.opt:642
+#: c.opt:654
msgid "Inject friend functions into enclosing namespace"
msgstr ""
-#: c.opt:649
+#: c.opt:661
msgid ""
"Allow implicit conversions between vectors with differing numbers of "
"subparts and/or differing element types."
msgstr ""
-#: c.opt:653
+#: c.opt:665
msgid "Don't warn about uses of Microsoft extensions"
msgstr ""
-#: c.opt:663
+#: c.opt:675
msgid "Generate code for NeXT (Apple Mac OS X) runtime environment"
msgstr ""
-#: c.opt:667
+#: c.opt:679
msgid "Assume that receivers of Objective-C messages may be nil"
msgstr ""
-#: c.opt:679
+#: c.opt:691
msgid ""
"Generate special Objective-C methods to initialize/destroy non-POD C++ "
"ivars, if needed"
msgstr ""
-#: c.opt:683
+#: c.opt:695
msgid "Allow fast jumps to the message dispatcher"
msgstr ""
-#: c.opt:689
+#: c.opt:701
msgid "Enable Objective-C exception and synchronization syntax"
msgstr ""
-#: c.opt:693
+#: c.opt:705
msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs"
msgstr ""
-#: c.opt:698
+#: c.opt:710
msgid "Enable Objective-C setjmp exception handling runtime"
msgstr ""
-#: c.opt:702
+#: c.opt:714
msgid "Enable OpenMP (implies -frecursive in Fortran)"
msgstr ""
-#: c.opt:706
+#: c.opt:718
msgid "Recognize C++ keywords like \"compl\" and \"xor\""
msgstr ""
-#: c.opt:710
+#: c.opt:722
msgid "Enable optional diagnostics"
msgstr ""
-#: c.opt:717
+#: c.opt:729
msgid "Look for and use PCH files even when preprocessing"
msgstr ""
-#: c.opt:721
+#: c.opt:733
msgid "Downgrade conformance errors to warnings"
msgstr ""
-#: c.opt:725
+#: c.opt:737
msgid "Treat the input file as already preprocessed"
msgstr ""
-#: c.opt:729
+#: c.opt:741
msgid ""
"-fno-pretty-templates Do not pretty-print template specializations as the "
"template signature followed by the arguments"
msgstr ""
-#: c.opt:733
+#: c.opt:745
msgid ""
"Used in Fix-and-Continue mode to indicate that object files may be swapped "
"in at runtime"
msgstr ""
-#: c.opt:737
+#: c.opt:749
msgid "Enable automatic template instantiation"
msgstr ""
-#: c.opt:741
+#: c.opt:753
msgid "Generate run time type descriptor information"
msgstr ""
-#: c.opt:745
+#: c.opt:757
msgid "Use the same size for double as for float"
msgstr ""
-#: c.opt:753
+#: c.opt:761
+msgid "Use the narrowest integer type possible for enumeration types"
+msgstr ""
+
+#: c.opt:765
msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
msgstr ""
-#: c.opt:757
+#: c.opt:769
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
msgstr ""
-#: c.opt:761
+#: c.opt:773
msgid "Make \"char\" signed by default"
msgstr ""
-#: c.opt:768
+#: c.opt:780
msgid "Display statistics accumulated during compilation"
msgstr ""
-#: c.opt:775
+#: c.opt:787
msgid "Distance between tab stops for column reporting"
msgstr ""
-#: c.opt:779
+#: c.opt:791
msgid "Specify maximum template instantiation depth"
msgstr ""
-#: c.opt:786
+#: c.opt:798
msgid "Do not generate thread-safe code for initializing local statics"
msgstr ""
-#: c.opt:790
+#: c.opt:802
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
msgstr ""
-#: c.opt:794
+#: c.opt:806
msgid "Make \"char\" unsigned by default"
msgstr ""
-#: c.opt:798
+#: c.opt:810
msgid "Use __cxa_atexit to register destructors"
msgstr ""
-#: c.opt:802
+#: c.opt:814
msgid "Use __cxa_get_exception_ptr in exception handling"
msgstr ""
-#: c.opt:806
+#: c.opt:818
msgid "Marks all inlined methods as having hidden visibility"
msgstr ""
-#: c.opt:810
+#: c.opt:822
msgid "Changes visibility to match Microsoft Visual Studio by default"
msgstr ""
-#: c.opt:814
+#: c.opt:826
msgid "Discard unused virtual functions"
msgstr ""
-#: c.opt:818
+#: c.opt:830
msgid "Implement vtables using thunks"
msgstr ""
-#: c.opt:822
+#: c.opt:834
msgid "Emit common-like symbols as weak symbols"
msgstr ""
-#: c.opt:826
+#: c.opt:838
msgid ""
"Convert all wide strings and character constants to character set <cset>"
msgstr ""
-#: c.opt:830
+#: c.opt:842
msgid "Generate a #line directive pointing at the current working directory"
msgstr ""
-#: c.opt:834
+#: c.opt:846
msgid "Emit cross referencing information"
msgstr ""
-#: c.opt:838
+#: c.opt:850
msgid ""
"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
msgstr ""
-#: c.opt:842
+#: c.opt:854
msgid "Dump declarations to a .decl file"
msgstr ""
-#: c.opt:846
+#: c.opt:858
msgid "Aggressive reduced debug info for structs"
msgstr ""
-#: c.opt:850
+#: c.opt:862
msgid "Conservative reduced debug info for structs"
msgstr ""
-#: c.opt:854
+#: c.opt:866
msgid "Detailed reduced debug info for structs"
msgstr ""
-#: c.opt:858 c.opt:890
+#: c.opt:870 c.opt:902
msgid "Add <dir> to the end of the system include path"
msgstr ""
-#: c.opt:862
+#: c.opt:874
msgid "Accept definition of macros in <file>"
msgstr ""
-#: c.opt:866
+#: c.opt:878
msgid "-imultilib <dir> Set <dir> to be the multilib include subdirectory"
msgstr ""
-#: c.opt:870
+#: c.opt:882
msgid "Include the contents of <file> before other files"
msgstr ""
-#: c.opt:874
+#: c.opt:886
msgid "Specify <path> as a prefix for next two options"
msgstr ""
-#: c.opt:878
+#: c.opt:890
msgid "Set <dir> to be the system root directory"
msgstr ""
-#: c.opt:882
+#: c.opt:894
msgid "Add <dir> to the start of the system include path"
msgstr ""
-#: c.opt:886
+#: c.opt:898
msgid "Add <dir> to the end of the quote include path"
msgstr ""
-#: c.opt:904
+#: c.opt:916
msgid ""
"Do not search standard system include directories (those specified with -"
"isystem will still be used)"
msgstr ""
-#: c.opt:908
+#: c.opt:920
msgid "Do not search standard system include directories for C++"
msgstr ""
-#: c.opt:924
+#: c.opt:936
msgid "Generate C header of platform-specific features"
msgstr ""
-#: c.opt:928
+#: c.opt:940
msgid "Print a checksum of the executable for PCH validity checking, and stop"
msgstr ""
-#: c.opt:932
+#: c.opt:944
msgid "Remap file names when including files"
msgstr ""
-#: c.opt:936
+#: c.opt:948
msgid "Conform to the ISO 1998 C++ standard"
msgstr ""
-#: c.opt:940
+#: c.opt:952
msgid ""
"Conform to the ISO 1998 C++ standard, with extensions that are likely to"
msgstr ""
-#: c.opt:947 c.opt:982
+#: c.opt:959 c.opt:994
msgid "Conform to the ISO 1990 C standard"
msgstr ""
-#: c.opt:951 c.opt:990
+#: c.opt:963 c.opt:1002
msgid "Conform to the ISO 1999 C standard"
msgstr ""
-#: c.opt:955
+#: c.opt:967
msgid "Deprecated in favor of -std=c99"
msgstr ""
-#: c.opt:959
+#: c.opt:971
msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgstr ""
-#: c.opt:963
+#: c.opt:975
msgid "Conform to the ISO 1998 C++ standard, with GNU extensions and"
msgstr ""
-#: c.opt:970
+#: c.opt:982
msgid "Conform to the ISO 1990 C standard with GNU extensions"
msgstr ""
-#: c.opt:974
+#: c.opt:986
msgid "Conform to the ISO 1999 C standard with GNU extensions"
msgstr ""
-#: c.opt:978
+#: c.opt:990
msgid "Deprecated in favor of -std=gnu99"
msgstr ""
-#: c.opt:986
+#: c.opt:998
msgid "Conform to the ISO 1990 C standard as amended in 1994"
msgstr ""
-#: c.opt:994
+#: c.opt:1006
msgid "Deprecated in favor of -std=iso9899:1999"
msgstr ""
-#: c.opt:998
+#: c.opt:1010
msgid "Enable traditional preprocessing"
msgstr ""
-#: c.opt:1002
+#: c.opt:1014
msgid "Support ISO C trigraphs"
msgstr ""
-#: c.opt:1006
+#: c.opt:1018
msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
-#: c.opt:1010
+#: c.opt:1022
msgid "Enable verbose output"
msgstr ""
+#: lto/lang.opt:29
+msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
+msgstr ""
+
+#: lto/lang.opt:33
+msgid "Specify a file to which a list of files output by LTRANS is written."
+msgstr ""
+
+#: lto/lang.opt:37
+msgid "Run the link-time optimizer in whole program analysis (WPA) mode."
+msgstr ""
+
+#: lto/lang.opt:41
+msgid "The resolution file"
+msgstr ""
+
#: common.opt:28
msgid "Display this information"
msgstr ""
@@ -16650,1010 +17416,1122 @@ msgid "Do not put uninitialized globals in the common section"
msgstr ""
#: common.opt:385
-msgid "Do not perform optimizations increasing noticeably stack usage"
+msgid ""
+"-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare "
+"the final-insns dump"
msgstr ""
#: common.opt:389
-msgid "Perform a register copy-propagation optimization pass"
+msgid "Run only the second compilation of -fcompare-debug"
msgstr ""
#: common.opt:393
-msgid "Perform cross-jumping optimization"
+msgid "Do not perform optimizations increasing noticeably stack usage"
msgstr ""
#: common.opt:397
+msgid "Perform a register copy-propagation optimization pass"
+msgstr ""
+
+#: common.opt:401
+msgid "Perform cross-jumping optimization"
+msgstr ""
+
+#: common.opt:405
msgid "When running CSE, follow jumps to their targets"
msgstr ""
-#: common.opt:401 common.opt:514 common.opt:727 common.opt:956 common.opt:1108
-#: common.opt:1167 common.opt:1183 common.opt:1243
+#: common.opt:409 common.opt:538 common.opt:759 common.opt:1001
+#: common.opt:1122 common.opt:1181 common.opt:1240 common.opt:1256
+#: common.opt:1328
msgid "Does nothing. Preserved for backward compatibility."
msgstr ""
-#: common.opt:405
+#: common.opt:413
msgid "Omit range reduction step when performing complex division"
msgstr ""
-#: common.opt:409
+#: common.opt:417
msgid "Complex multiplication and division follow Fortran rules"
msgstr ""
-#: common.opt:413
+#: common.opt:421
msgid "Place data items into their own section"
msgstr ""
-#: common.opt:417
+#: common.opt:425
msgid "List all available debugging counters with their limits and counts."
msgstr ""
-#: common.opt:421
+#: common.opt:429
msgid ""
"-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter "
"limit. "
msgstr ""
-#: common.opt:425
+#: common.opt:433
msgid "Map one directory name to another in debug information"
msgstr ""
-#: common.opt:431
+#: common.opt:439
msgid "Defer popping functions args from stack until later"
msgstr ""
-#: common.opt:435
+#: common.opt:443
msgid "Attempt to fill delay slots of branch instructions"
msgstr ""
-#: common.opt:439
+#: common.opt:447
msgid "Delete useless null pointer checks"
msgstr ""
-#: common.opt:443
+#: common.opt:451
msgid ""
"How often to emit source location at the beginning of line-wrapped "
"diagnostics"
msgstr ""
-#: common.opt:447
+#: common.opt:455
msgid ""
"Amend appropriate diagnostic messages with the command line option that "
"controls them"
msgstr ""
-#: common.opt:451
+#: common.opt:459
msgid "Dump various compiler internals to a file"
msgstr ""
-#: common.opt:455
+#: common.opt:463
+msgid "Dump to filename the insns at the end of translation"
+msgstr ""
+
+#: common.opt:467
msgid "Suppress output of addresses in debugging dumps"
msgstr ""
-#: common.opt:459
+#: common.opt:471
msgid ""
"Suppress output of instruction numbers, line number notes and addresses in "
"debugging dumps"
msgstr ""
-#: common.opt:463
+#: common.opt:475
+msgid "Suppress output of previous and next insn numbers in debugging dumps"
+msgstr ""
+
+#: common.opt:479
msgid "Enable CFI tables via GAS assembler directives."
msgstr ""
-#: common.opt:467
+#: common.opt:483
msgid "Perform early inlining"
msgstr ""
-#: common.opt:471
+#: common.opt:487
msgid "Perform DWARF2 duplicate elimination"
msgstr ""
-#: common.opt:475 common.opt:479
+#: common.opt:491
+msgid "Perform interprocedural reduction of aggregates"
+msgstr ""
+
+#: common.opt:495 common.opt:499
msgid "Perform unused type elimination in debug info"
msgstr ""
-#: common.opt:483
+#: common.opt:503
msgid "Do not suppress C++ class debug information."
msgstr ""
-#: common.opt:487
+#: common.opt:507
+msgid "Generate debug information to support Identical Code Folding (ICF)"
+msgstr ""
+
+#: common.opt:511
msgid "Enable exception handling"
msgstr ""
-#: common.opt:491
+#: common.opt:515
msgid "Perform a number of minor, expensive optimizations"
msgstr ""
-#: common.opt:495
+#: common.opt:519
msgid "Specify handling of excess floating-point precision"
msgstr ""
-#: common.opt:502
+#: common.opt:526
msgid "Assume no NaNs or infinities are generated"
msgstr ""
-#: common.opt:506
+#: common.opt:530
msgid "Mark <register> as being unavailable to the compiler"
msgstr ""
-#: common.opt:510
+#: common.opt:534
msgid "Don't allocate floats and doubles in extended-precision registers"
msgstr ""
-#: common.opt:518
+#: common.opt:542
msgid "Perform a forward propagation pass on RTL"
msgstr ""
-#: common.opt:525
+#: common.opt:549
msgid "Allow function addresses to be held in registers"
msgstr ""
-#: common.opt:529
+#: common.opt:553
msgid "Place each function into its own section"
msgstr ""
-#: common.opt:533
+#: common.opt:557
msgid "Perform global common subexpression elimination"
msgstr ""
-#: common.opt:537
+#: common.opt:561
msgid ""
"Perform enhanced load motion during global common subexpression elimination"
msgstr ""
-#: common.opt:541
+#: common.opt:565
msgid "Perform store motion after global common subexpression elimination"
msgstr ""
-#: common.opt:545
+#: common.opt:569
msgid ""
"Perform redundant load after store elimination in global common subexpression"
msgstr ""
-#: common.opt:550
+#: common.opt:574
msgid ""
"Perform global common subexpression elimination after register allocation"
msgstr ""
-#: common.opt:556
+#: common.opt:580
msgid "Enable in and out of Graphite representation"
msgstr ""
-#: common.opt:560
+#: common.opt:584
+msgid "Enable Graphite Identity transformation"
+msgstr ""
+
+#: common.opt:588
+msgid "Mark all loops as parallel"
+msgstr ""
+
+#: common.opt:592
msgid "Enable Loop Strip Mining transformation"
msgstr ""
-#: common.opt:564
+#: common.opt:596
msgid "Enable Loop Interchange transformation"
msgstr ""
-#: common.opt:568
+#: common.opt:600
msgid "Enable Loop Blocking transformation"
msgstr ""
-#: common.opt:573
-msgid "Enable Graphite Identity transformation"
-msgstr ""
-
-#: common.opt:577
+#: common.opt:604
msgid "Enable guessing of branch probabilities"
msgstr ""
-#: common.opt:585
+#: common.opt:612
msgid "Process #ident directives"
msgstr ""
-#: common.opt:589
+#: common.opt:616
msgid "Perform conversion of conditional jumps to branchless equivalents"
msgstr ""
-#: common.opt:593
+#: common.opt:620
msgid "Perform conversion of conditional jumps to conditional execution"
msgstr ""
-#: common.opt:601
+#: common.opt:628
msgid "Do not generate .size directives"
msgstr ""
-#: common.opt:605
+#: common.opt:632
msgid "Perform indirect inlining"
msgstr ""
-#: common.opt:614
+#: common.opt:641
msgid "Pay attention to the \"inline\" keyword"
msgstr ""
-#: common.opt:618
+#: common.opt:645
msgid ""
"Integrate simple functions into their callers when code size is known to not "
"growth"
msgstr ""
-#: common.opt:622
+#: common.opt:649
msgid "Integrate simple functions into their callers"
msgstr ""
-#: common.opt:626
+#: common.opt:653
msgid "Integrate functions called once into their callers"
msgstr ""
-#: common.opt:633
+#: common.opt:660
msgid "Limit the size of inlined functions to <number>"
msgstr ""
-#: common.opt:637
+#: common.opt:664
msgid "Instrument function entry and exit with profiling calls"
msgstr ""
-#: common.opt:641
+#: common.opt:668
msgid ""
"-finstrument-functions-exclude-function-list=name,... Do not instrument "
"listed functions"
msgstr ""
-#: common.opt:645
+#: common.opt:672
msgid ""
"-finstrument-functions-exclude-file-list=filename,... Do not instrument "
"functions listed in files"
msgstr ""
-#: common.opt:649
+#: common.opt:676
msgid "Perform Interprocedural constant propagation"
msgstr ""
-#: common.opt:653
+#: common.opt:680
msgid "Perform cloning to make Interprocedural constant propagation stronger"
msgstr ""
-#: common.opt:657
+#: common.opt:684
msgid "Discover pure and const functions"
msgstr ""
-#: common.opt:661
+#: common.opt:688
msgid "Perform interprocedural points-to analysis"
msgstr ""
-#: common.opt:665
+#: common.opt:692
msgid "Discover readonly and non addressable static variables"
msgstr ""
-#: common.opt:669
+#: common.opt:696
msgid "Type based escape and alias analysis"
msgstr ""
-#: common.opt:673
+#: common.opt:700
msgid "Perform matrix layout flattening and transposing based"
msgstr ""
-#: common.opt:678
+#: common.opt:705
msgid "Perform structure layout optimizations based"
msgstr ""
-#: common.opt:683
+#: common.opt:710
msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm"
msgstr ""
-#: common.opt:687
+#: common.opt:714
msgid "-fira-region=[one|all|mixed] Set regions for IRA"
msgstr ""
-#: common.opt:691
+#: common.opt:718
msgid "Do optimistic coalescing."
msgstr ""
-#: common.opt:695
+#: common.opt:722
+msgid "Use IRA based register pressure calculation"
+msgstr ""
+
+#: common.opt:727
msgid "Share slots for saving different hard registers."
msgstr ""
-#: common.opt:699
+#: common.opt:731
msgid "Share stack slots for spilled pseudo-registers."
msgstr ""
-#: common.opt:703
+#: common.opt:735
msgid "-fira-verbose=<number> Control IRA's level of diagnostic messages."
msgstr ""
-#: common.opt:707
+#: common.opt:739
msgid "Optimize induction variables on trees"
msgstr ""
-#: common.opt:711
+#: common.opt:743
msgid "Use jump tables for sufficiently large switch statements"
msgstr ""
-#: common.opt:715
+#: common.opt:747
msgid "Generate code for functions even if they are fully inlined"
msgstr ""
-#: common.opt:719
+#: common.opt:751
msgid "Emit static const variables even if they are not used"
msgstr ""
-#: common.opt:723
+#: common.opt:755
msgid "Give external symbols a leading underscore"
msgstr ""
-#: common.opt:731
+#: common.opt:763
+msgid "Enable link-time optimization."
+msgstr ""
+
+#: common.opt:768
+msgid ""
+"-flto-compression-level=<number> Use zlib compression level <number> for IL"
+msgstr ""
+
+#: common.opt:772
+msgid "Report various link-time optimization statistics"
+msgstr ""
+
+#: common.opt:776
msgid "Set errno after built-in math functions"
msgstr ""
-#: common.opt:735
+#: common.opt:780
msgid "Report on permanent memory allocation"
msgstr ""
-#: common.opt:742
+#: common.opt:787
msgid "Attempt to merge identical constants and constant variables"
msgstr ""
-#: common.opt:746
+#: common.opt:791
msgid "Attempt to merge identical constants across compilation units"
msgstr ""
-#: common.opt:750
+#: common.opt:795
msgid "Attempt to merge identical debug strings across compilation units"
msgstr ""
-#: common.opt:754
+#: common.opt:799
msgid ""
"Limit diagnostics to <number> characters per line. 0 suppresses line-"
"wrapping"
msgstr ""
-#: common.opt:758
+#: common.opt:803
msgid "Perform SMS based modulo scheduling before the first scheduling pass"
msgstr ""
-#: common.opt:762
+#: common.opt:807
msgid "Perform SMS based modulo scheduling with register moves allowed"
msgstr ""
-#: common.opt:766
+#: common.opt:811
msgid "Move loop invariant computations out of loops"
msgstr ""
-#: common.opt:770
+#: common.opt:815
msgid "Add mudflap bounds-checking instrumentation for single-threaded program"
msgstr ""
-#: common.opt:774
+#: common.opt:819
msgid "Add mudflap bounds-checking instrumentation for multi-threaded program"
msgstr ""
-#: common.opt:778
+#: common.opt:823
msgid "Ignore read operations when inserting mudflap instrumentation"
msgstr ""
-#: common.opt:782
+#: common.opt:827
msgid "Use the RTL dead code elimination pass"
msgstr ""
-#: common.opt:786
+#: common.opt:831
msgid "Use the RTL dead store elimination pass"
msgstr ""
-#: common.opt:790
+#: common.opt:835
msgid ""
"Enable/Disable the traditional scheduling in loops that already passed "
"modulo scheduling"
msgstr ""
-#: common.opt:794
+#: common.opt:839
msgid "Support synchronous non-call exceptions"
msgstr ""
-#: common.opt:798
+#: common.opt:843
msgid "When possible do not generate stack frames"
msgstr ""
-#: common.opt:802
+#: common.opt:847
msgid "Do the full register move optimization pass"
msgstr ""
-#: common.opt:806
+#: common.opt:851
msgid "Optimize sibling and tail recursive calls"
msgstr ""
-#: common.opt:810 common.opt:814
+#: common.opt:855 common.opt:859
msgid "Report on memory allocation before interprocedural optimization"
msgstr ""
-#: common.opt:818
+#: common.opt:863
msgid "Pack structure members together without holes"
msgstr ""
-#: common.opt:822
+#: common.opt:867
msgid "Set initial maximum structure member alignment"
msgstr ""
-#: common.opt:826
+#: common.opt:871
msgid "Return small aggregates in memory, not registers"
msgstr ""
-#: common.opt:830
+#: common.opt:875
msgid "Perform loop peeling"
msgstr ""
-#: common.opt:834
+#: common.opt:879
msgid "Enable machine specific peephole optimizations"
msgstr ""
-#: common.opt:838
+#: common.opt:883
msgid "Enable an RTL peephole pass before sched2"
msgstr ""
-#: common.opt:842
+#: common.opt:887
msgid "Generate position-independent code if possible (large mode)"
msgstr ""
-#: common.opt:846
+#: common.opt:891
msgid ""
"Generate position-independent code for executables if possible (large mode)"
msgstr ""
-#: common.opt:850
+#: common.opt:895
msgid "Generate position-independent code if possible (small mode)"
msgstr ""
-#: common.opt:854
+#: common.opt:899
msgid ""
"Generate position-independent code for executables if possible (small mode)"
msgstr ""
-#: common.opt:858
+#: common.opt:903
msgid "Specify a plugin to load"
msgstr ""
-#: common.opt:862
+#: common.opt:907
msgid ""
"-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for "
"plugin <name>"
msgstr ""
-#: common.opt:866
+#: common.opt:911
msgid "Run predictive commoning optimization."
msgstr ""
-#: common.opt:870
+#: common.opt:915
msgid "Generate prefetch instructions, if available, for arrays in loops"
msgstr ""
-#: common.opt:874
+#: common.opt:919
msgid "Enable basic program profiling code"
msgstr ""
-#: common.opt:878
+#: common.opt:923
msgid "Insert arc-based program profiling code"
msgstr ""
-#: common.opt:882
+#: common.opt:927
msgid "Set the top-level directory for storing the profile data."
msgstr ""
-#: common.opt:887
+#: common.opt:932
msgid "Enable correction of flow inconsistent profile data input"
msgstr ""
-#: common.opt:891
+#: common.opt:936
msgid ""
"Enable common options for generating profile info for profile feedback "
"directed optimizations"
msgstr ""
-#: common.opt:895
+#: common.opt:940
msgid ""
"Enable common options for generating profile info for profile feedback "
"directed optimizations, and set -fprofile-dir="
msgstr ""
-#: common.opt:899
+#: common.opt:944
msgid ""
"Enable common options for performing profile feedback directed optimizations"
msgstr ""
-#: common.opt:903
+#: common.opt:948
msgid ""
"Enable common options for performing profile feedback directed "
"optimizations, and set -fprofile-dir="
msgstr ""
-#: common.opt:907
+#: common.opt:952
msgid "Insert code to profile values of expressions"
msgstr ""
-#: common.opt:914
+#: common.opt:959
msgid "Make compile reproducible using <string>"
msgstr ""
-#: common.opt:924
+#: common.opt:969
msgid "Record gcc command line switches in the object file."
msgstr ""
-#: common.opt:928
+#: common.opt:973
msgid "Return small aggregates in registers"
msgstr ""
-#: common.opt:932
+#: common.opt:977
msgid "Enables a register move optimization"
msgstr ""
-#: common.opt:936
+#: common.opt:981
msgid "Perform a register renaming optimization pass"
msgstr ""
-#: common.opt:940
+#: common.opt:985
msgid "Reorder basic blocks to improve code placement"
msgstr ""
-#: common.opt:944
+#: common.opt:989
msgid "Reorder basic blocks and partition into hot and cold sections"
msgstr ""
-#: common.opt:948
+#: common.opt:993
msgid "Reorder functions to improve code placement"
msgstr ""
-#: common.opt:952
+#: common.opt:997
msgid "Add a common subexpression elimination pass after loop optimizations"
msgstr ""
-#: common.opt:960
+#: common.opt:1005
msgid "Disable optimizations that assume default FP rounding behavior"
msgstr ""
-#: common.opt:964
+#: common.opt:1009
msgid "Enable scheduling across basic blocks"
msgstr ""
-#: common.opt:968
+#: common.opt:1013
+msgid "Enable register pressure sensitive insn scheduling"
+msgstr ""
+
+#: common.opt:1017
msgid "Allow speculative motion of non-loads"
msgstr ""
-#: common.opt:972
+#: common.opt:1021
msgid "Allow speculative motion of some loads"
msgstr ""
-#: common.opt:976
+#: common.opt:1025
msgid "Allow speculative motion of more loads"
msgstr ""
-#: common.opt:980
+#: common.opt:1029
msgid "Set the verbosity level of the scheduler"
msgstr ""
-#: common.opt:984
+#: common.opt:1033
msgid "If scheduling post reload, do superblock scheduling"
msgstr ""
-#: common.opt:988
+#: common.opt:1037
msgid "If scheduling post reload, do trace scheduling"
msgstr ""
-#: common.opt:992
+#: common.opt:1041
msgid "Reschedule instructions before register allocation"
msgstr ""
-#: common.opt:996
+#: common.opt:1045
msgid "Reschedule instructions after register allocation"
msgstr ""
-#: common.opt:1003
+#: common.opt:1052
msgid "Schedule instructions using selective scheduling algorithm"
msgstr ""
-#: common.opt:1007
+#: common.opt:1056
msgid "Run selective scheduling after reload"
msgstr ""
-#: common.opt:1011
+#: common.opt:1060
msgid "Perform software pipelining of inner loops during selective scheduling"
msgstr ""
-#: common.opt:1015
+#: common.opt:1064
msgid "Perform software pipelining of outer loops during selective scheduling"
msgstr ""
-#: common.opt:1019
+#: common.opt:1068
msgid "Reschedule pipelined regions without pipelining"
msgstr ""
-#: common.opt:1025
+#: common.opt:1074
msgid "Allow premature scheduling of queued insns"
msgstr ""
-#: common.opt:1029
+#: common.opt:1078
msgid "Set number of queued insns that can be prematurely scheduled"
msgstr ""
-#: common.opt:1037 common.opt:1041
+#: common.opt:1086 common.opt:1090
msgid ""
"Set dependence distance checking in premature scheduling of queued insns"
msgstr ""
-#: common.opt:1045
-msgid "Access data in the same section from shared anchor points"
+#: common.opt:1094
+msgid "Enable the group heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1098
+msgid "Enable the critical path heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1102
+msgid "Enable the speculative instruction heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1106
+msgid "Enable the rank heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1110
+msgid "Enable the last instruction heuristic in the scheduler"
+msgstr ""
+
+#: common.opt:1114
+msgid "Enable the dependent count heuristic in the scheduler"
msgstr ""
-#: common.opt:1049
-msgid "Eliminate redundant sign extensions using LCM."
+#: common.opt:1118
+msgid "Access data in the same section from shared anchor points"
msgstr ""
-#: common.opt:1053
-msgid "Show column numbers in diagnostics, when available. Default off"
+#: common.opt:1126
+msgid "Show column numbers in diagnostics, when available. Default on"
msgstr ""
-#: common.opt:1057
+#: common.opt:1130
msgid "Disable optimizations observable by IEEE signaling NaNs"
msgstr ""
-#: common.opt:1061
+#: common.opt:1134
msgid ""
"Disable floating point optimizations that ignore the IEEE signedness of zero"
msgstr ""
-#: common.opt:1065
+#: common.opt:1138
msgid "Convert floating point constants to single precision constants"
msgstr ""
-#: common.opt:1069
+#: common.opt:1142
msgid "Split lifetimes of induction variables when loops are unrolled"
msgstr ""
-#: common.opt:1073
+#: common.opt:1146
msgid "Split wide types into independent registers"
msgstr ""
-#: common.opt:1077
+#: common.opt:1150
msgid "Apply variable expansion when loops are unrolled"
msgstr ""
-#: common.opt:1081
+#: common.opt:1154
msgid "Insert stack checking code into the program"
msgstr ""
-#: common.opt:1085
+#: common.opt:1158
msgid ""
"Insert stack checking code into the program. Same as -fstack-check=specific"
msgstr ""
-#: common.opt:1092
+#: common.opt:1165
msgid "Trap if the stack goes past <register>"
msgstr ""
-#: common.opt:1096
+#: common.opt:1169
msgid "Trap if the stack goes past symbol <name>"
msgstr ""
-#: common.opt:1100
+#: common.opt:1173
msgid "Use propolice as a stack protection method"
msgstr ""
-#: common.opt:1104
+#: common.opt:1177
msgid "Use a stack protection method for every function"
msgstr ""
-#: common.opt:1116
+#: common.opt:1189
msgid "Assume strict aliasing rules apply"
msgstr ""
-#: common.opt:1120
+#: common.opt:1193
msgid "Treat signed overflow as undefined"
msgstr ""
-#: common.opt:1124
+#: common.opt:1197
msgid "Check for syntax errors, then stop"
msgstr ""
-#: common.opt:1128
+#: common.opt:1201
msgid "Create data files needed by \"gcov\""
msgstr ""
-#: common.opt:1132
+#: common.opt:1205
msgid "Perform jump threading optimizations"
msgstr ""
-#: common.opt:1136
+#: common.opt:1209
msgid "Report the time taken by each compiler pass"
msgstr ""
-#: common.opt:1140
+#: common.opt:1213
msgid "Set the default thread-local storage code generation model"
msgstr ""
-#: common.opt:1144
+#: common.opt:1217
msgid "Reorder top level functions, variables, and asms"
msgstr ""
-#: common.opt:1148
+#: common.opt:1221
msgid "Perform superblock formation via tail duplication"
msgstr ""
-#: common.opt:1155
+#: common.opt:1228
msgid "Assume floating-point operations can trap"
msgstr ""
-#: common.opt:1159
+#: common.opt:1232
msgid "Trap for signed overflow in addition, subtraction and multiplication"
msgstr ""
-#: common.opt:1163
+#: common.opt:1236
msgid "Enable SSA-CCP optimization on trees"
msgstr ""
-#: common.opt:1171
+#: common.opt:1244
msgid "Enable loop header copying on trees"
msgstr ""
-#: common.opt:1175
+#: common.opt:1248
msgid "Replace SSA temporaries with better names in copies"
msgstr ""
-#: common.opt:1179
+#: common.opt:1252
msgid "Enable copy propagation on trees"
msgstr ""
-#: common.opt:1187
+#: common.opt:1260
msgid "Transform condition stores into unconditional ones"
msgstr ""
-#: common.opt:1191
+#: common.opt:1264
msgid "Perform conversions of switch initializations."
msgstr ""
-#: common.opt:1195
+#: common.opt:1268
msgid "Enable SSA dead code elimination optimization on trees"
msgstr ""
-#: common.opt:1199
+#: common.opt:1272
msgid "Enable dominator optimizations"
msgstr ""
-#: common.opt:1203
+#: common.opt:1276
msgid "Enable dead store elimination"
msgstr ""
-#: common.opt:1207
+#: common.opt:1280
+msgid "Enable forward propagation on trees"
+msgstr ""
+
+#: common.opt:1284
msgid "Enable Full Redundancy Elimination (FRE) on trees"
msgstr ""
-#: common.opt:1211
+#: common.opt:1288
msgid "Enable loop distribution on trees"
msgstr ""
-#: common.opt:1215
+#: common.opt:1292
msgid "Enable loop invariant motion on trees"
msgstr ""
-#: common.opt:1219
+#: common.opt:1296
msgid "Enable linear loop transforms on trees"
msgstr ""
-#: common.opt:1223
+#: common.opt:1300
msgid "Create canonical induction variables in loops"
msgstr ""
-#: common.opt:1227
+#: common.opt:1304
msgid "Enable loop optimizations on tree level"
msgstr ""
-#: common.opt:1231
+#: common.opt:1308
msgid "Enable automatic parallelization of loops"
msgstr ""
-#: common.opt:1235
+#: common.opt:1312
+msgid "Enable hoisting loads from conditional pointers."
+msgstr ""
+
+#: common.opt:1316
msgid "Enable SSA-PRE optimization on trees"
msgstr ""
-#: common.opt:1239
+#: common.opt:1320
+msgid "Perform function-local points-to analysis on trees."
+msgstr ""
+
+#: common.opt:1324
msgid "Enable reassociation on tree level"
msgstr ""
-#: common.opt:1247
+#: common.opt:1332
msgid "Enable SSA code sinking on trees"
msgstr ""
-#: common.opt:1251
+#: common.opt:1336
msgid "Perform scalar replacement of aggregates"
msgstr ""
-#: common.opt:1255
+#: common.opt:1340
msgid "Replace temporary expressions in the SSA->normal pass"
msgstr ""
-#: common.opt:1259
+#: common.opt:1344
msgid "Perform live range splitting during the SSA->normal pass"
msgstr ""
-#: common.opt:1263
+#: common.opt:1348
msgid "Perform Value Range Propagation on trees"
msgstr ""
-#: common.opt:1267
+#: common.opt:1352
msgid "Compile whole compilation unit at a time"
msgstr ""
-#: common.opt:1271
+#: common.opt:1356
msgid "Perform loop unrolling when iteration count is known"
msgstr ""
-#: common.opt:1275
+#: common.opt:1360
msgid "Perform loop unrolling for all loops"
msgstr ""
-#: common.opt:1282
+#: common.opt:1367
msgid "Allow loop optimizations to assume that the loops behave in normal way"
msgstr ""
-#: common.opt:1286
+#: common.opt:1371
msgid "Allow optimization for floating-point arithmetic which may change the"
msgstr ""
-#: common.opt:1291
+#: common.opt:1376
msgid "Same as -fassociative-math for expressions which include division."
msgstr ""
-#: common.opt:1299
+#: common.opt:1384
msgid "Allow math optimizations that may violate IEEE or ISO standards"
msgstr ""
-#: common.opt:1303
+#: common.opt:1388
msgid "Perform loop unswitching"
msgstr ""
-#: common.opt:1307
+#: common.opt:1392
msgid "Just generate unwind tables for exception handling"
msgstr ""
-#: common.opt:1311
+#: common.opt:1396
msgid "Perform variable tracking"
msgstr ""
-#: common.opt:1315
+#: common.opt:1400
+msgid "Perform variable tracking by annotating assignments"
+msgstr ""
+
+#: common.opt:1404
+msgid "Toggle -fvar-tracking-assignments"
+msgstr ""
+
+#: common.opt:1408
msgid "Perform variable tracking and also tag variables that are uninitialized"
msgstr ""
-#: common.opt:1319
+#: common.opt:1412
msgid "Enable loop vectorization on trees"
msgstr ""
-#: common.opt:1323
+#: common.opt:1416
+msgid "Enable basic block vectorization (SLP) on trees"
+msgstr ""
+
+#: common.opt:1420
msgid "Enable use of cost model in vectorization"
msgstr ""
-#: common.opt:1327
+#: common.opt:1424
msgid "Enable loop versioning when doing loop vectorization on trees"
msgstr ""
-#: common.opt:1331
+#: common.opt:1428
msgid "Set the verbosity level of the vectorizer"
msgstr ""
-#: common.opt:1335
+#: common.opt:1432
msgid "Enable copy propagation of scalar-evolution information."
msgstr ""
-#: common.opt:1345
+#: common.opt:1442
msgid "Add extra commentary to assembler output"
msgstr ""
-#: common.opt:1349
+#: common.opt:1446
msgid "Set the default symbol visibility"
msgstr ""
-#: common.opt:1354
+#: common.opt:1451
msgid "Use expression value profiles in optimizations"
msgstr ""
-#: common.opt:1358
+#: common.opt:1455
msgid "Construct webs and split unrelated uses of single variable"
msgstr ""
-#: common.opt:1362
+#: common.opt:1459
+msgid "Enable partitioned link-time optimization."
+msgstr ""
+
+#: common.opt:1463
msgid "Enable conditional dead code elimination for builtin calls"
msgstr ""
-#: common.opt:1366
+#: common.opt:1467
msgid "Perform whole program optimizations"
msgstr ""
-#: common.opt:1370
+#: common.opt:1471
msgid "Assume signed arithmetic overflow wraps around"
msgstr ""
-#: common.opt:1374
+#: common.opt:1475
msgid "Put zero initialized data in the bss section"
msgstr ""
-#: common.opt:1378
+#: common.opt:1479
msgid "Generate debug information in default format"
msgstr ""
-#: common.opt:1382
+#: common.opt:1483
msgid "Generate debug information in COFF format"
msgstr ""
-#: common.opt:1386
-msgid "Generate debug information in DWARF v2 format"
+#: common.opt:1487
+msgid "Generate debug information in DWARF v2 (or later) format"
msgstr ""
-#: common.opt:1390
+#: common.opt:1491
msgid "Generate debug information in default extended format"
msgstr ""
-#: common.opt:1394
+#: common.opt:1495
msgid "Generate debug information in STABS format"
msgstr ""
-#: common.opt:1398
+#: common.opt:1499
msgid "Generate debug information in extended STABS format"
msgstr ""
-#: common.opt:1402
+#: common.opt:1503
+msgid "Emit DWARF additions beyond selected version"
+msgstr ""
+
+#: common.opt:1507
+msgid "Don't emit DWARF additions beyond selected version"
+msgstr ""
+
+#: common.opt:1511
+msgid "Toggle debug information generation"
+msgstr ""
+
+#: common.opt:1515
msgid "Generate debug information in VMS format"
msgstr ""
-#: common.opt:1406
+#: common.opt:1519
msgid "Generate debug information in XCOFF format"
msgstr ""
-#: common.opt:1410
+#: common.opt:1523
msgid "Generate debug information in extended XCOFF format"
msgstr ""
-#: common.opt:1414
+#: common.opt:1527
msgid "Place output into <file>"
msgstr ""
-#: common.opt:1418
+#: common.opt:1531
msgid "Enable function profiling"
msgstr ""
-#: common.opt:1422
+#: common.opt:1535
msgid "Issue warnings needed for strict compliance to the standard"
msgstr ""
-#: common.opt:1426
+#: common.opt:1539
msgid "Like -pedantic but issue them as errors"
msgstr ""
-#: common.opt:1430
+#: common.opt:1543
msgid "Do not display functions compiled or elapsed time"
msgstr ""
-#: common.opt:1434
+#: common.opt:1547
msgid "Display the compiler's version"
msgstr ""
-#: common.opt:1438
+#: common.opt:1551
msgid "Suppress warnings"
msgstr ""
-#: common.opt:1442
+#: common.opt:1555
msgid "Create a shared library"
msgstr ""
-#: common.opt:1446
+#: common.opt:1559
msgid "Create a position independent executable"
msgstr ""
-#: attribs.c:283
+#: attribs.c:293
#, gcc-internal-format
msgid "%qE attribute directive ignored"
msgstr ""
-#: attribs.c:291
+#: attribs.c:301
#, gcc-internal-format
msgid "wrong number of arguments specified for %qE attribute"
msgstr ""
-#: attribs.c:309
+#: attribs.c:319
#, gcc-internal-format
msgid "%qE attribute does not apply to types"
msgstr ""
-#: attribs.c:360
+#: attribs.c:370
#, gcc-internal-format
msgid "%qE attribute only applies to function types"
msgstr ""
-#: attribs.c:370
+#: attribs.c:380
#, gcc-internal-format
msgid "type attributes ignored after type is already defined"
msgstr ""
@@ -17669,146 +18547,143 @@ msgid ""
"branch target register load optimization is not intended to be run twice"
msgstr ""
-#: builtins.c:489
+#: builtins.c:499
#, gcc-internal-format
msgid "offset outside bounds of constant string"
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1063
#, gcc-internal-format
msgid "second argument to %<__builtin_prefetch%> must be a constant"
msgstr ""
-#: builtins.c:1059
+#: builtins.c:1070
#, gcc-internal-format
msgid "invalid second argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:1067
+#: builtins.c:1078
#, gcc-internal-format
msgid "third argument to %<__builtin_prefetch%> must be a constant"
msgstr ""
-#: builtins.c:1074
+#: builtins.c:1085
#, gcc-internal-format
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:4678
+#: builtins.c:4314
#, gcc-internal-format
msgid "argument of %<__builtin_args_info%> must be constant"
msgstr ""
-#: builtins.c:4684
+#: builtins.c:4320
#, gcc-internal-format
msgid "argument of %<__builtin_args_info%> out of range"
msgstr ""
-#: builtins.c:4690
+#: builtins.c:4326
#, gcc-internal-format
msgid "missing argument in %<__builtin_args_info%>"
msgstr ""
-#: builtins.c:4826 gimplify.c:2376
+#: builtins.c:4463 gimplify.c:2321
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr ""
-#: builtins.c:4984
+#: builtins.c:4625
#, gcc-internal-format
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:4999
+#: builtins.c:4641
#, gcc-internal-format
msgid "%qT is promoted to %qT when passed through %<...%>"
msgstr ""
-#: builtins.c:5004
+#: builtins.c:4646
#, gcc-internal-format
msgid "(so you should pass %qT not %qT to %<va_arg%>)"
msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:5011 c-typeck.c:2513
+#: builtins.c:4653 c-typeck.c:2580
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
-#: builtins.c:5135
+#: builtins.c:4780
#, gcc-internal-format
msgid "invalid argument to %<__builtin_frame_address%>"
msgstr ""
-#: builtins.c:5137
+#: builtins.c:4782
#, gcc-internal-format
msgid "invalid argument to %<__builtin_return_address%>"
msgstr ""
-#: builtins.c:5150
+#: builtins.c:4795
#, gcc-internal-format
msgid "unsupported argument to %<__builtin_frame_address%>"
msgstr ""
-#: builtins.c:5152
+#: builtins.c:4797
#, gcc-internal-format
msgid "unsupported argument to %<__builtin_return_address%>"
msgstr ""
-#: builtins.c:5698
+#: builtins.c:5333
#, gcc-internal-format
msgid "both arguments to %<__builtin___clear_cache%> must be pointers"
msgstr ""
-#: builtins.c:6060 builtins.c:6075
+#: builtins.c:5709 builtins.c:5723
#, gcc-internal-format
msgid "%qD changed semantics in GCC 4.4"
msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6461 expr.c:8053
+#: builtins.c:6113 expr.c:9162
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
#. All valid uses of __builtin_va_arg_pack_len () are removed during
#. inlining.
-#: builtins.c:6467
+#: builtins.c:6119
msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>"
msgstr ""
-#: builtins.c:6763
+#: builtins.c:6347
#, gcc-internal-format
msgid "%<__builtin_longjmp%> second argument must be 1"
msgstr ""
-#: builtins.c:7399
+#: builtins.c:6982
#, gcc-internal-format
msgid "target format does not support infinity"
msgstr ""
-#: builtins.c:11812
+#: builtins.c:11740
#, gcc-internal-format
msgid "%<va_start%> used in function with fixed args"
msgstr ""
-#: builtins.c:11820
+#: builtins.c:11748
#, gcc-internal-format
msgid "wrong number of arguments to function %<va_start%>"
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:11833
+#: builtins.c:11761
#, gcc-internal-format
msgid "%<__builtin_next_arg%> called without an argument"
msgstr ""
-#: builtins.c:11838
+#: builtins.c:11766
#, gcc-internal-format
msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgstr ""
@@ -17818,948 +18693,948 @@ msgstr ""
#. argument. We just warn and set the arg to be the last
#. argument so that we will get wrong-code because of
#. it.
-#: builtins.c:11868
+#: builtins.c:11796
#, gcc-internal-format
msgid "second parameter of %<va_start%> not last named argument"
msgstr ""
-#: builtins.c:11878
+#: builtins.c:11806
#, gcc-internal-format
msgid ""
"undefined behaviour when second parameter of %<va_start%> is declared with %"
"<register%> storage"
msgstr ""
-#: builtins.c:11993
+#: builtins.c:11922
msgid "%Kfirst argument of %D must be a pointer, second integer constant"
msgstr ""
-#: builtins.c:12006
+#: builtins.c:11935
msgid "%Klast argument of %D is not integer constant between 0 and 3"
msgstr ""
-#: builtins.c:12051 builtins.c:12216 builtins.c:12275
+#: builtins.c:11980 builtins.c:12131 builtins.c:12190
msgid "%Kcall to %D will always overflow destination buffer"
msgstr ""
-#: builtins.c:12206
+#: builtins.c:12121
msgid "%Kcall to %D might overflow destination buffer"
msgstr ""
-#: builtins.c:12296
+#: builtins.c:12211
msgid "%Kattempt to free a non-heap object %qD"
msgstr ""
-#: builtins.c:12299
+#: builtins.c:12214
msgid "%Kattempt to free a non-heap object"
msgstr ""
-#: c-common.c:1157
+#: c-common.c:990
#, gcc-internal-format
msgid "%qD is not defined outside of function scope"
msgstr ""
-#: c-common.c:1207
+#: c-common.c:1040
#, gcc-internal-format
msgid ""
"string length %qd is greater than the length %qd ISO C%d compilers are "
"required to support"
msgstr ""
-#: c-common.c:1655 c-common.c:1667
+#: c-common.c:1533 c-common.c:1545
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
-#: c-common.c:1689
+#: c-common.c:1568
#, gcc-internal-format
msgid "integer overflow in expression"
msgstr ""
-#: c-common.c:1693
+#: c-common.c:1573
#, gcc-internal-format
msgid "floating point overflow in expression"
msgstr ""
-#: c-common.c:1697
+#: c-common.c:1577
#, gcc-internal-format
msgid "fixed-point overflow in expression"
msgstr ""
-#: c-common.c:1701
+#: c-common.c:1581
#, gcc-internal-format
msgid "vector overflow in expression"
msgstr ""
-#: c-common.c:1706
+#: c-common.c:1587
#, gcc-internal-format
msgid "complex integer overflow in expression"
msgstr ""
-#: c-common.c:1708
+#: c-common.c:1590
#, gcc-internal-format
msgid "complex floating point overflow in expression"
msgstr ""
-#: c-common.c:1747
+#: c-common.c:1633
#, gcc-internal-format
msgid "logical %<or%> applied to non-boolean constant"
msgstr ""
-#: c-common.c:1750
+#: c-common.c:1636
#, gcc-internal-format
msgid "logical %<and%> applied to non-boolean constant"
msgstr ""
-#: c-common.c:1786
+#: c-common.c:1681
+#, gcc-internal-format
+msgid "logical %<or%> of collectively exhaustive tests is always true"
+msgstr ""
+
+#: c-common.c:1685
+#, gcc-internal-format
+msgid "logical %<and%> of mutually exclusive tests is always false"
+msgstr ""
+
+#: c-common.c:1720
#, gcc-internal-format
msgid "type-punning to incomplete type might break strict-aliasing rules"
msgstr ""
-#: c-common.c:1801
+#: c-common.c:1735
#, gcc-internal-format
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
msgstr ""
-#: c-common.c:1808 c-common.c:1826
+#: c-common.c:1742 c-common.c:1760
#, gcc-internal-format
msgid "dereferencing type-punned pointer might break strict-aliasing rules"
msgstr ""
-#: c-common.c:1857
+#: c-common.c:1791
#, gcc-internal-format
msgid "first argument of %q+D should be %<int%>"
msgstr ""
-#: c-common.c:1866
+#: c-common.c:1800
#, gcc-internal-format
msgid "second argument of %q+D should be %<char **%>"
msgstr ""
-#: c-common.c:1875
+#: c-common.c:1809
#, gcc-internal-format
msgid "third argument of %q+D should probably be %<char **%>"
msgstr ""
-#: c-common.c:1885
+#: c-common.c:1819
#, gcc-internal-format
msgid "%q+D takes only zero or two arguments"
msgstr ""
-#: c-common.c:1934
+#: c-common.c:1868
#, gcc-internal-format
msgid ""
"use -flax-vector-conversions to permit conversions between vectors with "
"differing element types or numbers of subparts"
msgstr ""
-#: c-common.c:2089
+#: c-common.c:2023
#, gcc-internal-format
msgid "conversion to %qT from boolean expression"
msgstr ""
-#: c-common.c:2111
+#: c-common.c:2045
#, gcc-internal-format
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-common.c:2113
+#: c-common.c:2047
#, gcc-internal-format
msgid "conversion of unsigned constant value to negative integer"
msgstr ""
-#: c-common.c:2140
+#: c-common.c:2074
#, gcc-internal-format
msgid "conversion to %qT alters %qT constant value"
msgstr ""
-#: c-common.c:2232
+#: c-common.c:2166
#, gcc-internal-format
msgid "conversion to %qT from %qT may change the sign of the result"
msgstr ""
-#: c-common.c:2264
+#: c-common.c:2198
#, gcc-internal-format
msgid "conversion to %qT from %qT may alter its value"
msgstr ""
-#: c-common.c:2292
+#: c-common.c:2226
#, gcc-internal-format
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-common.c:2298 c-common.c:2305 c-common.c:2313
+#: c-common.c:2232 c-common.c:2239 c-common.c:2247
#, gcc-internal-format
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-common.c:2484
+#: c-common.c:2420
#, gcc-internal-format
msgid "operation on %qE may be undefined"
msgstr ""
-#: c-common.c:2792
+#: c-common.c:2728
#, gcc-internal-format
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-common.c:2832
+#: c-common.c:2768
#, gcc-internal-format
msgid "case label value is less than minimum value for type"
msgstr ""
-#: c-common.c:2840
+#: c-common.c:2776
#, gcc-internal-format
msgid "case label value exceeds maximum value for type"
msgstr ""
-#: c-common.c:2848
+#: c-common.c:2784
#, gcc-internal-format
msgid "lower value in case label range less than minimum value for type"
msgstr ""
-#: c-common.c:2857
+#: c-common.c:2793
#, gcc-internal-format
msgid "upper value in case label range exceeds maximum value for type"
msgstr ""
-#: c-common.c:2931
+#: c-common.c:2867
#, gcc-internal-format
msgid ""
"GCC cannot support operators with integer types and fixed-point types that "
"have too many integral and fractional bits together"
msgstr ""
-#: c-common.c:3417
+#: c-common.c:3354
#, gcc-internal-format
msgid "invalid operands to binary %s (have %qT and %qT)"
msgstr ""
-#: c-common.c:3653
+#: c-common.c:3590
#, gcc-internal-format
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-common.c:3655
+#: c-common.c:3592
#, gcc-internal-format
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-common.c:3734
+#: c-common.c:3671
#, gcc-internal-format
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-common.c:3744
+#: c-common.c:3681
#, gcc-internal-format
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-common.c:3785
+#: c-common.c:3723
#, gcc-internal-format
msgid "pointer of type %<void *%> used in arithmetic"
msgstr ""
-#: c-common.c:3791
+#: c-common.c:3729
#, gcc-internal-format
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-common.c:3797
+#: c-common.c:3735
#, gcc-internal-format
msgid "pointer to member function used in arithmetic"
msgstr ""
-#: c-common.c:3978
+#: c-common.c:3941
#, gcc-internal-format
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-common.c:4066 cp/semantics.c:593 cp/typeck.c:6676
+#: c-common.c:4042 cp/semantics.c:594 cp/typeck.c:6810
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-common.c:4143 c-decl.c:3001 c-typeck.c:9934
+#: c-common.c:4124 c-decl.c:3581 c-typeck.c:10029
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr ""
-#: c-common.c:4360
+#: c-common.c:4338
#, gcc-internal-format
msgid "invalid application of %<sizeof%> to a function type"
msgstr ""
-#: c-common.c:4373
+#: c-common.c:4351
#, gcc-internal-format
msgid "invalid application of %qs to a void type"
msgstr ""
-#: c-common.c:4381
+#: c-common.c:4359
#, gcc-internal-format
msgid "invalid application of %qs to incomplete type %qT "
msgstr ""
-#: c-common.c:4422
+#: c-common.c:4401
#, gcc-internal-format
msgid "%<__alignof%> applied to a bit-field"
msgstr ""
-#: c-common.c:5149
+#: c-common.c:5110
#, gcc-internal-format
msgid "cannot disable built-in function %qs"
msgstr ""
-#: c-common.c:5340
+#: c-common.c:5302
#, gcc-internal-format
msgid "pointers are not permitted as case values"
msgstr ""
-#: c-common.c:5347
+#: c-common.c:5309
#, gcc-internal-format
msgid "range expressions in switch statements are non-standard"
msgstr ""
-#: c-common.c:5373
+#: c-common.c:5335
#, gcc-internal-format
msgid "empty range specified"
msgstr ""
-#: c-common.c:5433
+#: c-common.c:5395
#, gcc-internal-format
msgid "duplicate (or overlapping) case value"
msgstr ""
-#: c-common.c:5434
+#: c-common.c:5397
#, gcc-internal-format
-msgid "%Jthis is the first entry overlapping that value"
+msgid "this is the first entry overlapping that value"
msgstr ""
-#: c-common.c:5438
+#: c-common.c:5401
#, gcc-internal-format
msgid "duplicate case value"
msgstr ""
-#: c-common.c:5439
+#: c-common.c:5402
#, gcc-internal-format
-msgid "%Jpreviously used here"
+msgid "previously used here"
msgstr ""
-#: c-common.c:5443
+#: c-common.c:5406
#, gcc-internal-format
msgid "multiple default labels in one switch"
msgstr ""
-#: c-common.c:5444
+#: c-common.c:5408
#, gcc-internal-format
-msgid "%Jthis is the first default label"
+msgid "this is the first default label"
msgstr ""
-#: c-common.c:5495
+#: c-common.c:5460
#, gcc-internal-format
-msgid "%Jcase value %qs not in enumerated type"
+msgid "case value %qs not in enumerated type"
msgstr ""
-#: c-common.c:5499
+#: c-common.c:5465
#, gcc-internal-format
-msgid "%Jcase value %qs not in enumerated type %qT"
+msgid "case value %qs not in enumerated type %qT"
msgstr ""
-#: c-common.c:5558
+#: c-common.c:5524
#, gcc-internal-format
-msgid "%Hswitch missing default case"
+msgid "switch missing default case"
msgstr ""
-#: c-common.c:5629
+#: c-common.c:5596
#, gcc-internal-format
-msgid "%Henumeration value %qE not handled in switch"
+msgid "enumeration value %qE not handled in switch"
msgstr ""
-#: c-common.c:5664
+#: c-common.c:5622
#, gcc-internal-format
msgid "taking the address of a label is non-standard"
msgstr ""
-#: c-common.c:5837
+#: c-common.c:5795
#, gcc-internal-format
msgid "%qE attribute ignored for field of type %qT"
msgstr ""
-#: c-common.c:5848 c-common.c:5867 c-common.c:5885 c-common.c:5912
-#: c-common.c:5939 c-common.c:5965 c-common.c:5984 c-common.c:6008
-#: c-common.c:6031 c-common.c:6054 c-common.c:6075 c-common.c:6096
-#: c-common.c:6120 c-common.c:6146 c-common.c:6183 c-common.c:6210
-#: c-common.c:6253 c-common.c:6337 c-common.c:6367 c-common.c:6387
-#: c-common.c:6722 c-common.c:6738 c-common.c:6786 c-common.c:6809
-#: c-common.c:6873 c-common.c:7001 c-common.c:7067 c-common.c:7111
-#: c-common.c:7157 c-common.c:7235 c-common.c:7259 c-common.c:7545
-#: c-common.c:7568 c-common.c:7607 c-common.c:7696 c-common.c:7836 tree.c:4066
-#: tree.c:4078 tree.c:4088 config/darwin.c:1437 config/arm/arm.c:3299
-#: config/arm/arm.c:3327 config/avr/avr.c:4807 config/h8300/h8300.c:5283
-#: config/h8300/h8300.c:5307 config/i386/i386.c:4286 config/i386/i386.c:26894
-#: config/ia64/ia64.c:621 config/m68hc11/m68hc11.c:1110
-#: config/rs6000/rs6000.c:20744 config/spu/spu.c:3784
-#: ada/gcc-interface/utils.c:5036 ada/gcc-interface/utils.c:5209
-#: ada/gcc-interface/utils.c:5228
+#: c-common.c:5806 c-common.c:5825 c-common.c:5843 c-common.c:5870
+#: c-common.c:5897 c-common.c:5923 c-common.c:5942 c-common.c:5959
+#: c-common.c:5983 c-common.c:6006 c-common.c:6029 c-common.c:6050
+#: c-common.c:6071 c-common.c:6095 c-common.c:6121 c-common.c:6158
+#: c-common.c:6185 c-common.c:6228 c-common.c:6312 c-common.c:6342
+#: c-common.c:6362 c-common.c:6699 c-common.c:6715 c-common.c:6763
+#: c-common.c:6786 c-common.c:6850 c-common.c:6978 c-common.c:7046
+#: c-common.c:7090 c-common.c:7138 c-common.c:7216 c-common.c:7240
+#: c-common.c:7526 c-common.c:7549 c-common.c:7588 c-common.c:7677
+#: c-common.c:7817 tree.c:5305 tree.c:5317 tree.c:5327 config/darwin.c:1437
+#: config/arm/arm.c:4504 config/arm/arm.c:4532 config/arm/arm.c:4549
+#: config/avr/avr.c:4658 config/h8300/h8300.c:5362 config/h8300/h8300.c:5386
+#: config/i386/i386.c:4403 config/i386/i386.c:26515 config/ia64/ia64.c:631
+#: config/m68hc11/m68hc11.c:1142 config/rs6000/rs6000.c:23362
+#: config/spu/spu.c:3809
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr ""
-#: c-common.c:5930 c-common.c:5956
+#: c-common.c:5888 c-common.c:5914
#, gcc-internal-format
msgid "%qE attribute conflicts with attribute %s"
msgstr ""
-#: c-common.c:6177
+#: c-common.c:6152
#, gcc-internal-format
msgid "%qE attribute have effect only on public objects"
msgstr ""
-#: c-common.c:6274
+#: c-common.c:6249
#, gcc-internal-format
msgid "destructor priorities are not supported"
msgstr ""
-#: c-common.c:6276
+#: c-common.c:6251
#, gcc-internal-format
msgid "constructor priorities are not supported"
msgstr ""
-#: c-common.c:6293
+#: c-common.c:6268
#, gcc-internal-format
msgid "destructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-common.c:6298
+#: c-common.c:6273
#, gcc-internal-format
msgid "constructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-common.c:6306
+#: c-common.c:6281
#, gcc-internal-format
msgid "destructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-common.c:6309
+#: c-common.c:6284
#, gcc-internal-format
msgid "constructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-common.c:6431
+#: c-common.c:6406
#, gcc-internal-format
msgid "unknown machine mode %qE"
msgstr ""
-#: c-common.c:6460
+#: c-common.c:6435
#, gcc-internal-format
msgid "specifying vector types with __attribute__ ((mode)) is deprecated"
msgstr ""
-#: c-common.c:6463
+#: c-common.c:6438
#, gcc-internal-format
msgid "use __attribute__ ((vector_size)) instead"
msgstr ""
-#: c-common.c:6472
+#: c-common.c:6447
#, gcc-internal-format
msgid "unable to emulate %qs"
msgstr ""
-#: c-common.c:6482
+#: c-common.c:6457
#, gcc-internal-format
msgid "invalid pointer mode %qs"
msgstr ""
-#: c-common.c:6499
+#: c-common.c:6474
#, gcc-internal-format
msgid "signness of type and machine mode %qs don't match"
msgstr ""
-#: c-common.c:6510
+#: c-common.c:6485
#, gcc-internal-format
msgid "no data type for mode %qs"
msgstr ""
-#: c-common.c:6520
+#: c-common.c:6495
#, gcc-internal-format
msgid "cannot use mode %qs for enumeral types"
msgstr ""
-#: c-common.c:6547
+#: c-common.c:6522
#, gcc-internal-format
msgid "mode %qs applied to inappropriate type"
msgstr ""
-#: c-common.c:6578
+#: c-common.c:6554
#, gcc-internal-format
-msgid "%Jsection attribute cannot be specified for local variables"
+msgid "section attribute cannot be specified for local variables"
msgstr ""
-#: c-common.c:6589 config/bfin/bfin.c:5371 config/bfin/bfin.c:5422
+#: c-common.c:6565 config/bfin/bfin.c:5647 config/bfin/bfin.c:5698
+#: config/bfin/bfin.c:5725 config/bfin/bfin.c:5738
#, gcc-internal-format
msgid "section of %q+D conflicts with previous declaration"
msgstr ""
-#: c-common.c:6597
+#: c-common.c:6573
#, gcc-internal-format
msgid "section of %q+D cannot be overridden"
msgstr ""
-#: c-common.c:6605
+#: c-common.c:6581
#, gcc-internal-format
msgid "section attribute not allowed for %q+D"
msgstr ""
-#: c-common.c:6611
+#: c-common.c:6588
#, gcc-internal-format
-msgid "%Jsection attributes are not supported for this target"
+msgid "section attributes are not supported for this target"
msgstr ""
-#: c-common.c:6643
+#: c-common.c:6620
#, gcc-internal-format
msgid "requested alignment is not a constant"
msgstr ""
-#: c-common.c:6648
+#: c-common.c:6625
#, gcc-internal-format
msgid "requested alignment is not a power of 2"
msgstr ""
-#: c-common.c:6653
+#: c-common.c:6630
#, gcc-internal-format
msgid "requested alignment is too large"
msgstr ""
-#: c-common.c:6679
+#: c-common.c:6656
#, gcc-internal-format
msgid "alignment may not be specified for %q+D"
msgstr ""
-#: c-common.c:6686
+#: c-common.c:6663
#, gcc-internal-format
msgid ""
"alignment for %q+D was previously specified as %d and may not be decreased"
msgstr ""
-#: c-common.c:6690
+#: c-common.c:6667
#, gcc-internal-format
msgid "alignment for %q+D must be at least %d"
msgstr ""
-#: c-common.c:6715
+#: c-common.c:6692
#, gcc-internal-format
msgid "inline function %q+D cannot be declared weak"
msgstr ""
-#: c-common.c:6749
+#: c-common.c:6726
#, gcc-internal-format
msgid "%q+D defined both normally and as an alias"
msgstr ""
-#: c-common.c:6765
+#: c-common.c:6742
#, gcc-internal-format
msgid "alias argument not a string"
msgstr ""
-#: c-common.c:6830
+#: c-common.c:6808
#, gcc-internal-format
-msgid "%Jweakref attribute must appear before alias attribute"
+msgid "weakref attribute must appear before alias attribute"
msgstr ""
-#: c-common.c:6860
+#: c-common.c:6837
#, gcc-internal-format
msgid "%qE attribute ignored on non-class types"
msgstr ""
-#: c-common.c:6866
+#: c-common.c:6843
#, gcc-internal-format
msgid "%qE attribute ignored because %qT is already defined"
msgstr ""
-#: c-common.c:6879
+#: c-common.c:6856
#, gcc-internal-format
msgid "visibility argument not a string"
msgstr ""
-#: c-common.c:6891
+#: c-common.c:6868
#, gcc-internal-format
msgid "%qE attribute ignored on types"
msgstr ""
-#: c-common.c:6907
+#: c-common.c:6884
#, gcc-internal-format
msgid ""
"visibility argument must be one of \"default\", \"hidden\", \"protected\" or "
"\"internal\""
msgstr ""
-#: c-common.c:6918
+#: c-common.c:6895
#, gcc-internal-format
msgid "%qD redeclared with different visibility"
msgstr ""
-#: c-common.c:6921 c-common.c:6925
+#: c-common.c:6898 c-common.c:6902
#, gcc-internal-format
msgid "%qD was declared %qs which implies default visibility"
msgstr ""
-#: c-common.c:7009
+#: c-common.c:6986
#, gcc-internal-format
msgid "tls_model argument not a string"
msgstr ""
-#: c-common.c:7022
+#: c-common.c:6999
#, gcc-internal-format
msgid ""
"tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-"
"dynamic\" or \"global-dynamic\""
msgstr ""
-#: c-common.c:7041 c-common.c:7131
+#: c-common.c:7019 c-common.c:7111 config/m32c/m32c.c:2832
#, gcc-internal-format
-msgid "%J%qE attribute applies only to functions"
+msgid "%qE attribute applies only to functions"
msgstr ""
-#: c-common.c:7046 c-common.c:7136
+#: c-common.c:7025 c-common.c:7117
#, gcc-internal-format
-msgid "%Jcan%'t set %qE attribute after definition"
+msgid "can%'t set %qE attribute after definition"
msgstr ""
-#: c-common.c:7092
+#: c-common.c:7071
#, gcc-internal-format
msgid "alloc_size parameter outside range"
msgstr ""
-#: c-common.c:7193
+#: c-common.c:7174
#, gcc-internal-format
msgid "deprecated message is not a string"
msgstr ""
-#: c-common.c:7233
+#: c-common.c:7214
#, gcc-internal-format
msgid "%qE attribute ignored for %qE"
msgstr ""
-#: c-common.c:7293
+#: c-common.c:7274
#, gcc-internal-format
msgid "invalid vector type for attribute %qE"
msgstr ""
-#: c-common.c:7299
+#: c-common.c:7280 ada/gcc-interface/utils.c:5457
+#: ada/gcc-interface/utils.c:5551
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-common.c:7305
+#: c-common.c:7286 ada/gcc-interface/utils.c:5463
+#: ada/gcc-interface/utils.c:5557
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-common.c:7313
+#: c-common.c:7294 ada/gcc-interface/utils.c:5471
+#: ada/gcc-interface/utils.c:5564
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-common.c:7341 ada/gcc-interface/utils.c:5087
+#: c-common.c:7322 ada/gcc-interface/utils.c:5211
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-common.c:7356 ada/gcc-interface/utils.c:5102
+#: c-common.c:7337 ada/gcc-interface/utils.c:5226
#, gcc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-common.c:7375 ada/gcc-interface/utils.c:5121
+#: c-common.c:7356 ada/gcc-interface/utils.c:5245
#, gcc-internal-format
msgid ""
"nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-common.c:7383 ada/gcc-interface/utils.c:5129
+#: c-common.c:7364 ada/gcc-interface/utils.c:5253
#, gcc-internal-format
msgid ""
"nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
-#: c-common.c:7459
+#: c-common.c:7440
#, gcc-internal-format
msgid "not enough variable arguments to fit a sentinel"
msgstr ""
-#: c-common.c:7473
+#: c-common.c:7454
#, gcc-internal-format
msgid "missing sentinel in function call"
msgstr ""
-#: c-common.c:7514
+#: c-common.c:7495
#, gcc-internal-format
msgid "null argument where non-null required (argument %lu)"
msgstr ""
-#: c-common.c:7579
+#: c-common.c:7560
#, gcc-internal-format
msgid "cleanup argument not an identifier"
msgstr ""
-#: c-common.c:7586
+#: c-common.c:7567
#, gcc-internal-format
msgid "cleanup argument not a function"
msgstr ""
-#: c-common.c:7625 ada/gcc-interface/utils.c:5151
+#: c-common.c:7606
#, gcc-internal-format
msgid "%qE attribute requires prototypes with named arguments"
msgstr ""
-#: c-common.c:7636 ada/gcc-interface/utils.c:5162
+#: c-common.c:7617
#, gcc-internal-format
msgid "%qE attribute only applies to variadic functions"
msgstr ""
-#: c-common.c:7648 ada/gcc-interface/utils.c:5173
+#: c-common.c:7629 ada/gcc-interface/utils.c:5299
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr ""
-#: c-common.c:7656 ada/gcc-interface/utils.c:5180
+#: c-common.c:7637 ada/gcc-interface/utils.c:5306
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
-#: c-common.c:7780
+#: c-common.c:7761
#, gcc-internal-format
msgid "Bad option %s to optimize attribute."
msgstr ""
-#: c-common.c:7783
+#: c-common.c:7764
#, gcc-internal-format
msgid "Bad option %s to pragma attribute"
msgstr ""
-#: c-common.c:7976
+#: c-common.c:7957
#, gcc-internal-format
msgid "not enough arguments to function %qE"
msgstr ""
-#: c-common.c:7981 c-typeck.c:2664
+#: c-common.c:7962 c-typeck.c:2732
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr ""
-#: c-common.c:8011 c-common.c:8057
+#: c-common.c:7992 c-common.c:8038
#, gcc-internal-format
msgid "non-floating-point argument in call to function %qE"
msgstr ""
-#: c-common.c:8034
+#: c-common.c:8015
#, gcc-internal-format
msgid "non-floating-point arguments in call to function %qE"
msgstr ""
-#: c-common.c:8050
+#: c-common.c:8031
#, gcc-internal-format
msgid "non-const integer argument %u in call to function %qE"
msgstr ""
-#: c-common.c:8343
-#, gcc-internal-format
-msgid ""
-"%Hignoring return value of %qD, declared with attribute warn_unused_result"
-msgstr ""
-
-#: c-common.c:8347
-#, gcc-internal-format
-msgid ""
-"%Hignoring return value of function declared with attribute "
-"warn_unused_result"
-msgstr ""
-
-#: c-common.c:8401
+#: c-common.c:8320
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to static data member %qD"
msgstr ""
-#: c-common.c:8406
+#: c-common.c:8325
#, gcc-internal-format
msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
msgstr ""
-#: c-common.c:8427 cp/typeck.c:4708
+#: c-common.c:8346 cp/typeck.c:4778
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr ""
-#: c-common.c:8480
+#: c-common.c:8400
#, gcc-internal-format
msgid "lvalue required as left operand of assignment"
msgstr ""
-#: c-common.c:8483
+#: c-common.c:8403
#, gcc-internal-format
msgid "lvalue required as increment operand"
msgstr ""
-#: c-common.c:8486
+#: c-common.c:8406
#, gcc-internal-format
msgid "lvalue required as decrement operand"
msgstr ""
-#: c-common.c:8489
+#: c-common.c:8409
#, gcc-internal-format
msgid "lvalue required as unary %<&%> operand"
msgstr ""
-#: c-common.c:8492
+#: c-common.c:8412
#, gcc-internal-format
msgid "lvalue required in asm statement"
msgstr ""
-#: c-common.c:8621
+#: c-common.c:8542
#, gcc-internal-format
msgid "size of array is too large"
msgstr ""
-#: c-common.c:8657 c-common.c:8708 c-typeck.c:2883
+#: c-common.c:8578 c-common.c:8629 c-typeck.c:2954
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr ""
-#: c-common.c:8674 c-typeck.c:4972
+#: c-common.c:8595 c-typeck.c:5165 config/mep/mep.c:6340
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr ""
-#: c-common.c:8869
+#: c-common.c:8792
#, gcc-internal-format
msgid "array subscript has type %<char%>"
msgstr ""
-#: c-common.c:8904
+#: c-common.c:8827
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<<<%>"
msgstr ""
-#: c-common.c:8907
+#: c-common.c:8830
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<<<%>"
msgstr ""
-#: c-common.c:8913
+#: c-common.c:8836
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<>>%>"
msgstr ""
-#: c-common.c:8916
+#: c-common.c:8839
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<>>%>"
msgstr ""
-#: c-common.c:8922
+#: c-common.c:8845
#, gcc-internal-format
msgid "suggest parentheses around %<&&%> within %<||%>"
msgstr ""
-#: c-common.c:8931
+#: c-common.c:8854
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<|%>"
msgstr ""
-#: c-common.c:8936
+#: c-common.c:8859
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<|%>"
msgstr ""
-#: c-common.c:8940
+#: c-common.c:8863
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%"
"> to %<~%>"
msgstr ""
-#: c-common.c:8950
+#: c-common.c:8873
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<^%>"
msgstr ""
-#: c-common.c:8955
+#: c-common.c:8878
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<^%>"
msgstr ""
-#: c-common.c:8961
+#: c-common.c:8884
#, gcc-internal-format
msgid "suggest parentheses around %<+%> in operand of %<&%>"
msgstr ""
-#: c-common.c:8964
+#: c-common.c:8887
#, gcc-internal-format
msgid "suggest parentheses around %<-%> in operand of %<&%>"
msgstr ""
-#: c-common.c:8969
+#: c-common.c:8892
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<&%>"
msgstr ""
-#: c-common.c:8973
+#: c-common.c:8896
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%"
"> to %<~%>"
msgstr ""
-#: c-common.c:8981
+#: c-common.c:8904
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<==%>"
msgstr ""
-#: c-common.c:8987
+#: c-common.c:8910
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<!=%>"
msgstr ""
-#: c-common.c:8998
+#: c-common.c:8921
#, gcc-internal-format
msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning"
msgstr ""
-#: c-common.c:9013
+#: c-common.c:8936
#, gcc-internal-format
msgid "label %q+D defined but not used"
msgstr ""
-#: c-common.c:9015
+#: c-common.c:8938
#, gcc-internal-format
msgid "label %q+D declared but not defined"
msgstr ""
-#: c-common.c:9035
+#: c-common.c:8958
#, gcc-internal-format
msgid "division by zero"
msgstr ""
-#: c-common.c:9067
+#: c-common.c:8990
#, gcc-internal-format
msgid "comparison between types %qT and %qT"
msgstr ""
-#: c-common.c:9118
+#: c-common.c:9041
#, gcc-internal-format
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: c-common.c:9169
+#: c-common.c:9092
#, gcc-internal-format
msgid "promoted ~unsigned is always non-zero"
msgstr ""
-#: c-common.c:9172
+#: c-common.c:9095
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-common.c:9182
+#: c-common.c:9105
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
@@ -18769,132 +19644,137 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:98 c-typeck.c:1788 c-typeck.c:4591 cp/typeck.c:1619
-#: cp/typeck.c:5974 cp/typeck.c:6584 fortran/convert.c:88
+#: c-convert.c:102 c-typeck.c:1834 c-typeck.c:4778 cp/typeck.c:1632
+#: cp/typeck.c:6094 cp/typeck.c:6715 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
-#: c-convert.c:152 fortran/convert.c:121 java/typeck.c:151
+#: c-convert.c:156 fortran/convert.c:121 java/typeck.c:151
#, gcc-internal-format
msgid "conversion to non-scalar type requested"
msgstr ""
-#: c-decl.c:578
+#: c-decl.c:696
#, gcc-internal-format
msgid "array %q+D assumed to have one element"
msgstr ""
-#: c-decl.c:619
+#: c-decl.c:737
#, gcc-internal-format
msgid "%qD is static but used in inline function %qD which is not static"
msgstr ""
-#: c-decl.c:624
+#: c-decl.c:742
#, gcc-internal-format
msgid "%q+D is static but declared in inline function %qD which is not static"
msgstr ""
-#: c-decl.c:769
+#: c-decl.c:954
#, gcc-internal-format
msgid "GCC supports only %u nested scopes"
msgstr ""
-#: c-decl.c:855 cp/decl.c:356
+#: c-decl.c:1102 cp/decl.c:356
#, gcc-internal-format
msgid "label %q+D used but not defined"
msgstr ""
-#: c-decl.c:896
+#: c-decl.c:1147
#, gcc-internal-format
msgid "nested function %q+D declared but never defined"
msgstr ""
-#: c-decl.c:908
+#: c-decl.c:1159
#, gcc-internal-format
msgid "inline function %q+D declared but never defined"
msgstr ""
-#: c-decl.c:923 cp/decl.c:601
+#: c-decl.c:1174 cp/decl.c:601
#, gcc-internal-format
msgid "unused variable %q+D"
msgstr ""
-#: c-decl.c:927
+#: c-decl.c:1178
#, gcc-internal-format
msgid "type of array %q+D completed incompatibly with implicit initialization"
msgstr ""
-#: c-decl.c:1177
+#: c-decl.c:1462 c-decl.c:5571 c-decl.c:6349 c-decl.c:6950
+#, gcc-internal-format
+msgid "originally defined here"
+msgstr ""
+
+#: c-decl.c:1533
#, gcc-internal-format
msgid ""
"a parameter list with an ellipsis can%'t match an empty parameter name list "
"declaration"
msgstr ""
-#: c-decl.c:1184
+#: c-decl.c:1540
#, gcc-internal-format
msgid ""
"an argument type that has a default promotion can%'t match an empty "
"parameter name list declaration"
msgstr ""
-#: c-decl.c:1225
+#: c-decl.c:1581
#, gcc-internal-format
msgid ""
"prototype for %q+D declares more arguments than previous old-style definition"
msgstr ""
-#: c-decl.c:1231
+#: c-decl.c:1587
#, gcc-internal-format
msgid ""
"prototype for %q+D declares fewer arguments than previous old-style "
"definition"
msgstr ""
-#: c-decl.c:1240
+#: c-decl.c:1596
#, gcc-internal-format
msgid "prototype for %q+D declares argument %d with incompatible type"
msgstr ""
#. If we get here, no errors were found, but do issue a warning
#. for this poor-style construct.
-#: c-decl.c:1253
+#: c-decl.c:1609
#, gcc-internal-format
msgid "prototype for %q+D follows non-prototype definition"
msgstr ""
-#: c-decl.c:1268
+#: c-decl.c:1624
#, gcc-internal-format
msgid "previous definition of %q+D was here"
msgstr ""
-#: c-decl.c:1270
+#: c-decl.c:1626
#, gcc-internal-format
msgid "previous implicit declaration of %q+D was here"
msgstr ""
-#: c-decl.c:1272
+#: c-decl.c:1628
#, gcc-internal-format
msgid "previous declaration of %q+D was here"
msgstr ""
-#: c-decl.c:1312
+#: c-decl.c:1668
#, gcc-internal-format
msgid "%q+D redeclared as different kind of symbol"
msgstr ""
-#: c-decl.c:1316
+#: c-decl.c:1672
#, gcc-internal-format
msgid "built-in function %q+D declared as non-function"
msgstr ""
-#: c-decl.c:1319 c-decl.c:1439 c-decl.c:2113
+#: c-decl.c:1675 c-decl.c:1795 c-decl.c:2483
#, gcc-internal-format
msgid "declaration of %q+D shadows a built-in function"
msgstr ""
-#: c-decl.c:1328
+#: c-decl.c:1684
#, gcc-internal-format
msgid "redeclaration of enumerator %q+D"
msgstr ""
@@ -18902,269 +19782,298 @@ msgstr ""
#. 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:1349
+#: c-decl.c:1705
#, gcc-internal-format
msgid "conflicting types for built-in function %q+D"
msgstr ""
-#: c-decl.c:1374 c-decl.c:1387 c-decl.c:1396
+#: c-decl.c:1730 c-decl.c:1743 c-decl.c:1752
#, gcc-internal-format
msgid "conflicting types for %q+D"
msgstr ""
-#: c-decl.c:1394
+#: c-decl.c:1750
#, gcc-internal-format
msgid "conflicting type qualifiers for %q+D"
msgstr ""
#. Allow OLDDECL to continue in use.
-#: c-decl.c:1414
+#: c-decl.c:1770
#, gcc-internal-format
msgid "redefinition of typedef %q+D"
msgstr ""
-#: c-decl.c:1465 c-decl.c:1567
+#: c-decl.c:1821 c-decl.c:1924
#, gcc-internal-format
msgid "redefinition of %q+D"
msgstr ""
-#: c-decl.c:1500 c-decl.c:1605
+#: c-decl.c:1856 c-decl.c:1962
#, gcc-internal-format
msgid "static declaration of %q+D follows non-static declaration"
msgstr ""
-#: c-decl.c:1510 c-decl.c:1518 c-decl.c:1595 c-decl.c:1602
+#: c-decl.c:1866 c-decl.c:1874 c-decl.c:1952 c-decl.c:1959
#, gcc-internal-format
msgid "non-static declaration of %q+D follows static declaration"
msgstr ""
-#: c-decl.c:1534
+#: c-decl.c:1890
#, gcc-internal-format
msgid "%<gnu_inline%> attribute present on %q+D"
msgstr ""
-#: c-decl.c:1536
+#: c-decl.c:1893
#, gcc-internal-format
-msgid "%Jbut not here"
+msgid "but not here"
msgstr ""
-#: c-decl.c:1554
+#: c-decl.c:1911
#, gcc-internal-format
msgid "thread-local declaration of %q+D follows non-thread-local declaration"
msgstr ""
-#: c-decl.c:1557
+#: c-decl.c:1914
#, gcc-internal-format
msgid "non-thread-local declaration of %q+D follows thread-local declaration"
msgstr ""
-#: c-decl.c:1587
+#: c-decl.c:1944
#, gcc-internal-format
msgid "extern declaration of %q+D follows declaration with no linkage"
msgstr ""
-#: c-decl.c:1623
+#: c-decl.c:1980
#, gcc-internal-format
msgid "declaration of %q+D with no linkage follows extern declaration"
msgstr ""
-#: c-decl.c:1629
+#: c-decl.c:1986
#, gcc-internal-format
msgid "redeclaration of %q+D with no linkage"
msgstr ""
-#: c-decl.c:1643
+#: c-decl.c:2012
#, gcc-internal-format
msgid ""
"redeclaration of %q+D with different visibility (old visibility preserved)"
msgstr ""
-#: c-decl.c:1654
+#: c-decl.c:2023
#, gcc-internal-format
msgid "inline declaration of %qD follows declaration with attribute noinline"
msgstr ""
-#: c-decl.c:1661
+#: c-decl.c:2030
#, gcc-internal-format
msgid "declaration of %q+D with attribute noinline follows inline declaration "
msgstr ""
-#: c-decl.c:1679
+#: c-decl.c:2048
#, gcc-internal-format
msgid "redefinition of parameter %q+D"
msgstr ""
-#: c-decl.c:1706
+#: c-decl.c:2075
#, gcc-internal-format
msgid "redundant redeclaration of %q+D"
msgstr ""
-#: c-decl.c:2100
+#: c-decl.c:2470
#, gcc-internal-format
msgid "declaration of %q+D shadows previous non-variable"
msgstr ""
-#: c-decl.c:2105
+#: c-decl.c:2475
#, gcc-internal-format
msgid "declaration of %q+D shadows a parameter"
msgstr ""
-#: c-decl.c:2108
+#: c-decl.c:2478
#, gcc-internal-format
msgid "declaration of %q+D shadows a global declaration"
msgstr ""
-#: c-decl.c:2118
+#: c-decl.c:2488
#, gcc-internal-format
msgid "declaration of %q+D shadows a previous local"
msgstr ""
-#: c-decl.c:2121 cp/name-lookup.c:1048 cp/name-lookup.c:1079
+#: c-decl.c:2492 cp/name-lookup.c:1045 cp/name-lookup.c:1078
#: cp/name-lookup.c:1087
#, gcc-internal-format
-msgid "%Jshadowed declaration is here"
+msgid "shadowed declaration is here"
msgstr ""
-#: c-decl.c:2254
+#: c-decl.c:2619
#, gcc-internal-format
msgid "nested extern declaration of %qD"
msgstr ""
-#: c-decl.c:2422 c-decl.c:2425
+#: c-decl.c:2787 c-decl.c:2790
#, gcc-internal-format
msgid "implicit declaration of function %qE"
msgstr ""
-#: c-decl.c:2488
+#: c-decl.c:2853
#, gcc-internal-format
msgid "incompatible implicit declaration of built-in function %qD"
msgstr ""
-#: c-decl.c:2497
+#: c-decl.c:2862
#, gcc-internal-format
msgid "incompatible implicit declaration of function %qD"
msgstr ""
-#: c-decl.c:2551
+#: c-decl.c:2915
#, gcc-internal-format
-msgid "%H%qE undeclared here (not in a function)"
+msgid "%qE undeclared here (not in a function)"
msgstr ""
-#: c-decl.c:2556
+#: c-decl.c:2920
#, gcc-internal-format
-msgid "%H%qE undeclared (first use in this function)"
+msgid "%qE undeclared (first use in this function)"
msgstr ""
-#: c-decl.c:2560
+#: c-decl.c:2924
#, gcc-internal-format
-msgid "%H(Each undeclared identifier is reported only once"
+msgid "(Each undeclared identifier is reported only once"
msgstr ""
-#: c-decl.c:2561
+#: c-decl.c:2925
#, gcc-internal-format
-msgid "%Hfor each function it appears in.)"
+msgid "for each function it appears in.)"
msgstr ""
-#: c-decl.c:2600 cp/decl.c:2404
+#: c-decl.c:2974 cp/decl.c:2439
#, gcc-internal-format
msgid "label %qE referenced outside of any function"
msgstr ""
-#: c-decl.c:2642
+#: c-decl.c:3010
#, gcc-internal-format
-msgid "duplicate label declaration %qE"
+msgid "jump into scope of identifier with variably modified type"
msgstr ""
-#: c-decl.c:2678
+#: c-decl.c:3013
#, gcc-internal-format
-msgid "%Hduplicate label %qD"
+msgid "jump skips variable initialization"
msgstr ""
-#: c-decl.c:2688
+#: c-decl.c:3014 c-decl.c:3070 c-decl.c:3155
#, gcc-internal-format
-msgid "%Jjump into statement expression"
+msgid "label %qD defined here"
msgstr ""
-#: c-decl.c:2690
+#: c-decl.c:3015 c-decl.c:3279
#, gcc-internal-format
-msgid "%Jjump into scope of identifier with variably modified type"
+msgid "%qD declared here"
msgstr ""
-#: c-decl.c:2705
+#: c-decl.c:3069 c-decl.c:3154
+#, gcc-internal-format
+msgid "jump into statement expression"
+msgstr ""
+
+#: c-decl.c:3091
+#, gcc-internal-format
+msgid "duplicate label declaration %qE"
+msgstr ""
+
+#: c-decl.c:3185 cp/decl.c:2748
+#, gcc-internal-format
+msgid "duplicate label %qD"
+msgstr ""
+
+#: c-decl.c:3216
#, gcc-internal-format
msgid ""
-"%Htraditional C lacks a separate namespace for labels, identifier %qE "
-"conflicts"
+"traditional C lacks a separate namespace for labels, identifier %qE conflicts"
msgstr ""
-#: c-decl.c:2780
+#: c-decl.c:3277
#, gcc-internal-format
-msgid "%H%qE defined as wrong kind of tag"
+msgid "switch jumps over variable initialization"
msgstr ""
-#: c-decl.c:3011
+#: c-decl.c:3278 c-decl.c:3289
+#, gcc-internal-format
+msgid "switch starts here"
+msgstr ""
+
+#: c-decl.c:3288
+#, gcc-internal-format
+msgid "switch jumps into statement expression"
+msgstr ""
+
+#: c-decl.c:3359
+#, gcc-internal-format
+msgid "%qE defined as wrong kind of tag"
+msgstr ""
+
+#: c-decl.c:3591
#, gcc-internal-format
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c-decl.c:3020
+#: c-decl.c:3600
#, gcc-internal-format
msgid "empty declaration with storage class specifier does not redeclare tag"
msgstr ""
-#: c-decl.c:3032
+#: c-decl.c:3612
#, gcc-internal-format
msgid "empty declaration with type qualifier does not redeclare tag"
msgstr ""
-#: c-decl.c:3054 c-decl.c:3061
+#: c-decl.c:3634 c-decl.c:3641
#, gcc-internal-format
msgid "useless type name in empty declaration"
msgstr ""
-#: c-decl.c:3069
+#: c-decl.c:3649
#, gcc-internal-format
msgid "%<inline%> in empty declaration"
msgstr ""
-#: c-decl.c:3075
+#: c-decl.c:3655
#, gcc-internal-format
msgid "%<auto%> in file-scope empty declaration"
msgstr ""
-#: c-decl.c:3081
+#: c-decl.c:3661
#, gcc-internal-format
msgid "%<register%> in file-scope empty declaration"
msgstr ""
-#: c-decl.c:3087
+#: c-decl.c:3667
#, gcc-internal-format
msgid "useless storage class specifier in empty declaration"
msgstr ""
-#: c-decl.c:3093
+#: c-decl.c:3673
#, gcc-internal-format
msgid "useless %<__thread%> in empty declaration"
msgstr ""
-#: c-decl.c:3101
+#: c-decl.c:3681
#, gcc-internal-format
msgid "useless type qualifier in empty declaration"
msgstr ""
-#: c-decl.c:3108 c-parser.c:1176
+#: c-decl.c:3688 c-parser.c:1181
#, gcc-internal-format
msgid "empty declaration"
msgstr ""
-#: c-decl.c:3175
+#: c-decl.c:3758
#, gcc-internal-format
msgid ""
"ISO C90 does not support %<static%> or type qualifiers in parameter array "
"declarators"
msgstr ""
-#: c-decl.c:3179
+#: c-decl.c:3762
#, gcc-internal-format
msgid "ISO C90 does not support %<[*]%> array declarators"
msgstr ""
@@ -19172,263 +20081,273 @@ msgstr ""
#. C99 6.7.5.2p4
#. A function definition isn't function prototype scope C99 6.2.1p4.
#. C99 6.7.5.2p4
-#: c-decl.c:3186 c-decl.c:5294
+#: c-decl.c:3769 c-decl.c:5945
#, gcc-internal-format
msgid "%<[*]%> not allowed in other than function prototype scope"
msgstr ""
-#: c-decl.c:3298
+#: c-decl.c:3882
#, gcc-internal-format
msgid "%q+D is usually a function"
msgstr ""
-#: c-decl.c:3307 cp/decl2.c:781
+#: c-decl.c:3891 cp/decl2.c:782
#, gcc-internal-format
msgid "typedef %qD is initialized (use __typeof__ instead)"
msgstr ""
-#: c-decl.c:3312
+#: c-decl.c:3896
#, gcc-internal-format
msgid "function %qD is initialized like a variable"
msgstr ""
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:3318
+#: c-decl.c:3902
#, gcc-internal-format
msgid "parameter %qD is initialized"
msgstr ""
-#: c-decl.c:3343
+#: c-decl.c:3927
#, gcc-internal-format
msgid "variable %qD has initializer but incomplete type"
msgstr ""
-#: c-decl.c:3432 c-decl.c:6429 cp/decl.c:4104 cp/decl.c:11493
+#: c-decl.c:4016 cp/decl.c:4152 cp/decl.c:11602
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr ""
-#: c-decl.c:3536
+#: c-decl.c:4113
#, gcc-internal-format
msgid "initializer fails to determine size of %q+D"
msgstr ""
-#: c-decl.c:3541
+#: c-decl.c:4118
#, gcc-internal-format
msgid "array size missing in %q+D"
msgstr ""
-#: c-decl.c:3553
+#: c-decl.c:4130
#, gcc-internal-format
msgid "zero or negative size array %q+D"
msgstr ""
-#: c-decl.c:3608 varasm.c:2117
+#: c-decl.c:4185 varasm.c:2124
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr ""
-#: c-decl.c:3619
+#: c-decl.c:4196
#, gcc-internal-format
msgid "storage size of %q+D isn%'t constant"
msgstr ""
-#: c-decl.c:3666
+#: c-decl.c:4243
#, gcc-internal-format
msgid "ignoring asm-specifier for non-static local variable %q+D"
msgstr ""
-#: c-decl.c:3694 fortran/f95-lang.c:620
+#: c-decl.c:4271
#, gcc-internal-format
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c-decl.c:3823
+#: c-decl.c:4361
+#, gcc-internal-format
+msgid "uninitialized const %qD is invalid in C++"
+msgstr ""
+
+#: c-decl.c:4407
#, gcc-internal-format
msgid "ISO C forbids forward parameter declarations"
msgstr ""
-#: c-decl.c:3951
+#: c-decl.c:4493
+#, gcc-internal-format
+msgid "defining a type in a compound literal is invalid in C++"
+msgstr ""
+
+#: c-decl.c:4546
#, gcc-internal-format
msgid "bit-field %qs width not an integer constant"
msgstr ""
-#: c-decl.c:3959
+#: c-decl.c:4554
#, gcc-internal-format
msgid "negative width in bit-field %qs"
msgstr ""
-#: c-decl.c:3964
+#: c-decl.c:4559
#, gcc-internal-format
msgid "zero width for bit-field %qs"
msgstr ""
-#: c-decl.c:3974
+#: c-decl.c:4569
#, gcc-internal-format
msgid "bit-field %qs has invalid type"
msgstr ""
-#: c-decl.c:3984
+#: c-decl.c:4579
#, gcc-internal-format
msgid "type of bit-field %qs is a GCC extension"
msgstr ""
-#: c-decl.c:3990
+#: c-decl.c:4585
#, gcc-internal-format
msgid "width of %qs exceeds its type"
msgstr ""
-#: c-decl.c:4003
+#: c-decl.c:4598
#, gcc-internal-format
msgid "%qs is narrower than values of its type"
msgstr ""
-#: c-decl.c:4022
+#: c-decl.c:4617
#, gcc-internal-format
msgid "ISO C90 forbids array %qE whose size can%'t be evaluated"
msgstr ""
-#: c-decl.c:4026
+#: c-decl.c:4621
#, gcc-internal-format
msgid "ISO C90 forbids array whose size can%'t be evaluated"
msgstr ""
-#: c-decl.c:4033
+#: c-decl.c:4628
#, gcc-internal-format
msgid "ISO C90 forbids variable length array %qE"
msgstr ""
-#: c-decl.c:4036
+#: c-decl.c:4631
#, gcc-internal-format
msgid "ISO C90 forbids variable length array"
msgstr ""
-#: c-decl.c:4045
+#: c-decl.c:4640
#, gcc-internal-format
msgid "the size of array %qE can%'t be evaluated"
msgstr ""
-#: c-decl.c:4049
+#: c-decl.c:4644
#, gcc-internal-format
msgid "the size of array can %'t be evaluated"
msgstr ""
-#: c-decl.c:4055
+#: c-decl.c:4650
#, gcc-internal-format
msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:4059 cp/decl.c:7265
+#: c-decl.c:4654 cp/decl.c:7284
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
-#: c-decl.c:4230 c-decl.c:4559 c-decl.c:4569
+#: c-decl.c:4831 c-decl.c:5167 c-decl.c:5177
#, gcc-internal-format
msgid "variably modified %qE at file scope"
msgstr ""
-#: c-decl.c:4232
+#: c-decl.c:4833
#, gcc-internal-format
msgid "variably modified field at file scope"
msgstr ""
-#: c-decl.c:4252
+#: c-decl.c:4853
#, gcc-internal-format
msgid "type defaults to %<int%> in declaration of %qE"
msgstr ""
-#: c-decl.c:4256
+#: c-decl.c:4857
#, gcc-internal-format
msgid "type defaults to %<int%> in type name"
msgstr ""
-#: c-decl.c:4285
+#: c-decl.c:4886
#, gcc-internal-format
msgid "duplicate %<const%>"
msgstr ""
-#: c-decl.c:4287
+#: c-decl.c:4888
#, gcc-internal-format
msgid "duplicate %<restrict%>"
msgstr ""
-#: c-decl.c:4289
+#: c-decl.c:4890
#, gcc-internal-format
msgid "duplicate %<volatile%>"
msgstr ""
-#: c-decl.c:4309
+#: c-decl.c:4910
#, gcc-internal-format
msgid "function definition declared %<auto%>"
msgstr ""
-#: c-decl.c:4311
+#: c-decl.c:4912
#, gcc-internal-format
msgid "function definition declared %<register%>"
msgstr ""
-#: c-decl.c:4313
+#: c-decl.c:4914
#, gcc-internal-format
msgid "function definition declared %<typedef%>"
msgstr ""
-#: c-decl.c:4315
+#: c-decl.c:4916
#, gcc-internal-format
msgid "function definition declared %<__thread%>"
msgstr ""
-#: c-decl.c:4332
+#: c-decl.c:4933
#, gcc-internal-format
msgid "storage class specified for structure field %qE"
msgstr ""
-#: c-decl.c:4335
+#: c-decl.c:4936
#, gcc-internal-format
msgid "storage class specified for structure field"
msgstr ""
-#: c-decl.c:4339
+#: c-decl.c:4940
#, gcc-internal-format
msgid "storage class specified for parameter %qE"
msgstr ""
-#: c-decl.c:4341
+#: c-decl.c:4943
#, gcc-internal-format
msgid "storage class specified for unnamed parameter"
msgstr ""
-#: c-decl.c:4344 cp/decl.c:8165
+#: c-decl.c:4946 cp/decl.c:8204
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
-#: c-decl.c:4361
+#: c-decl.c:4963
#, gcc-internal-format
msgid "%qE initialized and declared %<extern%>"
msgstr ""
-#: c-decl.c:4364
+#: c-decl.c:4967
#, gcc-internal-format
msgid "%qE has both %<extern%> and initializer"
msgstr ""
-#: c-decl.c:4369
+#: c-decl.c:4972
#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<auto%>"
msgstr ""
-#: c-decl.c:4372
+#: c-decl.c:4976
#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<register%>"
msgstr ""
-#: c-decl.c:4377
+#: c-decl.c:4981
#, gcc-internal-format
msgid "nested function %qE declared %<extern%>"
msgstr ""
-#: c-decl.c:4380
+#: c-decl.c:4984
#, gcc-internal-format
msgid "function-scope %qE implicitly auto and declared %<__thread%>"
msgstr ""
@@ -19436,528 +20355,544 @@ 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:4427 c-decl.c:4743
+#: c-decl.c:5031 c-decl.c:5352
#, gcc-internal-format
msgid "static or type qualifiers in non-parameter array declarator"
msgstr ""
-#: c-decl.c:4475
+#: c-decl.c:5079
#, gcc-internal-format
msgid "declaration of %qE as array of voids"
msgstr ""
-#: c-decl.c:4477
+#: c-decl.c:5081
#, gcc-internal-format
msgid "declaration of type name as array of voids"
msgstr ""
-#: c-decl.c:4484
+#: c-decl.c:5088
#, gcc-internal-format
msgid "declaration of %qE as array of functions"
msgstr ""
-#: c-decl.c:4486
+#: c-decl.c:5091
#, gcc-internal-format
msgid "declaration of type name as array of functions"
msgstr ""
-#: c-decl.c:4492
+#: c-decl.c:5098 c-decl.c:6736
#, gcc-internal-format
msgid "invalid use of structure with flexible array member"
msgstr ""
-#: c-decl.c:4518
+#: c-decl.c:5124
#, gcc-internal-format
msgid "size of array %qE has non-integer type"
msgstr ""
-#: c-decl.c:4520
+#: c-decl.c:5128
#, gcc-internal-format
msgid "size of unnamed array has non-integer type"
msgstr ""
-#: c-decl.c:4530
+#: c-decl.c:5138
#, gcc-internal-format
msgid "ISO C forbids zero-size array %qE"
msgstr ""
-#: c-decl.c:4533
+#: c-decl.c:5141
#, gcc-internal-format
msgid "ISO C forbids zero-size array"
msgstr ""
-#: c-decl.c:4542
+#: c-decl.c:5150
#, gcc-internal-format
msgid "size of array %qE is negative"
msgstr ""
-#: c-decl.c:4544
+#: c-decl.c:5152
#, gcc-internal-format
msgid "size of unnamed array is negative"
msgstr ""
-#: c-decl.c:4620 c-decl.c:4913
+#: c-decl.c:5228 c-decl.c:5530
#, gcc-internal-format
msgid "size of array %qE is too large"
msgstr ""
-#: c-decl.c:4622 c-decl.c:4915
+#: c-decl.c:5231 c-decl.c:5532
#, gcc-internal-format
msgid "size of unnamed array is too large"
msgstr ""
-#: c-decl.c:4659
+#: c-decl.c:5268
#, gcc-internal-format
msgid "ISO C90 does not support flexible array members"
msgstr ""
#. C99 6.7.5.2p4
-#: c-decl.c:4680
+#: c-decl.c:5289
#, gcc-internal-format
msgid "%<[*]%> not in a declaration"
msgstr ""
-#: c-decl.c:4693
+#: c-decl.c:5302
#, gcc-internal-format
msgid "array type has incomplete element type"
msgstr ""
-#: c-decl.c:4776
+#: c-decl.c:5385
#, gcc-internal-format
msgid "%qE declared as function returning a function"
msgstr ""
-#: c-decl.c:4779
+#: c-decl.c:5388
#, gcc-internal-format
msgid "type name declared as function returning a function"
msgstr ""
-#: c-decl.c:4786
+#: c-decl.c:5395
#, gcc-internal-format
msgid "%qE declared as function returning an array"
msgstr ""
-#: c-decl.c:4788
+#: c-decl.c:5398
#, gcc-internal-format
msgid "type name declared as function returning an array"
msgstr ""
-#: c-decl.c:4811
+#: c-decl.c:5428
#, gcc-internal-format
msgid "function definition has qualified void return type"
msgstr ""
-#: c-decl.c:4814 cp/decl.c:8271
+#: c-decl.c:5431 cp/decl.c:8310
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
-#: c-decl.c:4844 c-decl.c:4929 c-decl.c:5019 c-decl.c:5112
+#: c-decl.c:5461 c-decl.c:5546 c-decl.c:5656 c-decl.c:5749
#, gcc-internal-format
msgid "ISO C forbids qualified function types"
msgstr ""
-#: c-decl.c:4937
+#: c-decl.c:5554
#, gcc-internal-format
msgid "typedef %q+D declared %<inline%>"
msgstr ""
-#: c-decl.c:4953
+#: c-decl.c:5590
#, gcc-internal-format
msgid "ISO C forbids const or volatile function types"
msgstr ""
-#: c-decl.c:4964
+#. C99 6.7.2.1p8
+#: c-decl.c:5600
#, gcc-internal-format
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:4980 cp/decl.c:7481
+#: c-decl.c:5617 cp/decl.c:7500
#, gcc-internal-format
msgid "variable or field %qE declared void"
msgstr ""
-#: c-decl.c:5011
+#: c-decl.c:5648
#, gcc-internal-format
msgid "attributes in parameter array declarator ignored"
msgstr ""
-#: c-decl.c:5045
+#: c-decl.c:5682
#, gcc-internal-format
msgid "parameter %q+D declared %<inline%>"
msgstr ""
-#: c-decl.c:5058
+#: c-decl.c:5695
#, gcc-internal-format
msgid "field %qE declared as a function"
msgstr ""
-#: c-decl.c:5065
+#: c-decl.c:5702
#, gcc-internal-format
msgid "field %qE has incomplete type"
msgstr ""
-#: c-decl.c:5067
+#: c-decl.c:5704
#, gcc-internal-format
msgid "unnamed field has incomplete type"
msgstr ""
-#: c-decl.c:5084 c-decl.c:5095 c-decl.c:5098
+#: c-decl.c:5721 c-decl.c:5732 c-decl.c:5735
#, gcc-internal-format
msgid "invalid storage class for function %qE"
msgstr ""
-#: c-decl.c:5118
+#: c-decl.c:5755
#, gcc-internal-format
msgid "%<noreturn%> function returns non-void value"
msgstr ""
-#: c-decl.c:5154
+#: c-decl.c:5791
#, gcc-internal-format
msgid "cannot inline function %<main%>"
msgstr ""
-#: c-decl.c:5183
+#: c-decl.c:5820
#, gcc-internal-format
msgid "variable previously declared %<static%> redeclared %<extern%>"
msgstr ""
-#: c-decl.c:5193
+#: c-decl.c:5830
#, gcc-internal-format
msgid "variable %q+D declared %<inline%>"
msgstr ""
-#: c-decl.c:5228
+#: c-decl.c:5865
#, gcc-internal-format
msgid "non-nested function with variably modified type"
msgstr ""
-#: c-decl.c:5230
+#: c-decl.c:5867
#, gcc-internal-format
msgid "object with variably modified type must have no linkage"
msgstr ""
-#: c-decl.c:5299 c-decl.c:6523
+#: c-decl.c:5950 c-decl.c:7366
#, gcc-internal-format
msgid "function declaration isn%'t a prototype"
msgstr ""
-#: c-decl.c:5307
+#: c-decl.c:5958
#, gcc-internal-format
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c-decl.c:5340
+#: c-decl.c:5993
#, gcc-internal-format
msgid "parameter %u (%q+D) has incomplete type"
msgstr ""
-#: c-decl.c:5343
+#: c-decl.c:5997
#, gcc-internal-format
-msgid "%Jparameter %u has incomplete type"
+msgid "parameter %u has incomplete type"
msgstr ""
-#: c-decl.c:5352
+#: c-decl.c:6007
#, gcc-internal-format
msgid "parameter %u (%q+D) has void type"
msgstr ""
-#: c-decl.c:5355
+#: c-decl.c:6011
#, gcc-internal-format
-msgid "%Jparameter %u has void type"
+msgid "parameter %u has void type"
msgstr ""
-#: c-decl.c:5417
+#: c-decl.c:6081
#, gcc-internal-format
msgid "%<void%> as only parameter may not be qualified"
msgstr ""
-#: c-decl.c:5421 c-decl.c:5455
+#: c-decl.c:6085 c-decl.c:6119
#, gcc-internal-format
msgid "%<void%> must be the only parameter"
msgstr ""
-#: c-decl.c:5449
+#: c-decl.c:6113
#, gcc-internal-format
msgid "parameter %q+D has just a forward declaration"
msgstr ""
#. The %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:5494
+#: c-decl.c:6158
#, gcc-internal-format
msgid "%<%s %E%> declared inside parameter list"
msgstr ""
#. The %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:5498
+#: c-decl.c:6162
#, gcc-internal-format
msgid "anonymous %s declared inside parameter list"
msgstr ""
-#: c-decl.c:5503
+#: c-decl.c:6167
#, gcc-internal-format
msgid ""
"its scope is only this definition or declaration, which is probably not what "
"you want"
msgstr ""
-#: c-decl.c:5642
+#: c-decl.c:6260
+#, gcc-internal-format
+msgid "enum type defined here"
+msgstr ""
+
+#: c-decl.c:6266
+#, gcc-internal-format
+msgid "struct defined here"
+msgstr ""
+
+#: c-decl.c:6272
+#, gcc-internal-format
+msgid "union defined here"
+msgstr ""
+
+#: c-decl.c:6345
#, gcc-internal-format
msgid "redefinition of %<union %E%>"
msgstr ""
-#: c-decl.c:5644
+#: c-decl.c:6347
#, gcc-internal-format
msgid "redefinition of %<struct %E%>"
msgstr ""
-#: c-decl.c:5651
+#: c-decl.c:6356
#, gcc-internal-format
msgid "nested redefinition of %<union %E%>"
msgstr ""
-#: c-decl.c:5653
+#: c-decl.c:6358
#, gcc-internal-format
msgid "nested redefinition of %<struct %E%>"
msgstr ""
-#: c-decl.c:5731 cp/decl.c:3839
+#: c-decl.c:6390 c-decl.c:6968
+#, gcc-internal-format
+msgid "defining type in %qs expression is invalid in C++"
+msgstr ""
+
+#: c-decl.c:6457 cp/decl.c:3885
#, gcc-internal-format
msgid "declaration does not declare anything"
msgstr ""
-#: c-decl.c:5734
+#: c-decl.c:6460
#, gcc-internal-format
msgid "ISO C doesn%'t support unnamed structs/unions"
msgstr ""
-#: c-decl.c:5778 c-decl.c:5794
+#: c-decl.c:6523 c-decl.c:6539
#, gcc-internal-format
msgid "duplicate member %q+D"
msgstr ""
-#: c-decl.c:5833
+#: c-decl.c:6642
#, gcc-internal-format
msgid "union has no named members"
msgstr ""
-#: c-decl.c:5835
+#: c-decl.c:6644
#, gcc-internal-format
msgid "union has no members"
msgstr ""
-#: c-decl.c:5840
+#: c-decl.c:6649
#, gcc-internal-format
msgid "struct has no named members"
msgstr ""
-#: c-decl.c:5842
+#: c-decl.c:6651
#, gcc-internal-format
msgid "struct has no members"
msgstr ""
-#: c-decl.c:5906
-#, gcc-internal-format
-msgid "%Jflexible array member in union"
-msgstr ""
-
-#: c-decl.c:5911
+#: c-decl.c:6716
#, gcc-internal-format
-msgid "%Jflexible array member not at end of struct"
+msgid "flexible array member in union"
msgstr ""
-#: c-decl.c:5916
+#: c-decl.c:6722
#, gcc-internal-format
-msgid "%Jflexible array member in otherwise empty struct"
+msgid "flexible array member not at end of struct"
msgstr ""
-#: c-decl.c:5924
+#: c-decl.c:6728
#, gcc-internal-format
-msgid "%Jinvalid use of structure with flexible array member"
+msgid "flexible array member in otherwise empty struct"
msgstr ""
-#: c-decl.c:6033
+#: c-decl.c:6845
#, gcc-internal-format
msgid "union cannot be made transparent"
msgstr ""
-#: c-decl.c:6104
+#: c-decl.c:6941
#, gcc-internal-format
msgid "nested redefinition of %<enum %E%>"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c-decl.c:6111
+#: c-decl.c:6948
#, gcc-internal-format
msgid "redeclaration of %<enum %E%>"
msgstr ""
-#: c-decl.c:6174
+#: c-decl.c:7023
#, gcc-internal-format
msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c-decl.c:6191
+#: c-decl.c:7040
#, gcc-internal-format
msgid "specified mode too small for enumeral values"
msgstr ""
-#: c-decl.c:6287 c-decl.c:6302
+#: c-decl.c:7144 c-decl.c:7160
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant"
msgstr ""
-#: c-decl.c:6297
+#: c-decl.c:7155
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant expression"
msgstr ""
-#: c-decl.c:6321
+#: c-decl.c:7179
#, gcc-internal-format
msgid "overflow in enumeration values"
msgstr ""
-#: c-decl.c:6329
+#: c-decl.c:7187
#, gcc-internal-format
msgid "ISO C restricts enumerator values to range of %<int%>"
msgstr ""
-#: c-decl.c:6447
+#: c-decl.c:7272
+#, gcc-internal-format
+msgid "inline function %qD given attribute noinline"
+msgstr ""
+
+#: c-decl.c:7290
#, gcc-internal-format
msgid "return type is an incomplete type"
msgstr ""
-#: c-decl.c:6457
+#: c-decl.c:7300
#, gcc-internal-format
msgid "return type defaults to %<int%>"
msgstr ""
-#: c-decl.c:6530
+#: c-decl.c:7374
#, gcc-internal-format
-msgid "no previous prototype for %q+D"
+msgid "no previous prototype for %qD"
msgstr ""
-#: c-decl.c:6539
+#: c-decl.c:7383
#, gcc-internal-format
-msgid "%q+D was used with no prototype before its definition"
+msgid "%qD was used with no prototype before its definition"
msgstr ""
-#: c-decl.c:6545 cp/decl.c:11634
+#: c-decl.c:7390
#, gcc-internal-format
-msgid "no previous declaration for %q+D"
+msgid "no previous declaration for %qD"
msgstr ""
-#: c-decl.c:6555
+#: c-decl.c:7400
#, gcc-internal-format
-msgid "%q+D was used with no declaration before its definition"
+msgid "%qD was used with no declaration before its definition"
msgstr ""
-#: c-decl.c:6578
+#: c-decl.c:7423
#, gcc-internal-format
-msgid "return type of %q+D is not %<int%>"
+msgid "return type of %qD is not %<int%>"
msgstr ""
-#: c-decl.c:6583
+#: c-decl.c:7429
#, gcc-internal-format
-msgid "%q+D is normally a non-static function"
+msgid "%qD is normally a non-static function"
msgstr ""
-#: c-decl.c:6617
+#: c-decl.c:7464
#, gcc-internal-format
-msgid "%Jold-style parameter declarations in prototyped function definition"
+msgid "old-style parameter declarations in prototyped function definition"
msgstr ""
-#: c-decl.c:6631
+#: c-decl.c:7478
#, gcc-internal-format
-msgid "%Jtraditional C rejects ISO C style function definitions"
+msgid "traditional C rejects ISO C style function definitions"
msgstr ""
-#: c-decl.c:6648
+#: c-decl.c:7494
#, gcc-internal-format
-msgid "%Jparameter name omitted"
+msgid "parameter name omitted"
msgstr ""
-#: c-decl.c:6682
+#: c-decl.c:7529
#, gcc-internal-format
-msgid "%Jold-style function definition"
+msgid "old-style function definition"
msgstr ""
-#: c-decl.c:6691
+#: c-decl.c:7538
#, gcc-internal-format
-msgid "%Jparameter name missing from parameter list"
+msgid "parameter name missing from parameter list"
msgstr ""
-#: c-decl.c:6702
+#: c-decl.c:7550
#, gcc-internal-format
-msgid "%q+D declared as a non-parameter"
+msgid "%qD declared as a non-parameter"
msgstr ""
-#: c-decl.c:6707
+#: c-decl.c:7556
#, gcc-internal-format
-msgid "multiple parameters named %q+D"
+msgid "multiple parameters named %qD"
msgstr ""
-#: c-decl.c:6715
+#: c-decl.c:7565
#, gcc-internal-format
-msgid "parameter %q+D declared with void type"
+msgid "parameter %qD declared with void type"
msgstr ""
-#: c-decl.c:6732 c-decl.c:6734
+#: c-decl.c:7594 c-decl.c:7598
#, gcc-internal-format
-msgid "type of %q+D defaults to %<int%>"
+msgid "type of %qD defaults to %<int%>"
msgstr ""
-#: c-decl.c:6753
+#: c-decl.c:7618
#, gcc-internal-format
-msgid "parameter %q+D has incomplete type"
+msgid "parameter %qD has incomplete type"
msgstr ""
-#: c-decl.c:6759
+#: c-decl.c:7625
#, gcc-internal-format
-msgid "declaration for parameter %q+D but no such parameter"
+msgid "declaration for parameter %qD but no such parameter"
msgstr ""
-#: c-decl.c:6809
+#: c-decl.c:7677
#, gcc-internal-format
msgid "number of arguments doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6813
+#: c-decl.c:7688
#, gcc-internal-format
msgid "number of arguments doesn%'t match prototype"
msgstr ""
-#: c-decl.c:6814 c-decl.c:6866
+#: c-decl.c:7691 c-decl.c:7733 c-decl.c:7747
#, gcc-internal-format
-msgid "%Hprototype declaration"
+msgid "prototype declaration"
msgstr ""
-#: c-decl.c:6848
+#: c-decl.c:7725
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6852
+#: c-decl.c:7730
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:6855
-#, gcc-internal-format
-msgid "prototype declaration"
-msgstr ""
-
-#: c-decl.c:6861
+#: c-decl.c:7740
#, gcc-internal-format
msgid "argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6865
+#: c-decl.c:7745
#, gcc-internal-format
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:7074 cp/decl.c:12338
+#: c-decl.c:7929 cp/decl.c:12448
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr ""
@@ -19965,443 +20900,158 @@ 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:7147
+#: c-decl.c:8001
#, gcc-internal-format
msgid "%<for%> loop initial declarations are only allowed in C99 mode"
msgstr ""
-#: c-decl.c:7151
+#: c-decl.c:8006
#, gcc-internal-format
msgid "use option -std=c99 or -std=gnu99 to compile your code"
msgstr ""
-#: c-decl.c:7182
+#: c-decl.c:8040
#, gcc-internal-format
-msgid "declaration of static variable %q+D in %<for%> loop initial declaration"
+msgid "declaration of static variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7185
+#: c-decl.c:8044
#, gcc-internal-format
msgid ""
-"declaration of %<extern%> variable %q+D in %<for%> loop initial declaration"
+"declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7190
+#: c-decl.c:8051
#, gcc-internal-format
msgid "%<struct %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7194
+#: c-decl.c:8056
#, gcc-internal-format
msgid "%<union %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7198
+#: c-decl.c:8060
#, gcc-internal-format
msgid "%<enum %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7202
+#: c-decl.c:8064
#, gcc-internal-format
-msgid "declaration of non-variable %q+D in %<for%> loop initial declaration"
+msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7487 c-decl.c:7729 c-decl.c:8036
+#: c-decl.c:8334 c-decl.c:8631 c-decl.c:8997
#, gcc-internal-format
msgid "duplicate %qE"
msgstr ""
-#: c-decl.c:7512 c-decl.c:7739 c-decl.c:7926
+#: c-decl.c:8360 c-decl.c:8642 c-decl.c:8874
#, gcc-internal-format
msgid "two or more data types in declaration specifiers"
msgstr ""
-#: c-decl.c:7524
+#: c-decl.c:8372 cp/parser.c:2183
#, gcc-internal-format
msgid "%<long long long%> is too long for GCC"
msgstr ""
-#: c-decl.c:7531 c-decl.c:7829
-#, gcc-internal-format
-msgid "both %<long long%> and %<double%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7536
+#: c-decl.c:8385
#, gcc-internal-format
msgid "ISO C90 does not support %<long long%>"
msgstr ""
-#: c-decl.c:7541 c-decl.c:7570
-#, gcc-internal-format
-msgid "both %<long%> and %<short%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7544 c-decl.c:7746
-#, gcc-internal-format
-msgid "both %<long%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7547 c-decl.c:7768
-#, gcc-internal-format
-msgid "both %<long%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7550 c-decl.c:7790
-#, gcc-internal-format
-msgid "both %<long%> and %<char%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7553 c-decl.c:7810
-#, gcc-internal-format
-msgid "both %<long%> and %<float%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7556
-#, gcc-internal-format
-msgid "both %<long%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7559
-#, gcc-internal-format
-msgid "both %<long%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7562
-#, gcc-internal-format
-msgid "both %<long%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7573 c-decl.c:7749
-#, gcc-internal-format
-msgid "both %<short%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7576 c-decl.c:7771
-#, gcc-internal-format
-msgid "both %<short%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7579 c-decl.c:7793
-#, gcc-internal-format
-msgid "both %<short%> and %<char%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7582 c-decl.c:7813
-#, gcc-internal-format
-msgid "both %<short%> and %<float%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7585 c-decl.c:7832
-#, gcc-internal-format
-msgid "both %<short%> and %<double%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7588
-#, gcc-internal-format
-msgid "both %<short%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7591
-#, gcc-internal-format
-msgid "both %<short%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7594
-#, gcc-internal-format
-msgid "both %<short%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7602 c-decl.c:7631
-#, gcc-internal-format
-msgid "both %<signed%> and %<unsigned%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7605 c-decl.c:7752
-#, gcc-internal-format
-msgid "both %<signed%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7608 c-decl.c:7774
-#, gcc-internal-format
-msgid "both %<signed%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7611 c-decl.c:7816
-#, gcc-internal-format
-msgid "both %<signed%> and %<float%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7614 c-decl.c:7835
-#, gcc-internal-format
-msgid "both %<signed%> and %<double%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7617
-#, gcc-internal-format
-msgid "both %<signed%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7620
-#, gcc-internal-format
-msgid "both %<signed%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7623
-#, gcc-internal-format
-msgid "both %<signed%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7634 c-decl.c:7755
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7637 c-decl.c:7777
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7640 c-decl.c:7819
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<float%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7643 c-decl.c:7838
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<double%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7646
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7649
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7652
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7660
+#: c-decl.c:8543
#, gcc-internal-format
msgid "ISO C90 does not support complex types"
msgstr ""
-#: c-decl.c:7662 c-decl.c:7758
-#, gcc-internal-format
-msgid "both %<complex%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7665 c-decl.c:7780
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7668
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7671
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7674
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7677
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Fract%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7680
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Accum%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7683
-#, gcc-internal-format
-msgid "both %<complex%> and %<_Sat%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7690
+#: c-decl.c:8582
#, gcc-internal-format
msgid "ISO C does not support saturating types"
msgstr ""
-#: c-decl.c:7692 c-decl.c:7761
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<void%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7695 c-decl.c:7783
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<_Bool%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7698 c-decl.c:7796
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<char%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7701 c-decl.c:7803
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<int%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7704 c-decl.c:7822
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<float%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7707 c-decl.c:7841
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<double%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7710
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<_Decimal32%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7713
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<_Decimal64%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7716
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<_Decimal128%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7719
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<complex%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7858
-#, gcc-internal-format
-msgid "both %<long long%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7861
-#, gcc-internal-format
-msgid "both %<long%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7864
-#, gcc-internal-format
-msgid "both %<short%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7867
-#, gcc-internal-format
-msgid "both %<signed%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7870
-#, gcc-internal-format
-msgid "both %<unsigned%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7873 c-decl.c:7899
-#, gcc-internal-format
-msgid "both %<complex%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7876
-#, gcc-internal-format
-msgid "both %<_Sat%> and %<%s%> in declaration specifiers"
-msgstr ""
-
-#: c-decl.c:7886
-#, gcc-internal-format
-msgid "decimal floating point not supported for this target"
-msgstr ""
-
-#: c-decl.c:7888
+#: c-decl.c:8833
#, gcc-internal-format
msgid "ISO C does not support decimal floating point"
msgstr ""
-#: c-decl.c:7907 c-decl.c:8097 c-parser.c:5189
+#: c-decl.c:8855 c-decl.c:9058 c-parser.c:5337
#, gcc-internal-format
msgid "fixed-point types not supported for this target"
msgstr ""
-#: c-decl.c:7909
+#: c-decl.c:8857
#, gcc-internal-format
msgid "ISO C does not support fixed-point types"
msgstr ""
-#: c-decl.c:7943
+#: c-decl.c:8891
+#, gcc-internal-format
+msgid "C++ lookup of %qD would return a field, not a type"
+msgstr ""
+
+#: c-decl.c:8904
#, gcc-internal-format
msgid "%qE fails to be a typedef or built in type"
msgstr ""
-#: c-decl.c:7987
+#: c-decl.c:8948
#, gcc-internal-format
msgid "%qE is not at beginning of declaration"
msgstr ""
-#: c-decl.c:8001
+#: c-decl.c:8962
#, gcc-internal-format
msgid "%<__thread%> used with %<auto%>"
msgstr ""
-#: c-decl.c:8003
+#: c-decl.c:8964
#, gcc-internal-format
msgid "%<__thread%> used with %<register%>"
msgstr ""
-#: c-decl.c:8005
+#: c-decl.c:8966
#, gcc-internal-format
msgid "%<__thread%> used with %<typedef%>"
msgstr ""
-#: c-decl.c:8016
+#: c-decl.c:8977
#, gcc-internal-format
msgid "%<__thread%> before %<extern%>"
msgstr ""
-#: c-decl.c:8025
+#: c-decl.c:8986
#, gcc-internal-format
msgid "%<__thread%> before %<static%>"
msgstr ""
-#: c-decl.c:8041
+#: c-decl.c:9002
#, gcc-internal-format
msgid "multiple storage classes in declaration specifiers"
msgstr ""
-#: c-decl.c:8048
+#: c-decl.c:9009
#, gcc-internal-format
msgid "%<__thread%> used with %qE"
msgstr ""
-#: c-decl.c:8095
+#: c-decl.c:9056
#, gcc-internal-format
msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
msgstr ""
-#: c-decl.c:8109
+#: c-decl.c:9070
#, gcc-internal-format
msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
msgstr ""
-#: c-decl.c:8154 c-decl.c:8180
+#: c-decl.c:9115 c-decl.c:9141
#, gcc-internal-format
msgid "ISO C does not support complex integer types"
msgstr ""
-#: c-decl.c:8334 toplev.c:847
+#: c-decl.c:9295 toplev.c:862
#, gcc-internal-format
msgid "%q+F used but never defined"
msgstr ""
@@ -20441,293 +21091,293 @@ msgstr ""
msgid "format string argument follows the args to be formatted"
msgstr ""
-#: c-format.c:933
+#: c-format.c:923
#, gcc-internal-format
msgid "function might be possible candidate for %qs format attribute"
msgstr ""
-#: c-format.c:1025 c-format.c:1046 c-format.c:2065
+#: c-format.c:1015 c-format.c:1036 c-format.c:2060
#, gcc-internal-format
msgid "missing $ operand number in format"
msgstr ""
-#: c-format.c:1055
+#: c-format.c:1045
#, gcc-internal-format
msgid "%s does not support %%n$ operand number formats"
msgstr ""
-#: c-format.c:1062
+#: c-format.c:1052
#, gcc-internal-format
msgid "operand number out of range in format"
msgstr ""
-#: c-format.c:1085
+#: c-format.c:1075
#, gcc-internal-format
msgid "format argument %d used more than once in %s format"
msgstr ""
-#: c-format.c:1117
+#: c-format.c:1107
#, gcc-internal-format
msgid "$ operand number used after format without operand number"
msgstr ""
-#: c-format.c:1148
+#: c-format.c:1138
#, gcc-internal-format
msgid "format argument %d unused before used argument %d in $-style format"
msgstr ""
-#: c-format.c:1243
+#: c-format.c:1233
#, gcc-internal-format
msgid "format not a string literal, format string not checked"
msgstr ""
-#: c-format.c:1258 c-format.c:1261
+#: c-format.c:1248 c-format.c:1251
#, gcc-internal-format
msgid "format not a string literal and no format arguments"
msgstr ""
-#: c-format.c:1264
+#: c-format.c:1254
#, gcc-internal-format
msgid "format not a string literal, argument types not checked"
msgstr ""
-#: c-format.c:1277
+#: c-format.c:1267
#, gcc-internal-format
msgid "too many arguments for format"
msgstr ""
-#: c-format.c:1280
+#: c-format.c:1270
#, gcc-internal-format
msgid "unused arguments in $-style format"
msgstr ""
-#: c-format.c:1283
+#: c-format.c:1273
#, gcc-internal-format
msgid "zero-length %s format string"
msgstr ""
-#: c-format.c:1287
+#: c-format.c:1277
#, gcc-internal-format
msgid "format is a wide character string"
msgstr ""
-#: c-format.c:1290
+#: c-format.c:1280
#, gcc-internal-format
msgid "unterminated format string"
msgstr ""
-#: c-format.c:1498
+#: c-format.c:1489
#, gcc-internal-format
msgid "embedded %<\\0%> in format"
msgstr ""
-#: c-format.c:1513
+#: c-format.c:1504
#, gcc-internal-format
msgid "spurious trailing %<%%%> in format"
msgstr ""
-#: c-format.c:1557 c-format.c:1828
+#: c-format.c:1548 c-format.c:1823
#, gcc-internal-format
msgid "repeated %s in format"
msgstr ""
-#: c-format.c:1570
+#: c-format.c:1561
#, gcc-internal-format
msgid "missing fill character at end of strfmon format"
msgstr ""
-#: c-format.c:1614 c-format.c:1716 c-format.c:2012 c-format.c:2077
+#: c-format.c:1605 c-format.c:1708 c-format.c:2007 c-format.c:2072
#, gcc-internal-format
msgid "too few arguments for format"
msgstr ""
-#: c-format.c:1655
+#: c-format.c:1647
#, gcc-internal-format
msgid "zero width in %s format"
msgstr ""
-#: c-format.c:1673
+#: c-format.c:1665
#, gcc-internal-format
msgid "empty left precision in %s format"
msgstr ""
-#: c-format.c:1746
+#: c-format.c:1739
#, gcc-internal-format
msgid "empty precision in %s format"
msgstr ""
-#: c-format.c:1812
+#: c-format.c:1807
#, gcc-internal-format
msgid "%s does not support the %qs %s length modifier"
msgstr ""
-#: c-format.c:1845
+#: c-format.c:1840
#, gcc-internal-format
msgid "conversion lacks type at end of format"
msgstr ""
-#: c-format.c:1856
+#: c-format.c:1851
#, gcc-internal-format
msgid "unknown conversion type character %qc in format"
msgstr ""
-#: c-format.c:1859
+#: c-format.c:1854
#, gcc-internal-format
msgid "unknown conversion type character 0x%x in format"
msgstr ""
-#: c-format.c:1866
+#: c-format.c:1861
#, gcc-internal-format
msgid "%s does not support the %<%%%c%> %s format"
msgstr ""
-#: c-format.c:1882
+#: c-format.c:1877
#, gcc-internal-format
msgid "%s used with %<%%%c%> %s format"
msgstr ""
-#: c-format.c:1891
+#: c-format.c:1886
#, gcc-internal-format
msgid "%s does not support %s"
msgstr ""
-#: c-format.c:1901
+#: c-format.c:1896
#, gcc-internal-format
msgid "%s does not support %s with the %<%%%c%> %s format"
msgstr ""
-#: c-format.c:1937
+#: c-format.c:1932
#, gcc-internal-format
msgid "%s ignored with %s and %<%%%c%> %s format"
msgstr ""
-#: c-format.c:1941
+#: c-format.c:1936
#, gcc-internal-format
msgid "%s ignored with %s in %s format"
msgstr ""
-#: c-format.c:1948
+#: c-format.c:1943
#, gcc-internal-format
msgid "use of %s and %s together with %<%%%c%> %s format"
msgstr ""
-#: c-format.c:1952
+#: c-format.c:1947
#, gcc-internal-format
msgid "use of %s and %s together in %s format"
msgstr ""
-#: c-format.c:1971
+#: c-format.c:1966
#, gcc-internal-format
msgid "%<%%%c%> yields only last 2 digits of year in some locales"
msgstr ""
-#: c-format.c:1974
+#: c-format.c:1969
#, gcc-internal-format
msgid "%<%%%c%> yields only last 2 digits of year"
msgstr ""
#. The end of the format string was reached.
-#: c-format.c:1991
+#: c-format.c:1986
#, gcc-internal-format
msgid "no closing %<]%> for %<%%[%> format"
msgstr ""
-#: c-format.c:2005
+#: c-format.c:2000
#, gcc-internal-format
msgid "use of %qs length modifier with %qc type character"
msgstr ""
-#: c-format.c:2027
+#: c-format.c:2022
#, gcc-internal-format
msgid "%s does not support the %<%%%s%c%> %s format"
msgstr ""
-#: c-format.c:2044
+#: c-format.c:2039
#, gcc-internal-format
msgid "operand number specified with suppressed assignment"
msgstr ""
-#: c-format.c:2047
+#: c-format.c:2042
#, gcc-internal-format
msgid "operand number specified for format taking no argument"
msgstr ""
-#: c-format.c:2180
+#: c-format.c:2178
#, gcc-internal-format
msgid "writing through null pointer (argument %d)"
msgstr ""
-#: c-format.c:2188
+#: c-format.c:2186
#, gcc-internal-format
msgid "reading through null pointer (argument %d)"
msgstr ""
-#: c-format.c:2208
+#: c-format.c:2206
#, gcc-internal-format
msgid "writing into constant object (argument %d)"
msgstr ""
-#: c-format.c:2219
+#: c-format.c:2217
#, gcc-internal-format
msgid "extra type qualifiers in format argument (argument %d)"
msgstr ""
-#: c-format.c:2330
+#: c-format.c:2334
#, gcc-internal-format
msgid "%s should have type %<%s%s%>, but argument %d has type %qT"
msgstr ""
-#: c-format.c:2334
+#: c-format.c:2338
#, gcc-internal-format
msgid "format %q.*s expects type %<%s%s%>, but argument %d has type %qT"
msgstr ""
-#: c-format.c:2342
+#: c-format.c:2346
#, gcc-internal-format
msgid "%s should have type %<%T%s%>, but argument %d has type %qT"
msgstr ""
-#: c-format.c:2346
+#: c-format.c:2350
#, gcc-internal-format
msgid "format %q.*s expects type %<%T%s%>, but argument %d has type %qT"
msgstr ""
-#: c-format.c:2405 c-format.c:2411 c-format.c:2562
+#: c-format.c:2409 c-format.c:2415 c-format.c:2566
#, gcc-internal-format
msgid "%<__gcc_host_wide_int__%> is not defined as a type"
msgstr ""
-#: c-format.c:2418 c-format.c:2572
+#: c-format.c:2422 c-format.c:2576
#, gcc-internal-format
msgid "%<__gcc_host_wide_int__%> is not defined as %<long%> or %<long long%>"
msgstr ""
-#: c-format.c:2468
+#: c-format.c:2472
#, gcc-internal-format
msgid "%<locus%> is not defined as a type"
msgstr ""
-#: c-format.c:2521
+#: c-format.c:2525
#, gcc-internal-format
msgid "%<location_t%> is not defined as a type"
msgstr ""
-#: c-format.c:2538
+#: c-format.c:2542
#, gcc-internal-format
msgid "%<tree%> is not defined as a type"
msgstr ""
-#: c-format.c:2543
+#: c-format.c:2547
#, gcc-internal-format
msgid "%<tree%> is not defined as a pointer type"
msgstr ""
-#: c-format.c:2850
+#: c-format.c:2818
#, gcc-internal-format
msgid "args to be formatted is not %<...%>"
msgstr ""
-#: c-format.c:2862
+#: c-format.c:2830
#, gcc-internal-format
msgid "strftime formats cannot format arguments"
msgstr ""
@@ -20739,13 +21389,13 @@ msgstr ""
#: c-lex.c:267
#, gcc-internal-format
-msgid "%Hignoring #pragma %s %s"
+msgid "ignoring #pragma %s %s"
msgstr ""
#. ... or not.
#: c-lex.c:382
#, gcc-internal-format
-msgid "%Hstray %<@%> in program"
+msgid "stray %<@%> in program"
msgstr ""
#: c-lex.c:397
@@ -20803,7 +21453,7 @@ msgstr ""
msgid "floating constant truncated to zero"
msgstr ""
-#: c-lex.c:929
+#: c-lex.c:929 cp/parser.c:2978
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
@@ -20813,37 +21463,37 @@ msgstr ""
msgid "traditional C rejects string constant concatenation"
msgstr ""
-#: c-omp.c:119
+#: c-omp.c:126
#, gcc-internal-format
msgid "invalid expression type for %<#pragma omp atomic%>"
msgstr ""
-#: c-omp.c:245
+#: c-omp.c:260 cp/semantics.c:4408
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr ""
-#: c-omp.c:258
+#: c-omp.c:273
#, gcc-internal-format
msgid "%qE is not initialized"
msgstr ""
-#: c-omp.c:271
+#: c-omp.c:290 cp/semantics.c:4323
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-omp.c:349
+#: c-omp.c:368 cp/semantics.c:4080
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr ""
-#: c-omp.c:356
+#: c-omp.c:375 cp/semantics.c:4329
#, gcc-internal-format
msgid "missing increment expression"
msgstr ""
-#: c-omp.c:423
+#: c-omp.c:444 cp/semantics.c:4185
#, gcc-internal-format
msgid "invalid increment expression"
msgstr ""
@@ -20878,168 +21528,178 @@ msgstr ""
msgid "missing makefile target after %qs"
msgstr ""
-#: c-opts.c:325
+#: c-opts.c:326
#, gcc-internal-format
msgid "-I- specified twice"
msgstr ""
-#: c-opts.c:328
+#: c-opts.c:329
#, gcc-internal-format
msgid "obsolete option -I- used, please use -iquote instead"
msgstr ""
-#: c-opts.c:506
+#: c-opts.c:513
#, gcc-internal-format
msgid "argument %qs to %<-Wnormalized%> not recognized"
msgstr ""
-#: c-opts.c:589
+#: c-opts.c:596
#, gcc-internal-format
msgid "switch %qs is no longer supported"
msgstr ""
-#: c-opts.c:696
+#: c-opts.c:703
#, gcc-internal-format
msgid ""
"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr ""
-#: c-opts.c:1035
+#: c-opts.c:1050 collect2.c:1495 fortran/options.c:258
+#, gcc-internal-format
+msgid "LTO support has not been enabled in this configuration"
+msgstr ""
+
+#: c-opts.c:1057 fortran/options.c:265
+#, gcc-internal-format
+msgid "-flto and -fwhopr are mutually exclusive"
+msgstr ""
+
+#: c-opts.c:1065
#, gcc-internal-format
msgid "-fexcess-precision=standard for C++"
msgstr ""
-#: c-opts.c:1048
+#: c-opts.c:1078
#, gcc-internal-format
msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode"
msgstr ""
-#: c-opts.c:1127
+#: c-opts.c:1157
#, gcc-internal-format
msgid "-Wformat-y2k ignored without -Wformat"
msgstr ""
-#: c-opts.c:1129
+#: c-opts.c:1159
#, gcc-internal-format
msgid "-Wformat-extra-args ignored without -Wformat"
msgstr ""
-#: c-opts.c:1131
+#: c-opts.c:1161
#, gcc-internal-format
msgid "-Wformat-zero-length ignored without -Wformat"
msgstr ""
-#: c-opts.c:1133
+#: c-opts.c:1163
#, gcc-internal-format
msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr ""
-#: c-opts.c:1135
+#: c-opts.c:1165
#, gcc-internal-format
msgid "-Wformat-contains-nul ignored without -Wformat"
msgstr ""
-#: c-opts.c:1137
+#: c-opts.c:1167
#, gcc-internal-format
msgid "-Wformat-security ignored without -Wformat"
msgstr ""
-#: c-opts.c:1161
+#: c-opts.c:1191
#, gcc-internal-format
msgid "opening output file %s: %m"
msgstr ""
-#: c-opts.c:1166
+#: c-opts.c:1196
#, gcc-internal-format
msgid "too many filenames given. Type %s --help for usage"
msgstr ""
-#: c-opts.c:1246
+#: c-opts.c:1276
#, gcc-internal-format
msgid "The C parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1250
+#: c-opts.c:1280
#, gcc-internal-format
msgid "The Objective-C parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1253
+#: c-opts.c:1283
#, gcc-internal-format
msgid "The C++ parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1257
+#: c-opts.c:1287
#, gcc-internal-format
msgid "The Objective-C++ parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1308
+#: c-opts.c:1338
#, gcc-internal-format
msgid "opening dependency file %s: %m"
msgstr ""
-#: c-opts.c:1318
+#: c-opts.c:1348
#, gcc-internal-format
msgid "closing dependency file %s: %m"
msgstr ""
-#: c-opts.c:1321
+#: c-opts.c:1351
#, gcc-internal-format
msgid "when writing output to %s: %m"
msgstr ""
-#: c-opts.c:1401
+#: c-opts.c:1431
#, gcc-internal-format
msgid "to generate dependencies you must specify either -M or -MM"
msgstr ""
-#: c-opts.c:1424
+#: c-opts.c:1454
#, gcc-internal-format
msgid "-MG may only be used with -M or -MM"
msgstr ""
-#: c-opts.c:1454
+#: c-opts.c:1484
#, gcc-internal-format
msgid "-fdirectives-only is incompatible with -Wunused_macros"
msgstr ""
-#: c-opts.c:1456
+#: c-opts.c:1486
#, gcc-internal-format
msgid "-fdirectives-only is incompatible with -traditional"
msgstr ""
-#: c-opts.c:1594
+#: c-opts.c:1624
#, gcc-internal-format
msgid "too late for # directive to set debug directory"
msgstr ""
-#: c-parser.c:225
+#: c-parser.c:226
#, gcc-internal-format
msgid "identifier %qE conflicts with C++ keyword"
msgstr ""
-#: c-parser.c:974
+#: c-parser.c:979
#, gcc-internal-format
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c-parser.c:1060 c-parser.c:6319
+#: c-parser.c:1065 c-parser.c:6430
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
-#: c-parser.c:1164 c-parser.c:6881
+#: c-parser.c:1169 c-parser.c:6992
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr ""
-#: c-parser.c:1212
+#: c-parser.c:1217
#, gcc-internal-format
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parser.c:1266
+#: c-parser.c:1275
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -21047,188 +21707,188 @@ msgstr ""
#. This can appear in many cases looking nothing like a
#. function definition, so we don't give a more specific
#. error suggesting there was one.
-#: c-parser.c:1273 c-parser.c:1289
+#: c-parser.c:1282 c-parser.c:1298
#, gcc-internal-format
msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
msgstr ""
-#: c-parser.c:1281
+#: c-parser.c:1290
#, gcc-internal-format
msgid "ISO C forbids nested functions"
msgstr ""
-#: c-parser.c:1656 c-parser.c:2467 c-parser.c:3117 c-parser.c:3380
-#: c-parser.c:4331 c-parser.c:4970 c-parser.c:5395 c-parser.c:5417
-#: c-parser.c:5524 c-parser.c:5705 c-parser.c:5734 c-parser.c:5961
-#: c-parser.c:5973 c-parser.c:5998 c-parser.c:6132 c-parser.c:6161
-#: c-parser.c:6169 c-parser.c:6197 c-parser.c:6211 c-parser.c:6427
-#: c-parser.c:6526 c-parser.c:7051 c-parser.c:7756
+#: c-parser.c:1675 c-parser.c:2495 c-parser.c:3146 c-parser.c:3415
+#: c-parser.c:4403 c-parser.c:4493 c-parser.c:5111 c-parser.c:5549
+#: c-parser.c:5571 c-parser.c:5678 c-parser.c:5867 c-parser.c:5896
+#: c-parser.c:6072 c-parser.c:6084 c-parser.c:6109 c-parser.c:6243
+#: c-parser.c:6272 c-parser.c:6280 c-parser.c:6308 c-parser.c:6322
+#: c-parser.c:6538 c-parser.c:6637 c-parser.c:7166 c-parser.c:7894
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c-parser.c:1689 cp/parser.c:11978
+#: c-parser.c:1708 cp/parser.c:12649
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr ""
-#: c-parser.c:1695
+#: c-parser.c:1714
#, gcc-internal-format
msgid "expected %<,%> or %<}%>"
msgstr ""
-#: c-parser.c:1711 c-parser.c:1898 c-parser.c:6286
+#: c-parser.c:1730 c-parser.c:1925 c-parser.c:6397
#, gcc-internal-format
msgid "expected %<{%>"
msgstr ""
-#: c-parser.c:1725
+#: c-parser.c:1744
#, gcc-internal-format
msgid "ISO C forbids forward references to %<enum%> types"
msgstr ""
-#: c-parser.c:1831
+#: c-parser.c:1858
#, gcc-internal-format
msgid "expected class name"
msgstr ""
-#: c-parser.c:1850 c-parser.c:6065
+#: c-parser.c:1877 c-parser.c:6176
#, gcc-internal-format
msgid "extra semicolon in struct or union specified"
msgstr ""
-#: c-parser.c:1879
+#: c-parser.c:1906
#, gcc-internal-format
msgid "no semicolon at end of struct or union"
msgstr ""
-#: c-parser.c:1882
+#: c-parser.c:1909
#, gcc-internal-format
msgid "expected %<;%>"
msgstr ""
-#: c-parser.c:1965 c-parser.c:2943
+#: c-parser.c:1992 c-parser.c:2971
#, gcc-internal-format
msgid "expected specifier-qualifier-list"
msgstr ""
-#: c-parser.c:1975
+#: c-parser.c:2002
#, gcc-internal-format
msgid "ISO C forbids member declarations with no members"
msgstr ""
-#: c-parser.c:2051
+#: c-parser.c:2078
#, gcc-internal-format
msgid "expected %<,%>, %<;%> or %<}%>"
msgstr ""
-#: c-parser.c:2058
+#: c-parser.c:2085
#, gcc-internal-format
msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
msgstr ""
-#: c-parser.c:2111
+#: c-parser.c:2138
#, gcc-internal-format
msgid "%<typeof%> applied to a bit-field"
msgstr ""
-#: c-parser.c:2335
+#: c-parser.c:2362
#, gcc-internal-format
msgid "expected identifier or %<(%>"
msgstr ""
-#: c-parser.c:2537
+#: c-parser.c:2565
#, gcc-internal-format
msgid "ISO C requires a named argument before %<...%>"
msgstr ""
-#: c-parser.c:2645
+#: c-parser.c:2673
#, gcc-internal-format
msgid "expected declaration specifiers or %<...%>"
msgstr ""
-#: c-parser.c:2696
+#: c-parser.c:2724
#, gcc-internal-format
msgid "wide string literal in %<asm%>"
msgstr ""
-#: c-parser.c:2702 c-parser.c:6936
+#: c-parser.c:2730 c-parser.c:7047 cp/parser.c:22825
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
-#: c-parser.c:3035
+#: c-parser.c:3064
#, gcc-internal-format
msgid "ISO C forbids empty initializer braces"
msgstr ""
-#: c-parser.c:3083
+#: c-parser.c:3112
#, gcc-internal-format
msgid "obsolete use of designated initializer with %<:%>"
msgstr ""
-#: c-parser.c:3215
+#: c-parser.c:3247
#, gcc-internal-format
msgid "ISO C forbids specifying range of elements to initialize"
msgstr ""
-#: c-parser.c:3228
+#: c-parser.c:3260
#, gcc-internal-format
msgid "ISO C90 forbids specifying subobject to initialize"
msgstr ""
-#: c-parser.c:3235
+#: c-parser.c:3267
#, gcc-internal-format
msgid "obsolete use of designated initializer without %<=%>"
msgstr ""
-#: c-parser.c:3242
+#: c-parser.c:3274
#, gcc-internal-format
msgid "expected %<=%>"
msgstr ""
-#: c-parser.c:3395
+#: c-parser.c:3430
#, gcc-internal-format
msgid "ISO C forbids label declarations"
msgstr ""
-#: c-parser.c:3401 c-parser.c:3481
+#: c-parser.c:3436 c-parser.c:3516
#, gcc-internal-format
msgid "expected declaration or statement"
msgstr ""
-#: c-parser.c:3433 c-parser.c:3462
+#: c-parser.c:3468 c-parser.c:3497
#, gcc-internal-format
msgid "ISO C90 forbids mixed declarations and code"
msgstr ""
-#: c-parser.c:3489
+#: c-parser.c:3524
#, gcc-internal-format
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:3494
+#: c-parser.c:3529 cp/parser.c:7838
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
-#: c-parser.c:3511
+#: c-parser.c:3546
#, gcc-internal-format
msgid "label at end of compound statement"
msgstr ""
-#: c-parser.c:3556
+#: c-parser.c:3591
#, gcc-internal-format
msgid "expected %<:%> or %<...%>"
msgstr ""
-#: c-parser.c:3590
+#: c-parser.c:3624
#, gcc-internal-format
msgid ""
"a label can only be part of a statement and a declaration is not a statement"
msgstr ""
-#: c-parser.c:3752
+#: c-parser.c:3788
#, gcc-internal-format
msgid "expected identifier or %<*%>"
msgstr ""
@@ -21237,279 +21897,279 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:3816
+#: c-parser.c:3852
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c-parser.c:3911 cp/parser.c:7294
+#: c-parser.c:3950 cp/parser.c:7920
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr ""
-#: c-parser.c:3937 cp/parser.c:7315
+#: c-parser.c:3978 cp/parser.c:7943
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr ""
-#: c-parser.c:4057
+#: c-parser.c:4109
#, gcc-internal-format
msgid "suggest braces around empty body in %<do%> statement"
msgstr ""
-#: c-parser.c:4210
+#: c-parser.c:4270
#, gcc-internal-format
msgid "%E qualifier ignored on asm"
msgstr ""
-#: c-parser.c:4507
+#: c-parser.c:4621
#, gcc-internal-format
msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr ""
-#: c-parser.c:4939
+#: c-parser.c:5076
#, gcc-internal-format
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: c-parser.c:5056
+#: c-parser.c:5200
#, gcc-internal-format
msgid "%<sizeof%> applied to a bit-field"
msgstr ""
-#: c-parser.c:5217 c-parser.c:5561 c-parser.c:5581
+#: c-parser.c:5365 c-parser.c:5715 c-parser.c:5735
#, gcc-internal-format
msgid "expected expression"
msgstr ""
-#: c-parser.c:5243
+#: c-parser.c:5391
#, gcc-internal-format
msgid "braced-group within expression allowed only inside a function"
msgstr ""
-#: c-parser.c:5256
+#: c-parser.c:5404
#, gcc-internal-format
msgid "ISO C forbids braced-groups within expressions"
msgstr ""
-#: c-parser.c:5455
+#: c-parser.c:5609
#, gcc-internal-format
msgid "first argument to %<__builtin_choose_expr%> not a constant"
msgstr ""
-#: c-parser.c:5612
+#: c-parser.c:5770
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:5620
+#: c-parser.c:5778
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr ""
-#: c-parser.c:6282
+#: c-parser.c:6393
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c-parser.c:6830
+#: c-parser.c:6941 cp/parser.c:22869
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6841
+#: c-parser.c:6952 cp/parser.c:22884
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6852
+#: c-parser.c:6963 cp/parser.c:22900
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6865
+#: c-parser.c:6976 cp/parser.c:22928
#, gcc-internal-format
msgid ""
"%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
"construct"
msgstr ""
-#: c-parser.c:6871
+#: c-parser.c:6982 cp/parser.c:22859
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:7029
+#: c-parser.c:7141 cp/parser.c:21149
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr ""
-#: c-parser.c:7125
+#: c-parser.c:7243 cp/parser.c:21263
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:7190
+#: c-parser.c:7309
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:7233
+#: c-parser.c:7353
#, gcc-internal-format
msgid "expected %<(%>"
msgstr ""
-#: c-parser.c:7278 c-parser.c:7463
+#: c-parser.c:7400 c-parser.c:7592
#, gcc-internal-format
msgid "expected integer expression"
msgstr ""
-#: c-parser.c:7288
+#: c-parser.c:7412
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:7368
+#: c-parser.c:7495
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgstr ""
-#: c-parser.c:7454
+#: c-parser.c:7583 cp/parser.c:21551
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:7458
+#: c-parser.c:7587 cp/parser.c:21554
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:7476
+#: c-parser.c:7605
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr ""
-#: c-parser.c:7594
+#: c-parser.c:7725
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:7603
+#: c-parser.c:7734 cp/parser.c:21702
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr ""
-#: c-parser.c:7705
+#: c-parser.c:7838
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:7759 c-parser.c:7779
+#: c-parser.c:7897 c-parser.c:7918
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:7811
+#: c-parser.c:7952
#, gcc-internal-format
msgid "for statement expected"
msgstr ""
-#: c-parser.c:7864
+#: c-parser.c:8005 cp/semantics.c:4313 cp/semantics.c:4383
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c-parser.c:7944
+#: c-parser.c:8085
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:7992
+#: c-parser.c:8138 cp/parser.c:22407
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:8029 cp/pt.c:10584
+#: c-parser.c:8176 cp/parser.c:22251 cp/parser.c:22289 cp/pt.c:11018
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:8179
+#: c-parser.c:8338
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:8449
+#: c-parser.c:8621
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr ""
-#: c-parser.c:8451 cp/semantics.c:3837
+#: c-parser.c:8623 cp/semantics.c:3938
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:8453 cp/semantics.c:3839
+#: c-parser.c:8625 cp/semantics.c:3940
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:8457 cp/semantics.c:3841
+#: c-parser.c:8629 cp/semantics.c:3942
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr ""
-#: c-pch.c:131
+#: c-pch.c:132
#, gcc-internal-format
msgid "can%'t create precompiled header %s: %m"
msgstr ""
-#: c-pch.c:152
+#: c-pch.c:153
#, gcc-internal-format
msgid "can%'t write to %s: %m"
msgstr ""
-#: c-pch.c:158
+#: c-pch.c:159
#, gcc-internal-format
msgid "%qs is not a valid output file"
msgstr ""
-#: c-pch.c:187 c-pch.c:202 c-pch.c:216
+#: c-pch.c:188 c-pch.c:203 c-pch.c:217
#, gcc-internal-format
msgid "can%'t write %s: %m"
msgstr ""
-#: c-pch.c:192 c-pch.c:209
+#: c-pch.c:193 c-pch.c:210
#, gcc-internal-format
msgid "can%'t seek in %s: %m"
msgstr ""
-#: c-pch.c:200 c-pch.c:242 c-pch.c:283 c-pch.c:334
+#: c-pch.c:201 c-pch.c:243 c-pch.c:284 c-pch.c:335
#, gcc-internal-format
msgid "can%'t read %s: %m"
msgstr ""
-#: c-pch.c:465
+#: c-pch.c:466
#, gcc-internal-format
msgid "pch_preprocess pragma should only be used with -fpreprocessed"
msgstr ""
-#: c-pch.c:466
+#: c-pch.c:467
#, gcc-internal-format
msgid "use #include instead"
msgstr ""
-#: c-pch.c:472
+#: c-pch.c:473
#, gcc-internal-format
msgid "%s: couldn%'t open PCH file: %m"
msgstr ""
-#: c-pch.c:477
+#: c-pch.c:478
#, gcc-internal-format
msgid "use -Winvalid-pch for more information"
msgstr ""
-#: c-pch.c:478
+#: c-pch.c:479
#, gcc-internal-format
msgid "%s: PCH file was invalid"
msgstr ""
@@ -21626,357 +22286,362 @@ msgid ""
"applying #pragma weak %q+D after first use results in unspecified behavior"
msgstr ""
-#: c-pragma.c:479 c-pragma.c:484
+#: c-pragma.c:480 c-pragma.c:485
#, gcc-internal-format
msgid "malformed #pragma weak, ignored"
msgstr ""
-#: c-pragma.c:488
+#: c-pragma.c:489
#, gcc-internal-format
msgid "junk at end of %<#pragma weak%>"
msgstr ""
-#: c-pragma.c:556 c-pragma.c:558
+#: c-pragma.c:557 c-pragma.c:559
#, gcc-internal-format
msgid "malformed #pragma redefine_extname, ignored"
msgstr ""
-#: c-pragma.c:561
+#: c-pragma.c:562
#, gcc-internal-format
msgid "junk at end of %<#pragma redefine_extname%>"
msgstr ""
-#: c-pragma.c:567
-#, gcc-internal-format
-msgid "#pragma redefine_extname not supported on this target"
-msgstr ""
-
-#: c-pragma.c:584 c-pragma.c:671
+#: c-pragma.c:577 c-pragma.c:664
#, gcc-internal-format
msgid "#pragma redefine_extname ignored due to conflict with previous rename"
msgstr ""
-#: c-pragma.c:607
+#: c-pragma.c:600
#, gcc-internal-format
msgid ""
"#pragma redefine_extname ignored due to conflict with previous #pragma "
"redefine_extname"
msgstr ""
-#: c-pragma.c:626
+#: c-pragma.c:619
#, gcc-internal-format
msgid "malformed #pragma extern_prefix, ignored"
msgstr ""
-#: c-pragma.c:629
+#: c-pragma.c:622
#, gcc-internal-format
msgid "junk at end of %<#pragma extern_prefix%>"
msgstr ""
-#: c-pragma.c:636
+#: c-pragma.c:629
#, gcc-internal-format
msgid "#pragma extern_prefix not supported on this target"
msgstr ""
-#: c-pragma.c:662
+#: c-pragma.c:655
#, gcc-internal-format
msgid "asm declaration ignored due to conflict with previous rename"
msgstr ""
-#: c-pragma.c:693
+#: c-pragma.c:686
#, gcc-internal-format
msgid ""
"#pragma redefine_extname ignored due to conflict with __asm__ declaration"
msgstr ""
-#: c-pragma.c:755
+#: c-pragma.c:748
#, gcc-internal-format
msgid ""
"#pragma GCC visibility push() must specify default, internal, hidden or "
"protected"
msgstr ""
-#: c-pragma.c:790
+#: c-pragma.c:783
#, gcc-internal-format
msgid "#pragma GCC visibility must be followed by push or pop"
msgstr ""
-#: c-pragma.c:796
+#: c-pragma.c:789
#, gcc-internal-format
msgid "no matching push for %<#pragma GCC visibility pop%>"
msgstr ""
-#: c-pragma.c:803 c-pragma.c:810
+#: c-pragma.c:796 c-pragma.c:803
#, gcc-internal-format
msgid "missing %<(%> after %<#pragma GCC visibility push%> - ignored"
msgstr ""
-#: c-pragma.c:806
+#: c-pragma.c:799
#, gcc-internal-format
msgid "malformed #pragma GCC visibility push"
msgstr ""
-#: c-pragma.c:814
+#: c-pragma.c:807
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC visibility%>"
msgstr ""
-#: c-pragma.c:830
+#: c-pragma.c:823
#, gcc-internal-format
msgid "#pragma GCC diagnostic not allowed inside functions"
msgstr ""
-#: c-pragma.c:836
+#: c-pragma.c:829
#, gcc-internal-format
msgid "missing [error|warning|ignored] after %<#pragma GCC diagnostic%>"
msgstr ""
-#: c-pragma.c:845
+#: c-pragma.c:838
#, gcc-internal-format
msgid "expected [error|warning|ignored] after %<#pragma GCC diagnostic%>"
msgstr ""
-#: c-pragma.c:849
+#: c-pragma.c:842
#, gcc-internal-format
msgid "missing option after %<#pragma GCC diagnostic%> kind"
msgstr ""
-#: c-pragma.c:863
+#: c-pragma.c:856
#, gcc-internal-format
msgid "unknown option after %<#pragma GCC diagnostic%> kind"
msgstr ""
-#: c-pragma.c:876
+#: c-pragma.c:869
#, gcc-internal-format
msgid "#pragma GCC option is not allowed inside functions"
msgstr ""
-#: c-pragma.c:889
+#: c-pragma.c:882
#, gcc-internal-format
msgid "%<#pragma GCC option%> is not a string"
msgstr ""
-#: c-pragma.c:916
+#: c-pragma.c:909
#, gcc-internal-format
msgid ""
"%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>."
msgstr ""
-#: c-pragma.c:922
+#: c-pragma.c:915
#, gcc-internal-format
msgid "#pragma GCC target string... is badly formed"
msgstr ""
-#: c-pragma.c:945
+#: c-pragma.c:938
#, gcc-internal-format
msgid "#pragma GCC optimize is not allowed inside functions"
msgstr ""
-#: c-pragma.c:958
+#: c-pragma.c:951
#, gcc-internal-format
msgid "%<#pragma GCC optimize%> is not a string or number"
msgstr ""
-#: c-pragma.c:984
+#: c-pragma.c:977
#, gcc-internal-format
msgid ""
"%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>."
msgstr ""
-#: c-pragma.c:990
+#: c-pragma.c:983
#, gcc-internal-format
msgid "#pragma GCC optimize string... is badly formed"
msgstr ""
-#: c-pragma.c:1032
+#: c-pragma.c:1025
#, gcc-internal-format
msgid "junk at end of %<#pragma push_options%>"
msgstr ""
-#: c-pragma.c:1062
+#: c-pragma.c:1055
#, gcc-internal-format
msgid "junk at end of %<#pragma pop_options%>"
msgstr ""
-#: c-pragma.c:1069
+#: c-pragma.c:1062
#, gcc-internal-format
msgid ""
"%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC "
"push_options%>"
msgstr ""
-#: c-pragma.c:1110
+#: c-pragma.c:1103
#, gcc-internal-format
msgid "junk at end of %<#pragma reset_options%>"
msgstr ""
-#: c-pragma.c:1147 c-pragma.c:1154
+#: c-pragma.c:1140 c-pragma.c:1147
#, gcc-internal-format
msgid "expected a string after %<#pragma message%>"
msgstr ""
-#: c-pragma.c:1149
+#: c-pragma.c:1142
#, gcc-internal-format
msgid "malformed %<#pragma message%>, ignored"
msgstr ""
-#: c-pragma.c:1159
+#: c-pragma.c:1152
#, gcc-internal-format
msgid "junk at end of %<#pragma message%>"
msgstr ""
-#: c-pragma.c:1162
+#: c-pragma.c:1155
#, gcc-internal-format
msgid "#pragma message: %s"
msgstr ""
-#: c-pragma.c:1199
+#: c-pragma.c:1192
#, gcc-internal-format
msgid "invalid location for %<pragma %s%>, ignored"
msgstr ""
-#: c-pragma.c:1206 c-pragma.c:1220
+#: c-pragma.c:1199 c-pragma.c:1213
#, gcc-internal-format
msgid "malformed %<#pragma %s%>, ignored"
msgstr ""
-#: c-pragma.c:1226
+#: c-pragma.c:1219
#, gcc-internal-format
msgid "junk at end of %<#pragma %s%>"
msgstr ""
-#: c-pragma.c:1244
+#: c-pragma.c:1237
#, gcc-internal-format
msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++"
msgstr ""
-#: c-pragma.c:1253
+#: c-pragma.c:1246
#, gcc-internal-format
msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target"
msgstr ""
-#: c-pragma.c:1259
+#: c-pragma.c:1252
#, gcc-internal-format
msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"
msgstr ""
-#: c-typeck.c:217
+#: c-typeck.c:215
#, gcc-internal-format
msgid "%qD has an incomplete type"
msgstr ""
-#: c-typeck.c:238 cp/call.c:2920
+#: c-typeck.c:236 cp/call.c:3092
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr ""
-#: c-typeck.c:246
+#: c-typeck.c:244
#, gcc-internal-format
msgid "invalid use of flexible array member"
msgstr ""
-#: c-typeck.c:252
+#: c-typeck.c:250
#, gcc-internal-format
msgid "invalid use of array with unspecified bounds"
msgstr ""
-#: c-typeck.c:260
+#: c-typeck.c:258
#, gcc-internal-format
msgid "invalid use of undefined type %<%s %E%>"
msgstr ""
#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
-#: c-typeck.c:264
+#: c-typeck.c:262
#, gcc-internal-format
msgid "invalid use of incomplete typedef %qD"
msgstr ""
-#: c-typeck.c:530 c-typeck.c:555
+#: c-typeck.c:528 c-typeck.c:553
#, gcc-internal-format
msgid "function types not truly compatible in ISO C"
msgstr ""
-#: c-typeck.c:683
+#: c-typeck.c:681
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and vector types"
msgstr ""
-#: c-typeck.c:688
+#: c-typeck.c:686
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and complex types"
msgstr ""
-#: c-typeck.c:693
+#: c-typeck.c:691
#, gcc-internal-format
msgid "can%'t mix operands of decimal float and other float types"
msgstr ""
-#: c-typeck.c:1099
+#: c-typeck.c:1128
#, gcc-internal-format
msgid "types are not quite compatible"
msgstr ""
-#: c-typeck.c:1422
+#: c-typeck.c:1132
+#, gcc-internal-format
+msgid "pointer target types incompatible in C++"
+msgstr ""
+
+#: c-typeck.c:1462
#, gcc-internal-format
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c-typeck.c:1581 c-typeck.c:3059
+#: c-typeck.c:1624 c-typeck.c:3132
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:1926
+#: c-typeck.c:1977
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr ""
-#: c-typeck.c:1978
+#: c-typeck.c:2031
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr ""
-#: c-typeck.c:2027
+#: c-typeck.c:2080
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2031
+#: c-typeck.c:2084
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c-typeck.c:2050
+#: c-typeck.c:2103
#, gcc-internal-format
msgid "invalid type argument of %qs (have %qT)"
msgstr ""
-#: c-typeck.c:2081 cp/typeck.c:2697
+#: c-typeck.c:2134 cp/typeck.c:2715
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: c-typeck.c:2092 cp/typeck.c:2612 cp/typeck.c:2702
+#: c-typeck.c:2145 cp/typeck.c:2630 cp/typeck.c:2720
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:2098
+#: c-typeck.c:2151
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr ""
-#: c-typeck.c:2146
+#: c-typeck.c:2199
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr ""
-#: c-typeck.c:2149
+#: c-typeck.c:2202
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:2474
+#: c-typeck.c:2310
+#, gcc-internal-format
+msgid "enum constant defined here"
+msgstr ""
+
+#: c-typeck.c:2541
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr ""
@@ -21984,362 +22649,370 @@ msgstr ""
#. 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:2510
+#: c-typeck.c:2577
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2524 c-typeck.c:2577
+#: c-typeck.c:2591 c-typeck.c:2645
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr ""
-#: c-typeck.c:2699
+#: c-typeck.c:2767
#, gcc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:2714
+#: c-typeck.c:2782
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:2719
+#: c-typeck.c:2787
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:2724
+#: c-typeck.c:2792
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:2729
+#: c-typeck.c:2797
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:2734
+#: c-typeck.c:2802
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:2739
+#: c-typeck.c:2807
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:2752
+#: c-typeck.c:2820
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as %<float%> rather than %<double%> due to "
"prototype"
msgstr ""
-#: c-typeck.c:2777
+#: c-typeck.c:2845
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr ""
-#: c-typeck.c:2798
+#: c-typeck.c:2867
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c-typeck.c:2821
+#: c-typeck.c:2891
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:2825
+#: c-typeck.c:2896
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr ""
-#: c-typeck.c:2962 c-typeck.c:2966
+#: c-typeck.c:3034 c-typeck.c:3039
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr ""
-#: c-typeck.c:2980
+#: c-typeck.c:3053
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c-typeck.c:3000
+#: c-typeck.c:3073
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c-typeck.c:3003
+#: c-typeck.c:3076
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:3130
+#: c-typeck.c:3204
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr ""
-#: c-typeck.c:3143
+#: c-typeck.c:3217
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr ""
-#: c-typeck.c:3163
+#: c-typeck.c:3237
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr ""
-#: c-typeck.c:3169
+#: c-typeck.c:3243
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr ""
-#: c-typeck.c:3177
+#: c-typeck.c:3251
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr ""
-#: c-typeck.c:3189
+#: c-typeck.c:3263
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr ""
-#: c-typeck.c:3202
+#: c-typeck.c:3276
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:3269
+#: c-typeck.c:3340
+#, gcc-internal-format
+msgid "increment of enumeration value is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:3343
+#, gcc-internal-format
+msgid "decrement of enumeration value is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:3356
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr ""
-#: c-typeck.c:3288 c-typeck.c:3320
+#: c-typeck.c:3375 c-typeck.c:3407
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:3290 c-typeck.c:3323
+#: c-typeck.c:3377 c-typeck.c:3410
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:3310
+#: c-typeck.c:3397
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3313
+#: c-typeck.c:3400
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3390
+#: c-typeck.c:3477
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3557
+#: c-typeck.c:3646
#, gcc-internal-format
msgid "assignment of read-only member %qD"
msgstr ""
-#: c-typeck.c:3558
+#: c-typeck.c:3647
#, gcc-internal-format
msgid "increment of read-only member %qD"
msgstr ""
-#: c-typeck.c:3559
+#: c-typeck.c:3648
#, gcc-internal-format
msgid "decrement of read-only member %qD"
msgstr ""
-#: c-typeck.c:3560
+#: c-typeck.c:3649
#, gcc-internal-format
msgid "read-only member %qD used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3564
+#: c-typeck.c:3653
#, gcc-internal-format
msgid "assignment of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3565
+#: c-typeck.c:3654
#, gcc-internal-format
msgid "increment of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3566
+#: c-typeck.c:3655
#, gcc-internal-format
msgid "decrement of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3567
+#: c-typeck.c:3656
#, gcc-internal-format
msgid "read-only variable %qD used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3570 c-typeck.c:3586
+#: c-typeck.c:3659 c-typeck.c:3675
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3571 c-typeck.c:3589
+#: c-typeck.c:3660 c-typeck.c:3678
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3572 c-typeck.c:3592
+#: c-typeck.c:3661 c-typeck.c:3681
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr ""
-#: c-typeck.c:3573
+#: c-typeck.c:3662
#, gcc-internal-format
msgid "read-only location %qE used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3632
+#: c-typeck.c:3721
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr ""
-#: c-typeck.c:3660
+#: c-typeck.c:3749
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:3663
+#: c-typeck.c:3752
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:3668
+#: c-typeck.c:3757
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c-typeck.c:3670
+#: c-typeck.c:3759
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c-typeck.c:3735
+#: c-typeck.c:3826
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c-typeck.c:3824
-#, gcc-internal-format
-msgid "signed and unsigned type in conditional expression"
-msgstr ""
-
-#: c-typeck.c:3846
+#: c-typeck.c:3954
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:3861 c-typeck.c:3870
+#: c-typeck.c:3969 c-typeck.c:3978
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c-typeck.c:3879
+#: c-typeck.c:3987
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3887 c-typeck.c:3898
+#: c-typeck.c:3995 c-typeck.c:4006
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3912
+#: c-typeck.c:4020
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4005
+#: c-typeck.c:4116
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:4057
+#: c-typeck.c:4181
#, gcc-internal-format
-msgid "cast specifies array type"
+msgid "cast adds new qualifiers to function type"
msgstr ""
-#: c-typeck.c:4063
+#: c-typeck.c:4187
#, gcc-internal-format
-msgid "cast specifies function type"
+msgid "cast discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4079
+#: c-typeck.c:4257
#, gcc-internal-format
-msgid "ISO C forbids casting nonscalar to the same type"
+msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:4096
+#: c-typeck.c:4263
#, gcc-internal-format
-msgid "ISO C forbids casts to union type"
+msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:4103
+#: c-typeck.c:4279
#, gcc-internal-format
-msgid "cast to union type from type not present in union"
+msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:4149
+#: c-typeck.c:4295
#, gcc-internal-format
-msgid "cast adds new qualifiers to function type"
+msgid "ISO C forbids casts to union type"
msgstr ""
-#. There are qualifiers present in IN_OTYPE that are not
-#. present in IN_TYPE.
-#: c-typeck.c:4154
+#: c-typeck.c:4302
#, gcc-internal-format
-msgid "cast discards qualifiers from pointer target type"
+msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:4170
+#: c-typeck.c:4337
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4181
+#: c-typeck.c:4348
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:4185
+#: c-typeck.c:4353
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4193
+#: c-typeck.c:4362
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:4207
+#: c-typeck.c:4376
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c-typeck.c:4216
+#: c-typeck.c:4385
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
-#: c-typeck.c:4407 c-typeck.c:4572
+#: c-typeck.c:4467
+#, gcc-internal-format
+msgid "defining a type in a cast is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:4592 c-typeck.c:4759
#, gcc-internal-format
msgid "enum conversion in assignment is invalid in C++"
msgstr ""
@@ -22347,493 +23020,456 @@ msgstr ""
#. This macro is used to emit diagnostics to ensure that all format
#. strings are complete sentences, visible to gettext and checked at
#. compile time.
-#: c-typeck.c:4510 c-typeck.c:4975
+#: c-typeck.c:4697 c-typeck.c:5168
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:4570
+#: c-typeck.c:4757
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:4576
+#: c-typeck.c:4763
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:4605
+#: c-typeck.c:4792
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:4728 c-typeck.c:4897
+#: c-typeck.c:4920 c-typeck.c:5090
#, gcc-internal-format
msgid ""
"passing argument %d of %qE makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4731 c-typeck.c:4900
+#: c-typeck.c:4923 c-typeck.c:5093
#, gcc-internal-format
msgid "assignment makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4734 c-typeck.c:4902
+#: c-typeck.c:4926 c-typeck.c:5095
#, gcc-internal-format
msgid "initialization makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4737 c-typeck.c:4904
+#: c-typeck.c:4929 c-typeck.c:5097
#, gcc-internal-format
msgid "return makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4742 c-typeck.c:4862
+#: c-typeck.c:4934 c-typeck.c:5055
#, gcc-internal-format
msgid "passing argument %d of %qE discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4744 c-typeck.c:4864
+#: c-typeck.c:4936 c-typeck.c:5057
#, gcc-internal-format
msgid "assignment discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4746 c-typeck.c:4866
+#: c-typeck.c:4938 c-typeck.c:5059
#, gcc-internal-format
msgid "initialization discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4748 c-typeck.c:4868
+#: c-typeck.c:4940 c-typeck.c:5061
#, gcc-internal-format
msgid "return discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4756
+#: c-typeck.c:4948
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:4789
+#: c-typeck.c:4982
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:4801
+#: c-typeck.c:4994
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4807
+#: c-typeck.c:5000
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4812
+#: c-typeck.c:5005
#, gcc-internal-format
msgid ""
"initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4817
+#: c-typeck.c:5010
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4841
+#: c-typeck.c:5034
#, gcc-internal-format
msgid ""
"ISO C forbids passing argument %d of %qE between function pointer and %<void "
"*%>"
msgstr ""
-#: c-typeck.c:4844
+#: c-typeck.c:5037
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4846
+#: c-typeck.c:5039
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4848
+#: c-typeck.c:5041
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4879
+#: c-typeck.c:5072
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:4881
+#: c-typeck.c:5074
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:4883
+#: c-typeck.c:5076
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:4885
+#: c-typeck.c:5078
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:4912
+#: c-typeck.c:5105
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4914
+#: c-typeck.c:5107
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4915
+#: c-typeck.c:5108
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4917
+#: c-typeck.c:5110
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4935
+#: c-typeck.c:5128
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4937
+#: c-typeck.c:5130
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4939
+#: c-typeck.c:5132
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4941
+#: c-typeck.c:5134
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4949
+#: c-typeck.c:5142
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4951
+#: c-typeck.c:5144
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4953
+#: c-typeck.c:5146
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4955
+#: c-typeck.c:5148
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4978
+#: c-typeck.c:5171
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr ""
-#: c-typeck.c:4982
+#: c-typeck.c:5176
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr ""
-#: c-typeck.c:4986
+#: c-typeck.c:5181
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5047
+#: c-typeck.c:5245
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:5220 c-typeck.c:5236 c-typeck.c:5253
+#: c-typeck.c:5418 c-typeck.c:5434 c-typeck.c:5451
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr ""
-#: c-typeck.c:5841 cp/decl.c:5148
+#: c-typeck.c:6054 cp/decl.c:5202
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c-typeck.c:6506
+#: c-typeck.c:6719
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7485
+#: c-typeck.c:7698
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:7804
-#, gcc-internal-format
-msgid "jump into statement expression"
-msgstr ""
-
-#: c-typeck.c:7810
-#, gcc-internal-format
-msgid "jump into scope of identifier with variably modified type"
-msgstr ""
-
-#: c-typeck.c:7846
+#: c-typeck.c:8037
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c-typeck.c:7864 cp/typeck.c:6858
+#: c-typeck.c:8059 cp/typeck.c:6998
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr ""
-#: c-typeck.c:7887
+#: c-typeck.c:8082
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:7897
+#: c-typeck.c:8092
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr ""
-#: c-typeck.c:7899
+#: c-typeck.c:8094
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr ""
-#: c-typeck.c:7958
+#: c-typeck.c:8155
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:8033 cp/semantics.c:951
+#: c-typeck.c:8228 cp/semantics.c:952
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:8045
+#: c-typeck.c:8241
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8081 c-typeck.c:8089
+#: c-typeck.c:8277 c-typeck.c:8285
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr ""
-#: c-typeck.c:8105
-#, gcc-internal-format
-msgid ""
-"case label in statement expression not containing enclosing switch statement"
-msgstr ""
-
-#: c-typeck.c:8108
-#, gcc-internal-format
-msgid ""
-"%<default%> label in statement expression not containing enclosing switch "
-"statement"
-msgstr ""
-
-#: c-typeck.c:8114
-#, gcc-internal-format
-msgid ""
-"case label in scope of identifier with variably modified type not containing "
-"enclosing switch statement"
-msgstr ""
-
-#: c-typeck.c:8117
-#, gcc-internal-format
-msgid ""
-"%<default%> label in scope of identifier with variably modified type not "
-"containing enclosing switch statement"
-msgstr ""
-
-#: c-typeck.c:8121
+#: c-typeck.c:8291 cp/parser.c:7698
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8123
+#: c-typeck.c:8293
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:8200
+#: c-typeck.c:8376 cp/parser.c:7969
#, gcc-internal-format
-msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
+msgid "suggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:8309 cp/cp-gimplify.c:92
+#: c-typeck.c:8485 cp/cp-gimplify.c:92 cp/parser.c:8319
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c-typeck.c:8311
+#: c-typeck.c:8487 cp/parser.c:8340
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:8316
+#: c-typeck.c:8492 cp/parser.c:8330
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c-typeck.c:8342
+#: c-typeck.c:8518 cp/cp-gimplify.c:412
#, gcc-internal-format
-msgid "%Hstatement with no effect"
+msgid "statement with no effect"
msgstr ""
-#: c-typeck.c:8366
+#: c-typeck.c:8542
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:9032 cp/typeck.c:3529
+#: c-typeck.c:9117 cp/typeck.c:3589
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:9043 cp/typeck.c:3535
+#: c-typeck.c:9128 cp/typeck.c:3596
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9069 cp/typeck.c:3556
+#: c-typeck.c:9154 cp/typeck.c:3618
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9076 cp/typeck.c:3561
+#: c-typeck.c:9161 cp/typeck.c:3624
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:9096 cp/typeck.c:3607
+#: c-typeck.c:9181 cp/typeck.c:3670
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:9120 c-typeck.c:9127
+#: c-typeck.c:9205 c-typeck.c:9212
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr ""
-#: c-typeck.c:9134 c-typeck.c:9196
+#: c-typeck.c:9219 c-typeck.c:9281
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:9144 c-typeck.c:9153 cp/typeck.c:3630 cp/typeck.c:3642
+#: c-typeck.c:9229 c-typeck.c:9238 cp/typeck.c:3693 cp/typeck.c:3705
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:9160 c-typeck.c:9165 c-typeck.c:9218 c-typeck.c:9223
+#: c-typeck.c:9245 c-typeck.c:9250 c-typeck.c:9303 c-typeck.c:9308
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:9187
+#: c-typeck.c:9272
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:9189
+#: c-typeck.c:9274
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:9204 c-typeck.c:9207 c-typeck.c:9213
+#: c-typeck.c:9289 c-typeck.c:9292 c-typeck.c:9298
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:9539
+#: c-typeck.c:9620
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c-typeck.c:9543
+#: c-typeck.c:9624
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c-typeck.c:9547
+#: c-typeck.c:9628
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c-typeck.c:9699 cp/semantics.c:3720
+#: c-typeck.c:9785 cp/semantics.c:3821
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr ""
-#: c-typeck.c:9733 cp/semantics.c:3733
+#: c-typeck.c:9820 cp/semantics.c:3834
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:9749 cp/semantics.c:3743
+#: c-typeck.c:9837 cp/semantics.c:3844
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:9758 cp/semantics.c:3540
+#: c-typeck.c:9847 cp/semantics.c:3641
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c-typeck.c:9765 c-typeck.c:9785 c-typeck.c:9805
+#: c-typeck.c:9855 c-typeck.c:9877 c-typeck.c:9899
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:9779 cp/semantics.c:3563
+#: c-typeck.c:9870 cp/semantics.c:3664
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:9799 cp/semantics.c:3585
+#: c-typeck.c:9892 cp/semantics.c:3686
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:9859 cp/semantics.c:3784
+#: c-typeck.c:9954 cp/semantics.c:3885
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: calls.c:2056
+#: c-typeck.c:10043
#, gcc-internal-format
-msgid "function call has aggregate value"
+msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
msgstr ""
-#: cfgexpand.c:318
+#: calls.c:2057
#, gcc-internal-format
-msgid "Unrecognized GIMPLE statement during RTL expansion"
+msgid "function call has aggregate value"
msgstr ""
-#: cfgexpand.c:2477
+#: cfgexpand.c:3578
#, gcc-internal-format
msgid "not protecting local variables: variable length buffer"
msgstr ""
-#: cfgexpand.c:2480
+#: cfgexpand.c:3581
#, gcc-internal-format
msgid "not protecting function: no buffer at least %d bytes long"
msgstr ""
@@ -22888,7 +23524,7 @@ msgstr ""
msgid "verify_flow_info: Basic block %d succ edge is corrupted"
msgstr ""
-#: cfghooks.c:197 cfgrtl.c:1856
+#: cfghooks.c:197
#, gcc-internal-format
msgid "wrong amount of branch edges after unconditional jump %i"
msgstr ""
@@ -22933,492 +23569,512 @@ msgstr ""
msgid "%s does not support split_block"
msgstr ""
-#: cfghooks.c:482
+#: cfghooks.c:483
#, gcc-internal-format
msgid "%s does not support move_block_after"
msgstr ""
-#: cfghooks.c:495
+#: cfghooks.c:496
#, gcc-internal-format
msgid "%s does not support delete_basic_block"
msgstr ""
-#: cfghooks.c:545
+#: cfghooks.c:546
#, gcc-internal-format
msgid "%s does not support split_edge"
msgstr ""
-#: cfghooks.c:618
+#: cfghooks.c:619
#, gcc-internal-format
msgid "%s does not support create_basic_block"
msgstr ""
-#: cfghooks.c:646
+#: cfghooks.c:647
#, gcc-internal-format
msgid "%s does not support can_merge_blocks_p"
msgstr ""
-#: cfghooks.c:657
+#: cfghooks.c:658
#, gcc-internal-format
msgid "%s does not support predict_edge"
msgstr ""
-#: cfghooks.c:666
+#: cfghooks.c:667
#, gcc-internal-format
msgid "%s does not support predicted_by_p"
msgstr ""
-#: cfghooks.c:680
+#: cfghooks.c:681
#, gcc-internal-format
msgid "%s does not support merge_blocks"
msgstr ""
-#: cfghooks.c:733
+#: cfghooks.c:734
#, gcc-internal-format
msgid "%s does not support make_forwarder_block"
msgstr ""
-#: cfghooks.c:880
+#: cfghooks.c:881
#, gcc-internal-format
msgid "%s does not support can_duplicate_block_p"
msgstr ""
-#: cfghooks.c:902
+#: cfghooks.c:903
#, gcc-internal-format
msgid "%s does not support duplicate_block"
msgstr ""
-#: cfghooks.c:979
+#: cfghooks.c:980
#, gcc-internal-format
msgid "%s does not support block_ends_with_call_p"
msgstr ""
-#: cfghooks.c:990
+#: cfghooks.c:991
#, gcc-internal-format
msgid "%s does not support block_ends_with_condjump_p"
msgstr ""
-#: cfghooks.c:1008
+#: cfghooks.c:1009
#, gcc-internal-format
msgid "%s does not support flow_call_edges_add"
msgstr ""
-#: cfgloop.c:1344
+#: cfgloop.c:1345
#, gcc-internal-format
msgid "size of loop %d should be %d, not %d"
msgstr ""
-#: cfgloop.c:1358
+#: cfgloop.c:1359
#, gcc-internal-format
msgid "bb %d do not belong to loop %d"
msgstr ""
-#: cfgloop.c:1373
+#: cfgloop.c:1374
#, gcc-internal-format
msgid "loop %d's header does not have exactly 2 entries"
msgstr ""
-#: cfgloop.c:1380
+#: cfgloop.c:1381
#, gcc-internal-format
msgid "loop %d's latch does not have exactly 1 successor"
msgstr ""
-#: cfgloop.c:1385
+#: cfgloop.c:1386
#, gcc-internal-format
msgid "loop %d's latch does not have header as successor"
msgstr ""
-#: cfgloop.c:1390
+#: cfgloop.c:1391
#, gcc-internal-format
msgid "loop %d's latch does not belong directly to it"
msgstr ""
-#: cfgloop.c:1396
+#: cfgloop.c:1397
#, gcc-internal-format
msgid "loop %d's header does not belong directly to it"
msgstr ""
-#: cfgloop.c:1402
+#: cfgloop.c:1403
#, gcc-internal-format
msgid "loop %d's latch is marked as part of irreducible region"
msgstr ""
-#: cfgloop.c:1435
+#: cfgloop.c:1436
#, gcc-internal-format
msgid "basic block %d should be marked irreducible"
msgstr ""
-#: cfgloop.c:1441
+#: cfgloop.c:1442
#, gcc-internal-format
msgid "basic block %d should not be marked irreducible"
msgstr ""
-#: cfgloop.c:1449
+#: cfgloop.c:1450
#, gcc-internal-format
msgid "edge from %d to %d should be marked irreducible"
msgstr ""
-#: cfgloop.c:1456
+#: cfgloop.c:1457
#, gcc-internal-format
msgid "edge from %d to %d should not be marked irreducible"
msgstr ""
-#: cfgloop.c:1471
+#: cfgloop.c:1472
#, gcc-internal-format
msgid "corrupted head of the exits list of loop %d"
msgstr ""
-#: cfgloop.c:1489
+#: cfgloop.c:1490
#, gcc-internal-format
msgid "corrupted exits list of loop %d"
msgstr ""
-#: cfgloop.c:1498
+#: cfgloop.c:1499
#, gcc-internal-format
msgid "nonempty exits list of loop %d, but exits are not recorded"
msgstr ""
-#: cfgloop.c:1524
+#: cfgloop.c:1525
#, gcc-internal-format
msgid "Exit %d->%d not recorded"
msgstr ""
-#: cfgloop.c:1542
+#: cfgloop.c:1543
#, gcc-internal-format
msgid "Wrong list of exited loops for edge %d->%d"
msgstr ""
-#: cfgloop.c:1551
+#: cfgloop.c:1552
#, gcc-internal-format
msgid "Too many loop exits recorded"
msgstr ""
-#: cfgloop.c:1562
+#: cfgloop.c:1563
#, gcc-internal-format
msgid "%d exits recorded for loop %d (having %d exits)"
msgstr ""
-#: cfgrtl.c:1750
+#: cfgrtl.c:1830
#, gcc-internal-format
msgid "BB_RTL flag not set for block %d"
msgstr ""
-#: cfgrtl.c:1757
+#: cfgrtl.c:1837
#, gcc-internal-format
msgid "insn %d basic block pointer is %d, should be %d"
msgstr ""
-#: cfgrtl.c:1768
+#: cfgrtl.c:1848
#, gcc-internal-format
msgid "insn %d in header of bb %d has non-NULL basic block"
msgstr ""
-#: cfgrtl.c:1776
+#: cfgrtl.c:1856
#, gcc-internal-format
msgid "insn %d in footer of bb %d has non-NULL basic block"
msgstr ""
-#: cfgrtl.c:1798
+#: cfgrtl.c:1878
#, gcc-internal-format
msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
msgstr ""
-#: cfgrtl.c:1813
+#: cfgrtl.c:1893
#, gcc-internal-format
msgid "fallthru edge crosses section boundary (bb %i)"
msgstr ""
-#: cfgrtl.c:1838
+#: cfgrtl.c:1917
#, gcc-internal-format
msgid "missing REG_EH_REGION note in the end of bb %i"
msgstr ""
-#: cfgrtl.c:1846
+#: cfgrtl.c:1922
+#, gcc-internal-format
+msgid "too many eh edges %i"
+msgstr ""
+
+#: cfgrtl.c:1930
#, gcc-internal-format
msgid "too many outgoing branch edges from bb %i"
msgstr ""
-#: cfgrtl.c:1851
+#: cfgrtl.c:1935
#, gcc-internal-format
msgid "fallthru edge after unconditional jump %i"
msgstr ""
-#: cfgrtl.c:1862
+#: cfgrtl.c:1940
+#, gcc-internal-format
+msgid "wrong number of branch edges after unconditional jump %i"
+msgstr ""
+
+#: cfgrtl.c:1947
#, gcc-internal-format
msgid "wrong amount of branch edges after conditional jump %i"
msgstr ""
-#: cfgrtl.c:1868
+#: cfgrtl.c:1953
#, gcc-internal-format
msgid "call edges for non-call insn in bb %i"
msgstr ""
-#: cfgrtl.c:1877
+#: cfgrtl.c:1962
#, gcc-internal-format
msgid "abnormal edges for no purpose in bb %i"
msgstr ""
-#: cfgrtl.c:1889
+#: cfgrtl.c:1974
#, gcc-internal-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
msgstr ""
-#: cfgrtl.c:1893
+#: cfgrtl.c:1978
#, gcc-internal-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
msgstr ""
-#: cfgrtl.c:1907 cfgrtl.c:1917
+#: cfgrtl.c:1992 cfgrtl.c:2002
#, gcc-internal-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr ""
-#: cfgrtl.c:1930
+#: cfgrtl.c:2015
#, gcc-internal-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
msgstr ""
-#: cfgrtl.c:1940
+#: cfgrtl.c:2025
#, gcc-internal-format
msgid "in basic block %d:"
msgstr ""
-#: cfgrtl.c:1993 cfgrtl.c:2083
+#: cfgrtl.c:2078 cfgrtl.c:2170
#, gcc-internal-format
msgid "insn %d outside of basic blocks has non-NULL bb field"
msgstr ""
-#: cfgrtl.c:2001
+#: cfgrtl.c:2086
#, gcc-internal-format
msgid "end insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:2014
+#: cfgrtl.c:2099
#, gcc-internal-format
msgid "insn %d is in multiple basic blocks (%d and %d)"
msgstr ""
-#: cfgrtl.c:2026
+#: cfgrtl.c:2111
#, gcc-internal-format
msgid "head insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:2046
+#: cfgrtl.c:2130
#, gcc-internal-format
msgid "missing barrier after block %i"
msgstr ""
-#: cfgrtl.c:2059
+#: cfgrtl.c:2146
#, gcc-internal-format
msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2068
+#: cfgrtl.c:2155
#, gcc-internal-format
msgid "verify_flow_info: Incorrect fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2101
+#: cfgrtl.c:2188
#, gcc-internal-format
msgid "basic blocks not laid down consecutively"
msgstr ""
-#: cfgrtl.c:2140
+#: cfgrtl.c:2225
#, gcc-internal-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: cgraph.c:1494
+#: cgraph.c:1601
#, gcc-internal-format
msgid "%D renamed after being referenced in assembly"
msgstr ""
-#: cgraphunit.c:580
+#: cgraphunit.c:581
#, gcc-internal-format
msgid "aux field set for edge %s->%s"
msgstr ""
-#: cgraphunit.c:587
+#: cgraphunit.c:588
#, gcc-internal-format
msgid "Execution count is negative"
msgstr ""
-#: cgraphunit.c:594
+#: cgraphunit.c:593
+#, gcc-internal-format
+msgid "Externally visible inline clone"
+msgstr ""
+
+#: cgraphunit.c:598
+#, gcc-internal-format
+msgid "Inline clone with address taken"
+msgstr ""
+
+#: cgraphunit.c:603
+#, gcc-internal-format
+msgid "Inline clone is needed"
+msgstr ""
+
+#: cgraphunit.c:610
#, gcc-internal-format
msgid "caller edge count is negative"
msgstr ""
-#: cgraphunit.c:599
+#: cgraphunit.c:615
#, gcc-internal-format
msgid "caller edge frequency is negative"
msgstr ""
-#: cgraphunit.c:604
+#: cgraphunit.c:620
#, gcc-internal-format
msgid "caller edge frequency is too large"
msgstr ""
-#: cgraphunit.c:613
+#: cgraphunit.c:629
#, gcc-internal-format
msgid "inlined_to pointer is wrong"
msgstr ""
-#: cgraphunit.c:618
+#: cgraphunit.c:634
#, gcc-internal-format
msgid "multiple inline callers"
msgstr ""
-#: cgraphunit.c:625
+#: cgraphunit.c:641
#, gcc-internal-format
msgid "inlined_to pointer set for noninline callers"
msgstr ""
-#: cgraphunit.c:631
+#: cgraphunit.c:647
#, gcc-internal-format
msgid "inlined_to pointer is set but no predecessors found"
msgstr ""
-#: cgraphunit.c:636
+#: cgraphunit.c:652
#, gcc-internal-format
msgid "inlined_to pointer refers to itself"
msgstr ""
-#: cgraphunit.c:642
+#: cgraphunit.c:658
#, gcc-internal-format
msgid "node not found in cgraph_hash"
msgstr ""
-#: cgraphunit.c:654
+#: cgraphunit.c:670
#, gcc-internal-format
msgid "node has wrong clone_of"
msgstr ""
-#: cgraphunit.c:666
+#: cgraphunit.c:682
#, gcc-internal-format
msgid "node has wrong clone list"
msgstr ""
-#: cgraphunit.c:672
+#: cgraphunit.c:688
#, gcc-internal-format
msgid "node is in clone list but it is not clone"
msgstr ""
-#: cgraphunit.c:677
+#: cgraphunit.c:693
#, gcc-internal-format
msgid "node has wrong prev_clone pointer"
msgstr ""
-#: cgraphunit.c:682
+#: cgraphunit.c:698
#, gcc-internal-format
msgid "double linked list of clones corrupted"
msgstr ""
-#: cgraphunit.c:711
+#: cgraphunit.c:728
#, gcc-internal-format
msgid "shared call_stmt:"
msgstr ""
-#: cgraphunit.c:718
+#: cgraphunit.c:735
#, gcc-internal-format
msgid "edge points to wrong declaration:"
msgstr ""
-#: cgraphunit.c:727
+#: cgraphunit.c:744
#, gcc-internal-format
msgid "missing callgraph edge for call stmt:"
msgstr ""
-#: cgraphunit.c:743
+#: cgraphunit.c:760
#, gcc-internal-format
msgid "edge %s->%s has no corresponding call_stmt"
msgstr ""
-#: cgraphunit.c:755
+#: cgraphunit.c:772
#, gcc-internal-format
msgid "verify_cgraph_node failed"
msgstr ""
-#: cgraphunit.c:848 cgraphunit.c:871
+#: cgraphunit.c:875 cgraphunit.c:894
#, gcc-internal-format
-msgid "%J%<externally_visible%> attribute have effect only on public objects"
+msgid "%<externally_visible%> attribute have effect only on public objects"
msgstr ""
-#: cgraphunit.c:1065
+#: cgraphunit.c:1132
#, gcc-internal-format
msgid "failed to reclaim unneeded function"
msgstr ""
-#: cgraphunit.c:1400
+#: cgraphunit.c:1492
#, gcc-internal-format
msgid "nodes with unreleased memory found"
msgstr ""
-#: collect2.c:1210
+#: collect2.c:1588
#, gcc-internal-format
msgid "unknown demangling style '%s'"
msgstr ""
-#: collect2.c:1533
+#: collect2.c:1946 lto/lto.c:1172
#, gcc-internal-format
msgid "%s terminated with signal %d [%s]%s"
msgstr ""
-#: collect2.c:1551
-#, gcc-internal-format
-msgid "%s returned %d exit status"
-msgstr ""
-
-#: collect2.c:2262
+#: collect2.c:2748
#, gcc-internal-format
msgid "cannot find 'ldd'"
msgstr ""
-#: convert.c:69
+#: convert.c:79
#, gcc-internal-format
msgid "cannot convert to a pointer type"
msgstr ""
-#: convert.c:370
+#: convert.c:380
#, gcc-internal-format
msgid "pointer value used where a floating point value was expected"
msgstr ""
-#: convert.c:374
+#: convert.c:384
#, gcc-internal-format
msgid "aggregate value used where a float was expected"
msgstr ""
-#: convert.c:399
+#: convert.c:409
#, gcc-internal-format
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:769 convert.c:845
+#: convert.c:819 convert.c:895
#, gcc-internal-format
msgid "can't convert between vector values of different size"
msgstr ""
-#: convert.c:775
+#: convert.c:825
#, gcc-internal-format
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:825
+#: convert.c:875
#, gcc-internal-format
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:829
+#: convert.c:879
#, gcc-internal-format
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:851
+#: convert.c:901
#, gcc-internal-format
msgid "can't convert value to a vector"
msgstr ""
-#: convert.c:890
+#: convert.c:940
#, gcc-internal-format
msgid "aggregate value used where a fixed-point was expected"
msgstr ""
@@ -23483,37 +24139,37 @@ msgstr ""
msgid "this can result in poorly optimized code"
msgstr ""
-#: coverage.c:569
+#: coverage.c:570
#, gcc-internal-format
msgid "cannot open %s"
msgstr ""
-#: coverage.c:604
+#: coverage.c:605
#, gcc-internal-format
msgid "error writing %qs"
msgstr ""
-#: dbgcnt.c:134
+#: dbgcnt.c:135
#, gcc-internal-format
msgid "Can not find a valid counter:value pair:"
msgstr ""
-#: dbgcnt.c:135
+#: dbgcnt.c:136
#, gcc-internal-format
msgid "-fdbg-cnt=%s"
msgstr ""
-#: dbgcnt.c:136
+#: dbgcnt.c:137
#, gcc-internal-format
msgid " %s"
msgstr ""
-#: dbxout.c:3228
+#: dbxout.c:3257
#, gcc-internal-format
msgid "common symbol debug info is not structured as symbol+offset"
msgstr ""
-#: diagnostic.c:724
+#: diagnostic.c:728
#, gcc-internal-format
msgid "in %s, at %s:%d"
msgstr ""
@@ -23528,253 +24184,250 @@ msgstr ""
msgid "dominator of %d should be %d, not %d"
msgstr ""
-#: dwarf2out.c:4543
+#: dwarf2out.c:4011
+#, gcc-internal-format
+msgid ""
+"Multiple EH personalities are supported only with assemblers supporting .cfi."
+"personality directive."
+msgstr ""
+
+#: dwarf2out.c:5389
#, gcc-internal-format
msgid "DW_LOC_OP %s not implemented"
msgstr ""
-#: emit-rtl.c:2457
+#: emit-rtl.c:2437
#, gcc-internal-format
msgid "invalid rtl sharing found in the insn"
msgstr ""
-#: emit-rtl.c:2459
+#: emit-rtl.c:2439
#, gcc-internal-format
msgid "shared rtx"
msgstr ""
-#: emit-rtl.c:2461
+#: emit-rtl.c:2441
#, gcc-internal-format
msgid "internal consistency failure"
msgstr ""
-#: emit-rtl.c:3521
+#: emit-rtl.c:3599
#, gcc-internal-format
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
-#: errors.c:132
+#: errors.c:133
#, gcc-internal-format
msgid "abort in %s, at %s:%d"
msgstr ""
-#: except.c:199
+#: except.c:223
#, gcc-internal-format
msgid "exception handling disabled, use -fexceptions to enable"
msgstr ""
-#: except.c:3387
+#: except.c:2026
#, gcc-internal-format
msgid "argument of %<__builtin_eh_return_regno%> must be constant"
msgstr ""
-#: except.c:3520
+#: except.c:2163
#, gcc-internal-format
msgid "__builtin_eh_return not supported on this target"
msgstr ""
-#: except.c:4470
-#, gcc-internal-format
-msgid "Try region %i has wrong rh_catch pointer to %i"
-msgstr ""
-
-#: except.c:4480
-#, gcc-internal-format
-msgid "Catch region %i has different outer region than try region %i"
-msgstr ""
-
-#: except.c:4486
-#, gcc-internal-format
-msgid "Catch region %i has corrupted catchlist"
-msgstr ""
-
-#: except.c:4495
+#: except.c:3334 except.c:3359
#, gcc-internal-format
-msgid "Try region %i has wrong last_catch pointer to %i instead of %i"
+msgid "region_array is corrupted for region %i"
msgstr ""
-#: except.c:4507
+#: except.c:3347 except.c:3378
#, gcc-internal-format
-msgid "Catch region %i should be followed by try"
+msgid "lp_array is corrupted for lp %i"
msgstr ""
-#: except.c:4545 except.c:4556
+#: except.c:3364
#, gcc-internal-format
-msgid "region_array is corrupted for region %i"
+msgid "outer block of region %i is wrong"
msgstr ""
-#: except.c:4561
+#: except.c:3369
#, gcc-internal-format
-msgid "outer block of region %i is wrong"
+msgid "negative nesting depth of region %i"
msgstr ""
-#: except.c:4567
+#: except.c:3383
#, gcc-internal-format
-msgid "region %i may contain throw and is contained in region that may not"
+msgid "region of lp %i is wrong"
msgstr ""
-#: except.c:4573
+#: except.c:3410
#, gcc-internal-format
-msgid "negative nesting depth of region %i"
+msgid "tree list ends on depth %i"
msgstr ""
-#: except.c:4594
+#: except.c:3415
#, gcc-internal-format
-msgid "tree list ends on depth %i"
+msgid "region_array does not match region_tree"
msgstr ""
-#: except.c:4599
+#: except.c:3420
#, gcc-internal-format
-msgid "array does not match the region tree"
+msgid "lp_array does not match region_tree"
msgstr ""
-#: except.c:4609
+#: except.c:3427
#, gcc-internal-format
msgid "verify_eh_tree failed"
msgstr ""
-#: explow.c:1263
+#: explow.c:1294
#, gcc-internal-format
msgid "stack limits not supported on this target"
msgstr ""
-#: expr.c:8060
+#: expr.c:9169
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:8067
+#: expr.c:9176
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
-#: final.c:1432
+#: final.c:1459
#, gcc-internal-format
msgid "invalid argument %qs to -fdebug-prefix-map"
msgstr ""
-#: final.c:1533
+#: final.c:1576
#, gcc-internal-format
msgid "the frame size of %wd bytes is larger than %wd bytes"
msgstr ""
-#: fixed-value.c:104
+#: final.c:4371 toplev.c:1920
#, gcc-internal-format
-msgid "large fixed-point constant implicitly truncated to fixed-point type"
+msgid "could not open final insn dump file %qs: %s"
+msgstr ""
+
+#: final.c:4425
+#, gcc-internal-format
+msgid "could not close final insn dump file %qs: %s"
msgstr ""
-#: fold-const.c:991 tree-ssa-loop-niter.c:1880 tree-vrp.c:5723 tree-vrp.c:5764
+#: fixed-value.c:104
#, gcc-internal-format
-msgid "%H%s"
+msgid "large fixed-point constant implicitly truncated to fixed-point type"
msgstr ""
-#: fold-const.c:1361
+#: fold-const.c:1366
#, gcc-internal-format
msgid "assuming signed overflow does not occur when negating a division"
msgstr ""
-#: fold-const.c:4059 fold-const.c:4070
+#: fold-const.c:4264 fold-const.c:4276
#, gcc-internal-format
msgid "comparison is always %d due to width of bit-field"
msgstr ""
-#: fold-const.c:5404
+#: fold-const.c:5616
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying range test"
msgstr ""
-#: fold-const.c:5781 fold-const.c:5796
+#: fold-const.c:6011 fold-const.c:6026
#, gcc-internal-format
msgid "comparison is always %d"
msgstr ""
-#: fold-const.c:5925
+#: fold-const.c:6161
#, gcc-internal-format
msgid "%<or%> of unmatched not-equal tests is always 1"
msgstr ""
-#: fold-const.c:5930
+#: fold-const.c:6166
#, gcc-internal-format
msgid "%<and%> of mutually exclusive equal-tests is always 0"
msgstr ""
-#: fold-const.c:8833
+#: fold-const.c:9127
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when reducing constant in comparison"
msgstr ""
-#: fold-const.c:9200
+#: fold-const.c:9499
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when combining constants around a "
"comparison"
msgstr ""
-#: fold-const.c:13762
+#: fold-const.c:14202
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
-#: function.c:251
+#: function.c:254
#, gcc-internal-format
-msgid "%Jtotal size of local objects too large"
+msgid "total size of local objects too large"
msgstr ""
-#: function.c:916 varasm.c:2145
+#: function.c:919 varasm.c:2152
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr ""
-#: function.c:1624 gimplify.c:4931
+#: function.c:1627 gimplify.c:4924
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
-#: function.c:3730
+#: function.c:3750
#, gcc-internal-format
msgid "variable %q+D might be clobbered by %<longjmp%> or %<vfork%>"
msgstr ""
-#: function.c:3751
+#: function.c:3771
#, gcc-internal-format
msgid "argument %q+D might be clobbered by %<longjmp%> or %<vfork%>"
msgstr ""
-#: function.c:4196
+#: function.c:4216
#, gcc-internal-format
msgid "function returns an aggregate"
msgstr ""
-#: function.c:4597
+#: function.c:4618
#, gcc-internal-format
msgid "unused parameter %q+D"
msgstr ""
-#: gcc.c:1318
+#: gcc.c:1366
#, gcc-internal-format
msgid "ambiguous abbreviation %s"
msgstr ""
-#: gcc.c:1345
+#: gcc.c:1393
#, gcc-internal-format
msgid "incomplete '%s' option"
msgstr ""
-#: gcc.c:1356
+#: gcc.c:1404
#, gcc-internal-format
msgid "missing argument to '%s' option"
msgstr ""
-#: gcc.c:1369
+#: gcc.c:1417
#, gcc-internal-format
msgid "extraneous argument to '%s' option"
msgstr ""
-#: gcc.c:4092
+#: gcc.c:4276
#, gcc-internal-format
msgid "warning: -pipe ignored because -save-temps specified"
msgstr ""
-#: gcc.c:4385
+#: gcc.c:4583
#, gcc-internal-format
msgid "warning: '-x %s' after last input file has no effect"
msgstr ""
@@ -23782,125 +24435,165 @@ msgstr ""
#. Catch the case where a spec string contains something like
#. '%{foo:%*}'. i.e. there is no * in the pattern on the left
#. hand side of the :.
-#: gcc.c:5541
+#: gcc.c:5830
#, gcc-internal-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
msgstr ""
-#: gcc.c:5550
+#: gcc.c:5839
#, gcc-internal-format
msgid "warning: use of obsolete %%[ operator in specs"
msgstr ""
-#: gcc.c:5631
+#: gcc.c:5920
#, gcc-internal-format
msgid "spec failure: unrecognized spec option '%c'"
msgstr ""
-#: gcc.c:6528
+#: gcc.c:6655
+#, gcc-internal-format
+msgid "%s: could not determine length of compare-debug file %s"
+msgstr ""
+
+#: gcc.c:6666
+#, gcc-internal-format
+msgid "%s: -fcompare-debug failure (length)"
+msgstr ""
+
+#: gcc.c:6676 gcc.c:6717
+#, gcc-internal-format
+msgid "%s: could not open compare-debug file %s"
+msgstr ""
+
+#: gcc.c:6696 gcc.c:6733
+#, gcc-internal-format
+msgid "%s: -fcompare-debug failure"
+msgstr ""
+
+#: gcc.c:6969
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:6551
+#: gcc.c:6992
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:6638
+#: gcc.c:7100
#, gcc-internal-format
msgid "unrecognized option '-%s'"
msgstr ""
-#: gcc.c:6871 gcc.c:6934
+#: gcc.c:7333 gcc.c:7396
#, gcc-internal-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:7034
+#: gcc.c:7420
+#, gcc-internal-format
+msgid "Recompiling with -fcompare-debug"
+msgstr ""
+
+#: gcc.c:7434
+#, gcc-internal-format
+msgid "during -fcompare-debug recompilation"
+msgstr ""
+
+#: gcc.c:7443
+#, gcc-internal-format
+msgid "Comparing final insns dumps"
+msgstr ""
+
+#: gcc.c:7567
#, gcc-internal-format
msgid "%s: linker input file unused because linking not done"
msgstr ""
-#: gcc.c:7074
+#: gcc.c:7607
#, gcc-internal-format
msgid "language %s not recognized"
msgstr ""
-#: gcc.c:7145
+#: gcc.c:7678 lto/lto.c:1162
#, gcc-internal-format
msgid "%s: %s"
msgstr ""
-#: gcse.c:4910
+#: gcse.c:4933
#, gcc-internal-format
msgid "%s: %d basic blocks and %d edges/basic block"
msgstr ""
-#: gcse.c:4923
+#: gcse.c:4946
#, gcc-internal-format
msgid "%s: %d basic blocks and %d registers"
msgstr ""
-#: ggc-common.c:400 ggc-common.c:408 ggc-common.c:476 ggc-common.c:495
-#: ggc-page.c:2173 ggc-page.c:2204 ggc-page.c:2211 ggc-zone.c:2437
-#: ggc-zone.c:2448 ggc-zone.c:2452
+#: ggc-common.c:466 ggc-common.c:474 ggc-common.c:542 ggc-common.c:561
+#: ggc-page.c:2180 ggc-page.c:2211 ggc-page.c:2218 ggc-zone.c:2442
+#: ggc-zone.c:2453 ggc-zone.c:2457
#, gcc-internal-format
msgid "can't write PCH file: %m"
msgstr ""
-#: ggc-common.c:488 config/i386/host-cygwin.c:57
+#: ggc-common.c:554 config/i386/host-cygwin.c:57
#, gcc-internal-format
msgid "can't get position in PCH file: %m"
msgstr ""
-#: ggc-common.c:498
+#: ggc-common.c:564
#, gcc-internal-format
msgid "can't write padding to PCH file: %m"
msgstr ""
-#: ggc-common.c:553 ggc-common.c:561 ggc-common.c:568 ggc-common.c:571
-#: ggc-common.c:581 ggc-common.c:584 ggc-page.c:2301 ggc-zone.c:2471
+#: ggc-common.c:619 ggc-common.c:627 ggc-common.c:634 ggc-common.c:637
+#: ggc-common.c:647 ggc-common.c:650 ggc-page.c:2308 ggc-zone.c:2476
#, gcc-internal-format
msgid "can't read PCH file: %m"
msgstr ""
-#: ggc-common.c:576
+#: ggc-common.c:642
#, gcc-internal-format
msgid "had to relocate PCH"
msgstr ""
-#: ggc-page.c:1505
+#: ggc-page.c:1506
#, gcc-internal-format
msgid "open /dev/zero: %m"
msgstr ""
-#: ggc-page.c:2189 ggc-page.c:2195
+#: ggc-page.c:2196 ggc-page.c:2202
#, gcc-internal-format
msgid "can't write PCH file"
msgstr ""
-#: ggc-zone.c:2434 ggc-zone.c:2445
+#: ggc-zone.c:2439 ggc-zone.c:2450
#, gcc-internal-format
msgid "can't seek PCH file: %m"
msgstr ""
-#: gimple.c:1113
+#: gimple.c:1032
#, gcc-internal-format
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:4816
+#: gimplify.c:2423
+#, gcc-internal-format
+msgid "using result of function returning %<void%>"
+msgstr ""
+
+#: gimplify.c:4809
#, gcc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:4932
+#: gimplify.c:4925
#, gcc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:4947
+#: gimplify.c:4940
#, gcc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
@@ -23912,7 +24605,7 @@ msgstr ""
#: gimplify.c:5443
#, gcc-internal-format
-msgid "%Henclosing parallel"
+msgid "enclosing parallel"
msgstr ""
#: gimplify.c:5548
@@ -23935,99 +24628,250 @@ msgstr ""
msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7252
+#: gimplify.c:7246
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: graph.c:401 java/jcf-parse.c:1750 java/jcf-parse.c:1890 objc/objc-act.c:496
+#: graph.c:401 java/jcf-parse.c:1751 java/jcf-parse.c:1892 objc/objc-act.c:524
#, gcc-internal-format
msgid "can't open %s: %m"
msgstr ""
-#: graphite.c:6188 toplev.c:1791
+#: graphite.c:299 toplev.c:1836
#, gcc-internal-format
msgid "Graphite loop optimizations cannot be used"
msgstr ""
-#: haifa-sched.c:184
+#: haifa-sched.c:185
#, gcc-internal-format
msgid "fix_sched_param: unknown param: %s"
msgstr ""
-#: ira.c:1439 ira.c:1452 ira.c:1466
+#: ira.c:1472 ira.c:1485 ira.c:1499
#, gcc-internal-format
msgid "%s cannot be used in asm here"
msgstr ""
-#: omp-low.c:1819
+#: lto-cgraph.c:508
+#, gcc-internal-format
+msgid "bytecode stream: found multiple instances of cgraph node %d"
+msgstr ""
+
+#: lto-cgraph.c:549
+#, gcc-internal-format
+msgid "bytecode stream: no caller found while reading edge"
+msgstr ""
+
+#: lto-cgraph.c:553
+#, gcc-internal-format
+msgid "bytecode stream: no callee found while reading edge"
+msgstr ""
+
+#: lto-cgraph.c:602
+#, gcc-internal-format
+msgid "bytecode stream: found empty cgraph node"
+msgstr ""
+
+#: lto-compress.c:190 lto-compress.c:198 lto-compress.c:219 lto-compress.c:280
+#: lto-compress.c:288 lto-compress.c:309
+#, gcc-internal-format
+msgid "compressed stream: %s"
+msgstr ""
+
+#: lto-section-in.c:66
+#, gcc-internal-format
+msgid ""
+"bytecode stream: trying to read %d bytes after the end of the input buffer"
+msgstr ""
+
+#: lto-streamer-in.c:80
+#, gcc-internal-format
+msgid "bytecode stream: unexpected tag %s"
+msgstr ""
+
+#: lto-streamer-in.c:91
+#, gcc-internal-format
+msgid "bytecode stream: tag %s is not in the expected range [%s, %s]"
+msgstr ""
+
+#: lto-streamer-in.c:105
+#, gcc-internal-format
+msgid "bytecode stream: expected tag %s instead of %s"
+msgstr ""
+
+#: lto-streamer-in.c:149
+#, gcc-internal-format
+msgid "bytecode stream: string too long for the string table"
+msgstr ""
+
+#: lto-streamer-in.c:209
+#, gcc-internal-format
+msgid "bytecode stream: found non-null terminated string"
+msgstr ""
+
+#: lto-streamer-in.c:1102
+#, gcc-internal-format
+msgid "bytecode stream: unknown GIMPLE statement tag %s"
+msgstr ""
+
+#: lto-streamer-in.c:2357
+#, gcc-internal-format
+msgid "optimization options not supported yet"
+msgstr ""
+
+#: lto-streamer-in.c:2362
+#, gcc-internal-format
+msgid "target optimization options not supported yet"
+msgstr ""
+
+#: lto-streamer-in.c:2505
+#, gcc-internal-format
+msgid "bytecode stream: tried to jump backwards in the stream"
+msgstr ""
+
+#: lto-streamer-in.c:2549
+#, gcc-internal-format
+msgid "target specific builtin not available"
+msgstr ""
+
+#: lto-streamer-out.c:1169
+#, gcc-internal-format
+msgid "gimple bytecode streams do not support the optimization attribute"
+msgstr ""
+
+#: lto-streamer-out.c:1172
+#, gcc-internal-format
+msgid "gimple bytecode streams do not support the target attribute"
+msgstr ""
+
+#: lto-streamer-out.c:1190
+#, gcc-internal-format
+msgid "tree code %qs is not supported in gimple streams"
+msgstr ""
+
+#: lto-streamer-out.c:1234
+#, gcc-internal-format
+msgid ""
+"gimple bytecode streams do not support machine specific builtin functions on "
+"this target"
+msgstr ""
+
+#: lto-streamer.c:173
+#, gcc-internal-format
+msgid "bytecode stream: unexpected LTO section %s"
+msgstr ""
+
+#: lto-streamer.c:856
+#, gcc-internal-format
+msgid ""
+"bytecode stream generated with LTO version %d.%d instead of the expected %d.%"
+"d"
+msgstr ""
+
+#: lto-symtab.c:410
+#, gcc-internal-format
+msgid "%qD has already been defined"
+msgstr ""
+
+#: lto-symtab.c:412
+#, gcc-internal-format
+msgid "previously defined here"
+msgstr ""
+
+#: lto-symtab.c:482
+#, gcc-internal-format
+msgid "type of %qD does not match original declaration"
+msgstr ""
+
+#: lto-symtab.c:489
+#, gcc-internal-format
+msgid "alignment of %qD is bigger than original declaration"
+msgstr ""
+
+#: lto-symtab.c:495 lto-symtab.c:592
+#, gcc-internal-format
+msgid "previously declared here"
+msgstr ""
+
+#: lto-symtab.c:575
+#, gcc-internal-format
+msgid "variable %qD redeclared as function"
+msgstr ""
+
+#: lto-symtab.c:581
+#, gcc-internal-format
+msgid "function %qD redeclared as variable"
+msgstr ""
+
+#: omp-low.c:1840
#, gcc-internal-format
msgid ""
"barrier region may not be closely nested inside of work-sharing, critical, "
"ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1824
+#: omp-low.c:1845
#, gcc-internal-format
msgid ""
"work-sharing region may not be closely nested inside of work-sharing, "
"critical, ordered, master or explicit task region"
msgstr ""
-#: omp-low.c:1842
+#: omp-low.c:1863
#, gcc-internal-format
msgid ""
"master region may not be closely nested inside of work-sharing or explicit "
"task region"
msgstr ""
-#: omp-low.c:1857
+#: omp-low.c:1878
#, gcc-internal-format
msgid ""
"ordered region may not be closely nested inside of critical or explicit task "
"region"
msgstr ""
-#: omp-low.c:1863
+#: omp-low.c:1884
#, gcc-internal-format
msgid ""
"ordered region must be closely nested inside a loop region with an ordered "
"clause"
msgstr ""
-#: omp-low.c:1878
+#: omp-low.c:1899
#, gcc-internal-format
msgid ""
"critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:6695 cp/decl.c:2667
+#: omp-low.c:6756 cp/decl.c:2712 cp/parser.c:8327 cp/parser.c:8347
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
-#: omp-low.c:6697 omp-low.c:6702
+#: omp-low.c:6758 omp-low.c:6763
#, gcc-internal-format
msgid "invalid entry to OpenMP structured block"
msgstr ""
#. Otherwise, be vague and lazy, but efficient.
-#: omp-low.c:6705
+#: omp-low.c:6766
#, gcc-internal-format
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
-#: opts.c:169
+#: opts.c:171
#, gcc-internal-format
msgid "argument %qs to %<-femit-struct-debug-detailed%> not recognized"
msgstr ""
-#: opts.c:203
+#: opts.c:205
#, gcc-internal-format
msgid "argument %qs to %<-femit-struct-debug-detailed%> unknown"
msgstr ""
-#: opts.c:209
+#: opts.c:211
#, gcc-internal-format
msgid ""
"%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-"
@@ -24035,147 +24879,156 @@ msgid ""
msgstr ""
#. Eventually this should become a hard error IMO.
-#: opts.c:435
+#: opts.c:451
#, gcc-internal-format
msgid "command line option \"%s\" is valid for %s but not for %s"
msgstr ""
-#: opts.c:466 opts.c:762
+#: opts.c:482 opts.c:765
#, gcc-internal-format
msgid "unrecognized command line option \"%s\""
msgstr ""
-#: opts.c:527
+#: opts.c:543
#, gcc-internal-format
msgid "command line option %qs is not supported by this configuration"
msgstr ""
-#: opts.c:580
+#: opts.c:596
#, gcc-internal-format
msgid "missing argument to \"%s\""
msgstr ""
-#: opts.c:590
+#: opts.c:606
#, gcc-internal-format
msgid "argument to \"%s\" should be a non-negative integer"
msgstr ""
-#: opts.c:990
+#: opts.c:998
#, gcc-internal-format
msgid "Section anchors must be disabled when unit-at-a-time is disabled."
msgstr ""
-#: opts.c:994
+#: opts.c:1002
#, gcc-internal-format
msgid "Toplevel reorder must be disabled when unit-at-a-time is disabled."
msgstr ""
-#: opts.c:1009
+#: opts.c:1017
#, gcc-internal-format
msgid "section anchors must be disabled when toplevel reorder is disabled"
msgstr ""
-#: opts.c:1039
+#: opts.c:1052 config/sh/sh.c:896
#, gcc-internal-format
-msgid "-freorder-blocks-and-partition does not work with exceptions"
+msgid ""
+"-freorder-blocks-and-partition does not work with exceptions on this "
+"architecture"
msgstr ""
-#: opts.c:1050
+#: opts.c:1069 config/sh/sh.c:904
#, gcc-internal-format
-msgid "-freorder-blocks-and-partition does not support unwind info"
+msgid ""
+"-freorder-blocks-and-partition does not support unwind info on this "
+"architecture"
msgstr ""
-#: opts.c:1064
+#: opts.c:1088
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
-#: opts.c:1078
+#: opts.c:1102
#, gcc-internal-format
msgid "-fira-algorithm=CB does not work on this architecture"
msgstr ""
-#: opts.c:1387
+#: opts.c:1411
#, gcc-internal-format
msgid "unrecognized include_flags 0x%x passed to print_specific_help"
msgstr ""
-#: opts.c:1725
+#: opts.c:1749
#, gcc-internal-format
msgid "unknown excess precision style \"%s\""
msgstr ""
-#: opts.c:1762
+#: opts.c:1786
#, gcc-internal-format
msgid "structure alignment must be a small power of two, not %d"
msgstr ""
-#: opts.c:1778 opts.c:1786
+#: opts.c:1802 opts.c:1810
#, gcc-internal-format
msgid "Plugin support is disabled. Configure with --enable-plugin."
msgstr ""
-#: opts.c:1865
+#: opts.c:1889
#, gcc-internal-format
msgid "unrecognized visibility value \"%s\""
msgstr ""
-#: opts.c:1923
+#: opts.c:1947
#, gcc-internal-format
msgid "unknown stack check parameter \"%s\""
msgstr ""
-#: opts.c:1949
+#: opts.c:1973
#, gcc-internal-format
msgid "unrecognized register name \"%s\""
msgstr ""
-#: opts.c:1973
+#: opts.c:1997
#, gcc-internal-format
msgid "unknown tls-model \"%s\""
msgstr ""
-#: opts.c:1982
+#: opts.c:2006
#, gcc-internal-format
msgid "unknown ira algorithm \"%s\""
msgstr ""
-#: opts.c:1993
+#: opts.c:2017
#, gcc-internal-format
msgid "unknown ira region \"%s\""
msgstr ""
-#: opts.c:2096
+#: opts.c:2062
+#, gcc-internal-format
+msgid "dwarf version %d is not supported"
+msgstr ""
+
+#: opts.c:2126
#, gcc-internal-format
msgid "%s: --param arguments should be of the form NAME=VALUE"
msgstr ""
-#: opts.c:2101
+#: opts.c:2131
#, gcc-internal-format
msgid "invalid --param value %qs"
msgstr ""
-#: opts.c:2204
+#: opts.c:2234
#, gcc-internal-format
msgid "target system does not support debug output"
msgstr ""
-#: opts.c:2211
+#: opts.c:2241
#, gcc-internal-format
msgid "debug format \"%s\" conflicts with prior selection"
msgstr ""
-#: opts.c:2227
+#: opts.c:2257
#, gcc-internal-format
msgid "unrecognised debug output level \"%s\""
msgstr ""
-#: opts.c:2229
+#: opts.c:2259
#, gcc-internal-format
msgid "debug output level %s is too high"
msgstr ""
-#: opts.c:2313
+#: opts.c:2379
#, gcc-internal-format
msgid "-Werror=%s: No option -%s"
msgstr ""
@@ -24196,499 +25049,517 @@ msgstr ""
msgid "invalid parameter %qs"
msgstr ""
-#: plugin.c:160
+#: passes.c:567
#, gcc-internal-format
-msgid ""
-"Plugin %s was specified with different paths:\n"
-"%s\n"
-"%s"
+msgid "Invalid pass positioning operation"
msgstr ""
-#: plugin.c:206
+#: passes.c:607
#, gcc-internal-format
-msgid "Malformed option -fplugin-arg-%s (multiple '=' signs)"
+msgid "plugin cannot register a missing pass"
msgstr ""
-#: plugin.c:222
+#: passes.c:610
#, gcc-internal-format
-msgid "Malformed option -fplugin-arg-%s (missing -<key>[=<value>])"
+msgid "plugin cannot register an unnamed pass"
msgstr ""
-#: plugin.c:284
+#: passes.c:614
#, gcc-internal-format
-msgid ""
-"Plugin %s should be specified before -fplugin-arg-%s in the command line"
+msgid "plugin cannot register pass %qs without reference pass name"
msgstr ""
-#: plugin.c:365
+#: passes.c:626
#, gcc-internal-format
-msgid "Invalid pass positioning operation"
+msgid "pass %qs not found but is referenced by new pass %qs"
msgstr ""
-#: plugin.c:405
+#: plugin.c:145
#, gcc-internal-format
-msgid "No pass specified when registering a new pass in plugin %s"
+msgid ""
+"Plugin %s was specified with different paths:\n"
+"%s\n"
+"%s"
+msgstr ""
+
+#: plugin.c:191
+#, gcc-internal-format
+msgid "Malformed option -fplugin-arg-%s (multiple '=' signs)"
msgstr ""
-#: plugin.c:412
+#: plugin.c:207
#, gcc-internal-format
-msgid "No reference pass specified for positioning the pass from plugin %s"
+msgid "Malformed option -fplugin-arg-%s (missing -<key>[=<value>])"
msgstr ""
-#: plugin.c:422
+#: plugin.c:269
#, gcc-internal-format
msgid ""
-"Failed to position pass %s registered by plugin %s. Cannot find the "
-"(specified instance of) reference pass %s"
+"Plugin %s should be specified before -fplugin-arg-%s in the command line"
msgstr ""
-#: plugin.c:501
+#: plugin.c:333
#, gcc-internal-format
msgid "Plugin %s registered a null callback function for event %s"
msgstr ""
-#: plugin.c:515
+#: plugin.c:347
#, gcc-internal-format
msgid "Unkown callback event registered by plugin %s"
msgstr ""
-#: plugin.c:578
+#: plugin.c:421
#, gcc-internal-format
msgid ""
"Cannot load plugin %s\n"
"%s"
msgstr ""
-#: plugin.c:591
+#: plugin.c:430
+#, gcc-internal-format
+msgid ""
+"plugin %s is not licensed under a GPL-compatible license\n"
+"%s"
+msgstr ""
+
+#: plugin.c:439
#, gcc-internal-format
msgid ""
"Cannot find %s in plugin %s\n"
"%s"
msgstr ""
-#: plugin.c:600
+#: plugin.c:447
#, gcc-internal-format
msgid "Fail to initialize plugin %s"
msgstr ""
-#: profile.c:415
+#: profile.c:414
#, gcc-internal-format
msgid "corrupted profile info: edge from %i to %i exceeds maximal count"
msgstr ""
-#: profile.c:460
+#: profile.c:458
#, gcc-internal-format
msgid "corrupted profile info: run_max * runs < sum_max"
msgstr ""
-#: profile.c:466
+#: profile.c:464
#, gcc-internal-format
msgid "corrupted profile info: sum_all is smaller than sum_max"
msgstr ""
-#: profile.c:632
+#: profile.c:630
#, gcc-internal-format
msgid "correcting inconsistent profile data"
msgstr ""
-#: profile.c:642
+#: profile.c:640
#, gcc-internal-format
msgid "corrupted profile info: profile data is not flow-consistent"
msgstr ""
-#: profile.c:660
+#: profile.c:657
#, gcc-internal-format
msgid ""
"corrupted profile info: number of iterations for basic block %d thought to "
"be %i"
msgstr ""
-#: profile.c:681
+#: profile.c:678
#, gcc-internal-format
msgid ""
"corrupted profile info: number of executions for edge %d-%d thought to be %i"
msgstr ""
-#: reg-stack.c:538
+#: reg-stack.c:537
#, gcc-internal-format
msgid "output constraint %d must specify a single register"
msgstr ""
-#: reg-stack.c:548
+#: reg-stack.c:547
#, gcc-internal-format
msgid "output constraint %d cannot be specified together with \"%s\" clobber"
msgstr ""
-#: reg-stack.c:571
+#: reg-stack.c:570
#, gcc-internal-format
msgid "output regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:608
+#: reg-stack.c:607
#, gcc-internal-format
msgid "implicitly popped regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:627
+#: reg-stack.c:626
#, gcc-internal-format
msgid "output operand %d must use %<&%> constraint"
msgstr ""
-#: regcprop.c:948
+#: regcprop.c:978
#, gcc-internal-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr ""
-#: regcprop.c:960
+#: regcprop.c:990
#, gcc-internal-format
msgid "validate_value_data: Loop in regno chain (%u)"
msgstr ""
-#: regcprop.c:963
+#: regcprop.c:993
#, gcc-internal-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr ""
-#: regcprop.c:975
+#: regcprop.c:1005
#, gcc-internal-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr ""
-#: reginfo.c:823
+#: reginfo.c:819
#, gcc-internal-format
msgid "can't use '%s' as a %s register"
msgstr ""
-#: reginfo.c:838 config/ia64/ia64.c:5186 config/ia64/ia64.c:5193
-#: config/pa/pa.c:367 config/pa/pa.c:374 config/sh/sh.c:7966
-#: config/sh/sh.c:7973 config/spu/spu.c:4624 config/spu/spu.c:4631
+#: reginfo.c:834 config/ia64/ia64.c:5399 config/ia64/ia64.c:5406
+#: config/pa/pa.c:380 config/pa/pa.c:387 config/sh/sh.c:8484
+#: config/sh/sh.c:8491 config/spu/spu.c:4717 config/spu/spu.c:4724
#, gcc-internal-format
msgid "unknown register name: %s"
msgstr ""
-#: reginfo.c:847
+#: reginfo.c:843
#, gcc-internal-format
msgid "global register variable follows a function definition"
msgstr ""
-#: reginfo.c:851
+#: reginfo.c:847
#, gcc-internal-format
msgid "register used for two global register variables"
msgstr ""
-#: reginfo.c:856
+#: reginfo.c:852
#, gcc-internal-format
msgid "call-clobbered register used for global register variable"
msgstr ""
-#: reload.c:1259
+#: reload.c:1260
#, gcc-internal-format
msgid "cannot reload integer constant operand in %<asm%>"
msgstr ""
-#: reload.c:1273
+#: reload.c:1274
#, gcc-internal-format
msgid "impossible register constraint in %<asm%>"
msgstr ""
-#: reload.c:3610
+#: reload.c:3617
#, gcc-internal-format
msgid "%<&%> constraint used with no register class"
msgstr ""
-#: reload.c:3781 reload.c:4039
+#: reload.c:3814 reload.c:4072
#, gcc-internal-format
msgid "inconsistent operand constraints in an %<asm%>"
msgstr ""
-#: reload1.c:1323
+#: reload1.c:1380
#, gcc-internal-format
msgid "%<asm%> operand has impossible constraints"
msgstr ""
-#: reload1.c:1343
+#: reload1.c:1400
#, gcc-internal-format
msgid "frame size too large for reliable stack checking"
msgstr ""
-#: reload1.c:1346
+#: reload1.c:1403
#, gcc-internal-format
msgid "try reducing the number of local variables"
msgstr ""
-#: reload1.c:2081
+#: reload1.c:2138
#, gcc-internal-format
msgid "can't find a register in class %qs while reloading %<asm%>"
msgstr ""
-#: reload1.c:2086
+#: reload1.c:2143
#, gcc-internal-format
msgid "unable to find a register to spill in class %qs"
msgstr ""
-#: reload1.c:4241
+#: reload1.c:4294
#, gcc-internal-format
msgid "%<asm%> operand requires impossible reload"
msgstr ""
-#: reload1.c:5624
+#: reload1.c:5676
#, gcc-internal-format
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7598
+#: reload1.c:7657
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
-#: rtl.c:501
+#: rtl.c:613
#, gcc-internal-format
msgid "RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%d"
msgstr ""
-#: rtl.c:511
+#: rtl.c:623
#, gcc-internal-format
msgid ""
"RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
msgstr ""
-#: rtl.c:521
+#: rtl.c:633
#, gcc-internal-format
msgid ""
"RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %"
"s:%d"
msgstr ""
-#: rtl.c:530
+#: rtl.c:642
#, gcc-internal-format
msgid "RTL check: expected code '%s', have '%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:540
+#: rtl.c:652
#, gcc-internal-format
msgid "RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:567
+#: rtl.c:679
#, gcc-internal-format
msgid ""
"RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%"
"d"
msgstr ""
-#: rtl.c:577
+#: rtl.c:689
#, gcc-internal-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
msgstr ""
-#: rtl.c:588
+#: rtl.c:700
#, gcc-internal-format
msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d"
msgstr ""
-#: stmt.c:311
+#: stmt.c:312
#, gcc-internal-format
msgid "output operand constraint lacks %<=%>"
msgstr ""
-#: stmt.c:326
+#: stmt.c:327
#, gcc-internal-format
msgid "output constraint %qc for operand %d is not at the beginning"
msgstr ""
-#: stmt.c:349
+#: stmt.c:350
#, gcc-internal-format
msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>"
msgstr ""
-#: stmt.c:356 stmt.c:455
+#: stmt.c:357 stmt.c:456
#, gcc-internal-format
msgid "%<%%%> constraint used with last operand"
msgstr ""
-#: stmt.c:375
+#: stmt.c:376
#, gcc-internal-format
msgid "matching constraint not valid in output operand"
msgstr ""
-#: stmt.c:446
+#: stmt.c:447
#, gcc-internal-format
msgid "input operand constraint contains %qc"
msgstr ""
-#: stmt.c:488
+#: stmt.c:489
#, gcc-internal-format
msgid "matching constraint references invalid operand number"
msgstr ""
-#: stmt.c:526
+#: stmt.c:527
#, gcc-internal-format
msgid "invalid punctuation %qc in constraint"
msgstr ""
-#: stmt.c:550
+#: stmt.c:551
#, gcc-internal-format
msgid "matching constraint does not allow a register"
msgstr ""
-#: stmt.c:604
+#: stmt.c:605
#, gcc-internal-format
msgid "asm-specifier for variable %qE conflicts with asm clobber list"
msgstr ""
-#: stmt.c:694
+#: stmt.c:696
#, gcc-internal-format
msgid "unknown register name %qs in %<asm%>"
msgstr ""
-#: stmt.c:702
+#: stmt.c:704
#, gcc-internal-format
msgid "PIC register %qs clobbered in %<asm%>"
msgstr ""
-#: stmt.c:749
+#: stmt.c:751
#, gcc-internal-format
msgid "more than %d operands in %<asm%>"
msgstr ""
-#: stmt.c:812
+#: stmt.c:814
#, gcc-internal-format
msgid "output number %d not directly addressable"
msgstr ""
-#: stmt.c:895
+#: stmt.c:900
#, gcc-internal-format
msgid "asm operand %d probably doesn%'t match constraints"
msgstr ""
-#: stmt.c:905
+#: stmt.c:910
#, gcc-internal-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
msgstr ""
-#: stmt.c:1052
+#: stmt.c:1065
#, gcc-internal-format
msgid "asm clobber conflict with output operand"
msgstr ""
-#: stmt.c:1057
+#: stmt.c:1070
#, gcc-internal-format
msgid "asm clobber conflict with input operand"
msgstr ""
-#: stmt.c:1135
+#: stmt.c:1195
#, gcc-internal-format
msgid "too many alternatives in %<asm%>"
msgstr ""
-#: stmt.c:1147
+#: stmt.c:1207
#, gcc-internal-format
msgid "operand constraints for %<asm%> differ in number of alternatives"
msgstr ""
-#: stmt.c:1200
+#: stmt.c:1274
#, gcc-internal-format
msgid "duplicate asm operand name %qs"
msgstr ""
-#: stmt.c:1298
+#: stmt.c:1371
#, gcc-internal-format
msgid "missing close brace for named operand"
msgstr ""
-#: stmt.c:1326
+#: stmt.c:1396
#, gcc-internal-format
msgid "undefined named operand %qs"
msgstr ""
-#: stmt.c:1471
+#: stmt.c:1541 cp/cvt.c:916 cp/cvt.c:1032
#, gcc-internal-format
-msgid "%Hvalue computed is not used"
+msgid "value computed is not used"
msgstr ""
-#: stor-layout.c:149
+#: stor-layout.c:160
#, gcc-internal-format
msgid "type size can%'t be explicitly evaluated"
msgstr ""
-#: stor-layout.c:151
+#: stor-layout.c:162
#, gcc-internal-format
msgid "variable-size type declared outside of any function"
msgstr ""
-#: stor-layout.c:467
+#: stor-layout.c:680
#, gcc-internal-format
msgid "size of %q+D is %d bytes"
msgstr ""
-#: stor-layout.c:469
+#: stor-layout.c:682
#, gcc-internal-format
msgid "size of %q+D is larger than %wd bytes"
msgstr ""
-#: stor-layout.c:888
+#: stor-layout.c:1101
#, gcc-internal-format
msgid "packed attribute causes inefficient alignment for %q+D"
msgstr ""
-#: stor-layout.c:891
+#: stor-layout.c:1104
#, gcc-internal-format
msgid "packed attribute is unnecessary for %q+D"
msgstr ""
-#. No, we need to skip space before this field.
-#. Bump the cumulative size to multiple of field alignment.
-#: stor-layout.c:908
+#: stor-layout.c:1122
#, gcc-internal-format
msgid "padding struct to align %q+D"
msgstr ""
-#: stor-layout.c:969
+#: stor-layout.c:1183
#, gcc-internal-format
msgid "Offset of packed bit-field %qD has changed in GCC 4.4"
msgstr ""
-#: stor-layout.c:1273
+#: stor-layout.c:1489
#, gcc-internal-format
msgid "padding struct size to alignment boundary"
msgstr ""
-#: stor-layout.c:1303
+#: stor-layout.c:1519
#, gcc-internal-format
msgid "packed attribute causes inefficient alignment for %qE"
msgstr ""
-#: stor-layout.c:1307
+#: stor-layout.c:1523
#, gcc-internal-format
msgid "packed attribute is unnecessary for %qE"
msgstr ""
-#: stor-layout.c:1313
+#: stor-layout.c:1529
#, gcc-internal-format
msgid "packed attribute causes inefficient alignment"
msgstr ""
-#: stor-layout.c:1315
+#: stor-layout.c:1531
#, gcc-internal-format
msgid "packed attribute is unnecessary"
msgstr ""
-#: stor-layout.c:1848
+#: stor-layout.c:2044
#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
msgstr ""
-#: targhooks.c:124
+#: targhooks.c:163
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this target"
msgstr ""
-#: targhooks.c:742
+#: targhooks.c:658
+#, gcc-internal-format
+msgid "nested functions not supported on this target"
+msgstr ""
+
+#: targhooks.c:671
+#, gcc-internal-format
+msgid "nested function trampolines not supported on this target"
+msgstr ""
+
+#: targhooks.c:847
#, gcc-internal-format
msgid "target attribute is not supported on this machine"
msgstr ""
-#: targhooks.c:752
+#: targhooks.c:857
#, gcc-internal-format
msgid "#pragma GCC target is not supported for this machine"
msgstr ""
@@ -24710,797 +25581,848 @@ msgstr ""
msgid "ld returned %d exit status"
msgstr ""
-#: toplev.c:528
+#: toplev.c:551
#, gcc-internal-format
msgid "invalid option argument %qs"
msgstr ""
-#: toplev.c:626
+#: toplev.c:641
#, gcc-internal-format
msgid "getting core file size maximum limit: %m"
msgstr ""
-#: toplev.c:629
+#: toplev.c:644
#, gcc-internal-format
msgid "setting core file size limit to maximum: %m"
msgstr ""
-#: toplev.c:849
+#: toplev.c:864
#, gcc-internal-format
msgid "%q+F declared %<static%> but never defined"
msgstr ""
-#: toplev.c:877
+#: toplev.c:892
#, gcc-internal-format
msgid "%q+D defined but not used"
msgstr ""
-#: toplev.c:944
+#: toplev.c:959
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d): %s"
msgstr ""
-#: toplev.c:948
+#: toplev.c:963
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:973
+#: toplev.c:988
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr ""
-#: toplev.c:977
+#: toplev.c:992
#, gcc-internal-format
msgid "%qE is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:984
+#: toplev.c:999
#, gcc-internal-format
msgid "type is deprecated (declared at %s:%d): %s"
msgstr ""
-#: toplev.c:988
+#: toplev.c:1003
#, gcc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:997
+#: toplev.c:1012
#, gcc-internal-format
msgid "%qE is deprecated: %s"
msgstr ""
-#: toplev.c:1000
+#: toplev.c:1015
#, gcc-internal-format
msgid "%qE is deprecated"
msgstr ""
-#: toplev.c:1005
+#: toplev.c:1020
#, gcc-internal-format
msgid "type is deprecated: %s"
msgstr ""
-#: toplev.c:1008
+#: toplev.c:1023
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
-#: toplev.c:1148
+#: toplev.c:1176
#, gcc-internal-format
msgid "unrecognized gcc debugging option: %c"
msgstr ""
-#: toplev.c:1407
+#: toplev.c:1451
#, gcc-internal-format
msgid "can%'t open %s for writing: %m"
msgstr ""
-#: toplev.c:1428
+#: toplev.c:1472
#, gcc-internal-format
msgid "-frecord-gcc-switches is not supported by the current target"
msgstr ""
-#: toplev.c:1765
+#: toplev.c:1809
#, gcc-internal-format
msgid "this target does not support %qs"
msgstr ""
-#: toplev.c:1820
+#: toplev.c:1865
#, gcc-internal-format
msgid "instruction scheduling not supported on this target machine"
msgstr ""
-#: toplev.c:1824
+#: toplev.c:1869
#, gcc-internal-format
msgid "this target machine does not have delayed branches"
msgstr ""
-#: toplev.c:1838
+#: toplev.c:1883
#, gcc-internal-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr ""
-#: toplev.c:1911
+#: toplev.c:1926
+#, gcc-internal-format
+msgid "could not close zeroed insn dump file %qs: %s"
+msgstr ""
+
+#: toplev.c:1991
#, gcc-internal-format
msgid "target system does not support the \"%s\" debug format"
msgstr ""
-#: toplev.c:1924
+#: toplev.c:2004
#, gcc-internal-format
msgid "variable tracking requested, but useless unless producing debug info"
msgstr ""
-#: toplev.c:1927
+#: toplev.c:2007
#, gcc-internal-format
msgid "variable tracking requested, but not supported by this debug format"
msgstr ""
-#: toplev.c:1961
+#: toplev.c:2035
+#, gcc-internal-format
+msgid "var-tracking-assignments changes selective scheduling"
+msgstr ""
+
+#: toplev.c:2055
#, gcc-internal-format
msgid "can%'t open %s: %m"
msgstr ""
-#: toplev.c:1968
+#: toplev.c:2062
#, gcc-internal-format
msgid "-ffunction-sections not supported for this target"
msgstr ""
-#: toplev.c:1973
+#: toplev.c:2067
#, gcc-internal-format
msgid "-fdata-sections not supported for this target"
msgstr ""
-#: toplev.c:1980
+#: toplev.c:2074
#, gcc-internal-format
msgid "-ffunction-sections disabled; it makes profiling impossible"
msgstr ""
-#: toplev.c:1987
+#: toplev.c:2081
#, gcc-internal-format
msgid "-fprefetch-loop-arrays not supported for this target"
msgstr ""
-#: toplev.c:1993
+#: toplev.c:2087
#, gcc-internal-format
msgid ""
"-fprefetch-loop-arrays not supported for this target (try -march switches)"
msgstr ""
-#: toplev.c:2002
+#: toplev.c:2096
#, gcc-internal-format
msgid "-fprefetch-loop-arrays is not supported with -Os"
msgstr ""
-#: toplev.c:2013
+#: toplev.c:2107
#, gcc-internal-format
msgid "-fassociative-math disabled; other options take precedence"
msgstr ""
-#: toplev.c:2029
+#: toplev.c:2123
#, gcc-internal-format
msgid "-fstack-protector not supported for this target"
msgstr ""
-#: toplev.c:2042
+#: toplev.c:2136
#, gcc-internal-format
msgid "unwind tables currently require a frame pointer for correctness"
msgstr ""
-#: toplev.c:2269
+#: toplev.c:2363
#, gcc-internal-format
msgid "error writing to %s: %m"
msgstr ""
-#: toplev.c:2271 java/jcf-parse.c:1769
+#: toplev.c:2365 java/jcf-parse.c:1770
#, gcc-internal-format
msgid "error closing %s: %m"
msgstr ""
-#: tree-cfg.c:1535 tree-cfg.c:2214
+#: tree-cfg.c:1849
#, gcc-internal-format
-msgid "%Hwill never be executed"
+msgid "will never be executed"
msgstr ""
-#: tree-cfg.c:2848
+#: tree-cfg.c:2535
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2857
+#: tree-cfg.c:2544
#, gcc-internal-format
msgid "Indirect reference's operand is not a register or a constant."
msgstr ""
-#: tree-cfg.c:2866
+#: tree-cfg.c:2553
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2872
+#: tree-cfg.c:2559
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples."
msgstr ""
-#: tree-cfg.c:2893
+#: tree-cfg.c:2580
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2898
+#: tree-cfg.c:2585
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2916 tree-ssa.c:497
+#: tree-cfg.c:2603 tree-ssa.c:816
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2921
+#: tree-cfg.c:2608
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2932
+#: tree-cfg.c:2619
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr ""
-#: tree-cfg.c:2937
+#: tree-cfg.c:2624
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr ""
-#: tree-cfg.c:2984
+#: tree-cfg.c:2671
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2991
+#: tree-cfg.c:2678
#, gcc-internal-format
msgid ""
"integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2999
+#: tree-cfg.c:2686
#, gcc-internal-format
msgid ""
"mode precision of non-integral result does not match field size of "
"BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:3010
+#: tree-cfg.c:2697
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr ""
-#: tree-cfg.c:3021
+#: tree-cfg.c:2708
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr ""
-#: tree-cfg.c:3032
+#: tree-cfg.c:2719
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:3040
+#: tree-cfg.c:2727
#, gcc-internal-format
msgid ""
"invalid operand to pointer plus, second operand is not an integer with type "
"of sizetype."
msgstr ""
-#: tree-cfg.c:3111
+#: tree-cfg.c:2798
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr ""
-#: tree-cfg.c:3122
+#: tree-cfg.c:2809
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr ""
-#: tree-cfg.c:3129
+#: tree-cfg.c:2816
#, gcc-internal-format
msgid "type mismatch in indirect reference"
msgstr ""
-#: tree-cfg.c:3158
+#: tree-cfg.c:2845
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr ""
-#: tree-cfg.c:3169
+#: tree-cfg.c:2856
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr ""
-#: tree-cfg.c:3178
+#: tree-cfg.c:2865
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:3189
+#: tree-cfg.c:2876
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr ""
-#: tree-cfg.c:3199
+#: tree-cfg.c:2886
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3262
+#: tree-cfg.c:2949
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr ""
-#: tree-cfg.c:3269
+#: tree-cfg.c:2956
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr ""
-#: tree-cfg.c:3285
+#: tree-cfg.c:2972
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr ""
-#: tree-cfg.c:3310
+#: tree-cfg.c:2985
+#, gcc-internal-format
+msgid "static chain in indirect gimple call"
+msgstr ""
+
+#: tree-cfg.c:2992
+#, gcc-internal-format
+msgid "static chain with function that doesn't use one"
+msgstr ""
+
+#: tree-cfg.c:3016
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr ""
-#: tree-cfg.c:3328
+#: tree-cfg.c:3034
#, gcc-internal-format
msgid "type mismatch in comparison expression"
msgstr ""
-#: tree-cfg.c:3354
+#: tree-cfg.c:3060
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3360
+#: tree-cfg.c:3066
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr ""
-#: tree-cfg.c:3395
+#: tree-cfg.c:3101
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr ""
-#: tree-cfg.c:3409
+#: tree-cfg.c:3115
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr ""
-#: tree-cfg.c:3422
+#: tree-cfg.c:3128
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr ""
-#: tree-cfg.c:3435
+#: tree-cfg.c:3141
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr ""
-#: tree-cfg.c:3470
+#: tree-cfg.c:3176
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3497
+#: tree-cfg.c:3203
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3504
+#: tree-cfg.c:3210
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr ""
-#: tree-cfg.c:3519
+#: tree-cfg.c:3225
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr ""
-#: tree-cfg.c:3548
+#: tree-cfg.c:3254
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr ""
-#: tree-cfg.c:3570
+#: tree-cfg.c:3276
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr ""
-#: tree-cfg.c:3583
+#: tree-cfg.c:3289
#, gcc-internal-format
msgid "non-element sized vector shift of floating point vector"
msgstr ""
-#: tree-cfg.c:3601
+#: tree-cfg.c:3307
#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3625
+#: tree-cfg.c:3331
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr ""
-#: tree-cfg.c:3640
+#: tree-cfg.c:3346
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr ""
-#: tree-cfg.c:3663
+#: tree-cfg.c:3369
#, gcc-internal-format
msgid "type mismatch in binary truth expression"
msgstr ""
-#: tree-cfg.c:3731
+#: tree-cfg.c:3437
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr ""
-#: tree-cfg.c:3756
+#: tree-cfg.c:3462
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr ""
-#: tree-cfg.c:3773
+#: tree-cfg.c:3479
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr ""
-#: tree-cfg.c:3780
+#: tree-cfg.c:3487
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr ""
-#: tree-cfg.c:3804 tree-cfg.c:3830
+#: tree-cfg.c:3511 tree-cfg.c:3537
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:3896
+#: tree-cfg.c:3601
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr ""
-#: tree-cfg.c:3908
+#: tree-cfg.c:3613
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr ""
-#: tree-cfg.c:3932
+#: tree-cfg.c:3637
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr ""
-#: tree-cfg.c:3947
+#: tree-cfg.c:3652
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr ""
-#: tree-cfg.c:3967
+#: tree-cfg.c:3672
#, gcc-internal-format
msgid "Invalid PHI result"
msgstr ""
-#: tree-cfg.c:3979
+#: tree-cfg.c:3684
#, gcc-internal-format
msgid "Invalid PHI argument"
msgstr ""
-#: tree-cfg.c:3985
+#: tree-cfg.c:3690
#, gcc-internal-format
msgid "Incompatible types in PHI argument %u"
msgstr ""
-#: tree-cfg.c:4110
+#: tree-cfg.c:3830
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4144
+#: tree-cfg.c:3865
#, gcc-internal-format
msgid "invalid function in call statement"
msgstr ""
-#: tree-cfg.c:4155
+#: tree-cfg.c:3876
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr ""
-#: tree-cfg.c:4165 tree-ssa.c:669 tree-ssa.c:678
+#: tree-cfg.c:3889 tree-ssa.c:991 tree-ssa.c:1000
#, gcc-internal-format
msgid "in statement"
msgstr ""
-#: tree-cfg.c:4182
+#: tree-cfg.c:3909
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4187
+#: tree-cfg.c:3915
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4259
+#: tree-cfg.c:3987
#, gcc-internal-format
msgid "Dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4297
+#: tree-cfg.c:4025
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4308
+#: tree-cfg.c:4036
#, gcc-internal-format
msgid "missing PHI def"
msgstr ""
-#: tree-cfg.c:4319
+#: tree-cfg.c:4047
#, gcc-internal-format
msgid "PHI argument is not a GIMPLE value"
msgstr ""
-#: tree-cfg.c:4328 tree-cfg.c:4389
+#: tree-cfg.c:4056 tree-cfg.c:4129
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4351
+#: tree-cfg.c:4079
#, gcc-internal-format
msgid "invalid GIMPLE statement"
msgstr ""
-#: tree-cfg.c:4360
+#: tree-cfg.c:4088
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4372
+#: tree-cfg.c:4101
+#, gcc-internal-format
+msgid "incorrect entry in label_to_block_map"
+msgstr ""
+
+#: tree-cfg.c:4111
#, gcc-internal-format
-msgid "incorrect entry in label_to_block_map.\n"
+msgid "incorrect setting of landing pad number"
msgstr ""
-#: tree-cfg.c:4405
+#: tree-cfg.c:4145
#, gcc-internal-format
msgid "verify_stmts failed"
msgstr ""
-#: tree-cfg.c:4428
+#: tree-cfg.c:4168
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4434
+#: tree-cfg.c:4174
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4441
+#: tree-cfg.c:4181
#, gcc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4465
+#: tree-cfg.c:4205
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4474 tree-cfg.c:4483 tree-cfg.c:4508
+#: tree-cfg.c:4214 tree-cfg.c:4223 tree-cfg.c:4248
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4498
+#: tree-cfg.c:4238
#, gcc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4528
+#: tree-cfg.c:4271
#, gcc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4541
+#: tree-cfg.c:4284
#, gcc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4564 tree-cfg.c:4586 tree-cfg.c:4599 tree-cfg.c:4668
+#: tree-cfg.c:4307 tree-cfg.c:4329 tree-cfg.c:4342 tree-cfg.c:4411
#, gcc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4574
+#: tree-cfg.c:4317
#, gcc-internal-format
msgid "explicit goto at end of bb %d"
msgstr ""
-#: tree-cfg.c:4604
+#: tree-cfg.c:4347
#, gcc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4634
+#: tree-cfg.c:4377
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4642
+#: tree-cfg.c:4385
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr ""
-#: tree-cfg.c:4659
+#: tree-cfg.c:4402
#, gcc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4682
+#: tree-cfg.c:4425
#, gcc-internal-format
msgid "missing edge %i->%i"
msgstr ""
-#: tree-cfg.c:7156
+#: tree-cfg.c:7006
#, gcc-internal-format
-msgid "%H%<noreturn%> function does return"
+msgid "%<noreturn%> function does return"
msgstr ""
-#: tree-cfg.c:7176
+#: tree-cfg.c:7026
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr ""
-#: tree-cfg.c:7238
+#: tree-cfg.c:7089
+#, gcc-internal-format
+msgid "function might be possible candidate for attribute %<noreturn%>"
+msgstr ""
+
+#: tree-cfg.c:7160
#, gcc-internal-format
-msgid "%Jfunction might be possible candidate for attribute %<noreturn%>"
+msgid ""
+"ignoring return value of %qD, declared with attribute warn_unused_result"
msgstr ""
-#: tree-dump.c:923
+#: tree-cfg.c:7165
+#, gcc-internal-format
+msgid ""
+"ignoring return value of function declared with attribute warn_unused_result"
+msgstr ""
+
+#: tree-dump.c:929
#, gcc-internal-format
msgid "could not open dump file %qs: %s"
msgstr ""
-#: tree-dump.c:1056
+#: tree-dump.c:1062
#, gcc-internal-format
msgid "ignoring unknown option %q.*s in %<-fdump-%s%>"
msgstr ""
-#: tree-eh.c:2080
+#: tree-eh.c:3882
#, gcc-internal-format
-msgid "EH edge %i->%i is missing"
+msgid "BB %i has multiple EH edges"
msgstr ""
-#: tree-eh.c:2085
+#: tree-eh.c:3894
#, gcc-internal-format
-msgid "EH edge %i->%i miss EH flag"
+msgid "BB %i can not throw but has an EH edge"
msgstr ""
-#. ??? might not be mistake.
-#: tree-eh.c:2091
+#: tree-eh.c:3902
#, gcc-internal-format
-msgid "EH edge %i->%i has duplicated regions"
+msgid "BB %i last statement has incorrectly set lp"
msgstr ""
-#: tree-eh.c:2127
+#: tree-eh.c:3908
#, gcc-internal-format
-msgid "BB %i can not throw but has EH edges"
+msgid "BB %i is missing an EH edge"
msgstr ""
-#: tree-eh.c:2134
+#: tree-eh.c:3914
#, gcc-internal-format
-msgid "BB %i last statement has incorrectly set region"
+msgid "Incorrect EH edge %i->%i"
msgstr ""
-#: tree-eh.c:2146
+#: tree-eh.c:3948 tree-eh.c:3967
#, gcc-internal-format
-msgid "unnecessary EH edge %i->%i"
+msgid "BB %i is missing an edge"
msgstr ""
-#: tree-inline.c:2474
+#: tree-eh.c:3984
+#, gcc-internal-format
+msgid "BB %i too many fallthru edges"
+msgstr ""
+
+#: tree-eh.c:3993
+#, gcc-internal-format
+msgid "BB %i has incorrect edge"
+msgstr ""
+
+#: tree-eh.c:3999
+#, gcc-internal-format
+msgid "BB %i has incorrect fallthru edge"
+msgstr ""
+
+#: tree-inline.c:2774
+#, gcc-internal-format
+msgid "function %q+F can never be copied because it receives a non-local goto"
+msgstr ""
+
+#: tree-inline.c:2791
+#, gcc-internal-format
+msgid ""
+"function %q+F can never be copied because it saves address of local label in "
+"a static variable"
+msgstr ""
+
+#: tree-inline.c:2801
#, gcc-internal-format
msgid ""
-"function %q+F can never be inlined because it uses variable sized variables"
+"function %q+F can never be copied because it uses variable sized variables"
msgstr ""
-#: tree-inline.c:2508
+#: tree-inline.c:2839
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses alloca (override using "
"the always_inline attribute)"
msgstr ""
-#: tree-inline.c:2522
+#: tree-inline.c:2853
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:2536
+#: tree-inline.c:2867
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:2548
+#: tree-inline.c:2879
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses setjmp-longjmp exception "
"handling"
msgstr ""
-#: tree-inline.c:2556
+#: tree-inline.c:2887
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:2568
+#: tree-inline.c:2899
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses __builtin_return or "
"__builtin_apply_args"
msgstr ""
-#: tree-inline.c:2588
+#: tree-inline.c:2919
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:2603
-#, gcc-internal-format
-msgid "function %q+F can never be inlined because it receives a non-local goto"
-msgstr ""
-
-#: tree-inline.c:2629
-#, gcc-internal-format
-msgid ""
-"function %q+F can never be inlined because it saves address of local label "
-"in a static variable"
-msgstr ""
-
-#: tree-inline.c:2720
+#: tree-inline.c:2999
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:2734
+#: tree-inline.c:3013
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses attributes conflicting "
"with inlining"
msgstr ""
-#: tree-inline.c:3259 tree-inline.c:3270
+#: tree-inline.c:3577 tree-inline.c:3588
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
-#: tree-inline.c:3261 tree-inline.c:3272
+#: tree-inline.c:3579 tree-inline.c:3590
#, gcc-internal-format
msgid "called from here"
msgstr ""
-#: tree-mudflap.c:873
+#: tree-mudflap.c:907
#, gcc-internal-format
msgid "mudflap checking not yet implemented for ARRAY_RANGE_REF"
msgstr ""
-#: tree-mudflap.c:1064
+#: tree-mudflap.c:1114
#, gcc-internal-format
msgid "mudflap cannot track %qE in stub function"
msgstr ""
-#: tree-mudflap.c:1308
+#: tree-mudflap.c:1358
#, gcc-internal-format
msgid "mudflap cannot track unknown size extern %qE"
msgstr ""
@@ -25510,18 +26432,18 @@ msgstr ""
msgid "mudflap: this language is not supported"
msgstr ""
-#: tree-optimize.c:419
+#: tree-optimize.c:417
#, gcc-internal-format
msgid "size of return value of %q+D is %u bytes"
msgstr ""
-#: tree-optimize.c:422
+#: tree-optimize.c:420
#, gcc-internal-format
msgid "size of return value of %q+D is larger than %wd bytes"
msgstr ""
-#: tree-outof-ssa.c:693 tree-outof-ssa.c:750 tree-ssa-coalesce.c:956
-#: tree-ssa-coalesce.c:971 tree-ssa-coalesce.c:1190 tree-ssa-live.c:1130
+#: tree-outof-ssa.c:756 tree-outof-ssa.c:813 tree-ssa-coalesce.c:958
+#: tree-ssa-coalesce.c:973 tree-ssa-coalesce.c:1195 tree-ssa-live.c:1194
#, gcc-internal-format
msgid "SSA corruption"
msgstr ""
@@ -25531,310 +26453,314 @@ msgstr ""
msgid "unimplemented functionality"
msgstr ""
-#: tree-ssa-structalias.c:4708
+#: tree-ssa-loop.c:315
#, gcc-internal-format
-msgid "initialized from %qE"
+msgid "loop blocking not implemented"
msgstr ""
-#: tree-ssa-structalias.c:4712
-#, gcc-internal-format
-msgid "initialized from here"
-msgstr ""
-
-#: tree-ssa-structalias.c:4761
-#, gcc-internal-format
-msgid "dereferencing pointer %qD does break strict-aliasing rules"
-msgstr ""
-
-#: tree-ssa.c:252
+#: tree-ssa.c:571
#, gcc-internal-format
msgid "expected an SSA_NAME object"
msgstr ""
-#: tree-ssa.c:258
+#: tree-ssa.c:577
#, gcc-internal-format
msgid "type mismatch between an SSA_NAME and its symbol"
msgstr ""
-#: tree-ssa.c:264
+#: tree-ssa.c:583
#, gcc-internal-format
msgid "found an SSA_NAME that had been released into the free pool"
msgstr ""
-#: tree-ssa.c:270
+#: tree-ssa.c:589
#, gcc-internal-format
msgid "found a virtual definition for a GIMPLE register"
msgstr ""
-#: tree-ssa.c:276
+#: tree-ssa.c:595
#, gcc-internal-format
msgid "virtual SSA name for non-VOP decl"
msgstr ""
-#: tree-ssa.c:282
+#: tree-ssa.c:601
#, gcc-internal-format
msgid "found a real definition for a non-register"
msgstr ""
-#: tree-ssa.c:289
+#: tree-ssa.c:608
#, gcc-internal-format
msgid "found a default name with a non-empty defining statement"
msgstr ""
-#: tree-ssa.c:317
+#: tree-ssa.c:636
#, gcc-internal-format
msgid "SSA_NAME created in two different blocks %i and %i"
msgstr ""
-#: tree-ssa.c:326 tree-ssa.c:696
+#: tree-ssa.c:645 tree-ssa.c:1018
#, gcc-internal-format
msgid "SSA_NAME_DEF_STMT is wrong"
msgstr ""
-#: tree-ssa.c:378
+#: tree-ssa.c:697
#, gcc-internal-format
msgid "missing definition"
msgstr ""
-#: tree-ssa.c:384
+#: tree-ssa.c:703
#, gcc-internal-format
msgid "definition in block %i does not dominate use in block %i"
msgstr ""
-#: tree-ssa.c:392
+#: tree-ssa.c:711
#, gcc-internal-format
msgid "definition in block %i follows the use"
msgstr ""
-#: tree-ssa.c:399
+#: tree-ssa.c:718
#, gcc-internal-format
msgid "SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set"
msgstr ""
-#: tree-ssa.c:407
+#: tree-ssa.c:726
#, gcc-internal-format
msgid "no immediate_use list"
msgstr ""
-#: tree-ssa.c:419
+#: tree-ssa.c:738
#, gcc-internal-format
msgid "wrong immediate use list"
msgstr ""
-#: tree-ssa.c:453
+#: tree-ssa.c:772
#, gcc-internal-format
msgid "incoming edge count does not match number of PHI arguments"
msgstr ""
-#: tree-ssa.c:467
+#: tree-ssa.c:786
#, gcc-internal-format
msgid "PHI argument is missing for edge %d->%d"
msgstr ""
-#: tree-ssa.c:476
+#: tree-ssa.c:795
#, gcc-internal-format
msgid "PHI argument is not SSA_NAME, or invariant"
msgstr ""
-#: tree-ssa.c:504
+#: tree-ssa.c:823
#, gcc-internal-format
msgid "wrong edge %d->%d for PHI argument"
msgstr ""
-#: tree-ssa.c:585
+#: tree-ssa.c:904
#, gcc-internal-format
msgid "AUX pointer initialized for edge %d->%d"
msgstr ""
-#: tree-ssa.c:611
+#: tree-ssa.c:930
#, gcc-internal-format
msgid "stmt (%p) marked modified after optimization pass: "
msgstr ""
-#: tree-ssa.c:630
+#: tree-ssa.c:949
#, gcc-internal-format
msgid "statement makes a memory store, but has no VDEFS"
msgstr ""
-#: tree-ssa.c:642
+#: tree-ssa.c:964
#, gcc-internal-format
msgid "statement has VDEF operand not in defs list"
msgstr ""
-#: tree-ssa.c:647
+#: tree-ssa.c:969
#, gcc-internal-format
msgid "statement has VDEF but no VUSE operand"
msgstr ""
-#: tree-ssa.c:653
+#: tree-ssa.c:975
#, gcc-internal-format
msgid "VDEF and VUSE do not use the same symbol"
msgstr ""
-#: tree-ssa.c:662
+#: tree-ssa.c:984
#, gcc-internal-format
msgid "statement has VUSE operand not in uses list"
msgstr ""
-#: tree-ssa.c:725
+#: tree-ssa.c:1047
#, gcc-internal-format
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1271
+#: tree-ssa.c:1665
#, gcc-internal-format
-msgid "%J%qD was declared here"
+msgid "%qD was declared here"
msgstr ""
-#: tree-ssa.c:1338
+#: tree-ssa.c:1737
#, gcc-internal-format
msgid "%qD is used uninitialized in this function"
msgstr ""
-#: tree-ssa.c:1341 tree-ssa.c:1380
+#: tree-ssa.c:1740 tree-ssa.c:1779
#, gcc-internal-format
msgid "%qD may be used uninitialized in this function"
msgstr ""
-#: tree-vrp.c:5033
+#: tree-vrp.c:5017
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:5048
+#: tree-vrp.c:5032
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:5055
+#: tree-vrp.c:5039
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:5705
+#: tree-vrp.c:5708
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying conditional to "
"constant"
msgstr ""
-#: tree-vrp.c:5711
+#: tree-vrp.c:5714
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:5748
+#: tree-vrp.c:5758
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:5751
+#: tree-vrp.c:5760
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree.c:3697
+#: tree-vrp.c:6602
+#, gcc-internal-format
+msgid ""
+"assuming signed overflow does not occur when simplifying %</%> or %<%%%> to %"
+"<>>%> or %<&%>"
+msgstr ""
+
+#: tree-vrp.c:6684
+#, gcc-internal-format
+msgid ""
+"assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%"
+"> or %<-X%>"
+msgstr ""
+
+#: tree.c:4072
#, gcc-internal-format
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:3980
+#: tree.c:5218
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:3992
+#: tree.c:5230
#, gcc-internal-format
msgid ""
"%q+D redeclared without dllimport attribute after being referenced with dll "
"linkage"
msgstr ""
-#: tree.c:4007
+#: tree.c:5245
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:4104
+#: tree.c:5345
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:4112
+#: tree.c:5353
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:4120 config/sh/symbian.c:430
+#: tree.c:5361 config/sh/symbian-c.c:144 config/sh/symbian-cxx.c:576
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:4143 config/sh/symbian.c:505
+#: tree.c:5388 config/sh/symbian-c.c:164 config/sh/symbian-cxx.c:651
#, gcc-internal-format
msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:4157
+#: tree.c:5402
#, gcc-internal-format
msgid ""
"%qE implies default visibility, but %qD has already been declared with a "
"different visibility"
msgstr ""
-#: tree.c:5739
+#: tree.c:6995
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:5890
+#: tree.c:7131
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:7103 tree.c:7188 tree.c:7249
+#: tree.c:8343 tree.c:8428 tree.c:8489
#, gcc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7140
+#: tree.c:8380
#, gcc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7153
+#: tree.c:8393
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:7202
+#: tree.c:8442
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:7215
+#: tree.c:8455
#, gcc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7275
+#: tree.c:8515
#, gcc-internal-format
msgid ""
"tree check: expected tree that contains %qs structure, have %qs in %s, at %s:"
"%d"
msgstr ""
-#: tree.c:7289
+#: tree.c:8529
#, gcc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:7302
+#: tree.c:8542
#, gcc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:7315
+#: tree.c:8555
#, gcc-internal-format
msgid ""
"tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %"
@@ -25868,154 +26794,149 @@ msgstr ""
#: value-prof.c:477
#, gcc-internal-format
msgid ""
-"%HCorrupted value profile: %s profiler overall count (%d) does not match BB "
+"Corrupted value profile: %s profiler overall count (%d) does not match BB "
"count (%d)"
msgstr ""
-#: varasm.c:574
+#: varasm.c:580
#, gcc-internal-format
msgid "%+D causes a section type conflict"
msgstr ""
-#: varasm.c:1124
+#: varasm.c:1130
#, gcc-internal-format
msgid ""
"alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1350 varasm.c:1358
+#: varasm.c:1356 varasm.c:1364
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr ""
-#: varasm.c:1360
+#: varasm.c:1366
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr ""
-#: varasm.c:1362
+#: varasm.c:1368
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1365
+#: varasm.c:1371
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1375
+#: varasm.c:1381
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1379
+#: varasm.c:1385
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1417
+#: varasm.c:1423
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1486
+#: varasm.c:1492
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr ""
-#: varasm.c:1552
+#: varasm.c:1558
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr ""
-#: varasm.c:1938
+#: varasm.c:1945
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1967
+#: varasm.c:1974
#, gcc-internal-format
msgid ""
"requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4486
+#: varasm.c:4536
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4491
+#: varasm.c:4541
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4764
+#: varasm.c:4847
#, gcc-internal-format
msgid "invalid initial value for member %qE"
msgstr ""
-#: varasm.c:4960 varasm.c:5004
+#: varasm.c:5156 varasm.c:5200
#, gcc-internal-format
msgid "weak declaration of %q+D must precede definition"
msgstr ""
-#: varasm.c:4968
+#: varasm.c:5164
#, gcc-internal-format
msgid ""
"weak declaration of %q+D after first use results in unspecified behavior"
msgstr ""
-#: varasm.c:5002
+#: varasm.c:5198
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr ""
-#: varasm.c:5006
+#: varasm.c:5202
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr ""
-#: varasm.c:5032
+#: varasm.c:5228 varasm.c:5630
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5266
+#: varasm.c:5445
#, gcc-internal-format
-msgid "%Jweakref is not supported in this configuration"
+msgid "weakref is not supported in this configuration"
msgstr ""
-#: varasm.c:5347
+#: varasm.c:5559
#, gcc-internal-format
msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5352
+#: varasm.c:5569
#, gcc-internal-format
msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5391
+#: varasm.c:5608
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5400
+#: varasm.c:5617
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5406
-#, gcc-internal-format
-msgid "%Jalias definitions not supported in this configuration"
-msgstr ""
-
-#: varasm.c:5411
+#: varasm.c:5624
#, gcc-internal-format
-msgid "%Jonly weak aliases are supported in this configuration"
+msgid "alias definitions not supported in this configuration"
msgstr ""
-#: varasm.c:5471
+#: varasm.c:5690
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
@@ -26030,7 +26951,7 @@ msgstr ""
msgid "underflowed virtual array %s in %s, at %s:%d"
msgstr ""
-#: vec.c:382
+#: vec.c:523
#, gcc-internal-format
msgid "vector %s %s domain error, in %s at %s:%u"
msgstr ""
@@ -26195,7 +27116,7 @@ msgstr ""
#. coalesced sections. Weak aliases (or any other kind of aliases) are
#. not supported. Weak symbols that aren't visible outside the .s file
#. are not supported.
-#: config/darwin.h:456
+#: config/darwin.h:488
#, gcc-internal-format
msgid "alias definitions not supported in Mach-O; ignored"
msgstr ""
@@ -26206,303 +27127,339 @@ msgstr ""
msgid "profiler support for VxWorks"
msgstr ""
-#: config/alpha/alpha.c:233 config/rs6000/rs6000.c:2194
+#: config/alpha/alpha.c:230 config/rs6000/rs6000.c:3103
#, gcc-internal-format
msgid "bad value %qs for -mtls-size switch"
msgstr ""
-#: config/alpha/alpha.c:287
+#: config/alpha/alpha.c:284
#, gcc-internal-format
msgid "-f%s ignored for Unicos/Mk (not supported)"
msgstr ""
-#: config/alpha/alpha.c:311
+#: config/alpha/alpha.c:308
#, gcc-internal-format
msgid "-mieee not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:322
+#: config/alpha/alpha.c:319
#, gcc-internal-format
msgid "-mieee-with-inexact not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:339
+#: config/alpha/alpha.c:336
#, gcc-internal-format
msgid "bad value %qs for -mtrap-precision switch"
msgstr ""
-#: config/alpha/alpha.c:353
+#: config/alpha/alpha.c:350
#, gcc-internal-format
msgid "bad value %qs for -mfp-rounding-mode switch"
msgstr ""
-#: config/alpha/alpha.c:368
+#: config/alpha/alpha.c:365
#, gcc-internal-format
msgid "bad value %qs for -mfp-trap-mode switch"
msgstr ""
-#: config/alpha/alpha.c:382 config/alpha/alpha.c:394
+#: config/alpha/alpha.c:379 config/alpha/alpha.c:391
#, gcc-internal-format
msgid "bad value %qs for -mcpu switch"
msgstr ""
-#: config/alpha/alpha.c:401
+#: config/alpha/alpha.c:398
#, gcc-internal-format
msgid "trap mode not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:408
+#: config/alpha/alpha.c:405
#, gcc-internal-format
msgid "fp software completion requires -mtrap-precision=i"
msgstr ""
-#: config/alpha/alpha.c:424
+#: config/alpha/alpha.c:421
#, gcc-internal-format
msgid "rounding mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:429
+#: config/alpha/alpha.c:426
#, gcc-internal-format
msgid "trap mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:433
+#: config/alpha/alpha.c:430
#, gcc-internal-format
msgid "128-bit long double not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:461
+#: config/alpha/alpha.c:458
#, gcc-internal-format
msgid "L%d cache latency unknown for %s"
msgstr ""
-#: config/alpha/alpha.c:476
+#: config/alpha/alpha.c:473
#, gcc-internal-format
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6578 config/alpha/alpha.c:6581 config/s390/s390.c:8715
-#: config/s390/s390.c:8718
+#: config/alpha/alpha.c:6728 config/alpha/alpha.c:6731 config/s390/s390.c:8797
+#: config/s390/s390.c:8800
#, gcc-internal-format
msgid "bad builtin fcode"
msgstr ""
-#: config/arc/arc.c:392
+#: config/arc/arc.c:393
#, gcc-internal-format
msgid "argument of %qE attribute is not a string constant"
msgstr ""
-#: config/arc/arc.c:400
+#: config/arc/arc.c:401
#, gcc-internal-format
msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arm/arm.c:1183
+#: config/arm/arm.c:1342
#, gcc-internal-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:1193 config/rs6000/rs6000.c:1592 config/sparc/sparc.c:768
+#: config/arm/arm.c:1352 config/rs6000/rs6000.c:2334 config/sparc/sparc.c:780
#, gcc-internal-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:1306
+#: config/arm/arm.c:1465
+#, gcc-internal-format
+msgid "invalid __fp16 format option: -mfp16-format=%s"
+msgstr ""
+
+#: config/arm/arm.c:1482
#, gcc-internal-format
msgid "invalid ABI option: -mabi=%s"
msgstr ""
-#: config/arm/arm.c:1314
+#: config/arm/arm.c:1490
#, gcc-internal-format
msgid "target CPU does not support ARM mode"
msgstr ""
-#: config/arm/arm.c:1320
+#: config/arm/arm.c:1496
#, gcc-internal-format
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:1326
+#: config/arm/arm.c:1502
#, gcc-internal-format
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:1344
+#: config/arm/arm.c:1520
#, gcc-internal-format
msgid ""
"enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:1347
+#: config/arm/arm.c:1523
#, gcc-internal-format
msgid ""
"enabling callee interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:1350
+#: config/arm/arm.c:1526
#, gcc-internal-format
msgid ""
"enabling caller interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:1354
+#: config/arm/arm.c:1530
#, gcc-internal-format
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:1362
+#: config/arm/arm.c:1538
#, gcc-internal-format
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:1365
+#: config/arm/arm.c:1541
#, gcc-internal-format
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:1373
+#: config/arm/arm.c:1549
#, gcc-internal-format
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:1376
+#: config/arm/arm.c:1552
#, gcc-internal-format
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:1433
+#: config/arm/arm.c:1609
#, gcc-internal-format
msgid "iwmmxt requires an AAPCS compatible ABI for proper operation"
msgstr ""
-#: config/arm/arm.c:1436
+#: config/arm/arm.c:1612
#, gcc-internal-format
msgid "iwmmxt abi requires an iwmmxt capable cpu"
msgstr ""
-#: config/arm/arm.c:1446
+#: config/arm/arm.c:1622
#, gcc-internal-format
msgid "invalid floating point emulation option: -mfpe=%s"
msgstr ""
-#: config/arm/arm.c:1463
+#: config/arm/arm.c:1639
#, gcc-internal-format
msgid "invalid floating point option: -mfpu=%s"
msgstr ""
-#: config/arm/arm.c:1503
+#: config/arm/arm.c:1679
#, gcc-internal-format
msgid "invalid floating point abi: -mfloat-abi=%s"
msgstr ""
-#: config/arm/arm.c:1510
+#: config/arm/arm.c:1687
#, gcc-internal-format
-msgid "-mfloat-abi=hard and VFP"
+msgid "FPA is unsupported in the AAPCS"
msgstr ""
-#: config/arm/arm.c:1514
+#: config/arm/arm.c:1692
#, gcc-internal-format
-msgid "FPA is unsupported in the AAPCS"
+msgid "AAPCS does not support -mcaller-super-interworking"
msgstr ""
-#: config/arm/arm.c:1520
+#: config/arm/arm.c:1695
+#, gcc-internal-format
+msgid "AAPCS does not support -mcallee-super-interworking"
+msgstr ""
+
+#: config/arm/arm.c:1702
#, gcc-internal-format
msgid "iWMMXt and hardware floating point"
msgstr ""
-#: config/arm/arm.c:1524
+#: config/arm/arm.c:1706
#, gcc-internal-format
msgid "Thumb-2 iWMMXt"
msgstr ""
-#: config/arm/arm.c:1547
+#: config/arm/arm.c:1710
+#, gcc-internal-format
+msgid "__fp16 and no ldrh"
+msgstr ""
+
+#: config/arm/arm.c:1730
+#, gcc-internal-format
+msgid "-mfloat-abi=hard and VFP"
+msgstr ""
+
+#: config/arm/arm.c:1755
#, gcc-internal-format
msgid "invalid thread pointer option: -mtp=%s"
msgstr ""
-#: config/arm/arm.c:1560
+#: config/arm/arm.c:1768
#, gcc-internal-format
msgid "can not use -mtp=cp15 with 16-bit Thumb"
msgstr ""
-#: config/arm/arm.c:1574
+#: config/arm/arm.c:1782
#, gcc-internal-format
msgid "structure size boundary can only be set to %s"
msgstr ""
-#: config/arm/arm.c:1580
+#: config/arm/arm.c:1788
#, gcc-internal-format
msgid "RTP PIC is incompatible with Thumb"
msgstr ""
-#: config/arm/arm.c:1589
+#: config/arm/arm.c:1797
#, gcc-internal-format
msgid "RTP PIC is incompatible with -msingle-pic-base"
msgstr ""
-#: config/arm/arm.c:1601
+#: config/arm/arm.c:1809
#, gcc-internal-format
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:1610
+#: config/arm/arm.c:1818
#, gcc-internal-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:3267 config/arm/arm.c:3285 config/avr/avr.c:4827
-#: config/avr/avr.c:4843 config/bfin/bfin.c:5270 config/bfin/bfin.c:5331
-#: config/bfin/bfin.c:5360 config/h8300/h8300.c:5259 config/i386/i386.c:4248
-#: config/i386/i386.c:26839 config/m68hc11/m68hc11.c:1147
-#: config/m68k/m68k.c:784 config/mcore/mcore.c:3034
-#: config/rs6000/rs6000.c:20670 config/sh/sh.c:8132 config/sh/sh.c:8150
-#: config/sh/sh.c:8179 config/sh/sh.c:8261 config/sh/sh.c:8284
-#: config/spu/spu.c:3726 config/stormy16/stormy16.c:2221
-#: config/v850/v850.c:2048
+#: config/arm/arm.c:3590
+#, gcc-internal-format
+msgid "Non-AAPCS derived PCS variant"
+msgstr ""
+
+#: config/arm/arm.c:3592
+#, gcc-internal-format
+msgid "Variadic functions must use the base AAPCS variant"
+msgstr ""
+
+#: config/arm/arm.c:3611
+#, gcc-internal-format
+msgid "PCS variant"
+msgstr ""
+
+#: config/arm/arm.c:4472 config/arm/arm.c:4490 config/avr/avr.c:4678
+#: config/avr/avr.c:4694 config/bfin/bfin.c:5546 config/bfin/bfin.c:5607
+#: config/bfin/bfin.c:5636 config/h8300/h8300.c:5338 config/i386/i386.c:4364
+#: config/i386/i386.c:26460 config/i386/i386.c:26542
+#: config/m68hc11/m68hc11.c:1168 config/m68k/m68k.c:802
+#: config/mcore/mcore.c:3036 config/mep/mep.c:4061 config/mep/mep.c:4075
+#: config/mep/mep.c:4149 config/rs6000/rs6000.c:23288 config/sh/sh.c:8625
+#: config/sh/sh.c:8643 config/sh/sh.c:8672 config/sh/sh.c:8754
+#: config/sh/sh.c:8777 config/spu/spu.c:3751 config/stormy16/stormy16.c:2230
+#: config/v850/v850.c:2072
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:14814
+#: config/arm/arm.c:16127
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:16320
+#: config/arm/arm.c:17707
#, gcc-internal-format
msgid "argument must be a constant"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:16628 config/arm/arm.c:16665
+#: config/arm/arm.c:18015 config/arm/arm.c:18052
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:16708
+#: config/arm/arm.c:18095
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:17369
+#: config/arm/arm.c:18757
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:17592
+#: config/arm/arm.c:18980
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:19640
+#: config/arm/arm.c:21099
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
-#: config/arm/pe.c:158 config/mcore/mcore.c:2900
+#: config/arm/pe.c:158 config/mcore/mcore.c:2911
#, gcc-internal-format
msgid "initialized variable %q+D is marked dllimport"
msgstr ""
@@ -26512,107 +27469,103 @@ msgstr ""
msgid "static variable %q+D is marked dllimport"
msgstr ""
-#: config/avr/avr.c:4629
+#: config/avr/avr.c:4492
#, gcc-internal-format
msgid "%qs appears to be a misspelled interrupt handler"
msgstr ""
-#: config/avr/avr.c:4638
+#: config/avr/avr.c:4501
#, gcc-internal-format
msgid "%qs appears to be a misspelled signal handler"
msgstr ""
-#: config/avr/avr.c:4800
+#: config/avr/avr.c:4651
#, gcc-internal-format
msgid "only initialized variables can be placed into program memory area"
msgstr ""
-#: config/avr/avr.c:4934
+#: config/avr/avr.c:4785
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:4948
+#: config/avr/avr.c:4799
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.h:738
-#, gcc-internal-format
-msgid "trampolines not supported"
-msgstr ""
-
-#: config/bfin/bfin.c:2458 config/m68k/m68k.c:501
+#: config/bfin/bfin.c:2554 config/m68k/m68k.c:519
#, gcc-internal-format
msgid "-mshared-library-id=%s is not between 0 and %d"
msgstr ""
-#: config/bfin/bfin.c:2478
+#: config/bfin/bfin.c:2574
#, gcc-internal-format
msgid "-mcpu=%s is not valid"
msgstr ""
-#: config/bfin/bfin.c:2514
+#: config/bfin/bfin.c:2610
#, gcc-internal-format
msgid "-mcpu=%s has invalid silicon revision"
msgstr ""
-#: config/bfin/bfin.c:2579
+#: config/bfin/bfin.c:2675
#, gcc-internal-format
msgid "-mshared-library-id= specified without -mid-shared-library"
msgstr ""
-#: config/bfin/bfin.c:2582
+#: config/bfin/bfin.c:2678
#, gcc-internal-format
msgid "Can't use multiple stack checking methods together."
msgstr ""
-#: config/bfin/bfin.c:2585
+#: config/bfin/bfin.c:2681
#, gcc-internal-format
msgid "ID shared libraries and FD-PIC mode can't be used together."
msgstr ""
-#: config/bfin/bfin.c:2590 config/m68k/m68k.c:609
+#: config/bfin/bfin.c:2686 config/m68k/m68k.c:627
#, gcc-internal-format
msgid "cannot specify both -msep-data and -mid-shared-library"
msgstr ""
-#: config/bfin/bfin.c:2610
+#: config/bfin/bfin.c:2706
#, gcc-internal-format
msgid "-mmulticore can only be used with BF561"
msgstr ""
-#: config/bfin/bfin.c:2613
+#: config/bfin/bfin.c:2709
#, gcc-internal-format
msgid "-mcorea should be used with -mmulticore"
msgstr ""
-#: config/bfin/bfin.c:2616
+#: config/bfin/bfin.c:2712
#, gcc-internal-format
msgid "-mcoreb should be used with -mmulticore"
msgstr ""
-#: config/bfin/bfin.c:2619
+#: config/bfin/bfin.c:2715
#, gcc-internal-format
msgid "-mcorea and -mcoreb can't be used together"
msgstr ""
-#: config/bfin/bfin.c:5275
+#: config/bfin/bfin.c:5551
#, gcc-internal-format
msgid "multiple function type attributes specified"
msgstr ""
-#: config/bfin/bfin.c:5342
+#: config/bfin/bfin.c:5618
#, gcc-internal-format
msgid "can't apply both longcall and shortcall attributes to the same function"
msgstr ""
-#: config/bfin/bfin.c:5392 config/i386/winnt.c:59
+#: config/bfin/bfin.c:5668 config/i386/winnt.c:59 config/mep/mep.c:3965
+#: config/mep/mep.c:4103
#, gcc-internal-format
msgid "%qE attribute only applies to variables"
msgstr ""
-#: config/bfin/bfin.c:5399
+#: config/bfin/bfin.c:5675
#, gcc-internal-format
msgid "%qE attribute cannot be specified for local variables"
msgstr ""
@@ -26621,90 +27574,90 @@ msgstr ""
#. an operator, for immediate output. If that ever happens for
#. MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure
#. we notice.
-#: config/cris/cris.c:447
+#: config/cris/cris.c:463
#, gcc-internal-format
msgid "MULT case in cris_op_str"
msgstr ""
-#: config/cris/cris.c:837
+#: config/cris/cris.c:853
#, gcc-internal-format
msgid "invalid use of ':' modifier"
msgstr ""
-#: config/cris/cris.c:1024
+#: config/cris/cris.c:1040 config/moxie/moxie.c:169
#, gcc-internal-format
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1586
+#: config/cris/cris.c:1607
#, gcc-internal-format
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
-#: config/cris/cris.c:1683
+#: config/cris/cris.c:1704
#, gcc-internal-format
msgid "unknown cc_attr value"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2062
+#: config/cris/cris.c:2088
#, gcc-internal-format
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2354
+#: config/cris/cris.c:2380
#, gcc-internal-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2382
+#: config/cris/cris.c:2408
#, gcc-internal-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2418
+#: config/cris/cris.c:2444
#, gcc-internal-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2439
+#: config/cris/cris.c:2465
#, gcc-internal-format
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2454
+#: config/cris/cris.c:2480
#, gcc-internal-format
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2680
+#: config/cris/cris.c:2706
#, gcc-internal-format
msgid "Unknown src"
msgstr ""
-#: config/cris/cris.c:2741
+#: config/cris/cris.c:2767
#, gcc-internal-format
msgid "Unknown dest"
msgstr ""
-#: config/cris/cris.c:3026
+#: config/cris/cris.c:3052
#, gcc-internal-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:3520 config/cris/cris.c:3548
+#: config/cris/cris.c:3546 config/cris/cris.c:3574
#, gcc-internal-format
msgid "expand_binop failed in movsi got"
msgstr ""
-#: config/cris/cris.c:3630
+#: config/cris/cris.c:3656
#, gcc-internal-format
msgid "emitting PIC operand, but PIC register isn't set up"
msgstr ""
#. Definitions for GCC. Part of the machine description for CRIS.
-#. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
-#. Free Software Foundation, Inc.
+#. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
+#. 2009 Free Software Foundation, Inc.
#. Contributed by Axis Communications. Written by Hans-Peter Nilsson.
#.
#. This file is part of GCC.
@@ -26751,77 +27704,72 @@ msgstr ""
#. See cris.c for TARGET_ASM_FUNCTION_PROLOGUE and
#. TARGET_ASM_FUNCTION_EPILOGUE.
#. Node: Profiling
-#: config/cris/cris.h:953
+#: config/cris/cris.h:935
#, gcc-internal-format
msgid "no FUNCTION_PROFILER for CRIS"
msgstr ""
-#: config/crx/crx.h:368
+#: config/crx/crx.h:363
#, gcc-internal-format
msgid "Profiler support for CRX"
msgstr ""
-#: config/crx/crx.h:379
-#, gcc-internal-format
-msgid "Trampoline support for CRX"
-msgstr ""
-
-#: config/frv/frv.c:8705
+#: config/frv/frv.c:8694
#, gcc-internal-format
msgid "accumulator is not a constant integer"
msgstr ""
-#: config/frv/frv.c:8710
+#: config/frv/frv.c:8699
#, gcc-internal-format
msgid "accumulator number is out of bounds"
msgstr ""
-#: config/frv/frv.c:8721
+#: config/frv/frv.c:8710
#, gcc-internal-format
msgid "inappropriate accumulator for %qs"
msgstr ""
-#: config/frv/frv.c:8798
+#: config/frv/frv.c:8787
#, gcc-internal-format
msgid "invalid IACC argument"
msgstr ""
-#: config/frv/frv.c:8821
+#: config/frv/frv.c:8810
#, gcc-internal-format
msgid "%qs expects a constant argument"
msgstr ""
-#: config/frv/frv.c:8826
+#: config/frv/frv.c:8815
#, gcc-internal-format
msgid "constant argument out of range for %qs"
msgstr ""
-#: config/frv/frv.c:9307
+#: config/frv/frv.c:9296
#, gcc-internal-format
msgid "media functions are not available unless -mmedia is used"
msgstr ""
-#: config/frv/frv.c:9319
+#: config/frv/frv.c:9308
#, gcc-internal-format
msgid "this media function is only available on the fr500"
msgstr ""
-#: config/frv/frv.c:9347
+#: config/frv/frv.c:9336
#, gcc-internal-format
msgid "this media function is only available on the fr400 and fr550"
msgstr ""
-#: config/frv/frv.c:9366
+#: config/frv/frv.c:9355
#, gcc-internal-format
msgid "this builtin function is only available on the fr405 and fr450"
msgstr ""
-#: config/frv/frv.c:9375
+#: config/frv/frv.c:9364
#, gcc-internal-format
msgid "this builtin function is only available on the fr500 and fr550"
msgstr ""
-#: config/frv/frv.c:9387
+#: config/frv/frv.c:9376
#, gcc-internal-format
msgid "this builtin function is only available on the fr450"
msgstr ""
@@ -26846,392 +27794,392 @@ msgstr ""
msgid "can't set position in PCH file: %m"
msgstr ""
-#: config/i386/i386.c:2748 config/i386/i386.c:2990
+#: config/i386/i386.c:2786 config/i386/i386.c:3031
#, gcc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:2792
+#: config/i386/i386.c:2830
#, gcc-internal-format
msgid "bad value (%s) for %sstringop-strategy=%s %s"
msgstr ""
-#: config/i386/i386.c:2796
+#: config/i386/i386.c:2834
#, gcc-internal-format
msgid ""
"%stune=x86-64%s is deprecated. Use %stune=k8%s or %stune=generic%s instead "
"as appropriate."
msgstr ""
-#: config/i386/i386.c:2806
+#: config/i386/i386.c:2844
#, gcc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:2809 config/i386/i386.c:2951
+#: config/i386/i386.c:2847 config/i386/i386.c:2992
#, gcc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:2820
+#: config/i386/i386.c:2858
#, gcc-internal-format
msgid "unknown ABI (%s) for %sabi=%s %s"
msgstr ""
-#: config/i386/i386.c:2835
+#: config/i386/i386.c:2873
#, gcc-internal-format
msgid "code model %s does not support PIC mode"
msgstr ""
-#: config/i386/i386.c:2841
+#: config/i386/i386.c:2879
#, gcc-internal-format
msgid "bad value (%s) for %scmodel=%s %s"
msgstr ""
-#: config/i386/i386.c:2865
+#: config/i386/i386.c:2903
#, gcc-internal-format
msgid "bad value (%s) for %sasm=%s %s"
msgstr ""
-#: config/i386/i386.c:2869
+#: config/i386/i386.c:2907
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:2872
+#: config/i386/i386.c:2910
#, gcc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:2884 config/i386/i386.c:2976
+#: config/i386/i386.c:2922 config/i386/i386.c:3017
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:3009
+#: config/i386/i386.c:3050
#, gcc-internal-format
msgid "%sregparm%s is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3012
+#: config/i386/i386.c:3053
#, gcc-internal-format
msgid "%sregparm=%d%s is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3025
+#: config/i386/i386.c:3066
#, gcc-internal-format
msgid "%salign-loops%s is obsolete, use -falign-loops%s"
msgstr ""
-#: config/i386/i386.c:3031 config/i386/i386.c:3046 config/i386/i386.c:3061
+#: config/i386/i386.c:3072 config/i386/i386.c:3087 config/i386/i386.c:3102
#, gcc-internal-format
msgid "%salign-loops=%d%s is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3040
+#: config/i386/i386.c:3081
#, gcc-internal-format
msgid "%salign-jumps%s is obsolete, use -falign-jumps%s"
msgstr ""
-#: config/i386/i386.c:3055
+#: config/i386/i386.c:3096
#, gcc-internal-format
msgid "%salign-functions%s is obsolete, use -falign-functions%s"
msgstr ""
-#: config/i386/i386.c:3090
+#: config/i386/i386.c:3131
#, gcc-internal-format
msgid "%sbranch-cost=%d%s is not between 0 and 5"
msgstr ""
-#: config/i386/i386.c:3098
+#: config/i386/i386.c:3139
#, gcc-internal-format
msgid "%slarge-data-threshold=%d%s is negative"
msgstr ""
-#: config/i386/i386.c:3112
+#: config/i386/i386.c:3153
#, gcc-internal-format
msgid "bad value (%s) for %stls-dialect=%s %s"
msgstr ""
-#: config/i386/i386.c:3120
+#: config/i386/i386.c:3161
#, gcc-internal-format
msgid "pc%d is not valid precision setting (32, 64 or 80)"
msgstr ""
-#: config/i386/i386.c:3136
+#: config/i386/i386.c:3177
#, gcc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3191
+#: config/i386/i386.c:3232
#, gcc-internal-format
msgid "%spreferred-stack-boundary=%d%s is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3212
+#: config/i386/i386.c:3253
#, gcc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3225
+#: config/i386/i386.c:3266
#, gcc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3236 config/i386/i386.c:3250
+#: config/i386/i386.c:3277 config/i386/i386.c:3291
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3255
+#: config/i386/i386.c:3296
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3262
+#: config/i386/i386.c:3303
#, gcc-internal-format
msgid "bad value (%s) for %sfpmath=%s %s"
msgstr ""
-#: config/i386/i386.c:3278
+#: config/i386/i386.c:3319
#, gcc-internal-format
msgid "unknown vectorization library ABI type (%s) for %sveclibabi=%s %s"
msgstr ""
-#: config/i386/i386.c:3298
+#: config/i386/i386.c:3339
#, gcc-internal-format
msgid ""
"unwind tables currently require either a frame pointer or %saccumulate-"
"outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3311
+#: config/i386/i386.c:3352
#, gcc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3649
+#: config/i386/i386.c:3761
#, gcc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:3671
+#: config/i386/i386.c:3783
#, gcc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4261 config/i386/i386.c:4305
+#: config/i386/i386.c:4377 config/i386/i386.c:4422
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4268
+#: config/i386/i386.c:4384
#, gcc-internal-format
msgid "%qE attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:4274
+#: config/i386/i386.c:4390
#, gcc-internal-format
msgid "argument to %qE attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:4297 config/i386/i386.c:4332
+#: config/i386/i386.c:4414 config/i386/i386.c:4449
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4301
+#: config/i386/i386.c:4418
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4315 config/i386/i386.c:4328
+#: config/i386/i386.c:4432 config/i386/i386.c:4445
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4319
+#: config/i386/i386.c:4436
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4406
+#: config/i386/i386.c:4579
#, gcc-internal-format
-msgid "nested functions are limited to 2 register parameters"
+msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:4492
+#: config/i386/i386.c:4582
#, gcc-internal-format
-msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
+msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:4495
+#: config/i386/i386.c:4787
#, gcc-internal-format
-msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
+msgid "ms_hook_prologue is not compatible with nested function"
msgstr ""
-#: config/i386/i386.c:4754
+#: config/i386/i386.c:4860
#, gcc-internal-format
msgid ""
-"ms_abi attribute require -maccumulate-outgoing-args or subtarget "
+"ms_abi attribute requires -maccumulate-outgoing-args or subtarget "
"optimization implying it"
msgstr ""
-#: config/i386/i386.c:4871
+#: config/i386/i386.c:4979
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5053
+#: config/i386/i386.c:5161
#, gcc-internal-format
msgid ""
"The ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5169
+#: config/i386/i386.c:5277
#, gcc-internal-format
msgid "The ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5284
+#: config/i386/i386.c:5392
#, gcc-internal-format
msgid ""
"The ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5429
+#: config/i386/i386.c:5537
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:5435
+#: config/i386/i386.c:5543
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:5451
+#: config/i386/i386.c:5559
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:5820
+#: config/i386/i386.c:5928
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5857
+#: config/i386/i386.c:5965
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6458
+#: config/i386/i386.c:6567
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6468
+#: config/i386/i386.c:6577
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10734
+#: config/i386/i386.c:11125
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:10749
+#: config/i386/i386.c:11140
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:10987
+#: config/i386/i386.c:11377
#, gcc-internal-format
msgid "non-integer operand used with operand code '%c'"
msgstr ""
-#: config/i386/i386.c:24052
+#: config/i386/i386.c:23627
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr ""
-#: config/i386/i386.c:24345
+#: config/i386/i386.c:23920
#, gcc-internal-format
msgid "the fifth argument must be a 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24440
+#: config/i386/i386.c:24015
#, gcc-internal-format
msgid "the third argument must be a 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24780
+#: config/i386/i386.c:24360
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr ""
-#: config/i386/i386.c:24785
+#: config/i386/i386.c:24365
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr ""
-#: config/i386/i386.c:24794
+#: config/i386/i386.c:24374
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:24803
+#: config/i386/i386.c:24383
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr ""
-#: config/i386/i386.c:24812
+#: config/i386/i386.c:24392
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24816 config/i386/i386.c:24994
+#: config/i386/i386.c:24396 config/i386/i386.c:24580
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:25052 config/rs6000/rs6000.c:8545
+#: config/i386/i386.c:24641 config/rs6000/rs6000.c:10154
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:25195
+#: config/i386/i386.c:24784
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:25199
+#: config/i386/i386.c:24788
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:26846
+#: config/i386/i386.c:26467
#, gcc-internal-format
msgid "%qE attribute only available for 64-bit"
msgstr ""
-#: config/i386/i386.c:26857 config/i386/i386.c:26866
+#: config/i386/i386.c:26478 config/i386/i386.c:26487
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:26904 config/rs6000/rs6000.c:20753
+#: config/i386/i386.c:26525 config/rs6000/rs6000.c:23371
#, gcc-internal-format
msgid "%qE incompatible attribute ignored"
msgstr ""
-#: config/i386/netware.c:253
+#: config/i386/i386.c:26550
#, gcc-internal-format
-msgid "-fPIC and -fpic are not supported for this target"
+msgid "%qE attribute only available for 32-bit"
msgstr ""
-#: config/i386/winnt-cxx.c:71 config/sh/symbian.c:172
+#: config/i386/i386.c:26556
#, gcc-internal-format
-msgid "definition of static data member %q+D of dllimport'd class"
+msgid "ms_hook_prologue attribute needs assembler swap suffix support"
msgstr ""
#: config/i386/winnt.c:81
@@ -27240,17 +28188,23 @@ msgid ""
"%qE attribute applies only to initialized variables with external linkage"
msgstr ""
-#: config/i386/winnt.c:290
+#: config/i386/winnt.c:143 config/sh/symbian-c.c:96
+#: config/sh/symbian-cxx.c:120
+#, gcc-internal-format
+msgid "definition of static data member %q+D of dllimport'd class"
+msgstr ""
+
+#: config/i386/winnt.c:292
#, gcc-internal-format
msgid "%q+D:'selectany' attribute applies only to initialized objects"
msgstr ""
-#: config/i386/winnt.c:447
+#: config/i386/winnt.c:440
#, gcc-internal-format
msgid "%q+D causes a section type conflict"
msgstr ""
-#: config/i386/cygming.h:150
+#: config/i386/cygming.h:151
#, gcc-internal-format
msgid "-f%s ignored for target (all code is position independent)"
msgstr ""
@@ -27265,94 +28219,101 @@ msgstr ""
msgid "ms-bitfields not supported for objc"
msgstr ""
+#. Don't allow flag_pic to propagate since invalid relocations will
+#. result otherwise.
+#: config/i386/netware.h:81
+#, gcc-internal-format
+msgid "-fPIC and -fpic are not supported for this target"
+msgstr ""
+
#: config/ia64/ia64-c.c:51
#, gcc-internal-format
msgid "malformed #pragma builtin"
msgstr ""
-#: config/ia64/ia64.c:589
+#: config/ia64/ia64.c:597
#, gcc-internal-format
msgid "invalid argument of %qE attribute"
msgstr ""
-#: config/ia64/ia64.c:601
+#: config/ia64/ia64.c:610
#, gcc-internal-format
-msgid "%Jan address area attribute cannot be specified for local variables"
+msgid "an address area attribute cannot be specified for local variables"
msgstr ""
-#: config/ia64/ia64.c:608
+#: config/ia64/ia64.c:617
#, gcc-internal-format
msgid "address area of %q+D conflicts with previous declaration"
msgstr ""
-#: config/ia64/ia64.c:615
+#: config/ia64/ia64.c:625
+#, gcc-internal-format
+msgid "address area attribute cannot be specified for functions"
+msgstr ""
+
+#: config/ia64/ia64.c:666
#, gcc-internal-format
-msgid "%Jaddress area attribute cannot be specified for functions"
+msgid "%qE attribute requires a string constant argument"
msgstr ""
-#: config/ia64/ia64.c:5174 config/pa/pa.c:355 config/sh/sh.c:7955
-#: config/spu/spu.c:4613
+#: config/ia64/ia64.c:5387 config/pa/pa.c:368 config/sh/sh.c:8473
+#: config/spu/spu.c:4706
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5201 config/pa/pa.c:382 config/sh/sh.c:7981
-#: config/spu/spu.c:4639
+#: config/ia64/ia64.c:5414 config/pa/pa.c:395 config/sh/sh.c:8499
+#: config/spu/spu.c:4732
#, gcc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:5231
+#: config/ia64/ia64.c:5444
#, gcc-internal-format
msgid "bad value %<%s%> for -mtls-size= switch"
msgstr ""
-#: config/ia64/ia64.c:5260
+#: config/ia64/ia64.c:5473
#, gcc-internal-format
msgid "value %<%s%> for -mtune= switch is deprecated"
msgstr ""
-#: config/ia64/ia64.c:5262
+#: config/ia64/ia64.c:5475
#, gcc-internal-format
msgid "GCC 4.4 is the last release with Itanium1 tuning support"
msgstr ""
-#: config/ia64/ia64.c:5269
+#: config/ia64/ia64.c:5482
#, gcc-internal-format
msgid "bad value %<%s%> for -mtune= switch"
msgstr ""
-#: config/ia64/ia64.c:5288
-#, gcc-internal-format
-msgid "not yet implemented: latency-optimized inline square root"
-msgstr ""
-
-#: config/ia64/ia64.c:10557
+#: config/ia64/ia64.c:10810
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr ""
-#: config/iq2000/iq2000.c:1832
+#: config/iq2000/iq2000.c:1825
#, gcc-internal-format
msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
msgstr ""
-#: config/iq2000/iq2000.c:2602
+#: config/iq2000/iq2000.c:2595
#, gcc-internal-format
msgid "argument %qd is not a constant"
msgstr ""
-#: config/iq2000/iq2000.c:2904 config/xtensa/xtensa.c:2324
+#: config/iq2000/iq2000.c:2897 config/xtensa/xtensa.c:2335
#, gcc-internal-format
msgid "PRINT_OPERAND_ADDRESS, null pointer"
msgstr ""
-#: config/iq2000/iq2000.c:3059
+#: config/iq2000/iq2000.c:3052
#, gcc-internal-format
msgid "PRINT_OPERAND: Unknown punctuation '%c'"
msgstr ""
-#: config/iq2000/iq2000.c:3068 config/xtensa/xtensa.c:2178
+#: config/iq2000/iq2000.c:3061 config/xtensa/xtensa.c:2189
#, gcc-internal-format
msgid "PRINT_OPERAND null pointer"
msgstr ""
@@ -27372,327 +28333,612 @@ msgstr ""
msgid "#pragma GCC memregs takes a number [0..16]"
msgstr ""
-#: config/m32c/m32c.c:416
+#: config/m32c/m32c.c:421
#, gcc-internal-format
msgid "invalid target memregs value '%d'"
msgstr ""
-#: config/m32c/m32c.c:2784
+#: config/m32c/m32c.c:2824
#, gcc-internal-format
msgid "%qE attribute is not supported for R8C target"
msgstr ""
-#: config/m32c/m32c.c:2792
-#, gcc-internal-format
-msgid "%qE attribute applies only to functions"
-msgstr ""
-
#. The argument must be a constant integer.
-#: config/m32c/m32c.c:2800 config/sh/sh.c:8187 config/sh/sh.c:8293
+#: config/m32c/m32c.c:2840 config/sh/sh.c:8680 config/sh/sh.c:8786
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr ""
-#: config/m32c/m32c.c:2809
+#: config/m32c/m32c.c:2849
#, gcc-internal-format
msgid "%qE attribute argument should be between 18 to 255"
msgstr ""
-#: config/m32r/m32r.c:377
+#: config/m32c/m32c.c:3980
+#, gcc-internal-format
+msgid "%<bank_switch%> has no effect on non-interrupt functions"
+msgstr ""
+
+#: config/m32c/m32c.c:4081
+#, gcc-internal-format
+msgid "%<fast_interrupt%> attribute directive ignored"
+msgstr ""
+
+#: config/m32r/m32r.c:382
#, gcc-internal-format
msgid "invalid argument of %qs attribute"
msgstr ""
-#: config/m68hc11/m68hc11.c:279
+#: config/m68hc11/m68hc11.c:301
#, gcc-internal-format
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
msgstr ""
-#: config/m68hc11/m68hc11.c:1232
+#: config/m68hc11/m68hc11.c:1253
#, gcc-internal-format
msgid "%<trap%> and %<far%> attributes are not compatible, ignoring %<far%>"
msgstr ""
-#: config/m68hc11/m68hc11.c:1239
+#: config/m68hc11/m68hc11.c:1260
#, gcc-internal-format
msgid "%<trap%> attribute is already used"
msgstr ""
-#: config/m68k/m68k.c:550
+#: config/m68k/m68k.c:568
#, gcc-internal-format
msgid "-mcpu=%s conflicts with -march=%s"
msgstr ""
-#: config/m68k/m68k.c:621
+#: config/m68k/m68k.c:639
#, gcc-internal-format
msgid "-mpcrel -fPIC is not currently supported on selected cpu"
msgstr ""
-#: config/m68k/m68k.c:683
+#: config/m68k/m68k.c:701
#, gcc-internal-format
msgid "-falign-labels=%d is not supported"
msgstr ""
-#: config/m68k/m68k.c:688
+#: config/m68k/m68k.c:706
#, gcc-internal-format
msgid "-falign-loops=%d is not supported"
msgstr ""
-#: config/m68k/m68k.c:791
+#: config/m68k/m68k.c:809
#, gcc-internal-format
msgid "multiple interrupt attributes not allowed"
msgstr ""
-#: config/m68k/m68k.c:798
+#: config/m68k/m68k.c:816
#, gcc-internal-format
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1120 config/rs6000/rs6000.c:15600
+#: config/m68k/m68k.c:1145 config/rs6000/rs6000.c:17877
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
-#: config/mips/mips.c:1283 config/mips/mips.c:1285
+#: config/mep/mep-pragma.c:65
+#, gcc-internal-format
+msgid "junk at end of #pragma io_volatile"
+msgstr ""
+
+#: config/mep/mep-pragma.c:79
+#, gcc-internal-format
+msgid "#pragma io_volatile takes only on or off"
+msgstr ""
+
+#: config/mep/mep-pragma.c:118
+#, gcc-internal-format
+msgid "invalid coprocessor register range"
+msgstr ""
+
+#: config/mep/mep-pragma.c:138
+#, gcc-internal-format
+msgid "invalid coprocessor register %qE"
+msgstr ""
+
+#: config/mep/mep-pragma.c:161
+#, gcc-internal-format
+msgid "malformed coprocessor register"
+msgstr ""
+
+#: config/mep/mep-pragma.c:248
+#, gcc-internal-format
+msgid "junk at end of #pragma GCC coprocessor width"
+msgstr ""
+
+#: config/mep/mep-pragma.c:255
+#, gcc-internal-format
+msgid "#pragma GCC coprocessor width takes only 32 or 64"
+msgstr ""
+
+#: config/mep/mep-pragma.c:275
+#, gcc-internal-format
+msgid "#pragma GCC coprocessor subclass letter must be in [ABCD]"
+msgstr ""
+
+#: config/mep/mep-pragma.c:280
+#, gcc-internal-format
+msgid "#pragma GCC coprocessor subclass '%c' already defined"
+msgstr ""
+
+#: config/mep/mep-pragma.c:298
+#, gcc-internal-format
+msgid "malformed #pragma GCC coprocessor subclass"
+msgstr ""
+
+#: config/mep/mep-pragma.c:320
+#, gcc-internal-format
+msgid "malformed #pragma disinterrupt"
+msgstr ""
+
+#: config/mep/mep-pragma.c:334
+#, gcc-internal-format
+msgid "malformed #pragma GCC coprocessor"
+msgstr ""
+
+#: config/mep/mep-pragma.c:339
+#, gcc-internal-format
+msgid "coprocessor not enabled"
+msgstr ""
+
+#: config/mep/mep-pragma.c:350
+#, gcc-internal-format
+msgid "unknown #pragma GCC coprocessor %E"
+msgstr ""
+
+#: config/mep/mep-pragma.c:372
+#, gcc-internal-format
+msgid "malformed #pragma call"
+msgstr ""
+
+#: config/mep/mep.c:388
+#, gcc-internal-format
+msgid "-fpic is not supported"
+msgstr ""
+
+#: config/mep/mep.c:390
+#, gcc-internal-format
+msgid "-fPIC is not supported"
+msgstr ""
+
+#: config/mep/mep.c:392
+#, gcc-internal-format
+msgid "only one of -ms and -mm may be given"
+msgstr ""
+
+#: config/mep/mep.c:394
+#, gcc-internal-format
+msgid "only one of -ms and -ml may be given"
+msgstr ""
+
+#: config/mep/mep.c:396
+#, gcc-internal-format
+msgid "only one of -mm and -ml may be given"
+msgstr ""
+
+#: config/mep/mep.c:398
+#, gcc-internal-format
+msgid "only one of -ms and -mtiny= may be given"
+msgstr ""
+
+#: config/mep/mep.c:400
+#, gcc-internal-format
+msgid "only one of -mm and -mtiny= may be given"
+msgstr ""
+
+#: config/mep/mep.c:402
+#, gcc-internal-format
+msgid "-mclip currently has no effect without -mminmax"
+msgstr ""
+
+#: config/mep/mep.c:409
+#, gcc-internal-format
+msgid "-mc= must be -mc=tiny, -mc=near, or -mc=far"
+msgstr ""
+
+#: config/mep/mep.c:1534
+#, gcc-internal-format
+msgid "unusual TP-relative address"
+msgstr ""
+
+#: config/mep/mep.c:3530
+#, gcc-internal-format
+msgid "unconvertible operand %c %qs"
+msgstr ""
+
+#: config/mep/mep.c:3972 config/mep/mep.c:4035
+#, gcc-internal-format
+msgid "address region attributes not allowed with auto storage class"
+msgstr ""
+
+#: config/mep/mep.c:3978 config/mep/mep.c:4041
+#, gcc-internal-format
+msgid "address region attributes on pointed-to types ignored"
+msgstr ""
+
+#: config/mep/mep.c:4027
+#, gcc-internal-format
+msgid "%qE attribute only applies to variables and functions"
+msgstr ""
+
+#: config/mep/mep.c:4047 config/mep/mep.c:4335
+#, gcc-internal-format
+msgid "duplicate address region attribute %qE in declaration of %qE on line %d"
+msgstr ""
+
+#: config/mep/mep.c:4081
+#, gcc-internal-format
+msgid "cannot inline interrupt function %qE"
+msgstr ""
+
+#: config/mep/mep.c:4087
+#, gcc-internal-format
+msgid "interrupt function must have return type of void"
+msgstr ""
+
+#: config/mep/mep.c:4092
+#, gcc-internal-format
+msgid "interrupt function must have no arguments"
+msgstr ""
+
+#: config/mep/mep.c:4113
+#, gcc-internal-format
+msgid "%qE attribute allows only an integer constant argument"
+msgstr ""
+
+#: config/mep/mep.c:4146
+#, gcc-internal-format
+msgid "%qE attribute only applies to functions, not %s"
+msgstr ""
+
+#: config/mep/mep.c:4156
+#, gcc-internal-format
+msgid "To describe a pointer to a VLIW function, use syntax like this:"
+msgstr ""
+
+#: config/mep/mep.c:4157
+#, gcc-internal-format
+msgid " typedef int (__vliw *vfuncptr) ();"
+msgstr ""
+
+#: config/mep/mep.c:4164
+#, gcc-internal-format
+msgid "To describe an array of VLIW function pointers, use syntax like this:"
+msgstr ""
+
+#: config/mep/mep.c:4165
+#, gcc-internal-format
+msgid " typedef int (__vliw *vfuncptr[]) ();"
+msgstr ""
+
+#: config/mep/mep.c:4170
+#, gcc-internal-format
+msgid "VLIW functions are not allowed without a VLIW configuration"
+msgstr ""
+
+#: config/mep/mep.c:4318
+#, gcc-internal-format
+msgid "\"#pragma disinterrupt %s\" not used"
+msgstr ""
+
+#: config/mep/mep.c:4460
+#, gcc-internal-format
+msgid "__io address 0x%x is the same for %qE and %qE"
+msgstr ""
+
+#: config/mep/mep.c:4608
+#, gcc-internal-format
+msgid "variable %s (%ld bytes) is too large for the %s section (%d bytes)"
+msgstr ""
+
+#: config/mep/mep.c:4706
+#, gcc-internal-format
+msgid "variable %D of type %<io%> must be uninitialized"
+msgstr ""
+
+#: config/mep/mep.c:4711
+#, gcc-internal-format
+msgid "variable %D of type %<cb%> must be uninitialized"
+msgstr ""
+
+#: config/mep/mep.c:6164
+#, gcc-internal-format
+msgid "coprocessor intrinsic %qs is not available in this configuration"
+msgstr ""
+
+#: config/mep/mep.c:6167
+#, gcc-internal-format
+msgid "%qs is not available in VLIW functions"
+msgstr ""
+
+#: config/mep/mep.c:6170
+#, gcc-internal-format
+msgid "%qs is not available in non-VLIW functions"
+msgstr ""
+
+#: config/mep/mep.c:6332 config/mep/mep.c:6450
+#, gcc-internal-format
+msgid "argument %d of %qE must be in the range %d...%d"
+msgstr ""
+
+#: config/mep/mep.c:6335
+#, gcc-internal-format
+msgid "argument %d of %qE must be a multiple of %d"
+msgstr ""
+
+#: config/mep/mep.c:6389
+#, gcc-internal-format
+msgid "too few arguments to %qE"
+msgstr ""
+
+#: config/mep/mep.c:6394
+#, gcc-internal-format
+msgid "too many arguments to %qE"
+msgstr ""
+
+#: config/mep/mep.c:6412
+#, gcc-internal-format
+msgid "argument %d of %qE must be an address"
+msgstr ""
+
+#: config/mep/mep.c:7208
+#, gcc-internal-format
+msgid "2 byte cop instructions are not allowed in 64-bit VLIW mode"
+msgstr ""
+
+#: config/mep/mep.c:7214
+#, gcc-internal-format
+msgid "unexpected %d byte cop instruction"
+msgstr ""
+
+#: config/mips/mips.c:1340 config/mips/mips.c:1342
#, gcc-internal-format
msgid "%qs attribute only applies to functions"
msgstr ""
-#: config/mips/mips.c:1295
+#: config/mips/mips.c:1352
#, gcc-internal-format
msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes"
msgstr ""
-#: config/mips/mips.c:1317 config/mips/mips.c:1320
+#: config/mips/mips.c:1374 config/mips/mips.c:1377
#, gcc-internal-format
msgid "%qE redeclared with conflicting %qs attributes"
msgstr ""
-#: config/mips/mips.c:2780
+#: config/mips/mips.c:2870
#, gcc-internal-format
msgid "MIPS16 TLS"
msgstr ""
-#: config/mips/mips.c:6116
+#: config/mips/mips.c:6345
#, gcc-internal-format
msgid "cannot handle inconsistent calls to %qs"
msgstr ""
-#: config/mips/mips.c:8719
+#: config/mips/mips.c:9127
#, gcc-internal-format
msgid "the %<interrupt%> attribute requires a MIPS32r2 processor"
msgstr ""
-#: config/mips/mips.c:8721
+#: config/mips/mips.c:9129
#, gcc-internal-format
msgid "the %<interrupt%> attribute requires %<-msoft-float%>"
msgstr ""
-#: config/mips/mips.c:8723
+#: config/mips/mips.c:9131
#, gcc-internal-format
msgid "interrupt handlers cannot be MIPS16 functions"
msgstr ""
-#: config/mips/mips.c:12134
+#: config/mips/mips.c:13034
#, gcc-internal-format
msgid "invalid argument to built-in function"
msgstr ""
-#: config/mips/mips.c:12375
+#: config/mips/mips.c:13275
#, gcc-internal-format
msgid "built-in function %qE not supported for MIPS16"
msgstr ""
-#: config/mips/mips.c:12953
+#: config/mips/mips.c:13865
#, gcc-internal-format
msgid "%qs does not support MIPS16 code"
msgstr ""
-#: config/mips/mips.c:13927
+#: config/mips/mips.c:15069
#, gcc-internal-format
msgid "MIPS16 PIC for ABIs other than o32 and o64"
msgstr ""
-#: config/mips/mips.c:13930
+#: config/mips/mips.c:15072
#, gcc-internal-format
msgid "MIPS16 -mxgot code"
msgstr ""
-#: config/mips/mips.c:13933
+#: config/mips/mips.c:15075
#, gcc-internal-format
msgid "hard-float MIPS16 code for ABIs other than o32 and o64"
msgstr ""
-#: config/mips/mips.c:14062
+#: config/mips/mips.c:15206
#, gcc-internal-format
msgid "CPU names must be lower case"
msgstr ""
-#: config/mips/mips.c:14205
+#: config/mips/mips.c:15349
#, gcc-internal-format
msgid ""
"%<-%s%> conflicts with the other architecture options, which specify a %s "
"processor"
msgstr ""
-#: config/mips/mips.c:14221
+#: config/mips/mips.c:15365
#, gcc-internal-format
msgid "%<-march=%s%> is not compatible with the selected ABI"
msgstr ""
-#: config/mips/mips.c:14236
+#: config/mips/mips.c:15380
#, gcc-internal-format
msgid "%<-mgp64%> used with a 32-bit processor"
msgstr ""
-#: config/mips/mips.c:14238
+#: config/mips/mips.c:15382
#, gcc-internal-format
msgid "%<-mgp32%> used with a 64-bit ABI"
msgstr ""
-#: config/mips/mips.c:14240
+#: config/mips/mips.c:15384
#, gcc-internal-format
msgid "%<-mgp64%> used with a 32-bit ABI"
msgstr ""
-#: config/mips/mips.c:14256 config/mips/mips.c:14258 config/mips/mips.c:14325
+#: config/mips/mips.c:15400 config/mips/mips.c:15402 config/mips/mips.c:15469
#, gcc-internal-format
msgid "unsupported combination: %s"
msgstr ""
-#: config/mips/mips.c:14262
+#: config/mips/mips.c:15406
#, gcc-internal-format
msgid ""
"%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the "
"mfhc1 and mthc1 instructions"
msgstr ""
-#: config/mips/mips.c:14265
+#: config/mips/mips.c:15409
#, gcc-internal-format
msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI"
msgstr ""
-#: config/mips/mips.c:14319
+#: config/mips/mips.c:15463
#, gcc-internal-format
msgid "the %qs architecture does not support branch-likely instructions"
msgstr ""
-#: config/mips/mips.c:14359
+#: config/mips/mips.c:15503
#, gcc-internal-format
msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>"
msgstr ""
-#: config/mips/mips.c:14367 config/mips/mips.c:14370
+#: config/mips/mips.c:15511 config/mips/mips.c:15514
#, gcc-internal-format
msgid "cannot use small-data accesses for %qs"
msgstr ""
-#: config/mips/mips.c:14384
+#: config/mips/mips.c:15528
#, gcc-internal-format
msgid "%<-mips3d%> requires %<-mpaired-single%>"
msgstr ""
-#: config/mips/mips.c:14393
+#: config/mips/mips.c:15537
#, gcc-internal-format
msgid "%qs must be used with %qs"
msgstr ""
-#: config/mips/mips.c:14400
+#: config/mips/mips.c:15544
#, gcc-internal-format
msgid "the %qs architecture does not support paired-single instructions"
msgstr ""
-#: config/mips/mips.c:14406
+#: config/mips/mips.c:15550
#, gcc-internal-format
msgid "%qs requires a target that provides the %qs instruction"
msgstr ""
-#: config/mips/mips.c:14506
+#: config/mips/mips.c:15655
#, gcc-internal-format
msgid "%qs requires branch-likely instructions"
msgstr ""
+#: config/mips/mips.c:15659
+#, gcc-internal-format
+msgid "the %qs architecture does not support the synci instruction"
+msgstr ""
+
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2335
+#: config/mips/mips.h:2378
#, gcc-internal-format
msgid "mips16 function profiling"
msgstr ""
-#: config/mmix/mmix.c:226
+#: config/mmix/mmix.c:239
#, gcc-internal-format
msgid "-f%s not supported: ignored"
msgstr ""
-#: config/mmix/mmix.c:674
+#: config/mmix/mmix.c:687
#, gcc-internal-format
msgid "support for mode %qs"
msgstr ""
-#: config/mmix/mmix.c:688
+#: config/mmix/mmix.c:701
#, gcc-internal-format
msgid ""
"too large function value type, needs %d registers, have only %d registers "
"for this"
msgstr ""
-#: config/mmix/mmix.c:858
+#: config/mmix/mmix.c:871
#, gcc-internal-format
msgid "function_profiler support for MMIX"
msgstr ""
-#: config/mmix/mmix.c:880
+#: config/mmix/mmix.c:893
#, gcc-internal-format
msgid "MMIX Internal: Last named vararg would not fit in a register"
msgstr ""
-#: config/mmix/mmix.c:1492 config/mmix/mmix.c:1516 config/mmix/mmix.c:1632
+#: config/mmix/mmix.c:1502 config/mmix/mmix.c:1526 config/mmix/mmix.c:1642
#, gcc-internal-format
msgid "MMIX Internal: Bad register: %d"
msgstr ""
#. Presumably there's a missing case above if we get here.
-#: config/mmix/mmix.c:1624
+#: config/mmix/mmix.c:1634
#, gcc-internal-format
msgid "MMIX Internal: Missing %qc case in mmix_print_operand"
msgstr ""
-#: config/mmix/mmix.c:1910
+#: config/mmix/mmix.c:1920
#, gcc-internal-format
msgid "stack frame not a multiple of 8 bytes: %wd"
msgstr ""
-#: config/mmix/mmix.c:2146
+#: config/mmix/mmix.c:2156
#, gcc-internal-format
msgid "stack frame not a multiple of octabyte: %wd"
msgstr ""
-#: config/mmix/mmix.c:2486 config/mmix/mmix.c:2550
+#: config/mmix/mmix.c:2440 config/mmix/mmix.c:2504
#, gcc-internal-format
msgid "MMIX Internal: %s is not a shiftable int"
msgstr ""
-#: config/pa/pa.c:487
+#: config/pa/pa.c:500
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr ""
-#: config/pa/pa.c:492
+#: config/pa/pa.c:505
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:497
+#: config/pa/pa.c:510
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:498
+#: config/pa/pa.c:511
#, gcc-internal-format
msgid "-g option disabled"
msgstr ""
-#: config/pa/pa.c:8380
+#: config/pa/pa.c:8463
#, gcc-internal-format
msgid ""
"alignment (%u) for %s exceeds maximum alignment for global common data. "
@@ -27704,93 +28950,93 @@ msgstr ""
msgid "-munix=98 option required for C89 Amendment 1 features.\n"
msgstr ""
-#: config/picochip/picochip.c:379
+#: config/picochip/picochip.c:383
#, gcc-internal-format
msgid "invalid AE type specified (%s)\n"
msgstr ""
-#: config/picochip/picochip.c:402
+#: config/picochip/picochip.c:406
#, gcc-internal-format
msgid "Invalid mul type specified (%s) - expected mac, mul or none"
msgstr ""
-#: config/picochip/picochip.c:634
+#: config/picochip/picochip.c:638
#, gcc-internal-format
msgid "unexpected mode %s encountered in picochip_emit_save_register\n"
msgstr ""
-#: config/picochip/picochip.c:801
+#: config/picochip/picochip.c:805
#, gcc-internal-format
msgid "Defaulting to stack for %s register creation\n"
msgstr ""
-#: config/picochip/picochip.c:1338
+#: config/picochip/picochip.c:1342
#, gcc-internal-format
msgid "LCFI labels have already been deferred."
msgstr ""
-#: config/picochip/picochip.c:1401
+#: config/picochip/picochip.c:1405
#, gcc-internal-format
msgid "LM label has already been deferred."
msgstr ""
-#: config/picochip/picochip.c:1681
+#: config/picochip/picochip.c:1685
#, gcc-internal-format
msgid "picochip_asm_output_opcode - Found multiple lines in VLIW packet %s\n"
msgstr ""
-#: config/picochip/picochip.c:1784
+#: config/picochip/picochip.c:1788
#, gcc-internal-format
msgid "picochip_asm_output_opcode - can't output unknown operator %c\n"
msgstr ""
-#: config/picochip/picochip.c:2036 config/picochip/picochip.c:2095
+#: config/picochip/picochip.c:2040 config/picochip/picochip.c:2099
#, gcc-internal-format
msgid "%s: At least one operand can't be handled"
msgstr ""
-#: config/picochip/picochip.c:2176
+#: config/picochip/picochip.c:2180
#, gcc-internal-format
msgid "Unknown short branch in %s (type %d)\n"
msgstr ""
-#: config/picochip/picochip.c:2213
+#: config/picochip/picochip.c:2217
#, gcc-internal-format
msgid "Unknown long branch in %s (type %d)\n"
msgstr ""
-#: config/picochip/picochip.c:2253 config/picochip/picochip.c:2321
+#: config/picochip/picochip.c:2257 config/picochip/picochip.c:2325
#, gcc-internal-format
msgid "PUT uses port array index %d, which is out of range [%d..%d)"
msgstr ""
-#: config/picochip/picochip.c:2287
+#: config/picochip/picochip.c:2291
#, gcc-internal-format
msgid "GET uses port array index %d, which is out of range [%d..%d)"
msgstr ""
-#: config/picochip/picochip.c:3130
+#: config/picochip/picochip.c:3134
#, gcc-internal-format
msgid "Too many ALU instructions emitted (%d)\n"
msgstr ""
-#: config/picochip/picochip.c:3761 config/picochip/picochip.c:3854
+#: config/picochip/picochip.c:3765 config/picochip/picochip.c:3858
#, gcc-internal-format
msgid "%s: Second source operand is not a constant"
msgstr ""
-#: config/picochip/picochip.c:3764 config/picochip/picochip.c:3815
-#: config/picochip/picochip.c:3857
+#: config/picochip/picochip.c:3768 config/picochip/picochip.c:3819
+#: config/picochip/picochip.c:3861
#, gcc-internal-format
msgid "%s: Third source operand is not a constant"
msgstr ""
-#: config/picochip/picochip.c:3818
+#: config/picochip/picochip.c:3822
#, gcc-internal-format
msgid "%s: Fourth source operand is not a constant"
msgstr ""
-#: config/picochip/picochip.c:4128
+#: config/picochip/picochip.c:4132
#, gcc-internal-format
msgid "%s (disable warning using -mno-inefficient-warnings)"
msgstr ""
@@ -27854,298 +29100,336 @@ msgstr ""
msgid "junk at end of #pragma longcall"
msgstr ""
-#: config/rs6000/rs6000-c.c:3023
+#: config/rs6000/rs6000-c.c:3238
#, gcc-internal-format
msgid "%s only accepts %d arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:3028
+#: config/rs6000/rs6000-c.c:3243
#, gcc-internal-format
msgid "%s only accepts 1 argument"
msgstr ""
-#: config/rs6000/rs6000-c.c:3033
+#: config/rs6000/rs6000-c.c:3248
#, gcc-internal-format
msgid "%s only accepts 2 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:3094
+#: config/rs6000/rs6000-c.c:3313
#, gcc-internal-format
msgid "vec_extract only accepts 2 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:3149
+#: config/rs6000/rs6000-c.c:3389
#, gcc-internal-format
msgid "vec_insert only accepts 3 arguments"
msgstr ""
-#: config/rs6000/rs6000-c.c:3231
+#: config/rs6000/rs6000-c.c:3492
#, gcc-internal-format
msgid "passing arg %d of %qE discards qualifiers frompointer target type"
msgstr ""
-#: config/rs6000/rs6000-c.c:3274
+#: config/rs6000/rs6000-c.c:3535
#, gcc-internal-format
msgid "invalid parameter combination for AltiVec intrinsic"
msgstr ""
-#: config/rs6000/rs6000.c:1372
+#: config/rs6000/rs6000.c:2088
#, gcc-internal-format
msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
msgstr ""
-#: config/rs6000/rs6000.c:1383
+#: config/rs6000/rs6000.c:2099
#, gcc-internal-format
msgid "-m64 requires PowerPC64 architecture, enabling"
msgstr ""
-#: config/rs6000/rs6000.c:1604
+#: config/rs6000/rs6000.c:2342
#, gcc-internal-format
msgid "AltiVec not supported in this target"
msgstr ""
-#: config/rs6000/rs6000.c:1606
+#: config/rs6000/rs6000.c:2344
#, gcc-internal-format
msgid "Spe not supported in this target"
msgstr ""
-#: config/rs6000/rs6000.c:1633
+#: config/rs6000/rs6000.c:2371
#, gcc-internal-format
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:1640
+#: config/rs6000/rs6000.c:2378
#, gcc-internal-format
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:1654
+#: config/rs6000/rs6000.c:2432
#, gcc-internal-format
msgid "unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:1666
+#: config/rs6000/rs6000.c:2472
#, gcc-internal-format
msgid ""
"unknown -mtraceback arg %qs; expecting %<full%>, %<partial%> or %<none%>"
msgstr ""
-#: config/rs6000/rs6000.c:2177
+#: config/rs6000/rs6000.c:3086
#, gcc-internal-format
msgid "unknown -m%s= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2223
+#: config/rs6000/rs6000.c:3132
#, gcc-internal-format
msgid "unknown value %s for -mfpu"
msgstr ""
-#: config/rs6000/rs6000.c:2421
+#: config/rs6000/rs6000.c:3461
#, gcc-internal-format
msgid "not configured for ABI: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2434
+#: config/rs6000/rs6000.c:3474
#, gcc-internal-format
msgid "Using darwin64 ABI"
msgstr ""
-#: config/rs6000/rs6000.c:2439
+#: config/rs6000/rs6000.c:3479
#, gcc-internal-format
msgid "Using old darwin ABI"
msgstr ""
-#: config/rs6000/rs6000.c:2446
+#: config/rs6000/rs6000.c:3486
#, gcc-internal-format
msgid "Using IBM extended precision long double"
msgstr ""
-#: config/rs6000/rs6000.c:2452
+#: config/rs6000/rs6000.c:3492
#, gcc-internal-format
msgid "Using IEEE extended precision long double"
msgstr ""
-#: config/rs6000/rs6000.c:2457
+#: config/rs6000/rs6000.c:3497
#, gcc-internal-format
msgid "unknown ABI specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2484
+#: config/rs6000/rs6000.c:3524
#, gcc-internal-format
msgid "invalid option for -mfloat-gprs: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2494
+#: config/rs6000/rs6000.c:3534
#, gcc-internal-format
msgid "Unknown switch -mlong-double-%s"
msgstr ""
-#: config/rs6000/rs6000.c:2515
+#: config/rs6000/rs6000.c:3555
#, gcc-internal-format
msgid ""
"-malign-power is not supported for 64-bit Darwin; it is incompatible with "
"the installed C and C++ libraries"
msgstr ""
-#: config/rs6000/rs6000.c:2523
+#: config/rs6000/rs6000.c:3563
#, gcc-internal-format
msgid "unknown -malign-XXXXX option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2530
+#: config/rs6000/rs6000.c:3570
#, gcc-internal-format
msgid "-msingle-float option equivalent to -mhard-float"
msgstr ""
-#: config/rs6000/rs6000.c:2546
+#: config/rs6000/rs6000.c:3586
#, gcc-internal-format
msgid "-msimple-fpu option ignored"
msgstr ""
-#: config/rs6000/rs6000.c:5382
+#: config/rs6000/rs6000.c:6698
#, gcc-internal-format
msgid ""
"GCC vector returned by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:5455
+#: config/rs6000/rs6000.c:6771
#, gcc-internal-format
msgid ""
"cannot return value in vector register because altivec instructions are "
"disabled, use -maltivec to enable them"
msgstr ""
-#: config/rs6000/rs6000.c:5713
+#: config/rs6000/rs6000.c:7030
#, gcc-internal-format
msgid ""
"cannot pass argument in vector register because altivec instructions are "
"disabled, use -maltivec to enable them"
msgstr ""
-#: config/rs6000/rs6000.c:6614
+#: config/rs6000/rs6000.c:7932
#, gcc-internal-format
msgid ""
"GCC vector passed by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:7873
+#: config/rs6000/rs6000.c:8514
+#, gcc-internal-format
+msgid "internal error: builtin function to %s already processed."
+msgstr ""
+
+#: config/rs6000/rs6000.c:9449
#, gcc-internal-format
msgid "argument 1 must be a 5-bit signed literal"
msgstr ""
-#: config/rs6000/rs6000.c:7976 config/rs6000/rs6000.c:8908
+#: config/rs6000/rs6000.c:9552 config/rs6000/rs6000.c:10524
#, gcc-internal-format
msgid "argument 2 must be a 5-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8016
+#: config/rs6000/rs6000.c:9591
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:8069
+#: config/rs6000/rs6000.c:9643
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:8318
+#: config/rs6000/rs6000.c:9893
#, gcc-internal-format
msgid "argument 3 must be a 4-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8490
+#: config/rs6000/rs6000.c:9911
+#, gcc-internal-format
+msgid "argument 3 must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:9923
+#, gcc-internal-format
+msgid "argument 3 must be a 1-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:10099
#, gcc-internal-format
msgid "argument to %qs must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8632
+#: config/rs6000/rs6000.c:10243
#, gcc-internal-format
msgid "unresolved overload for Altivec builtin %qF"
msgstr ""
-#: config/rs6000/rs6000.c:8723
+#: config/rs6000/rs6000.c:10334
#, gcc-internal-format
msgid "argument to dss must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:9028
+#: config/rs6000/rs6000.c:10644
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:9075
+#: config/rs6000/rs6000.c:10691
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:9100
+#: config/rs6000/rs6000.c:10716
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:9172
+#: config/rs6000/rs6000.c:10788
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:15563
+#: config/rs6000/rs6000.c:12134
#, gcc-internal-format
-msgid "stack frame too large"
+msgid "internal error: builtin function %s had no type"
msgstr ""
-#: config/rs6000/rs6000.c:18606
+#: config/rs6000/rs6000.c:12141
#, gcc-internal-format
-msgid "no profiling of 64-bit code for this ABI"
+msgid "internal error: builtin function %s had an unexpected return type %s"
msgstr ""
-#: config/rs6000/rs6000.c:20555
+#: config/rs6000/rs6000.c:12154
#, gcc-internal-format
-msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
+msgid ""
+"internal error: builtin function %s, argument %d had unexpected argument "
+"type %s"
msgstr ""
-#: config/rs6000/rs6000.c:20557
+#: config/rs6000/rs6000.c:17847
#, gcc-internal-format
-msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
+msgid "stack frame too large"
msgstr ""
-#: config/rs6000/rs6000.c:20561
+#: config/rs6000/rs6000.c:18243
#, gcc-internal-format
-msgid "use of %<long long%> in AltiVec types is invalid"
+msgid "Out-of-line save/restore routines not supported on Darwin"
msgstr ""
-#: config/rs6000/rs6000.c:20563
+#: config/rs6000/rs6000.c:21138
#, gcc-internal-format
-msgid "use of %<double%> in AltiVec types is invalid"
+msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:20565
+#: config/rs6000/rs6000.c:23158
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20567
+#: config/rs6000/rs6000.c:23160
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20569
+#: config/rs6000/rs6000.c:23162
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20571
+#: config/rs6000/rs6000.c:23164
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:22861
+#: config/rs6000/rs6000.c:23170
+#, gcc-internal-format
+msgid ""
+"use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:23173
+#, gcc-internal-format
+msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
+msgstr ""
+
+#: config/rs6000/rs6000.c:23178
+#, gcc-internal-format
+msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:23181
+#, gcc-internal-format
+msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
+msgstr ""
+
+#: config/rs6000/rs6000.c:25577
#, gcc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:22865
+#: config/rs6000/rs6000.c:25581
#, gcc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
@@ -28175,17 +29459,22 @@ msgid ""
"-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
msgstr ""
-#: config/rs6000/e500.h:39
+#: config/rs6000/e500.h:40
#, gcc-internal-format
msgid "AltiVec and E500 instructions cannot coexist"
msgstr ""
-#: config/rs6000/e500.h:41
+#: config/rs6000/e500.h:42
+#, gcc-internal-format
+msgid "VSX and E500 instructions cannot coexist"
+msgstr ""
+
+#: config/rs6000/e500.h:44
#, gcc-internal-format
msgid "64-bit E500 not supported"
msgstr ""
-#: config/rs6000/e500.h:43
+#: config/rs6000/e500.h:46
#, gcc-internal-format
msgid "E500 and FPRs not supported"
msgstr ""
@@ -28212,7 +29501,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:1641
+#: config/rs6000/rs6000.h:1756
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
@@ -28337,118 +29626,121 @@ msgstr ""
msgid "-mstack-guard implies use of -mstack-size"
msgstr ""
-#: config/s390/s390.c:7065
+#: config/s390/s390.c:7088
#, gcc-internal-format
msgid "total size of local variables exceeds architecture limit"
msgstr ""
-#: config/s390/s390.c:7734
+#: config/s390/s390.c:7786
#, gcc-internal-format
msgid "frame size of function %qs is "
msgstr ""
-#: config/s390/s390.c:7764
+#: config/s390/s390.c:7812
#, gcc-internal-format
msgid "frame size of %qs is "
msgstr ""
-#: config/s390/s390.c:7768
+#: config/s390/s390.c:7816
#, gcc-internal-format
msgid "%qs uses dynamic stack allocation"
msgstr ""
-#: config/score/score3.c:653 config/score/score7.c:652
+#: config/score/score3.c:649 config/score/score7.c:648
#, gcc-internal-format
msgid "-fPIC and -G are incompatible"
msgstr ""
-#: config/sh/sh.c:6954
+#: config/sh/sh.c:881
+#, gcc-internal-format
+msgid "ignoring -fschedule-insns because of exception handling bug"
+msgstr ""
+
+#: config/sh/sh.c:7456
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:8043
+#: config/sh/sh.c:8561
#, gcc-internal-format
msgid "%qE attribute only applies to interrupt functions"
msgstr ""
-#: config/sh/sh.c:8126
+#: config/sh/sh.c:8619
#, gcc-internal-format
msgid "%qE attribute is supported only for SH2A"
msgstr ""
-#: config/sh/sh.c:8156
+#: config/sh/sh.c:8649
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8173
+#: config/sh/sh.c:8666
#, gcc-internal-format
msgid "%qE attribute only applies to SH2A"
msgstr ""
-#: config/sh/sh.c:8195
+#: config/sh/sh.c:8688
#, gcc-internal-format
msgid "%qE attribute argument should be between 0 to 255"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:8268
+#: config/sh/sh.c:8761
#, gcc-internal-format
msgid "%qE attribute argument not a string constant"
msgstr ""
-#: config/sh/sh.c:10539
+#: config/sh/sh.c:11186
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:10560
+#: config/sh/sh.c:11207
#, gcc-internal-format
msgid "Need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:10568
+#: config/sh/sh.c:11215
#, gcc-internal-format
msgid "Need a call-clobbered target register"
msgstr ""
-#: config/sh/symbian.c:146
-#, gcc-internal-format
-msgid ""
-"function %q+D is defined after prior declaration as dllimport: attribute "
-"ignored"
-msgstr ""
-
-#: config/sh/symbian.c:158
-#, gcc-internal-format
-msgid "inline function %q+D is declared as dllimport: attribute ignored"
-msgstr ""
-
-#: config/sh/symbian.c:272
+#: config/sh/symbian-base.c:112
#, gcc-internal-format
msgid "%qE declared as both exported to and imported from a DLL"
msgstr ""
-#: config/sh/symbian.c:279
+#: config/sh/symbian-base.c:119
#, gcc-internal-format
msgid ""
"failure in redeclaration of %q+D: dllimport'd symbol lacks external linkage"
msgstr ""
-#: config/sh/symbian.c:325
+#: config/sh/symbian-base.c:210
#, gcc-internal-format
msgid "%s %q+D %s after being referenced with dllimport linkage"
msgstr ""
-#: config/sh/symbian.c:408 config/sh/symbian.c:415
+#: config/sh/symbian-c.c:83 config/sh/symbian-cxx.c:94
+#, gcc-internal-format
+msgid ""
+"function %q+D is defined after prior declaration as dllimport: attribute "
+"ignored"
+msgstr ""
+
+#: config/sh/symbian-c.c:122 config/sh/symbian-c.c:129
+#: config/sh/symbian-cxx.c:554 config/sh/symbian-cxx.c:561
+#: ada/gcc-interface/utils.c:5159 ada/gcc-interface/utils.c:5335
+#: ada/gcc-interface/utils.c:5355 ada/gcc-interface/utils.c:5415
#, gcc-internal-format
msgid "%qs attribute ignored"
msgstr ""
-#: config/sh/symbian.c:891 cp/tree.c:2858
+#: config/sh/symbian-cxx.c:106
#, gcc-internal-format
-msgid "lang_* check: failed in %s, at %s:%d"
+msgid "inline function %q+D is declared as dllimport: attribute ignored"
msgstr ""
#. FIXME
@@ -28457,49 +29749,28 @@ msgstr ""
msgid "unimplemented-shmedia profiling"
msgstr ""
-#. There are no delay slots on SHmedia.
-#. Relaxation isn't yet supported for SHmedia
-#. After reload, if conversion does little good but can cause ICEs: - find_if_block doesn't do anything for SH because we don't have conditional execution patterns. (We use conditional move patterns, which are handled differently, and only before reload). - find_cond_trap doesn't do anything for the SH because we #. don't have conditional traps. - find_if_case_1 uses redirect_edge_and_branch_force in the only path that does an optimization, and this causes an ICE when branch targets are in registers. - find_if_case_2 doesn't do anything for the SHmedia after reload except when it can redirect a tablejump - and that's rather rare.
-#. Assembler CFI isn't yet fully supported for SHmedia.
-#. Only the sh64-elf assembler fully supports .quad properly.
-#. Pick one that makes most sense for the target in general. It is not much good to use different functions depending on -Os, since then we'll end up with two different functions when some of the code is compiled for size, and some for speed.
-#. SH4 tends to emphasize speed.
-#. These have their own way of doing things.
-#. ??? Should we use the integer SHmedia function instead?
-#. SH1 .. SH3 cores often go into small-footprint systems, so default to the smallest implementation available.
-#. ??? EXPERIMENTAL
-#. User supplied - leave it alone.
-#. The debugging information is sufficient, but gdb doesn't implement this yet
-#. Never run scheduling before reload, since that can break global alloc, and generates slower code anyway due to the pressure on R0.
-#. Enable sched1 for SH4; ready queue will be reordered by the target hooks when pressure is high. We can not do this for PIC, SH3 and lower as they give spill failures for R0.
-#. ??? Current exception handling places basic block boundaries after call_insns. It causes the high pressure on R0 and gives spill failures for R0 in reload. See PR 22553 and the thread on gcc-patches <http://gcc.gnu.org/ml/gcc-patches/2005-10/msg00816.html>.
-#: config/sh/sh.h:728
-#, gcc-internal-format
-msgid "ignoring -fschedule-insns because of exception handling bug"
-msgstr ""
-
#. The kernel loader cannot handle the relaxation relocations, so it cannot load kernel modules (which are ET_REL) or RTP executables (which are linked with --emit-relocs). No relaxation relocations appear in shared libraries, so relaxation is OK for RTP PIC.
#: config/sh/vxworks.h:43
#, gcc-internal-format
msgid "-mrelax is only supported for RTP PIC"
msgstr ""
-#: config/sparc/sparc.c:705
+#: config/sparc/sparc.c:717
#, gcc-internal-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:712
+#: config/sparc/sparc.c:724
#, gcc-internal-format
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:732
+#: config/sparc/sparc.c:744
#, gcc-internal-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/sparc/sparc.c:737
+#: config/sparc/sparc.c:749
#, gcc-internal-format
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
@@ -28519,901 +29790,948 @@ msgstr ""
msgid "parameter list does not match a valid signature for %s()"
msgstr ""
-#: config/spu/spu.c:450 config/spu/spu.c:461
+#: config/spu/spu.c:468 config/spu/spu.c:479
#, gcc-internal-format
msgid "Unknown architecture '%s'"
msgstr ""
-#: config/spu/spu.c:5973
+#: config/spu/spu.c:4986 config/spu/spu.c:4989
+#, gcc-internal-format
+msgid "creating run-time relocation for %qD"
+msgstr ""
+
+#: config/spu/spu.c:4994 config/spu/spu.c:4996
+#, gcc-internal-format
+msgid "creating run-time relocation"
+msgstr ""
+
+#: config/spu/spu.c:6054
#, gcc-internal-format
msgid "%s expects an integer literal in the range [%d, %d]."
msgstr ""
-#: config/spu/spu.c:5993
+#: config/spu/spu.c:6074
#, gcc-internal-format
msgid "%s expects an integer literal in the range [%d, %d]. ("
msgstr ""
-#: config/spu/spu.c:6023
+#: config/spu/spu.c:6104
#, gcc-internal-format
msgid "%d least significant bits of %s are ignored."
msgstr ""
-#: config/stormy16/stormy16.c:1086
+#: config/stormy16/stormy16.c:1090
#, gcc-internal-format
msgid "local variable memory requirements exceed capacity"
msgstr ""
-#: config/stormy16/stormy16.c:1243
+#: config/stormy16/stormy16.c:1247
#, gcc-internal-format
msgid "function_profiler support"
msgstr ""
-#: config/stormy16/stormy16.c:1333
+#: config/stormy16/stormy16.c:1340
#, gcc-internal-format
msgid "cannot use va_start in interrupt function"
msgstr ""
-#: config/stormy16/stormy16.c:1875
+#: config/stormy16/stormy16.c:1884
#, gcc-internal-format
msgid "switch statement of size %lu entries too large"
msgstr ""
-#: config/stormy16/stormy16.c:2244
+#: config/stormy16/stormy16.c:2253
#, gcc-internal-format
msgid "%<__BELOW100__%> attribute only applies to variables"
msgstr ""
-#: config/stormy16/stormy16.c:2251
+#: config/stormy16/stormy16.c:2260
#, gcc-internal-format
msgid "__BELOW100__ attribute not allowed with auto storage class"
msgstr ""
-#: config/v850/v850-c.c:66
+#: config/v850/v850-c.c:67
#, gcc-internal-format
msgid "#pragma GHS endXXXX found without previous startXXX"
msgstr ""
-#: config/v850/v850-c.c:69
+#: config/v850/v850-c.c:70
#, gcc-internal-format
msgid "#pragma GHS endXXX does not match previous startXXX"
msgstr ""
-#: config/v850/v850-c.c:95
+#: config/v850/v850-c.c:96
#, gcc-internal-format
msgid "cannot set interrupt attribute: no current function"
msgstr ""
-#: config/v850/v850-c.c:103
+#: config/v850/v850-c.c:104
#, gcc-internal-format
msgid "cannot set interrupt attribute: no such identifier"
msgstr ""
-#: config/v850/v850-c.c:152
+#: config/v850/v850-c.c:153
#, gcc-internal-format
msgid "junk at end of #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:169
+#: config/v850/v850-c.c:170
#, gcc-internal-format
msgid "unrecognized section name %qE"
msgstr ""
-#: config/v850/v850-c.c:184
+#: config/v850/v850-c.c:185
#, gcc-internal-format
msgid "malformed #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:203
+#: config/v850/v850-c.c:204
#, gcc-internal-format
msgid "junk at end of #pragma ghs interrupt"
msgstr ""
-#: config/v850/v850-c.c:214
+#: config/v850/v850-c.c:215
#, gcc-internal-format
msgid "junk at end of #pragma ghs starttda"
msgstr ""
-#: config/v850/v850-c.c:225
+#: config/v850/v850-c.c:226
#, gcc-internal-format
msgid "junk at end of #pragma ghs startsda"
msgstr ""
-#: config/v850/v850-c.c:236
+#: config/v850/v850-c.c:237
#, gcc-internal-format
msgid "junk at end of #pragma ghs startzda"
msgstr ""
-#: config/v850/v850-c.c:247
+#: config/v850/v850-c.c:248
#, gcc-internal-format
msgid "junk at end of #pragma ghs endtda"
msgstr ""
-#: config/v850/v850-c.c:258
+#: config/v850/v850-c.c:259
#, gcc-internal-format
msgid "junk at end of #pragma ghs endsda"
msgstr ""
-#: config/v850/v850-c.c:269
+#: config/v850/v850-c.c:270
#, gcc-internal-format
msgid "junk at end of #pragma ghs endzda"
msgstr ""
-#: config/v850/v850.c:184
+#: config/v850/v850.c:212
#, gcc-internal-format
msgid "value passed to %<-m%s%> is too large"
msgstr ""
-#: config/v850/v850.c:2084
+#: config/v850/v850.c:2109
#, gcc-internal-format
-msgid "%Jdata area attributes cannot be specified for local variables"
+msgid "data area attributes cannot be specified for local variables"
msgstr ""
-#: config/v850/v850.c:2095
+#: config/v850/v850.c:2120
#, gcc-internal-format
msgid "data area of %q+D conflicts with previous declaration"
msgstr ""
-#: config/v850/v850.c:2225
+#: config/v850/v850.c:2250
#, gcc-internal-format
msgid "bogus JR construction: %d"
msgstr ""
-#: config/v850/v850.c:2243 config/v850/v850.c:2352
+#: config/v850/v850.c:2268 config/v850/v850.c:2377
#, gcc-internal-format
msgid "bad amount of stack space removal: %d"
msgstr ""
-#: config/v850/v850.c:2332
+#: config/v850/v850.c:2357
#, gcc-internal-format
msgid "bogus JARL construction: %d\n"
msgstr ""
-#: config/v850/v850.c:2631
+#: config/v850/v850.c:2656
#, gcc-internal-format
msgid "bogus DISPOSE construction: %d"
msgstr ""
-#: config/v850/v850.c:2650
+#: config/v850/v850.c:2675
#, gcc-internal-format
msgid "too much stack space to dispose of: %d"
msgstr ""
-#: config/v850/v850.c:2752
+#: config/v850/v850.c:2777
#, gcc-internal-format
msgid "bogus PREPEARE construction: %d"
msgstr ""
-#: config/v850/v850.c:2771
+#: config/v850/v850.c:2796
#, gcc-internal-format
msgid "too much stack space to prepare: %d"
msgstr ""
-#: config/xtensa/xtensa.c:2065
+#: config/xtensa/xtensa.c:2076
#, gcc-internal-format
msgid "boolean registers required for the floating-point option"
msgstr ""
-#: config/xtensa/xtensa.c:2100
+#: config/xtensa/xtensa.c:2111
#, gcc-internal-format
msgid "-f%s is not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:2105
+#: config/xtensa/xtensa.c:2116
#, gcc-internal-format
msgid "PIC is required but not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:3010 config/xtensa/xtensa.c:3050
+#: config/xtensa/xtensa.c:3025 config/xtensa/xtensa.c:3065
#, gcc-internal-format
msgid "bad builtin code"
msgstr ""
-#: config/xtensa/xtensa.c:3160
+#: config/xtensa/xtensa.c:3175
#, gcc-internal-format
msgid "only uninitialized variables can be placed in a .bss section"
msgstr ""
-#: cp/call.c:2552
+#: cp/call.c:2705
#, gcc-internal-format
msgid "%s %D(%T, %T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2557
+#: cp/call.c:2710
#, gcc-internal-format
msgid "%s %D(%T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2561
+#: cp/call.c:2714
#, gcc-internal-format
msgid "%s %D(%T) <built-in>"
msgstr ""
-#: cp/call.c:2565
+#: cp/call.c:2718
#, gcc-internal-format
msgid "%s %T <conversion>"
msgstr ""
-#: cp/call.c:2567
+#: cp/call.c:2720
#, gcc-internal-format
msgid "%s %+#D <near match>"
msgstr ""
-#: cp/call.c:2569 cp/pt.c:1407
+#: cp/call.c:2722
+#, gcc-internal-format
+msgid "%s %+#D <deleted>"
+msgstr ""
+
+#: cp/call.c:2724 cp/pt.c:1651
#, gcc-internal-format
msgid "%s %+#D"
msgstr ""
-#: cp/call.c:2851
+#: cp/call.c:3023
#, gcc-internal-format
msgid "conversion from %qT to %qT is ambiguous"
msgstr ""
-#: cp/call.c:3010 cp/call.c:3030 cp/call.c:3094
+#: cp/call.c:3185 cp/call.c:3206 cp/call.c:3271
#, gcc-internal-format
msgid "no matching function for call to %<%D(%A)%>"
msgstr ""
-#: cp/call.c:3033 cp/call.c:3097
+#: cp/call.c:3209 cp/call.c:3274
#, gcc-internal-format
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:3170
+#: cp/call.c:3353
#, gcc-internal-format
msgid ""
"pointer-to-member function %E cannot be called without an object; consider "
"using .* or ->*"
msgstr ""
-#: cp/call.c:3246
+#: cp/call.c:3435
#, gcc-internal-format
msgid "no match for call to %<(%T) (%A)%>"
msgstr ""
-#: cp/call.c:3258
+#: cp/call.c:3448
#, gcc-internal-format
msgid "call of %<(%T) (%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:3299
+#: cp/call.c:3489
#, gcc-internal-format
msgid "%s for ternary %<operator?:%> in %<%E ? %E : %E%>"
msgstr ""
-#: cp/call.c:3305
+#: cp/call.c:3495
#, gcc-internal-format
msgid "%s for %<operator%s%> in %<%E%s%>"
msgstr ""
-#: cp/call.c:3309
+#: cp/call.c:3499
#, gcc-internal-format
msgid "%s for %<operator[]%> in %<%E[%E]%>"
msgstr ""
-#: cp/call.c:3314
+#: cp/call.c:3504
#, gcc-internal-format
msgid "%s for %qs in %<%s %E%>"
msgstr ""
-#: cp/call.c:3319
+#: cp/call.c:3509
#, gcc-internal-format
msgid "%s for %<operator%s%> in %<%E %s %E%>"
msgstr ""
-#: cp/call.c:3322
+#: cp/call.c:3512
#, gcc-internal-format
msgid "%s for %<operator%s%> in %<%s%E%>"
msgstr ""
-#: cp/call.c:3416
+#: cp/call.c:3606
#, gcc-internal-format
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/call.c:3496
+#: cp/call.c:3687
#, gcc-internal-format
msgid ""
"second operand to the conditional operator is of type %<void%>, but the "
"third operand is neither a throw-expression nor of type %<void%>"
msgstr ""
-#: cp/call.c:3501
+#: cp/call.c:3692
#, gcc-internal-format
msgid ""
"third operand to the conditional operator is of type %<void%>, but the "
"second operand is neither a throw-expression nor of type %<void%>"
msgstr ""
-#: cp/call.c:3543 cp/call.c:3779
+#: cp/call.c:3734 cp/call.c:3972
#, gcc-internal-format
msgid "operands to ?: have different types %qT and %qT"
msgstr ""
-#: cp/call.c:3726
+#: cp/call.c:3919
#, gcc-internal-format
msgid "enumeral mismatch in conditional expression: %qT vs %qT"
msgstr ""
-#: cp/call.c:3737
+#: cp/call.c:3930
#, gcc-internal-format
msgid "enumeral and non-enumeral type in conditional expression"
msgstr ""
-#: cp/call.c:4052
+#: cp/call.c:4272
#, gcc-internal-format
msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead"
msgstr ""
-#: cp/call.c:4142
+#: cp/call.c:4274
+#, gcc-internal-format
+msgid "no %<%D(int)%> declared for postfix %qs"
+msgstr ""
+
+#: cp/call.c:4368
#, gcc-internal-format
msgid "comparison between %q#T and %q#T"
msgstr ""
-#: cp/call.c:4430
+#: cp/call.c:4662
#, gcc-internal-format
msgid "no corresponding deallocation function for %qD"
msgstr ""
-#: cp/call.c:4435
+#: cp/call.c:4667
#, gcc-internal-format
msgid "no suitable %<operator %s%> for %qT"
msgstr ""
-#: cp/call.c:4453
+#: cp/call.c:4685
#, gcc-internal-format
msgid "%q+#D is private"
msgstr ""
-#: cp/call.c:4455
+#: cp/call.c:4687
#, gcc-internal-format
msgid "%q+#D is protected"
msgstr ""
-#: cp/call.c:4457
+#: cp/call.c:4689
#, gcc-internal-format
msgid "%q+#D is inaccessible"
msgstr ""
-#: cp/call.c:4458
+#: cp/call.c:4690
#, gcc-internal-format
msgid "within this context"
msgstr ""
-#: cp/call.c:4504
+#: cp/call.c:4737
#, gcc-internal-format
msgid "passing NULL to non-pointer argument %P of %qD"
msgstr ""
-#: cp/call.c:4507
+#: cp/call.c:4740
#, gcc-internal-format
msgid "converting to non-pointer type %qT from NULL"
msgstr ""
-#: cp/call.c:4513
+#: cp/call.c:4746
#, gcc-internal-format
msgid "converting %<false%> to pointer type for argument %P of %qD"
msgstr ""
-#: cp/call.c:4564 cp/cvt.c:217
+#: cp/call.c:4784
+#, gcc-internal-format
+msgid "too many braces around initializer for %qT"
+msgstr ""
+
+#: cp/call.c:4806 cp/cvt.c:217
#, gcc-internal-format
msgid "invalid conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:4566
+#: cp/call.c:4808
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
-#: cp/call.c:4590
+#: cp/call.c:4832
#, gcc-internal-format
msgid ""
"converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:4753
+#: cp/call.c:4992
+#, gcc-internal-format
+msgid "cannot bind %qT lvalue to %qT"
+msgstr ""
+
+#: cp/call.c:4995
+#, gcc-internal-format
+msgid " initializing argument %P of %q+D"
+msgstr ""
+
+#: cp/call.c:5022
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:4756 cp/call.c:4774
+#: cp/call.c:5025 cp/call.c:5043
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:4759
+#: cp/call.c:5028
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:4883
+#: cp/call.c:5147
#, gcc-internal-format
-msgid ""
-"cannot pass objects of non-POD type %q#T through %<...%>; call will abort at "
-"runtime"
+msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>"
msgstr ""
-#. Undefined behavior [expr.call] 5.2.2/7.
-#: cp/call.c:4911
+#. conditionally-supported behavior [expr.call] 5.2.2/7.
+#: cp/call.c:5174
#, gcc-internal-format
msgid ""
-"cannot receive objects of non-POD type %q#T through %<...%>; call will abort "
-"at runtime"
+"cannot receive objects of non-trivially-copyable type %q#T through %<...%>; "
msgstr ""
-#: cp/call.c:4959
+#: cp/call.c:5220
#, gcc-internal-format
msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgstr ""
-#: cp/call.c:4969
+#: cp/call.c:5230
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:5086
+#: cp/call.c:5347
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:5240
+#: cp/call.c:5531
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:5262
+#: cp/call.c:5553
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:5557
+#: cp/call.c:5601
+#, gcc-internal-format
+msgid "deducing %qT as %qT"
+msgstr ""
+
+#: cp/call.c:5604
+#, gcc-internal-format
+msgid " in call to %q+D"
+msgstr ""
+
+#: cp/call.c:5606
+#, gcc-internal-format
+msgid " (you can disable this with -fno-deduce-init-list)"
+msgstr ""
+
+#: cp/call.c:5879
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:5800
+#: cp/call.c:6138
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:5939
+#: cp/call.c:6290
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:5960
+#: cp/call.c:6315
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:5989
+#: cp/call.c:6344
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:6677
+#: cp/call.c:7029
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:6679 cp/name-lookup.c:4474 cp/name-lookup.c:4919
+#: cp/call.c:7031 cp/name-lookup.c:4518 cp/name-lookup.c:4978
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:6736
+#: cp/call.c:7088
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:6737
+#: cp/call.c:7089
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:6740
+#: cp/call.c:7092
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:6858
+#: cp/call.c:7210
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:6861
+#: cp/call.c:7213
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:6863
+#: cp/call.c:7215
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:6901
+#: cp/call.c:7253
#, gcc-internal-format
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:7045
+#: cp/call.c:7406
#, gcc-internal-format
msgid "could not convert %qE to %qT"
msgstr ""
-#: cp/call.c:7251
+#: cp/call.c:7621
#, gcc-internal-format
msgid ""
"invalid initialization of non-const reference of type %qT from a temporary "
"of type %qT"
msgstr ""
-#: cp/call.c:7255
+#: cp/call.c:7625
#, gcc-internal-format
msgid ""
"invalid initialization of reference of type %qT from expression of type %qT"
msgstr ""
-#: cp/class.c:280
+#: cp/class.c:278
#, gcc-internal-format
msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
msgstr ""
-#: cp/class.c:974
+#: cp/class.c:972
#, gcc-internal-format
msgid "Java class %qT cannot have a destructor"
msgstr ""
-#: cp/class.c:976
+#: cp/class.c:974
#, gcc-internal-format
msgid "Java class %qT cannot have an implicit non-trivial destructor"
msgstr ""
-#: cp/class.c:1077
+#: cp/class.c:1075
#, gcc-internal-format
msgid "repeated using declaration %q+D"
msgstr ""
-#: cp/class.c:1079
+#: cp/class.c:1077
#, gcc-internal-format
msgid "using declaration %q+D conflicts with a previous using declaration"
msgstr ""
-#: cp/class.c:1084
+#: cp/class.c:1082
#, gcc-internal-format
msgid "%q+#D cannot be overloaded"
msgstr ""
-#: cp/class.c:1085
+#: cp/class.c:1083
#, gcc-internal-format
msgid "with %q+#D"
msgstr ""
-#: cp/class.c:1152
+#: cp/class.c:1150
#, gcc-internal-format
msgid "conflicting access specifications for method %q+D, ignored"
msgstr ""
-#: cp/class.c:1155
+#: cp/class.c:1153
#, gcc-internal-format
msgid "conflicting access specifications for field %qE, ignored"
msgstr ""
-#: cp/class.c:1216 cp/class.c:1224
+#: cp/class.c:1214 cp/class.c:1222
#, gcc-internal-format
msgid "%q+D invalid in %q#T"
msgstr ""
-#: cp/class.c:1217
+#: cp/class.c:1215
#, gcc-internal-format
msgid " because of local method %q+#D with same name"
msgstr ""
-#: cp/class.c:1225
+#: cp/class.c:1223
#, gcc-internal-format
msgid " because of local member %q+#D with same name"
msgstr ""
-#: cp/class.c:1268
+#: cp/class.c:1272
#, gcc-internal-format
msgid "base class %q#T has a non-virtual destructor"
msgstr ""
-#: cp/class.c:1597
+#: cp/class.c:1632
#, gcc-internal-format
msgid "all member functions in class %qT are private"
msgstr ""
-#: cp/class.c:1609
+#: cp/class.c:1644
#, gcc-internal-format
msgid "%q#T only defines a private destructor and has no friends"
msgstr ""
-#: cp/class.c:1654
+#: cp/class.c:1689
#, gcc-internal-format
msgid "%q#T only defines private constructors and has no friends"
msgstr ""
-#: cp/class.c:2047
+#: cp/class.c:2082
#, gcc-internal-format
msgid "no unique final overrider for %qD in %qT"
msgstr ""
#. Here we know it is a hider, and no overrider exists.
-#: cp/class.c:2467
+#: cp/class.c:2505
#, gcc-internal-format
msgid "%q+D was hidden"
msgstr ""
-#: cp/class.c:2468
+#: cp/class.c:2506
#, gcc-internal-format
msgid " by %q+D"
msgstr ""
-#: cp/class.c:2511 cp/decl2.c:1269
+#: cp/class.c:2549 cp/decl2.c:1282
#, gcc-internal-format
msgid "%q+#D invalid; an anonymous union can only have non-static data members"
msgstr ""
-#: cp/class.c:2514
+#: cp/class.c:2552
#, gcc-internal-format
msgid ""
"%q+#D invalid; an anonymous struct can only have non-static data members"
msgstr ""
-#: cp/class.c:2522 cp/decl2.c:1275
+#: cp/class.c:2560 cp/decl2.c:1288
#, gcc-internal-format
msgid "private member %q+#D in anonymous union"
msgstr ""
-#: cp/class.c:2524
+#: cp/class.c:2562
#, gcc-internal-format
msgid "private member %q+#D in anonymous struct"
msgstr ""
-#: cp/class.c:2529 cp/decl2.c:1277
+#: cp/class.c:2567 cp/decl2.c:1290
#, gcc-internal-format
msgid "protected member %q+#D in anonymous union"
msgstr ""
-#: cp/class.c:2531
+#: cp/class.c:2569
#, gcc-internal-format
msgid "protected member %q+#D in anonymous struct"
msgstr ""
-#: cp/class.c:2710
+#: cp/class.c:2752
#, gcc-internal-format
msgid "bit-field %q+#D with non-integral type"
msgstr ""
-#: cp/class.c:2723
+#: cp/class.c:2765
#, gcc-internal-format
msgid "bit-field %q+D width not an integer constant"
msgstr ""
-#: cp/class.c:2728
+#: cp/class.c:2770
#, gcc-internal-format
msgid "negative width in bit-field %q+D"
msgstr ""
-#: cp/class.c:2733
+#: cp/class.c:2775
#, gcc-internal-format
msgid "zero width for bit-field %q+D"
msgstr ""
-#: cp/class.c:2739
+#: cp/class.c:2781
#, gcc-internal-format
msgid "width of %q+D exceeds its type"
msgstr ""
-#: cp/class.c:2749
+#: cp/class.c:2791
#, gcc-internal-format
msgid "%q+D is too small to hold all values of %q#T"
msgstr ""
-#: cp/class.c:2806
+#: cp/class.c:2848
#, gcc-internal-format
msgid "member %q+#D with constructor not allowed in union"
msgstr ""
-#: cp/class.c:2809
+#: cp/class.c:2851
#, gcc-internal-format
msgid "member %q+#D with destructor not allowed in union"
msgstr ""
-#: cp/class.c:2811
+#: cp/class.c:2853
#, gcc-internal-format
msgid "member %q+#D with copy assignment operator not allowed in union"
msgstr ""
-#: cp/class.c:2835
+#: cp/class.c:2877
#, gcc-internal-format
msgid "multiple fields in union %qT initialized"
msgstr ""
-#: cp/class.c:2924
+#: cp/class.c:2968
#, gcc-internal-format
msgid "%q+D may not be static because it is a member of a union"
msgstr ""
-#: cp/class.c:2929
+#: cp/class.c:2973
#, gcc-internal-format
msgid "%q+D may not have reference type %qT because it is a member of a union"
msgstr ""
-#: cp/class.c:2940
+#: cp/class.c:2984
#, gcc-internal-format
msgid "field %q+D invalidly declared function type"
msgstr ""
-#: cp/class.c:2946
+#: cp/class.c:2990
#, gcc-internal-format
msgid "field %q+D invalidly declared method type"
msgstr ""
-#: cp/class.c:2984
+#: cp/class.c:3039
#, gcc-internal-format
msgid "ignoring packed attribute because of unpacked non-POD field %q+#D"
msgstr ""
-#: cp/class.c:3064
+#: cp/class.c:3122
#, gcc-internal-format
msgid "field %q+#D with same name as class"
msgstr ""
-#: cp/class.c:3095
+#: cp/class.c:3153
#, gcc-internal-format
msgid "%q#T has pointer data members"
msgstr ""
-#: cp/class.c:3100
+#: cp/class.c:3158
#, gcc-internal-format
msgid " but does not override %<%T(const %T&)%>"
msgstr ""
-#: cp/class.c:3102
+#: cp/class.c:3160
#, gcc-internal-format
msgid " or %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3106
+#: cp/class.c:3164
#, gcc-internal-format
msgid " but does not override %<operator=(const %T&)%>"
msgstr ""
-#: cp/class.c:3567
+#: cp/class.c:3627
#, gcc-internal-format
msgid ""
"offset of empty base %qT may not be ABI-compliant and maychange in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:3692
+#: cp/class.c:3754
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
msgstr ""
-#: cp/class.c:3774
+#: cp/class.c:3836
#, gcc-internal-format
msgid "initializer specified for non-virtual method %q+D"
msgstr ""
-#: cp/class.c:4345
+#: cp/class.c:4441
#, gcc-internal-format
msgid "non-static reference %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:4350
+#: cp/class.c:4446
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr ""
-#: cp/class.c:4605
+#: cp/class.c:4669
#, gcc-internal-format
msgid ""
"offset of virtual base %qT is not ABI-compliant and may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4706
+#: cp/class.c:4770
#, gcc-internal-format
msgid "direct base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:4718
+#: cp/class.c:4782
#, gcc-internal-format
msgid "virtual base %qT inaccessible in %qT due to ambiguity"
msgstr ""
-#: cp/class.c:4897
+#: cp/class.c:4961
#, gcc-internal-format
msgid ""
"size assigned to %qT may not be ABI-compliant and may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4937
+#: cp/class.c:5001
#, gcc-internal-format
msgid ""
"the offset of %qD may not be ABI-compliant and may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:4965
+#: cp/class.c:5029
#, gcc-internal-format
msgid ""
"offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgstr ""
-#: cp/class.c:4974
+#: cp/class.c:5038
#, gcc-internal-format
msgid ""
"%q+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:5061
+#: cp/class.c:5126
#, gcc-internal-format
msgid ""
"layout of classes derived from empty class %qT may change in a future "
"version of GCC"
msgstr ""
-#: cp/class.c:5207
+#: cp/class.c:5274 cp/parser.c:16267
#, gcc-internal-format
msgid "redefinition of %q#T"
msgstr ""
-#: cp/class.c:5363
+#: cp/class.c:5426
#, gcc-internal-format
msgid "%q#T has virtual functions and accessible non-virtual destructor"
msgstr ""
-#: cp/class.c:5465
+#: cp/class.c:5528
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:5927
+#: cp/class.c:5992
#, gcc-internal-format
msgid "language string %<\"%E\"%> not recognized"
msgstr ""
-#: cp/class.c:6020
+#: cp/class.c:6085
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
msgstr ""
-#: cp/class.c:6149
+#: cp/class.c:6225
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
msgstr ""
-#: cp/class.c:6179
+#: cp/class.c:6255
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
msgstr ""
-#: cp/class.c:6206
+#: cp/class.c:6282
#, gcc-internal-format
msgid "assuming pointer to member %qD"
msgstr ""
-#: cp/class.c:6209
+#: cp/class.c:6285
#, gcc-internal-format
msgid "(a pointer to member can only be formed with %<&%E%>)"
msgstr ""
-#: cp/class.c:6271 cp/class.c:6305
+#: cp/class.c:6347 cp/class.c:6381
#, gcc-internal-format
msgid "not enough type information"
msgstr ""
-#: cp/class.c:6288
+#: cp/class.c:6364
#, gcc-internal-format
msgid "argument of type %qT does not match %qT"
msgstr ""
@@ -29423,12 +30741,12 @@ 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:6588 cp/decl.c:1180 cp/name-lookup.c:525
+#: cp/class.c:6665 cp/decl.c:1199 cp/name-lookup.c:520
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr ""
-#: cp/class.c:6589
+#: cp/class.c:6666
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -29438,12 +30756,7 @@ msgstr ""
msgid "continue statement not within loop or switch"
msgstr ""
-#: cp/cp-gimplify.c:409
-#, gcc-internal-format
-msgid "statement with no effect"
-msgstr ""
-
-#: cp/cp-gimplify.c:1141
+#: cp/cp-gimplify.c:1196
#, gcc-internal-format
msgid "%qE implicitly determined as %<firstprivate%> has reference type"
msgstr ""
@@ -29468,7 +30781,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:470 cp/typeck.c:5485
+#: cp/cvt.c:470 cp/typeck.c:5598
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -29478,195 +30791,190 @@ msgstr ""
msgid "cannot convert type %qT to type %qT"
msgstr ""
-#: cp/cvt.c:652
+#: cp/cvt.c:668
#, gcc-internal-format
msgid "conversion from %q#T to %q#T"
msgstr ""
-#: cp/cvt.c:667
+#: cp/cvt.c:683
#, gcc-internal-format
msgid ""
"the result of the conversion is unspecified because %qE is outside the range "
"of type %qT"
msgstr ""
-#: cp/cvt.c:678 cp/cvt.c:698
+#: cp/cvt.c:694 cp/cvt.c:714
#, gcc-internal-format
msgid "%q#T used where a %qT was expected"
msgstr ""
-#: cp/cvt.c:713
+#: cp/cvt.c:729
#, gcc-internal-format
msgid "%q#T used where a floating point value was expected"
msgstr ""
-#: cp/cvt.c:769
+#: cp/cvt.c:789
#, gcc-internal-format
msgid "conversion from %qT to non-scalar type %qT requested"
msgstr ""
-#: cp/cvt.c:808
+#: cp/cvt.c:828
#, gcc-internal-format
msgid "pseudo-destructor is not called"
msgstr ""
-#: cp/cvt.c:870
+#: cp/cvt.c:891
#, gcc-internal-format
msgid "object of incomplete type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:878
+#: cp/cvt.c:899
#, gcc-internal-format
msgid "object of type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:895 cp/cvt.c:1009
-#, gcc-internal-format
-msgid "value computed is not used"
-msgstr ""
-
-#: cp/cvt.c:909
+#: cp/cvt.c:930
#, gcc-internal-format
msgid "object %qE of incomplete type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:947
+#: cp/cvt.c:970
#, gcc-internal-format
msgid "%s cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:957
+#: cp/cvt.c:980
#, gcc-internal-format
msgid "%s is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:975
+#: cp/cvt.c:998
#, gcc-internal-format
msgid "%s has no effect"
msgstr ""
-#: cp/cvt.c:1119
+#: cp/cvt.c:1142
#, gcc-internal-format
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1225
+#: cp/cvt.c:1251
#, gcc-internal-format
msgid "ambiguous default type conversion from %qT"
msgstr ""
-#: cp/cvt.c:1227
+#: cp/cvt.c:1253
#, gcc-internal-format
msgid " candidate conversions include %qD and %qD"
msgstr ""
-#: cp/decl.c:1043
+#: cp/decl.c:1062
#, gcc-internal-format
msgid "%qD was declared %<extern%> and later %<static%>"
msgstr ""
-#: cp/decl.c:1044 cp/decl.c:1591 objc/objc-act.c:2938 objc/objc-act.c:7539
+#: cp/decl.c:1063 cp/decl.c:1611 objc/objc-act.c:2977 objc/objc-act.c:7602
#, gcc-internal-format
msgid "previous declaration of %q+D"
msgstr ""
-#: cp/decl.c:1077
+#: cp/decl.c:1096
#, gcc-internal-format
msgid "declaration of %qF throws different exceptions"
msgstr ""
-#: cp/decl.c:1078
+#: cp/decl.c:1097
#, gcc-internal-format
msgid "from previous declaration %q+F"
msgstr ""
-#: cp/decl.c:1134
+#: cp/decl.c:1153
#, gcc-internal-format
msgid "function %q+D redeclared as inline"
msgstr ""
-#: cp/decl.c:1136
+#: cp/decl.c:1155
#, gcc-internal-format
msgid "previous declaration of %q+D with attribute noinline"
msgstr ""
-#: cp/decl.c:1143
+#: cp/decl.c:1162
#, gcc-internal-format
msgid "function %q+D redeclared with attribute noinline"
msgstr ""
-#: cp/decl.c:1145
+#: cp/decl.c:1164
#, gcc-internal-format
msgid "previous declaration of %q+D was inline"
msgstr ""
-#: cp/decl.c:1167 cp/decl.c:1240
+#: cp/decl.c:1186 cp/decl.c:1259
#, gcc-internal-format
msgid "shadowing %s function %q#D"
msgstr ""
-#: cp/decl.c:1176
+#: cp/decl.c:1195
#, gcc-internal-format
msgid "library function %q#D redeclared as non-function %q#D"
msgstr ""
-#: cp/decl.c:1181
+#: cp/decl.c:1200
#, gcc-internal-format
msgid "conflicts with built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1235 cp/decl.c:1361 cp/decl.c:1377
+#: cp/decl.c:1254 cp/decl.c:1380 cp/decl.c:1396
#, gcc-internal-format
msgid "new declaration %q#D"
msgstr ""
-#: cp/decl.c:1236
+#: cp/decl.c:1255
#, gcc-internal-format
msgid "ambiguates built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1325
+#: cp/decl.c:1344
#, gcc-internal-format
msgid "%q#D redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:1328
+#: cp/decl.c:1347
#, gcc-internal-format
msgid "previous declaration of %q+#D"
msgstr ""
-#: cp/decl.c:1347
+#: cp/decl.c:1366
#, gcc-internal-format
msgid "declaration of template %q#D"
msgstr ""
-#: cp/decl.c:1348 cp/name-lookup.c:526 cp/name-lookup.c:812
-#: cp/name-lookup.c:823
+#: cp/decl.c:1367 cp/name-lookup.c:521 cp/name-lookup.c:807
+#: cp/name-lookup.c:818
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr ""
-#: cp/decl.c:1362 cp/decl.c:1378
+#: cp/decl.c:1381 cp/decl.c:1397
#, gcc-internal-format
msgid "ambiguates old declaration %q+#D"
msgstr ""
-#: cp/decl.c:1370
+#: cp/decl.c:1389
#, gcc-internal-format
msgid "declaration of C function %q#D conflicts with"
msgstr ""
-#: cp/decl.c:1372
+#: cp/decl.c:1391
#, gcc-internal-format
msgid "previous declaration %q+#D here"
msgstr ""
-#: cp/decl.c:1386
+#: cp/decl.c:1405
#, gcc-internal-format
msgid "conflicting declaration %q#D"
msgstr ""
-#: cp/decl.c:1387
+#: cp/decl.c:1406
#, gcc-internal-format
msgid "%q+D has a previous declaration as %q#D"
msgstr ""
@@ -29678,63 +30986,63 @@ msgstr ""
#. A namespace-name defined at global scope shall not be
#. declared as the name of any other entity in any global scope
#. of the program.
-#: cp/decl.c:1439
+#: cp/decl.c:1458
#, gcc-internal-format
msgid "declaration of namespace %qD conflicts with"
msgstr ""
-#: cp/decl.c:1440
+#: cp/decl.c:1459
#, gcc-internal-format
msgid "previous declaration of namespace %q+D here"
msgstr ""
-#: cp/decl.c:1451
+#: cp/decl.c:1470
#, gcc-internal-format
msgid "%q+#D previously defined here"
msgstr ""
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:1461
+#: cp/decl.c:1480
#, gcc-internal-format
msgid "prototype for %q+#D"
msgstr ""
-#: cp/decl.c:1462
+#: cp/decl.c:1482
#, gcc-internal-format
-msgid "%Jfollows non-prototype definition here"
+msgid "follows non-prototype definition here"
msgstr ""
-#: cp/decl.c:1502
+#: cp/decl.c:1522
#, gcc-internal-format
msgid "previous declaration of %q+#D with %qL linkage"
msgstr ""
-#: cp/decl.c:1504
+#: cp/decl.c:1524
#, gcc-internal-format
msgid "conflicts with new declaration with %qL linkage"
msgstr ""
-#: cp/decl.c:1527 cp/decl.c:1533
+#: cp/decl.c:1547 cp/decl.c:1553
#, gcc-internal-format
msgid "default argument given for parameter %d of %q#D"
msgstr ""
-#: cp/decl.c:1529 cp/decl.c:1535
+#: cp/decl.c:1549 cp/decl.c:1555
#, gcc-internal-format
msgid "after previous specification in %q+#D"
msgstr ""
-#: cp/decl.c:1590
+#: cp/decl.c:1610
#, gcc-internal-format
msgid "redundant redeclaration of %qD in same scope"
msgstr ""
-#: cp/decl.c:1596
+#: cp/decl.c:1616
#, gcc-internal-format
msgid "deleted definition of %qD"
msgstr ""
-#: cp/decl.c:1597
+#: cp/decl.c:1617
#, gcc-internal-format
msgid "after previous declaration %q+D"
msgstr ""
@@ -29747,334 +31055,324 @@ 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:1933
+#: cp/decl.c:1968
#, gcc-internal-format
msgid "explicit specialization of %qD after first use"
msgstr ""
-#: cp/decl.c:2029
+#: cp/decl.c:2065
#, gcc-internal-format
msgid "%q+D: visibility attribute ignored because it"
msgstr ""
-#: cp/decl.c:2031
+#: cp/decl.c:2067
#, gcc-internal-format
-msgid "%Jconflicts with previous declaration here"
+msgid "conflicts with previous declaration here"
msgstr ""
-#: cp/decl.c:2464
+#: cp/decl.c:2507
#, gcc-internal-format
msgid "jump to label %qD"
msgstr ""
-#: cp/decl.c:2466
+#: cp/decl.c:2509
#, gcc-internal-format
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:2468
+#: cp/decl.c:2511 cp/decl.c:2651 cp/decl.c:2692
#, gcc-internal-format
-msgid "%H from here"
+msgid " from here"
msgstr ""
-#: cp/decl.c:2487 cp/decl.c:2650
+#: cp/decl.c:2530 cp/decl.c:2695
#, gcc-internal-format
msgid " exits OpenMP structured block"
msgstr ""
-#: cp/decl.c:2508
+#: cp/decl.c:2551
#, gcc-internal-format
msgid " crosses initialization of %q+#D"
msgstr ""
-#: cp/decl.c:2510 cp/decl.c:2625
+#: cp/decl.c:2553 cp/decl.c:2669
#, gcc-internal-format
-msgid " enters scope of non-POD %q+#D"
+msgid " enters scope of %q+#D which has non-trivial destructor"
msgstr ""
-#: cp/decl.c:2523 cp/decl.c:2629
+#: cp/decl.c:2567 cp/decl.c:2674
#, gcc-internal-format
msgid " enters try block"
msgstr ""
-#: cp/decl.c:2525 cp/decl.c:2631
+#. Can't skip init of __exception_info.
+#: cp/decl.c:2569 cp/decl.c:2663 cp/decl.c:2676
#, gcc-internal-format
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:2535 cp/decl.c:2634
+#: cp/decl.c:2579 cp/decl.c:2679
#, gcc-internal-format
msgid " enters OpenMP structured block"
msgstr ""
-#: cp/decl.c:2606 cp/decl.c:2646
+#: cp/decl.c:2650 cp/decl.c:2691
#, gcc-internal-format
msgid "jump to label %q+D"
msgstr ""
-#: cp/decl.c:2607 cp/decl.c:2647
-#, gcc-internal-format
-msgid " from here"
-msgstr ""
-
-#. Can't skip init of __exception_info.
-#: cp/decl.c:2619
-#, gcc-internal-format
-msgid "%J enters catch block"
-msgstr ""
-
-#: cp/decl.c:2623
+#: cp/decl.c:2667
#, gcc-internal-format
msgid " skips initialization of %q+#D"
msgstr ""
-#: cp/decl.c:2699
+#: cp/decl.c:2744
#, gcc-internal-format
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:2703
-#, gcc-internal-format
-msgid "duplicate label %qD"
-msgstr ""
-
-#: cp/decl.c:2970
+#: cp/decl.c:3015
#, gcc-internal-format
msgid "%qD is not a type"
msgstr ""
-#: cp/decl.c:2976
+#: cp/decl.c:3021 cp/parser.c:4197
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
-#: cp/decl.c:2985
+#: cp/decl.c:3030
#, gcc-internal-format
msgid "%q#T is not a class"
msgstr ""
-#: cp/decl.c:3009 cp/decl.c:3077
+#: cp/decl.c:3054 cp/decl.c:3122
#, gcc-internal-format
msgid "no class template named %q#T in %q#T"
msgstr ""
-#: cp/decl.c:3017
+#: cp/decl.c:3062
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a class template"
msgstr ""
-#: cp/decl.c:3024
+#: cp/decl.c:3069
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a type"
msgstr ""
-#: cp/decl.c:3086
+#: cp/decl.c:3131
#, gcc-internal-format
msgid "template parameters do not match template"
msgstr ""
-#: cp/decl.c:3087 cp/friend.c:321 cp/friend.c:329
+#: cp/decl.c:3132 cp/friend.c:321 cp/friend.c:329
#, gcc-internal-format
msgid "%q+D declared here"
msgstr ""
-#: cp/decl.c:3770
+#: cp/decl.c:3815
#, gcc-internal-format
-msgid "%Jan anonymous struct cannot have function members"
+msgid "an anonymous struct cannot have function members"
msgstr ""
-#: cp/decl.c:3772
+#: cp/decl.c:3818
#, gcc-internal-format
-msgid "%Jan anonymous union cannot have function members"
+msgid "an anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:3790
+#: cp/decl.c:3836
#, gcc-internal-format
msgid "member %q+#D with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3793
+#: cp/decl.c:3839
#, gcc-internal-format
msgid "member %q+#D with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3796
+#: cp/decl.c:3842
#, gcc-internal-format
msgid ""
"member %q+#D with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3821
+#: cp/decl.c:3867
#, gcc-internal-format
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:3825
+#: cp/decl.c:3871
#, gcc-internal-format
msgid "redeclaration of C++ built-in type %qT"
msgstr ""
-#: cp/decl.c:3862
+#: cp/decl.c:3908
#, gcc-internal-format
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:3869
+#: cp/decl.c:3915
#, gcc-internal-format
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:3876
+#: cp/decl.c:3922
#, gcc-internal-format
msgid "%qs can only be specified for functions"
msgstr ""
-#: cp/decl.c:3882
+#: cp/decl.c:3928
#, gcc-internal-format
msgid "%<friend%> can only be specified inside a class"
msgstr ""
-#: cp/decl.c:3884
+#: cp/decl.c:3930
#, gcc-internal-format
msgid "%<explicit%> can only be specified for constructors"
msgstr ""
-#: cp/decl.c:3886
+#: cp/decl.c:3932
#, gcc-internal-format
msgid "a storage class can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:3892
+#: cp/decl.c:3938
#, gcc-internal-format
msgid "qualifiers can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:3895
+#: cp/decl.c:3941
#, gcc-internal-format
msgid "%<typedef%> was ignored in this declaration"
msgstr ""
-#: cp/decl.c:3924
+#: cp/decl.c:3943
+#, gcc-internal-format
+msgid "%<constexpr> cannot be used for type declarations"
+msgstr ""
+
+#: cp/decl.c:3972
#, gcc-internal-format
msgid "attribute ignored in declaration of %q+#T"
msgstr ""
-#: cp/decl.c:3925
+#: cp/decl.c:3973
#, gcc-internal-format
msgid "attribute for %q+#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:3970
+#: cp/decl.c:4018
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:3974
+#: cp/decl.c:4022
#, gcc-internal-format
msgid ""
"ignoring attributes applied to dependent type %qT without an associated "
"declaration"
msgstr ""
-#: cp/decl.c:4050
+#: cp/decl.c:4098
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr ""
-#: cp/decl.c:4068
+#: cp/decl.c:4116
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4093
+#: cp/decl.c:4141
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4112
+#: cp/decl.c:4160
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4118
+#: cp/decl.c:4166
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4127
+#: cp/decl.c:4175
#, gcc-internal-format
msgid ""
"template header not allowed in member definition of explicitly specialized "
"class"
msgstr ""
-#: cp/decl.c:4135
+#: cp/decl.c:4183
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr ""
-#: cp/decl.c:4174
+#: cp/decl.c:4188
+#, gcc-internal-format
+msgid "%qD declared %<constexpr%> outside its class"
+msgstr ""
+
+#: cp/decl.c:4225
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:4269
+#: cp/decl.c:4323
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:4275 cp/decl.c:5023
+#: cp/decl.c:4329 cp/decl.c:5077
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr ""
-#: cp/decl.c:4282 cp/decl.c:5519
+#: cp/decl.c:4336 cp/decl.c:5573
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr ""
-#: cp/decl.c:4284
+#: cp/decl.c:4338
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4320
+#: cp/decl.c:4374
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4326
-#, gcc-internal-format
-msgid "ISO C++ forbids use of initializer list to initialize reference %qD"
-msgstr ""
-
-#: cp/decl.c:4352
+#: cp/decl.c:4399
#, gcc-internal-format
msgid "cannot initialize %qT from %qT"
msgstr ""
-#: cp/decl.c:4413
+#: cp/decl.c:4463
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4418
+#: cp/decl.c:4468
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4468
+#: cp/decl.c:4518
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4475
+#: cp/decl.c:4525
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr ""
-#: cp/decl.c:4487
+#: cp/decl.c:4537
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -30082,894 +31380,897 @@ 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:4530
+#: cp/decl.c:4580
#, gcc-internal-format
msgid "storage size of %qD isn't known"
msgstr ""
-#: cp/decl.c:4553
+#: cp/decl.c:4603
#, gcc-internal-format
msgid "storage size of %qD isn't constant"
msgstr ""
-#: cp/decl.c:4604
+#: cp/decl.c:4649
#, gcc-internal-format
msgid ""
"sorry: semantics of inline function static data %q+#D are wrong (you'll wind "
"up with multiple copies)"
msgstr ""
-#: cp/decl.c:4607
+#: cp/decl.c:4653
+#, gcc-internal-format
+msgid " you can work around this by removing the initializer"
+msgstr ""
+
+#: cp/decl.c:4673
#, gcc-internal-format
-msgid "%J you can work around this by removing the initializer"
+msgid "missing initializer for constexpr %qD"
msgstr ""
-#: cp/decl.c:4634
+#: cp/decl.c:4683
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr ""
-#: cp/decl.c:4746
+#: cp/decl.c:4795
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr ""
-#: cp/decl.c:4788
+#: cp/decl.c:4837
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:4806
+#: cp/decl.c:4855
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:4862
+#: cp/decl.c:4911
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr ""
-#: cp/decl.c:4948
+#: cp/decl.c:5002
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr ""
-#: cp/decl.c:5005 cp/typeck2.c:1086 cp/typeck2.c:1109 cp/typeck2.c:1152
+#: cp/decl.c:5059 cp/typeck2.c:924 cp/typeck2.c:1099 cp/typeck2.c:1122
+#: cp/typeck2.c:1165
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr ""
-#: cp/decl.c:5025
+#: cp/decl.c:5079
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr ""
-#: cp/decl.c:5034
+#: cp/decl.c:5088
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5036
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:5090
+#: cp/decl.c:5144
#, gcc-internal-format
msgid "%qD has incomplete type"
msgstr ""
-#: cp/decl.c:5110
+#: cp/decl.c:5164
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5141
+#: cp/decl.c:5195
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5173
+#: cp/decl.c:5227
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:5187
+#: cp/decl.c:5241
#, gcc-internal-format
msgid "structure %qD with uninitialized const members"
msgstr ""
-#: cp/decl.c:5189
+#: cp/decl.c:5243
#, gcc-internal-format
msgid "structure %qD with uninitialized reference members"
msgstr ""
-#: cp/decl.c:5486
+#: cp/decl.c:5540
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:5545 cp/decl2.c:853
+#: cp/decl.c:5608 cp/decl2.c:866
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr ""
-#: cp/decl.c:5621
+#: cp/decl.c:5688
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr ""
-#: cp/decl.c:5651
+#: cp/decl.c:5720
#, gcc-internal-format
-msgid "%qD cannot be thread-local because it has non-POD type %qT"
+msgid "%qD cannot be thread-local because it has non-trivial type %qT"
msgstr ""
-#: cp/decl.c:5683
+#: cp/decl.c:5752
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:5700
+#: cp/decl.c:5769
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:5718
+#: cp/decl.c:5787
#, gcc-internal-format
msgid ""
"%qD cannot be initialized by a non-constant expression when being declared"
msgstr ""
-#: cp/decl.c:5758
+#: cp/decl.c:5836
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:5822
+#: cp/decl.c:5900
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6411
+#: cp/decl.c:6480
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6413
+#: cp/decl.c:6482
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6434
+#: cp/decl.c:6503
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> %s"
msgstr ""
-#: cp/decl.c:6436
+#: cp/decl.c:6505
#, gcc-internal-format
msgid "%qD declared as an %<inline%> %s"
msgstr ""
-#: cp/decl.c:6438
+#: cp/decl.c:6507
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in %s "
"declaration"
msgstr ""
-#: cp/decl.c:6442
+#: cp/decl.c:6511
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr ""
-#: cp/decl.c:6448
+#: cp/decl.c:6517
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr ""
-#: cp/decl.c:6482
+#: cp/decl.c:6551
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:6602
+#: cp/decl.c:6672
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:6612
+#: cp/decl.c:6682
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:6642
+#: cp/decl.c:6712
#, gcc-internal-format
msgid ""
"default arguments are not allowed in declaration of friend template "
"specialization %qD"
msgstr ""
-#: cp/decl.c:6650
+#: cp/decl.c:6720
#, gcc-internal-format
msgid ""
"%<inline%> is not allowed in declaration of friend template specialization %"
"qD"
msgstr ""
-#: cp/decl.c:6693
+#: cp/decl.c:6763
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:6695
+#: cp/decl.c:6765
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:6697
+#: cp/decl.c:6767
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:6725
-#, gcc-internal-format
-msgid "non-local function %q#D uses anonymous type"
-msgstr ""
-
-#: cp/decl.c:6728 cp/decl.c:7004
-#, gcc-internal-format
-msgid ""
-"%q+#D does not refer to the unqualified type, so it is not used for linkage"
-msgstr ""
-
-#: cp/decl.c:6734
-#, gcc-internal-format
-msgid "non-local function %q#D uses local type %qT"
-msgstr ""
-
-#: cp/decl.c:6753
+#: cp/decl.c:6793
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:6754
+#: cp/decl.c:6794
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:6802
+#: cp/decl.c:6839
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:6842
+#: cp/decl.c:6879
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:6859 cp/decl2.c:685
+#: cp/decl.c:6896 cp/decl2.c:692
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
-#. DRs 132, 319 and 389 seem to indicate types with
-#. no linkage can only be used to declare extern "C"
-#. entities. Since it's not always an error in the
-#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7001
-#, gcc-internal-format
-msgid "non-local variable %q#D uses anonymous type"
-msgstr ""
-
-#: cp/decl.c:7010
-#, gcc-internal-format
-msgid "non-local variable %q#D uses local type %qT"
-msgstr ""
-
-#: cp/decl.c:7133
+#: cp/decl.c:7152
#, gcc-internal-format
msgid ""
"invalid in-class initialization of static data member of non-integral type %"
"qT"
msgstr ""
-#: cp/decl.c:7143
+#: cp/decl.c:7162
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7147
+#: cp/decl.c:7166
#, gcc-internal-format
msgid ""
"ISO C++ forbids initialization of member constant %qD of non-integral type %"
"qT"
msgstr ""
-#: cp/decl.c:7172
+#: cp/decl.c:7191
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7174
+#: cp/decl.c:7193
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7226
+#: cp/decl.c:7245
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr ""
-#: cp/decl.c:7228
+#: cp/decl.c:7247
#, gcc-internal-format
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:7236
+#: cp/decl.c:7255
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr ""
-#: cp/decl.c:7238
+#: cp/decl.c:7257
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:7245
+#: cp/decl.c:7264
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:7248
+#: cp/decl.c:7267
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:7254
+#: cp/decl.c:7273
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr ""
-#: cp/decl.c:7256
+#: cp/decl.c:7275
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr ""
-#: cp/decl.c:7262
+#: cp/decl.c:7281
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:7298
+#: cp/decl.c:7317
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:7379
+#: cp/decl.c:7398
#, gcc-internal-format
msgid "declaration of %qD as %s"
msgstr ""
-#: cp/decl.c:7381
+#: cp/decl.c:7400
#, gcc-internal-format
msgid "creating %s"
msgstr ""
-#: cp/decl.c:7393
+#: cp/decl.c:7412
#, gcc-internal-format
msgid ""
"declaration of %qD as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: cp/decl.c:7397
+#: cp/decl.c:7416
#, gcc-internal-format
msgid ""
"multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:7432
+#: cp/decl.c:7451
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:7442
+#: cp/decl.c:7461
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:7455
+#: cp/decl.c:7474
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:7477
+#: cp/decl.c:7496
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:7484
+#: cp/decl.c:7503
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:7657
+#: cp/decl.c:7677
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr ""
-#: cp/decl.c:7660
+#: cp/decl.c:7680
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr ""
-#: cp/decl.c:7663
+#: cp/decl.c:7683
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr ""
-#: cp/decl.c:7675
+#: cp/decl.c:7695
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr ""
-#: cp/decl.c:7691 cp/decl.c:7783 cp/decl.c:8985
+#: cp/decl.c:7711 cp/decl.c:7803 cp/decl.c:9063
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr ""
-#: cp/decl.c:7697
+#: cp/decl.c:7717
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr ""
-#: cp/decl.c:7728
+#: cp/decl.c:7748
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:7775
+#: cp/decl.c:7795
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:7817
+#: cp/decl.c:7837
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr ""
-#: cp/decl.c:7823
+#: cp/decl.c:7843
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr ""
-#: cp/decl.c:7894 cp/decl.c:7897 cp/decl.c:7900
+#: cp/decl.c:7914 cp/decl.c:7917 cp/decl.c:7920
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr ""
-#: cp/decl.c:7925 cp/decl.c:7943
+#: cp/decl.c:7945 cp/decl.c:7963
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7927
+#: cp/decl.c:7947
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr ""
-#: cp/decl.c:7929
+#: cp/decl.c:7949
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7931
+#: cp/decl.c:7951
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7933
+#: cp/decl.c:7953
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7935
+#: cp/decl.c:7955
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7937
+#: cp/decl.c:7957
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:7939
+#: cp/decl.c:7959
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr ""
-#: cp/decl.c:7945
+#: cp/decl.c:7965
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7953
+#: cp/decl.c:7973
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr ""
-#: cp/decl.c:8017
+#: cp/decl.c:8037
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr ""
-#: cp/decl.c:8046
+#: cp/decl.c:8068
+#, gcc-internal-format
+msgid "both %<const%> and %<constexpr%> cannot be used here"
+msgstr ""
+
+#: cp/decl.c:8077
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8059 cp/typeck.c:7293
+#: cp/decl.c:8090 cp/typeck.c:7458
#, gcc-internal-format
msgid "ignoring %qV qualifiers added to function type %qT"
msgstr ""
-#: cp/decl.c:8082
+#: cp/decl.c:8113
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8090
+#: cp/decl.c:8121
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr ""
-#: cp/decl.c:8099
+#: cp/decl.c:8130
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8105
+#: cp/decl.c:8136
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8109
+#: cp/decl.c:8140
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr ""
-#: cp/decl.c:8118
+#: cp/decl.c:8148
+#, gcc-internal-format
+msgid "a parameter cannot be declared %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:8157
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr ""
-#: cp/decl.c:8136
+#: cp/decl.c:8175
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr ""
-#: cp/decl.c:8159
+#: cp/decl.c:8198
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr ""
-#: cp/decl.c:8163
+#: cp/decl.c:8202
#, gcc-internal-format
msgid "storage class specified for parameter %qs"
msgstr ""
-#: cp/decl.c:8176
+#: cp/decl.c:8215
#, gcc-internal-format
msgid "nested function %qs declared %<extern%>"
msgstr ""
-#: cp/decl.c:8180
+#: cp/decl.c:8219
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:8186
+#: cp/decl.c:8225
#, gcc-internal-format
msgid "function-scope %qs implicitly auto and declared %<__thread%>"
msgstr ""
-#: cp/decl.c:8193
+#: cp/decl.c:8232
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:8282
+#: cp/decl.c:8326
#, gcc-internal-format
msgid "%qs declared as function returning a function"
msgstr ""
-#: cp/decl.c:8287
+#: cp/decl.c:8331
#, gcc-internal-format
msgid "%qs declared as function returning an array"
msgstr ""
-#: cp/decl.c:8308
+#: cp/decl.c:8352
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without late return type"
msgstr ""
-#: cp/decl.c:8314
+#: cp/decl.c:8358
#, gcc-internal-format
msgid ""
"%qs function with late return type has %qT as its type rather than plain %"
"<auto%>"
msgstr ""
-#: cp/decl.c:8322
+#: cp/decl.c:8366
#, gcc-internal-format
msgid ""
"%qs function with late return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:8355
+#: cp/decl.c:8399
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:8360
+#: cp/decl.c:8404
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:8378
+#: cp/decl.c:8422
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:8391
+#: cp/decl.c:8435
#, gcc-internal-format
msgid "can't initialize friend function %qs"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:8395
+#: cp/decl.c:8439
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:8399
+#: cp/decl.c:8443
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:8401
+#: cp/decl.c:8445
#, gcc-internal-format
msgid "can't define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:8414
+#: cp/decl.c:8463
+#, gcc-internal-format
+msgid ""
+"the %<constexpr%> specifier cannot be used in a function declaration that is "
+"not a definition"
+msgstr ""
+
+#: cp/decl.c:8481
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:8433
+#: cp/decl.c:8500
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr ""
-#: cp/decl.c:8446 cp/decl.c:8453
+#: cp/decl.c:8513 cp/decl.c:8520
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr ""
-#: cp/decl.c:8455
+#: cp/decl.c:8522
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:8475
+#: cp/decl.c:8542
#, gcc-internal-format
msgid "cannot declare %s to qualified function type %qT"
msgstr ""
-#: cp/decl.c:8512
+#: cp/decl.c:8579
#, gcc-internal-format
msgid ""
"cannot declare reference to %q#T, which is not a typedef or a template type "
"argument"
msgstr ""
-#: cp/decl.c:8556
+#: cp/decl.c:8623
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:8607
+#: cp/decl.c:8674
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:8612
+#: cp/decl.c:8679
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:8644
+#: cp/decl.c:8711
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:8661
+#: cp/decl.c:8720
+#, gcc-internal-format
+msgid "a constexpr function cannot be defined outside of its class."
+msgstr ""
+
+#: cp/decl.c:8734
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:8684
+#: cp/decl.c:8757
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:8694
+#: cp/decl.c:8767
#, gcc-internal-format
msgid "size of array %qs is too large"
msgstr ""
-#: cp/decl.c:8705
+#: cp/decl.c:8778
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:8707
+#: cp/decl.c:8780
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:8715
+#: cp/decl.c:8788
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:8723
+#: cp/decl.c:8796
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8728
+#: cp/decl.c:8801
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8734
+#: cp/decl.c:8807
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8739
+#: cp/decl.c:8812
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8744
+#: cp/decl.c:8817
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8781
+#: cp/decl.c:8855
#, gcc-internal-format
-msgid "%Jtypedef name may not be a nested-name-specifier"
+msgid "typedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:8799
+#: cp/decl.c:8873
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:8887
+#: cp/decl.c:8965
#, gcc-internal-format
msgid ""
"qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:8889
+#: cp/decl.c:8967
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr ""
-#: cp/decl.c:8915
+#: cp/decl.c:8993
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:8920
+#: cp/decl.c:8998
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:8928
+#: cp/decl.c:9006
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:8930
+#: cp/decl.c:9008
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:8934
+#: cp/decl.c:9012
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:8947
+#: cp/decl.c:9025
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:8965
+#: cp/decl.c:9043
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:8975
+#: cp/decl.c:9053
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9004
+#: cp/decl.c:9082
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:9050
+#: cp/decl.c:9128
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr ""
-#: cp/decl.c:9065
+#: cp/decl.c:9143
#, gcc-internal-format
msgid "can't make %qD into a method -- not in a class"
msgstr ""
-#: cp/decl.c:9074
+#: cp/decl.c:9152
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr ""
-#: cp/decl.c:9083
+#: cp/decl.c:9161
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:9101
+#: cp/decl.c:9179
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:9108
+#: cp/decl.c:9186
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr ""
-#: cp/decl.c:9115
+#: cp/decl.c:9191
+#, gcc-internal-format
+msgid "a destructor cannot be %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:9195
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:9178
+#: cp/decl.c:9259
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr ""
-#: cp/decl.c:9180
+#: cp/decl.c:9261
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr ""
-#: cp/decl.c:9189
+#: cp/decl.c:9270
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr ""
-#: cp/decl.c:9198
+#: cp/decl.c:9279
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
@@ -30986,127 +32287,132 @@ 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:9250
+#: cp/decl.c:9332
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member %qD"
msgstr ""
-#: cp/decl.c:9252
+#: cp/decl.c:9334
#, gcc-internal-format
msgid "making %qD static"
msgstr ""
-#: cp/decl.c:9317
+#: cp/decl.c:9368
+#, gcc-internal-format
+msgid "non-static data member %qE declared %<constexpr%>"
+msgstr ""
+
+#: cp/decl.c:9403
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9319
+#: cp/decl.c:9405
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9321
+#: cp/decl.c:9407
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9333
+#: cp/decl.c:9419
#, gcc-internal-format
msgid ""
"%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:9337
+#: cp/decl.c:9423
#, gcc-internal-format
msgid ""
"%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:9344
+#: cp/decl.c:9430
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:9352
+#: cp/decl.c:9438
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:9359
+#: cp/decl.c:9445
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr ""
-#: cp/decl.c:9392
+#: cp/decl.c:9478
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:9399
+#: cp/decl.c:9485
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:9429
+#: cp/decl.c:9515
#, gcc-internal-format
msgid ""
"%<static%> may not be used when defining (as opposed to declaring) a static "
"data member"
msgstr ""
-#: cp/decl.c:9436
+#: cp/decl.c:9522
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:9442
+#: cp/decl.c:9528
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:9456
+#: cp/decl.c:9542
#, gcc-internal-format
msgid "%qs initialized and declared %<extern%>"
msgstr ""
-#: cp/decl.c:9460
+#: cp/decl.c:9546
#, gcc-internal-format
msgid "%qs has both %<extern%> and initializer"
msgstr ""
-#: cp/decl.c:9586
+#: cp/decl.c:9673
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr ""
-#: cp/decl.c:9589
+#: cp/decl.c:9676
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:9605
+#: cp/decl.c:9692
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr ""
-#: cp/decl.c:9688
+#: cp/decl.c:9776
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr ""
-#: cp/decl.c:9708
+#: cp/decl.c:9804
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr ""
-#: cp/decl.c:9732
+#: cp/decl.c:9828
#, gcc-internal-format
msgid "parameter %qD includes %s to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:9747
+#: cp/decl.c:9843
#, gcc-internal-format
msgid "parameter packs must be at the end of the parameter list"
msgstr ""
@@ -31126,139 +32432,139 @@ 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:9970
+#: cp/decl.c:10071
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:10092
+#: cp/decl.c:10193
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:10097
+#: cp/decl.c:10198
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr ""
-#: cp/decl.c:10123
+#: cp/decl.c:10224
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:10132
+#: cp/decl.c:10233
#, gcc-internal-format
msgid ""
"%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:10154
+#: cp/decl.c:10255
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:10195
+#: cp/decl.c:10296
#, gcc-internal-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:10203
+#: cp/decl.c:10304
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:10208
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:10259
+#: cp/decl.c:10360
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:10262
+#: cp/decl.c:10363
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:10270
+#: cp/decl.c:10371
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:10272
+#: cp/decl.c:10373
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:10294
+#: cp/decl.c:10395
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:10300
+#: cp/decl.c:10401
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:10309
+#: cp/decl.c:10410
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:10311 cp/decl.c:10320
+#: cp/decl.c:10412 cp/decl.c:10421
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:10322
+#: cp/decl.c:10423
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:10331
+#: cp/decl.c:10432
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:10345
+#: cp/decl.c:10446
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:10356 cp/decl.c:10361
+#: cp/decl.c:10457 cp/decl.c:10462
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:10419
+#: cp/decl.c:10520
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:10434
+#: cp/decl.c:10535
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:10435
+#: cp/decl.c:10536
#, gcc-internal-format
msgid "%q+D has a previous declaration here"
msgstr ""
-#: cp/decl.c:10443
+#: cp/decl.c:10544
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:10444 cp/decl.c:10451
+#: cp/decl.c:10545 cp/decl.c:10552
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr ""
-#: cp/decl.c:10450
+#: cp/decl.c:10551
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -31270,77 +32576,78 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:10465
+#: cp/decl.c:10566
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:10513 cp/name-lookup.c:2807
+#: cp/decl.c:10614 cp/name-lookup.c:2818
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:10543 cp/name-lookup.c:2315
+#: cp/decl.c:10644 cp/name-lookup.c:2323 cp/parser.c:4202 cp/parser.c:15645
+#: cp/parser.c:17996
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr ""
-#: cp/decl.c:10657
+#: cp/decl.c:10758
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr ""
-#: cp/decl.c:10678
+#: cp/decl.c:10779
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr ""
-#: cp/decl.c:10679
+#: cp/decl.c:10780
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr ""
-#: cp/decl.c:10793
+#: cp/decl.c:10894
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:10802
+#: cp/decl.c:10903
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:10813
+#: cp/decl.c:10914
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:10833
+#: cp/decl.c:10934
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:10866
+#: cp/decl.c:10967
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:10868
+#: cp/decl.c:10969
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr ""
-#: cp/decl.c:10952
+#: cp/decl.c:11053
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr ""
-#: cp/decl.c:10953
+#: cp/decl.c:11055
#, gcc-internal-format
-msgid "%Jprevious definition here"
+msgid "previous definition here"
msgstr ""
-#: cp/decl.c:11000
+#: cp/decl.c:11102
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -31349,210 +32656,220 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:11132
+#: cp/decl.c:11236
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:11263
+#: cp/decl.c:11368
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr ""
-#: cp/decl.c:11295
+#: cp/decl.c:11400
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:11315
+#: cp/decl.c:11420
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:11412
+#: cp/decl.c:11521
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr ""
-#: cp/decl.c:11414
+#: cp/decl.c:11523
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:11539 cp/typeck.c:6977
+#: cp/decl.c:11648 cp/typeck.c:7142
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:11854
+#: cp/decl.c:11743
+#, gcc-internal-format
+msgid "no previous declaration for %q+D"
+msgstr ""
+
+#: cp/decl.c:11964
#, gcc-internal-format
msgid "invalid function declaration"
msgstr ""
-#: cp/decl.c:11938
+#: cp/decl.c:12048
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr ""
-#: cp/decl.c:12440
+#: cp/decl.c:12547
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:12455
+#: cp/decl.c:12562
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
-#: cp/decl.c:12702
+#: cp/decl.c:12746
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
-#: cp/decl2.c:270
+#: cp/decl2.c:277
#, gcc-internal-format
msgid "name missing for member function"
msgstr ""
-#: cp/decl2.c:341 cp/decl2.c:355
+#: cp/decl2.c:348 cp/decl2.c:362
#, gcc-internal-format
msgid "ambiguous conversion for array subscript"
msgstr ""
-#: cp/decl2.c:349
+#: cp/decl2.c:356
#, gcc-internal-format
msgid "invalid types %<%T[%T]%> for array subscript"
msgstr ""
-#: cp/decl2.c:392
+#: cp/decl2.c:399
#, gcc-internal-format
msgid "deleting array %q#D"
msgstr ""
-#: cp/decl2.c:398
+#: cp/decl2.c:405
#, gcc-internal-format
msgid "type %q#T argument given to %<delete%>, expected pointer"
msgstr ""
-#: cp/decl2.c:410
+#: cp/decl2.c:417
#, gcc-internal-format
msgid ""
"cannot delete a function. Only pointer-to-objects are valid arguments to %"
"<delete%>"
msgstr ""
-#: cp/decl2.c:418
+#: cp/decl2.c:425
#, gcc-internal-format
msgid "deleting %qT is undefined"
msgstr ""
-#: cp/decl2.c:461 cp/pt.c:3849
+#: cp/decl2.c:468 cp/pt.c:4210
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr ""
-#: cp/decl2.c:513
+#: cp/decl2.c:520
#, gcc-internal-format
msgid "Java method %qD has non-Java return type %qT"
msgstr ""
-#: cp/decl2.c:530
+#: cp/decl2.c:537
#, gcc-internal-format
msgid "Java method %qD has non-Java parameter type %qT"
msgstr ""
-#: cp/decl2.c:579
+#: cp/decl2.c:586
#, gcc-internal-format
msgid ""
"template parameter lists provided don't match the template parameters of %qD"
msgstr ""
-#: cp/decl2.c:647
+#: cp/decl2.c:654
#, gcc-internal-format
msgid "prototype for %q#D does not match any in class %qT"
msgstr ""
-#: cp/decl2.c:727
+#: cp/decl2.c:730
#, gcc-internal-format
msgid "local class %q#T shall not have static data member %q#D"
msgstr ""
-#: cp/decl2.c:735
+#: cp/decl2.c:738
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl2.c:738
+#: cp/decl2.c:741
#, gcc-internal-format
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl2.c:798
+#: cp/decl2.c:802
+#, gcc-internal-format
+msgid "explicit template argument list not allowed"
+msgstr ""
+
+#: cp/decl2.c:808
#, gcc-internal-format
msgid "member %qD conflicts with virtual function table field name"
msgstr ""
-#: cp/decl2.c:831
+#: cp/decl2.c:844
#, gcc-internal-format
msgid "%qD is already defined in %qT"
msgstr ""
-#: cp/decl2.c:869
+#: cp/decl2.c:882
#, gcc-internal-format
msgid "initializer specified for static member function %qD"
msgstr ""
-#: cp/decl2.c:892
+#: cp/decl2.c:905
#, gcc-internal-format
msgid "field initializer is not constant"
msgstr ""
-#: cp/decl2.c:919
+#: cp/decl2.c:932
#, gcc-internal-format
msgid "%<asm%> specifiers are not permitted on non-static data members"
msgstr ""
-#: cp/decl2.c:971
+#: cp/decl2.c:984
#, gcc-internal-format
msgid "bit-field %qD with non-integral type"
msgstr ""
-#: cp/decl2.c:977
+#: cp/decl2.c:990
#, gcc-internal-format
msgid "cannot declare %qD to be a bit-field type"
msgstr ""
-#: cp/decl2.c:987
+#: cp/decl2.c:1000
#, gcc-internal-format
msgid "cannot declare bit-field %qD with function type"
msgstr ""
-#: cp/decl2.c:994
+#: cp/decl2.c:1007
#, gcc-internal-format
msgid "%qD is already defined in the class %qT"
msgstr ""
-#: cp/decl2.c:1001
+#: cp/decl2.c:1014
#, gcc-internal-format
msgid "static member %qD cannot be a bit-field"
msgstr ""
-#: cp/decl2.c:1256
+#: cp/decl2.c:1269
#, gcc-internal-format
msgid "anonymous struct not inside named type"
msgstr ""
-#: cp/decl2.c:1340
+#: cp/decl2.c:1354
#, gcc-internal-format
msgid "namespace-scope anonymous aggregates must be static"
msgstr ""
-#: cp/decl2.c:1349
+#: cp/decl2.c:1363
#, gcc-internal-format
msgid "anonymous union with no members"
msgstr ""
-#: cp/decl2.c:1386
+#: cp/decl2.c:1400
#, gcc-internal-format
msgid "%<operator new%> must return type %qT"
msgstr ""
@@ -31561,62 +32878,78 @@ msgstr ""
#.
#. The first parameter shall not have an associated default
#. argument.
-#: cp/decl2.c:1397
+#: cp/decl2.c:1411
#, gcc-internal-format
msgid "the first parameter of %<operator new%> cannot have a default argument"
msgstr ""
-#: cp/decl2.c:1413
+#: cp/decl2.c:1427
#, gcc-internal-format
msgid "%<operator new%> takes type %<size_t%> (%qT) as first parameter"
msgstr ""
-#: cp/decl2.c:1442
+#: cp/decl2.c:1456
#, gcc-internal-format
msgid "%<operator delete%> must return type %qT"
msgstr ""
-#: cp/decl2.c:1451
+#: cp/decl2.c:1465
#, gcc-internal-format
msgid "%<operator delete%> takes type %qT as first parameter"
msgstr ""
-#: cp/decl2.c:2142
+#: cp/decl2.c:2186
#, gcc-internal-format
msgid "%qT has a field %qD whose type uses the anonymous namespace"
msgstr ""
-#: cp/decl2.c:2149
+#: cp/decl2.c:2193
#, gcc-internal-format
msgid "%qT declared with greater visibility than the type of its field %qD"
msgstr ""
-#: cp/decl2.c:2162
+#: cp/decl2.c:2206
#, gcc-internal-format
msgid "%qT has a base %qT whose type uses the anonymous namespace"
msgstr ""
-#: cp/decl2.c:2168
+#: cp/decl2.c:2212
#, gcc-internal-format
msgid "%qT declared with greater visibility than its base %qT"
msgstr ""
-#: cp/decl2.c:3602
+#: cp/decl2.c:3427
+#, gcc-internal-format
+msgid "%q+#D, declared using anonymous type, is used but never defined"
+msgstr ""
+
+#: cp/decl2.c:3430
+#, gcc-internal-format
+msgid ""
+"%q+#D does not refer to the unqualified type, so it is not used for linkage"
+msgstr ""
+
+#: cp/decl2.c:3434
+#, gcc-internal-format
+msgid "%q+#D, declared using local type %qT, is used but never defined"
+msgstr ""
+
+#: cp/decl2.c:3714
#, gcc-internal-format
msgid "inline function %q+D used but never defined"
msgstr ""
-#: cp/decl2.c:3751
+#: cp/decl2.c:3880
#, gcc-internal-format
msgid "default argument missing for parameter %P of %q+#D"
msgstr ""
-#: cp/decl2.c:3800 cp/search.c:1912
+#: cp/decl2.c:3931 cp/search.c:1912
#, gcc-internal-format
msgid "deleted function %q+D"
msgstr ""
-#: cp/decl2.c:3801
+#: cp/decl2.c:3932
#, gcc-internal-format
msgid "used here"
msgstr ""
@@ -31624,67 +32957,67 @@ msgstr ""
#. We really want to suppress this warning in system headers,
#. because libstdc++ uses variadic templates even when we aren't
#. in C++0x mode.
-#: cp/error.c:2825
+#: cp/error.c:2885
#, gcc-internal-format
msgid "%s only available with -std=c++0x or -std=gnu++0x"
msgstr ""
#. Can't throw a reference.
-#: cp/except.c:286
+#: cp/except.c:277
#, gcc-internal-format
msgid "type %qT is disallowed in Java %<throw%> or %<catch%>"
msgstr ""
-#: cp/except.c:297
+#: cp/except.c:288
#, gcc-internal-format
msgid "call to Java %<catch%> or %<throw%> with %<jthrowable%> undefined"
msgstr ""
#. Thrown object must be a Throwable.
-#: cp/except.c:304
+#: cp/except.c:295
#, gcc-internal-format
msgid "type %qT is not derived from %<java::lang::Throwable%>"
msgstr ""
-#: cp/except.c:368
+#: cp/except.c:357
#, gcc-internal-format
msgid "mixing C++ and Java catches in a single translation unit"
msgstr ""
-#: cp/except.c:639
+#: cp/except.c:629
#, gcc-internal-format
msgid "throwing NULL, which has integral, not pointer type"
msgstr ""
-#: cp/except.c:662 cp/init.c:1895
+#: cp/except.c:652 cp/init.c:1886
#, gcc-internal-format
msgid "%qD should never be overloaded"
msgstr ""
-#: cp/except.c:759
+#: cp/except.c:750
#, gcc-internal-format
msgid " in thrown expression"
msgstr ""
-#: cp/except.c:915
+#: cp/except.c:906
#, gcc-internal-format
msgid ""
"expression %qE of abstract class type %qT cannot be used in throw-expression"
msgstr ""
-#: cp/except.c:1000
+#: cp/except.c:992
#, gcc-internal-format
-msgid "%Hexception of type %qT will be caught"
+msgid "exception of type %qT will be caught"
msgstr ""
-#: cp/except.c:1002
+#: cp/except.c:995
#, gcc-internal-format
-msgid "%H by earlier handler for %qT"
+msgid " by earlier handler for %qT"
msgstr ""
-#: cp/except.c:1032
+#: cp/except.c:1024
#, gcc-internal-format
-msgid "%H%<...%> handler must be the last handler for its try block"
+msgid "%<...%> handler must be the last handler for its try block"
msgstr ""
#: cp/friend.c:156
@@ -31773,238 +33106,242 @@ msgid ""
"already been declared and add <> after the function name here) "
msgstr ""
-#: cp/init.c:351
+#: cp/init.c:352
#, gcc-internal-format
msgid "value-initialization of reference"
msgstr ""
-#: cp/init.c:429
+#: cp/init.c:431
#, gcc-internal-format
-msgid "%J%qD should be initialized in the member initialization list"
+msgid "%qD should be initialized in the member initialization list"
msgstr ""
-#: cp/init.c:454
+#: cp/init.c:457
#, gcc-internal-format
-msgid "%Jvalue-initialization of %q#D, which has reference type"
+msgid "value-initialization of %q#D, which has reference type"
msgstr ""
-#. TYPE_NEEDS_CONSTRUCTING can be set just because we have a
-#. vtable; still give this diagnostic.
-#: cp/init.c:495 cp/init.c:510
+#: cp/init.c:498 cp/init.c:515
#, gcc-internal-format
-msgid "%Juninitialized member %qD with %<const%> type %qT"
+msgid "uninitialized member %qD with %<const%> type %qT"
msgstr ""
-#: cp/init.c:507
+#: cp/init.c:511
#, gcc-internal-format
-msgid "%Juninitialized reference member %qD"
+msgid "uninitialized reference member %qD"
msgstr ""
-#: cp/init.c:655
+#: cp/init.c:660
#, gcc-internal-format
msgid "%q+D will be initialized after"
msgstr ""
-#: cp/init.c:658
+#: cp/init.c:663
#, gcc-internal-format
msgid "base %qT will be initialized after"
msgstr ""
-#: cp/init.c:661
+#: cp/init.c:666
#, gcc-internal-format
msgid " %q+#D"
msgstr ""
-#: cp/init.c:663
+#: cp/init.c:668
#, gcc-internal-format
msgid " base %qT"
msgstr ""
-#: cp/init.c:664
+#: cp/init.c:670
#, gcc-internal-format
-msgid "%J when initialized here"
+msgid " when initialized here"
msgstr ""
-#: cp/init.c:680
+#: cp/init.c:687
#, gcc-internal-format
-msgid "%Jmultiple initializations given for %qD"
+msgid "multiple initializations given for %qD"
msgstr ""
-#: cp/init.c:683
+#: cp/init.c:691
#, gcc-internal-format
-msgid "%Jmultiple initializations given for base %qT"
+msgid "multiple initializations given for base %qT"
msgstr ""
-#: cp/init.c:750
+#: cp/init.c:759
#, gcc-internal-format
-msgid "%Jinitializations for multiple members of %qT"
+msgid "initializations for multiple members of %qT"
msgstr ""
-#: cp/init.c:813
+#: cp/init.c:823
#, gcc-internal-format
msgid ""
-"%Jbase class %q#T should be explicitly initialized in the copy constructor"
+"base class %q#T should be explicitly initialized in the copy constructor"
msgstr ""
-#: cp/init.c:1036 cp/init.c:1055
+#: cp/init.c:1047 cp/init.c:1066
#, gcc-internal-format
msgid "class %qT does not have any field named %qD"
msgstr ""
-#: cp/init.c:1042
+#: cp/init.c:1053
#, gcc-internal-format
msgid ""
"%q#D is a static data member; it can only be initialized at its definition"
msgstr ""
-#: cp/init.c:1049
+#: cp/init.c:1060
#, gcc-internal-format
msgid "%q#D is not a non-static data member of %qT"
msgstr ""
-#: cp/init.c:1088
+#: cp/init.c:1099
#, gcc-internal-format
msgid "unnamed initializer for %qT, which has no base classes"
msgstr ""
-#: cp/init.c:1096
+#: cp/init.c:1107
#, gcc-internal-format
msgid "unnamed initializer for %qT, which uses multiple inheritance"
msgstr ""
-#: cp/init.c:1142
+#: cp/init.c:1153
#, gcc-internal-format
msgid "%qD is both a direct base and an indirect virtual base"
msgstr ""
-#: cp/init.c:1150
+#: cp/init.c:1161
#, gcc-internal-format
msgid "type %qT is not a direct or virtual base of %qT"
msgstr ""
-#: cp/init.c:1153
+#: cp/init.c:1164
#, gcc-internal-format
msgid "type %qT is not a direct base of %qT"
msgstr ""
-#: cp/init.c:1234
+#: cp/init.c:1245
#, gcc-internal-format
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1440 cp/semantics.c:2536
+#: cp/init.c:1456 cp/semantics.c:2561
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr ""
-#: cp/init.c:1494
+#: cp/init.c:1510
#, gcc-internal-format
msgid "incomplete type %qT does not have member %qD"
msgstr ""
-#: cp/init.c:1507
+#: cp/init.c:1523
#, gcc-internal-format
msgid "invalid pointer to bit-field %qD"
msgstr ""
-#: cp/init.c:1585
+#: cp/init.c:1601
#, gcc-internal-format
msgid "invalid use of non-static member function %qD"
msgstr ""
-#: cp/init.c:1591
+#: cp/init.c:1607
#, gcc-internal-format
msgid "invalid use of non-static data member %qD"
msgstr ""
-#: cp/init.c:1851
+#: cp/init.c:1833
#, gcc-internal-format
msgid "invalid type %<void%> for new"
msgstr ""
-#: cp/init.c:1864
+#: cp/init.c:1846
#, gcc-internal-format
msgid "uninitialized const in %<new%> of %q#T"
msgstr ""
-#: cp/init.c:1889
+#: cp/init.c:1880
#, gcc-internal-format
msgid "call to Java constructor with %qs undefined"
msgstr ""
-#: cp/init.c:1907
+#: cp/init.c:1898
#, gcc-internal-format
msgid "Java class %q#T object allocated using placement new"
msgstr ""
-#: cp/init.c:1937
+#: cp/init.c:1928
#, gcc-internal-format
msgid "no suitable %qD found in class %qT"
msgstr ""
-#: cp/init.c:1944
+#: cp/init.c:1935
#, gcc-internal-format
msgid "request for member %qD is ambiguous"
msgstr ""
-#: cp/init.c:2123
+#: cp/init.c:2125
+#, gcc-internal-format
+msgid ""
+"non-constant array size in new, unable to verify length of initializer-list"
+msgstr ""
+
+#: cp/init.c:2134
#, gcc-internal-format
msgid "ISO C++ forbids initialization in array new"
msgstr ""
-#: cp/init.c:2347
+#: cp/init.c:2360
#, gcc-internal-format
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:2360
+#: cp/init.c:2373
#, gcc-internal-format
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2369
+#: cp/init.c:2382
#, gcc-internal-format
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2408
+#: cp/init.c:2426
#, gcc-internal-format
msgid "call to Java constructor, while %<jclass%> undefined"
msgstr ""
-#: cp/init.c:2426
+#: cp/init.c:2444
#, gcc-internal-format
msgid "can't find %<class$%> in %qT"
msgstr ""
-#: cp/init.c:2801
+#: cp/init.c:2833
#, gcc-internal-format
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:2859
+#: cp/init.c:2891
#, gcc-internal-format
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3008
+#: cp/init.c:3040
#, gcc-internal-format
msgid "possible problem detected in invocation of delete operator:"
msgstr ""
-#: cp/init.c:3012
+#: cp/init.c:3044
#, gcc-internal-format
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:3034
+#: cp/init.c:3066
#, gcc-internal-format
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3288
+#: cp/init.c:3321
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr ""
@@ -32054,46 +33391,46 @@ 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:488
+#: cp/lex.c:489
#, gcc-internal-format
msgid ""
"there are no arguments to %qD that depend on a template parameter, so a "
"declaration of %qD must be available"
msgstr ""
-#: cp/lex.c:497
+#: cp/lex.c:498
#, gcc-internal-format
msgid ""
"(if you use %<-fpermissive%>, G++ will accept your code, but allowing the "
"use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:1689
+#: cp/mangle.c:1897
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:1902
+#: cp/mangle.c:2116
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2331
+#: cp/mangle.c:2544
#, gcc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2386
+#: cp/mangle.c:2599
#, gcc-internal-format
msgid "mangling new-expression"
msgstr ""
-#: cp/mangle.c:2406
+#: cp/mangle.c:2619
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2721
+#: cp/mangle.c:2932
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
@@ -32103,29 +33440,29 @@ msgstr ""
msgid "generic thunk code fails for method %q#D which uses %<...%>"
msgstr ""
-#: cp/method.c:697
+#: cp/method.c:704
#, gcc-internal-format
msgid "non-static const member %q#D, can't use default assignment operator"
msgstr ""
-#: cp/method.c:703
+#: cp/method.c:710
#, gcc-internal-format
msgid "non-static reference member %q#D, can't use default assignment operator"
msgstr ""
-#: cp/method.c:816
+#: cp/method.c:823
#, gcc-internal-format
msgid "synthesized method %qD first required here "
msgstr ""
-#: cp/method.c:1159
+#: cp/method.c:1172
#, gcc-internal-format
msgid ""
"vtable layout for class %qT may not be ABI-compliantand may change in a "
"future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:733
+#: cp/name-lookup.c:728
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr ""
@@ -32136,58 +33473,58 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:763
+#: cp/name-lookup.c:758
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr ""
-#: cp/name-lookup.c:764
+#: cp/name-lookup.c:759
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:810 cp/name-lookup.c:821
+#: cp/name-lookup.c:805 cp/name-lookup.c:816
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr ""
-#: cp/name-lookup.c:814
+#: cp/name-lookup.c:809
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr ""
-#: cp/name-lookup.c:905
+#: cp/name-lookup.c:900
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr ""
-#: cp/name-lookup.c:906
+#: cp/name-lookup.c:901
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr ""
-#: cp/name-lookup.c:997
+#: cp/name-lookup.c:992
#, gcc-internal-format
msgid "extern declaration of %q#D doesn't match"
msgstr ""
-#: cp/name-lookup.c:998
+#: cp/name-lookup.c:993
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:1040 cp/name-lookup.c:1047
+#: cp/name-lookup.c:1035 cp/name-lookup.c:1043
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr ""
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1072
+#: cp/name-lookup.c:1069
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1078
+#: cp/name-lookup.c:1076
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr ""
@@ -32227,776 +33564,710 @@ msgstr ""
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1246 cp/parser.c:10152
+#: cp/name-lookup.c:1246 cp/parser.c:10818
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1302
+#: cp/name-lookup.c:1301
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1305
+#: cp/name-lookup.c:1304
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1433
-#, gcc-internal-format
-msgid "XXX is_class_level != (current_scope == class_scope)\n"
-msgstr ""
-
-#: cp/name-lookup.c:2028
+#: cp/name-lookup.c:2036
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr ""
-#: cp/name-lookup.c:2045
+#: cp/name-lookup.c:2053
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr ""
-#: cp/name-lookup.c:2068
+#: cp/name-lookup.c:2076
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:2069
+#: cp/name-lookup.c:2077
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2147 cp/name-lookup.c:2172
+#: cp/name-lookup.c:2155 cp/name-lookup.c:2180
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr ""
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2157
+#: cp/name-lookup.c:2165
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2164
+#: cp/name-lookup.c:2172
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2200
+#: cp/name-lookup.c:2208
#, gcc-internal-format
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:2236 cp/name-lookup.c:2273 cp/name-lookup.c:2307
-#: cp/name-lookup.c:2322
+#: cp/name-lookup.c:2244 cp/name-lookup.c:2281 cp/name-lookup.c:2315
+#: cp/name-lookup.c:2330
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:2926
+#: cp/name-lookup.c:2937
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:2933
+#: cp/name-lookup.c:2944
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:2938
+#: cp/name-lookup.c:2949
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:2943
+#: cp/name-lookup.c:2954
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:2993
+#: cp/name-lookup.c:3004
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3061
+#: cp/name-lookup.c:3072
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3069
+#: cp/name-lookup.c:3080
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr ""
-#: cp/name-lookup.c:3112
+#: cp/name-lookup.c:3123
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3157
+#: cp/name-lookup.c:3168
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr ""
-#: cp/name-lookup.c:3164
+#: cp/name-lookup.c:3175
#, gcc-internal-format
msgid ""
"%qD attribute is meaningless since members of the anonymous namespace get "
"local symbols"
msgstr ""
-#: cp/name-lookup.c:3173 cp/name-lookup.c:3543
+#: cp/name-lookup.c:3184 cp/name-lookup.c:3554
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr ""
-#: cp/name-lookup.c:3218
+#: cp/name-lookup.c:3229
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3531
+#: cp/name-lookup.c:3542
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3535
+#: cp/name-lookup.c:3546
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4472
+#: cp/name-lookup.c:4516
#, gcc-internal-format
msgid "%q+D is not a function,"
msgstr ""
-#: cp/name-lookup.c:4473
+#: cp/name-lookup.c:4517
#, gcc-internal-format
msgid " conflict with %q+D"
msgstr ""
-#: cp/name-lookup.c:4918
+#: cp/name-lookup.c:4977
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5359
+#: cp/name-lookup.c:5422
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5368
+#: cp/name-lookup.c:5431
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
-#: cp/parser.c:431
+#: cp/parser.c:435
#, gcc-internal-format
msgid "identifier %qE will become a keyword in C++0x"
msgstr ""
-#: cp/parser.c:2078
+#: cp/parser.c:2098
#, gcc-internal-format
-msgid "%H%<#pragma%> is not allowed here"
+msgid "%<#pragma%> is not allowed here"
msgstr ""
-#: cp/parser.c:2109
+#: cp/parser.c:2129
#, gcc-internal-format
-msgid "%H%<%E::%E%> has not been declared"
+msgid "%<%E::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2112
+#: cp/parser.c:2132
#, gcc-internal-format
-msgid "%H%<::%E%> has not been declared"
+msgid "%<::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2115
+#: cp/parser.c:2135
#, gcc-internal-format
-msgid "%Hrequest for member %qE in non-class type %qT"
+msgid "request for member %qE in non-class type %qT"
msgstr ""
-#: cp/parser.c:2118
+#: cp/parser.c:2138
#, gcc-internal-format
-msgid "%H%<%T::%E%> has not been declared"
+msgid "%<%T::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2121
+#: cp/parser.c:2141
#, gcc-internal-format
-msgid "%H%qE has not been declared"
+msgid "%qE has not been declared"
msgstr ""
-#: cp/parser.c:2124
+#: cp/parser.c:2144
#, gcc-internal-format
-msgid "%H%<%E::%E%> %s"
+msgid "%<%E::%E%> %s"
msgstr ""
-#: cp/parser.c:2126
+#: cp/parser.c:2146
#, gcc-internal-format
-msgid "%H%<::%E%> %s"
+msgid "%<::%E%> %s"
msgstr ""
-#: cp/parser.c:2128
+#: cp/parser.c:2148
#, gcc-internal-format
-msgid "%H%qE %s"
+msgid "%qE %s"
msgstr ""
-#: cp/parser.c:2163
-#, gcc-internal-format
-msgid "%H%<long long long%> is too long for GCC"
-msgstr ""
-
-#: cp/parser.c:2166
+#: cp/parser.c:2186
#, gcc-internal-format
msgid "ISO C++ 1998 does not support %<long long%>"
msgstr ""
-#: cp/parser.c:2186
+#: cp/parser.c:2207
#, gcc-internal-format
-msgid "%Hduplicate %qs"
+msgid "duplicate %qs"
msgstr ""
-#: cp/parser.c:2230
+#: cp/parser.c:2252
#, gcc-internal-format
-msgid "%Hnew types may not be defined in a return type"
+msgid "new types may not be defined in a return type"
msgstr ""
-#: cp/parser.c:2232
+#: cp/parser.c:2254
#, gcc-internal-format
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr ""
-#: cp/parser.c:2252
+#: cp/parser.c:2274 cp/parser.c:4248 cp/pt.c:6030
#, gcc-internal-format
-msgid "%H%qT is not a template"
+msgid "%qT is not a template"
msgstr ""
-#: cp/parser.c:2254
+#: cp/parser.c:2276
#, gcc-internal-format
-msgid "%H%qE is not a template"
+msgid "%qE is not a template"
msgstr ""
-#: cp/parser.c:2256
+#: cp/parser.c:2278
#, gcc-internal-format
-msgid "%Hinvalid template-id"
+msgid "invalid template-id"
msgstr ""
-#: cp/parser.c:2318
+#: cp/parser.c:2341
#, gcc-internal-format
-msgid "%Hinvalid use of template-name %qE without an argument list"
+msgid "invalid use of template-name %qE without an argument list"
msgstr ""
-#: cp/parser.c:2321
+#: cp/parser.c:2344
#, gcc-internal-format
-msgid "%Hinvalid use of destructor %qD as a type"
+msgid "invalid use of destructor %qD as a type"
msgstr ""
#. Something like 'unsigned A a;'
-#: cp/parser.c:2324
+#: cp/parser.c:2347
#, gcc-internal-format
-msgid "%Hinvalid combination of multiple type-specifiers"
+msgid "invalid combination of multiple type-specifiers"
msgstr ""
#. Issue an error message.
-#: cp/parser.c:2329
+#: cp/parser.c:2351
#, gcc-internal-format
-msgid "%H%qE does not name a type"
+msgid "%qE does not name a type"
msgstr ""
-#: cp/parser.c:2362
+#: cp/parser.c:2384
#, gcc-internal-format
msgid "(perhaps %<typename %T::%E%> was intended)"
msgstr ""
-#: cp/parser.c:2377
+#: cp/parser.c:2399
#, gcc-internal-format
-msgid "%H%qE in namespace %qE does not name a type"
+msgid "%qE in namespace %qE does not name a type"
msgstr ""
-#: cp/parser.c:2380
+#: cp/parser.c:2402
#, gcc-internal-format
-msgid "%H%qE in class %qT does not name a type"
+msgid "%qE in class %qT does not name a type"
msgstr ""
-#: cp/parser.c:2944
+#: cp/parser.c:3182
#, gcc-internal-format
-msgid "%Hunsupported non-standard concatenation of string literals"
+msgid "fixed-point types not supported in C++"
msgstr ""
-#: cp/parser.c:3147
-#, gcc-internal-format
-msgid "%Hfixed-point types not supported in C++"
-msgstr ""
-
-#: cp/parser.c:3228
+#: cp/parser.c:3262
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:3239
+#: cp/parser.c:3274
#, gcc-internal-format
msgid ""
-"%Hstatement-expressions are not allowed outside functions nor in template-"
+"statement-expressions are not allowed outside functions nor in template-"
"argument lists"
msgstr ""
-#: cp/parser.c:3298
-#, gcc-internal-format
-msgid "%H%<this%> may not be used in this context"
-msgstr ""
-
-#: cp/parser.c:3507
+#: cp/parser.c:3347
#, gcc-internal-format
-msgid "%Hlocal variable %qD may not appear in this context"
+msgid "%<this%> may not be used in this context"
msgstr ""
-#: cp/parser.c:3807
+#: cp/parser.c:3558
#, gcc-internal-format
-msgid "%Hscope %qT before %<~%> is not a class-name"
+msgid "local variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:3921
+#: cp/parser.c:3852
#, gcc-internal-format
-msgid "%Hdeclaration of %<~%T%> as member of %qT"
+msgid "scope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:3935
+#: cp/parser.c:3967
#, gcc-internal-format
-msgid "%Htypedef-name %qD used as destructor declarator"
+msgid "declaration of %<~%T%> as member of %qT"
msgstr ""
-#: cp/parser.c:4149
+#: cp/parser.c:3982
#, gcc-internal-format
-msgid "%H%qD used without template parameters"
-msgstr ""
-
-#: cp/parser.c:4153 cp/parser.c:14879 cp/parser.c:17176
-#, gcc-internal-format
-msgid "%Hreference to %qD is ambiguous"
-msgstr ""
-
-#: cp/parser.c:4199 cp/pt.c:5660
-#, gcc-internal-format
-msgid "%qT is not a template"
+msgid "typedef-name %qD used as destructor declarator"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:4623
+#: cp/parser.c:4672
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:4996
+#: cp/parser.c:5050
#, gcc-internal-format
-msgid "%H%qE does not have class type"
+msgid "%qE does not have class type"
msgstr ""
-#: cp/parser.c:5080
+#: cp/parser.c:5135 cp/typeck.c:2121
#, gcc-internal-format
-msgid "%Hinvalid use of %qD"
+msgid "invalid use of %qD"
msgstr ""
-#: cp/parser.c:5659
+#: cp/parser.c:5718
#, gcc-internal-format
-msgid "%Harray bound forbidden after parenthesized type-id"
+msgid "array bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:5662
+#: cp/parser.c:5720
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:5855
+#: cp/parser.c:5924
#, gcc-internal-format
-msgid "%Hexpression in new-declarator must have integral or enumeration type"
+msgid "expression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:6111
+#: cp/parser.c:6178
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:6242
+#: cp/parser.c:6309
#, gcc-internal-format
-msgid "%H%<>>%> operator will be treated as two right angle brackets in C++0x"
+msgid "%<>>%> operator will be treated as two right angle brackets in C++0x"
msgstr ""
-#: cp/parser.c:6245
+#: cp/parser.c:6312
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:7082
-#, gcc-internal-format
-msgid "%Hcase label %qE not within a switch statement"
-msgstr ""
-
-#: cp/parser.c:7094
+#: cp/parser.c:7145
#, gcc-internal-format
-msgid "%Hcase label not within a switch statement"
+msgid "expected end of capture-list"
msgstr ""
-#: cp/parser.c:7212
+#: cp/parser.c:7196
#, gcc-internal-format
-msgid "%H%<else%> without a previous %<if%>"
+msgid "ISO C++ does not allow initializers in lambda expression capture lists"
msgstr ""
-#: cp/parser.c:7691
+#: cp/parser.c:7290
#, gcc-internal-format
-msgid "%Hbreak statement not within loop or switch"
+msgid "default argument specified for lambda parameter"
msgstr ""
-#: cp/parser.c:7699 cp/parser.c:7719
+#: cp/parser.c:7686
#, gcc-internal-format
-msgid "%Hinvalid exit from OpenMP structured block"
-msgstr ""
-
-#: cp/parser.c:7702
-#, gcc-internal-format
-msgid "%Hbreak statement used with OpenMP for loop"
-msgstr ""
-
-#: cp/parser.c:7712
-#, gcc-internal-format
-msgid "%Hcontinue statement not within a loop"
+msgid "case label %qE not within a switch statement"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:7755
+#: cp/parser.c:8383
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:7899 cp/parser.c:15753
+#: cp/parser.c:8528 cp/parser.c:16519
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:8120
+#: cp/parser.c:8749
#, gcc-internal-format
-msgid "%H%<__label__%> not at the beginning of a block"
+msgid "%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:8257
+#: cp/parser.c:8887
#, gcc-internal-format
-msgid "%Hmixing declarations and function-definitions is forbidden"
+msgid "mixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:8397
+#: cp/parser.c:9028
#, gcc-internal-format
-msgid "%H%<friend%> used outside of class"
+msgid "%<friend%> used outside of class"
msgstr ""
-#: cp/parser.c:8453
+#. Complain about `auto' as a storage specifier, if
+#. we're complaining about C++0x compatibility.
+#: cp/parser.c:9087
#, gcc-internal-format
-msgid "%H%<auto%> will change meaning in C++0x; please remove it"
+msgid "%<auto%> will change meaning in C++0x; please remove it"
msgstr ""
-#: cp/parser.c:8572
+#: cp/parser.c:9207
#, gcc-internal-format
-msgid "%Hclass definition may not be declared a friend"
+msgid "class definition may not be declared a friend"
msgstr ""
-#: cp/parser.c:8642 cp/parser.c:16075
+#: cp/parser.c:9276 cp/parser.c:16843
#, gcc-internal-format
-msgid "%Htemplates may not be %<virtual%>"
+msgid "templates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:9045
+#: cp/parser.c:9697
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr ""
-#: cp/parser.c:9129
+#: cp/parser.c:9782
#, gcc-internal-format
-msgid "%Honly constructors take base initializers"
+msgid "only constructors take base initializers"
msgstr ""
-#: cp/parser.c:9151
+#: cp/parser.c:9804
#, gcc-internal-format
-msgid "%Hcannot expand initializer for member %<%D%>"
+msgid "cannot expand initializer for member %<%D%>"
msgstr ""
-#: cp/parser.c:9206
+#: cp/parser.c:9859
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:9266
+#: cp/parser.c:9927
#, gcc-internal-format
msgid ""
-"%Hkeyword %<typename%> not allowed in this context (a qualified member "
+"keyword %<typename%> not allowed in this context (a qualified member "
"initializer is implicitly a type)"
msgstr ""
#. Warn that we do not support `export'.
-#: cp/parser.c:9612
+#: cp/parser.c:10272
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:9794 cp/parser.c:9892 cp/parser.c:9998
+#: cp/parser.c:10458 cp/parser.c:10557 cp/parser.c:10665 cp/parser.c:15222
#, gcc-internal-format
-msgid "%Htemplate parameter pack %qD cannot have a default argument"
+msgid "template parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:9797
+#: cp/parser.c:10462 cp/parser.c:15229
#, gcc-internal-format
-msgid "%Htemplate parameter pack cannot have a default argument"
+msgid "template parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:9895 cp/parser.c:10002
+#: cp/parser.c:10561 cp/parser.c:10669
#, gcc-internal-format
-msgid "%Htemplate parameter packs cannot have default arguments"
+msgid "template parameter packs cannot have default arguments"
msgstr ""
-#: cp/parser.c:10144
+#: cp/parser.c:10810
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:10148
+#: cp/parser.c:10814
#, gcc-internal-format
msgid ""
"%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
"and %<::%>"
msgstr ""
-#: cp/parser.c:10226
+#: cp/parser.c:10892
#, gcc-internal-format
-msgid "%Hparse error in template argument list"
+msgid "parse error in template argument list"
msgstr ""
#. Explain what went wrong.
-#: cp/parser.c:10341
+#: cp/parser.c:11006
#, gcc-internal-format
-msgid "%Hnon-template %qD used as template"
+msgid "non-template %qD used as template"
msgstr ""
-#: cp/parser.c:10343
+#: cp/parser.c:11008
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
-#: cp/parser.c:10476
+#: cp/parser.c:11142
#, gcc-internal-format
-msgid "%Hexpected parameter pack before %<...%>"
+msgid "expected parameter pack before %<...%>"
msgstr ""
-#: cp/parser.c:10886
+#: cp/parser.c:11551
#, gcc-internal-format
-msgid "%Htemplate specialization with C linkage"
+msgid "template specialization with C linkage"
msgstr ""
-#: cp/parser.c:11532
-#, gcc-internal-format
-msgid "using %<typename%> outside of template"
-msgstr ""
-
-#: cp/parser.c:11700
+#: cp/parser.c:12369
#, gcc-internal-format
msgid "declaration %qD does not declare anything"
msgstr ""
-#: cp/parser.c:11786
+#: cp/parser.c:12455
#, gcc-internal-format
msgid "attributes ignored on uninstantiated type"
msgstr ""
-#: cp/parser.c:11790
+#: cp/parser.c:12459
#, gcc-internal-format
msgid "attributes ignored on template instantiation"
msgstr ""
-#: cp/parser.c:11795
+#: cp/parser.c:12464
#, gcc-internal-format
msgid ""
"attributes ignored on elaborated-type-specifier that is not a forward "
"declaration"
msgstr ""
-#: cp/parser.c:12078
+#: cp/parser.c:12749
#, gcc-internal-format
-msgid "%H%qD is not a namespace-name"
+msgid "%qD is not a namespace-name"
msgstr ""
-#: cp/parser.c:12205
+#: cp/parser.c:12876
#, gcc-internal-format
-msgid "%H%<namespace%> definition is not allowed here"
+msgid "%<namespace%> definition is not allowed here"
msgstr ""
-#. [namespace.udecl]
-#.
-#. A using declaration shall not name a template-id.
-#: cp/parser.c:12345
+#: cp/parser.c:13017
#, gcc-internal-format
-msgid "%Ha template-id may not appear in a using-declaration"
+msgid "a template-id may not appear in a using-declaration"
msgstr ""
-#: cp/parser.c:12722
+#: cp/parser.c:13438
#, gcc-internal-format
-msgid "%Han asm-specification is not allowed on a function-definition"
+msgid "an asm-specification is not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:12726
+#: cp/parser.c:13442
#, gcc-internal-format
-msgid "%Hattributes are not allowed on a function-definition"
+msgid "attributes are not allowed on a function-definition"
msgstr ""
-#: cp/parser.c:12879
+#: cp/parser.c:13595
#, gcc-internal-format
-msgid "%Hinitializer provided for function"
+msgid "initializer provided for function"
msgstr ""
-#: cp/parser.c:12901
+#: cp/parser.c:13628
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
msgstr ""
-#: cp/parser.c:13306
+#: cp/parser.c:14027 cp/pt.c:9622
#, gcc-internal-format
-msgid "%Harray bound is not an integer constant"
+msgid "array bound is not an integer constant"
msgstr ""
-#: cp/parser.c:13418
+#: cp/parser.c:14146
#, gcc-internal-format
-msgid "%H%<%T::%E%> is not a type"
+msgid "%<%T::%E%> is not a type"
msgstr ""
-#: cp/parser.c:13445
+#: cp/parser.c:14173
#, gcc-internal-format
-msgid "%Hinvalid use of constructor as a template"
+msgid "invalid use of constructor as a template"
msgstr ""
-#: cp/parser.c:13447
+#: cp/parser.c:14175
#, gcc-internal-format
msgid ""
"use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified "
"name"
msgstr ""
-#: cp/parser.c:13620
+#: cp/parser.c:14349
#, gcc-internal-format
-msgid "%H%qD is a namespace"
+msgid "%qD is a namespace"
msgstr ""
-#: cp/parser.c:13695
+#: cp/parser.c:14424
#, gcc-internal-format
-msgid "%Hduplicate cv-qualifier"
+msgid "duplicate cv-qualifier"
msgstr ""
-#: cp/parser.c:13807
+#: cp/parser.c:14546
#, gcc-internal-format
msgid "invalid use of %<auto%>"
msgstr ""
-#: cp/parser.c:14392
+#: cp/parser.c:15155
#, gcc-internal-format
-msgid "%Hfile ends in default argument"
+msgid "file ends in default argument"
msgstr ""
-#: cp/parser.c:14438
+#: cp/parser.c:15201
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
msgstr ""
-#: cp/parser.c:14441
+#: cp/parser.c:15205
#, gcc-internal-format
-msgid "%Hdefault arguments are only permitted for function parameters"
+msgid "default arguments are only permitted for function parameters"
msgstr ""
-#: cp/parser.c:14459
-#, gcc-internal-format
-msgid "%H%sparameter pack %qD cannot have a default argument"
-msgstr ""
-
-#: cp/parser.c:14463
-#, gcc-internal-format
-msgid "%H%sparameter pack cannot have a default argument"
-msgstr ""
-
-#: cp/parser.c:14726
+#: cp/parser.c:15491
#, gcc-internal-format
msgid "ISO C++ does not allow designated initializers"
msgstr ""
-#: cp/parser.c:15345
+#: cp/parser.c:16111
#, gcc-internal-format
-msgid "%Hinvalid class name in declaration of %qD"
+msgid "invalid class name in declaration of %qD"
msgstr ""
-#: cp/parser.c:15358
+#: cp/parser.c:16125
#, gcc-internal-format
-msgid "%Hdeclaration of %qD in namespace %qD which does not enclose %qD"
+msgid "declaration of %qD in namespace %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:15363
+#: cp/parser.c:16130
#, gcc-internal-format
-msgid "%Hdeclaration of %qD in %qD which does not enclose %qD"
+msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
-#: cp/parser.c:15377
+#: cp/parser.c:16144
#, gcc-internal-format
-msgid "%Hextra qualification not allowed"
+msgid "extra qualification not allowed"
msgstr ""
-#: cp/parser.c:15389
+#: cp/parser.c:16156
#, gcc-internal-format
-msgid "%Han explicit specialization must be preceded by %<template <>%>"
+msgid "an explicit specialization must be preceded by %<template <>%>"
msgstr ""
-#: cp/parser.c:15419
+#: cp/parser.c:16186
#, gcc-internal-format
-msgid "%Hfunction template %qD redeclared as a class template"
+msgid "function template %qD redeclared as a class template"
msgstr ""
-#: cp/parser.c:15501
+#: cp/parser.c:16269
#, gcc-internal-format
-msgid "%Hredefinition of %q#T"
+msgid "previous definition of %q+#T"
msgstr ""
-#: cp/parser.c:15503
+#: cp/parser.c:16538
#, gcc-internal-format
-msgid "%Hprevious definition of %q+#T"
+msgid "a class-key must be used when declaring a friend"
msgstr ""
-#: cp/parser.c:15771
+#: cp/parser.c:16553
#, gcc-internal-format
-msgid "%Ha class-key must be used when declaring a friend"
+msgid "friend declaration does not name a class or function"
msgstr ""
-#: cp/parser.c:15786
+#: cp/parser.c:16735
#, gcc-internal-format
-msgid "%Hfriend declaration does not name a class or function"
+msgid "pure-specifier on function-definition"
msgstr ""
-#: cp/parser.c:15966
+#: cp/parser.c:17048
#, gcc-internal-format
-msgid "%Hpure-specifier on function-definition"
+msgid "keyword %<typename%> not allowed outside of templates"
msgstr ""
-#: cp/parser.c:16279
-#, gcc-internal-format
-msgid "%Hkeyword %<typename%> not allowed outside of templates"
-msgstr ""
-
-#: cp/parser.c:16282
+#: cp/parser.c:17051
#, gcc-internal-format
msgid ""
-"%Hkeyword %<typename%> not allowed in this context (the base class is "
+"keyword %<typename%> not allowed in this context (the base class is "
"implicitly a type)"
msgstr ""
-#: cp/parser.c:17365
+#: cp/parser.c:18185
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:17370
+#: cp/parser.c:18190
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr ""
@@ -33005,317 +34276,248 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:17377
+#: cp/parser.c:18197
#, gcc-internal-format
-msgid "%Htoo many template-parameter-lists"
+msgid "too many template-parameter-lists"
msgstr ""
-#. Issue an error message.
-#: cp/parser.c:17651
+#: cp/parser.c:18472
#, gcc-internal-format
-msgid "%Hnamed return values are no longer supported"
+msgid "named return values are no longer supported"
msgstr ""
-#. 14.5.2.2 [temp.mem]
-#.
-#. A local class shall not have member templates.
-#: cp/parser.c:17726
+#: cp/parser.c:18552
#, gcc-internal-format
-msgid "%Hinvalid declaration of member template in local class"
+msgid "invalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:17736
+#: cp/parser.c:18561
#, gcc-internal-format
-msgid "%Htemplate with C linkage"
+msgid "template with C linkage"
msgstr ""
-#: cp/parser.c:17883
+#: cp/parser.c:18709
#, gcc-internal-format
-msgid "%Htemplate declaration of %qs"
+msgid "template declaration of %<typedef%>"
msgstr ""
-#: cp/parser.c:17947
+#: cp/parser.c:18773
#, gcc-internal-format
-msgid "%Hexplicit template specialization cannot have a storage class"
+msgid "explicit template specialization cannot have a storage class"
msgstr ""
-#: cp/parser.c:18165
+#: cp/parser.c:18998
#, gcc-internal-format
-msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
+msgid "%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:18178
+#: cp/parser.c:19011
#, gcc-internal-format
-msgid "%Hspurious %<>>%>, use %<>%> to terminate a template argument list"
+msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:18512
+#: cp/parser.c:19354
#, gcc-internal-format
-msgid "%Hinvalid use of %qD in linkage specification"
+msgid "invalid use of %qD in linkage specification"
msgstr ""
-#: cp/parser.c:18525
+#: cp/parser.c:19367
#, gcc-internal-format
-msgid "%H%<__thread%> before %qD"
+msgid "%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:18846
+#: cp/parser.c:19688
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:18867
+#: cp/parser.c:19709
#, gcc-internal-format
-msgid "%H%qD redeclared with different access"
+msgid "%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:18885
+#: cp/parser.c:19728
#, gcc-internal-format
-msgid "%H%<template%> (as a disambiguator) is only allowed within templates"
+msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:19151 cp/parser.c:20078 cp/parser.c:20210
+#: cp/parser.c:19995 cp/parser.c:20923 cp/parser.c:21056
#, gcc-internal-format
-msgid "%Hmisplaced %<@%D%> Objective-C++ construct"
+msgid "misplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:19295
+#: cp/parser.c:20140
#, gcc-internal-format
-msgid "%H%<@encode%> must specify a type as an argument"
+msgid "%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:19611
+#: cp/parser.c:20456
#, gcc-internal-format
-msgid "%Hinvalid Objective-C++ selector name"
+msgid "invalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:19942
+#: cp/parser.c:20787
#, gcc-internal-format
-msgid "%Hidentifier expected after %<@protocol%>"
+msgid "identifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:20303
-#, gcc-internal-format
-msgid "%Htoo many %qs clauses"
-msgstr ""
-
-#: cp/parser.c:20417
-#, gcc-internal-format
-msgid "%Hcollapse argument needs positive constant integer expression"
-msgstr ""
-
-#: cp/parser.c:20706
-#, gcc-internal-format
-msgid "%Hschedule %<runtime%> does not take a %<chunk_size%> parameter"
-msgstr ""
-
-#: cp/parser.c:20709
-#, gcc-internal-format
-msgid "%Hschedule %<auto%> does not take a %<chunk_size%> parameter"
-msgstr ""
-
-#: cp/parser.c:20857
-#, gcc-internal-format
-msgid "%H%qs is not valid for %qs"
-msgstr ""
-
-#: cp/parser.c:21280
+#: cp/parser.c:22126
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:21405 cp/parser.c:21443
-#, gcc-internal-format
-msgid "%Hiteration variable %qD should not be firstprivate"
-msgstr ""
-
-#: cp/parser.c:21447
-#, gcc-internal-format
-msgid "%Hiteration variable %qD should not be reduction"
-msgstr ""
-
-#: cp/parser.c:21514
+#: cp/parser.c:22294 cp/pt.c:11021
#, gcc-internal-format
-msgid "%Hnot enough collapsed for loops"
-msgstr ""
-
-#: cp/parser.c:21560
-#, gcc-internal-format
-msgid "%Hcollapsed loops not perfectly nested"
-msgstr ""
-
-#: cp/parser.c:21971
-#, gcc-internal-format
-msgid "%Hjunk at end of %<#pragma GCC pch_preprocess%>"
-msgstr ""
-
-#: cp/parser.c:21975
-#, gcc-internal-format
-msgid "%Hexpected string literal"
-msgstr ""
-
-#: cp/parser.c:22008
-#, gcc-internal-format
-msgid "%H%<#pragma GCC pch_preprocess%> must be first"
-msgstr ""
-
-#: cp/parser.c:22019
-#, gcc-internal-format
-msgid "%H%<#pragma omp barrier%> may only be used in compound statements"
-msgstr ""
-
-#: cp/parser.c:22034
-#, gcc-internal-format
-msgid "%H%<#pragma omp flush%> may only be used in compound statements"
+msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:22049
+#: cp/parser.c:22361
#, gcc-internal-format
-msgid "%H%<#pragma omp taskwait%> may only be used in compound statements"
+msgid "not enough collapsed for loops"
msgstr ""
-#: cp/parser.c:22077
+#: cp/parser.c:22822
#, gcc-internal-format
-msgid ""
-"%H%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
-"construct"
+msgid "junk at end of %<#pragma GCC pch_preprocess%>"
msgstr ""
-#: cp/parser.c:22135
+#: cp/parser.c:22986
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
-#: cp/pt.c:254
+#: cp/pt.c:273
#, gcc-internal-format
msgid "data member %qD cannot be a member template"
msgstr ""
-#: cp/pt.c:266
+#: cp/pt.c:285
#, gcc-internal-format
msgid "invalid member template declaration %qD"
msgstr ""
-#: cp/pt.c:613
+#: cp/pt.c:636
#, gcc-internal-format
msgid "explicit specialization in non-namespace scope %qD"
msgstr ""
-#: cp/pt.c:627
+#: cp/pt.c:650
#, gcc-internal-format
msgid "enclosing class templates are not explicitly specialized"
msgstr ""
-#: cp/pt.c:715
+#: cp/pt.c:738
#, gcc-internal-format
msgid "specialization of %qD in different namespace"
msgstr ""
-#: cp/pt.c:716 cp/pt.c:817
+#: cp/pt.c:739 cp/pt.c:841
#, gcc-internal-format
msgid " from definition of %q+#D"
msgstr ""
-#: cp/pt.c:733
+#: cp/pt.c:756
#, gcc-internal-format
msgid ""
"explicit instantiation of %qD in namespace %qD (which does not enclose "
"namespace %qD)"
msgstr ""
-#: cp/pt.c:751
+#: cp/pt.c:774
#, gcc-internal-format
msgid "name of class shadows template template parameter %qD"
msgstr ""
-#: cp/pt.c:784
+#: cp/pt.c:807
#, gcc-internal-format
msgid "specialization of %qT after instantiation"
msgstr ""
-#: cp/pt.c:816
+#: cp/pt.c:840
#, gcc-internal-format
msgid "specializing %q#T in different namespace"
msgstr ""
-#: cp/pt.c:831
+#. But if we've had an implicit instantiation, that's a
+#. problem ([temp.expl.spec]/6).
+#: cp/pt.c:878
#, gcc-internal-format
msgid "specialization %qT after instantiation %qT"
msgstr ""
-#: cp/pt.c:844
+#: cp/pt.c:892
#, gcc-internal-format
msgid "explicit specialization of non-template %qT"
msgstr ""
-#: cp/pt.c:1252
+#: cp/pt.c:1308
#, gcc-internal-format
msgid "specialization of %qD after instantiation"
msgstr ""
-#: cp/pt.c:1474
+#: cp/pt.c:1718
#, gcc-internal-format
msgid "%qD is not a function template"
msgstr ""
-#: cp/pt.c:1683
+#: cp/pt.c:1927
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
msgstr ""
-#: cp/pt.c:1691
+#: cp/pt.c:1935
#, gcc-internal-format
msgid "ambiguous template specialization %qD for %q+D"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:1926 cp/pt.c:1980
+#: cp/pt.c:2171 cp/pt.c:2225
#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
msgstr ""
-#: cp/pt.c:1939
+#: cp/pt.c:2184
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:1945
+#: cp/pt.c:2190
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:1953
+#: cp/pt.c:2198
#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:1956
+#: cp/pt.c:2201
#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
msgstr ""
-#: cp/pt.c:1958
+#: cp/pt.c:2203
#, gcc-internal-format
msgid "explicit specialization of %qD must be introduced by %<template <>%>"
msgstr ""
-#: cp/pt.c:1977
+#: cp/pt.c:2222
#, gcc-internal-format
msgid "function template partial specialization %qD is not allowed"
msgstr ""
-#: cp/pt.c:2009
+#: cp/pt.c:2254
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:2039
+#: cp/pt.c:2284
#, gcc-internal-format
msgid "%qD is not a template function"
msgstr ""
-#: cp/pt.c:2047
+#: cp/pt.c:2292
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr ""
@@ -33328,104 +34530,104 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:2109
+#: cp/pt.c:2354
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:2153
+#: cp/pt.c:2398
#, gcc-internal-format
msgid "no member function %qD declared in %qT"
msgstr ""
-#: cp/pt.c:2634
+#: cp/pt.c:3000
#, gcc-internal-format
msgid "base initializer expansion %<%T%> contains no parameter packs"
msgstr ""
-#: cp/pt.c:2693
+#: cp/pt.c:3061
#, gcc-internal-format
msgid "expansion pattern %<%T%> contains no argument packs"
msgstr ""
-#: cp/pt.c:2695
+#: cp/pt.c:3063
#, gcc-internal-format
msgid "expansion pattern %<%E%> contains no argument packs"
msgstr ""
-#: cp/pt.c:2736
+#: cp/pt.c:3104
#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
msgstr ""
-#: cp/pt.c:2751 cp/pt.c:3372
+#: cp/pt.c:3119 cp/pt.c:3733
#, gcc-internal-format
msgid " %qD"
msgstr ""
-#: cp/pt.c:2753
+#: cp/pt.c:3121
#, gcc-internal-format
msgid " <anonymous>"
msgstr ""
-#: cp/pt.c:2861
+#: cp/pt.c:3229
#, gcc-internal-format
msgid "declaration of %q+#D"
msgstr ""
-#: cp/pt.c:2862
+#: cp/pt.c:3230
#, gcc-internal-format
msgid " shadows template parm %q+#D"
msgstr ""
-#: cp/pt.c:3368
+#: cp/pt.c:3729
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:3383
+#: cp/pt.c:3744
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:3428
+#: cp/pt.c:3789
#, gcc-internal-format
msgid ""
"parameter pack argument %qE must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:3430
+#: cp/pt.c:3791
#, gcc-internal-format
msgid ""
"parameter pack argument %qT must be at the end of the template argument list"
msgstr ""
-#: cp/pt.c:3451
+#: cp/pt.c:3812
#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
msgstr ""
-#: cp/pt.c:3495
+#: cp/pt.c:3856
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on template parameter(s)"
msgstr ""
-#: cp/pt.c:3603
+#: cp/pt.c:3963
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr ""
-#: cp/pt.c:3624
+#: cp/pt.c:3984
#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:3627
+#: cp/pt.c:3987
#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr ""
-#: cp/pt.c:3815
+#: cp/pt.c:4176
#, gcc-internal-format
msgid "template class without a name"
msgstr ""
@@ -33433,7 +34635,7 @@ msgstr ""
#. [temp.mem]
#.
#. A destructor shall not be a member template.
-#: cp/pt.c:3825
+#: cp/pt.c:4186
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr ""
@@ -33443,72 +34645,72 @@ msgstr ""
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
-#: cp/pt.c:3840
+#: cp/pt.c:4201
#, gcc-internal-format
msgid "invalid template declaration of %qD"
msgstr ""
-#: cp/pt.c:3957
+#: cp/pt.c:4318
#, gcc-internal-format
msgid "template definition of non-template %q#D"
msgstr ""
-#: cp/pt.c:4000
+#: cp/pt.c:4361
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
msgstr ""
-#: cp/pt.c:4012
+#: cp/pt.c:4373
#, gcc-internal-format
msgid "got %d template parameters for %q#D"
msgstr ""
-#: cp/pt.c:4015
+#: cp/pt.c:4376
#, gcc-internal-format
msgid "got %d template parameters for %q#T"
msgstr ""
-#: cp/pt.c:4017
+#: cp/pt.c:4378
#, gcc-internal-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:4035
+#: cp/pt.c:4396
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
msgstr ""
-#: cp/pt.c:4039
+#: cp/pt.c:4400
#, gcc-internal-format
msgid "use template<> for an explicit specialization"
msgstr ""
-#: cp/pt.c:4135
+#: cp/pt.c:4496
#, gcc-internal-format
msgid "%qT is not a template type"
msgstr ""
-#: cp/pt.c:4148
+#: cp/pt.c:4509
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
msgstr ""
-#: cp/pt.c:4158
+#: cp/pt.c:4519
#, gcc-internal-format
msgid "redeclared with %d template parameter(s)"
msgstr ""
-#: cp/pt.c:4160
+#: cp/pt.c:4521
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter(s)"
msgstr ""
-#: cp/pt.c:4194
+#: cp/pt.c:4555
#, gcc-internal-format
msgid "template parameter %q+#D"
msgstr ""
-#: cp/pt.c:4195
+#: cp/pt.c:4556
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr ""
@@ -33517,220 +34719,220 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:4205
+#: cp/pt.c:4566
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
msgstr ""
-#: cp/pt.c:4206
+#: cp/pt.c:4568
#, gcc-internal-format
-msgid "%Joriginal definition appeared here"
+msgid "original definition appeared here"
msgstr ""
-#: cp/pt.c:4310
+#: cp/pt.c:4672
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because function %qD has "
"not external linkage"
msgstr ""
-#: cp/pt.c:4351
+#: cp/pt.c:4713
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because string literals "
"can never be used in this context"
msgstr ""
-#: cp/pt.c:4428
+#: cp/pt.c:4790
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is a non-"
"constant expression"
msgstr ""
-#: cp/pt.c:4472
+#: cp/pt.c:4834
#, gcc-internal-format
msgid ""
"%qD is not a valid template argument because %qD is a variable, not the "
"address of a variable"
msgstr ""
-#: cp/pt.c:4490
+#: cp/pt.c:4852
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument of type %qT because %qE is not a "
"variable"
msgstr ""
-#: cp/pt.c:4497
+#: cp/pt.c:4859
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument of type %qT because %qD does not have "
"external linkage"
msgstr ""
-#: cp/pt.c:4527
+#: cp/pt.c:4889
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because of conflicts in cv-"
"qualification"
msgstr ""
-#: cp/pt.c:4534
+#: cp/pt.c:4896
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is not an lvalue"
msgstr ""
-#: cp/pt.c:4547
+#: cp/pt.c:4909
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because object %qD has not "
"external linkage"
msgstr ""
-#: cp/pt.c:4579
+#: cp/pt.c:4941
#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
msgstr ""
-#: cp/pt.c:4580
+#: cp/pt.c:4942
#, gcc-internal-format
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:4594
+#: cp/pt.c:4956
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is a pointer"
msgstr ""
-#: cp/pt.c:4596
+#: cp/pt.c:4958
#, gcc-internal-format
msgid "try using %qE instead"
msgstr ""
-#: cp/pt.c:4631
+#: cp/pt.c:4993
#, gcc-internal-format
msgid ""
"%qE is not a valid template argument for type %qT because it is of type %qT"
msgstr ""
-#: cp/pt.c:4634
+#: cp/pt.c:4996
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
msgstr ""
-#: cp/pt.c:4971
+#: cp/pt.c:5333
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
msgstr ""
-#: cp/pt.c:4987 cp/pt.c:5006 cp/pt.c:5056
+#: cp/pt.c:5349 cp/pt.c:5368 cp/pt.c:5418
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
msgstr ""
-#: cp/pt.c:4991
+#: cp/pt.c:5353
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
msgstr ""
-#: cp/pt.c:4995
+#: cp/pt.c:5357
#, gcc-internal-format
msgid " expected a class template, got %qE"
msgstr ""
-#: cp/pt.c:4997
+#: cp/pt.c:5359
#, gcc-internal-format
msgid " expected a type, got %qE"
msgstr ""
-#: cp/pt.c:5010
+#: cp/pt.c:5372
#, gcc-internal-format
msgid " expected a type, got %qT"
msgstr ""
-#: cp/pt.c:5012
+#: cp/pt.c:5374
#, gcc-internal-format
msgid " expected a class template, got %qT"
msgstr ""
-#: cp/pt.c:5059
+#: cp/pt.c:5421
#, gcc-internal-format
msgid " expected a template of type %qD, got %qD"
msgstr ""
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
-#: cp/pt.c:5092
+#: cp/pt.c:5454
#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
msgstr ""
-#: cp/pt.c:5114
+#: cp/pt.c:5476
#, gcc-internal-format
msgid "could not convert template argument %qE to %qT"
msgstr ""
-#: cp/pt.c:5170
+#: cp/pt.c:5532
#, gcc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:5307
+#: cp/pt.c:5670
#, gcc-internal-format
msgid "wrong number of template arguments (%d, should be %d%s)"
msgstr ""
-#: cp/pt.c:5311
+#: cp/pt.c:5674
#, gcc-internal-format
msgid "provided for %q+D"
msgstr ""
-#: cp/pt.c:5376
+#: cp/pt.c:5741
#, gcc-internal-format
msgid "cannot expand %<%E%> into a fixed-length argument list"
msgstr ""
-#: cp/pt.c:5379
+#: cp/pt.c:5744
#, gcc-internal-format
msgid "cannot expand %<%T%> into a fixed-length argument list"
msgstr ""
-#: cp/pt.c:5395
+#: cp/pt.c:5760
#, gcc-internal-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:5672
+#: cp/pt.c:6042
#, gcc-internal-format
msgid "non-template type %qT used as a template"
msgstr ""
-#: cp/pt.c:5674
+#: cp/pt.c:6044
#, gcc-internal-format
msgid "for template declaration %q+D"
msgstr ""
-#: cp/pt.c:6377
+#: cp/pt.c:6700
#, gcc-internal-format
msgid ""
"template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN "
"to increase the maximum) instantiating %qD"
msgstr ""
-#: cp/pt.c:7611
+#: cp/pt.c:7953
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%T%>"
msgstr ""
-#: cp/pt.c:7615
+#: cp/pt.c:7957
#, gcc-internal-format
msgid "mismatched argument pack lengths while expanding %<%E%>"
msgstr ""
-#: cp/pt.c:8587
+#: cp/pt.c:8981
#, gcc-internal-format
msgid "instantiation of %q+D as type %qT"
msgstr ""
@@ -33748,241 +34950,226 @@ msgstr ""
#.
#. is an attempt to declare a variable with function
#. type.
-#: cp/pt.c:8727
+#: cp/pt.c:9120
#, gcc-internal-format
msgid "variable %qD has function type"
msgstr ""
-#: cp/pt.c:8874
+#: cp/pt.c:9285
#, gcc-internal-format
msgid "invalid parameter type %qT"
msgstr ""
-#: cp/pt.c:8876
+#: cp/pt.c:9287
#, gcc-internal-format
msgid "in declaration %q+D"
msgstr ""
-#: cp/pt.c:8953
+#: cp/pt.c:9364
#, gcc-internal-format
msgid "function returning an array"
msgstr ""
-#: cp/pt.c:8955
+#: cp/pt.c:9366
#, gcc-internal-format
msgid "function returning a function"
msgstr ""
-#: cp/pt.c:8982
+#: cp/pt.c:9393
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:9211
-#, gcc-internal-format
-msgid "array bound is not an integer constant"
-msgstr ""
-
-#: cp/pt.c:9231
+#: cp/pt.c:9642
#, gcc-internal-format
msgid "creating array with negative size (%qE)"
msgstr ""
-#: cp/pt.c:9480
+#: cp/pt.c:9891
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:9482
+#: cp/pt.c:9893
#, gcc-internal-format
msgid "forming %s to reference type %qT"
msgstr ""
-#: cp/pt.c:9533
+#: cp/pt.c:9944
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:9539
+#: cp/pt.c:9950
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:9545
+#: cp/pt.c:9956
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:9612
+#: cp/pt.c:10023
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:9618
+#: cp/pt.c:10029
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:9669
+#: cp/pt.c:10081
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:9704
+#: cp/pt.c:10117
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:9707
+#: cp/pt.c:10120
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:9813
+#: cp/pt.c:10234
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:9950
+#: cp/pt.c:10369
+#, gcc-internal-format
+msgid "qualifying type %qT does not match destructor name ~%qT"
+msgstr ""
+
+#: cp/pt.c:10384
#, gcc-internal-format
msgid ""
"dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:9952
+#: cp/pt.c:10386
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:10098
+#: cp/pt.c:10532
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:10428 cp/pt.c:11091
+#: cp/pt.c:10862 cp/pt.c:11534
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr ""
-#: cp/pt.c:10432 cp/pt.c:11095
+#: cp/pt.c:10866 cp/pt.c:11538
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:10587
-#, gcc-internal-format
-msgid "iteration variable %qD should not be reduction"
-msgstr ""
-
-#: cp/pt.c:11255
+#: cp/pt.c:11698
#, gcc-internal-format
msgid ""
"a cast to a type other than an integral or enumeration type cannot appear in "
"a constant-expression"
msgstr ""
-#: cp/pt.c:11723
+#: cp/pt.c:12238
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr ""
-#: cp/pt.c:11726
+#: cp/pt.c:12241
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr ""
-#: cp/pt.c:11946
-#, gcc-internal-format
-msgid "%qT is/uses anonymous type"
-msgstr ""
-
-#: cp/pt.c:11948
-#, gcc-internal-format
-msgid "template argument for %qD uses local type %qT"
-msgstr ""
-
-#: cp/pt.c:11958
+#: cp/pt.c:12483
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:11969
+#: cp/pt.c:12494
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr ""
-#: cp/pt.c:11987
+#: cp/pt.c:12512
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:14822
+#: cp/pt.c:15507
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr ""
-#: cp/pt.c:14825
+#: cp/pt.c:15510
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:14848 cp/pt.c:14931
+#: cp/pt.c:15533 cp/pt.c:15616
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr ""
-#: cp/pt.c:14863
+#: cp/pt.c:15548
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:14869 cp/pt.c:14926
+#: cp/pt.c:15554 cp/pt.c:15611
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:14874
+#: cp/pt.c:15559
#, gcc-internal-format
msgid ""
"type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:14882
+#: cp/pt.c:15567
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:14918
+#: cp/pt.c:15603
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:14941 cp/pt.c:15033
+#: cp/pt.c:15626 cp/pt.c:15718
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:14946 cp/pt.c:15050
+#: cp/pt.c:15631 cp/pt.c:15735
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:15011
+#: cp/pt.c:15696
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr ""
-#: cp/pt.c:15020
+#: cp/pt.c:15705
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:15038
+#: cp/pt.c:15723
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:15084
+#: cp/pt.c:15769
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr ""
@@ -33994,12 +35181,12 @@ msgstr ""
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:15534
+#: cp/pt.c:16233
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:15700
+#: cp/pt.c:16399
#, gcc-internal-format
msgid ""
"template instantiation depth exceeds maximum of %d instantiating %q+D, "
@@ -34007,34 +35194,34 @@ msgid ""
"the maximum)"
msgstr ""
-#: cp/pt.c:16055
+#: cp/pt.c:16754
#, gcc-internal-format
msgid "%q#T is not a valid type for a template constant parameter"
msgstr ""
-#: cp/pt.c:17053
+#: cp/pt.c:17751
#, gcc-internal-format
msgid ""
-"deducing auto from brace-enclosed initializer list requires #include "
+"deducing from brace-enclosed initializer list requires #include "
"<initializer_list>"
msgstr ""
-#: cp/pt.c:17094
+#: cp/pt.c:17801
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
-#: cp/repo.c:111
+#: cp/repo.c:119
#, gcc-internal-format
msgid "-frepo must be used with -c"
msgstr ""
-#: cp/repo.c:200
+#: cp/repo.c:209
#, gcc-internal-format
msgid "mysterious repository information in %s"
msgstr ""
-#: cp/repo.c:218
+#: cp/repo.c:227
#, gcc-internal-format
msgid "can't create repository information file %qs"
msgstr ""
@@ -34143,802 +35330,805 @@ msgstr ""
msgid " since %q+#D declared in base class"
msgstr ""
-#: cp/semantics.c:760
+#: cp/semantics.c:761
#, gcc-internal-format
msgid "suggest explicit braces around empty body in %<do%> statement"
msgstr ""
-#: cp/semantics.c:1284
+#: cp/semantics.c:1286
#, gcc-internal-format
msgid "type of asm operand %qE could not be determined"
msgstr ""
-#: cp/semantics.c:1340
+#: cp/semantics.c:1344
#, gcc-internal-format
msgid "__label__ declarations are only allowed in function scopes"
msgstr ""
-#: cp/semantics.c:1438
+#: cp/semantics.c:1442
#, gcc-internal-format
msgid "invalid use of member %q+D in static member function"
msgstr ""
-#: cp/semantics.c:1440
+#: cp/semantics.c:1444
#, gcc-internal-format
msgid "invalid use of non-static data member %q+D"
msgstr ""
-#: cp/semantics.c:1441 cp/semantics.c:1483
+#: cp/semantics.c:1445 cp/semantics.c:1502
#, gcc-internal-format
msgid "from this location"
msgstr ""
-#: cp/semantics.c:1482
+#: cp/semantics.c:1501
#, gcc-internal-format
msgid "object missing in reference to %q+D"
msgstr ""
-#: cp/semantics.c:2006
+#: cp/semantics.c:2022
#, gcc-internal-format
msgid "arguments to destructor are not allowed"
msgstr ""
-#: cp/semantics.c:2056
+#: cp/semantics.c:2080
#, gcc-internal-format
msgid "%<this%> is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:2062
+#: cp/semantics.c:2086
#, gcc-internal-format
msgid "invalid use of %<this%> in non-member function"
msgstr ""
-#: cp/semantics.c:2064
+#: cp/semantics.c:2088
#, gcc-internal-format
msgid "invalid use of %<this%> at top level"
msgstr ""
-#: cp/semantics.c:2088
+#: cp/semantics.c:2112
#, gcc-internal-format
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2093 cp/typeck.c:2130
+#: cp/semantics.c:2117 cp/typeck.c:2147
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/semantics.c:2115
+#: cp/semantics.c:2139
#, gcc-internal-format
msgid "%qE is not of type %qT"
msgstr ""
-#: cp/semantics.c:2159
+#: cp/semantics.c:2183
#, gcc-internal-format
msgid "compound literal of non-object type %qT"
msgstr ""
-#: cp/semantics.c:2243
+#: cp/semantics.c:2267
#, gcc-internal-format
msgid "template type parameters must use the keyword %<class%> or %<typename%>"
msgstr ""
-#: cp/semantics.c:2284
+#: cp/semantics.c:2309
#, gcc-internal-format
msgid ""
"invalid use of type %qT as a default value for a template template-parameter"
msgstr ""
-#: cp/semantics.c:2287
+#: cp/semantics.c:2312
#, gcc-internal-format
msgid "invalid default argument for a template template parameter"
msgstr ""
-#: cp/semantics.c:2304
+#: cp/semantics.c:2329
#, gcc-internal-format
msgid "definition of %q#T inside template parameter list"
msgstr ""
-#: cp/semantics.c:2315
+#: cp/semantics.c:2340
#, gcc-internal-format
msgid "invalid definition of qualified type %qT"
msgstr ""
-#: cp/semantics.c:2531
+#: cp/semantics.c:2556
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2543
+#: cp/semantics.c:2568
#, gcc-internal-format
msgid "base class %qT has cv qualifiers"
msgstr ""
-#: cp/semantics.c:2568
+#: cp/semantics.c:2593
+#, gcc-internal-format
+msgid "incomplete type %qT used in nested name specifier"
+msgstr ""
+
+#: cp/semantics.c:2597
#, gcc-internal-format
-msgid "%Hincomplete type %qT used in nested name specifier"
+msgid "reference to %<%T::%D%> is ambiguous"
msgstr ""
-#: cp/semantics.c:2572
+#: cp/semantics.c:2602 cp/typeck.c:1947
#, gcc-internal-format
-msgid "%Hreference to %<%T::%D%> is ambiguous"
+msgid "%qD is not a member of %qT"
msgstr ""
-#: cp/semantics.c:2576
+#: cp/semantics.c:2605
#, gcc-internal-format
-msgid "%H%qD is not a member of %qT"
+msgid "%qD is not a member of %qD"
msgstr ""
-#: cp/semantics.c:2579
+#: cp/semantics.c:2607
#, gcc-internal-format
-msgid "%H%qD is not a member of %qD"
+msgid "%<::%D%> has not been declared"
msgstr ""
-#: cp/semantics.c:2581
+#: cp/semantics.c:2803 cp/semantics.c:5532
#, gcc-internal-format
-msgid "%H%<::%D%> has not been declared"
+msgid "%qD is not captured"
msgstr ""
-#: cp/semantics.c:2722
+#: cp/semantics.c:2809
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:2724
+#: cp/semantics.c:2811
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr ""
-#: cp/semantics.c:2762
+#: cp/semantics.c:2849
#, gcc-internal-format
msgid ""
"template parameter %qD of type %qT is not allowed in an integral constant "
"expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:2926
+#: cp/semantics.c:3013
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:2934
+#: cp/semantics.c:3021
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:2939
+#: cp/semantics.c:3026
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:2945
+#: cp/semantics.c:3032
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3067 cp/semantics.c:4798
+#: cp/semantics.c:3154 cp/semantics.c:4917
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3082
+#: cp/semantics.c:3169
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3093
+#: cp/semantics.c:3180
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3538
+#: cp/semantics.c:3639
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:3547 cp/semantics.c:3569 cp/semantics.c:3591
+#: cp/semantics.c:3648 cp/semantics.c:3670 cp/semantics.c:3692
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:3561
+#: cp/semantics.c:3662
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:3583
+#: cp/semantics.c:3684
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:3613
+#: cp/semantics.c:3714
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:3627
+#: cp/semantics.c:3728
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:3759
+#: cp/semantics.c:3860
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr ""
-#: cp/semantics.c:3830
+#: cp/semantics.c:3931
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:3844
+#: cp/semantics.c:3945
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:3979
+#: cp/semantics.c:4090
#, gcc-internal-format
-msgid "%Hinvalid controlling predicate"
+msgid "difference between %qE and %qD does not have integer type"
msgstr ""
-#: cp/semantics.c:3989
+#. Report the error.
+#: cp/semantics.c:4616
#, gcc-internal-format
-msgid "%Hdifference between %qE and %qD does not have integer type"
+msgid "static assertion failed: %E"
msgstr ""
-#: cp/semantics.c:4084
+#: cp/semantics.c:4618
#, gcc-internal-format
-msgid "%Hinvalid increment expression"
+msgid "non-constant condition for static assertion"
msgstr ""
-#: cp/semantics.c:4211 cp/semantics.c:4282
+#: cp/semantics.c:4706 cp/semantics.c:4828
#, gcc-internal-format
-msgid "%Hexpected iteration declaration or initialization"
+msgid "argument to decltype must be an expression"
msgstr ""
-#: cp/semantics.c:4222
+#: cp/semantics.c:4778
#, gcc-internal-format
-msgid "%Hmissing controlling predicate"
+msgid "%qE refers to a set of overloaded functions"
msgstr ""
-#: cp/semantics.c:4228
+#: cp/semantics.c:4861
#, gcc-internal-format
-msgid "%Hmissing increment expression"
+msgid "unable to determine the declared type of expression %<%E%>"
msgstr ""
-#: cp/semantics.c:4308
+#: cp/semantics.c:5122
#, gcc-internal-format
-msgid "%Hinvalid type for iteration variable %qE"
+msgid "__is_convertible_to"
msgstr ""
-#. Report the error.
-#: cp/semantics.c:4510
+#: cp/semantics.c:5163 cp/semantics.c:5173
#, gcc-internal-format
-msgid "static assertion failed: %E"
+msgid "incomplete type %qT not allowed"
msgstr ""
-#: cp/semantics.c:4512
+#: cp/semantics.c:5236
#, gcc-internal-format
-msgid "non-constant condition for static assertion"
+msgid "the type %qT of constexpr variable %qD is not literal"
msgstr ""
-#: cp/semantics.c:4604 cp/semantics.c:4721
+#: cp/semantics.c:5271
#, gcc-internal-format
-msgid "argument to decltype must be an expression"
+msgid "parameter %q#D is not of literal type"
msgstr ""
-#: cp/semantics.c:4671
+#: cp/semantics.c:5284
#, gcc-internal-format
-msgid "%qE refers to a set of overloaded functions"
+msgid "return type %qT of function %qD is not a literal type"
msgstr ""
-#: cp/semantics.c:4754
+#: cp/semantics.c:5578
#, gcc-internal-format
-msgid "unable to determine the declared type of expression %<%E%>"
+msgid "cannot capture %qE by reference"
msgstr ""
-#: cp/semantics.c:4985
+#: cp/semantics.c:5600
#, gcc-internal-format
-msgid "__is_convertible_to"
+msgid "already captured %<this%> in lambda expression"
msgstr ""
-#: cp/semantics.c:5024 cp/semantics.c:5034
+#: cp/semantics.c:5716
#, gcc-internal-format
-msgid "incomplete type %qT not allowed"
+msgid "%<this%> was not captured for this lambda function"
msgstr ""
-#: cp/tree.c:882
+#: cp/tree.c:918
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2230
+#: cp/tree.c:2466
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:2259
+#: cp/tree.c:2495
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2265
+#: cp/tree.c:2501
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2289
+#: cp/tree.c:2525
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2310
+#: cp/tree.c:2546
#, gcc-internal-format
msgid ""
"can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2318
+#: cp/tree.c:2554
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2328
+#: cp/tree.c:2564
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2339
+#: cp/tree.c:2575
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr ""
-#: cp/typeck.c:457 cp/typeck.c:472 cp/typeck.c:574
+#: cp/tree.c:3155
+#, gcc-internal-format
+msgid "lang_* check: failed in %s, at %s:%d"
+msgstr ""
+
+#: cp/typeck.c:465 cp/typeck.c:480 cp/typeck.c:582
#, gcc-internal-format
msgid "%s between distinct pointer types %qT and %qT lacks a cast"
msgstr ""
-#: cp/typeck.c:534
+#: cp/typeck.c:542
#, gcc-internal-format
msgid ""
"ISO C++ forbids %s between pointer of type %<void *%> and pointer-to-function"
msgstr ""
-#: cp/typeck.c:595
+#: cp/typeck.c:603
#, gcc-internal-format
msgid "%s between distinct pointer-to-member types %qT and %qT lacks a cast"
msgstr ""
-#: cp/typeck.c:1200
+#: cp/typeck.c:1212
#, gcc-internal-format
msgid "canonical types differ for identical types %T and %T"
msgstr ""
-#: cp/typeck.c:1207
+#: cp/typeck.c:1219
#, gcc-internal-format
msgid "same canonical type node for different types %T and %T"
msgstr ""
-#: cp/typeck.c:1320
+#: cp/typeck.c:1332
#, gcc-internal-format
msgid "invalid application of %qs to a member function"
msgstr ""
-#: cp/typeck.c:1388
+#: cp/typeck.c:1400
#, gcc-internal-format
msgid "invalid application of %<sizeof%> to a bit-field"
msgstr ""
-#: cp/typeck.c:1396
+#: cp/typeck.c:1408
#, gcc-internal-format
msgid "ISO C++ forbids applying %<sizeof%> to an expression of function type"
msgstr ""
-#: cp/typeck.c:1445
+#: cp/typeck.c:1457
#, gcc-internal-format
msgid "invalid application of %<__alignof%> to a bit-field"
msgstr ""
-#: cp/typeck.c:1456
+#: cp/typeck.c:1468
#, gcc-internal-format
msgid ""
"ISO C++ forbids applying %<__alignof%> to an expression of function type"
msgstr ""
-#: cp/typeck.c:1514
+#: cp/typeck.c:1526
#, gcc-internal-format
msgid "invalid use of non-static member function"
msgstr ""
-#: cp/typeck.c:1776
+#: cp/typeck.c:1793
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT"
msgstr ""
-#: cp/typeck.c:1899 cp/typeck.c:2274
+#: cp/typeck.c:1916 cp/typeck.c:2291
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck.c:1928
+#: cp/typeck.c:1945
#, gcc-internal-format
msgid "invalid use of nonstatic data member %qE"
msgstr ""
-#: cp/typeck.c:1930
-#, gcc-internal-format
-msgid "%qD is not a member of %qT"
-msgstr ""
-
-#: cp/typeck.c:1983
+#: cp/typeck.c:2000
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:1986 cp/typeck.c:2017
+#: cp/typeck.c:2003 cp/typeck.c:2034
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2014
+#: cp/typeck.c:2031
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr ""
-#: cp/typeck.c:2104
-#, gcc-internal-format
-msgid "invalid use of %qD"
-msgstr ""
-
-#: cp/typeck.c:2142
+#: cp/typeck.c:2159
#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/typeck.c:2150
+#: cp/typeck.c:2167
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
-#: cp/typeck.c:2189 cp/typeck.c:2209
+#: cp/typeck.c:2206 cp/typeck.c:2226
#, gcc-internal-format
msgid "%qD is not a template"
msgstr ""
-#: cp/typeck.c:2313
+#: cp/typeck.c:2330
#, gcc-internal-format
msgid "%<%D::%D%> is not a member of %qT"
msgstr ""
-#: cp/typeck.c:2329
+#: cp/typeck.c:2346
#, gcc-internal-format
msgid "%qT is not a base of %qT"
msgstr ""
-#: cp/typeck.c:2349
+#: cp/typeck.c:2366
#, gcc-internal-format
msgid "%qD has no member named %qE"
msgstr ""
-#: cp/typeck.c:2365
+#: cp/typeck.c:2382
#, gcc-internal-format
msgid "%qD is not a member template function"
msgstr ""
-#: cp/typeck.c:2509
+#: cp/typeck.c:2527
#, gcc-internal-format
msgid "%qT is not a pointer-to-object type"
msgstr ""
-#: cp/typeck.c:2537
+#: cp/typeck.c:2555
#, gcc-internal-format
msgid "invalid use of %qs on pointer to member"
msgstr ""
-#: cp/typeck.c:2541
+#: cp/typeck.c:2559
#, gcc-internal-format
msgid "invalid type argument of %qs"
msgstr ""
-#: cp/typeck.c:2543
+#: cp/typeck.c:2561
#, gcc-internal-format
msgid "invalid type argument"
msgstr ""
-#: cp/typeck.c:2570
+#: cp/typeck.c:2588
#, gcc-internal-format
msgid "subscript missing in array reference"
msgstr ""
-#: cp/typeck.c:2650
+#: cp/typeck.c:2668
#, gcc-internal-format
msgid "ISO C++ forbids subscripting non-lvalue array"
msgstr ""
-#: cp/typeck.c:2662
+#: cp/typeck.c:2680
#, gcc-internal-format
msgid "subscripting array declared %<register%>"
msgstr ""
-#: cp/typeck.c:2754
+#: cp/typeck.c:2772
#, gcc-internal-format
msgid "object missing in use of %qE"
msgstr ""
-#: cp/typeck.c:2914
+#: cp/typeck.c:2954
#, gcc-internal-format
msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr ""
-#: cp/typeck.c:2933
+#: cp/typeck.c:2973
#, gcc-internal-format
msgid ""
"must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%"
">, e.g. %<(... ->* %E) (...)%>"
msgstr ""
-#: cp/typeck.c:2948
+#: cp/typeck.c:2988
#, gcc-internal-format
msgid "%qE cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3041
+#: cp/typeck.c:3079
#, gcc-internal-format
msgid "too many arguments to %s %q+#D"
msgstr ""
-#: cp/typeck.c:3043 cp/typeck.c:3156
+#: cp/typeck.c:3081 cp/typeck.c:3194
#, gcc-internal-format
msgid "at this point in file"
msgstr ""
-#: cp/typeck.c:3046
+#: cp/typeck.c:3084
#, gcc-internal-format
msgid "too many arguments to function"
msgstr ""
-#: cp/typeck.c:3081
+#: cp/typeck.c:3119
#, gcc-internal-format
msgid "parameter %P of %qD has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:3084
+#: cp/typeck.c:3122
#, gcc-internal-format
msgid "parameter %P has incomplete type %qT"
msgstr ""
-#: cp/typeck.c:3154
+#: cp/typeck.c:3192
#, gcc-internal-format
msgid "too few arguments to %s %q+#D"
msgstr ""
-#: cp/typeck.c:3159
+#: cp/typeck.c:3197
#, gcc-internal-format
msgid "too few arguments to function"
msgstr ""
-#: cp/typeck.c:3365 cp/typeck.c:3376
+#: cp/typeck.c:3402 cp/typeck.c:3413
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
msgstr ""
-#: cp/typeck.c:3584
+#. Some sort of arithmetic operation involving NULL was
+#. performed.
+#: cp/typeck.c:3456
+#, gcc-internal-format
+msgid "NULL used in arithmetic"
+msgstr ""
+
+#: cp/typeck.c:3647
#, gcc-internal-format
msgid "left rotate count is negative"
msgstr ""
-#: cp/typeck.c:3585
+#: cp/typeck.c:3648
#, gcc-internal-format
msgid "right rotate count is negative"
msgstr ""
-#: cp/typeck.c:3591
+#: cp/typeck.c:3654
#, gcc-internal-format
msgid "left rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3592
+#: cp/typeck.c:3655
#, gcc-internal-format
msgid "right rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3611 cp/typeck.c:3834
+#: cp/typeck.c:3674 cp/typeck.c:3897
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behaviour"
msgstr ""
-#: cp/typeck.c:3651 cp/typeck.c:3659 cp/typeck.c:3854 cp/typeck.c:3862
+#: cp/typeck.c:3714 cp/typeck.c:3722 cp/typeck.c:3917 cp/typeck.c:3925
#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:3879
+#: cp/typeck.c:3942
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: cp/typeck.c:3918
+#: cp/typeck.c:3982
#, gcc-internal-format
msgid "invalid operands of types %qT and %qT to binary %qO"
msgstr ""
-#. 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:4008
-#, gcc-internal-format
-msgid "NULL used in arithmetic"
-msgstr ""
-
-#: cp/typeck.c:4075
+#: cp/typeck.c:4123
#, gcc-internal-format
msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
msgstr ""
-#: cp/typeck.c:4077
+#: cp/typeck.c:4125
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4079
+#: cp/typeck.c:4127
#, gcc-internal-format
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4092
+#: cp/typeck.c:4140
#, gcc-internal-format
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4152
+#: cp/typeck.c:4199
+#, gcc-internal-format
+msgid "taking address of %s %qE"
+msgstr ""
+
+#: cp/typeck.c:4212
#, gcc-internal-format
msgid "invalid use of %qE to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:4155
+#: cp/typeck.c:4215
#, gcc-internal-format
msgid " a qualified-id is required"
msgstr ""
-#: cp/typeck.c:4160
+#: cp/typeck.c:4220
#, gcc-internal-format
msgid ""
"parentheses around %qE cannot be used to form a pointer-to-member-function"
msgstr ""
-#: cp/typeck.c:4183
+#: cp/typeck.c:4243
#, gcc-internal-format
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4443
+#: cp/typeck.c:4513
#, gcc-internal-format
msgid "ISO C++ forbids incrementing an enum"
msgstr ""
-#: cp/typeck.c:4444
+#: cp/typeck.c:4514
#, gcc-internal-format
msgid "ISO C++ forbids decrementing an enum"
msgstr ""
-#: cp/typeck.c:4460
+#: cp/typeck.c:4530
#, gcc-internal-format
msgid "cannot increment a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:4461
+#: cp/typeck.c:4531
#, gcc-internal-format
msgid "cannot decrement a pointer to incomplete type %qT"
msgstr ""
-#: cp/typeck.c:4472
+#: cp/typeck.c:4542
#, gcc-internal-format
msgid "ISO C++ forbids incrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:4473
+#: cp/typeck.c:4543
#, gcc-internal-format
msgid "ISO C++ forbids decrementing a pointer of type %qT"
msgstr ""
-#: cp/typeck.c:4499
+#: cp/typeck.c:4569
#, gcc-internal-format
msgid "invalid use of Boolean expression as operand to %<operator--%>"
msgstr ""
-#: cp/typeck.c:4534
+#: cp/typeck.c:4604
#, gcc-internal-format
msgid "ISO C++ forbids taking address of function %<::main%>"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4595
+#: cp/typeck.c:4665
#, gcc-internal-format
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:4600
+#: cp/typeck.c:4670
#, gcc-internal-format
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:4629
+#: cp/typeck.c:4699
#, gcc-internal-format
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4657
+#: cp/typeck.c:4727
#, gcc-internal-format
msgid "cannot create pointer to reference member %qD"
msgstr ""
-#: cp/typeck.c:4872
+#: cp/typeck.c:4942
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:4895
+#: cp/typeck.c:4965
#, gcc-internal-format
msgid "address of explicit register variable %qD requested"
msgstr ""
-#: cp/typeck.c:4900
+#: cp/typeck.c:4970
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
msgstr ""
-#: cp/typeck.c:4967
+#: cp/typeck.c:5037 cp/typeck.c:5064
#, gcc-internal-format
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:5039
+#: cp/typeck.c:5137
#, gcc-internal-format
msgid "no context to resolve type of %qE"
msgstr ""
-#: cp/typeck.c:5070
+#: cp/typeck.c:5168
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5075
+#: cp/typeck.c:5173
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5080
+#: cp/typeck.c:5178
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5400
+#: cp/typeck.c:5513
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5423
+#: cp/typeck.c:5536
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr ""
-#: cp/typeck.c:5472
+#: cp/typeck.c:5585
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5534
+#: cp/typeck.c:5652
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:5564
+#: cp/typeck.c:5682
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -34947,160 +36137,172 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:5583
+#: cp/typeck.c:5701
#, gcc-internal-format
msgid ""
"ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:5595
+#: cp/typeck.c:5714
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5651
+#: cp/typeck.c:5770
#, gcc-internal-format
msgid ""
"invalid use of const_cast with type %qT, which is not a pointer, reference, "
"nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:5660
+#: cp/typeck.c:5779
#, gcc-internal-format
msgid ""
"invalid use of const_cast with type %qT, which is a pointer or reference to "
"a function type"
msgstr ""
-#: cp/typeck.c:5685
+#: cp/typeck.c:5804
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5734
+#: cp/typeck.c:5853
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5811 cp/typeck.c:5819
+#: cp/typeck.c:5930 cp/typeck.c:5938
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:5828
+#: cp/typeck.c:5947
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr ""
-#: cp/typeck.c:6069
+#: cp/typeck.c:6193
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6120
+#: cp/typeck.c:6247
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:6133
+#: cp/typeck.c:6261
#, gcc-internal-format
msgid "array used as initializer"
msgstr ""
-#: cp/typeck.c:6135
+#: cp/typeck.c:6263
#, gcc-internal-format
msgid "invalid array assignment"
msgstr ""
-#: cp/typeck.c:6233
+#: cp/typeck.c:6363
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:6244
+#: cp/typeck.c:6374
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:6284 cp/typeck.c:6296
+#: cp/typeck.c:6414 cp/typeck.c:6427
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:6374
+#: cp/typeck.c:6505
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr ""
-#: cp/typeck.c:6645
+#: cp/typeck.c:6776
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:6648
+#: cp/typeck.c:6779
#, gcc-internal-format
msgid "cannot convert %qT to %qT in %s"
msgstr ""
-#: cp/typeck.c:6662
+#: cp/typeck.c:6793
#, gcc-internal-format
msgid "%s might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:6751 cp/typeck.c:6753
+#: cp/typeck.c:6886 cp/typeck.c:6888
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr ""
-#: cp/typeck.c:6803
+#: cp/typeck.c:6943
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:6810
+#: cp/typeck.c:6950
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:6826
+#: cp/typeck.c:6966
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:6829
+#: cp/typeck.c:6969
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:6864
+#: cp/typeck.c:7004
#, gcc-internal-format
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:6872
+#: cp/typeck.c:7012
#, gcc-internal-format
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:6875
+#: cp/typeck.c:7015
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:6900
+#: cp/typeck.c:7033
+#, gcc-internal-format
+msgid ""
+"lambda return type can only be deduced when the return statement is the only "
+"statement in the function body"
+msgstr ""
+
+#: cp/typeck.c:7039
+#, gcc-internal-format
+msgid "inconsistent types %qT and %qT deduced for lambda return type"
+msgstr ""
+
+#: cp/typeck.c:7065
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr ""
-#: cp/typeck.c:6921
+#: cp/typeck.c:7086
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:6951
+#: cp/typeck.c:7116
#, gcc-internal-format
msgid ""
"%<operator new%> must not return NULL unless it is declared %<throw()%> (or -"
@@ -35178,184 +36380,169 @@ msgstr ""
msgid "cannot allocate an object of abstract type %qT"
msgstr ""
-#: cp/typeck2.c:315
+#: cp/typeck2.c:316
#, gcc-internal-format
-msgid "%J because the following virtual functions are pure within %qT:"
+msgid " because the following virtual functions are pure within %qT:"
msgstr ""
-#: cp/typeck2.c:319
+#: cp/typeck2.c:320
#, gcc-internal-format
msgid "\t%+#D"
msgstr ""
-#: cp/typeck2.c:326
+#: cp/typeck2.c:328
#, gcc-internal-format
-msgid "%J since type %qT has pure virtual functions"
+msgid " since type %qT has pure virtual functions"
msgstr ""
-#: cp/typeck2.c:606
+#: cp/typeck2.c:608
#, gcc-internal-format
msgid "constructor syntax used, but no constructor declared for type %qT"
msgstr ""
-#: cp/typeck2.c:620
+#: cp/typeck2.c:622
#, gcc-internal-format
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:706
+#: cp/typeck2.c:708
#, gcc-internal-format
msgid "narrowing conversion of %qE from %qT to %qT inside { }"
msgstr ""
-#: cp/typeck2.c:764
+#: cp/typeck2.c:766
#, gcc-internal-format
msgid "int-array initialized from non-wide string"
msgstr ""
-#: cp/typeck2.c:769
+#: cp/typeck2.c:771
#, gcc-internal-format
msgid "int-array initialized from incompatible wide string"
msgstr ""
-#: cp/typeck2.c:830
+#: cp/typeck2.c:786
+#, gcc-internal-format
+msgid "initializer-string for array of chars is too long"
+msgstr ""
+
+#: cp/typeck2.c:832
#, gcc-internal-format
msgid "cannot initialize aggregate of type %qT with a compound literal"
msgstr ""
-#: cp/typeck2.c:839
+#: cp/typeck2.c:847
#, gcc-internal-format
msgid "array must be initialized with a brace-enclosed initializer"
msgstr ""
-#: cp/typeck2.c:921 cp/typeck2.c:1029
+#: cp/typeck2.c:934 cp/typeck2.c:1042
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/typeck2.c:1053 cp/typeck2.c:1067
+#: cp/typeck2.c:1066 cp/typeck2.c:1080
#, gcc-internal-format
msgid "missing initializer for member %qD"
msgstr ""
-#: cp/typeck2.c:1058
+#: cp/typeck2.c:1071
#, gcc-internal-format
msgid "uninitialized const member %qD"
msgstr ""
-#: cp/typeck2.c:1060
+#: cp/typeck2.c:1073
#, gcc-internal-format
msgid "member %qD with uninitialized const fields"
msgstr ""
-#: cp/typeck2.c:1062
+#: cp/typeck2.c:1075
#, gcc-internal-format
msgid "member %qD is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:1130
+#: cp/typeck2.c:1143
#, gcc-internal-format
msgid "no field %qD found in union being initialized"
msgstr ""
-#: cp/typeck2.c:1139
+#: cp/typeck2.c:1152
#, gcc-internal-format
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:1298
+#: cp/typeck2.c:1311
#, gcc-internal-format
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1311
+#: cp/typeck2.c:1324
#, gcc-internal-format
msgid "base operand of %<->%> has non-pointer type %qT"
msgstr ""
-#: cp/typeck2.c:1335
+#: cp/typeck2.c:1348
#, gcc-internal-format
msgid "result of %<operator->()%> yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1337
+#: cp/typeck2.c:1350
#, gcc-internal-format
msgid "base operand of %<->%> is not a pointer"
msgstr ""
-#: cp/typeck2.c:1359
+#: cp/typeck2.c:1372
#, gcc-internal-format
msgid "%qE cannot be used as a member pointer, since it is of type %qT"
msgstr ""
-#: cp/typeck2.c:1368
+#: cp/typeck2.c:1381
#, gcc-internal-format
msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck2.c:1390
+#: cp/typeck2.c:1403
#, gcc-internal-format
msgid "pointer to member type %qT incompatible with object type %qT"
msgstr ""
-#: cp/typeck2.c:1450
+#: cp/typeck2.c:1464
#, gcc-internal-format
msgid "invalid value-initialization of reference types"
msgstr ""
-#: cp/typeck2.c:1637
+#: cp/typeck2.c:1655
#, gcc-internal-format
msgid "call to function %qD which throws incomplete type %q#T"
msgstr ""
-#: cp/typeck2.c:1640
+#: cp/typeck2.c:1658
#, gcc-internal-format
msgid "call to function which throws incomplete type %q#T"
msgstr ""
-#: fortran/f95-lang.c:208
+#: fortran/f95-lang.c:214
#, gcc-internal-format
msgid "Unexpected type in truthvalue_conversion"
msgstr ""
-#: fortran/f95-lang.c:270
+#: fortran/f95-lang.c:273
#, gcc-internal-format
msgid "can't open input file: %s"
msgstr ""
-#: fortran/f95-lang.c:596
-#, gcc-internal-format
-msgid "global register variable %qs used in nested function"
-msgstr ""
-
-#: fortran/f95-lang.c:600
-#, gcc-internal-format
-msgid "register variable %qs used in nested function"
-msgstr ""
-
-#: fortran/f95-lang.c:607
-#, gcc-internal-format
-msgid "address of global register variable %qs requested"
-msgstr ""
-
-#: fortran/f95-lang.c:625
-#, gcc-internal-format
-msgid "address of register variable %qs requested"
-msgstr ""
-
#: fortran/options.c:238
#, gcc-internal-format
msgid "-fexcess-precision=standard for Fortran"
msgstr ""
-#: fortran/trans-array.c:5870
+#: fortran/trans-array.c:6018
#, gcc-internal-format
msgid ""
"Possible frontend bug: Deferred array size without pointer, allocatable "
"attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:6351
+#: fortran/trans-array.c:6504
#, gcc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -35365,107 +36552,107 @@ msgstr ""
msgid "gfc_conv_constant_to_tree(): invalid type: %s"
msgstr ""
-#: fortran/trans-decl.c:1071
+#: fortran/trans-decl.c:1160
#, gcc-internal-format
msgid "intrinsic variable which isn't a procedure"
msgstr ""
-#: fortran/trans-decl.c:3254
+#: fortran/trans-decl.c:3380
#, gcc-internal-format
msgid "backend decl for module variable %s already exists"
msgstr ""
-#: fortran/trans-expr.c:1322
+#: fortran/trans-expr.c:1340
#, gcc-internal-format
msgid "Unknown intrinsic op"
msgstr ""
-#: fortran/trans-intrinsic.c:734
+#: fortran/trans-intrinsic.c:738
#, gcc-internal-format
msgid "Intrinsic function %s(%d) not recognized"
msgstr ""
-#: fortran/trans-io.c:2101
+#: fortran/trans-io.c:2121
#, gcc-internal-format
msgid "Bad IO basetype (%d)"
msgstr ""
-#: fortran/trans-openmp.c:1632
+#: fortran/trans-openmp.c:1637
#, gcc-internal-format
msgid "gfc_trans_omp_workshare(): Bad statement code"
msgstr ""
-#: fortran/trans-types.c:378
+#: fortran/trans-types.c:465
#, gcc-internal-format
msgid "integer kind=8 not available for -fdefault-integer-8 option"
msgstr ""
-#: fortran/trans-types.c:401
+#: fortran/trans-types.c:488
#, gcc-internal-format
msgid "real kind=8 not available for -fdefault-real-8 option"
msgstr ""
-#: fortran/trans-types.c:414
+#: fortran/trans-types.c:501
#, gcc-internal-format
msgid "Use of -fdefault-double-8 requires -fdefault-real-8"
msgstr ""
-#: fortran/trans-types.c:1250
+#: fortran/trans-types.c:1345
#, gcc-internal-format
msgid "Array element size too big"
msgstr ""
-#: fortran/trans.c:1241
+#: fortran/trans.c:1277
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
-#: java/class.c:834
+#: java/class.c:836
#, gcc-internal-format
msgid "bad method signature"
msgstr ""
-#: java/class.c:890
+#: java/class.c:893
#, gcc-internal-format
msgid "misplaced ConstantValue attribute (not in any field)"
msgstr ""
-#: java/class.c:893
+#: java/class.c:896
#, gcc-internal-format
msgid "duplicate ConstantValue attribute for field '%s'"
msgstr ""
-#: java/class.c:904
+#: java/class.c:907
#, gcc-internal-format
msgid "ConstantValue attribute of field '%s' has wrong type"
msgstr ""
-#: java/class.c:1601
+#: java/class.c:1613
#, gcc-internal-format
-msgid "%Jabstract method in non-abstract class"
+msgid "abstract method in non-abstract class"
msgstr ""
-#: java/class.c:2669
+#: java/class.c:2689
#, gcc-internal-format
msgid "non-static method %q+D overrides static method"
msgstr ""
-#: java/decl.c:1155
+#: java/decl.c:1261
#, gcc-internal-format
msgid "%q+D used prior to declaration"
msgstr ""
-#: java/decl.c:1578
+#: java/decl.c:1687
#, gcc-internal-format
msgid "In %+D: overlapped variable and exception ranges at %d"
msgstr ""
-#: java/decl.c:1629
+#: java/decl.c:1738
#, gcc-internal-format
msgid "bad type in parameter debug info"
msgstr ""
-#: java/decl.c:1638
+#: java/decl.c:1747
#, gcc-internal-format
msgid "bad PC range for debug info for local %q+D"
msgstr ""
@@ -35525,38 +36712,38 @@ msgstr ""
msgid "invoke[non-static] on static method"
msgstr ""
-#: java/expr.c:2916
+#: java/expr.c:2918
#, gcc-internal-format
msgid "missing field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2923
+#: java/expr.c:2925
#, gcc-internal-format
msgid "mismatching signature for field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2952
+#: java/expr.c:2954
#, gcc-internal-format
msgid "assignment to final field %q+D not in field's class"
msgstr ""
-#: java/expr.c:3175
+#: java/expr.c:3178
#, gcc-internal-format
msgid "invalid PC in line number table"
msgstr ""
-#: java/expr.c:3225
+#: java/expr.c:3228
#, gcc-internal-format
msgid "unreachable bytecode from %d to before %d"
msgstr ""
-#: java/expr.c:3267
+#: java/expr.c:3270
#, gcc-internal-format
msgid "unreachable bytecode from %d to the end of the method"
msgstr ""
#. duplicate code from LOAD macro
-#: java/expr.c:3574
+#: java/expr.c:3577
#, gcc-internal-format
msgid "unrecogized wide sub-instruction"
msgstr ""
@@ -35619,7 +36806,7 @@ msgstr ""
#: java/jcf-parse.c:1512
#, gcc-internal-format
-msgid "%Hduplicate class will only be compiled once"
+msgid "duplicate class will only be compiled once"
msgstr ""
#: java/jcf-parse.c:1607
@@ -35627,62 +36814,62 @@ msgstr ""
msgid "missing Code attribute"
msgstr ""
-#: java/jcf-parse.c:1851
+#: java/jcf-parse.c:1853
#, gcc-internal-format
msgid "no input file specified"
msgstr ""
-#: java/jcf-parse.c:1886
+#: java/jcf-parse.c:1888
#, gcc-internal-format
msgid "can't close input file %s: %m"
msgstr ""
-#: java/jcf-parse.c:1931
+#: java/jcf-parse.c:1933
#, gcc-internal-format
msgid "bad zip/jar file %s"
msgstr ""
-#: java/jcf-parse.c:2138
+#: java/jcf-parse.c:2135
#, gcc-internal-format
msgid "error while reading %s from zip file"
msgstr ""
-#: java/jvspec.c:425
+#: java/jvspec.c:426
#, gcc-internal-format
msgid "warning: already-compiled .class files ignored with -C"
msgstr ""
-#: java/lang.c:534
+#: java/lang.c:559
#, gcc-internal-format
msgid "-fexcess-precision=standard for Java"
msgstr ""
-#: java/lang.c:545
+#: java/lang.c:570
#, gcc-internal-format
msgid "-findirect-dispatch is incompatible with -freduced-reflection"
msgstr ""
-#: java/lang.c:548
+#: java/lang.c:573
#, gcc-internal-format
msgid "-fjni is incompatible with -freduced-reflection"
msgstr ""
-#: java/lang.c:559
+#: java/lang.c:584
#, gcc-internal-format
msgid "can't do dependency tracking with input from stdin"
msgstr ""
-#: java/lang.c:575
+#: java/lang.c:600
#, gcc-internal-format
msgid "couldn't determine target name for dependency tracking"
msgstr ""
-#: java/mangle_name.c:139 java/mangle_name.c:209
+#: java/mangle_name.c:322 java/mangle_name.c:396
#, gcc-internal-format
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: java/typeck.c:490
+#: java/typeck.c:427
#, gcc-internal-format
msgid "junk at end of signature string"
msgstr ""
@@ -35702,264 +36889,466 @@ msgstr ""
msgid "bad pc in exception_table"
msgstr ""
-#: objc/objc-act.c:701
+#: lto/lto-elf.c:97 lto/lto-elf.c:118
+#, gcc-internal-format
+msgid "could not read section header: %s"
+msgstr ""
+
+#: lto/lto-elf.c:215
+#, gcc-internal-format
+msgid "two or more sections for %s:"
+msgstr ""
+
+#. Initialize the section header of section SCN. SH_NAME is the section name
+#. as an index into the section header string table. SH_TYPE is the section
+#. type, an SHT_* macro from libelf headers.
+#: lto/lto-elf.c:240
+#, gcc-internal-format
+msgid "elf32_getshdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:242
+#, gcc-internal-format
+msgid "elf64_getshdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:276
+#, gcc-internal-format
+msgid "could not create a new ELF section: %s"
+msgstr ""
+
+#: lto/lto-elf.c:330
+#, gcc-internal-format
+msgid "could not append data to ELF section: %s"
+msgstr ""
+
+#. Validate's ELF_FILE's executable header and, if cached_file_attrs is
+#. uninitialized, caches the architecture.
+#: lto/lto-elf.c:379
+#, gcc-internal-format
+msgid "could not read ELF header: %s"
+msgstr ""
+
+#: lto/lto-elf.c:385
+#, gcc-internal-format
+msgid "not a relocatable ELF object file"
+msgstr ""
+
+#: lto/lto-elf.c:394
+#, gcc-internal-format
+msgid "inconsistent file architecture detected"
+msgstr ""
+
+#: lto/lto-elf.c:420
+#, gcc-internal-format
+msgid "could not read ELF identification information: %s"
+msgstr ""
+
+#: lto/lto-elf.c:439
+#, gcc-internal-format
+msgid "unsupported ELF file class"
+msgstr ""
+
+#: lto/lto-elf.c:472
+#, gcc-internal-format
+msgid "could not locate ELF string table: %s"
+msgstr ""
+
+#. Helper functions used by init_ehdr. Initialize ELF_FILE's executable
+#. header using cached data from previously read files.
+#: lto/lto-elf.c:496
+#, gcc-internal-format
+msgid "elf32_newehdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:498
+#, gcc-internal-format
+msgid "elf64_newehdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:554
+#, gcc-internal-format
+msgid "could not open file %s"
+msgstr ""
+
+#: lto/lto-elf.c:561
+#, gcc-internal-format
+msgid "ELF library is older than that used when building GCC"
+msgstr ""
+
+#: lto/lto-elf.c:570
+#, gcc-internal-format
+msgid "could not open ELF file: %s"
+msgstr ""
+
+#: lto/lto-elf.c:614
+#, gcc-internal-format
+msgid "gelf_getehdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:623
+#, gcc-internal-format
+msgid "elf_getscn() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:626
+#, gcc-internal-format
+msgid "gelf_getshdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:629
+#, gcc-internal-format
+msgid "gelf_update_shdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:633
+#, gcc-internal-format
+msgid "gelf_update_ehdr() failed: %s"
+msgstr ""
+
+#: lto/lto-elf.c:641
+#, gcc-internal-format
+msgid "elf_update() failed: %s"
+msgstr ""
+
+#: lto/lto-lang.c:660
+#, gcc-internal-format
+msgid "-fwpa and -fltrans are mutually exclusive"
+msgstr ""
+
+#: lto/lto.c:244
+#, gcc-internal-format
+msgid "bytecode stream: garbage at the end of symbols section"
+msgstr ""
+
+#: lto/lto.c:278
+#, gcc-internal-format
+msgid "unexpected file name %s in linker resolution file. Expected %s"
+msgstr ""
+
+#: lto/lto.c:307
+#, gcc-internal-format
+msgid "tried to read past the end of the linker resolution file"
+msgstr ""
+
+#: lto/lto.c:1002
+#, gcc-internal-format
+msgid "lto_elf_file_open() failed"
+msgstr ""
+
+#: lto/lto.c:1058
+#, gcc-internal-format
+msgid "environment variable COLLECT_GCC must be set"
+msgstr ""
+
+#: lto/lto.c:1063
+#, gcc-internal-format
+msgid "environment variable COLLECT_GCC_OPTIONS must be set"
+msgstr ""
+
+#: lto/lto.c:1072
+#, gcc-internal-format
+msgid "malformed COLLECT_GCC_OPTIONS"
+msgstr ""
+
+#: lto/lto.c:1105
+#, gcc-internal-format
+msgid "opening LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:1123 lto/lto.c:1145
+#, gcc-internal-format
+msgid "writing to LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:1157
+#, gcc-internal-format
+msgid "pex_init failed: %s"
+msgstr ""
+
+#: lto/lto.c:1165
+#, gcc-internal-format
+msgid "can't get program status: %s"
+msgstr ""
+
+#: lto/lto.c:1177
+#, gcc-internal-format
+msgid "%s terminated with status %d"
+msgstr ""
+
+#: lto/lto.c:1186
+#, gcc-internal-format
+msgid "closing LTRANS output list %s: %m"
+msgstr ""
+
+#: lto/lto.c:1699
+#, gcc-internal-format
+msgid "deleting LTRANS input file %s: %m"
+msgstr ""
+
+#: lto/lto.c:1783
+#, gcc-internal-format
+msgid "could not open symbol resolution file: %s"
+msgstr ""
+
+#: objc/objc-act.c:729
#, gcc-internal-format
msgid "%<@end%> must appear in an @implementation context"
msgstr ""
-#: objc/objc-act.c:730
+#: objc/objc-act.c:758
#, gcc-internal-format
msgid "method declaration not in @interface context"
msgstr ""
-#: objc/objc-act.c:741
+#: objc/objc-act.c:769
#, gcc-internal-format
msgid "method definition not in @implementation context"
msgstr ""
-#: objc/objc-act.c:990
+#: objc/objc-act.c:1019
#, gcc-internal-format
msgid "class %qs does not implement the %qE protocol"
msgstr ""
-#: objc/objc-act.c:993
+#: objc/objc-act.c:1022
#, gcc-internal-format
msgid "type %qs does not conform to the %qE protocol"
msgstr ""
-#: objc/objc-act.c:1170
+#: objc/objc-act.c:1199
#, gcc-internal-format
msgid "comparison of distinct Objective-C types lacks a cast"
msgstr ""
-#: objc/objc-act.c:1174
+#: objc/objc-act.c:1203
#, gcc-internal-format
msgid "initialization from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1178
+#: objc/objc-act.c:1207
#, gcc-internal-format
msgid "assignment from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1182
+#: objc/objc-act.c:1211
#, gcc-internal-format
msgid "distinct Objective-C type in return"
msgstr ""
-#: objc/objc-act.c:1186
+#: objc/objc-act.c:1215
#, gcc-internal-format
msgid "passing argument %d of %qE from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1342
+#: objc/objc-act.c:1371
#, gcc-internal-format
msgid "statically allocated instance of Objective-C class %qE"
msgstr ""
-#: objc/objc-act.c:1419
+#: objc/objc-act.c:1448
#, gcc-internal-format
msgid "protocol %qE has circular dependency"
msgstr ""
-#: objc/objc-act.c:1444 objc/objc-act.c:6619
+#: objc/objc-act.c:1473 objc/objc-act.c:6681
#, gcc-internal-format
msgid "cannot find protocol declaration for %qE"
msgstr ""
-#: objc/objc-act.c:1908 objc/objc-act.c:3358 objc/objc-act.c:7234
-#: objc/objc-act.c:7568 objc/objc-act.c:7623 objc/objc-act.c:7648
+#: objc/objc-act.c:1944 objc/objc-act.c:3399 objc/objc-act.c:7297
+#: objc/objc-act.c:7631 objc/objc-act.c:7686 objc/objc-act.c:7711
#, gcc-internal-format
msgid "cannot find interface declaration for %qE"
msgstr ""
-#: objc/objc-act.c:1912
+#: objc/objc-act.c:1948
#, gcc-internal-format
msgid "interface %qE does not have valid constant string layout"
msgstr ""
-#: objc/objc-act.c:1917
+#: objc/objc-act.c:1953
#, gcc-internal-format
msgid "cannot find reference tag for class %qE"
msgstr ""
-#: objc/objc-act.c:2552
+#: objc/objc-act.c:2591
#, gcc-internal-format
-msgid "%Hcreating selector for nonexistent method %qE"
+msgid "creating selector for nonexistent method %qE"
msgstr ""
-#: objc/objc-act.c:2757
+#: objc/objc-act.c:2794
#, gcc-internal-format
msgid "%qE is not an Objective-C class name or alias"
msgstr ""
-#: objc/objc-act.c:2885 objc/objc-act.c:2916 objc/objc-act.c:7496
-#: objc/objc-act.c:7798 objc/objc-act.c:7828
+#: objc/objc-act.c:2923 objc/objc-act.c:2955 objc/objc-act.c:7559
+#: objc/objc-act.c:7861 objc/objc-act.c:7891
#, gcc-internal-format
msgid "Objective-C declarations may only appear in global scope"
msgstr ""
-#: objc/objc-act.c:2890
+#: objc/objc-act.c:2928
#, gcc-internal-format
msgid "cannot find class %qE"
msgstr ""
-#: objc/objc-act.c:2892
+#: objc/objc-act.c:2930
#, gcc-internal-format
msgid "class %qE already exists"
msgstr ""
-#: objc/objc-act.c:2936 objc/objc-act.c:7537
+#: objc/objc-act.c:2975 objc/objc-act.c:7600
#, gcc-internal-format
msgid "%qE redeclared as different kind of symbol"
msgstr ""
-#: objc/objc-act.c:3212
+#: objc/objc-act.c:3253
#, gcc-internal-format
msgid "strong-cast assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3254
+#: objc/objc-act.c:3295
#, gcc-internal-format
msgid "strong-cast may possibly be needed"
msgstr ""
-#: objc/objc-act.c:3264
+#: objc/objc-act.c:3305
#, gcc-internal-format
msgid "instance variable assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3283
+#: objc/objc-act.c:3324
#, gcc-internal-format
msgid "pointer arithmetic for garbage-collected objects not allowed"
msgstr ""
-#: objc/objc-act.c:3289
+#: objc/objc-act.c:3330
#, gcc-internal-format
msgid "global/static variable assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3471
+#: objc/objc-act.c:3819 objc/objc-act.c:3975
#, gcc-internal-format
msgid "use %<-fobjc-exceptions%> to enable Objective-C exception syntax"
msgstr ""
-#: objc/objc-act.c:3814
+#: objc/objc-act.c:3857
#, gcc-internal-format
msgid "@catch parameter is not a known Objective-C class type"
msgstr ""
-#: objc/objc-act.c:3830
+#: objc/objc-act.c:3873
#, gcc-internal-format
msgid "exception of type %<%T%> will be caught"
msgstr ""
-#: objc/objc-act.c:3832
+#: objc/objc-act.c:3875
#, gcc-internal-format
-msgid "%H by earlier handler for %<%T%>"
+msgid " by earlier handler for %<%T%>"
msgstr ""
-#: objc/objc-act.c:3885
+#: objc/objc-act.c:3928
#, gcc-internal-format
msgid "%<@try%> without %<@catch%> or %<@finally%>"
msgstr ""
-#: objc/objc-act.c:3936
+#: objc/objc-act.c:3986
#, gcc-internal-format
msgid "%<@throw%> (rethrow) used outside of a @catch block"
msgstr ""
-#: objc/objc-act.c:4337
+#: objc/objc-act.c:4388
#, gcc-internal-format
msgid "type %q+D does not have a known size"
msgstr ""
-#: objc/objc-act.c:4973
+#: objc/objc-act.c:5020
#, gcc-internal-format
-msgid "%J%s %qs"
+msgid "%s %qs"
msgstr ""
-#: objc/objc-act.c:4996 objc/objc-act.c:5015
+#: objc/objc-act.c:5043 objc/objc-act.c:5062
#, gcc-internal-format
msgid "inconsistent instance variable specification"
msgstr ""
-#: objc/objc-act.c:5880
+#: objc/objc-act.c:5928
#, gcc-internal-format
msgid "can not use an object as parameter to a method"
msgstr ""
-#: objc/objc-act.c:6107
+#: objc/objc-act.c:6156
#, gcc-internal-format
msgid "multiple methods named %<%c%E%> found"
msgstr ""
-#: objc/objc-act.c:6110
+#: objc/objc-act.c:6159
#, gcc-internal-format
-msgid "%Jusing %<%c%s%>"
+msgid "using %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6118
+#: objc/objc-act.c:6168
#, gcc-internal-format
msgid "multiple selectors named %<%c%E%> found"
msgstr ""
-#: objc/objc-act.c:6121
+#: objc/objc-act.c:6171
#, gcc-internal-format
-msgid "%Jfound %<%c%s%>"
+msgid "found %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6130
+#: objc/objc-act.c:6180
#, gcc-internal-format
-msgid "%Jalso found %<%c%s%>"
+msgid "also found %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6344
+#: objc/objc-act.c:6400
#, gcc-internal-format
msgid "no super class declared in @interface for %qE"
msgstr ""
-#: objc/objc-act.c:6382
+#: objc/objc-act.c:6438
#, gcc-internal-format
msgid "found %<-%E%> instead of %<+%E%> in protocol(s)"
msgstr ""
-#: objc/objc-act.c:6440
+#: objc/objc-act.c:6496
#, gcc-internal-format
msgid "invalid receiver type %qs"
msgstr ""
-#: objc/objc-act.c:6455
+#: objc/objc-act.c:6511
#, gcc-internal-format
msgid "%<%c%E%> not found in protocol(s)"
msgstr ""
-#: objc/objc-act.c:6469
+#: objc/objc-act.c:6525
#, gcc-internal-format
msgid "%qE may not respond to %<%c%E%>"
msgstr ""
-#: objc/objc-act.c:6477
+#: objc/objc-act.c:6533
#, gcc-internal-format
msgid "no %<%c%E%> method found"
msgstr ""
-#: objc/objc-act.c:6483
+#: objc/objc-act.c:6540
#, gcc-internal-format
msgid "(Messages without a matching method signature"
msgstr ""
-#: objc/objc-act.c:6484
+#: objc/objc-act.c:6542
#, gcc-internal-format
msgid "will be assumed to return %<id%> and accept"
msgstr ""
-#: objc/objc-act.c:6485
+#: objc/objc-act.c:6544
#, gcc-internal-format
msgid "%<...%> as arguments.)"
msgstr ""
-#: objc/objc-act.c:6719
+#: objc/objc-act.c:6782
#, gcc-internal-format
msgid "undeclared selector %qE"
msgstr ""
@@ -35973,185 +37362,210 @@ 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:6761
+#: objc/objc-act.c:6824
#, gcc-internal-format
msgid "instance variable %qE accessed in class method"
msgstr ""
-#: objc/objc-act.c:6995
+#: objc/objc-act.c:7058
#, gcc-internal-format
msgid "duplicate declaration of method %<%c%E%>"
msgstr ""
-#: objc/objc-act.c:7056
+#: objc/objc-act.c:7119
#, gcc-internal-format
msgid "duplicate interface declaration for category %<%E(%E)%>"
msgstr ""
-#: objc/objc-act.c:7083
+#: objc/objc-act.c:7146
#, gcc-internal-format
msgid "illegal reference type specified for instance variable %qs"
msgstr ""
-#: objc/objc-act.c:7094
+#: objc/objc-act.c:7157
#, gcc-internal-format
msgid "instance variable %qs has unknown size"
msgstr ""
-#: objc/objc-act.c:7119
+#: objc/objc-act.c:7182
#, gcc-internal-format
msgid "type %qE has no default constructor to call"
msgstr ""
-#: objc/objc-act.c:7125
+#: objc/objc-act.c:7188
#, gcc-internal-format
msgid "destructor for %qE shall not be run either"
msgstr ""
#. Vtable pointers are Real Bad(tm), since Obj-C cannot
#. initialize them.
-#: objc/objc-act.c:7137
+#: objc/objc-act.c:7200
#, gcc-internal-format
msgid "type %qE has virtual member functions"
msgstr ""
-#: objc/objc-act.c:7138
+#: objc/objc-act.c:7201
#, gcc-internal-format
msgid "illegal aggregate type %qE specified for instance variable %qs"
msgstr ""
-#: objc/objc-act.c:7148
+#: objc/objc-act.c:7211
#, gcc-internal-format
msgid "type %qE has a user-defined constructor"
msgstr ""
-#: objc/objc-act.c:7150
+#: objc/objc-act.c:7213
#, gcc-internal-format
msgid "type %qE has a user-defined destructor"
msgstr ""
-#: objc/objc-act.c:7154
+#: objc/objc-act.c:7217
#, gcc-internal-format
msgid ""
"C++ constructors and destructors will not be invoked for Objective-C fields"
msgstr ""
-#: objc/objc-act.c:7263
+#: objc/objc-act.c:7326
#, gcc-internal-format
msgid "instance variable %qE is declared private"
msgstr ""
-#: objc/objc-act.c:7274
+#: objc/objc-act.c:7337
#, gcc-internal-format
msgid "instance variable %qE is %s; this will be a hard error in the future"
msgstr ""
-#: objc/objc-act.c:7281
+#: objc/objc-act.c:7344
#, gcc-internal-format
msgid "instance variable %qE is declared %s"
msgstr ""
-#: objc/objc-act.c:7307 objc/objc-act.c:7395
+#: objc/objc-act.c:7370 objc/objc-act.c:7458
#, gcc-internal-format
msgid "incomplete implementation of class %qE"
msgstr ""
-#: objc/objc-act.c:7311 objc/objc-act.c:7399
+#: objc/objc-act.c:7374 objc/objc-act.c:7462
#, gcc-internal-format
msgid "incomplete implementation of category %qE"
msgstr ""
-#: objc/objc-act.c:7316 objc/objc-act.c:7403
+#: objc/objc-act.c:7379 objc/objc-act.c:7466
#, gcc-internal-format
msgid "method definition for %<%c%E%> not found"
msgstr ""
-#: objc/objc-act.c:7444
+#: objc/objc-act.c:7507
#, gcc-internal-format
msgid "%s %qE does not fully implement the %qE protocol"
msgstr ""
-#: objc/objc-act.c:7502 objc/objc-act.c:9189
+#: objc/objc-act.c:7565 objc/objc-act.c:9256
#, gcc-internal-format
msgid "%<@end%> missing in implementation context"
msgstr ""
-#: objc/objc-act.c:7521
+#: objc/objc-act.c:7584
#, gcc-internal-format
msgid "cannot find interface declaration for %qE, superclass of %qE"
msgstr ""
-#: objc/objc-act.c:7551
+#: objc/objc-act.c:7614
#, gcc-internal-format
msgid "reimplementation of class %qE"
msgstr ""
-#: objc/objc-act.c:7581
+#: objc/objc-act.c:7644
#, gcc-internal-format
msgid "conflicting super class name %qE"
msgstr ""
-#: objc/objc-act.c:7584
+#: objc/objc-act.c:7647
#, gcc-internal-format
msgid "previous declaration of %qE"
msgstr ""
-#: objc/objc-act.c:7586
+#: objc/objc-act.c:7649
#, gcc-internal-format
msgid "previous declaration"
msgstr ""
-#: objc/objc-act.c:7602 objc/objc-act.c:7600
+#: objc/objc-act.c:7665 objc/objc-act.c:7663
#, gcc-internal-format
msgid "duplicate interface declaration for class %qE"
msgstr ""
-#: objc/objc-act.c:7856
+#: objc/objc-act.c:7919
#, gcc-internal-format
msgid "duplicate declaration for protocol %qE"
msgstr ""
-#: objc/objc-act.c:8684
+#: objc/objc-act.c:8740
#, gcc-internal-format
-msgid "%Jconflicting types for %<%c%s%>"
+msgid "conflicting types for %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:8687
+#: objc/objc-act.c:8744
#, gcc-internal-format
-msgid "%Jprevious declaration of %<%c%s%>"
+msgid "previous declaration of %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:8773
+#: objc/objc-act.c:8834
#, gcc-internal-format
msgid "no super class declared in interface for %qE"
msgstr ""
-#: objc/objc-act.c:8826
+#: objc/objc-act.c:8893
#, gcc-internal-format
msgid "[super ...] must appear in a method context"
msgstr ""
-#: objc/objc-act.c:8865
+#: objc/objc-act.c:8932
#, gcc-internal-format
msgid "method possibly missing a [super dealloc] call"
msgstr ""
-#: objc/objc-act.c:9479
+#: objc/objc-act.c:9549
#, gcc-internal-format
msgid "local declaration of %qE hides instance variable"
msgstr ""
-#: ada/gcc-interface/misc.c:195
+#: ada/gcc-interface/misc.c:196
#, gcc-internal-format
msgid "missing argument to \"-%s\""
msgstr ""
-#: ada/gcc-interface/misc.c:253
+#: ada/gcc-interface/misc.c:254
#, gcc-internal-format
msgid "%<-gnat%> misspelled as %<-gant%>"
msgstr ""
-#: ada/gcc-interface/misc.c:311
+#: ada/gcc-interface/misc.c:312
#, gcc-internal-format
msgid "-fexcess-precision=standard for Ada"
msgstr ""
+
+#: ada/gcc-interface/utils.c:5275
+#, gcc-internal-format
+msgid "%qs attribute requires prototypes with named arguments"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5287
+#, gcc-internal-format
+msgid "%qs attribute only applies to variadic functions"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5450
+#, gcc-internal-format
+msgid "invalid vector type for attribute %qs"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5513
+#, gcc-internal-format
+msgid "attribute %qs applies to array types only"
+msgstr ""
+
+#: ada/gcc-interface/utils.c:5540
+#, gcc-internal-format
+msgid "invalid element type for attribute %qs"
+msgstr ""
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index a75442eb6c7..cb3f7dae31f 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -318,6 +318,13 @@ print_rtx (const_rtx in_rtx)
dump_addr (outfile, "/", (void*)val);
#endif
}
+ else if (i == 0 && GET_CODE (in_rtx) == DEBUG_EXPR)
+ {
+#ifndef GENERATOR_FILE
+ fprintf (outfile, " D#%i",
+ DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (in_rtx)));
+#endif
+ }
break;
case 'e':
@@ -378,6 +385,22 @@ print_rtx (const_rtx in_rtx)
fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
#endif
}
+ else if (i == 6 && GET_CODE (in_rtx) == ASM_OPERANDS)
+ {
+#ifndef GENERATOR_FILE
+ fprintf (outfile, " %s:%i",
+ locator_file (ASM_OPERANDS_SOURCE_LOCATION (in_rtx)),
+ locator_line (ASM_OPERANDS_SOURCE_LOCATION (in_rtx)));
+#endif
+ }
+ else if (i == 1 && GET_CODE (in_rtx) == ASM_INPUT)
+ {
+#ifndef GENERATOR_FILE
+ fprintf (outfile, " %s:%i",
+ locator_file (ASM_INPUT_SOURCE_LOCATION (in_rtx)),
+ locator_line (ASM_INPUT_SOURCE_LOCATION (in_rtx)));
+#endif
+ }
else if (i == 6 && NOTE_P (in_rtx))
{
/* This field is only used for NOTE_INSN_DELETED_LABEL, and
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index f4b74d95ffc..ded9ea84308 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -541,7 +541,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
&& DECL_STRUCT_FUNCTION (node) != 0)
{
indent_to (file, indent + 4);
- dump_addr (file, "saved-insns ", DECL_STRUCT_FUNCTION (node));
+ dump_addr (file, "struct-function ", DECL_STRUCT_FUNCTION (node));
}
if ((code == VAR_DECL || code == PARM_DECL)
diff --git a/gcc/real.h b/gcc/real.h
index e72723e01ea..e1fd3b07f60 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -32,6 +32,9 @@ extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc
# if MPC_VERSION >= MPC_VERSION_NUM(0,6,1)
# define HAVE_mpc_pow
# endif
+# if MPC_VERSION >= MPC_VERSION_NUM(0,7,1)
+# define HAVE_mpc_arc
+# endif
#endif
#endif
#include "machmode.h"
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 0f11c91a3de..96e9bd9437a 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -904,6 +904,9 @@ struct reg_pref
run. */
static struct reg_pref *reg_pref;
+/* Current size of reg_info. */
+static int reg_info_size;
+
/* Return the reg_class in which pseudo reg number REGNO is best allocated.
This function is sometimes called before the info has been computed.
When that happens, just return GENERAL_REGS, which is innocuous. */
@@ -937,9 +940,6 @@ reg_cover_class (int regno)
-/* Current size of reg_info. */
-static int reg_info_size;
-
/* Allocate space for reg info. */
static void
allocate_reg_info (void)
@@ -1040,6 +1040,7 @@ setup_reg_classes (int regno,
{
if (reg_pref == NULL)
return;
+ gcc_assert (reg_info_size == max_reg_num ());
reg_pref[regno].prefclass = prefclass;
reg_pref[regno].altclass = altclass;
reg_pref[regno].coverclass = coverclass;
@@ -1321,7 +1322,7 @@ find_subregs_of_mode (rtx x)
}
}
-static unsigned int
+void
init_subregs_of_mode (void)
{
basic_block bb;
@@ -1336,8 +1337,6 @@ init_subregs_of_mode (void)
FOR_BB_INSNS (bb, insn)
if (INSN_P (insn))
find_subregs_of_mode (PATTERN (insn));
-
- return 0;
}
/* Return 1 if REGNO has had an invalid mode change in CLASS from FROM
@@ -1367,74 +1366,22 @@ invalid_mode_change_p (unsigned int regno,
return false;
}
-static unsigned int
+void
finish_subregs_of_mode (void)
{
htab_delete (subregs_of_mode);
subregs_of_mode = 0;
- return 0;
}
#else
-static unsigned int
+void
init_subregs_of_mode (void)
{
- return 0;
}
-static unsigned int
+void
finish_subregs_of_mode (void)
{
- return 0;
}
#endif /* CANNOT_CHANGE_MODE_CLASS */
-static bool
-gate_subregs_of_mode_init (void)
-{
-#ifdef CANNOT_CHANGE_MODE_CLASS
- return true;
-#else
- return false;
-#endif
-}
-
-struct rtl_opt_pass pass_subregs_of_mode_init =
-{
- {
- RTL_PASS,
- "subregs_of_mode_init", /* name */
- gate_subregs_of_mode_init, /* gate */
- init_subregs_of_mode, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_NONE, /* tv_id */
- 0, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- }
-};
-
-struct rtl_opt_pass pass_subregs_of_mode_finish =
-{
- {
- RTL_PASS,
- "subregs_of_mode_finish", /* name */
- gate_subregs_of_mode_init, /* gate */
- finish_subregs_of_mode, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_NONE, /* tv_id */
- 0, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- }
-};
-
-
#include "gt-reginfo.h"
diff --git a/gcc/regmove.c b/gcc/regmove.c
index a411183c550..4d45d5d1beb 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "tree-pass.h"
#include "df.h"
+#include "ira.h"
static int optimize_reg_copy_1 (rtx, rtx, rtx);
static void optimize_reg_copy_2 (rtx, rtx, rtx);
@@ -1226,6 +1227,9 @@ regmove_optimize (void)
df_note_add_problem ();
df_analyze ();
+ if (flag_ira_loop_pressure)
+ ira_set_pseudo_classes (dump_file);
+
regstat_init_n_sets_and_refs ();
regstat_compute_ri ();
@@ -1248,6 +1252,8 @@ regmove_optimize (void)
}
regstat_free_n_sets_and_refs ();
regstat_free_ri ();
+ if (flag_ira_loop_pressure)
+ free_reg_info ();
return 0;
}
diff --git a/gcc/reload1.c b/gcc/reload1.c
index cc14673be92..5a1839944dc 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -1136,36 +1136,25 @@ reload (rtx first, int global)
for (use = DF_REG_USE_CHAIN (i); use; use = next)
{
- rtx *loc = DF_REF_LOC (use);
- rtx x = *loc;
-
insn = DF_REF_INSN (use);
+
+ /* Make sure the next ref is for a different instruction,
+ so that we're not affected by the rescan. */
next = DF_REF_NEXT_REG (use);
+ while (next && DF_REF_INSN (next) == insn)
+ next = DF_REF_NEXT_REG (next);
if (DEBUG_INSN_P (insn))
{
- gcc_assert (x == reg
- || (GET_CODE (x) == SUBREG
- && SUBREG_REG (x) == reg));
-
if (!equiv)
{
INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
df_insn_rescan_debug_internal (insn);
}
else
- {
- if (x == reg)
- *loc = copy_rtx (equiv);
- else if (GET_CODE (x) == SUBREG
- && SUBREG_REG (x) == reg)
- *loc = simplify_gen_subreg (GET_MODE (x), equiv,
- GET_MODE (reg),
- SUBREG_BYTE (x));
- else
- gcc_unreachable ();
- *loc = wrap_constant (GET_MODE (x), *loc);
- }
+ INSN_VAR_LOCATION_LOC (insn)
+ = simplify_replace_rtx (INSN_VAR_LOCATION_LOC (insn),
+ reg, equiv);
}
}
}
diff --git a/gcc/rtl.c b/gcc/rtl.c
index feeb40bf61b..aefbbf347d9 100644
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -164,6 +164,20 @@ rtvec_alloc (int n)
return rt;
}
+/* Create a bitwise copy of VEC. */
+
+rtvec
+shallow_copy_rtvec (rtvec vec)
+{
+ rtvec newvec;
+ int n;
+
+ n = GET_NUM_ELEM (vec);
+ newvec = rtvec_alloc (n);
+ memcpy (&newvec->elem[0], &vec->elem[0], sizeof (rtx) * n);
+ return newvec;
+}
+
/* Return the number of bytes occupied by rtx value X. */
unsigned int
@@ -232,6 +246,8 @@ copy_rtx (rtx orig)
switch (code)
{
case REG:
+ case DEBUG_EXPR:
+ case VALUE:
case CONST_INT:
case CONST_DOUBLE:
case CONST_FIXED:
@@ -381,6 +397,7 @@ rtx_equal_p_cb (const_rtx x, const_rtx y, rtx_equal_p_callback_function cb)
case SYMBOL_REF:
return XSTR (x, 0) == XSTR (y, 0);
+ case DEBUG_EXPR:
case VALUE:
case SCRATCH:
case CONST_DOUBLE:
@@ -496,6 +513,7 @@ rtx_equal_p (const_rtx x, const_rtx y)
case SYMBOL_REF:
return XSTR (x, 0) == XSTR (y, 0);
+ case DEBUG_EXPR:
case VALUE:
case SCRATCH:
case CONST_DOUBLE:
diff --git a/gcc/rtl.def b/gcc/rtl.def
index 2aa76b1f6c8..acb7ee915b8 100644
--- a/gcc/rtl.def
+++ b/gcc/rtl.def
@@ -88,6 +88,10 @@ DEF_RTL_EXPR(UNKNOWN, "UnKnown", "*", RTX_EXTRA)
DECL codes in trees. */
DEF_RTL_EXPR(VALUE, "value", "0", RTX_OBJ)
+/* The RTL generated for a DEBUG_EXPR_DECL. It links back to the
+ DEBUG_EXPR_DECL in the first operand. */
+DEF_RTL_EXPR(DEBUG_EXPR, "debug_expr", "0", RTX_OBJ)
+
/* ---------------------------------------------------------------------
Expressions used in constructing lists.
--------------------------------------------------------------------- */
diff --git a/gcc/rtl.h b/gcc/rtl.h
index a7be009b619..0f7044e5e1a 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -762,7 +762,7 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
#define INSN_LOCATOR(INSN) XINT (INSN, 4)
/* LOCATION of an RTX if relevant. */
#define RTL_LOCATION(X) (INSN_P (X) ? \
- locator_location (INSN_LOCATOR (x)) \
+ locator_location (INSN_LOCATOR (X)) \
: UNKNOWN_LOCATION)
/* LOCATION of current INSN. */
#define CURR_INSN_LOCATION (locator_location (curr_insn_locator ()))
@@ -930,6 +930,9 @@ extern const char * const reg_note_name[];
#define NOTE_DURING_CALL_P(RTX) \
(RTL_FLAG_CHECK1("NOTE_VAR_LOCATION_DURING_CALL_P", (RTX), NOTE)->call)
+/* DEBUG_EXPR_DECL corresponding to a DEBUG_EXPR RTX. */
+#define DEBUG_EXPR_TREE_DECL(RTX) XCTREE (RTX, 0, DEBUG_EXPR)
+
/* Possible initialization status of a variable. When requested
by the user, this information is tracked and recorded in the DWARF
debug information, along with the variable's location. */
@@ -1565,6 +1568,7 @@ extern rtx rtx_alloc_stat (RTX_CODE MEM_STAT_DECL);
#define rtx_alloc(c) rtx_alloc_stat (c MEM_STAT_INFO)
extern rtvec rtvec_alloc (int);
+extern rtvec shallow_copy_rtvec (rtvec);
extern bool shared_const_p (const_rtx);
extern rtx copy_rtx (rtx);
extern void dump_rtx_statistics (void);
@@ -1765,6 +1769,8 @@ extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode,
unsigned int);
extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode,
unsigned int);
+extern rtx simplify_replace_fn_rtx (rtx, const_rtx,
+ rtx (*fn) (rtx, void *), void *);
extern rtx simplify_replace_rtx (rtx, const_rtx, rtx);
extern rtx simplify_rtx (const_rtx);
extern rtx avoid_constant_pool_reference (rtx);
@@ -1927,6 +1933,8 @@ extern void init_move_cost (enum machine_mode);
extern bool resize_reg_info (void);
/* Free up register info memory. */
extern void free_reg_info (void);
+extern void init_subregs_of_mode (void);
+extern void finish_subregs_of_mode (void);
/* recog.c */
extern rtx extract_asm_operands (rtx);
@@ -2404,8 +2412,6 @@ extern void invert_br_probabilities (rtx);
extern bool expensive_function_p (int);
/* In cfgexpand.c */
extern void add_reg_br_prob_note (rtx last, int probability);
-extern rtx wrap_constant (enum machine_mode, rtx);
-extern rtx unwrap_constant (rtx);
/* In var-tracking.c */
extern unsigned int variable_tracking_main (void);
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index cef383a1d0e..1fd484d97aa 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -211,6 +211,16 @@ sd_debug_dep (dep_t dep)
fprintf (stderr, "\n");
}
+/* Determine whether DEP is a dependency link of a non-debug insn on a
+ debug insn. */
+
+static inline bool
+depl_on_debug_p (dep_link_t dep)
+{
+ return (DEBUG_INSN_P (DEP_LINK_PRO (dep))
+ && !DEBUG_INSN_P (DEP_LINK_CON (dep)));
+}
+
/* Functions to operate with a single link from the dependencies lists -
dep_link_t. */
@@ -246,7 +256,9 @@ add_to_deps_list (dep_link_t link, deps_list_t l)
{
attach_dep_link (link, &DEPS_LIST_FIRST (l));
- ++DEPS_LIST_N_LINKS (l);
+ /* Don't count debug deps. */
+ if (!depl_on_debug_p (link))
+ ++DEPS_LIST_N_LINKS (l);
}
/* Detach dep_link L from the list. */
@@ -271,7 +283,9 @@ remove_from_deps_list (dep_link_t link, deps_list_t list)
{
detach_dep_link (link);
- --DEPS_LIST_N_LINKS (list);
+ /* Don't count debug deps. */
+ if (!depl_on_debug_p (link))
+ --DEPS_LIST_N_LINKS (list);
}
/* Move link LINK from list FROM to list TO. */
@@ -668,10 +682,21 @@ sd_lists_size (const_rtx insn, sd_list_types_def list_types)
}
/* Return true if INSN's lists defined by LIST_TYPES are all empty. */
+
bool
sd_lists_empty_p (const_rtx insn, sd_list_types_def list_types)
{
- return sd_lists_size (insn, list_types) == 0;
+ while (list_types != SD_LIST_NONE)
+ {
+ deps_list_t list;
+ bool resolved_p;
+
+ sd_next_list (insn, &list_types, &list, &resolved_p);
+ if (!deps_list_empty_p (list))
+ return false;
+ }
+
+ return true;
}
/* Initialize data for INSN. */
@@ -1201,7 +1226,6 @@ sd_add_dep (dep_t dep, bool resolved_p)
rtx insn = DEP_CON (dep);
gcc_assert (INSN_P (insn) && INSN_P (elem) && insn != elem);
- gcc_assert (!DEBUG_INSN_P (elem) || DEBUG_INSN_P (insn));
if ((current_sched_info->flags & DO_SPECULATION)
&& !sched_insn_is_legitimate_for_speculation_p (insn, DEP_STATUS (dep)))
@@ -1528,7 +1552,8 @@ add_insn_mem_dependence (struct deps *deps, bool read_p,
{
insn_list = &deps->pending_read_insns;
mem_list = &deps->pending_read_mems;
- deps->pending_read_list_length++;
+ if (!DEBUG_INSN_P (insn))
+ deps->pending_read_list_length++;
}
else
{
@@ -2408,63 +2433,63 @@ sched_analyze_2 (struct deps *deps, rtx x, rtx insn)
rtx pending, pending_mem;
rtx t = x;
- if (DEBUG_INSN_P (insn))
- {
- sched_analyze_2 (deps, XEXP (x, 0), insn);
- return;
- }
-
if (sched_deps_info->use_cselib)
{
t = shallow_copy_rtx (t);
cselib_lookup (XEXP (t, 0), Pmode, 1);
XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0));
}
- t = canon_rtx (t);
- pending = deps->pending_read_insns;
- pending_mem = deps->pending_read_mems;
- while (pending)
- {
- if (read_dependence (XEXP (pending_mem, 0), t)
- && ! sched_insns_conditions_mutex_p (insn, XEXP (pending, 0)))
- note_mem_dep (t, XEXP (pending_mem, 0), XEXP (pending, 0),
- DEP_ANTI);
-
- pending = XEXP (pending, 1);
- pending_mem = XEXP (pending_mem, 1);
- }
- pending = deps->pending_write_insns;
- pending_mem = deps->pending_write_mems;
- while (pending)
+ if (!DEBUG_INSN_P (insn))
{
- if (true_dependence (XEXP (pending_mem, 0), VOIDmode,
- t, rtx_varies_p)
- && ! sched_insns_conditions_mutex_p (insn, XEXP (pending, 0)))
- note_mem_dep (t, XEXP (pending_mem, 0), XEXP (pending, 0),
- sched_deps_info->generate_spec_deps
- ? BEGIN_DATA | DEP_TRUE : DEP_TRUE);
-
- pending = XEXP (pending, 1);
- pending_mem = XEXP (pending_mem, 1);
- }
+ t = canon_rtx (t);
+ pending = deps->pending_read_insns;
+ pending_mem = deps->pending_read_mems;
+ while (pending)
+ {
+ if (read_dependence (XEXP (pending_mem, 0), t)
+ && ! sched_insns_conditions_mutex_p (insn,
+ XEXP (pending, 0)))
+ note_mem_dep (t, XEXP (pending_mem, 0), XEXP (pending, 0),
+ DEP_ANTI);
+
+ pending = XEXP (pending, 1);
+ pending_mem = XEXP (pending_mem, 1);
+ }
- for (u = deps->last_pending_memory_flush; u; u = XEXP (u, 1))
- {
- if (! JUMP_P (XEXP (u, 0)))
- add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
- else if (deps_may_trap_p (x))
+ pending = deps->pending_write_insns;
+ pending_mem = deps->pending_write_mems;
+ while (pending)
{
- if ((sched_deps_info->generate_spec_deps)
- && sel_sched_p () && (spec_info->mask & BEGIN_CONTROL))
- {
- ds_t ds = set_dep_weak (DEP_ANTI, BEGIN_CONTROL,
- MAX_DEP_WEAK);
+ if (true_dependence (XEXP (pending_mem, 0), VOIDmode,
+ t, rtx_varies_p)
+ && ! sched_insns_conditions_mutex_p (insn,
+ XEXP (pending, 0)))
+ note_mem_dep (t, XEXP (pending_mem, 0), XEXP (pending, 0),
+ sched_deps_info->generate_spec_deps
+ ? BEGIN_DATA | DEP_TRUE : DEP_TRUE);
+
+ pending = XEXP (pending, 1);
+ pending_mem = XEXP (pending_mem, 1);
+ }
- note_dep (XEXP (u, 0), ds);
- }
- else
+ for (u = deps->last_pending_memory_flush; u; u = XEXP (u, 1))
+ {
+ if (! JUMP_P (XEXP (u, 0)))
add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
+ else if (deps_may_trap_p (x))
+ {
+ if ((sched_deps_info->generate_spec_deps)
+ && sel_sched_p () && (spec_info->mask & BEGIN_CONTROL))
+ {
+ ds_t ds = set_dep_weak (DEP_ANTI, BEGIN_CONTROL,
+ MAX_DEP_WEAK);
+
+ note_dep (XEXP (u, 0), ds);
+ }
+ else
+ add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
+ }
}
}
@@ -2473,7 +2498,6 @@ sched_analyze_2 (struct deps *deps, rtx x, rtx insn)
if (!deps->readonly)
add_insn_mem_dependence (deps, true, insn, x);
- /* Take advantage of tail recursion here. */
sched_analyze_2 (deps, XEXP (x, 0), insn);
if (cslr_p && sched_deps_info->finish_rhs)
@@ -2773,6 +2797,9 @@ sched_analyze_insn (struct deps *deps, rtx x, rtx insn)
struct deps_reg *reg_last = &deps->reg_last[i];
add_dependence_list (insn, reg_last->sets, 1, REG_DEP_ANTI);
add_dependence_list (insn, reg_last->clobbers, 1, REG_DEP_ANTI);
+
+ if (!deps->readonly)
+ reg_last->uses = alloc_INSN_LIST (insn, reg_last->uses);
}
CLEAR_REG_SET (reg_pending_uses);
@@ -3505,7 +3532,8 @@ remove_from_deps (struct deps *deps, rtx insn)
removed = remove_from_both_dependence_lists (insn, &deps->pending_read_insns,
&deps->pending_read_mems);
- deps->pending_read_list_length -= removed;
+ if (!DEBUG_INSN_P (insn))
+ deps->pending_read_list_length -= removed;
removed = remove_from_both_dependence_lists (insn, &deps->pending_write_insns,
&deps->pending_write_mems);
deps->pending_write_list_length -= removed;
diff --git a/gcc/sched-vis.c b/gcc/sched-vis.c
index 89230efa34c..906e9c31f2a 100644
--- a/gcc/sched-vis.c
+++ b/gcc/sched-vis.c
@@ -521,6 +521,10 @@ print_value (char *buf, const_rtx x, int verbose)
cur = safe_concat (buf, cur, t);
cur = safe_concat (buf, cur, "]");
break;
+ case DEBUG_EXPR:
+ sprintf (t, "D#%i", DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (x)));
+ cur = safe_concat (buf, cur, t);
+ break;
default:
print_exp (t, x, verbose);
cur = safe_concat (buf, cur, t);
@@ -670,11 +674,18 @@ print_insn (char *buf, const_rtx x, int verbose)
if (DECL_P (INSN_VAR_LOCATION_DECL (insn)))
{
tree id = DECL_NAME (INSN_VAR_LOCATION_DECL (insn));
+ char idbuf[32];
if (id)
name = IDENTIFIER_POINTER (id);
+ else if (TREE_CODE (INSN_VAR_LOCATION_DECL (insn))
+ == DEBUG_EXPR_DECL)
+ {
+ sprintf (idbuf, "D#%i",
+ DEBUG_TEMP_UID (INSN_VAR_LOCATION_DECL (insn)));
+ name = idbuf;
+ }
else
{
- char idbuf[32];
sprintf (idbuf, "D.%i",
DECL_UID (INSN_VAR_LOCATION_DECL (insn)));
name = idbuf;
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index 0553740b968..e7d52a63c70 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -307,6 +307,7 @@ const struct gcc_debug_hooks sdb_debug_hooks =
{
sdbout_init, /* init */
sdbout_finish, /* finish */
+ debug_nothing_void, /* assembly_start */
debug_nothing_int_charstar, /* define */
debug_nothing_int_charstar, /* undef */
sdbout_start_source_file, /* start_source_file */
@@ -1705,6 +1706,7 @@ const struct gcc_debug_hooks sdb_debug_hooks =
{
0, /* init */
0, /* finish */
+ 0, /* assembly_start */
0, /* define */
0, /* undef */
0, /* start_source_file */
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 9bc90bda559..70163c36c38 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -1395,6 +1395,9 @@ _eligible_successor_edge_p (edge e1, succ_iterator *ip)
&& !(flags & SUCCS_OUT))
return false;
+ if (EDGE_COUNT (bb->succs) == 0)
+ return false;
+
e2 = EDGE_SUCC (bb, 0);
bb = e2->dest;
}
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 4e87d04abaf..926615ec86f 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -350,38 +350,50 @@ simplify_gen_relational (enum rtx_code code, enum machine_mode mode,
return gen_rtx_fmt_ee (code, mode, op0, op1);
}
-/* Replace all occurrences of OLD_RTX in X with NEW_RTX and try to simplify the
- resulting RTX. Return a new RTX which is as simplified as possible. */
+/* Replace all occurrences of OLD_RTX in X with FN (X', DATA), where X'
+ is an expression in X that is equal to OLD_RTX. Canonicalize and
+ simplify the result.
+
+ If FN is null, assume FN (X', DATA) == copy_rtx (DATA). */
rtx
-simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
+simplify_replace_fn_rtx (rtx x, const_rtx old_rtx,
+ rtx (*fn) (rtx, void *), void *data)
{
enum rtx_code code = GET_CODE (x);
enum machine_mode mode = GET_MODE (x);
enum machine_mode op_mode;
- rtx op0, op1, op2;
+ const char *fmt;
+ rtx op0, op1, op2, newx, op;
+ rtvec vec, newvec;
+ int i, j;
- /* If X is OLD_RTX, return NEW_RTX. Otherwise, if this is an expression, try
- to build a new expression substituting recursively. If we can't do
- anything, return our input. */
+ /* If X is OLD_RTX, return FN (X, DATA), with a null FN. Otherwise,
+ if this is an expression, try to build a new expression, substituting
+ recursively. If we can't do anything, return our input. */
if (rtx_equal_p (x, old_rtx))
- return copy_rtx (new_rtx);
+ {
+ if (fn)
+ return fn (x, data);
+ else
+ return copy_rtx ((rtx) data);
+ }
switch (GET_RTX_CLASS (code))
{
case RTX_UNARY:
op0 = XEXP (x, 0);
op_mode = GET_MODE (op0);
- op0 = simplify_replace_rtx (op0, old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (op0, old_rtx, fn, data);
if (op0 == XEXP (x, 0))
return x;
return simplify_gen_unary (code, mode, op0, op_mode);
case RTX_BIN_ARITH:
case RTX_COMM_ARITH:
- op0 = simplify_replace_rtx (XEXP (x, 0), old_rtx, new_rtx);
- op1 = simplify_replace_rtx (XEXP (x, 1), old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (XEXP (x, 0), old_rtx, fn, data);
+ op1 = simplify_replace_fn_rtx (XEXP (x, 1), old_rtx, fn, data);
if (op0 == XEXP (x, 0) && op1 == XEXP (x, 1))
return x;
return simplify_gen_binary (code, mode, op0, op1);
@@ -391,8 +403,8 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
op0 = XEXP (x, 0);
op1 = XEXP (x, 1);
op_mode = GET_MODE (op0) != VOIDmode ? GET_MODE (op0) : GET_MODE (op1);
- op0 = simplify_replace_rtx (op0, old_rtx, new_rtx);
- op1 = simplify_replace_rtx (op1, old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (op0, old_rtx, fn, data);
+ op1 = simplify_replace_fn_rtx (op1, old_rtx, fn, data);
if (op0 == XEXP (x, 0) && op1 == XEXP (x, 1))
return x;
return simplify_gen_relational (code, mode, op_mode, op0, op1);
@@ -401,9 +413,9 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
case RTX_BITFIELD_OPS:
op0 = XEXP (x, 0);
op_mode = GET_MODE (op0);
- op0 = simplify_replace_rtx (op0, old_rtx, new_rtx);
- op1 = simplify_replace_rtx (XEXP (x, 1), old_rtx, new_rtx);
- op2 = simplify_replace_rtx (XEXP (x, 2), old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (op0, old_rtx, fn, data);
+ op1 = simplify_replace_fn_rtx (XEXP (x, 1), old_rtx, fn, data);
+ op2 = simplify_replace_fn_rtx (XEXP (x, 2), old_rtx, fn, data);
if (op0 == XEXP (x, 0) && op1 == XEXP (x, 1) && op2 == XEXP (x, 2))
return x;
if (op_mode == VOIDmode)
@@ -411,10 +423,9 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
return simplify_gen_ternary (code, mode, op_mode, op0, op1, op2);
case RTX_EXTRA:
- /* The only case we try to handle is a SUBREG. */
if (code == SUBREG)
{
- op0 = simplify_replace_rtx (SUBREG_REG (x), old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (SUBREG_REG (x), old_rtx, fn, data);
if (op0 == SUBREG_REG (x))
return x;
op0 = simplify_gen_subreg (GET_MODE (x), op0,
@@ -427,15 +438,15 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
case RTX_OBJ:
if (code == MEM)
{
- op0 = simplify_replace_rtx (XEXP (x, 0), old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (XEXP (x, 0), old_rtx, fn, data);
if (op0 == XEXP (x, 0))
return x;
return replace_equiv_address_nv (x, op0);
}
else if (code == LO_SUM)
{
- op0 = simplify_replace_rtx (XEXP (x, 0), old_rtx, new_rtx);
- op1 = simplify_replace_rtx (XEXP (x, 1), old_rtx, new_rtx);
+ op0 = simplify_replace_fn_rtx (XEXP (x, 0), old_rtx, fn, data);
+ op1 = simplify_replace_fn_rtx (XEXP (x, 1), old_rtx, fn, data);
/* (lo_sum (high x) x) -> x */
if (GET_CODE (op0) == HIGH && rtx_equal_p (XEXP (op0, 0), op1))
@@ -450,7 +461,53 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
default:
break;
}
- return x;
+
+ newx = x;
+ fmt = GET_RTX_FORMAT (code);
+ for (i = 0; fmt[i]; i++)
+ switch (fmt[i])
+ {
+ case 'E':
+ vec = XVEC (x, i);
+ newvec = XVEC (newx, i);
+ for (j = 0; j < GET_NUM_ELEM (vec); j++)
+ {
+ op = simplify_replace_fn_rtx (RTVEC_ELT (vec, j),
+ old_rtx, fn, data);
+ if (op != RTVEC_ELT (vec, j))
+ {
+ if (newvec == vec)
+ {
+ newvec = shallow_copy_rtvec (vec);
+ if (x == newx)
+ newx = shallow_copy_rtx (x);
+ XVEC (newx, i) = newvec;
+ }
+ RTVEC_ELT (newvec, j) = op;
+ }
+ }
+ break;
+
+ case 'e':
+ op = simplify_replace_fn_rtx (XEXP (x, i), old_rtx, fn, data);
+ if (op != XEXP (x, i))
+ {
+ if (x == newx)
+ newx = shallow_copy_rtx (x);
+ XEXP (newx, i) = op;
+ }
+ break;
+ }
+ return newx;
+}
+
+/* Replace all occurrences of OLD_RTX in X with NEW_RTX and try to simplify the
+ resulting RTX. Return a new RTX which is as simplified as possible. */
+
+rtx
+simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx)
+{
+ return simplify_replace_fn_rtx (x, old_rtx, 0, new_rtx);
}
/* Try to simplify a unary operation CODE whose output mode is to be
@@ -462,9 +519,6 @@ simplify_unary_operation (enum rtx_code code, enum machine_mode mode,
{
rtx trueop, tem;
- if (GET_CODE (op) == CONST)
- op = XEXP (op, 0);
-
trueop = avoid_constant_pool_reference (op);
tem = simplify_const_unary_operation (code, mode, trueop, op_mode);
@@ -1245,6 +1299,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode,
case US_TRUNCATE:
case SS_NEG:
case US_NEG:
+ case SS_ABS:
return 0;
default:
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 5967fb5770f..d070b10e3dc 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1118,7 +1118,8 @@ place_field (record_layout_info rli, tree field)
/* No, we need to skip space before this field.
Bump the cumulative size to multiple of field alignment. */
- warning (OPT_Wpadded, "padding struct to align %q+D", field);
+ if (DECL_SOURCE_LOCATION (field) != BUILTINS_LOCATION)
+ warning (OPT_Wpadded, "padding struct to align %q+D", field);
/* If the alignment is still within offset_align, just align
the bit position. */
@@ -1483,7 +1484,8 @@ finalize_record_size (record_layout_info rli)
= round_up_loc (input_location, unpadded_size_unit, TYPE_ALIGN_UNIT (rli->t));
if (TREE_CONSTANT (unpadded_size)
- && simple_cst_equal (unpadded_size, TYPE_SIZE (rli->t)) == 0)
+ && simple_cst_equal (unpadded_size, TYPE_SIZE (rli->t)) == 0
+ && input_location != BUILTINS_LOCATION)
warning (OPT_Wpadded, "padding struct size to alignment boundary");
if (warn_packed && TREE_CODE (rli->t) == RECORD_TYPE
diff --git a/gcc/target.h b/gcc/target.h
index c65063cbfc6..2c7fa4a6aa9 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -908,7 +908,7 @@ struct gcc_target
/* Return the rtx for the result of a libcall of mode MODE,
calling the function FN_NAME. */
- rtx (*libcall_value) (enum machine_mode, rtx);
+ rtx (*libcall_value) (enum machine_mode, const_rtx);
/* Return an rtx for the argument pointer incoming to the
current function. */
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index dd52da98638..8614a4ff669 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -603,14 +603,19 @@ default_function_value (const_tree ret_type ATTRIBUTE_UNUSED,
#ifdef FUNCTION_VALUE
return FUNCTION_VALUE (ret_type, fn_decl_or_type);
#else
- return NULL_RTX;
+ gcc_unreachable ();
#endif
}
rtx
-default_libcall_value (enum machine_mode mode, rtx fun ATTRIBUTE_UNUSED)
+default_libcall_value (enum machine_mode mode ATTRIBUTE_UNUSED,
+ const_rtx fun ATTRIBUTE_UNUSED)
{
+#ifdef LIBCALL_VALUE
return LIBCALL_VALUE (mode);
+#else
+ gcc_unreachable ();
+#endif
}
rtx
diff --git a/gcc/targhooks.h b/gcc/targhooks.h
index 490d4ceeb91..3680b9bb63f 100644
--- a/gcc/targhooks.h
+++ b/gcc/targhooks.h
@@ -98,7 +98,7 @@ extern const char *hook_invalid_arg_for_unprototyped_fn
(const_tree, const_tree, const_tree);
extern bool hook_bool_const_rtx_commutative_p (const_rtx, int);
extern rtx default_function_value (const_tree, const_tree, bool);
-extern rtx default_libcall_value (enum machine_mode, rtx);
+extern rtx default_libcall_value (enum machine_mode, const_rtx);
extern rtx default_internal_arg_pointer (void);
extern rtx default_static_chain (const_tree, bool);
extern void default_trampoline_init (rtx, tree, rtx);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 11da3e73dd7..4d6eb811876 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,472 @@
+2009-10-23 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/lambda/lambda-nested2.C: New.
+
+ Core issue 899
+ * g++.dg/cpp0x/explicit4.C: New.
+
+2009-10-23 Joseph Myers <joseph@codesourcery.com>
+
+ * g++.dg/abi/rtti3.C, g++.dg/abi/thunk4.C: Skip for *-*-mingw* and
+ *-*-cygwin.
+ * g++.dg/cpp0x/lambda/lambda-mangle.C: Disable weak symbols tests
+ for *-*-mingw* and *-*-cygwin.
+ * g++.dg/opt/vt1.C: Skip for *-*-mingw* and *-*_cygwin.
+ * g++.dg/template/spec35.C: Disable weak symbol test for
+ *-*-mingw* and *-*-cygwin.
+
+ PR testsuite/31342
+ * gcc.target/i386/pic-1.c: Skip for *-*-mingw* and *-*-cygwin.
+
+2009-10-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41800
+ * gfortran.dg/class_10.f03: New test.
+
+2009-10-22 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/41787
+ * gcc.target/powerpc/vsx-vrsave.c: New file.
+
+2009-10-23 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/41673
+ * gcc.dg/Wstrict-aliasing-bogus-vla-1.c: New test.
+
+2009-10-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41778
+ * gcc.dg/tree-ssa/ssa-pre-26.c: New testcase.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41791
+ * g++.dg/lto/20091022-2_0.C: New testcase.
+
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41730
+ * g++.dg/lto/20091022-1_0.C: New testcase.
+
+2009-10-22 Jan Hubicka <jh@suse.cz>
+
+ * gcc.c-torture/compile/pr40556.c: New testcase.
+
+2009-10-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41781
+ * gfortran.dg/goto_8.f90: New test case.
+
+2009-10-21 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/41497
+ * gcc.dg/tree-ssa/pr41497.c: New.
+
+2009-10-21 Steve Ellcey <sje@cup.hp.com>
+
+ * g++.dg/tree-ssa/copyprop.C: Use include to define free().
+
+2009-10-21 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/tls/pie-1.c: New test.
+
+2009-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/abi/mangle33.C: New test.
+
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr22.adb: New test.
+
+2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/loop_optimization7.ad[sb]: New test.
+ * gnat.dg/loop_optimization7_pkg.ads: New helper.
+
+2009-10-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41706
+ PR fortran/41766
+ * gfortran.dg/class_9.f03: Extended test case.
+ * gfortran.dg/select_type_7.f03: New test case.
+
+2009-10-20 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/lto/20091020-3_0.c: New testcase.
+
+2009-10-20 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41761
+ * gcc.dg/lto/20091020-1_0.c: New testcase.
+ * gcc.dg/lto/20091020-1_1.c: Likewise.
+ * gcc.dg/lto/20091020-2_0.c: Likewise.
+ * gcc.dg/lto/20091020-2_1.c: Likewise.
+
+2009-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/41340
+ * gcc.dg/pr41340.c: New test.
+
+2009-10-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr21.ad[sb]: New test.
+ * gnat.dg/discr21_pkg.ads: New helper.
+
+2009-10-20 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41706
+ * gfortran.dg/class_9 : New test.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/raw-string-1.c: New test.
+ * gcc.dg/raw-string-2.c: New test.
+ * gcc.dg/raw-string-3.c: New test.
+ * gcc.dg/raw-string-4.c: New test.
+ * gcc.dg/raw-string-5.c: New test.
+ * gcc.dg/raw-string-6.c: New test.
+ * gcc.dg/raw-string-7.c: New test.
+ * gcc.dg/utf8-1.c: New test.
+ * gcc.dg/utf8-2.c: New test.
+ * gcc.dg/utf-badconcat2.c: New test.
+ * gcc.dg/utf-dflt2.c: New test.
+ * gcc.dg/cpp/include6.c: New test.
+ * g++.dg/ext/raw-string-1.C: New test.
+ * g++.dg/ext/raw-string-2.C: New test.
+ * g++.dg/ext/raw-string-3.C: New test.
+ * g++.dg/ext/raw-string-4.C: New test.
+ * g++.dg/ext/raw-string-5.C: New test.
+ * g++.dg/ext/raw-string-6.C: New test.
+ * g++.dg/ext/raw-string-7.C: New test.
+ * g++.dg/ext/utf8-1.C: New test.
+ * g++.dg/ext/utf8-2.C: New test.
+ * g++.dg/ext/utf-badconcat2.C: New test.
+ * g++.dg/ext/utf-dflt2.C: New test.
+
+ * gcc.dg/cleanup-13.c: New test.
+
+2009-10-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41586
+ * gfortran.dg/auto_dealloc_1.f90: New test case.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ Port from redhat/gcc-4_4-branch:
+ 2009-10-08 Jakub Jelinek <jakub@redhat.com>
+ * gcc.dg/debug/vta-2.c: New test.
+
+ 2009-09-30 Alexandre Oliva <aoliva@redhat.com>
+ * gcc.dg/debug/vta-1.c: New.
+
+2009-10-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/noreturn2.ad[sb]: New test.
+
+2009-10-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/41755
+ * gfortran.dg/equiv_8.f90: New test.
+ * gfortran.dg/class_allocate_1.f03: Remove obsolete FIXME.
+
+2009-10-19 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.target/arm/neon-thumb2-move.c: New test.
+
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/debug/vta-3.c: New test.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/nested_proc.adb: Rename into...
+ * gnat.dg/nested_proc1.adb: ...this.
+ * gnat.dg/nested_proc2.adb: New test.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/noreturn1.ad[sb]: New test.
+
+2009-10-17 Janus Weil <janus@gcc.gnu.org>
+ Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41629
+ * gfortran.dg/class_6.f90: New test.
+
+ PR fortran/41608
+ PR fortran/41587
+ * gfortran.dg/class_7.f90: New test.
+
+ PR fortran/41618
+ * gfortran.dg/class_8.f90: New test.
+
+2009-10-17 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/lto/20091017-1_0.c: New testcase.
+ * gcc.dg/lto/20091017-1_1.c: Likewise.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/unchecked_convert4.adb: Add missing rep clause.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aggr11.adb: New test.
+ * gnat.dg/aggr11_pkg.ads: New helper.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/slice8.adb: New test.
+ * gnat.dg/slice8_pkg1.ads: New helper.
+ * gnat.dg/slice8_pkg2.ads: Likewise.
+ * gnat.dg/slice8_pkg3.ad[sb]: Likewise.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/unchecked_convert4.adb: New test.
+
+2009-10-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/38798
+ * g++.dg/cpp0x/trailing5.C: New.
+
+ * g++.dg/cpp0x/auto6.C: Rename to trailing1.C.
+ * g++.dg/cpp0x/auto8.C: Rename to trailing2.C.
+ * g++.dg/cpp0x/auto12.C: Rename to trailing3.C.
+ * g++.dg/cpp0x/auto13.C: Rename to trailing4.C.
+
+2009-10-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41719
+ * gfortran.dg/class_5.f03: New test case.
+ * gfortran.dg/typebound_operator_2.f03: Fixing invalid test case.
+ * gfortran.dg/typebound_operator_4.f03: Ditto.
+
+2009-10-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * g++.dg/ipa/iinline-1.C: Use dg-add-options bind_pic_locally.
+ * g++.dg/other/first-global.C: Likewise.
+ * g++.dg/parse/attr-externally-visible-1.C: Likewise.
+ * g++.dg/torture/pr40323.C: Likewise.
+ * g++.dg/tree-ssa/nothrow-1.C: Likewise.
+ * gcc.dg/inline-33.c: Likewise.
+ * gcc.dg/ipa/ipa-1.c: Likewise.
+ * gcc.dg/ipa/ipa-2.c: Likewise.
+ * gcc.dg/ipa/ipa-3.c: Likewise.
+ * gcc.dg/ipa/ipa-4.c: Likewise.
+ * gcc.dg/ipa/ipa-5.c: Likewise.
+ * gcc.dg/ipa/ipa-7.c: Likewise.
+ * gcc.dg/ipa/ipacost-2.c: Likewise.
+ * gcc.dg/tree-ssa/inline-3.c: Likewise.
+ * gcc.dg/tree-ssa/local-pure-const.c: Likewise.
+ * gfortran.dg/whole_file_5.f90: Likewise.
+ * gfortran.dg/whole_file_6.f90: Likewise.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41728
+ * gcc.c-torture/compile/pr41728.c: New testcase.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41598
+ * gcc.dg/lto/20091016-1_0.c: New testcase.
+ * gcc.dg/lto/20091016-1_1.c: Likewise.
+ * gcc.dg/lto/20091016-1_a.h: Likewise.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41715
+ * gfortran.dg/lto/20091015-1_0.f: New testcase.
+ * gfortran.dg/lto/20091015-1_1.f: Likewise.
+ * gfortran.dg/lto/20091015-1_2.f: Likewise.
+
+2009-10-16 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41713
+ * gfortran.dg/lto/20091016-1_0.f90: New testcase.
+
+2009-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/41717
+ * gcc.dg/debug/pr41717.c: New test.
+
+2009-10-16 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/41648
+ * gfortran.dg/dynamic_dispatch_4.f03 : New test.
+
+ PR fortran/41656
+ * gfortran.dg/dynamic_dispatch_5.f03 : New test.
+
+2009-10-15 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/23983
+ * gcc.target/powerpc/altivec-4.c (b): Make sure altivec builtin
+ result used.
+ * g++.dg/ext/altivec-2.C (main): Ditto.
+
+2009-10-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * lib/target-supports.exp (add_options_for_bind_pic_locally): New.
+ * gcc.dg/tree-ssa/ipa-cp-1.c: Bind pic locally.
+
+2009-10-15 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41669
+ * gcc.dg/lto/20091015-1_0.c: New testcase.
+ * gcc.dg/lto/20091015-1_1.c: Likewise.
+ * gcc.dg/lto/20091015-1_2.c: Likewise.
+ * gcc.dg/lto/20091015-1_a.h: Likewise.
+ * gcc.dg/lto/20091015-1_b.h: Likewise.
+
+2009-10-15 Steve Ellcey <sje@cup.hp.com>
+
+ * gcc.dg/torture/pr41555.c: Add -std=c99 option.
+
+2009-10-14 Daniel Gutson <dgutson@codesourcery.com>
+
+ * gcc.target/arm/neon/vfp-shift-a2t2.c: New test case.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ * obj-c++.dg/layout-1.mm: Don't xfail dg-bogus on lp64, change
+ line from 1 to 0.
+ * obj-c++.dg/bitfield-1.mm: Likewise.
+ * obj-c++.dg/bitfield-4.mm: Likewise.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41173
+ * gcc.dg/lto/20091014-1_0.c: New testcase.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/41707
+ * g++.dg/plugin/attribute_plugin-test-1.C: Expect the first
+ warning on line 0 instead of 1.
+
+2009-10-14 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41521
+ * gfortran.dg/lto/pr41521_0.f90: New testcase.
+ * gfortran.dg/lto/pr41521_1.f90: Likewise.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/41543
+ * gcc.dg/debug/dwarf2/pr41543.c: New test.
+
+ PR debug/41695
+ * gcc.dg/debug/dwarf2/pr41695.c: New test.
+
+2009-10-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/i386.exp (check_effective_target_ms_hook_prologue):
+ New procedure.
+ * gcc.target/i386/ms_hook_prologue.c: Check for ms_hook_prologue
+ effective target.
+
+2009-10-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/39866
+ * g++.dg/cpp0x/defaulted14.C: New.
+
+2009-10-14 Larry Evans <cppljevans@suddenlink.net>
+
+ * g++.dg/cpp0x/vt-40092.C: New.
+
+2009-10-14 Alexandre Oliva <aoliva@redhat.com>
+
+ * gcc.dg/guality/pr41616-1.c: Drop -O2.
+ * gcc.dg/guality/pr41447-1.c: Likewise. Name main.
+
+2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * gfortran.dg/complex_intrinsic_8.f90: New test.
+
+2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * gcc.dg/torture/builtin-math-6.c: Test complex "arc" functions.
+ * lib/target-supports.exp (check_effective_target_mpc_arc): New.
+
+2009-10-14 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/38948
+ * gcc.dg/torture/pr38948.c: New test.
+
+2009-10-13 Steve Ellcey <sje@cup.hp.com>
+
+ * gfortran.dg/vect/fast-math-pr38968.f90: Add timeout.
+
+2009-10-13 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41581
+ * gfortran.dg/class_allocate_2.f03: Modified.
+ * gfortran.dg/class_allocate_3.f03: New test case.
+
+2009-10-13 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41668
+ * gcc.dg/lto/20091006-2_0.c: New testcase.
+ * gcc.dg/lto/20091006-2_1.c: Likewise.
+ * gcc.dg/lto/20091006-2_2.c: Likewise.
+ * gcc.dg/lto/20091013-1_0.c: Likewise.
+ * gcc.dg/lto/20091013-1_1.c: Likewise.
+ * gcc.dg/lto/20091013-1_2.c: Likewise.
+
+2009-10-13 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.c-torture/compile/pr41661.c: New test.
+
+2009-10-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/41683
+ * gfortran.dg/fmt_error_9.f: Add check for repeat count after P.
+
+2009-10-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/37875
+ * g++.dg/cpp0x/decltype18.C: New.
+
+ PR c++/37766
+ * g++.dg/cpp0x/fntmpdefarg1.C: New.
+
+2009-10-12 Janis Johnson <janis187@us.ibm.com>
+
+ * gcc.dg/lto/20090914-2.c: Fix typos in test directives.
+
+2009-10-12 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41343
+ PR debug/41447
+ PR debug/41264
+ PR debug/41338
+ * gcc.dg/guality/pr41447-1.c: New.
+ * gcc.dg/debug/pr41264-1.c: New.
+ * gcc.dg/debug/pr41343-1.c: New.
+
+2009-10-12 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/26515
+ * gcc.dg/torture/pr26515.c: New test.
+
+2009-10-12 Janis Johnson <janis187@us.ibm.com>
+
+ PR testsuite/41659
+ * gcc.dg/lto/20090914-2.c: Use dg-skip-if to skip test.
+ * lib/lto.exp (lto-get-options-main): Report error for using "target"
+ or "xfail" with dg-lto-do.
+
+2009-10-12 Stefan Dösinger <stefan@codeweavers.com>
+
+ * gcc.target/i386/ms_hook_prologue.c: New testcase.
+
+2009-10-12 Michael Matz <matz@suse.de>
+
+ * gcc.dg/plugin/one_time_plugin.c: Update test to use the cfg
+ pass.
+
2009-10-12 Jakub Jelinek <jakub@redhat.com>
PR target/41680
@@ -6,7 +475,7 @@
2009-10-12 Dodji Seketeli <dodji@redhat.com>
PR c++/41570
- * gcc/testsuite/g++.dg/debug/dwarf2/template-params-7.C: New test.
+ * g++.dg/debug/dwarf2/template-params-7.C: New test.
2009-10-12 Alexandre Oliva <aoliva@redhat.com>
@@ -681,56 +1150,55 @@
2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com>
- * gcc.target/i386/fma4-check.h
- * gcc.target/i386/fma4-fma.c
- * gcc.target/i386/fma4-maccXX.c
- * gcc.target/i386/fma4-msubXX.c
- * gcc.target/i386/fma4-nmaccXX.c
- * gcc.target/i386/fma4-nmsubXX.c
- * gcc.target/i386/fma4-vector.c
- * gcc.target/i386/fma4-256-maccXX.c
- * gcc.target/i386/fma4-256-msubXX.c
- * gcc.target/i386/fma4-256-nmaccXX.c
- * gcc.target/i386/fma4-256-nmsubXX.c
- * gcc.target/i386/fma4-256-vector.c
- * gcc.target/i386/funcspec-2.c: New file.
-
- * gcc.target/i386/funcspec-4.c: Test error conditions
- related to FMA4.
-
- * gcc.target/i386/funcspec-5.c
- * gcc.target/i386/funcspec-6.c
- * gcc.target/i386/funcspec-8.c: Add FMA4.
+ * gcc.target/i386/fma4-check.h: New file.
+ * gcc.target/i386/fma4-fma.c: Ditto.
+ * gcc.target/i386/fma4-maccXX.c: Ditto.
+ * gcc.target/i386/fma4-msubXX.c: Ditto.
+ * gcc.target/i386/fma4-nmaccXX.c: Ditto.
+ * gcc.target/i386/fma4-nmsubXX.c: Ditto.
+ * gcc.target/i386/fma4-vector.c: Ditto.
+ * gcc.target/i386/fma4-256-maccXX.c: Ditto.
+ * gcc.target/i386/fma4-256-msubXX.c: Ditto.
+ * gcc.target/i386/fma4-256-nmaccXX.c: Ditto.
+ * gcc.target/i386/fma4-256-nmsubXX.c: Ditto.
+ * gcc.target/i386/fma4-256-vector.c: Ditto.
+ * gcc.target/i386/funcspec-2.c: Ditto.
+
+ * gcc.target/i386/funcspec-4.c: Test error conditions related to FMA4.
+
+ * gcc.target/i386/funcspec-5.c: Add FMA4.
+ * gcc.target/i386/funcspec-6.c: Ditto.
+ * gcc.target/i386/funcspec-8.c: Ditto.
* gcc.target/i386/funcspec-9.c: New file.
* gcc.target/i386/i386.exp: Add check_effective_target_fma4.
- * gcc.target/i386/isa-10.c
- * gcc.target/i386/isa-11.c
- * gcc.target/i386/isa-12.c
- * gcc.target/i386/isa-13.c
- * gcc.target/i386/isa-2.c
- * gcc.target/i386/isa-3.c
- * gcc.target/i386/isa-4.c
- * gcc.target/i386/isa-7.c
- * gcc.target/i386/isa-8.c
- * gcc.target/i386/isa-9.c: New file.
-
- * gcc.target/i386/isa-14.c
- * gcc.target/i386/isa-1.c
- * gcc.target/i386/isa-5.c
- * gcc.target/i386/isa-6.c: Add FMA4.
-
- * gcc.target/i386/sse-12.c
- * gcc.target/i386/sse-13.c
- * gcc.target/i386/sse-14.c
- * gcc.target/i386/sse-22.c: New file.
-
- * g++.dg/other/i386-2.C
- * g++.dg/other/i386-3.C
- * g++.dg/other/i386-5.C
- * g++.dg/other/i386-6.C: Add -mfma4 in dg-options.
+ * gcc.target/i386/isa-10.c: New file.
+ * gcc.target/i386/isa-11.c: Ditto.
+ * gcc.target/i386/isa-12.c: Ditto.
+ * gcc.target/i386/isa-13.c: Ditto.
+ * gcc.target/i386/isa-2.c: Ditto.
+ * gcc.target/i386/isa-3.c: Ditto.
+ * gcc.target/i386/isa-4.c: Ditto.
+ * gcc.target/i386/isa-7.c: Ditto.
+ * gcc.target/i386/isa-8.c: Ditto.
+ * gcc.target/i386/isa-9.c: Ditto.
+
+ * gcc.target/i386/isa-14.c: Add FMA4.
+ * gcc.target/i386/isa-1.c: Ditto.
+ * gcc.target/i386/isa-5.c: Ditto.
+ * gcc.target/i386/isa-6.c: Ditto.
+
+ * gcc.target/i386/sse-12.c: New file.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * gcc.target/i386/sse-22.c: Ditto.
+
+ * g++.dg/other/i386-2.C: Add -mfma4 to dg-options.
+ * g++.dg/other/i386-3.C: Ditto.
+ * g++.dg/other/i386-5.C: Ditto.
+ * g++.dg/other/i386-6.C: Ditto.
2009-09-29 H.J. Lu <hongjiu.lu@intel.com>
@@ -753,13 +1221,14 @@
2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com>
* gcc.target/i386/i386.exp: Remove check_effective_target_sse5.
- * gcc.target/i386/isa-1.c
- * gcc.target/i386/isa-5.c
- * gcc.target/i386/isa-6.c: Remove SSE5.
- * gcc.target/i386/funcspec-4.c: Remove error conditions related to SSE5.
- * gcc.target/i386/avx-1.c
- * gcc.target/i386/avx-2.c
- * gcc.target/i386/sse-23.c: Remove comments to mmintrin-common.h.
+ * gcc.target/i386/isa-1.c: Remove SSE5.
+ * gcc.target/i386/isa-5.c: Ditto.
+ * gcc.target/i386/isa-6.c: Ditto.
+ * gcc.target/i386/funcspec-4.c: Remove error conditions
+ related to SSE5.
+ * gcc.target/i386/avx-1.c: Remove comments to mmintrin-common.h.
+ * gcc.target/i386/avx-2.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
* gcc.target/i386/funcspec-9.c: Delete.
2009-09-29 Jakub Jelinek <jakub@redhat.com>
@@ -826,7 +1295,7 @@
2009-09-27 Richard Henderson <rth@redhat.com>
* gcc.c-torture/compile/pr41469.c: Add -fexceptions.
- * testsuite/gcc.dg/tree-ssa/pr41469-1.c: New.
+ * gcc.dg/tree-ssa/pr41469-1.c: New.
2009-09-26 Andreas Schwab <schwab@linux-m68k.org>
diff --git a/gcc/testsuite/g++.dg/abi/mangle33.C b/gcc/testsuite/g++.dg/abi/mangle33.C
new file mode 100644
index 00000000000..f0a4e5012d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle33.C
@@ -0,0 +1,19 @@
+// Testcase for mangling very long names.
+
+#define N \
+abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm
+
+namespace N {
+ int i;
+}
+
+#undef N
+#define N \
+abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk
+
+namespace N {
+ int j;
+}
+
+// { dg-final { scan-assembler "_ZN4043abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm1iE" } }
+// { dg-final { scan-assembler "_ZN4041abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk1jE" } }
diff --git a/gcc/testsuite/g++.dg/abi/rtti3.C b/gcc/testsuite/g++.dg/abi/rtti3.C
index ee562adac59..c03e4611c0b 100644
--- a/gcc/testsuite/g++.dg/abi/rtti3.C
+++ b/gcc/testsuite/g++.dg/abi/rtti3.C
@@ -2,6 +2,7 @@
// necessarily the type info object
// { dg-require-weak "" }
+// { dg-skip-if "Linkonce not weak" { *-*-mingw* *-*-cygwin } { "*" } { "" } }
// { dg-final { scan-assembler ".weak\[ \t\]_?_ZTSPP1A" { target { ! { *-*-darwin* } } } } }
// { dg-final { scan-assembler-not ".weak\[ \t\]_?_ZTIPP1A" { target { ! { *-*-darwin* } } } } }
// { dg-final { scan-assembler ".weak_definition\[ \t\]_?_ZTSPP1A" { target { *-*-darwin* } } } }
diff --git a/gcc/testsuite/g++.dg/abi/thunk4.C b/gcc/testsuite/g++.dg/abi/thunk4.C
index 79af6624d56..fa5fbd43277 100644
--- a/gcc/testsuite/g++.dg/abi/thunk4.C
+++ b/gcc/testsuite/g++.dg/abi/thunk4.C
@@ -1,4 +1,5 @@
// { dg-require-weak "" }
+// { dg-skip-if "Linkonce not weak" { *-*-mingw* *-*-cygwin } { "*" } { "" } }
// { dg-final { scan-assembler ".weak\[ \t\]_?_ZThn._N7Derived3FooEv" { target { ! { *-*-darwin* } } } } }
// { dg-final { scan-assembler ".weak_definition\[ \t\]_?_ZThn._N7Derived3FooEv" { target { *-*-darwin* } } } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype18.C b/gcc/testsuite/g++.dg/cpp0x/decltype18.C
new file mode 100644
index 00000000000..0d44586e9d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype18.C
@@ -0,0 +1,5 @@
+// PR c++/37875
+// { dg-options "-std=c++0x" }
+
+template <typename> struct X {};
+X<decltype(1 > 2)> x;
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted14.C b/gcc/testsuite/g++.dg/cpp0x/defaulted14.C
new file mode 100644
index 00000000000..235e646780a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted14.C
@@ -0,0 +1,18 @@
+// PR c++/39866
+// { dg-options "-std=c++0x" }
+
+struct A {
+ A& operator=(const A&) = delete; // { dg-bogus "" }
+
+ void operator=(int) {} // { dg-message "" }
+ void operator=(char) {} // { dg-message "" }
+};
+
+struct B {};
+
+int main()
+{
+ A a;
+ a = B(); // { dg-error "no match" }
+ a = 1.0; // { dg-error "ambiguous" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/explicit4.C b/gcc/testsuite/g++.dg/cpp0x/explicit4.C
new file mode 100644
index 00000000000..74726a99cad
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/explicit4.C
@@ -0,0 +1,17 @@
+// Negative explicit conv test.
+// { dg-options "-std=c++0x" }
+
+struct A {
+ A(const A&, int = 0); // { dg-message "candidates" }
+};
+struct B
+{
+ explicit operator A();
+};
+
+int main()
+{
+ B b;
+ (A(b)); // OK
+ (A(b,1)); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C b/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
new file mode 100644
index 00000000000..25192ad8672
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
@@ -0,0 +1,7 @@
+// PR c++/37766
+// { dg-options -std=c++0x }
+
+int a = 1;
+template<int& b = a> void f() {
+ f<>();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C
index dc89d2388fb..9f7d5f3b2a9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C
@@ -10,7 +10,7 @@ inline void g(int n) {
// The call operator of that type is _ZZ1giENKUlvE_clEv.
// { dg-final { scan-assembler "_ZZ1giENKUlvE_clEv" } }
-// { dg-final { scan-assembler "weak\[ \t\]*_?_ZZ1giENKUlvE_clEv" { target { ! { *-*-darwin* } } } } }
+// { dg-final { scan-assembler "weak\[ \t\]*_?_ZZ1giENKUlvE_clEv" { target { ! { *-*-darwin* *-*-mingw* *-*-cygwin } } } } }
algo([=]{return n+bef();});
// The captured entities do not participate in <lambda-sig>
@@ -32,7 +32,7 @@ struct S {
// Type: ZN1S1fEiiEd0_UlvE_
// Operator: _ZZN1S1fEiiEd0_NKUlvE_clEv
// { dg-final { scan-assembler "_ZZN1S1fEiiEd0_NKUlvE_clEv" } }
-// { dg-final { scan-assembler "weak\[ \t\]*_?_ZZN1S1fEiiEd0_NKUlvE_clEv" { target { ! { *-*-darwin* } } } } }
+// { dg-final { scan-assembler "weak\[ \t\]*_?_ZZN1S1fEiiEd0_NKUlvE_clEv" { target { ! { *-*-darwin* *-*-mingw* *-*-cygwin } } } } }
[]{return 1;}()
// Type: ZN1S1fEiiEd0_UlvE0_
// Operator: _ZZN1S1fEiiEd0_NKUlvE0_clEv
@@ -53,7 +53,7 @@ template int R<int>::x;
// Type of lambda in intializer of R<int>::x: N1RIiE1xMUlvE_E
// Corresponding operator(): _ZNK1RIiE1xMUlvE_clEv
// { dg-final { scan-assembler "_ZNK1RIiE1xMUlvE_clEv" } }
-// { dg-final { scan-assembler "weak\[ \t\]*_?_ZNK1RIiE1xMUlvE_clEv" } }
+// { dg-final { scan-assembler "weak\[ \t\]*_?_ZNK1RIiE1xMUlvE_clEv" { target { ! { *-*-mingw* *-*-cygwin } } } } }
void bar()
{
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
new file mode 100644
index 00000000000..b7887485595
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
@@ -0,0 +1,31 @@
+// Testcase from N2998
+// { dg-options -std=c++0x }
+
+void f1(int i) {
+ int const N = 20;
+ auto m1 = [=]{
+ int const M = 30;
+ auto m2 = [i]{
+ int x[N][M]; // OK: N and M are not "used"
+ x[0][0] = i; // OK: i is explicitly captured by m2
+ // and implicitly captured by m1
+ };
+ };
+ struct s1 {
+ int f;
+ int work(int n) {
+ int m = n*n;
+ int j = 40;
+ auto m3 = [this,m]{
+ /*auto m4=*/[&,j]{ // { dg-error "j. is not captured" }
+ int x = n; // { dg-error "n. is not captured" }
+ x += m; // OK: m implicitly captured by m4
+ // and explicitly captured by m3
+ x += i; // { dg-error "i. is not captured" }
+ x += f; // OK: this captured implicitly by m4
+ // and explicitly by m3
+ };
+ };
+ }
+ };
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto6.C b/gcc/testsuite/g++.dg/cpp0x/trailing1.C
index 11e73d2e716..11e73d2e716 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto6.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing1.C
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto8.C b/gcc/testsuite/g++.dg/cpp0x/trailing2.C
index e45204fe715..e45204fe715 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto8.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing2.C
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto12.C b/gcc/testsuite/g++.dg/cpp0x/trailing3.C
index 82d36f0d0d2..82d36f0d0d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing3.C
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto13.C b/gcc/testsuite/g++.dg/cpp0x/trailing4.C
index dc7e35aabaa..dc7e35aabaa 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing4.C
diff --git a/gcc/testsuite/g++.dg/cpp0x/trailing5.C b/gcc/testsuite/g++.dg/cpp0x/trailing5.C
new file mode 100644
index 00000000000..b97d362be2f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing5.C
@@ -0,0 +1,10 @@
+// PR c++/38798, DR 770
+// { dg-options -std=c++0x }
+
+struct A {};
+auto foo() -> struct A {}
+
+enum B {};
+auto bar() -> enum B {}
+
+auto baz() -> struct C {} {} // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-40092.C b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C
new file mode 100644
index 00000000000..063ed7e16eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C
@@ -0,0 +1,21 @@
+// { dg-do "compile" }
+// { dg-options "-std=c++0x" }
+
+template <typename... Types> struct package {};
+
+template <int ArgGen> struct wrapper_gen {};
+
+template <int ArgNest> struct wrapper_nest
+{
+ typedef wrapper_gen<ArgNest> type_nest;
+};
+
+template <int... ArgPack>
+struct wrapper_pack
+{
+ typedef package<wrapper_gen <ArgPack>...> type_pack;
+ // incorrect error: expansion pattern 'wrapper_gen<ArgNest>'
+ // contains no argument packs
+};
+
+
diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C
index 299693694f6..1185a79e5ec 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-2.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-2.C
@@ -7,6 +7,8 @@
#include <altivec.h>
+vector unsigned char use_lvsl;
+
int main (int argc, const char * argv[])
{
int i = 0;
@@ -17,7 +19,7 @@ int main (int argc, const char * argv[])
vec_dst(&cv, i, 0);
v = vec_ld(0, &cv);
v = vec_lde(0, &cf);
- vec_lvsl(0, &cf);
+ use_lvsl = vec_lvsl(0, &cf);
return 0;
}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-1.C b/gcc/testsuite/g++.dg/ext/raw-string-1.C
new file mode 100644
index 00000000000..0e8abf8b498
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-1.C
@@ -0,0 +1,96 @@
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+const char s0[] = R"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char s1[] = "a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char s2[] = R"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char s3[] = "ab\nc]\"\nc]*|\"\nc";
+
+const char t0[] = u8R"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char t1[] = u8"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char t2[] = u8R"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char t3[] = u8"ab\nc]\"\nc]*|\"\nc";
+
+const char16_t u0[] = uR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char16_t u1[] = u"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char16_t u2[] = uR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char16_t u3[] = u"ab\nc]\"\nc]*|\"\nc";
+
+const char32_t U0[] = UR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char32_t U1[] = U"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char32_t U2[] = UR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char32_t U3[] = U"ab\nc]\"\nc]*|\"\nc";
+
+const wchar_t L0[] = LR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const wchar_t L1[] = L"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const wchar_t L2[] = LR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const wchar_t L3[] = L"ab\nc]\"\nc]*|\"\nc";
+
+int
+main (void)
+{
+ if (sizeof (s0) != sizeof (s1)
+ || __builtin_memcmp (s0, s1, sizeof (s0)) != 0)
+ __builtin_abort ();
+ if (sizeof (s2) != sizeof (s3)
+ || __builtin_memcmp (s2, s3, sizeof (s2)) != 0)
+ __builtin_abort ();
+ if (sizeof (t0) != sizeof (t1)
+ || __builtin_memcmp (t0, t1, sizeof (t0)) != 0)
+ __builtin_abort ();
+ if (sizeof (t2) != sizeof (t3)
+ || __builtin_memcmp (t2, t3, sizeof (t2)) != 0)
+ __builtin_abort ();
+ if (sizeof (u0) != sizeof (u1)
+ || __builtin_memcmp (u0, u1, sizeof (u0)) != 0)
+ __builtin_abort ();
+ if (sizeof (u2) != sizeof (u3)
+ || __builtin_memcmp (u2, u3, sizeof (u2)) != 0)
+ __builtin_abort ();
+ if (sizeof (U0) != sizeof (U1)
+ || __builtin_memcmp (U0, U1, sizeof (U0)) != 0)
+ __builtin_abort ();
+ if (sizeof (U2) != sizeof (U3)
+ || __builtin_memcmp (U2, U3, sizeof (U2)) != 0)
+ __builtin_abort ();
+ if (sizeof (L0) != sizeof (L1)
+ || __builtin_memcmp (L0, L1, sizeof (L0)) != 0)
+ __builtin_abort ();
+ if (sizeof (L2) != sizeof (L3)
+ || __builtin_memcmp (L2, L3, sizeof (L2)) != 0)
+ __builtin_abort ();
+ if (sizeof (R"*[]*") != 1
+ || __builtin_memcmp (R"*[]*", "", 1) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-2.C b/gcc/testsuite/g++.dg/ext/raw-string-2.C
new file mode 100644
index 00000000000..c7eb602afec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-2.C
@@ -0,0 +1,104 @@
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+#define R
+#define u
+#define uR
+#define U
+#define UR
+#define u8
+#define u8R
+#define L
+#define LR
+
+const char s00[] = R"[a]" "[b]";
+const char s01[] = "[a]" R"*[b]*";
+const char s02[] = R"[a]" R"[b]";
+const char s03[] = R"-[a]-" u8"[b]";
+const char s04[] = "[a]" u8R"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char s05[] = R"[a]" u8R"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char s06[] = u8R";([a];(" "[b]";
+const char s07[] = u8"[a]" R"[b]";
+const char s08[] = u8R"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char s09[] = u8R"/^&|~!=,"'\[a]/^&|~!=,"'\" u8"[b]";
+const char s10[] = u8"[a]" u8R"0123456789abcdef[b]0123456789abcdef";
+const char s11[] = u8R"ghijklmnopqrstuv[a]ghijklmnopqrstuv" u8R"w[b]w";
+
+const char16_t u03[] = R"-[a]-" u"[b]";
+const char16_t u04[] = "[a]" uR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char16_t u05[] = R"[a]" uR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char16_t u06[] = uR";([a];(" "[b]";
+const char16_t u07[] = u"[a]" R"[b]";
+const char16_t u08[] = uR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char16_t u09[] = uR"/^&|~!=,"'\[a]/^&|~!=,"'\" u"[b]";
+const char16_t u10[] = u"[a]" uR"0123456789abcdef[b]0123456789abcdef";
+const char16_t u11[] = uR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" uR"w[b]w";
+
+const char32_t U03[] = R"-[a]-" U"[b]";
+const char32_t U04[] = "[a]" UR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char32_t U05[] = R"[a]" UR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char32_t U06[] = UR";([a];(" "[b]";
+const char32_t U07[] = U"[a]" R"[b]";
+const char32_t U08[] = UR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char32_t U09[] = UR"/^&|~!=,"'\[a]/^&|~!=,"'\" U"[b]";
+const char32_t U10[] = U"[a]" UR"0123456789abcdef[b]0123456789abcdef";
+const char32_t U11[] = UR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" UR"w[b]w";
+
+const wchar_t L03[] = R"-[a]-" L"[b]";
+const wchar_t L04[] = "[a]" LR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const wchar_t L05[] = R"[a]" LR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const wchar_t L06[] = LR";([a];(" "[b]";
+const wchar_t L07[] = L"[a]" R"[b]";
+const wchar_t L08[] = LR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const wchar_t L09[] = LR"/^&|~!=,"'\[a]/^&|~!=,"'\" L"[b]";
+const wchar_t L10[] = L"[a]" LR"0123456789abcdef[b]0123456789abcdef";
+const wchar_t L11[] = LR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" LR"w[b]w";
+
+int
+main (void)
+{
+#define TEST(str, val) \
+ if (sizeof (str) != sizeof (val) \
+ || __builtin_memcmp (str, val, sizeof (str)) != 0) \
+ __builtin_abort ()
+ TEST (s00, "a[b]");
+ TEST (s01, "[a]b");
+ TEST (s02, "ab");
+ TEST (s03, "a[b]");
+ TEST (s04, "[a]b");
+ TEST (s05, "ab");
+ TEST (s06, "a[b]");
+ TEST (s07, "[a]b");
+ TEST (s08, "ab");
+ TEST (s09, "a[b]");
+ TEST (s10, "[a]b");
+ TEST (s11, "ab");
+ TEST (u03, u"a[b]");
+ TEST (u04, u"[a]b");
+ TEST (u05, u"ab");
+ TEST (u06, u"a[b]");
+ TEST (u07, u"[a]b");
+ TEST (u08, u"ab");
+ TEST (u09, u"a[b]");
+ TEST (u10, u"[a]b");
+ TEST (u11, u"ab");
+ TEST (U03, U"a[b]");
+ TEST (U04, U"[a]b");
+ TEST (U05, U"ab");
+ TEST (U06, U"a[b]");
+ TEST (U07, U"[a]b");
+ TEST (U08, U"ab");
+ TEST (U09, U"a[b]");
+ TEST (U10, U"[a]b");
+ TEST (U11, U"ab");
+ TEST (L03, L"a[b]");
+ TEST (L04, L"[a]b");
+ TEST (L05, L"ab");
+ TEST (L06, L"a[b]");
+ TEST (L07, L"[a]b");
+ TEST (L08, L"ab");
+ TEST (L09, L"a[b]");
+ TEST (L10, L"[a]b");
+ TEST (L11, L"ab");
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-3.C b/gcc/testsuite/g++.dg/ext/raw-string-3.C
new file mode 100644
index 00000000000..46c48620905
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-3.C
@@ -0,0 +1,58 @@
+// If c++98, the {,u,u8,U,L}R prefix should be parsed as separate
+// token.
+// { dg-do compile }
+// { dg-options "-std=c++98" }
+
+const void *s0 = R"[a]"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 6 }
+const void *s1 = uR"[a]"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 8 }
+const void *s2 = UR"[a]"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 10 }
+const void *s3 = u8R"[a]"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 12 }
+const void *s4 = LR"[a]"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 14 }
+
+const int i0 = R'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 17 }
+const int i1 = uR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 19 }
+const int i2 = UR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 21 }
+const int i3 = u8R'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 23 }
+const int i4 = LR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 25 }
+
+#define R "a"
+#define uR "b"
+#define UR "c"
+#define u8R "d"
+#define LR "e"
+
+const void *s5 = R"[a]";
+const void *s6 = uR"[a]";
+const void *s7 = UR"[a]";
+const void *s8 = u8R"[a]";
+const void *s9 = LR"[a]";
+
+#undef R
+#undef uR
+#undef UR
+#undef u8R
+#undef LR
+
+#define R 1 +
+#define uR 2 +
+#define UR 3 +
+#define u8R 4 +
+#define LR 5 +
+
+const int i5 = R'a';
+const int i6 = uR'a';
+const int i7 = UR'a';
+const int i8 = u8R'a';
+const int i9 = LR'a';
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-4.C b/gcc/testsuite/g++.dg/ext/raw-string-4.C
new file mode 100644
index 00000000000..03179befac8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-4.C
@@ -0,0 +1,28 @@
+// R is not applicable for character literals.
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+const int i0 = R'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 5 }
+const int i1 = uR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 7 }
+const int i2 = UR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 9 }
+const int i3 = u8R'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 11 }
+const int i4 = LR'a'; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 13 }
+
+#define R 1 +
+#define uR 2 +
+#define UR 3 +
+#define u8R 4 +
+#define LR 5 +
+
+const int i5 = R'a';
+const int i6 = uR'a';
+const int i7 = UR'a';
+const int i8 = u8R'a';
+const int i9 = LR'a';
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-5.C b/gcc/testsuite/g++.dg/ext/raw-string-5.C
new file mode 100644
index 00000000000..b815eb23b16
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-5.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+const void *s0 = R"0123456789abcdefg[]0123456789abcdefg";
+ // { dg-error "raw string delimiter longer" "" { target *-*-* } 4 }
+ // { dg-error "stray" "" { target *-*-* } 4 }
+const void *s1 = R" [] ";
+ // { dg-error "invalid character" "" { target *-*-* } 7 }
+ // { dg-error "stray" "" { target *-*-* } 7 }
+const void *s2 = R" [] ";
+ // { dg-error "invalid character" "" { target *-*-* } 10 }
+ // { dg-error "stray" "" { target *-*-* } 10 }
+const void *s3 = R"][]]";
+ // { dg-error "invalid character" "" { target *-*-* } 13 }
+ // { dg-error "stray" "" { target *-*-* } 13 }
+const void *s4 = R"@[]@";
+ // { dg-error "invalid character" "" { target *-*-* } 16 }
+ // { dg-error "stray" "" { target *-*-* } 16 }
+const void *s5 = R"$[]$";
+ // { dg-error "invalid character" "" { target *-*-* } 19 }
+ // { dg-error "stray" "" { target *-*-* } 19 }
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-6.C b/gcc/testsuite/g++.dg/ext/raw-string-6.C
new file mode 100644
index 00000000000..a97d95d5693
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-6.C
@@ -0,0 +1,5 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+const void *s0 = R"ouch[]ouCh"; // { dg-error "at end of input" }
+ // { dg-error "unterminated raw string" "" { target *-*-* } 4 }
diff --git a/gcc/testsuite/g++.dg/ext/raw-string-7.C b/gcc/testsuite/g++.dg/ext/raw-string-7.C
new file mode 100644
index 00000000000..0f479193433
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/raw-string-7.C
@@ -0,0 +1,23 @@
+// The trailing whitespace after \ and before newline extension
+// breaks full compliance for raw strings.
+// { dg-do run { xfail *-*-* } }
+// { dg-options "-std=c++0x" }
+
+// Note, there is a single space after \ on the following line.
+const char *s0 = R"[\
+]";
+// { dg-bogus "backslash and newline separated by space" "" { xfail *-*-* } 7 }
+
+// Note, there is a single tab after \ on the following line.
+const char *s1 = R"[\
+]";
+// { dg-bogus "backslash and newline separated by space" "" { xfail *-*-* } 12 }
+
+int
+main (void)
+{
+ if (__builtin_strcmp (s0, "\\ \n") != 0
+ || __builtin_strcmp (s1, "\\\t\n") != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/utf-badconcat2.C b/gcc/testsuite/g++.dg/ext/utf-badconcat2.C
new file mode 100644
index 00000000000..499b323fc19
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/utf-badconcat2.C
@@ -0,0 +1,15 @@
+// Test unsupported concatenation of UTF-8 string literals.
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+const void *s0 = u8"a" "b";
+const void *s1 = "a" u8"b";
+const void *s2 = u8"a" u8"b";
+const void *s3 = u8"a" u"b"; // { dg-error "non-standard concatenation" }
+const void *s4 = u"a" u8"b"; // { dg-error "non-standard concatenation" }
+const void *s5 = u8"a" U"b"; // { dg-error "non-standard concatenation" }
+const void *s6 = U"a" u8"b"; // { dg-error "non-standard concatenation" }
+const void *s7 = u8"a" L"b"; // { dg-error "non-standard concatenation" }
+const void *s8 = L"a" u8"b"; // { dg-error "non-standard concatenation" }
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/ext/utf-dflt2.C b/gcc/testsuite/g++.dg/ext/utf-dflt2.C
new file mode 100644
index 00000000000..fd2222f672e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/utf-dflt2.C
@@ -0,0 +1,12 @@
+// In C++0x, the u8 prefix should be parsed as separate tokens.
+// { dg-do compile }
+// { dg-options "-std=c++98" }
+
+const void *s0 = u8"a"; // { dg-error "was not declared" }
+ // { dg-error "expected ',' or ';'" "" { target *-*-* } 5 }
+
+#define u8 "a"
+
+const void *s1 = u8"a";
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/ext/utf8-1.C b/gcc/testsuite/g++.dg/ext/utf8-1.C
new file mode 100644
index 00000000000..203b326af79
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/utf8-1.C
@@ -0,0 +1,45 @@
+// { dg-do run }
+// { dg-require-iconv "ISO-8859-2" }
+// { dg-options "-std=c++0x -fexec-charset=ISO-8859-2" }
+
+const char *str1 = "h\u00e1\U0000010Dky ";
+const char *str2 = "\u010d\u00E1rky\n";
+const char *str3 = u8"h\u00e1\U0000010Dky ";
+const char *str4 = u8"\u010d\u00E1rky\n";
+const char *str5 = "h\u00e1\U0000010Dky " "\u010d\u00E1rky\n";
+const char *str6 = u8"h\u00e1\U0000010Dky " "\u010d\u00E1rky\n";
+const char *str7 = "h\u00e1\U0000010Dky " u8"\u010d\u00E1rky\n";
+#define u8
+const char *str8 = u8"h\u00e1\U0000010Dky " u8"\u010d\u00E1rky\n";
+
+const char latin2_1[] = "\x68\xe1\xe8\x6b\x79\x20";
+const char latin2_2[] = "\xe8\xe1\x72\x6b\x79\n";
+const char utf8_1[] = "\x68\xc3\xa1\xc4\x8d\x6b\x79\x20";
+const char utf8_2[] = "\xc4\x8d\xc3\xa1\x72\x6b\x79\n";
+
+int
+main (void)
+{
+ if (__builtin_strcmp (str1, latin2_1) != 0
+ || __builtin_strcmp (str2, latin2_2) != 0
+ || __builtin_strcmp (str3, utf8_1) != 0
+ || __builtin_strcmp (str4, utf8_2) != 0
+ || __builtin_strncmp (str5, latin2_1, sizeof (latin2_1) - 1) != 0
+ || __builtin_strcmp (str5 + sizeof (latin2_1) - 1, latin2_2) != 0
+ || __builtin_strncmp (str6, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str6 + sizeof (utf8_1) - 1, utf8_2) != 0
+ || __builtin_strncmp (str7, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str7 + sizeof (utf8_1) - 1, utf8_2) != 0
+ || __builtin_strncmp (str8, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str8 + sizeof (utf8_1) - 1, utf8_2) != 0)
+ __builtin_abort ();
+ if (sizeof ("a" u8"b"[0]) != 1
+ || sizeof (u8"a" "b"[0]) != 1
+ || sizeof (u8"a" u8"b"[0]) != 1
+ || sizeof ("a" "\u010d") != 3
+ || sizeof ("a" u8"\u010d") != 4
+ || sizeof (u8"a" "\u010d") != 4
+ || sizeof (u8"a" "\u010d") != 4)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/utf8-2.C b/gcc/testsuite/g++.dg/ext/utf8-2.C
new file mode 100644
index 00000000000..417a8bfdc1e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/utf8-2.C
@@ -0,0 +1,21 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+const char s0[] = u8"ab";
+const char16_t s1[] = u8"ab"; // { dg-error "from non-wide" }
+const char32_t s2[] = u8"ab"; // { dg-error "from non-wide" }
+const wchar_t s3[] = u8"ab"; // { dg-error "from non-wide" }
+
+const char t0[0] = u8"ab"; // { dg-error "chars is too long" }
+const char t1[1] = u8"ab"; // { dg-error "chars is too long" }
+const char t2[2] = u8"ab"; // { dg-error "chars is too long" }
+const char t3[3] = u8"ab";
+const char t4[4] = u8"ab";
+
+const char u0[0] = u8"\u2160."; // { dg-error "chars is too long" }
+const char u1[1] = u8"\u2160."; // { dg-error "chars is too long" }
+const char u2[2] = u8"\u2160."; // { dg-error "chars is too long" }
+const char u3[3] = u8"\u2160."; // { dg-error "chars is too long" }
+const char u4[4] = u8"\u2160."; // { dg-error "chars is too long" }
+const char u5[5] = u8"\u2160.";
+const char u6[6] = u8"\u2160.";
diff --git a/gcc/testsuite/g++.dg/ipa/iinline-1.C b/gcc/testsuite/g++.dg/ipa/iinline-1.C
index 1453c7e4658..6419ac3e8cd 100644
--- a/gcc/testsuite/g++.dg/ipa/iinline-1.C
+++ b/gcc/testsuite/g++.dg/ipa/iinline-1.C
@@ -2,7 +2,7 @@
inlining.. */
/* { dg-do compile } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining" } */
-/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
extern void non_existent (const char *, int);
diff --git a/gcc/testsuite/g++.dg/lto/20091022-1_0.C b/gcc/testsuite/g++.dg/lto/20091022-1_0.C
new file mode 100644
index 00000000000..cb3f20a4ed2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20091022-1_0.C
@@ -0,0 +1,13 @@
+// { dg-lto-do link }
+// { dg-extra-ld-options "-fwhole-program" }
+
+template <int dim>
+struct AutoDerivativeFunction {
+ virtual void gradient_list (void);
+};
+template <int dim>
+void AutoDerivativeFunction<dim>::gradient_list (void)
+{
+}
+template class AutoDerivativeFunction<1>;
+int main() {}
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
new file mode 100644
index 00000000000..29ed9b6b0a0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -0,0 +1,12 @@
+// { dg-lto-do link }
+// { dg-lto-options {{-O3 -flto -Winline}} }
+
+#include <string>
+
+int
+main()
+{
+ std::string i;
+ i = "abc";
+}
+
diff --git a/gcc/testsuite/g++.dg/opt/eh5.C b/gcc/testsuite/g++.dg/opt/eh5.C
new file mode 100644
index 00000000000..3557ab2aa54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/eh5.C
@@ -0,0 +1,43 @@
+// PR 41377
+// { dg-do compile }
+// { dg-options "-O3" }
+
+struct A
+{
+ bool foo(int*) const;
+} a;
+
+struct B {};
+
+struct B1 : B
+{
+ bool (A::*pmf)(int*) const;
+ const A* pa;
+
+ B1() : pmf(&A::foo), pa(&a) {}
+ bool operator()() const { return (pa->*pmf)(new int); }
+};
+
+struct B2 : B
+{
+ B1 b1;
+
+ B2(const B1& _b1) : b1(_b1) {}
+ bool operator()() const { return b1(); }
+};
+
+template<int> struct C
+{
+ void bar(B2 b2) { while (b2()) ; }
+ C() { bar(B2(B1())); }
+};
+
+void baz(int i)
+{
+ switch(i)
+ {
+ case 0: new C<0>;
+ case 1: new C<1>;
+ case 2: new C<2>;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/opt/vt1.C b/gcc/testsuite/g++.dg/opt/vt1.C
index ea74f52126f..ba871fba2d8 100644
--- a/gcc/testsuite/g++.dg/opt/vt1.C
+++ b/gcc/testsuite/g++.dg/opt/vt1.C
@@ -2,6 +2,7 @@
// { dg-do compile { target fpic } }
// { dg-options "-O2 -fpic -fno-rtti" }
// { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } { "*" } { "" } }
+// { dg-skip-if "No Windows PIC" { *-*-mingw* *-*-cygwin } { "*" } { "" } }
// Origin: Jakub Jelinek <jakub@redhat.com>
struct S
diff --git a/gcc/testsuite/g++.dg/other/first-global.C b/gcc/testsuite/g++.dg/other/first-global.C
index a993a9d5175..0f39a8abb73 100644
--- a/gcc/testsuite/g++.dg/other/first-global.C
+++ b/gcc/testsuite/g++.dg/other/first-global.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
/* { dg-final { scan-assembler "_GLOBAL__I(_|_65535_0_)foobar" } } */
struct foo { foo (); };
diff --git a/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C b/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C
index dbdab88af2d..845d873aacb 100644
--- a/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C
+++ b/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-O3 -fwhole-program" }
-// { dg-options "-O3 -fwhole-program -fpie" { target { ! nonpic } } }
+// { dg-add-options bind_pic_locally }
// { dg-final { scan-assembler "foo1" } }
// { dg-final { scan-assembler "foo2" } }
// { dg-final { scan-assembler "foo3" } }
diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C b/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C
index abb1328670a..1ca321d1fde 100644
--- a/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C
+++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C
@@ -1,4 +1,4 @@
-// { dg-warning "Callback to register attributes" }
+// { dg-warning "Callback to register attributes" "" { target *-*-* } 0 }
void normal_func (char c, char c2);
void normal_func (char __attribute__((user("param"))) c, char);
diff --git a/gcc/testsuite/g++.dg/template/spec35.C b/gcc/testsuite/g++.dg/template/spec35.C
index cae33ed3d1f..709ece5dd90 100644
--- a/gcc/testsuite/g++.dg/template/spec35.C
+++ b/gcc/testsuite/g++.dg/template/spec35.C
@@ -24,6 +24,6 @@ void instantiator ()
// { dg-final { scan-assembler-not ".glob(a|)l\[\t \]*_?_Z2f1IiEvT_" } }
f1(0); // Expected to have static linkage
- // { dg-final { scan-assembler ".weak(_definition)?\[\t \]*_?_Z2f2IiEvT_" } }
+ // { dg-final { scan-assembler ".weak(_definition)?\[\t \]*_?_Z2f2IiEvT_" { target { ! { *-*-mingw* *-*-cygwin } } } } }
f2(0); // Expected to have weak global linkage
}
diff --git a/gcc/testsuite/g++.dg/torture/pr40323.C b/gcc/testsuite/g++.dg/torture/pr40323.C
index adecf7fe5f3..c7ffcb5d3f1 100644
--- a/gcc/testsuite/g++.dg/torture/pr40323.C
+++ b/gcc/testsuite/g++.dg/torture/pr40323.C
@@ -1,7 +1,7 @@
/* Testcase for PR 40323. */
/* { dg-do compile } */
/* { dg-options "-fno-early-inlining" } */
-/* { dg-options "-fno-early-inlining -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
extern void do_something (const char *, int);
diff --git a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
index e785755eb07..5ba193618dd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
@@ -7,8 +7,8 @@
#include <map>
#include <vector>
#include <iostream>
+#include <cstdlib>
using namespace std;
-extern void free (void *);
template<typename _FIter, typename _Tp> _FIter lower_bound(_FIter, _FIter, _Tp&);
template<class _Key> struct hash { };
template<class _Val> struct _Hashtable_node {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C b/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
index 4bb71589de3..33462946aed 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-cfg" } */
-/* { dg-skip-if "" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
+
double a;
void t()
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40556.c b/gcc/testsuite/gcc.c-torture/compile/pr40556.c
new file mode 100644
index 00000000000..625175d7788
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40556.c
@@ -0,0 +1,11 @@
+struct A {};
+
+struct A foo()
+{
+ return foo();
+}
+
+void bar()
+{
+ foo();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41661.c b/gcc/testsuite/gcc.c-torture/compile/pr41661.c
new file mode 100644
index 00000000000..658e4288b8d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41661.c
@@ -0,0 +1,20 @@
+/* PR tree-optimization/41661 */
+/* { dg-do compile } */
+/* { dg-options "-fno-early-inlining" } */
+
+int g;
+
+void foo (int x)
+{
+ g = x;
+}
+
+void bar (double d)
+{
+ foo (d == 1);
+}
+
+void baz (int a)
+{
+ bar (1);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41728.c b/gcc/testsuite/gcc.c-torture/compile/pr41728.c
new file mode 100644
index 00000000000..df379d93010
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41728.c
@@ -0,0 +1,12 @@
+int a[8];
+int s244(void)
+{
+ int lrc, j;
+ lrc = 0;
+ for (j=0; j<7; j++)
+ if(a[j] != a[j+1])
+ lrc = 1;
+ if (lrc != 0)
+ return 0;
+ return 1;
+}
diff --git a/gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c b/gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c
new file mode 100644
index 00000000000..e9f63d36872
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c
@@ -0,0 +1,10 @@
+/* PR 41673: bogus -Wstrict-aliasing warning from VLA dereference. */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -O2 -Wall" } */
+
+int main(int argc, char *argv[])
+{
+ float x[argc];
+ float y[argc];
+ return 0 == __builtin_memcpy(y, x, argc * sizeof(*x));
+}
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-1.c b/gcc/testsuite/gcc.dg/autopar/outer-1.c
new file mode 100644
index 00000000000..913d390f684
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-1.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+void parloop (int N)
+{
+ int i, j;
+ int x[10000][10000];
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ x[i][j] = i + j + 3;
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ if (x[i][j] != i + j + 3)
+ abort ();
+}
+
+int main(void)
+{
+ parloop(10000);
+
+ return 0;
+}
+
+
+/* Check that outer loop is parallelized. */
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-2.c b/gcc/testsuite/gcc.dg/autopar/outer-2.c
new file mode 100644
index 00000000000..351b3499e89
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-2.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+void parloop (int N)
+{
+ int i, j,ii;
+ int x[400][10][400];
+
+for (ii = 0; ii < N; ii++)
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ x[i][j][ii] = ii+i + j + 3;
+
+for (ii = 0; ii < N; ii++)
+ for (i = 0; i < N;i++)
+ for (j = 0; j < N; j++)
+ if (x[i][j][ii] != ii+i + j + 3)
+ abort ();
+}
+
+int main(void)
+{
+ parloop(400);
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-3.c b/gcc/testsuite/gcc.dg/autopar/outer-3.c
new file mode 100644
index 00000000000..2f1033f9830
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-3.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+void parloop (int N)
+{
+ int i, j;
+ int x[500][500];
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < i; j++)
+ x[i][j] = i + j + 3;
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < i; j++)
+ if (x[i][j] != i + j + 3)
+ abort ();
+}
+
+int main(void)
+{
+ parloop(500);
+
+ return 0;
+}
+
+
+/* Check that outer loop is parallelized. */
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-4.c b/gcc/testsuite/gcc.dg/autopar/outer-4.c
new file mode 100644
index 00000000000..56f6123385d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-4.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+int g_sum=0;
+int x[500][500];
+
+__attribute__((noinline))
+void parloop (int N)
+{
+ int i, j;
+ int sum;
+
+ /* Double reduction is currently not supported, outer loop is not
+ parallelized. Inner reduction is detected, inner loop is
+ parallelized. */
+ sum = 0;
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ sum += x[i][j];
+
+ g_sum = sum;
+}
+
+int main(void)
+{
+ parloop(500);
+
+ return 0;
+}
+
+
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-5.c b/gcc/testsuite/gcc.dg/autopar/outer-5.c
new file mode 100644
index 00000000000..3a542988c26
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-5.c
@@ -0,0 +1,50 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+int x[500][500];
+int y[500];
+int g_sum=0;
+
+__attribute__((noinline))
+void init (int i, int j)
+{
+ x[i][j]=1;
+}
+
+__attribute__((noinline))
+void parloop (int N)
+{
+ int i, j;
+ int sum;
+
+ /* Inner cycle is currently not supported, outer loop is not
+ parallelized. Inner reduction is detected, inner loop is
+ parallelized. */
+ for (i = 0; i < N; i++)
+ {
+ sum = 0;
+ for (j = 0; j < N; j++)
+ sum += x[i][j];
+ y[i]=sum;
+ }
+ g_sum = sum;
+}
+
+int main(void)
+{
+ int i,j;
+ for (i = 0; i < 500; i++)
+ for (j = 0; j < 500; j++)
+ init(i, j);
+
+ parloop(500);
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/autopar/outer-6.c b/gcc/testsuite/gcc.dg/autopar/outer-6.c
new file mode 100644
index 00000000000..6e027d2f69a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/autopar/outer-6.c
@@ -0,0 +1,51 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+
+void abort (void);
+
+int x[500][500];
+int y[500];
+int g_sum=0;
+
+__attribute__((noinline))
+void init (int i, int j)
+{
+ x[i][j]=1;
+}
+
+__attribute__((noinline))
+void parloop (int N)
+{
+ int i, j;
+ int sum;
+
+ /* Outer loop reduction, outerloop is parallelized. */
+ sum=0;
+ for (i = 0; i < N; i++)
+ {
+ for (j = 0; j < N; j++)
+ y[i]=x[i][j];
+ sum += y[i];
+ }
+ g_sum = sum;
+}
+
+int main(void)
+{
+ int i,j;
+ for (i = 0; i < 500; i++)
+ for (j = 0; j < 500; j++)
+ init(i, j);
+
+ parloop(500);
+
+ return 0;
+}
+
+
+/* Check that outer loop is parallelized. */
+/* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "parallelizing inner loop" 0 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "parloops" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/cleanup-13.c b/gcc/testsuite/gcc.dg/cleanup-13.c
new file mode 100644
index 00000000000..0a5a9e9153e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cleanup-13.c
@@ -0,0 +1,319 @@
+/* HP-UX libunwind.so doesn't provide _UA_END_OF_STACK */
+/* { dg-do run } */
+/* { dg-options "-fexceptions" } */
+/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
+/* Verify DW_OP_* handling in the unwinder. */
+
+#include <unwind.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* #define OP_addr(x) 0x06, ... */
+#define OP_deref 0x06,
+#define SLEB128(x) (x)&0x7f /* Assume here the value is -0x40 ... 0x3f. */
+#define ULEB128(x) (x)&0x7f /* Assume here the value is 0 ... 0x7f. */
+#define VAL1(x) (x)&0xff
+#if defined (__BIG_ENDIAN__)
+#define VAL2(x) ((x)>>8)&0xff,(x)&0xff
+#define VAL4(x) ((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
+#define VAL8(x) ((x)>>56)&0xff,((x)>>48)&0xff,((x)>>40)&0xff,((x)>>32)&0xff,((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
+#elif defined(__LITTLE_ENDIAN__) || defined(__x86_64__) || defined(__i386__)
+#define VAL2(x) (x)&0xff,((x)>>8)&0xff
+#define VAL4(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff
+#define VAL8(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff,((x)>>32)&0xff,((x)>>40)&0xff,((x)>>48)&0xff,((x)>>56)&0xff
+#endif
+#define OP_const1u(x) 0x08,VAL1(x),
+#define OP_const1s(x) 0x09,VAL1(x),
+#define OP_const2u(x) 0x0a,VAL2(x),
+#define OP_const2s(x) 0x0b,VAL2(x),
+#define OP_const4u(x) 0x0c,VAL4(x),
+#define OP_const4s(x) 0x0d,VAL4(x),
+#define OP_const8u(x) 0x0e,VAL8(x),
+#define OP_const8s(x) 0x0f,VAL8(x),
+#define OP_constu(x) 0x10,ULEB128(x),
+#define OP_consts(x) 0x11,SLEB128(x),
+#define OP_dup 0x12,
+#define OP_drop 0x13,
+#define OP_over 0x14,
+#define OP_pick(x) 0x15,VAL1(x),
+#define OP_swap 0x16,
+#define OP_rot 0x17,
+#define OP_xderef 0x18,
+#define OP_abs 0x19,
+#define OP_and 0x1a,
+#define OP_div 0x1b,
+#define OP_minus 0x1c,
+#define OP_mod 0x1d,
+#define OP_mul 0x1e,
+#define OP_neg 0x1f,
+#define OP_not 0x20,
+#define OP_or 0x21,
+#define OP_plus 0x22,
+#define OP_plus_uconst(x) 0x23,ULEB128(x),
+#define OP_shl 0x24,
+#define OP_shr 0x25,
+#define OP_shra 0x26,
+#define OP_xor 0x27,
+#define OP_bra(x) 0x28,VAL2(x),
+#define OP_eq 0x29,
+#define OP_ge 0x2a,
+#define OP_gt 0x2b,
+#define OP_le 0x2c,
+#define OP_lt 0x2d,
+#define OP_ne 0x2e,
+#define OP_skip(x) 0x2f,VAL2(x),
+#define OP_lit0 0x30,
+#define OP_lit1 0x31,
+#define OP_lit2 0x32,
+#define OP_lit3 0x33,
+#define OP_lit4 0x34,
+#define OP_lit5 0x35,
+#define OP_lit6 0x36,
+#define OP_lit7 0x37,
+#define OP_lit8 0x38,
+#define OP_lit9 0x39,
+#define OP_lit10 0x3a,
+#define OP_lit11 0x3b,
+#define OP_lit12 0x3c,
+#define OP_lit13 0x3d,
+#define OP_lit14 0x3e,
+#define OP_lit15 0x3f,
+#define OP_lit16 0x40,
+#define OP_lit17 0x41,
+#define OP_lit18 0x42,
+#define OP_lit19 0x43,
+#define OP_lit20 0x44,
+#define OP_lit21 0x45,
+#define OP_lit22 0x46,
+#define OP_lit23 0x47,
+#define OP_lit24 0x48,
+#define OP_lit25 0x49,
+#define OP_lit26 0x4a,
+#define OP_lit27 0x4b,
+#define OP_lit28 0x4c,
+#define OP_lit29 0x4d,
+#define OP_lit30 0x4e,
+#define OP_lit31 0x4f,
+#define OP_reg0 0x50,
+#define OP_reg1 0x51,
+#define OP_reg2 0x52,
+#define OP_reg3 0x53,
+#define OP_reg4 0x54,
+#define OP_reg5 0x55,
+#define OP_reg6 0x56,
+#define OP_reg7 0x57,
+#define OP_reg8 0x58,
+#define OP_reg9 0x59,
+#define OP_reg10 0x5a,
+#define OP_reg11 0x5b,
+#define OP_reg12 0x5c,
+#define OP_reg13 0x5d,
+#define OP_reg14 0x5e,
+#define OP_reg15 0x5f,
+#define OP_reg16 0x60,
+#define OP_reg17 0x61,
+#define OP_reg18 0x62,
+#define OP_reg19 0x63,
+#define OP_reg20 0x64,
+#define OP_reg21 0x65,
+#define OP_reg22 0x66,
+#define OP_reg23 0x67,
+#define OP_reg24 0x68,
+#define OP_reg25 0x69,
+#define OP_reg26 0x6a,
+#define OP_reg27 0x6b,
+#define OP_reg28 0x6c,
+#define OP_reg29 0x6d,
+#define OP_reg30 0x6e,
+#define OP_reg31 0x6f,
+#define OP_breg0(x) 0x70,SLEB128(x),
+#define OP_breg1(x) 0x71,SLEB128(x),
+#define OP_breg2(x) 0x72,SLEB128(x),
+#define OP_breg3(x) 0x73,SLEB128(x),
+#define OP_breg4(x) 0x74,SLEB128(x),
+#define OP_breg5(x) 0x75,SLEB128(x),
+#define OP_breg6(x) 0x76,SLEB128(x),
+#define OP_breg7(x) 0x77,SLEB128(x),
+#define OP_breg8(x) 0x78,SLEB128(x),
+#define OP_breg9(x) 0x79,SLEB128(x),
+#define OP_breg10(x) 0x7a,SLEB128(x),
+#define OP_breg11(x) 0x7b,SLEB128(x),
+#define OP_breg12(x) 0x7c,SLEB128(x),
+#define OP_breg13(x) 0x7d,SLEB128(x),
+#define OP_breg14(x) 0x7e,SLEB128(x),
+#define OP_breg15(x) 0x7f,SLEB128(x),
+#define OP_breg16(x) 0x80,SLEB128(x),
+#define OP_breg17(x) 0x81,SLEB128(x),
+#define OP_breg18(x) 0x82,SLEB128(x),
+#define OP_breg19(x) 0x83,SLEB128(x),
+#define OP_breg20(x) 0x84,SLEB128(x),
+#define OP_breg21(x) 0x85,SLEB128(x),
+#define OP_breg22(x) 0x86,SLEB128(x),
+#define OP_breg23(x) 0x87,SLEB128(x),
+#define OP_breg24(x) 0x88,SLEB128(x),
+#define OP_breg25(x) 0x89,SLEB128(x),
+#define OP_breg26(x) 0x8a,SLEB128(x),
+#define OP_breg27(x) 0x8b,SLEB128(x),
+#define OP_breg28(x) 0x8c,SLEB128(x),
+#define OP_breg29(x) 0x8d,SLEB128(x),
+#define OP_breg30(x) 0x8e,SLEB128(x),
+#define OP_breg31(x) 0x8f,SLEB128(x),
+#define OP_regx(x) 0x90,SLEB128(x),
+#define OP_fbreg(x) 0x91,SLEB128(x),
+#define OP_bregx(x,y) 0x92,ULEB128(x),SLEB128(y),
+#define OP_piece(x) 0x93,ULEB128(x),
+#define OP_deref_size(x) 0x94,VAL1(x),
+#define OP_xderef_size(x) 0x95,VAL1(x),
+#define OP_nop 0x96,
+#define OP_nop_termination 0x96
+#define OP_push_object_address 0x97,
+#define OP_call2(x) 0x98,VAL2(x),
+#define OP_call4(x) 0x99,VAL4(x),
+/* #define OP_call_ref(x) 0x9a,... */
+#define OP_form_tls_address(x) 0x9b,
+#define OP_call_frame_cfa 0x9c,
+#define OP_bit_piece(x) 0x9d,ULEB128(x),
+/* #define OP_implicit_value(x...) 0x9e,... */
+#define OP_stack_value 0x9f,
+#define OP_GNU_push_tls_address 0xe0,
+/* #define OP_GNU_encoded_addr(x...) 0xf1, */
+
+#define ASSERT_TOS_NON0 OP_bra(3) OP_skip(-3)
+#define ASSERT_TOS_0 OP_lit0 OP_eq ASSERT_TOS_NON0
+
+/* Initially there is CFA value on the stack, we want to
+ keep it there at the end. */
+#define CFI_PROGRAM \
+OP_lit0 OP_nop ASSERT_TOS_0 \
+OP_lit1 ASSERT_TOS_NON0 \
+OP_lit1 OP_const1u(1) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_const2u(16) OP_eq ASSERT_TOS_NON0 \
+OP_lit31 OP_const4u(31) OP_ne ASSERT_TOS_0 \
+OP_lit1 OP_neg OP_const1s(-1) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_neg OP_const2s(-16) OP_ne ASSERT_TOS_0 \
+OP_lit31 OP_const4s(-31) OP_neg OP_ne ASSERT_TOS_0 \
+OP_lit7 OP_dup OP_plus_uconst(2) OP_lit9 OP_eq ASSERT_TOS_NON0 \
+ OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_lit20 OP_lit1 OP_drop OP_lit20 OP_eq ASSERT_TOS_NON0 \
+OP_lit17 OP_lit19 OP_over OP_lit17 OP_eq ASSERT_TOS_NON0 \
+ OP_lit19 OP_eq ASSERT_TOS_NON0 OP_lit17 OP_eq ASSERT_TOS_NON0 \
+OP_lit1 OP_lit2 OP_lit3 OP_lit4 OP_pick(2) OP_lit2 OP_eq ASSERT_TOS_NON0\
+ OP_lit4 OP_eq ASSERT_TOS_NON0 OP_lit3 OP_eq ASSERT_TOS_NON0 \
+ OP_pick(0) OP_lit2 OP_eq ASSERT_TOS_NON0 \
+ OP_lit2 OP_eq ASSERT_TOS_NON0 OP_lit1 OP_eq ASSERT_TOS_NON0 \
+OP_lit6 OP_lit12 OP_swap OP_lit6 OP_eq ASSERT_TOS_NON0 \
+ OP_lit12 OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_lit8 OP_lit9 OP_rot OP_lit8 OP_eq ASSERT_TOS_NON0 \
+ OP_lit7 OP_eq ASSERT_TOS_NON0 OP_lit9 OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_abs OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-123) OP_abs OP_const1u(123) OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_and OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_or OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_lit17 OP_lit2 OP_minus OP_lit15 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_const1s(-2) OP_div OP_lit3 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_const1s(-4) OP_mod OP_const1s(-2) \
+ OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit31 OP_plus_uconst(1) OP_mul OP_const2u(512) \
+ OP_eq ASSERT_TOS_NON0 \
+OP_lit5 OP_not OP_lit31 OP_and OP_lit26 OP_eq ASSERT_TOS_NON0 \
+OP_lit12 OP_lit31 OP_plus OP_const1u(43) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit2 OP_plus OP_const1s(-4) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_plus_uconst(3) OP_const1s(-3) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit4 OP_shl OP_const2u(256) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit3 OP_shr OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-16) OP_lit3 OP_shra OP_const1s(-2) OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_xor OP_lit5 OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_le ASSERT_TOS_NON0 \
+OP_lit3 OP_lit3 OP_le ASSERT_TOS_NON0 \
+OP_lit6 OP_lit3 OP_le ASSERT_TOS_0 \
+OP_lit3 OP_lit6 OP_lt ASSERT_TOS_NON0 \
+OP_lit3 OP_lit3 OP_lt ASSERT_TOS_0 \
+OP_lit6 OP_lit3 OP_lt ASSERT_TOS_0 \
+OP_lit3 OP_lit6 OP_ge ASSERT_TOS_0 \
+OP_lit3 OP_lit3 OP_ge ASSERT_TOS_NON0 \
+OP_lit6 OP_lit3 OP_ge ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_gt ASSERT_TOS_0 \
+OP_lit3 OP_lit3 OP_gt ASSERT_TOS_0 \
+OP_lit6 OP_lit3 OP_gt ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit1 OP_shr OP_lit0 OP_gt ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit1 OP_shra OP_lit0 OP_lt ASSERT_TOS_NON0
+
+#define CFI_ESCAPE_VAL_2(VALUES...) #VALUES
+#define CFI_ESCAPE_VAL_1(VALUES...) CFI_ESCAPE_VAL_2(VALUES)
+#define CFI_ESCAPE_VAL(VALUES...) CFI_ESCAPE_VAL_1(VALUES)
+#define CFI_ESCAPE do { } while (0)
+#define CFI_ARCH_PROGRAM OP_nop_termination
+#ifdef __GCC_HAVE_DWARF2_CFI_ASM
+#if defined (__x86_64__)
+#undef CFI_ESCAPE
+#undef CFI_ARCH_PROGRAM
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit8 OP_minus OP_nop_termination
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
+/* DW_CFA_expression %rip, uleb128(l2-l1), l1: program DW_OP_lit8 DW_OP_minus DW_OP_nop l2: */
+#define CFI_ESCAPE \
+ asm volatile (".cfi_escape 0x10, 0x10, (%P0&0x7f)+0x80, %P0>>7, " \
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
+ : : "i" (sizeof (cfi_arch_program)))
+#elif defined (__i386__)
+#undef CFI_ESCAPE
+#undef CFI_ARCH_PROGRAM
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit4 OP_minus OP_nop_termination
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
+/* DW_CFA_expression %eip, uleb128(l2-l1), l1: program DW_OP_lit4 DW_OP_minus DW_OP_nop l2: */
+#define CFI_ESCAPE \
+ asm volatile (".cfi_escape 0x10, 8, (%P0&0x7f)+0x80, %P0>>7, " \
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
+ : : "i" (sizeof (cfi_arch_program)))
+#endif
+#endif
+static _Unwind_Reason_Code
+force_unwind_stop (int version, _Unwind_Action actions,
+ _Unwind_Exception_Class exc_class,
+ struct _Unwind_Exception *exc_obj,
+ struct _Unwind_Context *context,
+ void *stop_parameter)
+{
+ if (actions & _UA_END_OF_STACK)
+ abort ();
+ return _URC_NO_REASON;
+}
+
+static void force_unwind ()
+{
+ struct _Unwind_Exception *exc = malloc (sizeof (*exc));
+ memset (&exc->exception_class, 0, sizeof (exc->exception_class));
+ exc->exception_cleanup = 0;
+
+#ifndef __USING_SJLJ_EXCEPTIONS__
+ _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
+#else
+ _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
+#endif
+
+ abort ();
+}
+
+static void handler (void *p __attribute__((unused)))
+{
+ exit (0);
+}
+
+__attribute__((noinline)) static void callme ()
+{
+ CFI_ESCAPE;
+ force_unwind ();
+}
+
+__attribute__((noinline)) static void doit ()
+{
+ char dummy __attribute__((cleanup (handler)));
+ callme ();
+}
+
+int main()
+{
+ doit ();
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/cpp/include6.c b/gcc/testsuite/gcc.dg/cpp/include6.c
new file mode 100644
index 00000000000..2bb1320daa2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/include6.c
@@ -0,0 +1,14 @@
+/* { dg-do preprocess } */
+/* { dg-options "-std=gnu99" } */
+
+#include <stddef.h>
+#include "stddef.h"
+#include L"stddef.h" /* { dg-error "include expects" } */
+#include u"stddef.h" /* { dg-error "include expects" } */
+#include U"stddef.h" /* { dg-error "include expects" } */
+#include u8"stddef.h" /* { dg-error "include expects" } */
+#include R"[stddef.h]" /* { dg-error "include expects" } */
+#include LR"[stddef.h]" /* { dg-error "include expects" } */
+#include uR"[stddef.h]" /* { dg-error "include expects" } */
+#include UR"[stddef.h]" /* { dg-error "include expects" } */
+#include u8R"[stddef.h]" /* { dg-error "include expects" } */
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
new file mode 100644
index 00000000000..02683960bdb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
@@ -0,0 +1,14 @@
+/* PR preprocessor/41543 */
+/* { dg-do compile } */
+/* { dg-options "-save-temps -g -O0 -dA -fno-merge-debug-strings" } */
+
+#include <stdarg.h>
+
+int
+foo (va_list ap)
+{
+ return va_arg (ap, int);
+}
+
+/* { dg-final { scan-assembler-not "DW_AT_decl_file\[^\\r\\n\]*\(pr41543\.i\)" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c
new file mode 100644
index 00000000000..d61b5a293f5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c
@@ -0,0 +1,18 @@
+/* PR debug/41695 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -dA -fno-merge-debug-strings" } */
+
+int bar (int);
+
+void
+foo (void)
+{
+ int b = 0;
+ b = bar (b);
+ b = bar (b);
+ b = bar (b);
+ b = bar (b);
+ bar (b);
+}
+
+/* { dg-final { scan-assembler-not "LVL(\[0-9\]+)-\[^1\]\[^\\r\\n\]*Location list begin address\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*LVL\\1-1-" } } */
diff --git a/gcc/testsuite/gcc.dg/debug/pr41264-1.c b/gcc/testsuite/gcc.dg/debug/pr41264-1.c
new file mode 100644
index 00000000000..b5555b554ba
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr41264-1.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+
+typedef unsigned int hashval_t;
+static hashval_t __attribute__((always_inline))
+iterative_hash_host_wide_int (long val, hashval_t val2)
+{
+ hashval_t a = (hashval_t) val;
+ int zero = 0;
+ hashval_t b = (hashval_t) (val >> (sizeof (hashval_t) * 8 + zero));
+
+ a -= b; a -= val2; a ^= (val2>>13);
+ b -= val2; b -= a; b ^= (a<< 8);
+ val2 -= a; val2 -= b; val2 ^= ((b&0xffffffff)>>13);
+ a -= b; a -= val2; a ^= ((val2&0xffffffff)>>12);
+ b -= val2; b -= a; b = (b ^ (a<<16)) & 0xffffffff;
+ val2 -= a; val2 -= b; val2 = (val2 ^ (b>> 5)) & 0xffffffff;
+ a -= b; a -= val2; a = (a ^ (val2>> 3)) & 0xffffffff;
+ b -= val2; b -= a; b = (b ^ (a<<10)) & 0xffffffff;
+ val2 -= a; val2 -= b; val2 = (val2 ^ (b>>15)) & 0xffffffff;
+ return val2;
+}
+
+hashval_t
+bla (int nunits, int mode)
+{
+ hashval_t hashcode = 0;
+
+
+ hashcode = iterative_hash_host_wide_int (14, hashcode);
+ hashcode = iterative_hash_host_wide_int (nunits, hashcode);
+ hashcode = iterative_hash_host_wide_int (mode, hashcode);
+ if (nunits)
+ return 0;
+ else
+ return hashcode;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/pr41343-1.c b/gcc/testsuite/gcc.dg/debug/pr41343-1.c
new file mode 100644
index 00000000000..6d56380383d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr41343-1.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+#define X(new,old) int i ## new = i ## old + i ## old;
+#define Y(pfx) X(pfx ## 1, pfx) \
+ X(pfx ## 2, pfx ## 1) \
+ X(pfx ## 3, pfx ## 2) \
+ X(pfx ## 4, pfx ## 3) \
+ X(pfx ## 5, pfx ## 4) \
+ X(pfx ## 6, pfx ## 5) \
+ X(pfx ## 7, pfx ## 6) \
+ X(pfx ## 8, pfx ## 7) \
+ X(pfx ## 9, pfx ## 8)
+
+void foo (int i1)
+{
+ Y(1)
+ Y(11)
+ Y(111)
+ asm ("" : : "X" (i1));
+}
diff --git a/gcc/testsuite/gcc.dg/debug/pr41717.c b/gcc/testsuite/gcc.dg/debug/pr41717.c
new file mode 100644
index 00000000000..21250883a11
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr41717.c
@@ -0,0 +1,10 @@
+/* PR debug/41717 */
+/* { dg-do compile } */
+
+void
+foo (void)
+{
+ _Complex float v[1], w;
+ v[1] = 0.0f + 0.8fi;
+ w = __builtin_conjf (v[1] * v[1]);
+}
diff --git a/gcc/testsuite/gcc.dg/debug/vta-1.c b/gcc/testsuite/gcc.dg/debug/vta-1.c
new file mode 100644
index 00000000000..414083a09c0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/vta-1.c
@@ -0,0 +1,34 @@
+/* https://bugzilla.redhat.com/show_bug.cgi?id=521991#c5
+
+ Distilled from Linux XFS source code. foo, inlined into bar, ends
+ up with debug stmts referencing the addressable variable b.
+ Optimization made it non-addressable, and then completely optimized
+ away, before we got a chance to rename (and discard) the occurrence
+ in the debug stmt. When we did, we crashed, attempting to rename
+ an unreference variable. */
+
+/* { dg-do compile } */
+
+static inline int
+foo (void *x, unsigned y)
+{
+ unsigned z = *(unsigned long *) x % y;
+ *(unsigned long *) x = *(unsigned long *) x / y;
+ return z;
+}
+
+struct S
+{
+ unsigned t;
+};
+
+void
+bar (struct S *x, int *y)
+{
+ int a = 0;
+ unsigned long b = x->t;
+ foo (&b, x->t);
+ for (;; a++)
+ if (b)
+ *y = 1;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/vta-2.c b/gcc/testsuite/gcc.dg/debug/vta-2.c
new file mode 100644
index 00000000000..5d44262ec76
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/vta-2.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+static int
+bar (void *a, unsigned int b, int n)
+{
+ int c = *(unsigned long *) a % b;
+ *(unsigned long *) a = (int) (*(unsigned long *) a) / b;
+ return c;
+}
+
+int
+foo (unsigned long x, int *y, int z)
+{
+ int level;
+ for (level = 0; level < *y; level++)
+ {
+ bar (&x, z, sizeof (x));
+ if (x)
+ return *y - 1;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/debug/vta-3.c b/gcc/testsuite/gcc.dg/debug/vta-3.c
new file mode 100644
index 00000000000..7d014f1bc1e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/vta-3.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+
+int
+foo (void)
+{
+ union { char e[8]; int i; } a, b;
+ char *c, *d;
+ unsigned int i;
+ c = a.e;
+ d = &b.e[sizeof (int) - 1];
+ for (i = 0; i < sizeof (int); i++)
+ {
+ *d = *c++;
+ --d;
+ }
+ return b.i;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr41447-1.c b/gcc/testsuite/gcc.dg/guality/pr41447-1.c
new file mode 100644
index 00000000000..9bb28abe37c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr41447-1.c
@@ -0,0 +1,26 @@
+/* { dg-do run { xfail *-*-* } } */
+/* { dg-options "-g" } */
+
+#include "guality.h"
+
+int a;
+
+int
+main (int argc, char *argv[])
+{
+ int tmp = a;
+ int tmp2 = a;
+ int tmp3;
+ int res;
+ GUALCHKVAL (a);
+ GUALCHKVAL (tmp);
+ GUALCHKVAL (tmp2);
+ a = 0;
+ tmp3 = tmp2;
+ GUALCHKVAL (a);
+ GUALCHKVAL (tmp);
+ GUALCHKVAL (tmp2);
+ GUALCHKVAL (tmp3);
+ res = tmp - tmp2 + 1;
+ return res;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr41616-1.c b/gcc/testsuite/gcc.dg/guality/pr41616-1.c
index c38d76b7c9e..24f64ab083d 100644
--- a/gcc/testsuite/gcc.dg/guality/pr41616-1.c
+++ b/gcc/testsuite/gcc.dg/guality/pr41616-1.c
@@ -1,5 +1,5 @@
/* { dg-do run { xfail *-*-* } } */
-/* { dg-options "-g -O2" } */
+/* { dg-options "-g" } */
#include "guality.h"
diff --git a/gcc/testsuite/gcc.dg/inline-33.c b/gcc/testsuite/gcc.dg/inline-33.c
index ac577e3cb88..d82ff71545b 100644
--- a/gcc/testsuite/gcc.dg/inline-33.c
+++ b/gcc/testsuite/gcc.dg/inline-33.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fdump-tree-optimized" } */
-/* { dg-options "-O3 -fdump-tree-optimized -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
int i;
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-1.c b/gcc/testsuite/gcc.dg/ipa/ipa-1.c
index 76ef9a643d6..65c0a0caae3 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-1.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-2.c b/gcc/testsuite/gcc.dg/ipa/ipa-2.c
index 454927a2c19..1b94bbb7bc0 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-2.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
index 6eb3da40a6f..57200a9ca5d 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
/* Double constants. */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-4.c b/gcc/testsuite/gcc.dg/ipa/ipa-4.c
index c162b2385f2..12af6a4f4d3 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-4.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-5.c b/gcc/testsuite/gcc.dg/ipa/ipa-5.c
index 9e8006a2fef..0ca6ba21dce 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-5.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-5.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
/* Float & short constants. */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-7.c b/gcc/testsuite/gcc.dg/ipa/ipa-7.c
index 1c4a1709df6..b3ab0f532e4 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-7.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-7.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining" } */
-/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
+/* { dg-add-options bind_pic_locally } */
#include <stdio.h>
void send_addr (int *);
diff --git a/gcc/testsuite/gcc.dg/ipa/ipacost-2.c b/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
index 958059c73e6..d06c9b8a48c 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized" } */
-/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
int array[100];
diff --git a/gcc/testsuite/gcc.dg/lto/20090914-2_0.c b/gcc/testsuite/gcc.dg/lto/20090914-2_0.c
index f78ecf8899f..906b3c44196 100644
--- a/gcc/testsuite/gcc.dg/lto/20090914-2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090914-2_0.c
@@ -1,4 +1,5 @@
-/* { dg-lto-do run { target x86_64-*-* i?86-*-* } } */
+/* { dg-lto-do run } */
+/* { dg-skip-if "x86 only" { ! { x86_64-*-* i?86-*-* } } { "*" } { "" } } */
/* Doesn't work without this dummy function with -fwhopr. */
int foo(void) { }
diff --git a/gcc/testsuite/gcc.dg/lto/20091006-2_0.c b/gcc/testsuite/gcc.dg/lto/20091006-2_0.c
new file mode 100644
index 00000000000..f8189920cfd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091006-2_0.c
@@ -0,0 +1,4 @@
+/* { dg-lto-do link } */
+
+extern int a[10];
+int main() { return 0; }
diff --git a/gcc/testsuite/gcc.dg/lto/20091006-2_1.c b/gcc/testsuite/gcc.dg/lto/20091006-2_1.c
new file mode 100644
index 00000000000..581839344c1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091006-2_1.c
@@ -0,0 +1 @@
+int a[16];
diff --git a/gcc/testsuite/gcc.dg/lto/20091006-2_2.c b/gcc/testsuite/gcc.dg/lto/20091006-2_2.c
new file mode 100644
index 00000000000..a610b2b1292
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091006-2_2.c
@@ -0,0 +1 @@
+extern int a[14];
diff --git a/gcc/testsuite/gcc.dg/lto/20091013-1_0.c b/gcc/testsuite/gcc.dg/lto/20091013-1_0.c
new file mode 100644
index 00000000000..e1a7dc86b6b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091013-1_0.c
@@ -0,0 +1,21 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -flto} {-fPIC -shared -O2 -flto}} } */
+
+void * HeapAlloc(void*,unsigned int,unsigned long);
+
+typedef struct tagGdiFont GdiFont;
+
+typedef struct tagDC {
+ int xunused;
+ GdiFont *gdiFont;
+ unsigned int font_code_page;
+} DC;
+
+DC *alloc_dc_ptr( void *funcs, unsigned short magic )
+{
+ DC *dc;
+ if (!(dc = HeapAlloc( 0, 0, sizeof(*dc) ))) return ((void *)0);
+ dc->gdiFont = 0;
+ return dc;
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091013-1_1.c b/gcc/testsuite/gcc.dg/lto/20091013-1_1.c
new file mode 100644
index 00000000000..68294fa62cb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091013-1_1.c
@@ -0,0 +1,111 @@
+typedef struct HDC__ { int unused; } *HDC;
+typedef struct HFONT__ { int unused; } *HFONT;
+
+typedef struct
+{
+ unsigned int ciACP;
+} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
+
+typedef struct tagTEXTMETRICW
+{
+ int tmCharSet;
+} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
+
+struct gdi_obj_funcs
+{
+ void* (*pSelectObject)( void* handle, void* hdc );
+};
+
+typedef struct tagGdiFont GdiFont;
+
+typedef struct tagDC
+{
+ int xunused;
+ GdiFont *gdiFont;
+ unsigned int font_code_page;
+} DC;
+
+extern GdiFont* WineEngCreateFontInstance(DC*, HFONT);
+extern unsigned int WineEngGetTextCharsetInfo(GdiFont *font, void* fs, unsigned int flags);
+extern int WineEngGetTextMetrics(GdiFont*, LPTEXTMETRICW);
+extern void* alloc_gdi_handle( void *obj, unsigned short type, const struct gdi_obj_funcs *funcs );
+
+enum __wine_debug_class
+{
+ __WINE_DBCL_FIXME,
+ __WINE_DBCL_ERR,
+ __WINE_DBCL_WARN,
+ __WINE_DBCL_TRACE,
+
+ __WINE_DBCL_INIT = 7
+};
+
+struct __wine_debug_channel
+{
+ unsigned char flags;
+ char name[15];
+};
+
+extern int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func,
+ const char *format, ... ) __attribute__((format (printf,4,5)));
+
+static struct __wine_debug_channel __wine_dbch_font = { ~0, "font" };
+static struct __wine_debug_channel * const __wine_dbch___default = &__wine_dbch_font;
+
+static void* FONT_SelectObject( void* handle, void* hdc );
+
+static const struct gdi_obj_funcs font_funcs =
+{
+ FONT_SelectObject,
+};
+
+HFONT CreateFontIndirectW( const void *plf )
+{
+ return alloc_gdi_handle( 0, 6, &font_funcs );
+}
+
+static void update_font_code_page( DC *dc )
+{
+ CHARSETINFO csi;
+ int charset = (unsigned char)1;
+
+ if (dc->gdiFont)
+ charset = WineEngGetTextCharsetInfo( dc->gdiFont, ((void *)0), 0 );
+
+ if (TranslateCharsetInfo( ((void *)(unsigned long)((unsigned long)charset)), &csi, 1) )
+ dc->font_code_page = csi.ciACP;
+ else {
+ switch(charset) {
+ case (unsigned char)1:
+ dc->font_code_page = GetACP();
+ break;
+
+ case (unsigned char)246:
+ dc->font_code_page = 0;
+ break;
+
+ default:
+ do { if((((__wine_dbch___default))->flags & (1 << __WINE_DBCL_FIXME))) { struct __wine_debug_channel * const __dbch = (__wine_dbch___default); const enum __wine_debug_class __dbcl = __WINE_DBCL_FIXME; wine_dbg_log( __dbcl, __dbch, __FUNCTION__, "Can't find codepage for charset %d\n", charset); } } while(0);
+ dc->font_code_page = 0;
+ break;
+ }
+ }
+
+ do { if((((__wine_dbch___default))->flags & (1 << __WINE_DBCL_TRACE))) { struct __wine_debug_channel * const __dbch = (__wine_dbch___default); const enum __wine_debug_class __dbcl = __WINE_DBCL_TRACE; wine_dbg_log( __dbcl, __dbch, __FUNCTION__, "charset %d => cp %d\n", charset, dc->font_code_page); } } while(0);
+}
+
+static void* FONT_SelectObject( void* handle, void* hdc )
+{
+ DC *dc;
+
+ dc->gdiFont = WineEngCreateFontInstance( dc, handle );
+ update_font_code_page( dc );
+ return 0;
+}
+
+int GetTextMetricsW( HDC hdc, TEXTMETRICW *metrics )
+{
+ DC * dc;
+ return WineEngGetTextMetrics(dc->gdiFont, metrics);
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091013-1_2.c b/gcc/testsuite/gcc.dg/lto/20091013-1_2.c
new file mode 100644
index 00000000000..55f8ca1b46d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091013-1_2.c
@@ -0,0 +1,220 @@
+typedef struct HDC__ { int unused; } *HDC;
+typedef struct HFONT__ { int unused; } *HFONT;
+
+void* HeapAlloc(void*,unsigned int,unsigned long);
+
+typedef struct tagLOGFONTW
+{
+ int lfPitchAndFamily;
+ unsigned short lfFaceName[32];
+} LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
+
+typedef struct tagGdiFont GdiFont;
+typedef struct tagDC DC;
+
+extern unsigned int WineEngGetFontData(GdiFont*, unsigned int, unsigned int, void*, unsigned int);
+
+struct list
+{
+ struct list *next;
+ struct list *prev;
+};
+
+typedef struct FT_FaceRec_
+{
+ signed long face_flags;
+} FT_FaceRec, *FT_Face;
+
+typedef struct { } GM;
+
+typedef struct { } FMAT2;
+
+typedef struct {
+ unsigned int hash;
+ LOGFONTW lf;
+ int can_use_bitmap;
+} FONT_DESC;
+
+
+
+typedef struct tagHFONTLIST {
+ struct list entry;
+ HFONT hfont;
+} HFONTLIST;
+
+typedef struct {
+ struct list entry;
+ void *face;
+ GdiFont *font;
+} CHILD_FONT;
+
+
+struct tagGdiFont {
+ struct list entry;
+ GM **gm;
+ struct list hfontlist;
+ struct list child_fonts;
+
+ FT_Face ft_face;
+ FONT_DESC font_desc;
+ long ppem;
+};
+
+
+
+static struct list gdi_font_list = { &(gdi_font_list), &(gdi_font_list) };
+
+
+
+
+static int get_glyph_index_linked(GdiFont *font, unsigned int c, GdiFont **linked_font, unsigned int *glyph);
+static long load_VDMX(GdiFont*, long);
+
+extern int f1(void*,int);
+
+static FT_Face OpenFontFace(GdiFont *font, void *face, long width, long height)
+{
+ FT_Face ft_face;
+
+ font->ppem = load_VDMX(font, height);
+ if(font->ppem == 0)
+ font->ppem = f1(ft_face, height);
+ return ft_face;
+}
+
+
+static GdiFont *alloc_font(void)
+{
+ GdiFont *ret = HeapAlloc(0, 0x00000008, sizeof(*ret));
+ ret->gm = HeapAlloc(0, 0x00000008, sizeof(GM*));
+ return ret;
+}
+
+
+static long load_VDMX(GdiFont *font,long height)
+{
+ unsigned short hdr[3];
+
+ WineEngGetFontData(font, 0x42424242, 0, hdr, 6);
+ return 0;
+}
+
+static int fontcmp(const GdiFont *font, FONT_DESC *fd)
+{
+ if(font->font_desc.hash != fd->hash) return 1;
+ if(memcmp(&font->font_desc.lf, &fd->lf, __builtin_offsetof (LOGFONTW, lfFaceName))) return 1;
+ if(!font->font_desc.can_use_bitmap != !fd->can_use_bitmap) return 1;
+ return strcmpiW(font->font_desc.lf.lfFaceName, fd->lf.lfFaceName);
+}
+
+static GdiFont *find_in_cache(HFONT hfont, const LOGFONTW *plf, const FMAT2 *pmat, int can_use_bitmap)
+{
+ GdiFont *ret;
+ FONT_DESC fd;
+ HFONTLIST *hflist;
+ struct list *font_elem_ptr, *hfontlist_elem_ptr;
+
+ fd.lf = *plf;
+ fd.can_use_bitmap = can_use_bitmap;
+
+
+ for ((font_elem_ptr) = (&gdi_font_list)->next; (font_elem_ptr) != (&gdi_font_list); (font_elem_ptr) = (font_elem_ptr)->next) {
+ ret = ((struct tagGdiFont *)((char *)(font_elem_ptr) - (unsigned long)(&((struct tagGdiFont *)0)->entry)));
+ if(!fontcmp(ret, &fd)) {
+ if(!can_use_bitmap && !( ret->ft_face->face_flags & ( 1L << 0 ) )) continue;
+ for ((hfontlist_elem_ptr) = (&ret->hfontlist)->next; (hfontlist_elem_ptr) != (&ret->hfontlist); (hfontlist_elem_ptr) = (hfontlist_elem_ptr)->next) {
+ hflist = ((struct tagHFONTLIST *)((char *)(hfontlist_elem_ptr) - (unsigned long)(&((struct tagHFONTLIST *)0)->entry)));
+ if(hflist->hfont == hfont)
+ return ret;
+ }
+ hflist = HeapAlloc(0, 0, sizeof(*hflist));
+ hflist->hfont = hfont;
+ return ret;
+ }
+ }
+
+ while(font_elem_ptr) {
+ ret = ((struct tagGdiFont *)((char *)(font_elem_ptr) - (unsigned long)(&((struct tagGdiFont *)0)->entry)));
+ if(!fontcmp(ret, &fd)) {
+ if(!can_use_bitmap && !( ret->ft_face->face_flags & ( 1L << 0 ) )) continue;
+ hflist = HeapAlloc(0, 0, sizeof(*hflist));
+ hflist->hfont = hfont;
+ return ret;
+ }
+ }
+ return ((void *)0);
+}
+
+
+
+
+GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont)
+{
+ GdiFont *ret;
+ int can_use_bitmap;
+ LOGFONTW lf;
+ FMAT2 dcmat;
+
+ if((ret = find_in_cache(hfont, &lf, &dcmat, can_use_bitmap)) != ((void *)0))
+ return ret;
+ return alloc_font();
+}
+
+extern unsigned int f(void*,unsigned int g);
+
+static unsigned int get_glyph_index(void*font, unsigned int glyph)
+{
+ return f(font, glyph);
+}
+
+unsigned int WineEngGetGlyphOutline(GdiFont *incoming_font, unsigned int glyph, unsigned int format,
+ void* lpgm, unsigned int buflen, void* buf,
+ const void* lpmat)
+{
+ unsigned int glyph_index;
+
+ get_glyph_index_linked(incoming_font, glyph, &incoming_font, &glyph_index);
+ return 0;
+}
+
+static int load_child_font(GdiFont *font, CHILD_FONT *child)
+{
+ child->font = alloc_font();
+ child->font->ft_face = OpenFontFace(child->font, child->face, 0, -font->ppem);
+ if(!child->font->ft_face)
+ return 0;
+ return 1;
+}
+
+static int get_glyph_index_linked(GdiFont *font, unsigned int c, GdiFont **linked_font, unsigned int *glyph)
+{
+ unsigned int g;
+ CHILD_FONT *child_font;
+
+ for ((child_font) = ((CHILD_FONT *)((char *)((&font->child_fonts)->next) - (unsigned long)(&((CHILD_FONT *)0)->entry))); &(child_font)->entry != (&font->child_fonts); (child_font) = ((CHILD_FONT *)((char *)((child_font)->entry.next) - (unsigned long)(&((CHILD_FONT *)0)->entry))))
+ {
+ if(!load_child_font(font, child_font))
+ continue;
+
+ g = get_glyph_index(child_font->font, c);
+ if(g) {
+ *glyph = g;
+ *linked_font = child_font->font;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+unsigned int WineEngGetFontData(GdiFont *font, unsigned int table, unsigned int offset, void* buf,
+ unsigned int cbData)
+{
+ unsigned long len;
+ load_sfnt_table(font->ft_face, table, offset, buf, &len);
+ return len;
+}
+
+int WineEngGetLinkedHFont(DC *dc, unsigned short c, HFONT *new_hfont, unsigned int *glyph) {
+ return get_glyph_index_linked(0, 0, 0, 0);
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091014-1_0.c b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c
new file mode 100644
index 00000000000..241dddbf81f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c
@@ -0,0 +1,4 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -flto}} } */
+
+/* Empty file. See PR41173. */
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_0.c b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c
new file mode 100644
index 00000000000..f60e7d16a7e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c
@@ -0,0 +1,5 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -O2 -flto} {-fPIC -shared -O2 -fwhopr}} } */
+
+#include "20091015-1_b.h"
+void diagnostic_initialize (FILE **stream) { *stream = stderr; }
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_1.c b/gcc/testsuite/gcc.dg/lto/20091015-1_1.c
new file mode 100644
index 00000000000..c000518f45d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_1.c
@@ -0,0 +1,4 @@
+#include "20091015-1_a.h"
+#include "20091015-1_b.h"
+void ggc_print_common_statistics (FILE *stream) {
+}
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_2.c b/gcc/testsuite/gcc.dg/lto/20091015-1_2.c
new file mode 100644
index 00000000000..fd10680866a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_2.c
@@ -0,0 +1,5 @@
+#include "20091015-1_a.h"
+#include "20091015-1_b.h"
+void debug_optab_libfuncs (void) {
+foo (stderr, 4 );
+}
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_a.h b/gcc/testsuite/gcc.dg/lto/20091015-1_a.h
new file mode 100644
index 00000000000..61e56c9a95f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_a.h
@@ -0,0 +1,2 @@
+struct _IO_FILE { int _flags;
+};
diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_b.h b/gcc/testsuite/gcc.dg/lto/20091015-1_b.h
new file mode 100644
index 00000000000..88139027467
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091015-1_b.h
@@ -0,0 +1,2 @@
+typedef struct _IO_FILE FILE;
+extern struct _IO_FILE *stderr;
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_0.c b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
new file mode 100644
index 00000000000..942c5c6c0a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
@@ -0,0 +1,13 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -O2 -flto}} } */
+
+typedef struct VEC_constructor_elt_gc { } VEC_constructor_elt_gc;
+#include "20091016-1_a.h"
+struct stmt_tree_s {
+ tree x_cur_stmt_list;
+};
+void *add_stmt (struct stmt_tree_s *x)
+{
+ return &x->x_cur_stmt_list;
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_1.c b/gcc/testsuite/gcc.dg/lto/20091016-1_1.c
new file mode 100644
index 00000000000..06389b8e309
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_1.c
@@ -0,0 +1,18 @@
+typedef struct VEC_constructor_elt_gcx { } VEC_constructor_elt_gc;
+#include "20091016-1_a.h"
+struct gcc_target {
+ void (* builtin_vec_perm) (tree*);
+};
+extern struct gcc_target targetm;
+void dwarf2out_begin_prologue (tree t)
+{
+ (*targetm.builtin_vec_perm) (&t);
+}
+struct die_arg_entry_struct {
+ tree arg;
+};
+void *gt_pch_p_20VEC_die_arg_entry_gc (struct die_arg_entry_struct *vec)
+{
+ return &(vec->arg);
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_a.h b/gcc/testsuite/gcc.dg/lto/20091016-1_a.h
new file mode 100644
index 00000000000..8eefed5cfad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_a.h
@@ -0,0 +1,6 @@
+typedef union tree_node *tree;
+union tree_node {
+ tree * use;
+ VEC_constructor_elt_gc *elts;
+};
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091017-1_0.c b/gcc/testsuite/gcc.dg/lto/20091017-1_0.c
new file mode 100644
index 00000000000..ec4c62e4d7c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091017-1_0.c
@@ -0,0 +1,15 @@
+/* { dg-lto-do run } */
+
+struct X {
+ int i;
+};
+extern void foo (void *);
+extern void abort (void);
+int main ()
+{
+ struct X *p;
+ foo(&p);
+ if (p != (struct X *)0)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/lto/20091017-1_1.c b/gcc/testsuite/gcc.dg/lto/20091017-1_1.c
new file mode 100644
index 00000000000..23e5992bde6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091017-1_1.c
@@ -0,0 +1,6 @@
+struct X;
+void foo (void *q)
+{
+ struct X **p = (struct X **)q;
+ *p = (struct X *)0;
+}
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-1_0.c b/gcc/testsuite/gcc.dg/lto/20091020-1_0.c
new file mode 100644
index 00000000000..ef61e98b4cc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091020-1_0.c
@@ -0,0 +1,8 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -flto}} } */
+
+typedef struct {
+ int NumPackStreams;
+} CSzAr;
+void cli_7unz (CSzAr db) { }
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-1_1.c b/gcc/testsuite/gcc.dg/lto/20091020-1_1.c
new file mode 100644
index 00000000000..899183a2459
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091020-1_1.c
@@ -0,0 +1,15 @@
+typedef struct {
+ int NumPackStreams;
+} CSzAr;
+typedef struct {
+ CSzAr db;
+} CSzArEx;
+int SzArEx_Init(CSzArEx *p)
+{
+ return p->db.NumPackStreams;
+}
+int SzArEx_GetFolderFullPackSize(const CSzArEx *p)
+{
+ return p->db.NumPackStreams;
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-2_0.c b/gcc/testsuite/gcc.dg/lto/20091020-2_0.c
new file mode 100644
index 00000000000..7dcbb2da2ca
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091020-2_0.c
@@ -0,0 +1,18 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -flto}} } */
+
+typedef struct {
+ int NumPackStreams;
+} CSzAr;
+typedef struct {
+ CSzAr db;
+} CSzArEx;
+int SzArEx_Init(CSzArEx *p)
+{
+ return p->db.NumPackStreams;
+}
+int SzArEx_GetFolderFullPackSize(const CSzArEx *p)
+{
+ return p->db.NumPackStreams;
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-2_1.c b/gcc/testsuite/gcc.dg/lto/20091020-2_1.c
new file mode 100644
index 00000000000..9174f26c35c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091020-2_1.c
@@ -0,0 +1,5 @@
+typedef struct {
+ int NumPackStreams;
+} CSzAr;
+void cli_7unz (CSzAr db) { }
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091020-3_0.c b/gcc/testsuite/gcc.dg/lto/20091020-3_0.c
new file mode 100644
index 00000000000..441a7b91a7f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091020-3_0.c
@@ -0,0 +1,20 @@
+/* { dg-lto-do assemble } */
+
+typedef __SIZE_TYPE__ size_t;
+static int stack_dir;
+static void find_stack_direction ()
+{
+ static char *addr = ((void *)0);
+ auto char dummy;
+ if (addr == ((void *)0))
+ {
+ addr = &(dummy);
+ find_stack_direction ();
+ }
+}
+void * C_alloca (size_t size)
+{
+ if (stack_dir == 0)
+ find_stack_direction ();
+}
+
diff --git a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
index ee805174aea..4a6a8a61969 100644
--- a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
@@ -31,7 +31,7 @@ struct gimple_opt_pass one_pass =
{
{
GIMPLE_PASS,
- "useless", /* name */
+ "cfg", /* name */
one_pass_gate, /* gate */
one_pass_exec, /* execute */
NULL, /* sub */
@@ -53,7 +53,7 @@ int plugin_init (struct plugin_name_args *plugin_info,
struct register_pass_info p;
p.pass = &one_pass.pass;
- p.reference_pass_name = "useless";
+ p.reference_pass_name = "cfg";
p.ref_pass_instance_number = 1;
p.pos_op = PASS_POS_INSERT_AFTER;
diff --git a/gcc/testsuite/gcc.dg/pr41340.c b/gcc/testsuite/gcc.dg/pr41340.c
new file mode 100644
index 00000000000..bafa61f5185
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr41340.c
@@ -0,0 +1,68 @@
+/* PR debug/41340 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -g -fcompare-debug" } */
+/* { dg-options "-O3 -g -fcompare-debug -march=i686" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+
+typedef struct { int t; } *T;
+struct S1 { unsigned s1; };
+struct S2 { struct S1 s2; };
+struct S3 { unsigned s3; struct S2 **s4; };
+struct S5 { struct S2 *s5; };
+
+extern void fn0 (void) __attribute__ ((__noreturn__));
+T fn6 (struct S3);
+void fn7 (void);
+
+static inline __attribute__((always_inline)) int
+fn1 (const struct S1 *x)
+{
+ return x->s1;
+}
+
+static inline __attribute__((always_inline)) int
+fn2 (const struct S1 *x, unsigned y)
+{
+ if (y >= x->s1)
+ fn0 ();
+ return 0;
+}
+
+static inline __attribute__((always_inline)) int
+fn3 (struct S3 x)
+{
+ return (x.s3 == fn1 (*x.s4 ? &(*x.s4)->s2 : 0));
+}
+
+static inline __attribute__((always_inline)) int
+fn4 (struct S3 x)
+{
+ return fn2 (&(*x.s4)->s2, x.s3);
+}
+
+int
+fn5 (struct S3 x, T *y)
+{
+ if (!fn3 (x))
+ {
+ *y = (T) (long) fn4 (x);
+ return 1;
+ }
+ return 0;
+}
+
+void
+test (struct S5 *x)
+{
+ struct S3 a;
+ T b;
+ unsigned char c = 0;
+ a.s4 = &x->s5;
+ while (fn5 (a, &b))
+ if (!(b->t & 8))
+ c = 1;
+ a.s4 = &x->s5;
+ while ((b = fn6 (a)))
+ ;
+ if (!c)
+ fn7 ();
+}
diff --git a/gcc/testsuite/gcc.dg/raw-string-1.c b/gcc/testsuite/gcc.dg/raw-string-1.c
new file mode 100644
index 00000000000..b499e5cce69
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-1.c
@@ -0,0 +1,101 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include <wchar.h>
+
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+
+const char s0[] = R"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char s1[] = "a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char s2[] = R"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char s3[] = "ab\nc]\"\nc]*|\"\nc";
+
+const char t0[] = u8R"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char t1[] = u8"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char t2[] = u8R"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char t3[] = u8"ab\nc]\"\nc]*|\"\nc";
+
+const char16_t u0[] = uR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char16_t u1[] = u"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char16_t u2[] = uR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char16_t u3[] = u"ab\nc]\"\nc]*|\"\nc";
+
+const char32_t U0[] = UR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const char32_t U1[] = U"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const char32_t U2[] = UR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const char32_t U3[] = U"ab\nc]\"\nc]*|\"\nc";
+
+const wchar_t L0[] = LR"[a\
+\u010d\U0000010D\\\'\"\?\a\b\f\n\r\t\v\0\00\000\xa\xabb
+c]";
+const wchar_t L1[] = L"a\U0000010d\u010d\\\\\\'\\\"\\?\\a\\b\\f\\n\\r\\t\\v\\0\\00\\000\\xa\\xabb\nc";
+const wchar_t L2[] = LR"*|*[a\
+b
+c]"
+c]*|"
+c]*|*";
+const wchar_t L3[] = L"ab\nc]\"\nc]*|\"\nc";
+
+int
+main (void)
+{
+ if (sizeof (s0) != sizeof (s1)
+ || __builtin_memcmp (s0, s1, sizeof (s0)) != 0)
+ __builtin_abort ();
+ if (sizeof (s2) != sizeof (s3)
+ || __builtin_memcmp (s2, s3, sizeof (s2)) != 0)
+ __builtin_abort ();
+ if (sizeof (t0) != sizeof (t1)
+ || __builtin_memcmp (t0, t1, sizeof (t0)) != 0)
+ __builtin_abort ();
+ if (sizeof (t2) != sizeof (t3)
+ || __builtin_memcmp (t2, t3, sizeof (t2)) != 0)
+ __builtin_abort ();
+ if (sizeof (u0) != sizeof (u1)
+ || __builtin_memcmp (u0, u1, sizeof (u0)) != 0)
+ __builtin_abort ();
+ if (sizeof (u2) != sizeof (u3)
+ || __builtin_memcmp (u2, u3, sizeof (u2)) != 0)
+ __builtin_abort ();
+ if (sizeof (U0) != sizeof (U1)
+ || __builtin_memcmp (U0, U1, sizeof (U0)) != 0)
+ __builtin_abort ();
+ if (sizeof (U2) != sizeof (U3)
+ || __builtin_memcmp (U2, U3, sizeof (U2)) != 0)
+ __builtin_abort ();
+ if (sizeof (L0) != sizeof (L1)
+ || __builtin_memcmp (L0, L1, sizeof (L0)) != 0)
+ __builtin_abort ();
+ if (sizeof (L2) != sizeof (L3)
+ || __builtin_memcmp (L2, L3, sizeof (L2)) != 0)
+ __builtin_abort ();
+ if (sizeof (R"*[]*") != 1
+ || __builtin_memcmp (R"*[]*", "", 1) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/raw-string-2.c b/gcc/testsuite/gcc.dg/raw-string-2.c
new file mode 100644
index 00000000000..533abe2bc89
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-2.c
@@ -0,0 +1,109 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include <wchar.h>
+
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+
+#define R
+#define u
+#define uR
+#define U
+#define UR
+#define u8
+#define u8R
+#define L
+#define LR
+
+const char s00[] = R"[a]" "[b]";
+const char s01[] = "[a]" R"*[b]*";
+const char s02[] = R"[a]" R"[b]";
+const char s03[] = R"-[a]-" u8"[b]";
+const char s04[] = "[a]" u8R"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char s05[] = R"[a]" u8R"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char s06[] = u8R";([a];(" "[b]";
+const char s07[] = u8"[a]" R"[b]";
+const char s08[] = u8R"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char s09[] = u8R"/^&|~!=,"'\[a]/^&|~!=,"'\" u8"[b]";
+const char s10[] = u8"[a]" u8R"0123456789abcdef[b]0123456789abcdef";
+const char s11[] = u8R"ghijklmnopqrstuv[a]ghijklmnopqrstuv" u8R"w[b]w";
+
+const char16_t u03[] = R"-[a]-" u"[b]";
+const char16_t u04[] = "[a]" uR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char16_t u05[] = R"[a]" uR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char16_t u06[] = uR";([a];(" "[b]";
+const char16_t u07[] = u"[a]" R"[b]";
+const char16_t u08[] = uR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char16_t u09[] = uR"/^&|~!=,"'\[a]/^&|~!=,"'\" u"[b]";
+const char16_t u10[] = u"[a]" uR"0123456789abcdef[b]0123456789abcdef";
+const char16_t u11[] = uR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" uR"w[b]w";
+
+const char32_t U03[] = R"-[a]-" U"[b]";
+const char32_t U04[] = "[a]" UR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const char32_t U05[] = R"[a]" UR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const char32_t U06[] = UR";([a];(" "[b]";
+const char32_t U07[] = U"[a]" R"[b]";
+const char32_t U08[] = UR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const char32_t U09[] = UR"/^&|~!=,"'\[a]/^&|~!=,"'\" U"[b]";
+const char32_t U10[] = U"[a]" UR"0123456789abcdef[b]0123456789abcdef";
+const char32_t U11[] = UR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" UR"w[b]w";
+
+const wchar_t L03[] = R"-[a]-" L"[b]";
+const wchar_t L04[] = "[a]" LR"MNOPQRSTUVWXYZ[b]MNOPQRSTUVWXYZ";
+const wchar_t L05[] = R"[a]" LR"wxyzABCDEFGHIJKL[b]wxyzABCDEFGHIJKL";
+const wchar_t L06[] = LR";([a];(" "[b]";
+const wchar_t L07[] = L"[a]" R"[b]";
+const wchar_t L08[] = LR"[a]" R"_{}#()<>%:;.?*+-[b]_{}#()<>%:;.?*+-";
+const wchar_t L09[] = LR"/^&|~!=,"'\[a]/^&|~!=,"'\" L"[b]";
+const wchar_t L10[] = L"[a]" LR"0123456789abcdef[b]0123456789abcdef";
+const wchar_t L11[] = LR"ghijklmnopqrstuv[a]ghijklmnopqrstuv" LR"w[b]w";
+
+int
+main (void)
+{
+#define TEST(str, val) \
+ if (sizeof (str) != sizeof (val) \
+ || __builtin_memcmp (str, val, sizeof (str)) != 0) \
+ __builtin_abort ()
+ TEST (s00, "a[b]");
+ TEST (s01, "[a]b");
+ TEST (s02, "ab");
+ TEST (s03, "a[b]");
+ TEST (s04, "[a]b");
+ TEST (s05, "ab");
+ TEST (s06, "a[b]");
+ TEST (s07, "[a]b");
+ TEST (s08, "ab");
+ TEST (s09, "a[b]");
+ TEST (s10, "[a]b");
+ TEST (s11, "ab");
+ TEST (u03, u"a[b]");
+ TEST (u04, u"[a]b");
+ TEST (u05, u"ab");
+ TEST (u06, u"a[b]");
+ TEST (u07, u"[a]b");
+ TEST (u08, u"ab");
+ TEST (u09, u"a[b]");
+ TEST (u10, u"[a]b");
+ TEST (u11, u"ab");
+ TEST (U03, U"a[b]");
+ TEST (U04, U"[a]b");
+ TEST (U05, U"ab");
+ TEST (U06, U"a[b]");
+ TEST (U07, U"[a]b");
+ TEST (U08, U"ab");
+ TEST (U09, U"a[b]");
+ TEST (U10, U"[a]b");
+ TEST (U11, U"ab");
+ TEST (L03, L"a[b]");
+ TEST (L04, L"[a]b");
+ TEST (L05, L"ab");
+ TEST (L06, L"a[b]");
+ TEST (L07, L"[a]b");
+ TEST (L08, L"ab");
+ TEST (L09, L"a[b]");
+ TEST (L10, L"[a]b");
+ TEST (L11, L"ab");
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/raw-string-3.c b/gcc/testsuite/gcc.dg/raw-string-3.c
new file mode 100644
index 00000000000..9226411d2e0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-3.c
@@ -0,0 +1,53 @@
+/* If not gnu99, the {,u,u8,U,L}R prefix should be parsed as separate
+ token. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+const void *s0 = R"[a]"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 6 } */
+const void *s1 = uR"[a]"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 8 } */
+const void *s2 = UR"[a]"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 10 } */
+const void *s3 = u8R"[a]"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 12 } */
+const void *s4 = LR"[a]"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 14 } */
+
+const int i0 = R'a'; /* { dg-error "expected ',' or ';'" } */
+const int i1 = uR'a'; /* { dg-error "expected ',' or ';'" } */
+const int i2 = UR'a'; /* { dg-error "expected ',' or ';'" } */
+const int i3 = u8R'a'; /* { dg-error "expected ',' or ';'" } */
+const int i4 = LR'a'; /* { dg-error "expected ',' or ';'" } */
+
+#define R "a"
+#define uR "b"
+#define UR "c"
+#define u8R "d"
+#define LR "e"
+
+const void *s5 = R"[a]";
+const void *s6 = uR"[a]";
+const void *s7 = UR"[a]";
+const void *s8 = u8R"[a]";
+const void *s9 = LR"[a]";
+
+#undef R
+#undef uR
+#undef UR
+#undef u8R
+#undef LR
+
+#define R 1 +
+#define uR 2 +
+#define UR 3 +
+#define u8R 4 +
+#define LR 5 +
+
+const int i5 = R'a';
+const int i6 = uR'a';
+const int i7 = UR'a';
+const int i8 = u8R'a';
+const int i9 = LR'a';
+
+int main () {}
diff --git a/gcc/testsuite/gcc.dg/raw-string-4.c b/gcc/testsuite/gcc.dg/raw-string-4.c
new file mode 100644
index 00000000000..24d56ed7464
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-4.c
@@ -0,0 +1,28 @@
+/* R is not applicable for character literals. */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+const int i0 = R'a'; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 5 } */
+const int i1 = uR'a'; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 7 } */
+const int i2 = UR'a'; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 9 } */
+const int i3 = u8R'a'; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 11 } */
+const int i4 = LR'a'; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 13 } */
+
+#define R 1 +
+#define uR 2 +
+#define UR 3 +
+#define u8R 4 +
+#define LR 5 +
+
+const int i5 = R'a';
+const int i6 = uR'a';
+const int i7 = UR'a';
+const int i8 = u8R'a';
+const int i9 = LR'a';
+
+int main () {}
diff --git a/gcc/testsuite/gcc.dg/raw-string-5.c b/gcc/testsuite/gcc.dg/raw-string-5.c
new file mode 100644
index 00000000000..3dbf97ded90
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-5.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+const void *s0 = R"0123456789abcdefg[]0123456789abcdefg";
+ /* { dg-error "raw string delimiter longer" "" { target *-*-* } 4 } */
+ /* { dg-error "stray" "" { target *-*-* } 4 } */
+const void *s1 = R" [] ";
+ /* { dg-error "invalid character" "" { target *-*-* } 7 } */
+ /* { dg-error "stray" "" { target *-*-* } 7 } */
+const void *s2 = R" [] ";
+ /* { dg-error "invalid character" "" { target *-*-* } 10 } */
+ /* { dg-error "stray" "" { target *-*-* } 10 } */
+const void *s3 = R"][]]";
+ /* { dg-error "invalid character" "" { target *-*-* } 13 } */
+ /* { dg-error "stray" "" { target *-*-* } 13 } */
+const void *s4 = R"@[]@";
+ /* { dg-error "invalid character" "" { target *-*-* } 16 } */
+ /* { dg-error "stray" "" { target *-*-* } 16 } */
+const void *s5 = R"$[]$";
+ /* { dg-error "invalid character" "" { target *-*-* } 19 } */
+ /* { dg-error "stray" "" { target *-*-* } 19 } */
+
+int main () {}
diff --git a/gcc/testsuite/gcc.dg/raw-string-6.c b/gcc/testsuite/gcc.dg/raw-string-6.c
new file mode 100644
index 00000000000..338087a25fd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-6.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+const void *s0 = R"ouch[]ouCh"; /* { dg-error "expected expression at end of input" } */
+ /* { dg-error "unterminated raw string" "" { target *-*-* } 4 } */
diff --git a/gcc/testsuite/gcc.dg/raw-string-7.c b/gcc/testsuite/gcc.dg/raw-string-7.c
new file mode 100644
index 00000000000..5bb4bec2085
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/raw-string-7.c
@@ -0,0 +1,23 @@
+/* The trailing whitespace after \ and before newline extension
+ breaks full compliance for raw strings. */
+/* { dg-do run { xfail *-*-* } } */
+/* { dg-options "-std=gnu99" } */
+
+/* Note, there is a single space after \ on the following line. */
+const void *s0 = R"[\
+]";
+/* { dg-bogus "backslash and newline separated by space" "" { xfail *-*-* } 7 } */
+
+/* Note, there is a single tab after \ on the following line. */
+const void *s1 = R"[\
+]";
+/* { dg-bogus "backslash and newline separated by space" "" { xfail *-*-* } 12 } */
+
+int
+main (void)
+{
+ if (__builtin_strcmp (s0, "\\ \n") != 0
+ || __builtin_strcmp (s1, "\\\t\n") != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tls/pie-1.c b/gcc/testsuite/gcc.dg/tls/pie-1.c
new file mode 100644
index 00000000000..07eb5f1ad25
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tls/pie-1.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-fpie" } */
+/* { dg-require-effective-target tls } */
+
+__thread int a; int b; int main() { return a = b; }
diff --git a/gcc/testsuite/gcc.dg/torture/builtin-math-6.c b/gcc/testsuite/gcc.dg/torture/builtin-math-6.c
index 1bf367a5deb..097a8c25d37 100644
--- a/gcc/testsuite/gcc.dg/torture/builtin-math-6.c
+++ b/gcc/testsuite/gcc.dg/torture/builtin-math-6.c
@@ -6,7 +6,7 @@
Origin: Kaveh R. Ghazi, January 28, 2009. */
/* { dg-do link } */
-/* { dg-require-effective-target mpc_pow } */
+/* { dg-require-effective-target mpc_arc } */
/* All references to link_error should go away at compile-time. The
first number is the line number and the second is the value number
@@ -180,9 +180,48 @@ extern void link_error(int, int);
int main (void)
{
+ TESTIT_COMPLEX (1, cacos, 1, CONJ(0));
+ TESTIT_COMPLEX_R (1, cacos, -1, CONJ(3.141593F));
+ TESTIT_COMPLEX (1, cacos, CONJ(1), 0);
+ TESTIT_COMPLEX_R (1, cacos, CONJ(-1), 3.141593F);
+ TESTIT_COMPLEX_R_ALLNEG (cacos, 3.45678F + 2.34567FI,
+ 0.60971F - 2.11780FI, 2.531875F - 2.117800FI,
+ 0.60971F + 2.11780FI, 2.531875F + 2.117800FI);
+
+ TESTIT_COMPLEX_ALLNEG (casin, 0,
+ 0, -CONJ(0), CONJ(0), CONJ(-0.F));
+ TESTIT_COMPLEX_R_ALLNEG (casin, 3.45678F + 2.34567FI,
+ 0.96107F + 2.11780FI, -0.96107F + 2.11780FI,
+ 0.96107F - 2.11780FI, -0.96107F - 2.11780FI);
+
+ TESTIT_COMPLEX_ALLNEG (catan, 0,
+ 0, -CONJ(0), CONJ(0), CONJ(-0.F));
+ TESTIT_COMPLEX_R_ALLNEG (catan, 3.45678F + 2.34567FI,
+ 1.37188F + 0.12997FI, -1.37188F + 0.12997FI,
+ 1.37188F - 0.12997FI, -1.37188F - 0.12997FI);
+
+ TESTIT_COMPLEX (1, cacosh, 1, 0);
+ TESTIT_COMPLEX_R (1, cacosh, -1, 3.141593FI);
+ TESTIT_COMPLEX (1, cacosh, CONJ(1), CONJ(0));
+ TESTIT_COMPLEX_R (1, cacosh, CONJ(-1), CONJ(3.141593FI));
+ TESTIT_COMPLEX_R_ALLNEG (cacosh, 3.45678F + 2.34567FI,
+ 2.11780F + 0.60971FI, 2.11780F + 2.531875FI,
+ 2.11780F - 0.60971FI, 2.11780F - 2.531875FI);
+
+ TESTIT_COMPLEX_ALLNEG (casinh, 0,
+ 0, -CONJ(0), CONJ(0), CONJ(-0.F));
+ TESTIT_COMPLEX_R_ALLNEG (casinh, 3.45678F + 2.34567FI,
+ 2.12836F + 0.58310FI, -2.12836F + 0.58310FI,
+ 2.12836F - 0.58310FI, -2.12836F - 0.58310FI);
+
+ TESTIT_COMPLEX_ALLNEG (catanh, 0,
+ 0, -CONJ(0), CONJ(0), CONJ(-0.F));
+ TESTIT_COMPLEX_R_ALLNEG (catanh, 3.45678F + 2.34567FI,
+ 0.19693F + 1.43190FI, -0.19693F + 1.43190FI,
+ 0.19693F - 1.43190FI, -0.19693F - 1.43190FI);
+
TESTIT_COMPLEX_ALLNEG (csin, 0,
- 0, -0.F,
- CONJ(0), CONJ(-0.F));
+ 0, -0.F, CONJ(0), CONJ(-0.F));
TESTIT_COMPLEX_R_ALLNEG (csin, 3.45678F + 2.34567FI,
-1.633059F - 4.917448FI, 1.633059F - 4.917448FI,
-1.633059F + 4.917448FI, 1.633059F + 4.917448FI);
@@ -219,8 +258,8 @@ int main (void)
TESTIT_COMPLEX (1, clog, 1, 0);
TESTIT_COMPLEX_R (1, clog, -1, 3.141593FI);
- TESTIT_COMPLEX (1, clog, CONJ(1), CONJ(0)); /* Fails with mpc-0.6. */
- TESTIT_COMPLEX_R (1, clog, CONJ(-1), CONJ(3.141593FI)); /* Fails with mpc-0.6. */
+ TESTIT_COMPLEX (1, clog, CONJ(1), CONJ(0));
+ TESTIT_COMPLEX_R (1, clog, CONJ(-1), CONJ(3.141593FI));
TESTIT_COMPLEX_R_ALLNEG (clog, 3.45678F + 2.34567FI,
1.429713F + 0.596199FI, 1.429713F + 2.545394FI,
1.429713F - 0.596199FI, 1.429713F - 2.545394FI);
diff --git a/gcc/testsuite/gcc.dg/torture/pr26515.c b/gcc/testsuite/gcc.dg/torture/pr26515.c
new file mode 100644
index 00000000000..a051e2e53c4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr26515.c
@@ -0,0 +1,27 @@
+/* { dg-options "-march=v10" { target cris*-*-* } } */
+struct i
+{
+ long long i_size;
+ struct a *i_mapping;
+};
+struct p
+{
+ struct a *mapping;
+ long index;
+};
+extern void b (struct p*, unsigned);
+extern void u (struct p*);
+void
+block_page_mkwrite (struct i *i, struct p *p)
+{
+ unsigned end = 0;
+ long long size = 0;
+ size = i->i_size;
+ if ((p->mapping != i->i_mapping))
+ goto out_unlock;
+ if (((p->index + 1) << 13) > size)
+ end = size & ~(~(((1UL) << 13) - 1));
+ b (p, end);
+out_unlock:
+ u (p);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr38948.c b/gcc/testsuite/gcc.dg/torture/pr38948.c
new file mode 100644
index 00000000000..98ed493cbd7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr38948.c
@@ -0,0 +1,101 @@
+/* { dg-options "-fno-tree-sra" } */
+/* { dg-options "-fno-tree-sra -march=v32" { target cris-*-* } } */
+typedef unsigned char byte;
+typedef unsigned int uint;
+typedef int bool;
+typedef struct gs_const_string_s
+{
+ const byte *data;
+}
+gs_const_string;
+struct gs_matrix_s
+{
+ float xx, xy, yx, yy, tx, ty;
+};
+typedef struct gs_matrix_s gs_matrix;
+typedef long fixed;
+typedef struct gs_fixed_point_s
+{
+ fixed x, y;
+}
+gs_fixed_point;
+typedef struct gs_matrix_fixed_s
+{
+ int x;
+}
+gs_matrix_fixed;
+static int
+append_simple (const byte * glyph, const gs_matrix_fixed * pmat, void * ppath)
+{
+ int numContours =
+ (int) (((((uint) ((glyph)[0]) << 8) + (glyph)[1]) ^ 0x8000) - 0x8000);
+ const byte *pends = glyph + 10;
+ int code = 0;
+ {
+ uint i = 0;
+ uint np = 0;
+ gs_fixed_point pt = {0};
+ uint reps = 0;
+ for (i = 0, np = 0; i < numContours; ++i)
+ {
+ bool move = ((bool) 1);
+ uint last_point =
+ (((uint) ((pends + i * 2)[0]) << 8) + (pends + i * 2)[1]);
+ int off_curve = 0;
+ gs_fixed_point cpoints[3];
+ for (; np <= last_point; --reps, ++np)
+ {
+ if (move)
+ {
+ cpoints[0] = pt;
+ move = ((bool) 0);
+ }
+ else
+ {
+ switch (off_curve++)
+ {
+ default:
+ cpoints[2].x = ((cpoints[1].x + pt.x) / 2);
+ cpoints[2].y = ((cpoints[1].y + pt.y) / 2);
+ code =
+ gx_path_add_curve_notes (ppath,
+ ((cpoints[0].x +
+ 2 * cpoints[1].x) / 3),
+ ((cpoints[0].y +
+ 2 * cpoints[1].y) / 3),
+ ((2 * cpoints[1].x +
+ cpoints[2].x) / 3),
+ ((2 * cpoints[1].y +
+ cpoints[2].y) / 3),
+ cpoints[2].x, cpoints[2].y,
+ 0);
+ cpoints[0] = cpoints[2];
+ case 0:
+ cpoints[1] = pt;
+ }
+ }
+ }
+ }
+ }
+}
+int
+append_outline (uint glyph_index, const gs_matrix_fixed *pmat, void *ppath)
+{
+ gs_const_string glyph_string = {0};
+ int numContours = 0;
+ numContours =
+ (int) (((((uint) ((glyph_string.data)[0]) << 8) +
+ (glyph_string.data)[1]) ^ 0x8000) - 0x8000);
+ if (numContours >= 0)
+ return append_simple (glyph_string.data, pmat, ppath);
+ {
+ uint flags = 0;
+ do
+ {
+ gs_matrix_fixed mat = {0};
+ gs_matrix scale_mat = {0};
+ gs_matrix_multiply (&scale_mat, (const gs_matrix *) &mat, (gs_matrix *) & mat);
+ }
+ while (flags & 32);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr41555.c b/gcc/testsuite/gcc.dg/torture/pr41555.c
index 219b34275b7..c201fda0cea 100644
--- a/gcc/testsuite/gcc.dg/torture/pr41555.c
+++ b/gcc/testsuite/gcc.dg/torture/pr41555.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-options "-std=c99" } */
#include <stdint.h>
#include <limits.h>
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
index 13e27c307a4..511cc9e2562 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-einline2" } */
-/* { dg-options "-O2 -fdump-tree-einline2 -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
+
extern void inlined ();
void inline_me_too (void);
void inline_through_me (void (*ptr)(void));
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
index 5f126363124..b9c67a62609 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fdump-tree-optimized -fno-inline" } */
+/* { dg-add-options bind_pic_locally } */
+
int
very_long_function(int a)
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c b/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
index 065d212cb5f..afb7ca4b0df 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-local-pure-const1" } */
-/* { dg-options "-O1 -fdump-tree-local-pure-const1 -fpie" { target { ! nonpic } } } */
+/* { dg-add-options bind_pic_locally } */
+
t(int a, int b, int c)
{
int *p;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr41497.c b/gcc/testsuite/gcc.dg/tree-ssa/pr41497.c
new file mode 100644
index 00000000000..e66ee846491
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr41497.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-Os" } */
+
+extern void abort (void);
+
+unsigned int a;
+int b, c;
+
+void
+foo (void)
+{
+ b = 0;
+ do {
+ for (a = -13; a == 0; a = (unsigned short)a)
+ c = 1;
+ b++;
+ } while (b == 0);
+}
+
+int
+main ()
+{
+ foo ();
+ if (a != -13)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
new file mode 100644
index 00000000000..978b7abab3a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fdump-tree-pre-details" } */
+
+typedef union
+{
+ int* data;
+} SA;
+
+typedef struct
+{
+ int reserved;
+ char* array;
+}SB;
+
+typedef struct
+{
+ int status;
+}SC;
+
+void foo(SA* pResult, SB* method, SC* self)
+{
+ if (method->array[0] == 'L' && !self->status && pResult->data != 0)
+ pResult->data = pResult->data;
+}
+
+/* { dg-final { scan-tree-dump "Deleted redundant store" "pre" } } */
+/* { dg-final { cleanup-tree-dump "pre" } } */
diff --git a/gcc/testsuite/gcc.dg/utf-badconcat2.c b/gcc/testsuite/gcc.dg/utf-badconcat2.c
new file mode 100644
index 00000000000..ea71a7f6857
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/utf-badconcat2.c
@@ -0,0 +1,15 @@
+/* Test unsupported concatenation of UTF-8 string literals. */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+void *s0 = u8"a" "b";
+void *s1 = "a" u8"b";
+void *s2 = u8"a" u8"b";
+void *s3 = u8"a" u"b"; /* { dg-error "non-standard concatenation" } */
+void *s4 = u"a" u8"b"; /* { dg-error "non-standard concatenation" } */
+void *s5 = u8"a" U"b"; /* { dg-error "non-standard concatenation" } */
+void *s6 = U"a" u8"b"; /* { dg-error "non-standard concatenation" } */
+void *s7 = u8"a" L"b"; /* { dg-error "non-standard concatenation" } */
+void *s8 = L"a" u8"b"; /* { dg-error "non-standard concatenation" } */
+
+int main () {}
diff --git a/gcc/testsuite/gcc.dg/utf-dflt2.c b/gcc/testsuite/gcc.dg/utf-dflt2.c
new file mode 100644
index 00000000000..ab101f45b78
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/utf-dflt2.c
@@ -0,0 +1,12 @@
+/* If not gnu99, the u8 prefix should be parsed as separate tokens. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+const void *s0 = u8"a"; /* { dg-error "undeclared" } */
+ /* { dg-error "expected ',' or ';'" "" { target *-*-* } 5 } */
+
+#define u8 "a"
+
+const void *s1 = u8"a";
+
+int main () {}
diff --git a/gcc/testsuite/gcc.dg/utf8-1.c b/gcc/testsuite/gcc.dg/utf8-1.c
new file mode 100644
index 00000000000..e287e065688
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/utf8-1.c
@@ -0,0 +1,45 @@
+/* { dg-do run } */
+/* { dg-require-iconv "ISO-8859-2" } */
+/* { dg-options "-std=gnu99 -fexec-charset=ISO-8859-2" } */
+
+const char *str1 = "h\u00e1\U0000010Dky ";
+const char *str2 = "\u010d\u00E1rky\n";
+const char *str3 = u8"h\u00e1\U0000010Dky ";
+const char *str4 = u8"\u010d\u00E1rky\n";
+const char *str5 = "h\u00e1\U0000010Dky " "\u010d\u00E1rky\n";
+const char *str6 = u8"h\u00e1\U0000010Dky " "\u010d\u00E1rky\n";
+const char *str7 = "h\u00e1\U0000010Dky " u8"\u010d\u00E1rky\n";
+#define u8
+const char *str8 = u8"h\u00e1\U0000010Dky " u8"\u010d\u00E1rky\n";
+
+const char latin2_1[] = "\x68\xe1\xe8\x6b\x79\x20";
+const char latin2_2[] = "\xe8\xe1\x72\x6b\x79\n";
+const char utf8_1[] = "\x68\xc3\xa1\xc4\x8d\x6b\x79\x20";
+const char utf8_2[] = "\xc4\x8d\xc3\xa1\x72\x6b\x79\n";
+
+int
+main (void)
+{
+ if (__builtin_strcmp (str1, latin2_1) != 0
+ || __builtin_strcmp (str2, latin2_2) != 0
+ || __builtin_strcmp (str3, utf8_1) != 0
+ || __builtin_strcmp (str4, utf8_2) != 0
+ || __builtin_strncmp (str5, latin2_1, sizeof (latin2_1) - 1) != 0
+ || __builtin_strcmp (str5 + sizeof (latin2_1) - 1, latin2_2) != 0
+ || __builtin_strncmp (str6, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str6 + sizeof (utf8_1) - 1, utf8_2) != 0
+ || __builtin_strncmp (str7, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str7 + sizeof (utf8_1) - 1, utf8_2) != 0
+ || __builtin_strncmp (str8, utf8_1, sizeof (utf8_1) - 1) != 0
+ || __builtin_strcmp (str8 + sizeof (utf8_1) - 1, utf8_2) != 0)
+ __builtin_abort ();
+ if (sizeof ("a" u8"b"[0]) != 1
+ || sizeof (u8"a" "b"[0]) != 1
+ || sizeof (u8"a" u8"b"[0]) != 1
+ || sizeof ("a" "\u010d") != 3
+ || sizeof ("a" u8"\u010d") != 4
+ || sizeof (u8"a" "\u010d") != 4
+ || sizeof (u8"a" "\u010d") != 4)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/utf8-2.c b/gcc/testsuite/gcc.dg/utf8-2.c
new file mode 100644
index 00000000000..9c0442fde3f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/utf8-2.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+#include <wchar.h>
+
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+
+const char s0[] = u8"ab";
+const char16_t s1[] = u8"ab"; /* { dg-error "from non-wide" } */
+const char32_t s2[] = u8"ab"; /* { dg-error "from non-wide" } */
+const wchar_t s3[] = u8"ab"; /* { dg-error "from non-wide" } */
+
+const char t0[0] = u8"ab"; /* { dg-warning "chars is too long" } */
+const char t1[1] = u8"ab"; /* { dg-warning "chars is too long" } */
+const char t2[2] = u8"ab";
+const char t3[3] = u8"ab";
+const char t4[4] = u8"ab";
+
+const char u0[0] = u8"\u2160."; /* { dg-warning "chars is too long" } */
+const char u1[1] = u8"\u2160."; /* { dg-warning "chars is too long" } */
+const char u2[2] = u8"\u2160."; /* { dg-warning "chars is too long" } */
+const char u3[3] = u8"\u2160."; /* { dg-warning "chars is too long" } */
+const char u4[4] = u8"\u2160.";
+const char u5[5] = u8"\u2160.";
+const char u6[6] = u8"\u2160.";
diff --git a/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c b/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
new file mode 100644
index 00000000000..88228513130
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2 -mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */
+
+#include <arm_neon.h>
+#include <stddef.h>
+
+void *
+memset (DST, C, LENGTH)
+ void *DST;
+ int C;
+ size_t LENGTH;
+{
+ void* DST0 = DST;
+ unsigned char C_BYTE = C;
+
+
+ if (__builtin_expect(LENGTH < 4, 1)) {
+ size_t i = 0;
+ while (i < LENGTH) {
+ ((char*)DST)[i] = C_BYTE;
+ i++;
+ }
+ return DST;
+ }
+
+ const char* DST_end = (char*)DST + LENGTH;
+
+
+ while ((uintptr_t)DST % 4 != 0) {
+ *(char*) (DST++) = C_BYTE;
+ }
+
+
+ uint32_t C_SHORTWORD = (uint32_t)(unsigned char)(C_BYTE) * 0x01010101;
+
+
+ if (__builtin_expect(DST_end - (char*)DST >= 16, 0)) {
+ while ((uintptr_t)DST % 16 != 0) {
+ *((uint32_t*)((char*)(DST) + (0))) = C_SHORTWORD;
+ DST += 4;
+ }
+
+
+ uint8x16_t C_WORD = vdupq_n_u8(C_BYTE);
+
+
+
+
+
+ size_t i = 0;
+ LENGTH = DST_end - (char*)DST;
+ while (i + 16 * 16 <= LENGTH) {
+ *((uint8x16_t*)((char*)(DST) + (i))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 1))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 2))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 3))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 4))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 5))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 6))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 7))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 8))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 9))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 10))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 11))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 12))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 13))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 14))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 15))) = C_WORD;
+ i += 16 * 16;
+ }
+ while (i + 16 * 4 <= LENGTH) {
+ *((uint8x16_t*)((char*)(DST) + (i))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 1))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 2))) = C_WORD;
+ *((uint8x16_t*)((char*)(DST) + (i + 16 * 3))) = C_WORD;
+ i += 16 * 4;
+ }
+ while (i + 16 <= LENGTH) {
+ *((uint8x16_t*)((char*)(DST) + (i))) = C_WORD;
+ i += 16;
+ }
+ DST += i;
+ }
+
+ while (4 <= DST_end - (char*)DST) {
+ *((uint32_t*)((char*)(DST) + (0))) = C_SHORTWORD;
+ DST += 4;
+ }
+
+
+ while ((char*)DST < DST_end) {
+ *((char*)DST) = C_BYTE;
+ DST++;
+ }
+
+ return DST0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
new file mode 100644
index 00000000000..2541df84169
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
@@ -0,0 +1,27 @@
+/* Check that NEON vector shifts support immediate values == size. /*
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-save-temps -mfpu=neon -mfloat-abi=softfp" } */
+
+#include <arm_neon.h>
+
+uint16x8_t test_vshll_n_u8 (uint8x8_t a)
+{
+ return vshll_n_u8(a, 8);
+}
+
+uint32x4_t test_vshll_n_u16 (uint16x4_t a)
+{
+ return vshll_n_u16(a, 16);
+}
+
+uint64x2_t test_vshll_n_u32 (uint32x2_t a)
+{
+ return vshll_n_u32(a, 32);
+}
+
+/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp
index c7c6e12d1f4..3bfac8d6f71 100644
--- a/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc/testsuite/gcc.target/i386/i386.exp
@@ -24,6 +24,18 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
# Load support procs.
load_lib gcc-dg.exp
+# Return 1 if attribute ms_hook_prologue is supported.
+proc check_effective_target_ms_hook_prologue { } {
+ if { [check_effective_target_ilp32]
+ && [check_no_compiler_messages ms_hook_prologue object {
+ void __attribute__ ((__ms_hook_prologue__)) foo ();
+ } ""] } {
+ return 1
+ } else {
+ return 0
+ }
+}
+
# Return 1 if ssse3 instructions can be compiled.
proc check_effective_target_ssse3 { } {
return [check_no_compiler_messages ssse3 object {
diff --git a/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c b/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
new file mode 100644
index 00000000000..f945492dfde
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
@@ -0,0 +1,29 @@
+/* Test that the ms_hook_prologue attribute generates the correct code. */
+
+/* { dg-do run } */
+/* { dg-require-effective-target ms_hook_prologue } */
+/* { dg-options "-O2 -fomit-frame-pointer" } */
+
+int __attribute__ ((__ms_hook_prologue__)) foo ()
+{
+ unsigned char *ptr = (unsigned char *) foo;
+
+ /* The NOP mov must not be optimized away by optimizations.
+ The push %ebp, mov %esp, %ebp must not be removed by
+ -fomit-frame-pointer */
+
+ /* movl.s %edi, %edi */
+ if(*ptr++ != 0x8b) return 1;
+ if(*ptr++ != 0xff) return 1;
+ /* push %ebp */
+ if(*ptr++ != 0x55) return 1;
+ /* movl.s %esp, %ebp */
+ if(*ptr++ != 0x8b) return 1;
+ if(*ptr++ != 0xec) return 1;
+ return 0;
+}
+
+int main ()
+{
+ return foo();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pic-1.c b/gcc/testsuite/gcc.target/i386/pic-1.c
index bc11de90b41..bdf6267c7d8 100644
--- a/gcc/testsuite/gcc.target/i386/pic-1.c
+++ b/gcc/testsuite/gcc.target/i386/pic-1.c
@@ -2,6 +2,7 @@
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
/* { dg-require-effective-target fpic } */
+/* { dg-skip-if "No Windows PIC" { *-*-mingw* *-*-cygwin } { "*" } { "" } } */
/* { dg-options "-fPIC" } */
int foo ()
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-4.c b/gcc/testsuite/gcc.target/powerpc/altivec-4.c
index a5617e25b8a..2c78f6586d6 100644
--- a/gcc/testsuite/gcc.target/powerpc/altivec-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/altivec-4.c
@@ -4,7 +4,7 @@
#define vector __attribute__((vector_size(16)))
-static int vector x, y;
+static int vector x, y, z;
static vector signed int i,j;
static vector signed short s,t;
@@ -20,7 +20,7 @@ static int int1, int2;
void
b()
{
- __builtin_altivec_vadduwm (x, y);
+ z = __builtin_altivec_vadduwm (x, y);
/* Make sure the predicates accept correct argument types. */
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-1.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
index 2538ad987d2..2538ad987d2 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-2.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
index e558f413c92..e558f413c92 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-3.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
index b99bcca49f4..b99bcca49f4 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-4.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
index a3bd7e69674..a3bd7e69674 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-5.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
index 32d05b29829..32d05b29829 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-5.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-6.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
index c46c8a74711..c46c8a74711 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-6.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-7.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
index 3c57f937fc0..3c57f937fc0 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
diff --git a/gcc/testsuite/gcc.target/vsx-vectorize-8.c b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
index af671ee79cb..af671ee79cb 100644
--- a/gcc/testsuite/gcc.target/vsx-vectorize-8.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vrsave.c b/gcc/testsuite/gcc.target/powerpc/vsx-vrsave.c
new file mode 100644
index 00000000000..83125f67fcc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-vrsave.c
@@ -0,0 +1,20 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O2 -mcpu=power7" } */
+/* { dg-final { scan-assembler-times "mtvrsave" 2 } } */
+
+/* Check whether VRSAVE is set to non-zero if VSX vector operations were
+ used, but it should not be set if there are no vector operations. */
+
+void
+generates_vrsave (vector double *a, vector double *b, vector double *c)
+{
+ *a = *b + *c;
+}
+
+void
+no_vrsave (double *a, double *b, double *c)
+{
+ *a = *b + *c;
+}
diff --git a/gcc/testsuite/gfortran.dg/auto_dealloc_1.f90 b/gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
new file mode 100644
index 00000000000..176f87a3d34
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
@@ -0,0 +1,59 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! PR 41586: Allocatable _scalars_ are never auto-deallocated
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+module automatic_deallocation
+
+ type t0
+ integer :: i
+ end type
+
+ type t1
+ real :: pi = 3.14
+ integer, allocatable :: j
+ end type
+
+ type t2
+ class(t0), allocatable :: k
+ end type t2
+
+contains
+
+ ! (1) simple allocatable scalars
+ subroutine a
+ integer, allocatable :: m
+ allocate (m)
+ m = 42
+ end subroutine
+
+ ! (2) allocatable scalar CLASS variables
+ subroutine b
+ class(t0), allocatable :: m
+ allocate (t0 :: m)
+ m%i = 43
+ end subroutine
+
+ ! (3) allocatable scalar components
+ subroutine c
+ type(t1) :: m
+ allocate (m%j)
+ m%j = 44
+ end subroutine
+
+ ! (4) allocatable scalar CLASS components
+ subroutine d
+ type(t2) :: m
+ allocate (t0 :: m%k)
+ m%k%i = 45
+ end subroutine
+
+end module
+
+
+! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } }
+
+! { dg-final { cleanup-modules "automatic_deallocation" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/class_10.f03 b/gcc/testsuite/gfortran.dg/class_10.f03
new file mode 100644
index 00000000000..f238a597a65
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_10.f03
@@ -0,0 +1,32 @@
+! { dg-do compile }
+!
+! PR 41800: [OOP] ICE in fold_convert_loc, at fold-const.c:2789
+!
+! Contributed by Harald Anlauf <anlauf@gmx.de>
+
+module abstract_gradient
+
+ implicit none
+ private
+
+ type, public, abstract :: gradient_class
+ contains
+ procedure, nopass :: inner_product
+ end type
+
+contains
+
+ function inner_product ()
+ class(gradient_class), pointer :: inner_product
+ inner_product => NULL()
+ end function
+
+end module
+
+
+ use abstract_gradient
+ class(gradient_class), pointer :: g_initial, ip_save
+ ip_save => g_initial%inner_product() ! ICE
+end
+
+! { dg-final { cleanup-modules "abstract_gradient" } }
diff --git a/gcc/testsuite/gfortran.dg/class_5.f03 b/gcc/testsuite/gfortran.dg/class_5.f03
new file mode 100644
index 00000000000..087d745aec7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_5.f03
@@ -0,0 +1,31 @@
+! { dg-do compile }
+!
+! PR 41719: [OOP] invalid: Intrinsic assignment involving polymorphic variables
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+ implicit none
+
+ type t1
+ integer :: a
+ end type
+
+ type, extends(t1) :: t2
+ integer :: b
+ end type
+
+ class(t1),pointer :: cp
+ type(t2) :: x
+
+ x = t2(45,478)
+ allocate(t2 :: cp)
+
+ cp = x ! { dg-error "Variable must not be polymorphic" }
+
+ select type (cp)
+ type is (t2)
+ print *, cp%a, cp%b
+ end select
+
+end
+ \ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/class_6.f03 b/gcc/testsuite/gfortran.dg/class_6.f03
new file mode 100644
index 00000000000..2f3ff62a6fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_6.f03
@@ -0,0 +1,21 @@
+! { dg-do run }
+!
+! PR 41629: [OOP] gimplification error on valid code
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+ type t1
+ integer :: comp
+ end type
+
+ type(t1), target :: a
+
+ class(t1) :: x
+ pointer :: x ! This is valid
+
+ a%comp = 3
+ x => a
+ print *,x%comp
+ if (x%comp/=3) call abort()
+
+end
diff --git a/gcc/testsuite/gfortran.dg/class_7.f03 b/gcc/testsuite/gfortran.dg/class_7.f03
new file mode 100644
index 00000000000..ed4eeba9340
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_7.f03
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! Test fixes for PR41587 and PR41608.
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+!
+! PR41587: used to accept the declaration of component 'foo'
+ type t0
+ integer :: j = 42
+ end type t0
+ type t
+ integer :: i
+ class(t0), allocatable :: foo(3) ! { dg-error "deferred shape" }
+ end type t
+
+! PR41608: Would ICE on missing type decl
+ class(t1), pointer :: c ! { dg-error "before it is defined" }
+
+ select type (c) ! { dg-error "shall be polymorphic" }
+ type is (t1) ! { dg-error "Unexpected" }
+ end select ! { dg-error "Expecting END PROGRAM" }
+end
diff --git a/gcc/testsuite/gfortran.dg/class_8.f03 b/gcc/testsuite/gfortran.dg/class_8.f03
new file mode 100644
index 00000000000..78f10ebe2bd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_8.f03
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! Test fixes for PR41618.
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+!
+ type t1
+ integer :: comp
+ class(t1),pointer :: cc
+ end type
+
+ class(t1) :: x ! { dg-error "must be dummy, allocatable or pointer" }
+
+ x%comp = 3
+ print *,x%comp
+
+end
diff --git a/gcc/testsuite/gfortran.dg/class_9.f03 b/gcc/testsuite/gfortran.dg/class_9.f03
new file mode 100644
index 00000000000..5dbd4597abd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_9.f03
@@ -0,0 +1,68 @@
+! { dg-do run }
+! Test the fix for PR41706, in which arguments of class methods that
+! were themselves class methods did not work.
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+!
+module m
+type :: t
+ real :: v = 1.5
+contains
+ procedure, nopass :: a
+ procedure, nopass :: b
+ procedure, pass :: c
+ procedure, nopass :: d
+end type
+
+contains
+
+ real function a (x)
+ real :: x
+ a = 2.*x
+ end function
+
+ real function b (x)
+ real :: x
+ b = 3.*x
+ end function
+
+ real function c (x)
+ class (t) :: x
+ c = 4.*x%v
+ end function
+
+ subroutine d (x)
+ real :: x
+ if (abs(x-3.0)>1E-3) call abort()
+ end subroutine
+
+ subroutine s (x)
+ class(t) :: x
+ real :: r
+ r = x%a (1.1) ! worked
+ if (r .ne. a (1.1)) call abort
+
+ r = x%a (b (1.2)) ! worked
+ if (r .ne. a(b (1.2))) call abort
+
+ r = b ( x%a (1.3)) ! worked
+ if (r .ne. b(a (1.3))) call abort
+
+ r = x%a(x%b (1.4)) ! failed
+ if (r .ne. a(b (1.4))) call abort
+
+ r = x%a(x%c ()) ! failed
+ if (r .ne. a(c (x))) call abort
+
+ call x%d (x%a(1.5)) ! failed
+
+ end subroutine
+
+end
+
+ use m
+ class(t),allocatable :: x
+ allocate(x)
+ call s (x)
+end
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_1.f03 b/gcc/testsuite/gfortran.dg/class_allocate_1.f03
index 719d90cf8f9..67c8065794b 100644
--- a/gcc/testsuite/gfortran.dg/class_allocate_1.f03
+++ b/gcc/testsuite/gfortran.dg/class_allocate_1.f03
@@ -68,8 +68,7 @@
i = 0
allocate(t2 :: cp2)
-! FIXME: Not yet supported: source=<class>
-! allocate(cp, source = cp2)
+ allocate(cp, source = cp2)
allocate(t2 :: cp3)
allocate(cp, source=cp3)
select type (cp)
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_2.f03 b/gcc/testsuite/gfortran.dg/class_allocate_2.f03
index d6a5d78bd75..754faa9a9f4 100644
--- a/gcc/testsuite/gfortran.dg/class_allocate_2.f03
+++ b/gcc/testsuite/gfortran.dg/class_allocate_2.f03
@@ -7,7 +7,7 @@ type :: t
end type t
class(t), allocatable :: c,d
allocate(t :: d)
-allocate(c,source=d) ! { dg-error "not supported yet" }
+allocate(c,source=d)
end
type, abstract :: t
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_3.f03 b/gcc/testsuite/gfortran.dg/class_allocate_3.f03
new file mode 100644
index 00000000000..c6128a8ab51
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_allocate_3.f03
@@ -0,0 +1,39 @@
+! { dg-do run }
+!
+! PR 41581: [OOP] Allocation of a CLASS with SOURCE=<class> does not work
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+ type t
+ end type t
+
+ type,extends(t) :: t2
+ integer :: i = 54
+ real :: r = 384.02
+ end type t2
+
+ class(t), allocatable :: m1, m2
+
+ allocate(t2 :: m2)
+ select type(m2)
+ type is (t2)
+ print *, m2%i, m2%r
+ if (m2%i/=54) call abort()
+ if (abs(m2%r-384.02)>1E-3) call abort()
+ m2%i = 42
+ m2%r = -4.0
+ class default
+ call abort()
+ end select
+
+ allocate(m1, source=m2)
+ select type(m1)
+ type is (t2)
+ print *, m1%i, m1%r
+ if (m1%i/=42) call abort()
+ if (abs(m1%r+4.0)>1E-3) call abort()
+ class default
+ call abort()
+ end select
+
+end
diff --git a/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90 b/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90
new file mode 100644
index 00000000000..f9529a52334
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90
@@ -0,0 +1,50 @@
+! { dg-do link }
+! { dg-require-effective-target mpc_arc }
+!
+! PR fortran/33197
+!
+! Fortran complex trigonometric functions: acos, asin, atan, acosh, asinh, atanh
+!
+! Compile-time simplifications
+!
+implicit none
+real(4), parameter :: pi = 2*acos(0.0_4)
+real(8), parameter :: pi8 = 2*acos(0.0_8)
+real(4), parameter :: eps = 10*epsilon(0.0_4)
+real(8), parameter :: eps8 = 10*epsilon(0.0_8)
+complex(4), parameter :: z0_0 = cmplx(0.0_4, 0.0_4, kind=4)
+complex(4), parameter :: z1_1 = cmplx(1.0_4, 1.0_4, kind=4)
+complex(8), parameter :: z80_0 = cmplx(0.0_8, 0.0_8, kind=8)
+complex(8), parameter :: z81_1 = cmplx(1.0_8, 1.0_8, kind=8)
+
+if (abs(acos(z0_0) - cmplx(pi/2,-0.0,4)) > eps) call link_error()
+if (abs(acos(z1_1) - cmplx(0.904556894, -1.06127506,4)) > eps) call link_error()
+if (abs(acos(z80_0) - cmplx(pi8/2,-0.0_8,8)) > eps8) call link_error()
+if (abs(acos(z81_1) - cmplx(0.90455689430238140_8, -1.0612750619050357_8,8)) > eps8) call link_error()
+
+if (abs(asin(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error()
+if (abs(asin(z1_1) - cmplx(0.66623943, 1.06127506,4)) > eps) call link_error()
+if (abs(asin(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error()
+if (abs(asin(z81_1) - cmplx(0.66623943249251527_8, 1.0612750619050357_8,8)) > eps8) call link_error()
+
+if (abs(atan(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error()
+if (abs(atan(z1_1) - cmplx(1.01722196, 0.40235947,4)) > eps) call link_error()
+if (abs(atan(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error()
+if (abs(atan(z81_1) - cmplx(1.0172219678978514_8, 0.40235947810852507_8,8)) > eps8) call link_error()
+
+if (abs(acosh(z0_0) - cmplx(0.0,pi/2,4)) > eps) call link_error()
+if (abs(acosh(z1_1) - cmplx(1.06127506, 0.90455689,4)) > eps) call link_error()
+if (abs(acosh(z80_0) - cmplx(0.0_8,pi8/2,8)) > eps8) call link_error()
+if (abs(acosh(z81_1) - cmplx(1.0612750619050357_8, 0.90455689430238140_8,8)) > eps8) call link_error()
+
+if (abs(asinh(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error()
+if (abs(asinh(z1_1) - cmplx(1.06127506, 0.66623943,4)) > eps) call link_error()
+if (abs(asinh(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error()
+if (abs(asinh(z81_1) - cmplx(1.0612750619050357_8, 0.66623943249251527_8,8)) > eps8) call link_error()
+
+if (abs(atanh(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error()
+if (abs(atanh(z1_1) - cmplx(0.40235947, 1.01722196,4)) > eps) call link_error()
+if (abs(atanh(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error()
+if (abs(atanh(z81_1) - cmplx(0.40235947810852507_8, 1.0172219678978514_8,8)) > eps8) call link_error()
+
+end
diff --git a/gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f03 b/gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f03
new file mode 100644
index 00000000000..b72819acc4c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f03
@@ -0,0 +1,96 @@
+! { dg-do run }
+! Tests the fix for PR41648 in which the reference a%a%getit () was wrongly
+! identified as a recursive call to getit.
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+!
+module foo_mod
+ type foo
+ integer :: i
+ contains
+ procedure, pass(a) :: doit
+ procedure, pass(a) :: getit
+ end type foo
+
+ private doit,getit
+contains
+ subroutine doit(a)
+ class(foo) :: a
+
+ a%i = 1
+ end subroutine doit
+ function getit(a) result(res)
+ class(foo) :: a
+ integer :: res
+
+ res = a%i
+ end function getit
+
+end module foo_mod
+
+module s_bar_mod
+ use foo_mod
+ type, extends(foo) :: s_bar
+ type(foo), allocatable :: a
+ contains
+ procedure, pass(a) :: doit
+ procedure, pass(a) :: getit
+ end type s_bar
+ private doit,getit
+
+contains
+ subroutine doit(a)
+ class(s_bar) :: a
+ allocate (a%a)
+ call a%a%doit()
+ end subroutine doit
+ function getit(a) result(res)
+ class(s_bar) :: a
+ integer :: res
+
+ res = a%a%getit () * 2
+ end function getit
+end module s_bar_mod
+
+module a_bar_mod
+ use foo_mod
+ type, extends(foo) :: a_bar
+ type(foo), allocatable :: a(:)
+ contains
+ procedure, pass(a) :: doit
+ procedure, pass(a) :: getit
+ end type a_bar
+ private doit,getit
+
+contains
+ subroutine doit(a)
+ class(a_bar) :: a
+ allocate (a%a(1))
+ call a%a(1)%doit ()
+ end subroutine doit
+ function getit(a) result(res)
+ class(a_bar) :: a
+ integer :: res
+
+ res = a%a(1)%getit () * 3
+ end function getit
+end module a_bar_mod
+
+ use s_bar_mod
+ use a_bar_mod
+ type(foo), target :: b
+ type(s_bar), target :: c
+ type(a_bar), target :: d
+ class(foo), pointer :: a
+ a => b
+ call a%doit
+ if (a%getit () .ne. 1) call abort
+ a => c
+ call a%doit
+ if (a%getit () .ne. 2) call abort
+ a => d
+ call a%doit
+ if (a%getit () .ne. 3) call abort
+end
+! { dg-final { cleanup-modules "foo_mod s_bar_mod a_bar_mod" } }
+
diff --git a/gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03 b/gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03
new file mode 100644
index 00000000000..8533508bcdc
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03
@@ -0,0 +1,185 @@
+! { dg-do compile }
+! Tests the fix for PR4164656 in which the call to a%a%scal failed to compile.
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+!
+module const_mod
+ integer, parameter :: longndig=12
+ integer, parameter :: long_int_k_ = selected_int_kind(longndig)
+ integer, parameter :: dpk_ = kind(1.d0)
+ integer, parameter :: spk_ = kind(1.e0)
+end module const_mod
+
+module base_mat_mod
+ use const_mod
+ type :: base_sparse_mat
+ integer, private :: m, n
+ integer, private :: state, duplicate
+ logical, private :: triangle, unitd, upper, sorted
+ contains
+ procedure, pass(a) :: get_nzeros
+ end type base_sparse_mat
+ private :: get_nzeros
+contains
+ function get_nzeros(a) result(res)
+ implicit none
+ class(base_sparse_mat), intent(in) :: a
+ integer :: res
+ integer :: err_act
+ character(len=20) :: name='base_get_nzeros'
+ logical, parameter :: debug=.false.
+ res = -1
+ end function get_nzeros
+end module base_mat_mod
+
+module s_base_mat_mod
+ use base_mat_mod
+ type, extends(base_sparse_mat) :: s_base_sparse_mat
+ contains
+ procedure, pass(a) :: s_scals
+ procedure, pass(a) :: s_scal
+ generic, public :: scal => s_scals, s_scal
+ end type s_base_sparse_mat
+ private :: s_scals, s_scal
+
+ type, extends(s_base_sparse_mat) :: s_coo_sparse_mat
+
+ integer :: nnz
+ integer, allocatable :: ia(:), ja(:)
+ real(spk_), allocatable :: val(:)
+ contains
+ procedure, pass(a) :: get_nzeros => s_coo_get_nzeros
+ procedure, pass(a) :: s_scals => s_coo_scals
+ procedure, pass(a) :: s_scal => s_coo_scal
+ end type s_coo_sparse_mat
+ private :: s_coo_scals, s_coo_scal, s_coo_get_nzeros
+contains
+ subroutine s_scals(d,a,info)
+ implicit none
+ class(s_base_sparse_mat), intent(in) :: a
+ real(spk_), intent(in) :: d
+ integer, intent(out) :: info
+
+ Integer :: err_act
+ character(len=20) :: name='s_scals'
+ logical, parameter :: debug=.false.
+
+ ! This is the base version. If we get here
+ ! it means the derived class is incomplete,
+ ! so we throw an error.
+ info = 700
+ end subroutine s_scals
+
+
+ subroutine s_scal(d,a,info)
+ implicit none
+ class(s_base_sparse_mat), intent(in) :: a
+ real(spk_), intent(in) :: d(:)
+ integer, intent(out) :: info
+
+ Integer :: err_act
+ character(len=20) :: name='s_scal'
+ logical, parameter :: debug=.false.
+
+ ! This is the base version. If we get here
+ ! it means the derived class is incomplete,
+ ! so we throw an error.
+ info = 700
+ end subroutine s_scal
+
+ function s_coo_get_nzeros(a) result(res)
+ implicit none
+ class(s_coo_sparse_mat), intent(in) :: a
+ integer :: res
+ res = a%nnz
+ end function s_coo_get_nzeros
+
+
+ subroutine s_coo_scal(d,a,info)
+ use const_mod
+ implicit none
+ class(s_coo_sparse_mat), intent(inout) :: a
+ real(spk_), intent(in) :: d(:)
+ integer, intent(out) :: info
+
+ Integer :: err_act,mnm, i, j, m
+ character(len=20) :: name='scal'
+ logical, parameter :: debug=.false.
+ info = 0
+ do i=1,a%get_nzeros()
+ j = a%ia(i)
+ a%val(i) = a%val(i) * d(j)
+ enddo
+ end subroutine s_coo_scal
+
+ subroutine s_coo_scals(d,a,info)
+ use const_mod
+ implicit none
+ class(s_coo_sparse_mat), intent(inout) :: a
+ real(spk_), intent(in) :: d
+ integer, intent(out) :: info
+
+ Integer :: err_act,mnm, i, j, m
+ character(len=20) :: name='scal'
+ logical, parameter :: debug=.false.
+
+ info = 0
+ do i=1,a%get_nzeros()
+ a%val(i) = a%val(i) * d
+ enddo
+ end subroutine s_coo_scals
+end module s_base_mat_mod
+
+module s_mat_mod
+ use s_base_mat_mod
+ type :: s_sparse_mat
+ class(s_base_sparse_mat), pointer :: a
+ contains
+ procedure, pass(a) :: s_scals
+ procedure, pass(a) :: s_scal
+ generic, public :: scal => s_scals, s_scal
+ end type s_sparse_mat
+ interface scal
+ module procedure s_scals, s_scal
+ end interface
+contains
+ subroutine s_scal(d,a,info)
+ use const_mod
+ implicit none
+ class(s_sparse_mat), intent(inout) :: a
+ real(spk_), intent(in) :: d(:)
+ integer, intent(out) :: info
+ integer :: err_act
+ character(len=20) :: name='csnmi'
+ logical, parameter :: debug=.false.
+ print *, "s_scal"
+ call a%a%scal(d,info)
+ return
+ end subroutine s_scal
+
+ subroutine s_scals(d,a,info)
+ use const_mod
+ implicit none
+ class(s_sparse_mat), intent(inout) :: a
+ real(spk_), intent(in) :: d
+ integer, intent(out) :: info
+ integer :: err_act
+ character(len=20) :: name='csnmi'
+ logical, parameter :: debug=.false.
+ print *, "s_scals"
+ call a%a%scal(d,info)
+ return
+ end subroutine s_scals
+end module s_mat_mod
+
+ use s_mat_mod
+ class (s_sparse_mat), pointer :: a
+ type (s_sparse_mat), target :: b
+ type (s_base_sparse_mat), target :: c
+ integer info
+ b%a => c
+ a => b
+ call a%scal (1.0_spk_, info)
+end
+! { dg-final { cleanup-modules "const_mod base_mat_mod s_base_mat_mod s_mat_mod" } }
+
diff --git a/gcc/testsuite/gfortran.dg/equiv_8.f90 b/gcc/testsuite/gfortran.dg/equiv_8.f90
new file mode 100644
index 00000000000..a2ed7f0349e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/equiv_8.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+!
+! PR fortran/41755
+!
+ common /uno/ aa
+ equivalence (aa,aaaaa) (bb,cc) ! { dg-error "Expecting a comma in EQUIVALENCE" }
+ end
diff --git a/gcc/testsuite/gfortran.dg/fmt_error_9.f b/gcc/testsuite/gfortran.dg/fmt_error_9.f
index 0f2b63b6d32..d8abb851210 100644
--- a/gcc/testsuite/gfortran.dg/fmt_error_9.f
+++ b/gcc/testsuite/gfortran.dg/fmt_error_9.f
@@ -22,4 +22,8 @@
write (line,'(1pd24.15e11.3)') 1.0d0, 1.234
if (line.ne." 1.000000000000000D+00 1.234E+00") call abort
+ str = '(1p2d24.15)'
+ msg = " 1.000000000000000D+00 1.233999967575073D+00That's it!"
+ write (line,'(1p2d24.15a)') 1.0d0, 1.234, "That's it!"
+ if (line.ne.msg) print *, msg
end
diff --git a/gcc/testsuite/gfortran.dg/goto_8.f90 b/gcc/testsuite/gfortran.dg/goto_8.f90
new file mode 100644
index 00000000000..a5f1f7f07b9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goto_8.f90
@@ -0,0 +1,31 @@
+! { dg-do compile }
+!
+! PR 41781: [OOP] bogus undefined label error with SELECT TYPE.
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+! and Tobias Burnus >burnus@gcc.gnu.org>
+
+! 1st example: jumping out of SELECT TYPE (valid)
+type bar
+ integer :: i
+end type bar
+class(bar), pointer :: var
+select type(var)
+class default
+ goto 9999
+end select
+9999 continue
+
+! 2nd example: jumping out of BLOCK (valid)
+block
+ goto 88
+end block
+88 continue
+
+! 3rd example: jumping into BLOCK (invalid)
+goto 99 ! { dg-error "is not in the same block" }
+block
+ 99 continue ! { dg-error "is not in the same block" }
+end block
+
+end
diff --git a/gcc/testsuite/gfortran.dg/lto/20091015-1_0.f b/gcc/testsuite/gfortran.dg/lto/20091015-1_0.f
new file mode 100644
index 00000000000..f47e1a4ac6c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/20091015-1_0.f
@@ -0,0 +1,8 @@
+! { dg-lto-do link }
+! We expect some warnings about mismatched symbol types
+! { dg-extra-ld-options "-w" }
+
+ subroutine dalie6s(iqmod6,nz,wx,cor6d)
+ common/dascr/iscrda(100),rscrri(100),iscrri(100),idao
+ call daall(iscrda,100,'$$IS ',no,nv)
+ end
diff --git a/gcc/testsuite/gfortran.dg/lto/20091015-1_1.f b/gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
new file mode 100644
index 00000000000..7a64ffa6786
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
@@ -0,0 +1,4 @@
+ SUBROUTINE DAALL(IC,L,CCC,NO,NV)
+ COMMON /main1/ eps
+ END
+
diff --git a/gcc/testsuite/gfortran.dg/lto/20091015-1_2.f b/gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
new file mode 100644
index 00000000000..5bfd02227fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
@@ -0,0 +1,5 @@
+ program test
+ common/main1/ eps(2)
+ dimension cor6d(2,2)
+ call dalie6s(iqmod6,1,wx,cor6d)
+ end
diff --git a/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 b/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
new file mode 100644
index 00000000000..c26ad90fbe2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
@@ -0,0 +1,12 @@
+! { dg-lto-do link }
+! { dg-lto-options {{-flto -g -fPIC -shared} {-O -flto -g -fPIC -shared}} }
+
+ FUNCTION makenumberstring(x)
+ IMPLICIT NONE
+ REAL, INTENT(IN) :: x
+ CHARACTER(len=20) :: makenumberstring
+ INTEGER :: xx
+ xx = x**2 ! << ICE
+ makenumberstring = ''
+ END FUNCTION
+
diff --git a/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90
new file mode 100644
index 00000000000..d882779263d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90
@@ -0,0 +1,9 @@
+! { dg-lto-do link }
+! { dg-lto-options {{-g -flto} {-g -O -flto}} }
+program species
+integer spk(2)
+real eval(2)
+spk = 2
+call atom(1.1,spk,eval)
+end program
+
diff --git a/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90 b/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90
new file mode 100644
index 00000000000..897e7aded0a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90
@@ -0,0 +1,9 @@
+subroutine atom(sol,k,eval)
+real, intent(in) :: sol
+integer, intent(in) :: k(2)
+real, intent(out) :: eval(2)
+real t1
+ t1=sqrt(dble(k(1)**2)-(sol)**2)
+ eval(1)=sol**2/sqrt(t1)-sol**2
+end subroutine
+
diff --git a/gcc/testsuite/gfortran.dg/select_type_7.f03 b/gcc/testsuite/gfortran.dg/select_type_7.f03
new file mode 100644
index 00000000000..554b6cd122d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/select_type_7.f03
@@ -0,0 +1,40 @@
+! { dg-do run }
+!
+! PR 41766: [OOP] SELECT TYPE selector as actual argument with INTENT(INOUT)
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+ implicit none
+
+ type t1
+ integer :: a
+ end type
+
+ type, extends(t1) :: t2
+ integer :: b
+ end type
+
+ class(t1),allocatable :: cp
+
+ allocate(t2 :: cp)
+
+ select type (cp)
+ type is (t2)
+ cp%a = 98
+ cp%b = 76
+ call s(cp)
+ print *,cp%a,cp%b
+ if (cp%a /= cp%b) call abort()
+ class default
+ call abort()
+ end select
+
+contains
+
+ subroutine s(f)
+ type(t2), intent(inout) :: f
+ f%a = 3
+ f%b = 3
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_2.f03 b/gcc/testsuite/gfortran.dg/typebound_operator_2.f03
index 57b34486313..b8dc5c9d104 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_2.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_2.f03
@@ -50,7 +50,6 @@ CONTAINS
LOGICAL FUNCTION func (me, b) ! { dg-error "must be a SUBROUTINE" }
CLASS(t), INTENT(OUT) :: me
CLASS(t), INTENT(IN) :: b
- me = t ()
func = .TRUE.
END FUNCTION func
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_4.f03 b/gcc/testsuite/gfortran.dg/typebound_operator_4.f03
index 1ce2b97a0d7..835ceb63ff0 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_4.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_4.f03
@@ -37,7 +37,7 @@ CONTAINS
PURE SUBROUTINE assign_int (dest, from)
CLASS(myint), INTENT(OUT) :: dest
INTEGER, INTENT(IN) :: from
- dest = myint (from)
+ dest%value = from
END SUBROUTINE assign_int
TYPE(myreal) FUNCTION add_real (a, b)
@@ -49,7 +49,7 @@ CONTAINS
SUBROUTINE assign_real (dest, from)
CLASS(myreal), INTENT(OUT) :: dest
REAL, INTENT(IN) :: from
- dest = myreal (from)
+ dest%value = from
END SUBROUTINE assign_real
SUBROUTINE in_module ()
diff --git a/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90 b/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
index abb3c5f10df..3b8ac9defc3 100644
--- a/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
+++ b/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
@@ -1,3 +1,4 @@
+! { dg-timeout-factor 4.0 }
program mymatmul
implicit none
integer, parameter :: kp = 4
diff --git a/gcc/testsuite/gfortran.dg/whole_file_5.f90 b/gcc/testsuite/gfortran.dg/whole_file_5.f90
index 07ba4411c4c..c6ad9e1b448 100644
--- a/gcc/testsuite/gfortran.dg/whole_file_5.f90
+++ b/gcc/testsuite/gfortran.dg/whole_file_5.f90
@@ -1,6 +1,6 @@
! { dg-do "compile" }
! { dg-options "-O3 -fwhole-file -fdump-tree-optimized" }
-! { dg-options "-O3 -fwhole-file -fdump-tree-optimized -fpie" { target { ! nonpic } } }
+! { dg-add-options bind_pic_locally }
!
! Check that inlining of functions declared BEFORE usage works.
! If yes, then the dump does not contain a call to F().
diff --git a/gcc/testsuite/gfortran.dg/whole_file_6.f90 b/gcc/testsuite/gfortran.dg/whole_file_6.f90
index f903c7aefc5..274b8a99c6c 100644
--- a/gcc/testsuite/gfortran.dg/whole_file_6.f90
+++ b/gcc/testsuite/gfortran.dg/whole_file_6.f90
@@ -1,6 +1,6 @@
! { dg-do "compile" }
! { dg-options "-O3 -fwhole-file -fdump-tree-optimized" }
-! { dg-options "-O3 -fwhole-file -fdump-tree-optimized -fpie" { target { ! nonpic } } }
+! { dg-add-options bind_pic_locally }
!
! Check that inlining of functions declared AFTER usage works.
! If yes, then the dump does not contain a call to F().
diff --git a/gcc/testsuite/gnat.dg/aggr11.adb b/gcc/testsuite/gnat.dg/aggr11.adb
new file mode 100644
index 00000000000..1771d62cacb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr11.adb
@@ -0,0 +1,17 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+with Aggr11_Pkg; use Aggr11_Pkg;
+
+procedure Aggr11 is
+
+ A : Arr := ((1 => (Kind => No_Error, B => True),
+ 2 => (Kind => Error),
+ 3 => (Kind => Error),
+ 4 => (Kind => No_Error, B => True),
+ 5 => (Kind => No_Error, B => True),
+ 6 => (Kind => No_Error, B => True)));
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/aggr11_pkg.ads b/gcc/testsuite/gnat.dg/aggr11_pkg.ads
new file mode 100644
index 00000000000..37008605a30
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/aggr11_pkg.ads
@@ -0,0 +1,14 @@
+package Aggr11_Pkg is
+
+ type Error_Type is (No_Error, Error);
+
+ type Rec (Kind : Error_Type := No_Error) is record
+ case Kind is
+ when Error => null;
+ when others => B : Boolean;
+ end case;
+ end record;
+
+ type Arr is array (1..6) of Rec;
+
+end Aggr11_Pkg;
diff --git a/gcc/testsuite/gnat.dg/discr21.adb b/gcc/testsuite/gnat.dg/discr21.adb
new file mode 100644
index 00000000000..5c105cdb25c
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr21.adb
@@ -0,0 +1,34 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws -O3" }
+
+with Discr21_Pkg; use Discr21_Pkg;
+
+package body Discr21 is
+
+ type Index is new Natural range 0 .. 100;
+
+ type Arr is array (Index range <> ) of Position;
+
+ type Rec(Size : Index := 1) is record
+ A : Arr(1 .. Size);
+ end record;
+
+ Data : Rec;
+
+ function To_V(pos : Position) return VPosition is
+ begin
+ return To_Position(pos.x, pos.y, pos.z);
+ end;
+
+ procedure Read(Data : Rec) is
+ pos : VPosition := To_V (Data.A(1));
+ begin
+ null;
+ end;
+
+ procedure Test is
+ begin
+ Read (Data);
+ end;
+
+end Discr21;
diff --git a/gcc/testsuite/gnat.dg/discr21.ads b/gcc/testsuite/gnat.dg/discr21.ads
new file mode 100644
index 00000000000..8de8ed08b76
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr21.ads
@@ -0,0 +1,5 @@
+package Discr21 is
+
+ procedure Test;
+
+end Discr21;
diff --git a/gcc/testsuite/gnat.dg/discr21_pkg.ads b/gcc/testsuite/gnat.dg/discr21_pkg.ads
new file mode 100644
index 00000000000..d156df62517
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr21_pkg.ads
@@ -0,0 +1,19 @@
+package Discr21_Pkg is
+
+ type Position is record
+ x,y,z : Float;
+ end record;
+
+ type Dim is (Two, Three);
+
+ type VPosition (D: Dim := Three) is record
+ x, y : Float;
+ case D is
+ when Two => null;
+ when Three => z : Float;
+ end case;
+ end record;
+
+ function To_Position (x, y, z : Float) return VPosition;
+
+end Discr21_Pkg;
diff --git a/gcc/testsuite/gnat.dg/discr22.adb b/gcc/testsuite/gnat.dg/discr22.adb
new file mode 100644
index 00000000000..af4f9ab7899
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr22.adb
@@ -0,0 +1,23 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Discr22 is
+
+ subtype Precision is Integer range 1 .. 5;
+
+ type Rec(D1 : Precision; D2 : Integer) is record
+ case D1 is
+ when 1 => I : Integer;
+ when others => null;
+ end case;
+ end record;
+ for Rec use record
+ D1 at 0 range 0 .. 7;
+ end record;
+
+ P : Precision;
+ X : Rec(P, 0);
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization7.adb b/gcc/testsuite/gnat.dg/loop_optimization7.adb
new file mode 100644
index 00000000000..16683949465
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization7.adb
@@ -0,0 +1,16 @@
+-- { dg-do compile }
+-- { dg-options "-O3" }
+-- { dg-options "-O3 -msse" { target i?86-*-* x86_64-*-* } }
+
+package body Loop_Optimization7 is
+
+ function Conv (A : Arr) return Arr is
+ Result : Arr;
+ begin
+ for I in A'Range loop
+ Result (I) := Conv (A (I));
+ end loop;
+ return Result;
+ end;
+
+end Loop_Optimization7;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization7.ads b/gcc/testsuite/gnat.dg/loop_optimization7.ads
new file mode 100644
index 00000000000..ab0a165ea90
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization7.ads
@@ -0,0 +1,9 @@
+with Loop_Optimization7_Pkg; use Loop_Optimization7_Pkg;
+
+package Loop_Optimization7 is
+
+ type Arr is array (1..8) of Rec;
+
+ function Conv (A : Arr) return Arr;
+
+end Loop_Optimization7;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization7_pkg.ads b/gcc/testsuite/gnat.dg/loop_optimization7_pkg.ads
new file mode 100644
index 00000000000..0eaefa1b0f3
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization7_pkg.ads
@@ -0,0 +1,10 @@
+package Loop_Optimization7_Pkg is
+ pragma Pure;
+
+ type Rec is record
+ F : Float;
+ end record;
+
+ function Conv (Trig : Rec) return Rec;
+
+end Loop_Optimization7_Pkg;
diff --git a/gcc/testsuite/gnat.dg/nested_proc.adb b/gcc/testsuite/gnat.dg/nested_proc1.adb
index 144533c2832..b3abf262578 100644
--- a/gcc/testsuite/gnat.dg/nested_proc.adb
+++ b/gcc/testsuite/gnat.dg/nested_proc1.adb
@@ -2,7 +2,7 @@
-- Test that a static link is correctly passed to a subprogram which is
-- indirectly called through an aggregate.
-procedure Nested_Proc is
+procedure Nested_Proc1 is
I : Integer := 0;
diff --git a/gcc/testsuite/gnat.dg/nested_proc2.adb b/gcc/testsuite/gnat.dg/nested_proc2.adb
new file mode 100644
index 00000000000..b5349563a99
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/nested_proc2.adb
@@ -0,0 +1,30 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Nested_Proc2 is
+
+ type Arr is array(1..2) of Integer;
+
+ type Rec is record
+ Data : Arr;
+ end record;
+
+ From : Rec;
+ Index : Integer;
+
+ function F (X : Arr) return Integer is
+ begin
+ return 0;
+ end;
+
+ procedure Test is
+ begin
+ Index := F (From.Data);
+ If Index /= 0 then
+ raise Program_Error;
+ end if;
+ end;
+
+begin
+ Test;
+end;
diff --git a/gcc/testsuite/gnat.dg/noreturn1.adb b/gcc/testsuite/gnat.dg/noreturn1.adb
new file mode 100644
index 00000000000..83eafe7f364
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn1.adb
@@ -0,0 +1,15 @@
+-- { dg-compile }
+
+package body Noreturn1 is
+
+ procedure Error (E : in Exception_Occurrence) is
+ Occurrence_Message : constant String := Exception_Message (E);
+ begin
+ if Occurrence_Message = "$" then
+ raise Program_Error;
+ else
+ raise Constraint_Error;
+ end if;
+ end;
+
+end Noreturn1;
diff --git a/gcc/testsuite/gnat.dg/noreturn1.ads b/gcc/testsuite/gnat.dg/noreturn1.ads
new file mode 100644
index 00000000000..c63e4399907
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn1.ads
@@ -0,0 +1,8 @@
+with Ada.Exceptions; use Ada.Exceptions;
+
+package Noreturn1 is
+
+ procedure Error (E : in Exception_Occurrence);
+ pragma No_Return (Error);
+
+end Noreturn1;
diff --git a/gcc/testsuite/gnat.dg/noreturn2.adb b/gcc/testsuite/gnat.dg/noreturn2.adb
new file mode 100644
index 00000000000..5caf222f29b
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn2.adb
@@ -0,0 +1,23 @@
+-- { dg-do compile }
+
+package body Noreturn2 is
+
+ procedure Raise_Exception_No_Defer (Message : String);
+ pragma No_Return (Raise_Exception_No_Defer);
+
+ procedure Raise_From (X : Exception_Occurrence) is
+ Occurrence_Message : constant String := Exception_Message (X);
+ begin
+ if Occurrence_Message = "$" then
+ Raise_Exception_No_Defer (Occurrence_Message);
+ else
+ Raise_Exception_No_Defer ("::" & Occurrence_Message);
+ end if;
+ end;
+
+ procedure Raise_Exception_No_Defer (Message : String) is
+ begin
+ raise Program_Error;
+ end;
+
+end Noreturn2;
diff --git a/gcc/testsuite/gnat.dg/noreturn2.ads b/gcc/testsuite/gnat.dg/noreturn2.ads
new file mode 100644
index 00000000000..1aaf4e97446
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/noreturn2.ads
@@ -0,0 +1,8 @@
+with Ada.Exceptions; use Ada.Exceptions;
+
+package Noreturn2 is
+
+ procedure Raise_From (X : Exception_Occurrence);
+ pragma No_Return (Raise_From);
+
+end Noreturn2;
diff --git a/gcc/testsuite/gnat.dg/slice8.adb b/gcc/testsuite/gnat.dg/slice8.adb
new file mode 100644
index 00000000000..b05829d0f7b
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/slice8.adb
@@ -0,0 +1,13 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+with Slice8_Pkg1;
+with Slice8_Pkg3;
+
+procedure Slice8 is
+
+ package Bp is new Slice8_Pkg3 (Slice8_Pkg1);
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/slice8_pkg1.ads b/gcc/testsuite/gnat.dg/slice8_pkg1.ads
new file mode 100644
index 00000000000..3f433fdfb26
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/slice8_pkg1.ads
@@ -0,0 +1,3 @@
+with Slice8_Pkg2;
+
+package Slice8_Pkg1 is new Slice8_Pkg2 (Line_Length => 132, Max_Lines => 1000);
diff --git a/gcc/testsuite/gnat.dg/slice8_pkg2.ads b/gcc/testsuite/gnat.dg/slice8_pkg2.ads
new file mode 100644
index 00000000000..a6eafc6aa18
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/slice8_pkg2.ads
@@ -0,0 +1,23 @@
+generic
+
+ Line_Length : Natural;
+ Max_Lines : Natural;
+
+package Slice8_Pkg2 is
+
+ Subtype Index is Natural Range 0..Line_length;
+ Subtype Line_Count is Natural Range 0..Max_Lines;
+
+ Type Line (Size : Index := 0) is
+ Record
+ Data : String (1..Size);
+ End Record;
+
+ Type Lines is Array (Line_Count Range <>) of Line;
+
+ Type Paragraph (Size : Line_Count) is
+ Record
+ Data : Lines (1..Size);
+ End Record;
+
+end Slice8_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/slice8_pkg3.adb b/gcc/testsuite/gnat.dg/slice8_pkg3.adb
new file mode 100644
index 00000000000..3524de1f0f5
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/slice8_pkg3.adb
@@ -0,0 +1,17 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+package body Slice8_Pkg3 is
+
+ Current : Str.Lines (Str.Line_Count);
+ Last : Natural := 0;
+
+ function Get return Str.Paragraph is
+ Result : constant Str.Paragraph := (Size => Last,
+ Data => Current (1..Last));
+ begin
+ Last := 0;
+ return Result;
+ end Get;
+
+end Slice8_Pkg3;
diff --git a/gcc/testsuite/gnat.dg/slice8_pkg3.ads b/gcc/testsuite/gnat.dg/slice8_pkg3.ads
new file mode 100644
index 00000000000..a802cb72d9b
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/slice8_pkg3.ads
@@ -0,0 +1,11 @@
+with Slice8_Pkg2;
+
+generic
+
+ with package Str is new Slice8_Pkg2 (<>);
+
+package Slice8_Pkg3 is
+
+ function Get return Str.Paragraph;
+
+end Slice8_Pkg3;
diff --git a/gcc/testsuite/gnat.dg/unchecked_convert4.adb b/gcc/testsuite/gnat.dg/unchecked_convert4.adb
new file mode 100644
index 00000000000..8f3a1aa4efe
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/unchecked_convert4.adb
@@ -0,0 +1,24 @@
+-- { dg-do compile }
+
+with Unchecked_Conversion;
+
+procedure Unchecked_Convert4 is
+
+ type Uint32 is mod 2**32;
+
+ type Rec is record
+ I : Uint32;
+ end record;
+ for Rec'Size use 32;
+ pragma Atomic (Rec);
+
+ function Conv is new Unchecked_Conversion (Uint32, Rec);
+
+ function F return Uint32;
+ pragma Import (Ada, F);
+
+ procedure Proc (R : Rec) is begin null; end;
+
+begin
+ Proc (Conv (F or 1));
+end;
diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp
index 7f2d7ecec83..cccd64220bc 100644
--- a/gcc/testsuite/lib/lto.exp
+++ b/gcc/testsuite/lib/lto.exp
@@ -191,6 +191,16 @@ proc lto-get-options-main { src } {
|| ![string compare "dg-options" $cmd] } {
warning "lto.exp does not support $cmd in primary source file"
} elseif { ![string compare "dg-lto-do" $cmd] } {
+ if { [llength $op] > 3 } {
+ set kw [lindex [lindex $op 3] 0]
+ if [string match "target" $kw] {
+ perror "$src: dg-lto-do does not support \"target\""
+ } elseif [string match "xfail" $kw] {
+ perror "$src: dg-lto-do does not support \"xfail\""
+ } else {
+ perror "$src: dg-lto-do takes a single argument"
+ }
+ }
set dgdo [lindex $op 2]
verbose "dg-lto-do command for \"$op\" is $dgdo"
if { ![string compare "assemble" $dgdo] } {
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 26ef7b7038e..f8e83ec0988 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2984,6 +2984,28 @@ proc add_options_for_ieee { flags } {
return $flags
}
+# Add to FLAGS the flags needed to enable functions to bind locally
+# when using pic/PIC passes in the testsuite.
+
+proc add_options_for_bind_pic_locally { flags } {
+ if {[check_no_compiler_messages using_pic2 assembly {
+ #if __PIC__ != 2
+ #error FOO
+ #endif
+ }]} {
+ return "$flags -fPIE"
+ }
+ if {[check_no_compiler_messages using_pic1 assembly {
+ #if __PIC__ != 1
+ #error FOO
+ #endif
+ }]} {
+ return "$flags -fpie"
+ }
+
+ return $flags
+}
+
# Return 1 if the target provides a full C99 runtime.
proc check_effective_target_c99_runtime { } {
@@ -3127,6 +3149,29 @@ proc check_effective_target_mpc_pow { } {
}]
}
+# Return 1 if the MPC library with "arc" functions is integrated with GCC, 0 otherwise.
+
+proc check_effective_target_mpc_arc { } {
+ return [check_no_compiler_messages mpc_arc executable {
+ extern void link_error(void);
+ int main ()
+ {
+ if (__builtin_cacos(1) != 0)
+ link_error();
+ if (__builtin_casin(0) != 0)
+ link_error();
+ if (__builtin_catan(0) != 0)
+ link_error();
+ if (__builtin_cacosh(1) != 0)
+ link_error();
+ if (__builtin_casinh(0) != 0)
+ link_error();
+ if (__builtin_catanh(0) != 0)
+ link_error();
+ }
+ }]
+}
+
# Return 1 if the language for the compiler under test is C.
proc check_effective_target_c { } {
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-1.mm b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
index d9b65a4f453..f17d9f0baca 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-1.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
@@ -115,7 +115,7 @@ int main(void)
}
/* { dg-prune-output "In file included from" } Ignore this message. */
-/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */
+/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */
/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 42 } */
/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 45 } */
/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 59 } */
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-4.mm b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
index 72c1396d706..a2c2173085a 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-4.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
@@ -50,7 +50,7 @@ int main(void)
}
/* { dg-prune-output "In file included from" } Ignore this message. */
-/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */
+/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */
/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 28 } */
/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 34 } */
diff --git a/gcc/testsuite/obj-c++.dg/layout-1.mm b/gcc/testsuite/obj-c++.dg/layout-1.mm
index 35ffa49da3b..bc99e758f8c 100644
--- a/gcc/testsuite/obj-c++.dg/layout-1.mm
+++ b/gcc/testsuite/obj-c++.dg/layout-1.mm
@@ -14,4 +14,4 @@
@end
/* { dg-prune-output "In output included from" } Ignore this message. */
-/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */
+/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */
diff --git a/gcc/toplev.h b/gcc/toplev.h
index cca68675f87..88ab7e8ecf0 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -142,6 +142,7 @@ extern int flag_unroll_all_loops;
extern int flag_unswitch_loops;
extern int flag_cprop_registers;
extern int time_report;
+extern int flag_ira_loop_pressure;
extern int flag_ira_coalesce;
extern int flag_ira_move_spills;
extern int flag_ira_share_save_slots;
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 1c820a3e3c5..4a34cefd2a4 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4850,6 +4850,31 @@ gimple_duplicate_bb (basic_block bb)
return new_bb;
}
+/* Add phi arguments to the phi nodes in E_COPY->dest according to
+ the phi arguments coming from the equivalent edge at
+ the phi nodes of DEST. */
+
+static void
+add_phi_args_after_redirect (edge e_copy, edge orig_e)
+{
+ gimple_stmt_iterator psi, psi_copy;
+ gimple phi, phi_copy;
+ tree def;
+
+ for (psi = gsi_start_phis (orig_e->dest),
+ psi_copy = gsi_start_phis (e_copy->dest);
+ !gsi_end_p (psi);
+ gsi_next (&psi), gsi_next (&psi_copy))
+ {
+
+ phi = gsi_stmt (psi);
+ phi_copy = gsi_stmt (psi_copy);
+ def = PHI_ARG_DEF_FROM_EDGE (phi, orig_e);
+ add_phi_arg (phi_copy, def, e_copy,
+ gimple_phi_arg_location_from_edge (phi, orig_e));
+ }
+}
+
/* Adds phi node arguments for edge E_COPY after basic block duplication. */
static void
@@ -5131,9 +5156,14 @@ gimple_duplicate_sese_tail (edge entry ATTRIBUTE_UNUSED, edge exit ATTRIBUTE_UNU
int total_freq = 0, exit_freq = 0;
gcov_type total_count = 0, exit_count = 0;
edge exits[2], nexits[2], e;
- gimple_stmt_iterator gsi;
+ gimple_stmt_iterator gsi,gsi1;
gimple cond_stmt;
- edge sorig, snew;
+ edge sorig, snew, orig_e;
+ basic_block exit_bb;
+ edge_iterator ei;
+ VEC (edge, heap) *redirect_edges;
+ basic_block iters_bb, orig_src;
+ tree new_rhs;
gcc_assert (EDGE_COUNT (exit->src->succs) == 2);
exits[0] = exit;
@@ -5149,17 +5179,13 @@ gimple_duplicate_sese_tail (edge entry ATTRIBUTE_UNUSED, edge exit ATTRIBUTE_UNU
it will work, but the resulting code will not be correct. */
for (i = 0; i < n_region; i++)
{
- /* We do not handle subloops, i.e. all the blocks must belong to the
- same loop. */
- if (region[i]->loop_father != orig_loop)
- return false;
-
if (region[i] == orig_loop->latch)
return false;
}
initialize_original_copy_tables ();
set_loop_copy (orig_loop, loop);
+ duplicate_subloops (orig_loop, loop);
if (!region_copy)
{
@@ -5225,8 +5251,36 @@ gimple_duplicate_sese_tail (edge entry ATTRIBUTE_UNUSED, edge exit ATTRIBUTE_UNU
cond_stmt = last_stmt (exit->src);
gcc_assert (gimple_code (cond_stmt) == GIMPLE_COND);
cond_stmt = gimple_copy (cond_stmt);
+
+ /* If the block consisting of the exit condition has the latch as
+ successor, then the body of the loop is executed before
+ the exit condition is tested. In such case, moving the
+ condition to the entry, causes that the loop will iterate
+ one less iteration (which is the wanted outcome, since we
+ peel out the last iteration). If the body is executed after
+ the condition, moving the condition to the entry requires
+ decrementing one iteration. */
+ if (exits[1]->dest == orig_loop->latch)
+ new_rhs = gimple_cond_rhs (cond_stmt);
+ else
+ {
+ new_rhs = fold_build2 (MINUS_EXPR, TREE_TYPE (gimple_cond_rhs (cond_stmt)),
+ gimple_cond_rhs (cond_stmt),
+ build_int_cst (TREE_TYPE (gimple_cond_rhs (cond_stmt)), 1));
+
+ if (TREE_CODE (gimple_cond_rhs (cond_stmt)) == SSA_NAME)
+ {
+ iters_bb = gimple_bb (SSA_NAME_DEF_STMT (gimple_cond_rhs (cond_stmt)));
+ for (gsi1 = gsi_start_bb (iters_bb); !gsi_end_p (gsi1); gsi_next (&gsi1))
+ if (gsi_stmt (gsi1) == SSA_NAME_DEF_STMT (gimple_cond_rhs (cond_stmt)))
+ break;
+
+ new_rhs = force_gimple_operand_gsi (&gsi1, new_rhs, true,
+ NULL_TREE,false,GSI_CONTINUE_LINKING);
+ }
+ }
+ gimple_cond_set_rhs (cond_stmt, unshare_expr (new_rhs));
gimple_cond_set_lhs (cond_stmt, unshare_expr (gimple_cond_lhs (cond_stmt)));
- gimple_cond_set_rhs (cond_stmt, unshare_expr (gimple_cond_rhs (cond_stmt)));
gsi_insert_after (&gsi, cond_stmt, GSI_NEW_STMT);
sorig = single_succ_edge (switch_bb);
@@ -5238,13 +5292,74 @@ gimple_duplicate_sese_tail (edge entry ATTRIBUTE_UNUSED, edge exit ATTRIBUTE_UNU
/* Add the PHI node arguments. */
add_phi_args_after_copy (region_copy, n_region, snew);
-
+
/* Get rid of now superfluous conditions and associated edges (and phi node
arguments). */
+ exit_bb = exit->dest;
+
e = redirect_edge_and_branch (exits[0], exits[1]->dest);
PENDING_STMT (e) = NULL;
- e = redirect_edge_and_branch (nexits[1], nexits[0]->dest);
- PENDING_STMT (e) = NULL;
+
+ /* If the block consisting of the exit condition has the latch as
+ successor, then the body of the loop is executed before
+ the exit condition is tested.
+
+ { body }
+ { cond } (exit[0]) -> { latch }
+ |
+ V (exit[1])
+
+ { exit_bb }
+
+
+ In such case, the equivalent copied edge nexits[1]
+ (for the peeled iteration) needs to be redirected to exit_bb.
+
+ Otherwise,
+
+ { cond } (exit[0]) -> { body }
+ |
+ V (exit[1])
+
+ { exit_bb }
+
+
+ exit[0] is pointing to the body of the loop,
+ and the equivalent nexits[0] needs to be redirected to
+ the copied body (of the peeled iteration). */
+
+ if (exits[1]->dest == orig_loop->latch)
+ e = redirect_edge_and_branch (nexits[1], nexits[0]->dest);
+ else
+ e = redirect_edge_and_branch (nexits[0], nexits[1]->dest);
+ PENDING_STMT (e) = NULL;
+
+ redirect_edges = VEC_alloc (edge, heap, 10);
+
+ for (i = 0; i < n_region; i++)
+ region_copy[i]->flags |= BB_DUPLICATED;
+
+ /* Iterate all incoming edges to latch. All those coming from
+ copied bbs will be redirected to exit_bb. */
+ FOR_EACH_EDGE (e, ei, orig_loop->latch->preds)
+ {
+ if (e->src->flags & BB_DUPLICATED)
+ VEC_safe_push (edge, heap, redirect_edges, e);
+ }
+
+ for (i = 0; i < n_region; i++)
+ region_copy[i]->flags &= ~BB_DUPLICATED;
+
+ for (i = 0; VEC_iterate (edge, redirect_edges, i, e); ++i)
+ {
+ e = redirect_edge_and_branch (e, exit_bb);
+ PENDING_STMT (e) = NULL;
+ orig_src = get_bb_original (e->src);
+ orig_e = find_edge (orig_src, orig_loop->latch);
+ add_phi_args_after_redirect (e, orig_e);
+ }
+
+ VEC_free (edge, heap, redirect_edges);
/* Anything that is outside of the region, but was dominated by something
inside needs to update dominance info. */
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index f21aa74d795..545db38a730 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -115,6 +115,7 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
|| chrec_contains_symbols_defined_in_loop (chrec, loop_num))
return false;
+ STRIP_NOPS (chrec);
scev = hide_evolution_in_other_loops_than_loop (chrec, loop_num);
*res = !tree_is_chrec (scev);
return true;
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c
index 61ccc6ce792..7b7a85f5082 100644
--- a/gcc/tree-dump.c
+++ b/gcc/tree-dump.c
@@ -511,6 +511,10 @@ dequeue_and_dump (dump_info_p di)
dump_child ("cnst", DECL_INITIAL (t));
break;
+ case DEBUG_EXPR_DECL:
+ dump_int (di, "-uid", DEBUG_TEMP_UID (t));
+ /* Fall through. */
+
case VAR_DECL:
case PARM_DECL:
case FIELD_DECL:
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index e782738b6d2..56b1b941683 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -1192,12 +1192,11 @@ lower_try_finally_copy (struct leh_state *state, struct leh_tf_state *tf)
if (tf->may_throw)
{
- emit_post_landing_pad (&eh_seq, tf->region);
-
seq = lower_try_finally_dup_block (finally, state);
lower_eh_constructs_1 (state, seq);
- gimple_seq_add_seq (&eh_seq, seq);
+ emit_post_landing_pad (&eh_seq, tf->region);
+ gimple_seq_add_seq (&eh_seq, seq);
emit_resx (&eh_seq, tf->region);
}
@@ -3381,12 +3380,31 @@ unsplit_eh (eh_landing_pad lp)
if (find_edge (e_in->src, e_out->dest))
return false;
- /* ??? I can't imagine there would be PHI nodes, since by nature
- of critical edge splitting this block should never have been
- a dominance frontier. If cfg cleanups somehow confuse this,
- due to single edges in and out we ought to have degenerate PHIs
- and can easily propagate the PHI arguments. */
- gcc_assert (gimple_seq_empty_p (phi_nodes (bb)));
+ /* ??? We can get degenerate phis due to cfg cleanups. I would have
+ thought this should have been cleaned up by a phicprop pass, but
+ that doesn't appear to handle virtuals. Propagate by hand. */
+ if (!gimple_seq_empty_p (phi_nodes (bb)))
+ {
+ for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); )
+ {
+ gimple use_stmt, phi = gsi_stmt (gsi);
+ tree lhs = gimple_phi_result (phi);
+ tree rhs = gimple_phi_arg_def (phi, 0);
+ use_operand_p use_p;
+ imm_use_iterator iter;
+
+ FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
+ {
+ FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
+ SET_USE (use_p, rhs);
+ }
+
+ if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs) = 1;
+
+ remove_phi_node (&gsi, true);
+ }
+ }
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Unsplit EH landing pad %d to block %i.\n",
@@ -3431,7 +3449,7 @@ unsplit_all_eh (void)
static bool
cleanup_empty_eh_merge_phis (basic_block new_bb, basic_block old_bb,
- edge old_bb_out)
+ edge old_bb_out, bool change_region)
{
gimple_stmt_iterator ngsi, ogsi;
edge_iterator ei;
@@ -3531,7 +3549,7 @@ cleanup_empty_eh_merge_phis (basic_block new_bb, basic_block old_bb,
for (ei = ei_start (old_bb->preds); (e = ei_safe_edge (ei)); )
if (e->flags & EDGE_EH)
{
- redirect_eh_edge_1 (e, new_bb, true);
+ redirect_eh_edge_1 (e, new_bb, change_region);
redirect_edge_succ (e, new_bb);
flush_pending_stmts (e);
}
@@ -3583,10 +3601,9 @@ cleanup_empty_eh_move_lp (basic_block bb, edge e_out,
multiple incoming edges and phis are involved. */
static bool
-cleanup_empty_eh_unsplit (basic_block bb, edge e_out, eh_landing_pad olp)
+cleanup_empty_eh_unsplit (basic_block bb, edge e_out, eh_landing_pad lp)
{
gimple_stmt_iterator gsi;
- eh_landing_pad nlp;
tree lab;
/* We really ought not have totally lost everything following
@@ -3594,35 +3611,30 @@ cleanup_empty_eh_unsplit (basic_block bb, edge e_out, eh_landing_pad olp)
be a successor. */
gcc_assert (e_out != NULL);
- /* Look for an EH label in the successor block. */
+ /* The destination block must not already have a landing pad
+ for a different region. */
lab = NULL;
for (gsi = gsi_start_bb (e_out->dest); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
+ int lp_nr;
+
if (gimple_code (stmt) != GIMPLE_LABEL)
break;
lab = gimple_label_label (stmt);
- if (EH_LANDING_PAD_NR (lab))
- goto found;
+ lp_nr = EH_LANDING_PAD_NR (lab);
+ if (lp_nr && get_eh_region_from_lp_number (lp_nr) != lp->region)
+ return false;
}
- return false;
- found:
-
- /* The other label had better be part of the same EH region. Given that
- we've not lowered RESX, there should be no way to have a totally empty
- landing pad that crosses to another EH region. */
- nlp = get_eh_landing_pad_from_number (EH_LANDING_PAD_NR (lab));
- gcc_assert (nlp->region == olp->region);
/* Attempt to move the PHIs into the successor block. */
- if (cleanup_empty_eh_merge_phis (e_out->dest, bb, e_out))
+ if (cleanup_empty_eh_merge_phis (e_out->dest, bb, e_out, false))
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file,
- "Unsplit EH landing pad %d to block %d via lp %d.\n",
- olp->index, e_out->dest->index, nlp->index);
-
- remove_eh_landing_pad (olp);
+ "Unsplit EH landing pad %d to block %i "
+ "(via cleanup_empty_eh).\n",
+ lp->index, e_out->dest->index);
return true;
}
@@ -3725,7 +3737,7 @@ cleanup_empty_eh (eh_landing_pad lp)
landing pad block. If the merge succeeds, we'll already have redirected
all the EH edges. The handler itself will go unreachable if there were
no normal edges. */
- if (cleanup_empty_eh_merge_phis (e_out->dest, bb, e_out))
+ if (cleanup_empty_eh_merge_phis (e_out->dest, bb, e_out, true))
goto succeed;
/* Finally, if all input edges are EH edges, then we can (potentially)
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index 8e790aec784..85f1f5ef60a 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -637,10 +637,8 @@ typedef bool (*walk_use_def_chains_fn) (tree, gimple, void *);
extern void walk_use_def_chains (tree, walk_use_def_chains_fn, void *, bool);
-void propagate_defs_into_debug_stmts (gimple, basic_block,
- const gimple_stmt_iterator *);
-void propagate_var_def_into_debug_stmts (tree, basic_block,
- const gimple_stmt_iterator *);
+void insert_debug_temps_for_defs (gimple_stmt_iterator *);
+void insert_debug_temp_for_var_def (gimple_stmt_iterator *, tree);
void release_defs_bitset (bitmap toremove);
/* In tree-into-ssa.c */
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index 706571c59ec..0b5e7321b16 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -1307,6 +1307,12 @@ convert_nonlocal_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
*handled_ops_p = false;
return NULL_TREE;
+ case GIMPLE_COND:
+ wi->val_only = true;
+ wi->is_lhs = false;
+ *handled_ops_p = false;
+ return NULL_TREE;
+
default:
/* For every other statement that we are not interested in
handling here, let the walker traverse the operands. */
@@ -1707,6 +1713,12 @@ convert_local_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
info, gimple_omp_body (stmt));
break;
+ case GIMPLE_COND:
+ wi->val_only = true;
+ wi->is_lhs = false;
+ *handled_ops_p = false;
+ return NULL_TREE;
+
default:
/* For every other statement that we are not interested in
handling here, let the walker traverse the operands. */
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 12b4ac0171a..61e372a54c3 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -255,7 +255,13 @@ loop_parallel_p (struct loop *loop)
bool ret = false;
if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "\nConsidering loop %d\n", loop->num);
+ {
+ fprintf (dump_file, "Considering loop %d\n", loop->num);
+ if (!loop->inner)
+ fprintf (dump_file, "loop is innermost\n");
+ else
+ fprintf (dump_file, "loop NOT innermost\n");
+ }
/* Check for problems with dependences. If the loop can be reversed,
the iterations are independent. */
@@ -715,6 +721,8 @@ separate_decls_in_region_debug_bind (gimple stmt,
void **slot, **dslot;
var = gimple_debug_bind_get_var (stmt);
+ if (TREE_CODE (var) == DEBUG_EXPR_DECL)
+ return true;
gcc_assert (DECL_P (var) && SSA_VAR_P (var));
ielt.uid = DECL_UID (var);
dslot = htab_find_slot_with_hash (decl_copies, &ielt, ielt.uid, NO_INSERT);
@@ -1287,8 +1295,9 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
bool ok;
edge exit = single_dom_exit (loop), hpred;
tree control, control_name, res, t;
- gimple phi, nphi, cond_stmt, stmt;
+ gimple phi, nphi, cond_stmt, stmt, cond_nit;
gimple_stmt_iterator gsi;
+ tree nit_1;
split_block_after_labels (loop->header);
orig_header = single_succ (loop->header);
@@ -1306,7 +1315,6 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
res = PHI_RESULT (phi);
t = make_ssa_name (SSA_NAME_VAR (res), phi);
SET_PHI_RESULT (phi, t);
-
nphi = create_phi_node (res, orig_header);
SSA_NAME_DEF_STMT (res) = nphi;
add_phi_arg (nphi, t, hpred, UNKNOWN_LOCATION);
@@ -1318,10 +1326,11 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
control = t;
}
}
-
bbs = get_loop_body_in_dom_order (loop);
- for (n = 0; bbs[n] != exit->src; n++)
+
+ for (n = 0; bbs[n] != loop->latch; n++)
continue;
+ n--;
nbbs = XNEWVEC (basic_block, n);
ok = gimple_duplicate_sese_tail (single_succ_edge (loop->header), exit,
bbs + 1, n, nbbs);
@@ -1356,7 +1365,6 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
struct reduction_info *red;
tree val = PHI_ARG_DEF_FROM_EDGE (phi, exit);
-
red = reduction_phi (reduction_list, SSA_NAME_DEF_STMT (val));
if (red)
{
@@ -1372,12 +1380,15 @@ transform_to_exit_first_loop (struct loop *loop, htab_t reduction_list, tree nit
}
gcc_assert (control_name != NULL_TREE);
- /* Initialize the control variable to NIT. */
+ /* Initialize the control variable to number of iterations
+ according to the rhs of the exit condition. */
gsi = gsi_after_labels (ex_bb);
- nit = force_gimple_operand_gsi (&gsi,
- fold_convert (TREE_TYPE (control_name), nit),
+ cond_nit = last_stmt (exit->src);
+ nit_1 = gimple_cond_rhs (cond_nit);
+ nit_1 = force_gimple_operand_gsi (&gsi,
+ fold_convert (TREE_TYPE (control_name), nit_1),
false, NULL_TREE, false, GSI_SAME_STMT);
- stmt = gimple_build_assign (control_name, nit);
+ stmt = gimple_build_assign (control_name, nit_1);
gsi_insert_before (&gsi, stmt, GSI_NEW_STMT);
SSA_NAME_DEF_STMT (control_name) = stmt;
}
@@ -1738,7 +1749,7 @@ gather_scalar_reductions (loop_p loop, htab_t reduction_list)
&& simple_loop_info)
{
gimple reduc_stmt = vect_is_simple_reduction (simple_loop_info, phi, true, &double_reduc);
- if (reduc_stmt)
+ if (reduc_stmt && !double_reduc)
build_new_reduction (reduction_list, reduc_stmt, phi);
}
}
@@ -1888,15 +1899,32 @@ parallelize_loops (void)
FOR_EACH_LOOP (li, loop, 0)
{
htab_empty (reduction_list);
-
- /* If we use autopar in graphite pass, we use it's marked dependency
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, "Trying loop %d as candidate\n",loop->num);
+ if (loop->inner)
+ fprintf (dump_file, "loop %d is not innermost\n",loop->num);
+ else
+ fprintf (dump_file, "loop %d is innermost\n",loop->num);
+ }
+
+ /* If we use autopar in graphite pass, we use its marked dependency
checking results. */
if (flag_loop_parallelize_all && !loop->can_be_parallel)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "loop is not parallel according to graphite\n");
continue;
+ }
- /* FIXME: Only consider innermost loops with just one exit. */
- if (loop->inner || !single_dom_exit (loop))
+ if (!single_dom_exit (loop))
+ {
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "loop is !single_dom_exit\n");
+
continue;
+ }
if (/* And of course, the loop must be parallelizable. */
!can_duplicate_loop_p (loop)
@@ -1913,7 +1941,7 @@ parallelize_loops (void)
/* Do not bother with loops in cold areas. */
|| optimize_loop_nest_for_size_p (loop)))
continue;
-
+
if (!try_get_loop_niter (loop, &niter_desc))
continue;
@@ -1924,6 +1952,14 @@ parallelize_loops (void)
continue;
changed = true;
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, "parallelizing ");
+ if (loop->inner)
+ fprintf (dump_file, "outer loop\n");
+ else
+ fprintf (dump_file, "inner loop\n");
+ }
gen_parallel_loop (loop, reduction_list,
n_threads, &niter_desc);
verify_flow_info ();
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index b829cee08b3..8b8b3c4816f 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -497,8 +497,6 @@ extern struct rtl_opt_pass pass_cse2;
extern struct rtl_opt_pass pass_df_initialize_opt;
extern struct rtl_opt_pass pass_df_initialize_no_opt;
extern struct rtl_opt_pass pass_reginfo_init;
-extern struct rtl_opt_pass pass_subregs_of_mode_init;
-extern struct rtl_opt_pass pass_subregs_of_mode_finish;
extern struct rtl_opt_pass pass_inc_dec;
extern struct rtl_opt_pass pass_stack_ptr_mod;
extern struct rtl_opt_pass pass_initialize_regs;
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index a325d75d914..cfc20a178ea 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -183,6 +183,8 @@ dump_decl_name (pretty_printer *buffer, tree node, int flags)
{
if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
pp_printf (buffer, "L.%d", (int) LABEL_DECL_UID (node));
+ else if (TREE_CODE (node) == DEBUG_EXPR_DECL)
+ pp_printf (buffer, "D#%i", DEBUG_TEMP_UID (node));
else
{
char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
@@ -1051,6 +1053,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
case VAR_DECL:
case PARM_DECL:
case FIELD_DECL:
+ case DEBUG_EXPR_DECL:
case NAMESPACE_DECL:
dump_decl_name (buffer, node, flags);
break;
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 02a4eed646e..70af0fda610 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -1492,18 +1492,29 @@ analyze_evolution_in_loop (gimple loop_phi_node,
bb = gimple_phi_arg_edge (loop_phi_node, i)->src;
if (!flow_bb_inside_loop_p (loop, bb))
continue;
-
+
if (TREE_CODE (arg) == SSA_NAME)
{
+ bool val = false;
+
ssa_chain = SSA_NAME_DEF_STMT (arg);
/* Pass in the initial condition to the follow edge function. */
ev_fn = init_cond;
res = follow_ssa_edge (loop, ssa_chain, loop_phi_node, &ev_fn, 0);
+
+ /* If ev_fn has no evolution in the inner loop, and the
+ init_cond is not equal to ev_fn, then we have an
+ ambiguity between two possible values, as we cannot know
+ the number of iterations at this point. */
+ if (TREE_CODE (ev_fn) != POLYNOMIAL_CHREC
+ && no_evolution_in_loop_p (ev_fn, loop->num, &val) && val
+ && !operand_equal_p (init_cond, ev_fn, 0))
+ ev_fn = chrec_dont_know;
}
else
res = t_false;
-
+
/* When it is impossible to go back on the same
loop_phi_node by following the ssa edges, the
evolution is represented by a peeled chrec, i.e. the
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 3922c22d824..86246688680 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1231,7 +1231,8 @@ build_ref_for_offset_1 (tree *res, tree type, HOST_WIDE_INT offset,
case UNION_TYPE:
case QUAL_UNION_TYPE:
case RECORD_TYPE:
- /* Some ADA records are half-unions, treat all of them the same. */
+ /* ??? Some records used to be half-unions in Ada so the code treats
+ the 3 container types the same. This has been fixed in Ada. */
for (fld = TYPE_FIELDS (type); fld; fld = TREE_CHAIN (fld))
{
HOST_WIDE_INT pos, size;
@@ -1242,7 +1243,10 @@ build_ref_for_offset_1 (tree *res, tree type, HOST_WIDE_INT offset,
pos = int_bit_position (fld);
gcc_assert (TREE_CODE (type) == RECORD_TYPE || pos == 0);
- size = tree_low_cst (DECL_SIZE (fld), 1);
+ tr_size = DECL_SIZE (fld);
+ if (!tr_size || !host_integerp (tr_size, 1))
+ continue;
+ size = tree_low_cst (tr_size, 1);
if (pos > offset || (pos + size) <= offset)
continue;
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 67d0472cc59..f0135a9c42d 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -325,7 +325,13 @@ mark_stmt_if_obviously_necessary (gimple stmt, bool aggressive)
break;
case GIMPLE_DEBUG:
- mark_stmt_necessary (stmt, false);
+ /* Debug temps without a value are not useful. ??? If we could
+ easily locate the debug temp bind stmt for a use thereof,
+ would could refrain from marking all debug temps here, and
+ mark them only if they're used. */
+ if (gimple_debug_bind_has_value_p (stmt)
+ || TREE_CODE (gimple_debug_bind_get_var (stmt)) != DEBUG_EXPR_DECL)
+ mark_stmt_necessary (stmt, false);
return;
case GIMPLE_GOTO:
@@ -1071,7 +1077,7 @@ eliminate_unnecessary_stmts (void)
{
bool something_changed = false;
basic_block bb;
- gimple_stmt_iterator gsi;
+ gimple_stmt_iterator gsi, psi;
gimple stmt;
tree call;
VEC (basic_block, heap) *h;
@@ -1111,25 +1117,21 @@ eliminate_unnecessary_stmts (void)
bb = VEC_pop (basic_block, h);
/* Remove dead statements. */
- for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi);)
+ for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi = psi)
{
stmt = gsi_stmt (gsi);
+ psi = gsi;
+ gsi_prev (&psi);
+
stats.total++;
/* If GSI is not necessary then remove it. */
if (!gimple_plf (stmt, STMT_NECESSARY))
{
+ if (!is_gimple_debug (stmt))
+ something_changed = true;
remove_dead_stmt (&gsi, bb);
- something_changed = true;
-
- /* If stmt was the last stmt in the block, we want to
- move gsi to the stmt that became the last stmt, but
- gsi_prev would crash. */
- if (gsi_end_p (gsi))
- gsi = gsi_last_bb (bb);
- else
- gsi_prev (&gsi);
}
else if (is_gimple_call (stmt))
{
@@ -1159,10 +1161,7 @@ eliminate_unnecessary_stmts (void)
}
notice_special_calls (stmt);
}
- gsi_prev (&gsi);
}
- else
- gsi_prev (&gsi);
}
}
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index 1e2c8f23ce8..6e861b15e4c 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -2099,6 +2099,7 @@ optimize_stmt (basic_block bb, gimple_stmt_iterator si)
if (fold_stmt (&si))
{
stmt = gsi_stmt (si);
+ gimple_set_modified (stmt, true);
if (dump_file && (dump_flags & TDF_DETAILS))
{
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 87795a28223..6ba800d8288 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -939,7 +939,6 @@ forward_propagate_addr_expr (tree name, tree rhs)
gimple use_stmt;
bool all = true;
bool single_use_p = has_single_use (name);
- bool debug = false;
FOR_EACH_IMM_USE_STMT (use_stmt, iter, name)
{
@@ -950,9 +949,7 @@ forward_propagate_addr_expr (tree name, tree rhs)
there is nothing we can do. */
if (gimple_code (use_stmt) != GIMPLE_ASSIGN)
{
- if (is_gimple_debug (use_stmt))
- debug = true;
- else
+ if (!is_gimple_debug (use_stmt))
all = false;
continue;
}
@@ -995,9 +992,6 @@ forward_propagate_addr_expr (tree name, tree rhs)
}
}
- if (all && debug)
- propagate_var_def_into_debug_stmts (name, NULL, NULL);
-
return all;
}
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 738249445b0..6c6a9f17a1d 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -764,6 +764,7 @@ rewrite_reciprocal (gimple_stmt_iterator *bsi)
gimple stmt, stmt1, stmt2;
tree var, name, lhs, type;
tree real_one;
+ gimple_stmt_iterator gsi;
stmt = gsi_stmt (*bsi);
lhs = gimple_assign_lhs (stmt);
@@ -798,8 +799,9 @@ rewrite_reciprocal (gimple_stmt_iterator *bsi)
/* Replace division stmt with reciprocal and multiply stmts.
The multiply stmt is not invariant, so update iterator
and avoid rescanning. */
- gsi_replace (bsi, stmt1, true);
- gsi_insert_after (bsi, stmt2, GSI_NEW_STMT);
+ gsi = *bsi;
+ gsi_insert_before (bsi, stmt1, GSI_NEW_STMT);
+ gsi_replace (&gsi, stmt2, true);
/* Continue processing with invariant reciprocal statement. */
return stmt1;
@@ -858,6 +860,8 @@ rewrite_bittest (gimple_stmt_iterator *bsi)
if (outermost_invariant_loop (b, loop_containing_stmt (stmt1)) != NULL
&& outermost_invariant_loop (a, loop_containing_stmt (stmt1)) == NULL)
{
+ gimple_stmt_iterator rsi;
+
/* 1 << B */
var = create_tmp_var (TREE_TYPE (a), "shifttmp");
add_referenced_var (var);
@@ -878,9 +882,14 @@ rewrite_bittest (gimple_stmt_iterator *bsi)
SET_USE (use, name);
gimple_cond_set_rhs (use_stmt, build_int_cst_type (TREE_TYPE (name), 0));
- gsi_insert_before (bsi, stmt1, GSI_SAME_STMT);
- propagate_defs_into_debug_stmts (gsi_stmt (*bsi), NULL, NULL);
- gsi_replace (bsi, stmt2, true);
+ /* Don't use gsi_replace here, none of the new assignments sets
+ the variable originally set in stmt. Move bsi to stmt1, and
+ then remove the original stmt, so that we get a chance to
+ retain debug info for it. */
+ rsi = *bsi;
+ gsi_insert_before (bsi, stmt1, GSI_NEW_STMT);
+ gsi_insert_before (&rsi, stmt2, GSI_SAME_STMT);
+ gsi_remove (&rsi, true);
return stmt1;
}
@@ -1060,7 +1069,6 @@ move_computations_stmt (struct dom_walk_data *dw_data ATTRIBUTE_UNUSED,
mark_virtual_ops_for_renaming (stmt);
gsi_insert_on_edge (loop_preheader_edge (level), stmt);
- propagate_defs_into_debug_stmts (gsi_stmt (bsi), NULL, NULL);
gsi_remove (&bsi, false);
}
}
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 28e6ec65826..6af31a437ea 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -894,6 +894,10 @@ get_expr_operands (gimple stmt, tree *expr_p, int flags)
add_stmt_operand (expr_p, stmt, flags);
return;
+ case DEBUG_EXPR_DECL:
+ gcc_assert (gimple_debug_bind_p (stmt));
+ return;
+
case MISALIGNED_INDIRECT_REF:
get_expr_operands (stmt, &TREE_OPERAND (expr, 1), flags);
/* fall through */
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 5da6c63b400..6ae05b5a866 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3405,6 +3405,7 @@ do_regular_insertion (basic_block block, basic_block dom)
pre_expr eprime = NULL;
edge_iterator ei;
pre_expr edoubleprime = NULL;
+ bool do_insertion = false;
val = get_expr_value_id (expr);
if (bitmap_set_contains_value (PHI_GEN (block), val))
@@ -3456,6 +3457,10 @@ do_regular_insertion (basic_block block, basic_block dom)
{
avail[bprime->index] = edoubleprime;
by_some = true;
+ /* We want to perform insertions to remove a redundancy on
+ a path in the CFG we want to optimize for speed. */
+ if (optimize_edge_for_speed_p (pred))
+ do_insertion = true;
if (first_s == NULL)
first_s = edoubleprime;
else if (!pre_expr_eq (first_s, edoubleprime))
@@ -3466,7 +3471,8 @@ do_regular_insertion (basic_block block, basic_block dom)
already existing along every predecessor, and
it's defined by some predecessor, it is
partially redundant. */
- if (!cant_insert && !all_same && by_some && dbg_cnt (treepre_insert))
+ if (!cant_insert && !all_same && by_some && do_insertion
+ && dbg_cnt (treepre_insert))
{
if (insert_into_preds_of_block (block, get_expression_id (expr),
avail))
@@ -4526,11 +4532,11 @@ fini_pre (bool do_fre)
only wants to do full redundancy elimination. */
static unsigned int
-execute_pre (bool do_fre ATTRIBUTE_UNUSED)
+execute_pre (bool do_fre)
{
unsigned int todo = 0;
- do_partial_partial = optimize > 2;
+ do_partial_partial = optimize > 2 && optimize_function_for_speed_p (cfun);
/* This has to happen before SCCVN runs because
loop_optimizer_init may create new phis, etc. */
@@ -4615,8 +4621,7 @@ do_pre (void)
static bool
gate_pre (void)
{
- /* PRE tends to generate bigger code. */
- return flag_tree_pre != 0 && optimize_function_for_speed_p (cfun);
+ return flag_tree_pre != 0;
}
struct gimple_opt_pass pass_pre =
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 55ce2f65a4f..5136aee5d32 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -1405,7 +1405,6 @@ rewrite_expr_tree (gimple stmt, unsigned int opindex,
{
stmt2 = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt1));
gsirhs1 = gsi_for_stmt (stmt2);
- propagate_defs_into_debug_stmts (stmt2, gimple_bb (stmt), &gsinow);
gsi_move_before (&gsirhs1, &gsinow);
gsi_prev (&gsinow);
stmt1 = stmt2;
@@ -1452,7 +1451,6 @@ linearize_expr (gimple stmt)
gsinow = gsi_for_stmt (stmt);
gsirhs = gsi_for_stmt (binrhs);
- propagate_defs_into_debug_stmts (binrhs, gimple_bb (stmt), &gsinow);
gsi_move_before (&gsirhs, &gsinow);
gimple_assign_set_rhs2 (stmt, gimple_assign_rhs1 (binrhs));
diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
index a9b4b67679b..be3fb7145fd 100644
--- a/gcc/tree-ssa-sink.c
+++ b/gcc/tree-ssa-sink.c
@@ -385,9 +385,6 @@ statement_sink_location (gimple stmt, basic_block frombb,
*togsi = gsi_after_labels (commondom);
- if (debug_stmts)
- propagate_defs_into_debug_stmts (stmt, commondom, togsi);
-
return true;
}
@@ -406,8 +403,6 @@ statement_sink_location (gimple stmt, basic_block frombb,
*togsi = gsi_for_stmt (use);
- propagate_defs_into_debug_stmts (stmt, sinkbb, togsi);
-
return true;
}
@@ -441,8 +436,6 @@ statement_sink_location (gimple stmt, basic_block frombb,
*togsi = gsi_after_labels (sinkbb);
- propagate_defs_into_debug_stmts (stmt, sinkbb, togsi);
-
return true;
}
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 9015d19c189..9858b109d03 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -295,152 +295,198 @@ find_released_ssa_name (tree *tp, int *walk_subtrees, void *data_)
return NULL_TREE;
}
-/* Given a VAR whose definition STMT is to be moved to the iterator
- position TOGSIP in the TOBB basic block, verify whether we're
- moving it across any of the debug statements that use it, and
- adjust them as needed. If TOBB is NULL, then the definition is
- understood as being removed, and TOGSIP is unused. */
+/* Insert a DEBUG BIND stmt before the DEF of VAR if VAR is referenced
+ by other DEBUG stmts, and replace uses of the DEF with the
+ newly-created debug temp. */
+
void
-propagate_var_def_into_debug_stmts (tree var,
- basic_block tobb,
- const gimple_stmt_iterator *togsip)
+insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var)
{
imm_use_iterator imm_iter;
- gimple stmt;
use_operand_p use_p;
+ gimple stmt;
+ gimple def_stmt = NULL;
+ int usecount = 0;
tree value = NULL;
- bool no_value = false;
if (!MAY_HAVE_DEBUG_STMTS)
return;
- FOR_EACH_IMM_USE_STMT (stmt, imm_iter, var)
+ /* First of all, check whether there are debug stmts that reference
+ this variable and, if there are, decide whether we should use a
+ debug temp. */
+ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, var)
{
- basic_block bb;
- gimple_stmt_iterator si;
+ stmt = USE_STMT (use_p);
- if (!is_gimple_debug (stmt))
+ if (!gimple_debug_bind_p (stmt))
continue;
- if (tobb)
+ if (usecount++)
+ break;
+
+ if (gimple_debug_bind_get_value (stmt) != var)
{
- bb = gimple_bb (stmt);
+ /* Count this as an additional use, so as to make sure we
+ use a temp unless VAR's definition has a SINGLE_RHS that
+ can be shared. */
+ usecount++;
+ break;
+ }
+ }
- if (bb != tobb)
- {
- gcc_assert (dom_info_available_p (CDI_DOMINATORS));
- if (dominated_by_p (CDI_DOMINATORS, bb, tobb))
- continue;
- }
- else
- {
- si = *togsip;
+ if (!usecount)
+ return;
- if (gsi_end_p (si))
- continue;
+ if (gsi)
+ def_stmt = gsi_stmt (*gsi);
+ else
+ def_stmt = SSA_NAME_DEF_STMT (var);
- do
- {
- gsi_prev (&si);
- if (gsi_end_p (si))
- break;
- }
- while (gsi_stmt (si) != stmt);
+ /* If we didn't get an insertion point, and the stmt has already
+ been removed, we won't be able to insert the debug bind stmt, so
+ we'll have to drop debug information. */
+ if (is_gimple_assign (def_stmt))
+ {
+ bool no_value = false;
- if (gsi_end_p (si))
- continue;
- }
+ if (!dom_info_available_p (CDI_DOMINATORS))
+ {
+ struct walk_stmt_info wi;
+
+ memset (&wi, 0, sizeof (wi));
+
+ /* When removing blocks without following reverse dominance
+ order, we may sometimes encounter SSA_NAMEs that have
+ already been released, referenced in other SSA_DEFs that
+ we're about to release. Consider:
+
+ <bb X>:
+ v_1 = foo;
+
+ <bb Y>:
+ w_2 = v_1 + bar;
+ # DEBUG w => w_2
+
+ If we deleted BB X first, propagating the value of w_2
+ won't do us any good. It's too late to recover their
+ original definition of v_1: when it was deleted, it was
+ only referenced in other DEFs, it couldn't possibly know
+ it should have been retained, and propagating every
+ single DEF just in case it might have to be propagated
+ into a DEBUG STMT would probably be too wasteful.
+
+ When dominator information is not readily available, we
+ check for and accept some loss of debug information. But
+ if it is available, there's no excuse for us to remove
+ blocks in the wrong order, so we don't even check for
+ dead SSA NAMEs. SSA verification shall catch any
+ errors. */
+ if ((!gsi && !gimple_bb (def_stmt))
+ || !walk_gimple_op (def_stmt, find_released_ssa_name,
+ &wi))
+ no_value = true;
}
- /* Here we compute (lazily) the value assigned to VAR, but we
- remember if we tried before and failed, so that we don't try
- again. */
- if (!value && !no_value)
+ if (!no_value)
+ value = gimple_assign_rhs_to_tree (def_stmt);
+ }
+
+ if (value)
+ {
+ /* If there's a single use of VAR, and VAR is the entire debug
+ expression (usecount would have been incremented again
+ otherwise), and the definition involves only constants and
+ SSA names, then we can propagate VALUE into this single use,
+ avoiding the temp.
+
+ We can also avoid using a temp if VALUE can be shared and
+ propagated into all uses, without generating expressions that
+ wouldn't be valid gimple RHSs.
+
+ Other cases that would require unsharing or non-gimple RHSs
+ are deferred to a debug temp, although we could avoid temps
+ at the expense of duplication of expressions. */
+
+ if (CONSTANT_CLASS_P (value)
+ || (usecount == 1
+ && (!gimple_assign_single_p (def_stmt)
+ || is_gimple_min_invariant (value)))
+ || is_gimple_reg (value))
+ value = unshare_expr (value);
+ else
{
- gimple def_stmt = SSA_NAME_DEF_STMT (var);
+ gimple def_temp;
+ tree vexpr = make_node (DEBUG_EXPR_DECL);
- if (is_gimple_assign (def_stmt))
- {
- if (!dom_info_available_p (CDI_DOMINATORS))
- {
- struct walk_stmt_info wi;
-
- memset (&wi, 0, sizeof (wi));
-
- /* When removing blocks without following reverse
- dominance order, we may sometimes encounter SSA_NAMEs
- that have already been released, referenced in other
- SSA_DEFs that we're about to release. Consider:
-
- <bb X>:
- v_1 = foo;
-
- <bb Y>:
- w_2 = v_1 + bar;
- # DEBUG w => w_2
-
- If we deleted BB X first, propagating the value of
- w_2 won't do us any good. It's too late to recover
- their original definition of v_1: when it was
- deleted, it was only referenced in other DEFs, it
- couldn't possibly know it should have been retained,
- and propagating every single DEF just in case it
- might have to be propagated into a DEBUG STMT would
- probably be too wasteful.
-
- When dominator information is not readily
- available, we check for and accept some loss of
- debug information. But if it is available,
- there's no excuse for us to remove blocks in the
- wrong order, so we don't even check for dead SSA
- NAMEs. SSA verification shall catch any
- errors. */
- if (!walk_gimple_op (def_stmt, find_released_ssa_name, &wi))
- no_value = true;
- }
+ def_temp = gimple_build_debug_bind (vexpr,
+ unshare_expr (value),
+ def_stmt);
+
+ DECL_ARTIFICIAL (vexpr) = 1;
+ TREE_TYPE (vexpr) = TREE_TYPE (value);
+ if (DECL_P (value))
+ DECL_MODE (vexpr) = DECL_MODE (value);
+ else
+ DECL_MODE (vexpr) = TYPE_MODE (TREE_TYPE (value));
- if (!no_value)
- value = gimple_assign_rhs_to_tree (def_stmt);
+ if (gsi)
+ gsi_insert_before (gsi, def_temp, GSI_SAME_STMT);
+ else
+ {
+ gimple_stmt_iterator ngsi = gsi_for_stmt (def_stmt);
+ gsi_insert_before (&ngsi, def_temp, GSI_SAME_STMT);
}
- if (!value)
- no_value = true;
+ value = vexpr;
}
+ }
- if (no_value)
- gimple_debug_bind_reset_value (stmt);
- else
+ FOR_EACH_IMM_USE_STMT (stmt, imm_iter, var)
+ {
+ if (!gimple_debug_bind_p (stmt))
+ continue;
+
+ if (value)
FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
- SET_USE (use_p, unshare_expr (value));
+ /* unshare_expr is not needed here. vexpr is either a
+ SINGLE_RHS, that can be safely shared, some other RHS
+ that was unshared when we found it had a single debug
+ use, or a DEBUG_EXPR_DECL, that can be safely
+ shared. */
+ SET_USE (use_p, value);
+ else
+ gimple_debug_bind_reset_value (stmt);
update_stmt (stmt);
}
}
-/* Given a STMT to be moved to the iterator position TOBSIP in the
- TOBB basic block, verify whether we're moving it across any of the
- debug statements that use it. If TOBB is NULL, then the definition
- is understood as being removed, and TOBSIP is unused. */
+/* Insert a DEBUG BIND stmt before STMT for each DEF referenced by
+ other DEBUG stmts, and replace uses of the DEF with the
+ newly-created debug temp. */
void
-propagate_defs_into_debug_stmts (gimple def, basic_block tobb,
- const gimple_stmt_iterator *togsip)
+insert_debug_temps_for_defs (gimple_stmt_iterator *gsi)
{
+ gimple stmt;
ssa_op_iter op_iter;
def_operand_p def_p;
if (!MAY_HAVE_DEBUG_STMTS)
return;
- FOR_EACH_SSA_DEF_OPERAND (def_p, def, op_iter, SSA_OP_DEF)
+ stmt = gsi_stmt (*gsi);
+
+ FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, op_iter, SSA_OP_DEF)
{
tree var = DEF_FROM_PTR (def_p);
if (TREE_CODE (var) != SSA_NAME)
continue;
- propagate_var_def_into_debug_stmts (var, tobb, togsip);
+ insert_debug_temp_for_var_def (gsi, var);
}
}
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 45183218a2c..bb0880260ff 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -206,7 +206,7 @@ release_ssa_name (tree var)
use_operand_p imm = &(SSA_NAME_IMM_USE_NODE (var));
if (MAY_HAVE_DEBUG_STMTS)
- propagate_var_def_into_debug_stmts (var, NULL, NULL);
+ insert_debug_temp_for_var_def (NULL, var);
#ifdef ENABLE_CHECKING
verify_imm_links (stderr, var);
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index ddaee818310..fb4a5bf5dd7 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -172,13 +172,13 @@ exist_non_indexing_operands_for_use_p (tree use, gimple stmt)
{
tree operand;
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
-
+
/* USE corresponds to some operand in STMT. If there is no data
reference in STMT, then any operand that corresponds to USE
is not indexing an array. */
if (!STMT_VINFO_DATA_REF (stmt_info))
return true;
-
+
/* STMT has a data_ref. FORNOW this means that its of one of
the following forms:
-1- ARRAY_REF = var
@@ -191,14 +191,12 @@ exist_non_indexing_operands_for_use_p (tree use, gimple stmt)
Therefore, all we need to check is if STMT falls into the
first case, and whether var corresponds to USE. */
-
- if (TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME)
- return false;
if (!gimple_assign_copy_p (stmt))
return false;
+ if (TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME)
+ return false;
operand = gimple_assign_rhs1 (stmt);
-
if (TREE_CODE (operand) != SSA_NAME)
return false;
diff --git a/gcc/tree.c b/gcc/tree.c
index 4c3f52bd7b7..5da346c52f8 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "except.h"
#include "debug.h"
+#include "intl.h"
/* Tree code classes. */
@@ -152,6 +153,9 @@ static const char * const tree_node_kind_names[] = {
static GTY(()) int next_decl_uid;
/* Unique id for next type created. */
static GTY(()) int next_type_uid = 1;
+/* Unique id for next debug decl created. Use negative numbers,
+ to catch erroneous uses. */
+static GTY(()) int next_debug_decl_uid;
/* Since we cannot rehash a type after it is in the table, we have to
keep the hash code. */
@@ -284,6 +288,8 @@ tree_node_structure_for_code (enum tree_code code)
return TS_LABEL_DECL;
case RESULT_DECL:
return TS_RESULT_DECL;
+ case DEBUG_EXPR_DECL:
+ return TS_DECL_WRTL;
case CONST_DECL:
return TS_CONST_DECL;
case TYPE_DECL:
@@ -667,6 +673,8 @@ tree_code_size (enum tree_code code)
return sizeof (struct tree_type_decl);
case FUNCTION_DECL:
return sizeof (struct tree_function_decl);
+ case DEBUG_EXPR_DECL:
+ return sizeof (struct tree_decl_with_rtl);
default:
return sizeof (struct tree_decl_non_common);
}
@@ -872,7 +880,10 @@ make_node_stat (enum tree_code code MEM_STAT_DECL)
DECL_ALIGN (t) = 1;
}
DECL_SOURCE_LOCATION (t) = input_location;
- DECL_UID (t) = next_decl_uid++;
+ if (TREE_CODE (t) == DEBUG_EXPR_DECL)
+ DECL_UID (t) = --next_debug_decl_uid;
+ else
+ DECL_UID (t) = next_decl_uid++;
if (TREE_CODE (t) == LABEL_DECL)
LABEL_DECL_UID (t) = -1;
@@ -948,7 +959,10 @@ copy_node_stat (tree node MEM_STAT_DECL)
if (TREE_CODE_CLASS (code) == tcc_declaration)
{
- DECL_UID (t) = next_decl_uid++;
+ if (code == DEBUG_EXPR_DECL)
+ DECL_UID (t) = --next_debug_decl_uid;
+ else
+ DECL_UID (t) = next_decl_uid++;
if ((TREE_CODE (node) == PARM_DECL || TREE_CODE (node) == VAR_DECL)
&& DECL_HAS_VALUE_EXPR_P (node))
{
@@ -3939,9 +3953,9 @@ expanded_location
expand_location (source_location loc)
{
expanded_location xloc;
- if (loc == 0)
+ if (loc <= BUILTINS_LOCATION)
{
- xloc.file = NULL;
+ xloc.file = loc == UNKNOWN_LOCATION ? NULL : _("<built-in>");
xloc.line = 0;
xloc.column = 0;
xloc.sysp = 0;
@@ -4388,6 +4402,10 @@ free_lang_data_in_decl (tree decl)
&& DECL_FIELD_OFFSET (decl)
&& TREE_CODE (DECL_FIELD_OFFSET (decl)) != INTEGER_CST)
DECL_FIELD_OFFSET (decl) = NULL_TREE;
+
+ /* DECL_FCONTEXT is only used for debug info generation. */
+ if (TREE_CODE (decl) == FIELD_DECL)
+ DECL_FCONTEXT (decl) = NULL_TREE;
}
else if (TREE_CODE (decl) == FUNCTION_DECL)
{
diff --git a/gcc/tree.def b/gcc/tree.def
index c1ba96aa966..01d91b76a6f 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -351,6 +351,10 @@ DEFTREECODE (PARM_DECL, "parm_decl", tcc_declaration, 0)
DEFTREECODE (TYPE_DECL, "type_decl", tcc_declaration, 0)
DEFTREECODE (RESULT_DECL, "result_decl", tcc_declaration, 0)
+/* A "declaration" of a debug temporary. It should only appear in
+ DEBUG stmts. */
+DEFTREECODE (DEBUG_EXPR_DECL, "debug_expr_decl", tcc_declaration, 0)
+
/* A namespace declaration. Namespaces appear in DECL_CONTEXT of other
_DECLs, providing a hierarchy of names. */
DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0)
diff --git a/gcc/tree.h b/gcc/tree.h
index 20463b4a18b..2487a1ce9fe 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2455,6 +2455,10 @@ struct function;
/* Every ..._DECL node gets a unique number. */
#define DECL_UID(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.uid)
+/* DEBUG_EXPR_DECLs get negative UID numbers, to catch erroneous
+ uses. */
+#define DEBUG_TEMP_UID(NODE) (-DECL_UID (TREE_CHECK ((NODE), DEBUG_EXPR_DECL)))
+
/* These two fields describe where in the source code the declaration
was. If the declaration appears in several places (as for a C
function that is declared first and then defined later), this
diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
index a86c21b7129..82958b0086a 100644
--- a/gcc/unwind-dw2.c
+++ b/gcc/unwind-dw2.c
@@ -789,22 +789,22 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
result = second ^ first;
break;
case DW_OP_le:
- result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second <= (_Unwind_Sword) first;
break;
case DW_OP_ge:
- result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second >= (_Unwind_Sword) first;
break;
case DW_OP_eq:
- result = (_Unwind_Sword) first == (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second == (_Unwind_Sword) first;
break;
case DW_OP_lt:
- result = (_Unwind_Sword) first < (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second < (_Unwind_Sword) first;
break;
case DW_OP_gt:
- result = (_Unwind_Sword) first > (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second > (_Unwind_Sword) first;
break;
case DW_OP_ne:
- result = (_Unwind_Sword) first != (_Unwind_Sword) second;
+ result = (_Unwind_Sword) second != (_Unwind_Sword) first;
break;
default:
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index bdd3bdee34e..cfcc839b96c 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -732,6 +732,7 @@ dv_is_decl_p (decl_or_value dv)
case (int)PARM_DECL:
case (int)RESULT_DECL:
case (int)FUNCTION_DECL:
+ case (int)DEBUG_EXPR_DECL:
case (int)COMPONENT_REF:
return true;
@@ -2222,7 +2223,7 @@ dataflow_set_union (dataflow_set *dst, dataflow_set *src)
/* Whether the value is currently being expanded. */
#define VALUE_RECURSED_INTO(x) \
- (RTL_FLAG_CHECK1 ("VALUE_RECURSED_INTO", (x), VALUE)->used)
+ (RTL_FLAG_CHECK2 ("VALUE_RECURSED_INTO", (x), VALUE, DEBUG_EXPR)->used)
/* Whether the value is in changed_variables hash table. */
#define VALUE_CHANGED(x) \
(RTL_FLAG_CHECK1 ("VALUE_CHANGED", (x), VALUE)->frame_related)
@@ -4112,6 +4113,9 @@ track_expr_p (tree expr, bool need_rtl)
rtx decl_rtl;
tree realdecl;
+ if (TREE_CODE (expr) == DEBUG_EXPR_DECL)
+ return DECL_RTL_SET_P (expr);
+
/* If EXPR is not a parameter or a variable do not track it. */
if (TREE_CODE (expr) != VAR_DECL && TREE_CODE (expr) != PARM_DECL)
return 0;
@@ -6242,24 +6246,6 @@ delete_variable_part (dataflow_set *set, rtx loc, decl_or_value dv,
slot = delete_slot_part (set, loc, slot, offset);
}
-/* Wrap result in CONST:MODE if needed to preserve the mode. */
-
-static rtx
-check_wrap_constant (enum machine_mode mode, rtx result)
-{
- if (!result || GET_MODE (result) == mode)
- return result;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, " wrapping result in const to preserve mode %s\n",
- GET_MODE_NAME (mode));
-
- result = wrap_constant (mode, result);
- gcc_assert (GET_MODE (result) == mode);
-
- return result;
-}
-
/* Callback for cselib_expand_value, that looks for expressions
holding the value in the var-tracking hash tables. Return X for
standard processing, anything else is to be used as-is. */
@@ -6271,11 +6257,12 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
decl_or_value dv;
variable var;
location_chain loc;
- rtx result;
+ rtx result, subreg, xret;
- if (GET_CODE (x) == SUBREG)
+ switch (GET_CODE (x))
{
- rtx subreg = SUBREG_REG (x);
+ case SUBREG:
+ subreg = SUBREG_REG (x);
if (GET_CODE (SUBREG_REG (x)) != VALUE)
return x;
@@ -6297,22 +6284,31 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x));
return result;
- }
- if (GET_CODE (x) != VALUE)
- return x;
+ case DEBUG_EXPR:
+ dv = dv_from_decl (DEBUG_EXPR_TREE_DECL (x));
+ xret = NULL;
+ break;
+
+ case VALUE:
+ dv = dv_from_value (x);
+ xret = x;
+ break;
+
+ default:
+ return x;
+ }
if (VALUE_RECURSED_INTO (x))
- return x;
+ return NULL;
- dv = dv_from_value (x);
var = (variable) htab_find_with_hash (vars, dv, dv_htab_hash (dv));
if (!var)
- return x;
+ return xret;
if (var->n_var_parts == 0)
- return x;
+ return xret;
gcc_assert (var->n_var_parts == 1);
@@ -6323,7 +6319,6 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
{
result = cselib_expand_value_rtx_cb (loc->loc, regs, max_depth,
vt_expand_loc_callback, vars);
- result = check_wrap_constant (GET_MODE (loc->loc), result);
if (result)
break;
}
@@ -6332,7 +6327,7 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
if (result)
return result;
else
- return x;
+ return xret;
}
/* Expand VALUEs in LOC, using VARS as well as cselib's equivalence
@@ -6341,14 +6336,11 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
static rtx
vt_expand_loc (rtx loc, htab_t vars)
{
- rtx newloc;
-
if (!MAY_HAVE_DEBUG_INSNS)
return loc;
- newloc = cselib_expand_value_rtx_cb (loc, scratch_regs, 5,
- vt_expand_loc_callback, vars);
- loc = check_wrap_constant (GET_MODE (loc), newloc);
+ loc = cselib_expand_value_rtx_cb (loc, scratch_regs, 5,
+ vt_expand_loc_callback, vars);
if (loc && MEM_P (loc))
loc = targetm.delegitimize_address (loc);
@@ -6382,6 +6374,9 @@ emit_note_insn_var_location (void **varp, void *data)
decl = dv_as_decl (var->dv);
+ if (TREE_CODE (decl) == DEBUG_EXPR_DECL)
+ goto clear;
+
gcc_assert (decl);
complete = true;
diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
index 0fab5e73ae2..b16e76e61c0 100644
--- a/gcc/vmsdbgout.c
+++ b/gcc/vmsdbgout.c
@@ -168,6 +168,7 @@ static int write_srccorrs (int);
static void vmsdbgout_init (const char *);
static void vmsdbgout_finish (const char *);
+static void vmsdbgout_assembly_start (void);
static void vmsdbgout_define (unsigned int, const char *);
static void vmsdbgout_undef (unsigned int, const char *);
static void vmsdbgout_start_source_file (unsigned int, const char *);
@@ -190,6 +191,7 @@ static void vmsdbgout_abstract_function (tree);
const struct gcc_debug_hooks vmsdbg_debug_hooks
= {vmsdbgout_init,
vmsdbgout_finish,
+ vmsdbgout_assembly_start,
vmsdbgout_define,
vmsdbgout_undef,
vmsdbgout_start_source_file,
@@ -1618,6 +1620,15 @@ vmsdbgout_init (const char *main_input_filename)
/* Not implemented in VMS Debug. */
static void
+vmsdbgout_assembly_start (void)
+{
+ if (write_symbols == VMS_AND_DWARF2_DEBUG)
+ (*dwarf2_debug_hooks.assembly_start) ();
+}
+
+/* Not implemented in VMS Debug. */
+
+static void
vmsdbgout_define (unsigned int lineno, const char *buffer)
{
if (write_symbols == VMS_AND_DWARF2_DEBUG)
diff --git a/include/ChangeLog b/include/ChangeLog
index d084bda3250..6cff29517f6 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,19 @@
+2009-10-23 Kai Tietz <kai.tietz@onevision.com>
+
+ * splay-tree.h (libi_uhostptr_t): Add gcc specific
+ __extension__ for long long type case to silent cX9.
+ (libi_shostptr_t): Likewise.
+
+2009-10-19 Rafael Avila de Espindola <espindola@google.com>
+
+ PR40790
+ * plugin-api.h: Don't include stdint.h unconditionally.
+
+2009-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ * include/dwarf2.h (DW_LANG_Python): Add comment that it is
+ a DWARF 4 addition.
+
2009-10-09 Rafael Espindola <espindola@google.com>
* plugin-api.h (ld_plugin_add_input_library): Change argument name to
diff --git a/include/dwarf2.h b/include/dwarf2.h
index 385ab2256fa..7a8e030a2bf 100644
--- a/include/dwarf2.h
+++ b/include/dwarf2.h
@@ -858,6 +858,7 @@ enum dwarf_source_language
DW_LANG_ObjC_plus_plus = 0x0011,
DW_LANG_UPC = 0x0012,
DW_LANG_D = 0x0013,
+ /* DWARF 4. */
DW_LANG_Python = 0x0014,
DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */
diff --git a/include/plugin-api.h b/include/plugin-api.h
index a026e7a004b..572621fc374 100644
--- a/include/plugin-api.h
+++ b/include/plugin-api.h
@@ -26,8 +26,16 @@
#ifndef PLUGIN_API_H
#define PLUGIN_API_H
+#ifdef HAVE_STDINT_H
#include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+#include <inttypes.h>
+#endif
#include <sys/types.h>
+#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) && \
+ !defined(UINT64_MAX) && !defined(uint64_t)
+#error can not find uint64_t type
+#endif
#ifdef __cplusplus
extern "C"
diff --git a/include/splay-tree.h b/include/splay-tree.h
index 8a56a20cdc3..57a96c4a3de 100644
--- a/include/splay-tree.h
+++ b/include/splay-tree.h
@@ -41,7 +41,13 @@ extern "C" {
typedef unsigned long int libi_uhostptr_t;
typedef long int libi_shostptr_t;
#else
+#ifdef __GNUC__
+ __extension__
+#endif
typedef unsigned long long libi_uhostptr_t;
+#ifdef __GNUC__
+ __extension__
+#endif
typedef long long libi_shostptr_t;
#endif
diff --git a/intl/ChangeLog b/intl/ChangeLog
index 83a74febece..20aaed376b0 100644
--- a/intl/ChangeLog
+++ b/intl/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-15 Jim Blandy <jimb@red-bean.com>
+
+ * libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext)
+ (dcgettext, ngettext, dngettext, dcngettext): Backport changes
+ from current gettext to provide GCC format_arg attributes.
+
2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure.ac (AC_PREREQ): Bump to 2.64.
diff --git a/intl/libgnuintl.h b/intl/libgnuintl.h
index f6138affb59..acc9093a9de 100644
--- a/intl/libgnuintl.h
+++ b/intl/libgnuintl.h
@@ -112,11 +112,21 @@ extern "C" {
# define _INTL_ASM(cname)
#endif
+/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
+ its n-th argument literally. This enables GCC to warn for example about
+ printf (gettext ("foo %y")). */
+#if __GNUC__ >= 3 && !(__APPLE_CC__ > 1 && defined __cplusplus)
+# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
+#else
+# define _INTL_MAY_RETURN_STRING_ARG(n)
+#endif
+
/* Look up MSGID in the current default message catalog for the current
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_gettext (const char *__msgid);
+extern char *libintl_gettext (const char *__msgid)
+ _INTL_MAY_RETURN_STRING_ARG (1);
static inline char *gettext (const char *__msgid)
{
return libintl_gettext (__msgid);
@@ -126,13 +136,15 @@ static inline char *gettext (const char *__msgid)
# define gettext libintl_gettext
#endif
extern char *gettext _INTL_PARAMS ((const char *__msgid))
- _INTL_ASM (libintl_gettext);
+ _INTL_ASM (libintl_gettext)
+ _INTL_MAY_RETURN_STRING_ARG (1);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current
LC_MESSAGES locale. */
#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
+extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
+ _INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dgettext (const char *__domainname, const char *__msgid)
{
return libintl_dgettext (__domainname, __msgid);
@@ -143,14 +155,16 @@ static inline char *dgettext (const char *__domainname, const char *__msgid)
#endif
extern char *dgettext _INTL_PARAMS ((const char *__domainname,
const char *__msgid))
- _INTL_ASM (libintl_dgettext);
+ _INTL_ASM (libintl_dgettext)
+ _INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
- int __category);
+ int __category)
+ _INTL_MAY_RETURN_STRING_ARG (2);
static inline char *dcgettext (const char *__domainname, const char *__msgid,
int __category)
{
@@ -163,7 +177,8 @@ static inline char *dcgettext (const char *__domainname, const char *__msgid,
extern char *dcgettext _INTL_PARAMS ((const char *__domainname,
const char *__msgid,
int __category))
- _INTL_ASM (libintl_dcgettext);
+ _INTL_ASM (libintl_dcgettext)
+ _INTL_MAY_RETURN_STRING_ARG (2);
#endif
@@ -171,7 +186,8 @@ extern char *dcgettext _INTL_PARAMS ((const char *__domainname,
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
+ unsigned long int __n)
+ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
static inline char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
{
@@ -184,14 +200,16 @@ static inline char *ngettext (const char *__msgid1, const char *__msgid2,
extern char *ngettext _INTL_PARAMS ((const char *__msgid1,
const char *__msgid2,
unsigned long int __n))
- _INTL_ASM (libintl_ngettext);
+ _INTL_ASM (libintl_ngettext)
+ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
#endif
/* Similar to `dgettext' but select the plural form corresponding to the
number N. */
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n);
+ const char *__msgid2, unsigned long int __n)
+ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
{
@@ -205,7 +223,8 @@ extern char *dngettext _INTL_PARAMS ((const char *__domainname,
const char *__msgid1,
const char *__msgid2,
unsigned long int __n))
- _INTL_ASM (libintl_dngettext);
+ _INTL_ASM (libintl_dngettext)
+ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
/* Similar to `dcgettext' but select the plural form corresponding to the
@@ -213,7 +232,8 @@ extern char *dngettext _INTL_PARAMS ((const char *__domainname,
#ifdef _INTL_REDIRECT_INLINE
extern char *libintl_dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
+ unsigned long int __n, int __category)
+ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
static inline char *dcngettext (const char *__domainname,
const char *__msgid1, const char *__msgid2,
unsigned long int __n, int __category)
@@ -229,7 +249,8 @@ extern char *dcngettext _INTL_PARAMS ((const char *__domainname,
const char *__msgid2,
unsigned long int __n,
int __category))
- _INTL_ASM (libintl_dcngettext);
+ _INTL_ASM (libintl_dcngettext)
+ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
#endif
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 9d9556ee0ad..5946b29dc56 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,28 @@
+2009-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * charset.c (cpp_init_iconv): Initialize utf8_cset_desc.
+ (_cpp_destroy_iconv): Destroy utf8_cset_desc, char16_cset_desc
+ and char32_cset_desc.
+ (converter_for_type): Handle CPP_UTF8STRING.
+ (cpp_interpret_string): Handle CPP_UTF8STRING and raw-strings.
+ * directives.c (get__Pragma_string): Handle CPP_UTF8STRING.
+ (parse_include): Reject raw strings.
+ * include/cpplib.h (CPP_UTF8STRING): New token type.
+ * internal.h (struct cpp_reader): Add utf8_cset_desc field.
+ * lex.c (lex_raw_string): New function.
+ (lex_string): Handle u8 string literals, call lex_raw_string
+ for raw string literals.
+ (_cpp_lex_direct): Call lex_string even for u8" and {,u,U,L,u8}R"
+ sequences.
+ * macro.c (stringify_arg): Handle CPP_UTF8STRING.
+
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/41543
+ * include/line-map.h (RESERVED_LOCATION_COUNT): Define.
+ * line-map.c (linemap_init): Initialize highest_location and
+ highest_line to RESERVED_LOCATION_COUNT-1 instead of 0.
+
2009-10-09 Jason Merrill <jason@redhat.com>
* charset.c (_cpp_valid_ucn): Update C++0x restrictions.
diff --git a/libcpp/charset.c b/libcpp/charset.c
index bd24ec2490d..837ccd77aab 100644
--- a/libcpp/charset.c
+++ b/libcpp/charset.c
@@ -721,6 +721,8 @@ cpp_init_iconv (cpp_reader *pfile)
pfile->narrow_cset_desc = init_iconv_desc (pfile, ncset, SOURCE_CHARSET);
pfile->narrow_cset_desc.width = CPP_OPTION (pfile, char_precision);
+ pfile->utf8_cset_desc = init_iconv_desc (pfile, "UTF-8", SOURCE_CHARSET);
+ pfile->utf8_cset_desc.width = CPP_OPTION (pfile, char_precision);
pfile->char16_cset_desc = init_iconv_desc (pfile,
be ? "UTF-16BE" : "UTF-16LE",
SOURCE_CHARSET);
@@ -741,6 +743,12 @@ _cpp_destroy_iconv (cpp_reader *pfile)
{
if (pfile->narrow_cset_desc.func == convert_using_iconv)
iconv_close (pfile->narrow_cset_desc.cd);
+ if (pfile->utf8_cset_desc.func == convert_using_iconv)
+ iconv_close (pfile->utf8_cset_desc.cd);
+ if (pfile->char16_cset_desc.func == convert_using_iconv)
+ iconv_close (pfile->char16_cset_desc.cd);
+ if (pfile->char32_cset_desc.func == convert_using_iconv)
+ iconv_close (pfile->char32_cset_desc.cd);
if (pfile->wide_cset_desc.func == convert_using_iconv)
iconv_close (pfile->wide_cset_desc.cd);
}
@@ -1339,6 +1347,8 @@ converter_for_type (cpp_reader *pfile, enum cpp_ttype type)
{
default:
return pfile->narrow_cset_desc;
+ case CPP_UTF8STRING:
+ return pfile->utf8_cset_desc;
case CPP_CHAR16:
case CPP_STRING16:
return pfile->char16_cset_desc;
@@ -1373,7 +1383,47 @@ cpp_interpret_string (cpp_reader *pfile, const cpp_string *from, size_t count,
for (i = 0; i < count; i++)
{
p = from[i].text;
- if (*p == 'L' || *p == 'u' || *p == 'U') p++;
+ if (*p == 'u')
+ {
+ if (*++p == '8')
+ p++;
+ }
+ else if (*p == 'L' || *p == 'U') p++;
+ if (*p == 'R')
+ {
+ const uchar *prefix;
+
+ /* Skip over 'R"'. */
+ p += 2;
+ prefix = p;
+ while (*p != '[')
+ p++;
+ p++;
+ limit = from[i].text + from[i].len;
+ if (limit >= p + (p - prefix) + 1)
+ limit -= (p - prefix) + 1;
+
+ for (;;)
+ {
+ base = p;
+ while (p < limit && (*p != '\\' || (p[1] != 'u' && p[1] != 'U')))
+ p++;
+ if (p > base)
+ {
+ /* We have a run of normal characters; these can be fed
+ directly to convert_cset. */
+ if (!APPLY_CONVERSION (cvt, base, p - base, &tbuf))
+ goto fail;
+ }
+ if (p == limit)
+ break;
+
+ p = convert_ucn (pfile, p + 1, limit, &tbuf, cvt);
+ }
+
+ continue;
+ }
+
p++; /* Skip leading quote. */
limit = from[i].text + from[i].len - 1; /* Skip trailing quote. */
diff --git a/libcpp/directives.c b/libcpp/directives.c
index f9dba539ea2..01bb599e266 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -697,7 +697,8 @@ parse_include (cpp_reader *pfile, int *pangle_brackets,
/* Allow macro expansion. */
header = get_token_no_padding (pfile);
*location = header->src_loc;
- if (header->type == CPP_STRING || header->type == CPP_HEADER_NAME)
+ if ((header->type == CPP_STRING && header->val.str.text[0] != 'R')
+ || header->type == CPP_HEADER_NAME)
{
fname = XNEWVEC (char, header->val.str.len - 1);
memcpy (fname, header->val.str.text + 1, header->val.str.len - 2);
@@ -1537,7 +1538,8 @@ get__Pragma_string (cpp_reader *pfile)
if (string->type == CPP_EOF)
_cpp_backup_tokens (pfile, 1);
if (string->type != CPP_STRING && string->type != CPP_WSTRING
- && string->type != CPP_STRING32 && string->type != CPP_STRING16)
+ && string->type != CPP_STRING32 && string->type != CPP_STRING16
+ && string->type != CPP_UTF8STRING)
return NULL;
paren = get_token_no_padding (pfile);
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index df04668dda0..e95f01a412a 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -127,6 +127,7 @@ struct _cpp_file;
TK(WSTRING, LITERAL) /* L"string" */ \
TK(STRING16, LITERAL) /* u"string" */ \
TK(STRING32, LITERAL) /* U"string" */ \
+ TK(UTF8STRING, LITERAL) /* u8"string" */ \
TK(OBJC_STRING, LITERAL) /* @"string" - Objective-C */ \
TK(HEADER_NAME, LITERAL) /* <stdio.h> in #include */ \
\
@@ -728,10 +729,10 @@ extern const unsigned char *cpp_macro_definition (cpp_reader *,
extern void _cpp_backup_tokens (cpp_reader *, unsigned int);
extern const cpp_token *cpp_peek_token (cpp_reader *, int);
-/* Evaluate a CPP_CHAR or CPP_WCHAR token. */
+/* Evaluate a CPP_*CHAR* token. */
extern cppchar_t cpp_interpret_charconst (cpp_reader *, const cpp_token *,
unsigned int *, int *);
-/* Evaluate a vector of CPP_STRING or CPP_WSTRING tokens. */
+/* Evaluate a vector of CPP_*STRING* tokens. */
extern bool cpp_interpret_string (cpp_reader *,
const cpp_string *, size_t,
cpp_string *, enum cpp_ttype);
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 31ac8e5d4c3..9e31a6ae3b9 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -143,6 +143,11 @@ extern const struct line_map *linemap_add
extern const struct line_map *linemap_lookup
(struct line_maps *, source_location);
+/* source_location values from 0 to RESERVED_LOCATION_COUNT-1 will
+ be reserved for libcpp user as special values, no token from libcpp
+ will contain any of those locations. */
+#define RESERVED_LOCATION_COUNT 2
+
/* Converts a map and a source_location to source line. */
#define SOURCE_LINE(MAP, LOC) \
((((LOC) - (MAP)->start_location) >> (MAP)->column_bits) + (MAP)->to_line)
diff --git a/libcpp/internal.h b/libcpp/internal.h
index 21e51c6553c..aaa231c2ab1 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -397,6 +397,10 @@ struct cpp_reader
struct cset_converter narrow_cset_desc;
/* Descriptor for converting from the source character set to the
+ UTF-8 execution character set. */
+ struct cset_converter utf8_cset_desc;
+
+ /* Descriptor for converting from the source character set to the
UTF-16 execution character set. */
struct cset_converter char16_cset_desc;
diff --git a/libcpp/lex.c b/libcpp/lex.c
index bab14a4baa3..55bffa9a326 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -617,12 +617,192 @@ create_literal (cpp_reader *pfile, cpp_token *token, const uchar *base,
token->val.str.text = dest;
}
+/* Lexes a raw string. The stored string contains the spelling, including
+ double quotes, delimiter string, '[' and ']', any leading
+ 'L', 'u', 'U' or 'u8' and 'R' modifier. It returns the type of the
+ literal, or CPP_OTHER if it was not properly terminated.
+
+ The spelling is NUL-terminated, but it is not guaranteed that this
+ is the first NUL since embedded NULs are preserved. */
+
+static void
+lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base,
+ const uchar *cur)
+{
+ source_location saw_NUL = 0;
+ const uchar *raw_prefix;
+ unsigned int raw_prefix_len = 0;
+ enum cpp_ttype type;
+ size_t total_len = 0;
+ _cpp_buff *first_buff = NULL, *last_buff = NULL;
+
+ type = (*base == 'L' ? CPP_WSTRING :
+ *base == 'U' ? CPP_STRING32 :
+ *base == 'u' ? (base[1] == '8' ? CPP_UTF8STRING : CPP_STRING16)
+ : CPP_STRING);
+
+ raw_prefix = cur + 1;
+ while (raw_prefix_len < 16)
+ {
+ switch (raw_prefix[raw_prefix_len])
+ {
+ case ' ': case '[': case ']': case '\t':
+ case '\v': case '\f': case '\n': default:
+ break;
+ /* Basic source charset except the above chars. */
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case '_': case '{': case '}': case '#': case '(': case ')':
+ case '<': case '>': case '%': case ':': case ';': case '.':
+ case '?': case '*': case '+': case '-': case '/': case '^':
+ case '&': case '|': case '~': case '!': case '=': case ',':
+ case '\\': case '"': case '\'':
+ raw_prefix_len++;
+ continue;
+ }
+ break;
+ }
+
+ if (raw_prefix[raw_prefix_len] != '[')
+ {
+ int col = CPP_BUF_COLUMN (pfile->buffer, raw_prefix + raw_prefix_len)
+ + 1;
+ if (raw_prefix_len == 16)
+ cpp_error_with_line (pfile, CPP_DL_ERROR, token->src_loc, col,
+ "raw string delimiter longer than 16 characters");
+ else
+ cpp_error_with_line (pfile, CPP_DL_ERROR, token->src_loc, col,
+ "invalid character '%c' in raw string delimiter",
+ (int) raw_prefix[raw_prefix_len]);
+ pfile->buffer->cur = raw_prefix - 1;
+ create_literal (pfile, token, base, raw_prefix - 1 - base, CPP_OTHER);
+ return;
+ }
+
+ cur = raw_prefix + raw_prefix_len + 1;
+ for (;;)
+ {
+ cppchar_t c = *cur++;
+
+ if (c == ']'
+ && strncmp ((const char *) cur, (const char *) raw_prefix,
+ raw_prefix_len) == 0
+ && cur[raw_prefix_len] == '"')
+ {
+ cur += raw_prefix_len + 1;
+ break;
+ }
+ else if (c == '\n')
+ {
+ if (pfile->state.in_directive
+ || pfile->state.parsing_args
+ || pfile->state.in_deferred_pragma)
+ {
+ cur--;
+ type = CPP_OTHER;
+ cpp_error_with_line (pfile, CPP_DL_ERROR, token->src_loc, 0,
+ "unterminated raw string");
+ break;
+ }
+
+ /* raw strings allow embedded non-escaped newlines, which
+ complicates this routine a lot. */
+ if (first_buff == NULL)
+ {
+ total_len = cur - base;
+ first_buff = last_buff = _cpp_get_buff (pfile, total_len);
+ memcpy (BUFF_FRONT (last_buff), base, total_len);
+ raw_prefix = BUFF_FRONT (last_buff) + (raw_prefix - base);
+ BUFF_FRONT (last_buff) += total_len;
+ }
+ else
+ {
+ size_t len = cur - base;
+ size_t cur_len = len > BUFF_ROOM (last_buff)
+ ? BUFF_ROOM (last_buff) : len;
+
+ total_len += len;
+ memcpy (BUFF_FRONT (last_buff), base, cur_len);
+ BUFF_FRONT (last_buff) += cur_len;
+ if (len > cur_len)
+ {
+ last_buff = _cpp_append_extend_buff (pfile, last_buff,
+ len - cur_len);
+ memcpy (BUFF_FRONT (last_buff), base + cur_len,
+ len - cur_len);
+ BUFF_FRONT (last_buff) += len - cur_len;
+ }
+ }
+
+ if (pfile->buffer->cur < pfile->buffer->rlimit)
+ CPP_INCREMENT_LINE (pfile, 0);
+ pfile->buffer->need_line = true;
+
+ if (!_cpp_get_fresh_line (pfile))
+ {
+ source_location src_loc = token->src_loc;
+ token->type = CPP_EOF;
+ /* Tell the compiler the line number of the EOF token. */
+ token->src_loc = pfile->line_table->highest_line;
+ token->flags = BOL;
+ if (first_buff != NULL)
+ _cpp_release_buff (pfile, first_buff);
+ cpp_error_with_line (pfile, CPP_DL_ERROR, src_loc, 0,
+ "unterminated raw string");
+ return;
+ }
+
+ cur = base = pfile->buffer->cur;
+ }
+ else if (c == '\0' && !saw_NUL)
+ LINEMAP_POSITION_FOR_COLUMN (saw_NUL, pfile->line_table,
+ CPP_BUF_COLUMN (pfile->buffer, cur));
+ }
+
+ if (saw_NUL && !pfile->state.skipping)
+ cpp_error_with_line (pfile, CPP_DL_WARNING, saw_NUL, 0,
+ "null character(s) preserved in literal");
+
+ pfile->buffer->cur = cur;
+ if (first_buff == NULL)
+ create_literal (pfile, token, base, cur - base, type);
+ else
+ {
+ uchar *dest = _cpp_unaligned_alloc (pfile, total_len + (cur - base) + 1);
+
+ token->type = type;
+ token->val.str.len = total_len + (cur - base);
+ token->val.str.text = dest;
+ last_buff = first_buff;
+ while (last_buff != NULL)
+ {
+ memcpy (dest, last_buff->base,
+ BUFF_FRONT (last_buff) - last_buff->base);
+ dest += BUFF_FRONT (last_buff) - last_buff->base;
+ last_buff = last_buff->next;
+ }
+ _cpp_release_buff (pfile, first_buff);
+ memcpy (dest, base, cur - base);
+ dest[cur - base] = '\0';
+ }
+}
+
/* Lexes a string, character constant, or angle-bracketed header file
name. The stored string contains the spelling, including opening
- quote and leading any leading 'L', 'u' or 'U'. It returns the type
- of the literal, or CPP_OTHER if it was not properly terminated, or
- CPP_LESS for an unterminated header name which must be relexed as
- normal tokens.
+ quote and any leading 'L', 'u', 'U' or 'u8' and optional
+ 'R' modifier. It returns the type of the literal, or CPP_OTHER
+ if it was not properly terminated, or CPP_LESS for an unterminated
+ header name which must be relexed as normal tokens.
The spelling is NUL-terminated, but it is not guaranteed that this
is the first NUL since embedded NULs are preserved. */
@@ -636,12 +816,24 @@ lex_string (cpp_reader *pfile, cpp_token *token, const uchar *base)
cur = base;
terminator = *cur++;
- if (terminator == 'L' || terminator == 'u' || terminator == 'U')
+ if (terminator == 'L' || terminator == 'U')
terminator = *cur++;
- if (terminator == '\"')
+ else if (terminator == 'u')
+ {
+ terminator = *cur++;
+ if (terminator == '8')
+ terminator = *cur++;
+ }
+ if (terminator == 'R')
+ {
+ lex_raw_string (pfile, token, base, cur);
+ return;
+ }
+ if (terminator == '"')
type = (*base == 'L' ? CPP_WSTRING :
*base == 'U' ? CPP_STRING32 :
- *base == 'u' ? CPP_STRING16 : CPP_STRING);
+ *base == 'u' ? (base[1] == '8' ? CPP_UTF8STRING : CPP_STRING16)
+ : CPP_STRING);
else if (terminator == '\'')
type = (*base == 'L' ? CPP_WCHAR :
*base == 'U' ? CPP_CHAR32 :
@@ -1101,10 +1293,21 @@ _cpp_lex_direct (cpp_reader *pfile)
case 'L':
case 'u':
case 'U':
- /* 'L', 'u' or 'U' may introduce wide characters or strings. */
+ case 'R':
+ /* 'L', 'u', 'U', 'u8' or 'R' may introduce wide characters,
+ wide strings or raw strings. */
if (c == 'L' || CPP_OPTION (pfile, uliterals))
{
- if (*buffer->cur == '\'' || *buffer->cur == '"')
+ if ((*buffer->cur == '\'' && c != 'R')
+ || *buffer->cur == '"'
+ || (*buffer->cur == 'R'
+ && c != 'R'
+ && buffer->cur[1] == '"'
+ && CPP_OPTION (pfile, uliterals))
+ || (*buffer->cur == '8'
+ && c == 'u'
+ && (buffer->cur[1] == '"'
+ || (buffer->cur[1] == 'R' && buffer->cur[2] == '"'))))
{
lex_string (pfile, result, buffer->cur - 1);
break;
@@ -1120,7 +1323,7 @@ _cpp_lex_direct (cpp_reader *pfile)
case 'y': case 'z':
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
case 'G': case 'H': case 'I': case 'J': case 'K':
- case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'M': case 'N': case 'O': case 'P': case 'Q':
case 'S': case 'T': case 'V': case 'W': case 'X':
case 'Y': case 'Z':
result->type = CPP_NAME;
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 553cc2ab605..a82c4286f07 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -38,8 +38,8 @@ linemap_init (struct line_maps *set)
set->trace_includes = false;
set->depth = 0;
set->cache = 0;
- set->highest_location = 0;
- set->highest_line = 0;
+ set->highest_location = RESERVED_LOCATION_COUNT - 1;
+ set->highest_line = RESERVED_LOCATION_COUNT - 1;
set->max_column_hint = 0;
set->reallocator = 0;
}
diff --git a/libcpp/macro.c b/libcpp/macro.c
index f31805955c6..1d284cf9f8a 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -379,7 +379,8 @@ stringify_arg (cpp_reader *pfile, macro_arg *arg)
escape_it = (token->type == CPP_STRING || token->type == CPP_CHAR
|| token->type == CPP_WSTRING || token->type == CPP_WCHAR
|| token->type == CPP_STRING32 || token->type == CPP_CHAR32
- || token->type == CPP_STRING16 || token->type == CPP_CHAR16);
+ || token->type == CPP_STRING16 || token->type == CPP_CHAR16
+ || token->type == CPP_UTF8STRING);
/* Room for each char being written in octal, initial space and
final quote and NUL. */
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 1a295b5c1f4..e6ce3126a60 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-10-17 Joseph Myers <joseph@codesourcery.com>
+
+ * cpplib.pot: Regenerate.
+
2009-09-19 Joseph Myers <joseph@codesourcery.com>
* vi.po: Update.
diff --git a/libcpp/po/cpplib.pot b/libcpp/po/cpplib.pot
index 94adf5d08f5..7a5450ff9da 100644
--- a/libcpp/po/cpplib.pot
+++ b/libcpp/po/cpplib.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: 2009-04-22 16:24+0000\n"
+"POT-Creation-Date: 2009-10-17 13:36+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,7 +36,7 @@ msgid "character 0x%lx is not in the basic source character set\n"
msgstr ""
#: charset.c:790
-#: charset.c:1398
+#: charset.c:1407
msgid "converting to execution character set"
msgstr ""
@@ -50,355 +50,355 @@ msgstr ""
msgid "Character %x might not be NFKC"
msgstr ""
-#: charset.c:980
+#: charset.c:986
msgid "universal character names are only valid in C++ and C99"
msgstr ""
-#: charset.c:983
+#: charset.c:989
#, c-format
msgid "the meaning of '\\%c' is different in traditional C"
msgstr ""
-#: charset.c:992
+#: charset.c:998
msgid "In _cpp_valid_ucn but not a UCN"
msgstr ""
-#: charset.c:1017
+#: charset.c:1023
#, c-format
msgid "incomplete universal character name %.*s"
msgstr ""
-#: charset.c:1029
+#: charset.c:1038
#, c-format
msgid "%.*s is not a valid universal character"
msgstr ""
-#: charset.c:1039
+#: charset.c:1048
#: lex.c:486
msgid "'$' in identifier or number"
msgstr ""
-#: charset.c:1049
+#: charset.c:1058
#, c-format
msgid "universal character %.*s is not valid in an identifier"
msgstr ""
-#: charset.c:1053
+#: charset.c:1062
#, c-format
msgid "universal character %.*s is not valid at the start of an identifier"
msgstr ""
-#: charset.c:1085
-#: charset.c:1628
+#: charset.c:1094
+#: charset.c:1637
msgid "converting UCN to source character set"
msgstr ""
-#: charset.c:1089
+#: charset.c:1098
msgid "converting UCN to execution character set"
msgstr ""
-#: charset.c:1161
+#: charset.c:1170
msgid "the meaning of '\\x' is different in traditional C"
msgstr ""
-#: charset.c:1178
+#: charset.c:1187
msgid "\\x used with no following hex digits"
msgstr ""
-#: charset.c:1185
+#: charset.c:1194
msgid "hex escape sequence out of range"
msgstr ""
-#: charset.c:1223
+#: charset.c:1232
msgid "octal escape sequence out of range"
msgstr ""
-#: charset.c:1289
+#: charset.c:1298
msgid "the meaning of '\\a' is different in traditional C"
msgstr ""
-#: charset.c:1296
+#: charset.c:1305
#, c-format
msgid "non-ISO-standard escape sequence, '\\%c'"
msgstr ""
-#: charset.c:1304
+#: charset.c:1313
#, c-format
-msgid "unknown escape sequence '\\%c'"
+msgid "unknown escape sequence: '\\%c'"
msgstr ""
-#: charset.c:1312
+#: charset.c:1321
#, c-format
msgid "unknown escape sequence: '\\%s'"
msgstr ""
-#: charset.c:1319
+#: charset.c:1328
msgid "converting escape sequence to execution character set"
msgstr ""
-#: charset.c:1463
-#: charset.c:1527
+#: charset.c:1472
+#: charset.c:1536
msgid "character constant too long for its type"
msgstr ""
-#: charset.c:1466
+#: charset.c:1475
msgid "multi-character character constant"
msgstr ""
-#: charset.c:1566
+#: charset.c:1575
msgid "empty character constant"
msgstr ""
-#: charset.c:1675
+#: charset.c:1684
#, c-format
msgid "failure to convert %s to %s"
msgstr ""
-#: directives.c:219
-#: directives.c:245
+#: directives.c:220
+#: directives.c:246
#, c-format
msgid "extra tokens at end of #%s directive"
msgstr ""
-#: directives.c:351
+#: directives.c:352
#, c-format
msgid "#%s is a GCC extension"
msgstr ""
-#: directives.c:355
+#: directives.c:356
#, c-format
msgid "#%s is a deprecated GCC extension"
msgstr ""
-#: directives.c:369
+#: directives.c:370
msgid "suggest not using #elif in traditional C"
msgstr ""
-#: directives.c:372
+#: directives.c:373
#, c-format
msgid "traditional C ignores #%s with the # indented"
msgstr ""
-#: directives.c:376
+#: directives.c:377
#, c-format
msgid "suggest hiding #%s from traditional C with an indented #"
msgstr ""
-#: directives.c:402
+#: directives.c:403
msgid "embedding a directive within macro arguments is not portable"
msgstr ""
-#: directives.c:422
+#: directives.c:423
msgid "style of line directive is a GCC extension"
msgstr ""
-#: directives.c:477
+#: directives.c:478
#, c-format
msgid "invalid preprocessing directive #%s"
msgstr ""
-#: directives.c:545
+#: directives.c:546
msgid "\"defined\" cannot be used as a macro name"
msgstr ""
-#: directives.c:551
+#: directives.c:552
#, c-format
msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
msgstr ""
-#: directives.c:554
+#: directives.c:555
#, c-format
msgid "no macro name given in #%s directive"
msgstr ""
-#: directives.c:557
+#: directives.c:558
msgid "macro names must be identifiers"
msgstr ""
-#: directives.c:606
+#: directives.c:607
#, c-format
msgid "undefining \"%s\""
msgstr ""
-#: directives.c:661
+#: directives.c:662
msgid "missing terminating > character"
msgstr ""
-#: directives.c:716
+#: directives.c:720
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr ""
-#: directives.c:760
+#: directives.c:766
#, c-format
msgid "empty filename in #%s"
msgstr ""
-#: directives.c:770
+#: directives.c:776
msgid "#include nested too deeply"
msgstr ""
-#: directives.c:811
+#: directives.c:817
msgid "#include_next in primary source file"
msgstr ""
-#: directives.c:837
+#: directives.c:843
#, c-format
msgid "invalid flag \"%s\" in line directive"
msgstr ""
-#: directives.c:897
+#: directives.c:903
msgid "unexpected end of file after #line"
msgstr ""
-#: directives.c:900
+#: directives.c:906
#, c-format
msgid "\"%s\" after #line is not a positive integer"
msgstr ""
-#: directives.c:906
-#: directives.c:908
+#: directives.c:912
+#: directives.c:914
msgid "line number out of range"
msgstr ""
-#: directives.c:921
-#: directives.c:1001
+#: directives.c:927
+#: directives.c:1007
#, c-format
msgid "\"%s\" is not a valid filename"
msgstr ""
-#: directives.c:961
+#: directives.c:967
#, c-format
msgid "\"%s\" after # is not a positive integer"
msgstr ""
-#: directives.c:1045
+#: directives.c:1059
#, c-format
msgid "%s"
msgstr ""
-#: directives.c:1069
+#: directives.c:1083
#, c-format
msgid "invalid #%s directive"
msgstr ""
-#: directives.c:1132
+#: directives.c:1146
#, c-format
msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
msgstr ""
-#: directives.c:1141
+#: directives.c:1155
#, c-format
msgid "registering pragma \"%s\" with name expansion and no namespace"
msgstr ""
-#: directives.c:1159
+#: directives.c:1173
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr ""
-#: directives.c:1162
+#: directives.c:1176
#, c-format
msgid "#pragma %s %s is already registered"
msgstr ""
-#: directives.c:1165
+#: directives.c:1179
#, c-format
msgid "#pragma %s is already registered"
msgstr ""
-#: directives.c:1195
+#: directives.c:1209
msgid "registering pragma with NULL handler"
msgstr ""
-#: directives.c:1405
+#: directives.c:1419
msgid "#pragma once in main file"
msgstr ""
-#: directives.c:1428
+#: directives.c:1442
msgid "invalid #pragma GCC poison directive"
msgstr ""
-#: directives.c:1437
+#: directives.c:1451
#, c-format
msgid "poisoning existing macro \"%s\""
msgstr ""
-#: directives.c:1456
+#: directives.c:1470
msgid "#pragma system_header ignored outside include file"
msgstr ""
-#: directives.c:1480
+#: directives.c:1495
#, c-format
msgid "cannot find source file %s"
msgstr ""
-#: directives.c:1484
+#: directives.c:1499
#, c-format
msgid "current file is older than %s"
msgstr ""
-#: directives.c:1668
+#: directives.c:1683
msgid "_Pragma takes a parenthesized string literal"
msgstr ""
-#: directives.c:1769
+#: directives.c:1784
msgid "#else without #if"
msgstr ""
-#: directives.c:1774
+#: directives.c:1789
msgid "#else after #else"
msgstr ""
-#: directives.c:1776
-#: directives.c:1809
+#: directives.c:1791
+#: directives.c:1824
msgid "the conditional began here"
msgstr ""
-#: directives.c:1802
+#: directives.c:1817
msgid "#elif without #if"
msgstr ""
-#: directives.c:1807
+#: directives.c:1822
msgid "#elif after #else"
msgstr ""
-#: directives.c:1845
+#: directives.c:1860
msgid "#endif without #if"
msgstr ""
-#: directives.c:1922
+#: directives.c:1940
msgid "missing '(' after predicate"
msgstr ""
-#: directives.c:1937
+#: directives.c:1955
msgid "missing ')' to complete answer"
msgstr ""
-#: directives.c:1957
+#: directives.c:1975
msgid "predicate's answer is empty"
msgstr ""
-#: directives.c:1984
+#: directives.c:2002
msgid "assertion without predicate"
msgstr ""
-#: directives.c:1986
+#: directives.c:2005
msgid "predicate must be an identifier"
msgstr ""
-#: directives.c:2072
+#: directives.c:2091
#, c-format
msgid "\"%s\" re-asserted"
msgstr ""
-#: directives.c:2371
+#: directives.c:2391
#, c-format
msgid "unterminated #%s"
msgstr ""
#: directives-only.c:222
-#: lex.c:1149
+#: lex.c:1155
#: traditional.c:163
msgid "unterminated comment"
msgstr ""
@@ -412,243 +412,243 @@ msgstr ""
msgid "%s: %s"
msgstr ""
-#: expr.c:278
+#: expr.c:279
msgid "too many decimal points in number"
msgstr ""
-#: expr.c:307
-#: expr.c:389
+#: expr.c:308
+#: expr.c:390
msgid "fixed-point constants are a GCC extension"
msgstr ""
-#: expr.c:320
+#: expr.c:321
#, c-format
msgid "invalid digit \"%c\" in binary constant"
msgstr ""
-#: expr.c:322
+#: expr.c:323
#, c-format
msgid "invalid digit \"%c\" in octal constant"
msgstr ""
-#: expr.c:330
+#: expr.c:331
msgid "invalid prefix \"0b\" for floating constant"
msgstr ""
-#: expr.c:336
+#: expr.c:337
msgid "use of C99 hexadecimal floating constant"
msgstr ""
-#: expr.c:345
+#: expr.c:346
msgid "exponent has no digits"
msgstr ""
-#: expr.c:352
+#: expr.c:353
msgid "hexadecimal floating constants require an exponent"
msgstr ""
-#: expr.c:358
+#: expr.c:359
#, c-format
msgid "invalid suffix \"%.*s\" on floating constant"
msgstr ""
-#: expr.c:368
-#: expr.c:417
+#: expr.c:369
+#: expr.c:418
#, c-format
msgid "traditional C rejects the \"%.*s\" suffix"
msgstr ""
-#: expr.c:376
+#: expr.c:377
msgid "suffix for double constant is a GCC extension"
msgstr ""
-#: expr.c:382
+#: expr.c:383
#, c-format
msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
msgstr ""
-#: expr.c:393
+#: expr.c:394
msgid "decimal float constants are a GCC extension"
msgstr ""
-#: expr.c:403
+#: expr.c:404
#, c-format
msgid "invalid suffix \"%.*s\" on integer constant"
msgstr ""
-#: expr.c:426
+#: expr.c:427
msgid "use of C++0x long long integer constant"
msgstr ""
-#: expr.c:435
+#: expr.c:436
msgid "imaginary constants are a GCC extension"
msgstr ""
-#: expr.c:438
+#: expr.c:439
msgid "binary constants are a GCC extension"
msgstr ""
-#: expr.c:531
+#: expr.c:532
msgid "integer constant is too large for its type"
msgstr ""
-#: expr.c:543
+#: expr.c:563
msgid "integer constant is so large that it is unsigned"
msgstr ""
-#: expr.c:638
+#: expr.c:658
msgid "missing ')' after \"defined\""
msgstr ""
-#: expr.c:645
+#: expr.c:665
msgid "operator \"defined\" requires an identifier"
msgstr ""
-#: expr.c:653
+#: expr.c:673
#, c-format
msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
msgstr ""
-#: expr.c:663
+#: expr.c:683
msgid "this use of \"defined\" may not be portable"
msgstr ""
-#: expr.c:716
+#: expr.c:736
msgid "floating constant in preprocessor expression"
msgstr ""
-#: expr.c:722
+#: expr.c:742
msgid "imaginary number in preprocessor expression"
msgstr ""
-#: expr.c:769
+#: expr.c:789
#, c-format
msgid "\"%s\" is not defined"
msgstr ""
-#: expr.c:781
+#: expr.c:801
msgid "assertions are a GCC extension"
msgstr ""
-#: expr.c:784
+#: expr.c:804
msgid "assertions are a deprecated extension"
msgstr ""
-#: expr.c:917
-#: expr.c:946
+#: expr.c:937
+#: expr.c:966
#, c-format
msgid "missing binary operator before token \"%s\""
msgstr ""
-#: expr.c:937
+#: expr.c:957
#, c-format
msgid "token \"%s\" is not valid in preprocessor expressions"
msgstr ""
-#: expr.c:954
+#: expr.c:974
msgid "missing expression between '(' and ')'"
msgstr ""
-#: expr.c:957
+#: expr.c:977
#, c-format
msgid "%s with no expression"
msgstr ""
-#: expr.c:960
+#: expr.c:980
#, c-format
msgid "operator '%s' has no right operand"
msgstr ""
-#: expr.c:965
+#: expr.c:985
#, c-format
msgid "operator '%s' has no left operand"
msgstr ""
-#: expr.c:991
+#: expr.c:1011
msgid " ':' without preceding '?'"
msgstr ""
-#: expr.c:1019
+#: expr.c:1039
#, c-format
msgid "unbalanced stack in %s"
msgstr ""
-#: expr.c:1039
+#: expr.c:1059
#, c-format
msgid "impossible operator '%u'"
msgstr ""
-#: expr.c:1140
+#: expr.c:1160
msgid "missing ')' in expression"
msgstr ""
-#: expr.c:1169
+#: expr.c:1189
msgid "'?' without following ':'"
msgstr ""
-#: expr.c:1179
+#: expr.c:1199
msgid "integer overflow in preprocessor expression"
msgstr ""
-#: expr.c:1184
+#: expr.c:1204
msgid "missing '(' in expression"
msgstr ""
-#: expr.c:1216
+#: expr.c:1236
#, c-format
msgid "the left operand of \"%s\" changes sign when promoted"
msgstr ""
-#: expr.c:1221
+#: expr.c:1241
#, c-format
msgid "the right operand of \"%s\" changes sign when promoted"
msgstr ""
-#: expr.c:1480
+#: expr.c:1500
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: expr.c:1563
+#: expr.c:1583
msgid "comma operator in operand of #if"
msgstr ""
-#: expr.c:1695
+#: expr.c:1719
msgid "division by zero in #if"
msgstr ""
-#: files.c:457
+#: files.c:463
msgid "NULL directory in find_file"
msgstr ""
-#: files.c:494
+#: files.c:500
msgid "one or more PCH files were found, but they were invalid"
msgstr ""
-#: files.c:497
+#: files.c:503
msgid "use -Winvalid-pch for more information"
msgstr ""
-#: files.c:588
+#: files.c:594
#, c-format
msgid "%s is a block device"
msgstr ""
-#: files.c:605
+#: files.c:611
#, c-format
msgid "%s is too large"
msgstr ""
-#: files.c:640
+#: files.c:646
#, c-format
msgid "%s is shorter than expected"
msgstr ""
-#: files.c:875
+#: files.c:881
#, c-format
msgid "no include path in which to search for %s"
msgstr ""
-#: files.c:1286
+#: files.c:1306
msgid "Multiple include guards may be useful for:\n"
msgstr ""
@@ -740,28 +740,33 @@ msgstr ""
msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
msgstr ""
-#: lex.c:675
+#: lex.c:567
+#, c-format
+msgid "identifier \"%s\" is a special operator name in C++"
+msgstr ""
+
+#: lex.c:681
msgid "null character(s) preserved in literal"
msgstr ""
-#: lex.c:678
+#: lex.c:684
#, c-format
msgid "missing terminating %c character"
msgstr ""
-#: lex.c:1160
+#: lex.c:1166
msgid "C++ style comments are not allowed in ISO C90"
msgstr ""
-#: lex.c:1162
+#: lex.c:1168
msgid "(this will be reported only once per input file)"
msgstr ""
-#: lex.c:1167
+#: lex.c:1173
msgid "multi-line comment"
msgstr ""
-#: lex.c:1487
+#: lex.c:1493
#, c-format
msgid "unspellable token %s"
msgstr ""
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index b7c75e033ea..bf51dbcdd6d 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/41683
+ * io/format.c (parse_format_list): Allow a repeat specifier immediately
+ after a P specifier.
+
2009-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/38439
diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c
index 97bd2da77ba..0ee60ea9012 100644
--- a/libgfortran/io/format.c
+++ b/libgfortran/io/format.c
@@ -706,7 +706,8 @@ parse_format_list (st_parameter_dt *dtp, bool *save_ok)
goto data_desc;
}
- if (t != FMT_COMMA && t != FMT_RPAREN && t != FMT_SLASH)
+ if (t != FMT_COMMA && t != FMT_RPAREN && t != FMT_SLASH
+ && t != FMT_POSINT)
{
fmt->error = "Comma required after P descriptor";
goto finished;
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 682da80e297..ac9bb19b55a 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR libgomp/41418
+ * configure.ac: Set FC to "no" if $GFORTRAN starts with "no"
+ or a hyphen (happens with fortran language disabled).
+ * configure: Regenerate.
+
2009-09-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* acinclude.m4 (LIBGOMP_CHECK_LINKER_FEATURES): Avoid 'head',
diff --git a/libgomp/configure b/libgomp/configure
index d138f687983..a0a93d6d328 100755
--- a/libgomp/configure
+++ b/libgomp/configure
@@ -11340,7 +11340,12 @@ fi
# We need gfortran to compile parts of the library
# We can't use AC_PROG_FC because it expects a fully working gfortran.
#AC_PROG_FC(gfortran)
-FC="$GFORTRAN"
+case `echo $GFORTRAN` in
+ -* | no* )
+ FC=no ;;
+ *)
+ FC="$GFORTRAN" ;;
+esac
ac_ext=${ac_fc_srcext-f}
ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
@@ -12351,11 +12356,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12354: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12359: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12358: \$? = $ac_status" >&5
+ echo "$as_me:12363: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -12450,11 +12455,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12453: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12458: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12457: \$? = $ac_status" >&5
+ echo "$as_me:12462: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -12502,11 +12507,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12505: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12510: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12509: \$? = $ac_status" >&5
+ echo "$as_me:12514: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
diff --git a/libgomp/configure.ac b/libgomp/configure.ac
index e0bdf2b9ac9..792c9f52068 100644
--- a/libgomp/configure.ac
+++ b/libgomp/configure.ac
@@ -142,7 +142,12 @@ AM_MAINTAINER_MODE
# We need gfortran to compile parts of the library
# We can't use AC_PROG_FC because it expects a fully working gfortran.
#AC_PROG_FC(gfortran)
-FC="$GFORTRAN"
+case `echo $GFORTRAN` in
+ -* | no* )
+ FC=no ;;
+ *)
+ FC="$GFORTRAN" ;;
+esac
AC_PROG_FC(gfortran)
FCFLAGS="$FCFLAGS -Wall"
diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
index a198fed658a..7f2c823f73e 100644
--- a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
+++ b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
@@ -23,7 +23,7 @@ int main(void)
}
/* Check that parallel code generation part make the right answer. */
-/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 2 "graphite" } } */
/* { dg-final { cleanup-tree-dump "graphite" } } */
/* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */
/* { dg-final { cleanup-tree-dump "parloops" } } */
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 78aaa3e473a..4f9a6c5afeb 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-22 Matthias Klose <doko@ubuntu.com>
+
+ * configure.ac: Rename --enable-plugin to --enable-browser-plugin,
+ pass --{en,dis}able-plugin to the classpath configure.
+ * configure: Regenerate.
+
2009-09-30 Dave Korn <dave.korn.cygwin@gmail.com>
* configure.host (libgcj_sublib_ltflags): New variable.
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index 475e6bdc1b3..a2df28c46cf 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-22 Richard Guenther <rguenther@suse.de>
+
+ PR cp-tools/39177
+ * tools/gnu/classpath/tools/jar/Creator.java (writeCommandLineEntries):
+ Do not use uninitialized manifest.
+ * tools/classes/gnu/classpath/tools/jar/Creator.class: Re-generated.
+
2009-08-26 Dave Korn <dave.korn.cygwin@gmail.com>
* ltmain.sh (removedotparts): Don't use comma as 's' separator.
diff --git a/libjava/classpath/tools/classes/gnu/classpath/tools/jar/Creator.class b/libjava/classpath/tools/classes/gnu/classpath/tools/jar/Creator.class
index 517fe0c7a33..ad4cc74f732 100644
--- a/libjava/classpath/tools/classes/gnu/classpath/tools/jar/Creator.class
+++ b/libjava/classpath/tools/classes/gnu/classpath/tools/jar/Creator.class
Binary files differ
diff --git a/libjava/classpath/tools/gnu/classpath/tools/jar/Creator.java b/libjava/classpath/tools/gnu/classpath/tools/jar/Creator.java
index a6b6112caa1..6ffce18ac05 100644
--- a/libjava/classpath/tools/gnu/classpath/tools/jar/Creator.java
+++ b/libjava/classpath/tools/gnu/classpath/tools/jar/Creator.java
@@ -216,11 +216,14 @@ public class Creator
manifest = createManifest(parameters);
/* If no version is specified, provide the same manifest version default
* as Sun's jar tool */
- Attributes attr = manifest.getMainAttributes();
- if (attr.getValue(Attributes.Name.MANIFEST_VERSION) == null)
- attr.putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0");
- attr.putValue("Created-By", System.getProperty("java.version") +
+ if (parameters.wantManifest)
+ {
+ Attributes attr = manifest.getMainAttributes();
+ if (attr.getValue(Attributes.Name.MANIFEST_VERSION) == null)
+ attr.putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0");
+ attr.putValue("Created-By", System.getProperty("java.version") +
" (" + System.getProperty("java.vendor") + ")");
+ }
outputStream = new JarOutputStream(os, manifest);
// FIXME: this sets the method too late for the manifest file.
outputStream.setMethod(parameters.storageMode);
diff --git a/libjava/configure b/libjava/configure
index 95d21af1e5f..8234c8b13df 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -1050,7 +1050,7 @@ enable_multilib
with_cross_host
with_newlib
enable_version_specific_runtime_libs
-enable_plugin
+enable_browser_plugin
enable_gconf_peer
with_antlr_jar
enable_gjdoc
@@ -1739,7 +1739,7 @@ Optional Features:
--enable-version-specific-runtime-libs
specify that runtime libraries should be installed
in a compiler-specific directory
- --enable-plugin build gcjwebplugin web browser plugin
+ --enable-browser-plugin build gcjwebplugin web browser plugin
--enable-gconf-peer compile GConf native peers for util.preferences
--disable-gjdoc compile GJDoc (disabled by --disable-gjdoc)
default=yes
@@ -3363,15 +3363,15 @@ else
fi
-# Check whether --enable-plugin was given.
-if test "${enable_plugin+set}" = set; then :
- enableval=$enable_plugin; case "$enableval" in
- yes) plugin_enabled=yes ;;
- no) plugin_enabled=no ;;
- *) as_fn_error "Unknown argument to enable/disable plugin" "$LINENO" 5;;
+# Check whether --enable-browser-plugin was given.
+if test "${enable_browser_plugin+set}" = set; then :
+ enableval=$enable_browser_plugin; case "$enableval" in
+ yes) browser_plugin_enabled=yes ;;
+ no) browser_plugin_enabled=no ;;
+ *) as_fn_error "Unknown argument to enable/disable browser plugin" "$LINENO" 5;;
esac
else
- plugin_enabled=no
+ browser_plugin_enabled=no
fi
@@ -6833,8 +6833,10 @@ ac_configure_args="$ac_configure_args --with-vm-classes=$dir1:$dir2"
ac_configure_args="$ac_configure_args --disable-core-jni"
ac_configure_args="$ac_configure_args --disable-examples"
ac_configure_args="$ac_configure_args --with-glibj=build"
-if test "$plugin_enabled" != yes; then
+if test "$browser_plugin_enabled" != yes; then
ac_configure_args="$ac_configure_args --disable-plugin"
+else
+ ac_configure_args="$ac_configure_args --enable-plugin"
fi
if test "$gconf_enabled" != yes; then
ac_configure_args="$ac_configure_args --disable-gconf-peer"
@@ -7504,13 +7506,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:7507: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:7509: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:7510: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:7512: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:7513: output\"" >&5)
+ (eval echo "\"\$as_me:7515: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -8705,7 +8707,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 8708 "configure"' > conftest.$ac_ext
+ echo '#line 8710 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -10639,11 +10641,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10642: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10644: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:10646: \$? = $ac_status" >&5
+ echo "$as_me:10648: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -10978,11 +10980,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:10981: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:10983: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:10985: \$? = $ac_status" >&5
+ echo "$as_me:10987: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -11083,11 +11085,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:11086: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:11088: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:11090: \$? = $ac_status" >&5
+ echo "$as_me:11092: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -11138,11 +11140,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:11141: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:11143: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:11145: \$? = $ac_status" >&5
+ echo "$as_me:11147: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13547,7 +13549,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13550 "configure"
+#line 13552 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13643,7 +13645,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13646 "configure"
+#line 13648 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -15605,11 +15607,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15608: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15610: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15612: \$? = $ac_status" >&5
+ echo "$as_me:15614: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15704,11 +15706,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15707: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15709: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15711: \$? = $ac_status" >&5
+ echo "$as_me:15713: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -15756,11 +15758,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15759: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15761: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15763: \$? = $ac_status" >&5
+ echo "$as_me:15765: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17172,11 +17174,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17175: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17177: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17179: \$? = $ac_status" >&5
+ echo "$as_me:17181: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17505,11 +17507,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17508: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17510: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17512: \$? = $ac_status" >&5
+ echo "$as_me:17514: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17604,11 +17606,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17607: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17609: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17611: \$? = $ac_status" >&5
+ echo "$as_me:17613: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17656,11 +17658,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17659: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17661: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17663: \$? = $ac_status" >&5
+ echo "$as_me:17665: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -19258,7 +19260,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then :
enableval=$enable_sjlj_exceptions; :
else
cat > conftest.$ac_ext << EOF
-#line 19261 "configure"
+#line 19263 "configure"
struct S { ~S(); };
void bar();
void foo()
diff --git a/libjava/configure.ac b/libjava/configure.ac
index bfd33fd5154..be143c5b833 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -55,15 +55,15 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
[version_specific_libs=no]
)
-AC_ARG_ENABLE(plugin,
- AS_HELP_STRING([--enable-plugin],
+AC_ARG_ENABLE(browser-plugin,
+ AS_HELP_STRING([--enable-browser-plugin],
[build gcjwebplugin web browser plugin]),
[case "$enableval" in
- yes) plugin_enabled=yes ;;
- no) plugin_enabled=no ;;
- *) AC_MSG_ERROR([Unknown argument to enable/disable plugin]);;
+ yes) browser_plugin_enabled=yes ;;
+ no) browser_plugin_enabled=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable browser plugin]);;
esac],
- [plugin_enabled=no]
+ [browser_plugin_enabled=no]
)
AC_ARG_ENABLE(gconf-peer,
@@ -491,8 +491,10 @@ ac_configure_args="$ac_configure_args --disable-core-jni"
dnl FIXME?
ac_configure_args="$ac_configure_args --disable-examples"
ac_configure_args="$ac_configure_args --with-glibj=build"
-if test "$plugin_enabled" != yes; then
+if test "$browser_plugin_enabled" != yes; then
ac_configure_args="$ac_configure_args --disable-plugin"
+else
+ ac_configure_args="$ac_configure_args --enable-plugin"
fi
if test "$gconf_enabled" != yes; then
ac_configure_args="$ac_configure_args --disable-gconf-peer"
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e68d69d86bb..c13bb4005cc 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,162 @@
+009-10-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/41773
+ Revert:
+ 2009-10-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/basic_string.h (_S_construct(const _CharT*, size_type,
+ const _Alloc&)): New, declare.
+ (_S_construct(_CharT*, _CharT*, const _Alloc&),
+ _S_construct(const _CharT*, const _CharT*, const _Alloc&),
+ _S_construct(iterator, iterator, const _Alloc&),
+ _S_construct(const_iterator, const_iterator, const _Alloc&)): New,
+ forward to the latter.
+ * include/bits/basic_string.tcc (_S_construct(const _CharT*,
+ size_type, const _Alloc&)): Define.
+ (basic_string(const basic_string&, size_type, size_type),
+ basic_string(const basic_string&, size_type, size_type,
+ const _Alloc&), basic_string(const _CharT*, size_type,
+ const _Alloc&), basic_string(const _CharT*, const _Alloc&),
+ basic_string(initializer_list<>, const _Alloc&)): Call the latter.
+ * config/abi/pre/gnu.ver: Remove recently added exports.
+ * src/string-inst.cc: Remove instantiations.
+
+2009-10-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/41763
+ * include/bits/valarray_array.h (__valarray_default_construct,
+ __valarray_fill_construct, __valarray_copy_construct, __valarray_sum
+ __valarray_destroy_elements, __valarray_product): Do not qualify with
+ __restrict__ pointers accessing data also accessed by other pointers.
+
+2009-10-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/basic_string.h (_S_construct(const _CharT*, size_type,
+ const _Alloc&)): New, declare.
+ (_S_construct(_CharT*, _CharT*, const _Alloc&),
+ _S_construct(const _CharT*, const _CharT*, const _Alloc&),
+ _S_construct(iterator, iterator, const _Alloc&),
+ _S_construct(const_iterator, const_iterator, const _Alloc&)): New,
+ forward to the latter.
+ * include/bits/basic_string.tcc (_S_construct(const _CharT*,
+ size_type, const _Alloc&)): Define.
+ (basic_string(const basic_string&, size_type, size_type),
+ basic_string(const basic_string&, size_type, size_type,
+ const _Alloc&), basic_string(const _CharT*, size_type,
+ const _Alloc&), basic_string(const _CharT*, const _Alloc&),
+ basic_string(initializer_list<>, const _Alloc&)): Call the latter.
+ * config/abi/pre/gnu.ver: Remove recently added exports.
+ * src/string-inst.cc: Remove instantiations.
+
+2009-10-15 Phil Muldoon <pmuldoon@redhat.com>
+
+ * python/libstdcxx/v6/printers.py (StdTuplePrinter): New printer.
+ (build_libstdcxx_dictionary): Add StdTuplePrinter registration.
+
+2009-10-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/c_compatibility/stdatomic.h: Include cstdatomic if
+ __cplusplus.
+
+2009-10-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/40654
+ PR libstdc++/40826
+ * src/atomic.cc (atomic_flag_test_and_set_explicit): Add
+ static_cast from base to derived.
+ (atomic_flag_clear_explicit): Same.
+ * include/bits/atomic_2.h (__atomic2::atomic_flag): Public derivation.
+ Remove value type constructor.
+ * include/bits/atomic_0.h (__atomic0::atomic_flag): Same.
+ * include/std/future (_Future_state): Use ATOMIC_FLAG_INIT to
+ initialized the atomic_flag member.
+
+2009-10-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/authors.xml: Update.
+ * doc/xml/manual/intro.xml: Move test section...
+ * doc/xml/manual/appendix_porting.xml: ...here.
+ * doc/xml/manual/diagnostics.xml: Edit.
+ * doc/xml/manual/using.xml: Break out exception section.
+ * doc/xml/manual/using_exceptions.xml: New.
+ * doc/html: Regenerate.
+
+2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * config/abi/pre/gnu.ver: Export the _S_construct<> helpers.
+
+2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/basic_string.h (operator+=(initializer_list<>),
+ append(initializer_list<>)): Forward to the append overload taking
+ a const CharT* pointer and a size, thus avoiding instantiating
+ unnecessarily in the built library the overload taking a pair of
+ iterators.
+ (operator=(initializer_list<>), assign(initializer_list<>)): Likewise
+ for assign.
+ (insert(iterator, initializer_list<>): Likewise for insert.
+
+2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/c++config: Do not disable extern templates for string
+ in plain parallel-mode and in profile-mode; add comment explaining
+ _GLIBCXX_EXTERN_TEMPLATE == -1.
+ * testsuite/ext/profile/mutex_extensions.cc: Adjust dg-error line.
+
+2009-10-14 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust expected.
+
+2009-10-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/parallel/for_each_selectors.h: Minor uglification and
+ stylistic fixes.
+
+2009-10-13 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/precompiled/stdc++.h: Include <initializer_list>
+ for completeness.
+
+2009-10-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/random.h (class linear_congruential_engine,
+ class mersenne_twister_engine, class subtract_with_carry_engine,
+ class discard_block_engine, class independent_bits_engine,
+ class shuffle_order_engine, class uniform_int_distribution,
+ class binomial_distribution, class geometric_distribution,
+ class negative_binomial_distribution, class poisson_distribution,
+ class discrete_distribution): Do not use simulated concept checks,
+ tidy startic_asserts on argument types and ranges.
+ (class uniform_real_distribution, class normal_distribution,
+ class lognormal_distribution, class gamma_distribution,
+ class chi_squared_distribution, class cauchy_distribution,
+ class fisher_f_distribution, class student_t_distribution,
+ class exponential_distribution, class weibull_distribution,
+ class extreme_value_distribution, class piecewise_linear_distribution,
+ class piecewise_constant_distribution): Add static_assert on
+ template argument type.
+ * include/std/random: Do not include <bits/concept_check.h>.
+ * testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc:
+ Fix.
+ * testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/operators/
+ equal.cc: Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/operators/
+ serialize.cc: Likewise.
+ * testsuite/26_numerics/random/linear_congruential_engine/
+ requirements/non_uint_neg.cc: Tweak.
+
2009-10-10 Gerald Pfeifer <gerald@pfeifer.com>
* doc/xml/manual/messages.xml: Update GNU gettext reference.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index bad07588b82..2337a5a3fbf 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1039,6 +1039,10 @@ GLIBCXX_3.4.14 {
_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv;
_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv;
+ # string|wstring ::_S_construct<> helpers
+ _ZNSs12_S_constructI*;
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
+
} GLIBCXX_3.4.13;
# Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html
index a1f1f289b19..fd511df55dd 100644
--- a/libstdc++-v3/doc/html/api.html
+++ b/libstdc++-v3/doc/html/api.html
@@ -5,7 +5,7 @@
<a class="ulink" href="http://www.fsf.org/" target="_top">FSF
</a>
- </p></div><div><div class="legalnotice"><a id="id485923"></a><p>
+ </p></div><div><div class="legalnotice"><a id="id596116"></a><p>
<a class="link" href="manual/license.html" title="License">License
</a>
</p></div></div></div><hr /></div><p>
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index b0aa6be6fd7..7d11f768464 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; C++&#10; , &#10; ABI&#10; , &#10; version&#10; , &#10; dynamic&#10; , &#10; shared&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; C++&#10; , &#10; ABI&#10; , &#10; version&#10; , &#10; dynamic&#10; , &#10; shared&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
Porting and Maintenance
</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.abi"></a>ABI Policy and Guidelines</h2></div></div></div><p>
@@ -464,60 +464,60 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<a class="ulink" href="http://gcc.gnu.org/PR24660" target="_top">24660: versioning weak symbols in libstdc++</a>
</p><p>
<a class="ulink" href="http://gcc.gnu.org/PR19664" target="_top">19664: libstdc++ headers should have pop/push of the visibility around the declarations</a>
-</p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id390229"></a><p><span class="title"><i>
+</p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id658186"></a><p><span class="title"><i>
ABIcheck, a vague idea of checking ABI compatibility
</i>. </span><span class="biblioid">
<a class="ulink" href="http://abicheck.sourceforge.net/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id390246"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id658203"></a><p><span class="title"><i>
C++ ABI Reference
</i>. </span><span class="biblioid">
<a class="ulink" href="http://www.codesourcery.com/public/cxx-abi/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id390263"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id658220"></a><p><span class="title"><i>
Intel® Compilers for Linux* -Compatibility with the GNU Compilers
</i>. </span><span class="biblioid">
<a class="ulink" href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497386"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id658238"></a><p><span class="title"><i>
Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386)
</i>. </span><span class="biblioid">
<a class="ulink" href="http://docs.sun.com/app/docs/doc/817-1984" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497402"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id658254"></a><p><span class="title"><i>
Sun Solaris 2.9 : C++ Migration Guide (document 816-2459)
</i>. </span><span class="biblioid">
<a class="ulink" href="http://docs.sun.com/app/docs/doc/819-5266" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497420"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id658272"></a><p><span class="title"><i>
How to Write Shared Libraries
</i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="biblioid">
<a class="ulink" href="http://people.redhat.com/drepper/dsohowto.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497448"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id675905"></a><p><span class="title"><i>
C++ ABI for the ARM Architecture
</i>. </span><span class="biblioid">
<a class="ulink" href="http://www.arm.com/miscPDFs/8033.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497465"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id675922"></a><p><span class="title"><i>
Dynamic Shared Objects: Survey and Issues
</i>. </span><span class="subtitle">
ISO C++ J16/06-0046
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497497"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id675954"></a><p><span class="title"><i>
Versioning With Namespaces
</i>. </span><span class="subtitle">
ISO C++ J16/06-0083
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id497530"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id675987"></a><p><span class="title"><i>
Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems
</i>. </span><span class="subtitle">
SYRCoSE 2009
. </span><span class="author"><span class="firstname">Pavel</span> <span class="surname">Shved</span>. </span><span class="author"><span class="firstname">Denis</span> <span class="surname">Silakov</span>. </span><span class="biblioid">
<a class="ulink" href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" target="_top">
</a>
- . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Porting to New Hardware or Operating Systems </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> API Evolution and Deprecation History</td></tr></table></div></body></html>
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> API Evolution and Deprecation History</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html
index db71a81443b..aaaa42c27ef 100644
--- a/libstdc++-v3/doc/html/manual/algorithms.html
+++ b/libstdc++-v3/doc/html/manual/algorithms.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.algorithms"></a>Part IX. 
Algorithms
- <a id="id397908" class="indexterm"></a>
+ <a id="id721514" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">One Past the End </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html
index c2120235844..f0f0e271f1a 100644
--- a/libstdc++-v3/doc/html/manual/api.html
+++ b/libstdc++-v3/doc/html/manual/api.html
@@ -75,11 +75,11 @@ _Alloc_traits</code> have been removed.
<span class="type">__alloc</span> to select an underlying allocator that
satisfied memory allocation requests. The selection of this
underlying allocator was not user-configurable.
- </p><div class="table"><a id="id505845"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
+ </p><div class="table"><a id="id623096"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
of available allocators. All of these new allocators are
standard-style. The following table includes details, along with
the first released version of GCC that included the extension allocator.
- </p><div class="table"><a id="id403516"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id721371"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
Debug mode first appears.
</p><p>
Precompiled header support <acronym class="acronym">PCH</acronym> support.
diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html
index a31760453cf..b54faf1b14d 100644
--- a/libstdc++-v3/doc/html/manual/appendix_contributing.html
+++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html
@@ -5,7 +5,7 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch41s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.contrib"></a>Appendix A. 
Contributing
- <a id="id384414" class="indexterm"></a>
+ <a id="id622754" class="indexterm"></a>
</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p>
The GNU C++ Library follows an open development model. Active
contributors are assigned maintainer-ship responsibility, and given
diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html
index 8fb4578e1c9..5b529f93e8e 100644
--- a/libstdc++-v3/doc/html/manual/appendix_free.html
+++ b/libstdc++-v3/doc/html/manual/appendix_free.html
@@ -5,7 +5,7 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.free"></a>Appendix C. 
Free Software Needs Free Documentation
- <a id="id501419" class="indexterm"></a>
+ <a id="id675332" class="indexterm"></a>
</h2></div></div></div><p>
The biggest deficiency in free operating systems is not in the
software--it is the lack of good free manuals that we can include in
diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html
index 88e1468293d..0f9a838f365 100644
--- a/libstdc++-v3/doc/html/manual/appendix_gpl.html
+++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html
@@ -76,7 +76,7 @@
</p><p>
The precise terms and conditions for copying, distribution and modification
follow.
- </p><h2><a id="id514028"></a>
+ </p><h2><a id="id746936"></a>
TERMS AND CONDITIONS
</h2><h2><a id="gpl-3-definitions"></a>
0. Definitions.
@@ -617,7 +617,7 @@
waiver of all civil liability in connection with the Program, unless a
warranty or assumption of liability accompanies a copy of the Program in
return for a fee.
- </p><h2><a id="id510808"></a>
+ </p><h2><a id="id654357"></a>
END OF TERMS AND CONDITIONS
</h2><h2><a id="HowToApply"></a>
How to Apply These Terms to Your New Programs
diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html
index fceb1abc244..037759421ee 100644
--- a/libstdc++-v3/doc/html/manual/appendix_porting.html
+++ b/libstdc++-v3/doc/html/manual/appendix_porting.html
@@ -5,8 +5,8 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting"></a>Appendix B. 
Porting and Maintenance
- <a id="id509079" class="indexterm"></a>
-</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p>
+ <a id="id744430" class="indexterm"></a>
+</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p>
As noted <a class="ulink" href="http://gcc.gnu.org/install/prerequisites.html" target="_top">previously</a>,
certain other tools are necessary for hacking on files that
control configure (<code class="code">configure.ac</code>,
diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html
index 499581ba33c..252d177d4aa 100644
--- a/libstdc++-v3/doc/html/manual/backwards.html
+++ b/libstdc++-v3/doc/html/manual/backwards.html
@@ -17,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of
really useful things that are used by a lot of people, the Standards
Committee couldn't include everything, and so a lot of those
“<span class="quote">obvious</span>” classes didn't get included.
-</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id426872"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id426904"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
+</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id744149"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id744181"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
In earlier versions of the standard,
<code class="filename">fstream.h</code>,
<code class="filename">ostream.h</code>
@@ -44,7 +44,7 @@ considered replaced and rewritten.
archived. The code is considered replaced and rewritten.
</p><p>
Portability notes and known implementation limitations are as follows.
-</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id427002"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
+</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id744279"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
Some care is required to support C++ compiler and or library
implementation that do not have the standard library in
<code class="code">namespace std</code>.
@@ -108,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id384005"></a>Illegal iterator usage</h4></div></div></div><p>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id673182"></a>Illegal iterator usage</h4></div></div></div><p>
The following illustrate implementation-allowed illegal iterator
use, and then correct use.
</p><div class="itemizedlist"><ul type="disc"><li><p>
@@ -121,7 +121,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
</p></li><li><p>
<code class="code">if (iterator)</code> won't work any more =&gt; use
<code class="code">if (iterator != iterator_type())</code>
- </p></li></ul></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id384066"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
+ </p></li></ul></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id673243"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
</h4></div></div></div><p>
Glibc 2.0.x and 2.1.x define <code class="filename">ctype.h</code> functionality as macros
(isspace, isalpha etc.).
@@ -154,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] &amp; (unsigned short int) _ISspace ) ;
(<code class="filename">ctype.h</code>) and the
definitions in namespace <code class="code">std::</code>
(<code class="code">&lt;cctype&gt;</code>).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id384160"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id586519"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
One solution is to add an autoconf-test for this:
</p><pre class="programlisting">
AC_MSG_CHECKING(for container::at)
@@ -180,7 +180,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
</pre><p>
If you are using other (non-GNU) compilers it might be a good idea
to check for <code class="code">string::at</code> separately.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id492905"></a>No <code class="code">std::char_traits&lt;char&gt;::eof</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id586557"></a>No <code class="code">std::char_traits&lt;char&gt;::eof</code></h4></div></div></div><p>
Use some kind of autoconf test, plus this:
</p><pre class="programlisting">
#ifdef HAVE_CHAR_TRAITS
@@ -188,7 +188,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
#else
#define CPP_EOF EOF
#endif
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id492923"></a>No <code class="code">string::clear</code></h4></div></div></div><p>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id586575"></a>No <code class="code">string::clear</code></h4></div></div></div><p>
There are two functions for deleting the contents of a string:
<code class="code">clear</code> and <code class="code">erase</code> (the latter returns the
string).
@@ -206,12 +206,12 @@ erase(size_type __pos = 0, size_type __n = npos)
Unfortunately, <code class="code">clear</code> is not implemented in this
version, so you should use <code class="code">erase</code> (which is probably
faster than <code class="code">operator=(charT*)</code>).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id492968"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id586620"></a>
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
extensions
</h4></div></div></div><p>
These are no longer supported. Please use stringstreams instead.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id492987"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id586640"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
Although the ISO standard <code class="code">i/ostringstream</code>-classes are
provided, (<code class="filename">sstream</code>), for
compatibility with older implementations the pre-ISO
@@ -299,14 +299,14 @@ any = temp;
Another example of using stringstreams is in <a class="link" href="bk01pt05ch13s05.html" title="Shrink to Fit">this howto</a>.
</p><p> There is additional information in the libstdc++-v2 info files, in
particular “<span class="quote">info iostream</span>”.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id511920"></a>Little or no wide character support</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id659623"></a>Little or no wide character support</h4></div></div></div><p>
Classes <code class="classname">wstring</code> and
<code class="classname">char_traits&lt;wchar_t&gt;</code> are
not supported.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id511939"></a>No templatized iostreams</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id659642"></a>No templatized iostreams</h4></div></div></div><p>
Classes <code class="classname">wfilebuf</code> and
<code class="classname">wstringstream</code> are not supported.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id511958"></a>Thread safety issues</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id659661"></a>Thread safety issues</h4></div></div></div><p>
Earlier GCC releases had a somewhat different approach to
threading configuration and proper compilation. Before GCC 3.0,
configuration of the threading model was dictated by compiler
@@ -364,7 +364,7 @@ libstdc++-v3.
of the SGI STL (version 3.3), with extensive changes.
</p><p>A more formal description of the V3 goals can be found in the
official <a class="link" href="source_design_notes.html" title="Design Notes">design document</a>.
- </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id512074"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
+ </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id659778"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
(<code class="code">iostream.h</code>, <code class="code">defalloc.h</code> etc.) are
available, unlike previous libstdc++ versions, but inclusion
generates a warning that you are using deprecated headers.
@@ -436,7 +436,7 @@ like <code class="filename">vector.h</code> can be replaced with <code class="fi
directive <code class="code">using namespace std;</code> can be put at the global
scope. This should be enough to get this code compiling, assuming the
other usage is correct.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id385442"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id674389"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
replaced by standardized libraries.
In particular, the unordered_map and unordered_set containers of TR1
are suitable replacement for the non-standard hash_map and hash_set
@@ -508,7 +508,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id385545"></a>No <code class="code">ios::nocreate/ios::noreplace</code>.
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id674492"></a>No <code class="code">ios::nocreate/ios::noreplace</code>.
</h4></div></div></div><p> The existence of <code class="code">ios::nocreate</code> being used for
input-streams has been confirmed, most probably because the author
thought it would be more correct to specify nocreate explicitly. So
@@ -519,7 +519,7 @@ open the file for reading, check if it has been opened, and then
decide whether you want to create/replace or not. To my knowledge,
even older implementations support <code class="code">app</code>, <code class="code">ate</code>
and <code class="code">trunc</code> (except for <code class="code">app</code> ?).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id385592"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id674539"></a>
No <code class="code">stream::attach(int fd)</code>
</h4></div></div></div><p>
Phil Edwards writes: It was considered and rejected for the ISO
@@ -542,7 +542,7 @@ No <code class="code">stream::attach(int fd)</code>
For another example of this, refer to
<a class="ulink" href="http://www.josuttis.com/cppcode/fdstream.html" target="_top">fdstream example</a>
by Nicolai Josuttis.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id385656"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id674603"></a>
Support for C++98 dialect.
</h4></div></div></div><p>Check for complete library coverage of the C++1998/2003 standard.
</p><pre class="programlisting">
@@ -610,7 +610,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id403656"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id674631"></a>
Support for C++TR1 dialect.
</h4></div></div></div><p>Check for library coverage of the TR1 standard.
</p><pre class="programlisting">
@@ -687,7 +687,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id403699"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id675096"></a>
Support for C++0x dialect.
</h4></div></div></div><p>Check for baseline language coverage in the compiler for the C++0xstandard.
</p><pre class="programlisting">
@@ -899,27 +899,27 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id403776"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id675173"></a>
Container::iterator_type is not necessarily Container::value_type*
</h4></div></div></div><p>
This is a change in behavior from the previous version. Now, most
<span class="type">iterator_type</span> typedefs in container classes are POD
objects, not <span class="type">value_type</span> pointers.
-</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id403806"></a><p>[<abbr class="abbrev">
+</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id675202"></a><p>[<abbr class="abbrev">
kegel41
</abbr>] <span class="title"><i>
Migrating to GCC 4.1
</i>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.kegel.com/gcc/gcc4.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id403838"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id675235"></a><p>[<abbr class="abbrev">
kegel41
</abbr>] <span class="title"><i>
Building the Whole Debian Archive with GCC 4.1: A Summary
</i>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span><span class="biblioid">
<a class="ulink" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id403871"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id675268"></a><p>[<abbr class="abbrev">
lbl32
</abbr>] <span class="title"><i>
Migration guide for GCC-3.2
diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html
index e60f6671d25..806ca047865 100644
--- a/libstdc++-v3/doc/html/manual/bitmap_allocator.html
+++ b/libstdc++-v3/doc/html/manual/bitmap_allocator.html
@@ -103,7 +103,7 @@ else return false.</p></li></ol></div><p>
</p><p>
Consider a block of size 64 ints. In memory, it would look like this:
(assume a 32-bit system where, size_t is a 32-bit entity).
- </p><div class="table"><a id="id393472"></a><p class="title"><b>Table 33.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -&gt; Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id730908"></a><p class="title"><b>Table 33.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -&gt; Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
The first Column(268) represents the size of the Block in bytes as
seen by the Bitmap Allocator. Internally, a global free list is
used to keep track of the free blocks used and given back by the
diff --git a/libstdc++-v3/doc/html/manual/bk01ix01.html b/libstdc++-v3/doc/html/manual/bk01ix01.html
index 9feecbf32ae..51a67bbe12d 100644
--- a/libstdc++-v3/doc/html/manual/bk01ix01.html
+++ b/libstdc++-v3/doc/html/manual/bk01ix01.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Index</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="index"><div class="titlepage"><div><div><h2 class="title"><a id="id496564"></a>Index</h2></div></div></div><div class="index"><div class="indexdiv"><h3>A</h3><dl><dt>Algorithms, <a class="indexterm" href="algorithms.html">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Index</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="index"><div class="titlepage"><div><div><h2 class="title"><a id="id692397"></a>Index</h2></div></div></div><div class="index"><div class="indexdiv"><h3>A</h3><dl><dt>Algorithms, <a class="indexterm" href="algorithms.html">
Algorithms
</a></dt><dt>Appendix</dt><dd><dl><dt>Contributing, <a class="indexterm" href="appendix_contributing.html">
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
index 2bdadd27d95..4ec01fefd93 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II.  Support" /><link rel="prev" href="support.html" title="Part II.  Support" /><link rel="next" href="fundamental_types.html" title="Chapter 4. Types" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Part II. 
Support
-</th><td width="20%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id492782"></a></h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id650354"></a></h2></div></div></div><p>
This part deals with the functions called and objects created
automatically during the course of a program's existence.
</p><p>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
index 5194208173b..d72d23d2d95 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Adding Data to Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="next" href="bk01pt03ch07s03.html" title="Cancellation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Adding Data to Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.data"></a>Adding Data to Exceptions</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Adding Data to Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="next" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Adding Data to Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.data"></a>Adding Data to Exceptions</h2></div></div></div><p>
The standard exception classes carry with them a single string as
data (usually describing what went wrong or where the 'throw' took
place). It's good to remember that you can add your own data to
@@ -17,4 +17,4 @@
int e;
DBID id; // some user-defined type
};
- </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Cancellation</td></tr></table></div></body></html>
+ </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Concept Checking</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html b/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
index 758405f356c..5c6d0c83a24 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="utilities.html" title="Part IV.  Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">Part III. 
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="utilities.html" title="Part IV.  Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">Part III. 
Diagnostics
</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.concept_checking"></a>Chapter 8. Concept Checking</h2></div></div></div><p>
@@ -39,7 +39,7 @@
support for template parameter constraints based on concepts in the core
language. This will obviate the need for the library-simulated concept
checking described above.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. 
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. 
Utilities
</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
index 1397245fd93..420cb81b855 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX.  Algorithms" /><link rel="prev" href="algorithms.html" title="Part IX.  Algorithms" /><link rel="next" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part IX. 
Algorithms
-</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id397917"></a></h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id617760"></a></h2></div></div></div><p>
The neatest accomplishment of the algorithms chapter is that all the
work is done via iterators, not containers directly. This means two
important things:
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
index 613964f8cc2..089058c2ff7 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
@@ -19,6 +19,6 @@
mode or with debug mode. The
following table provides the names and headers of the debugging
containers:
-</p><div class="table"><a id="id517820"></a><p class="title"><b>Table 30.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">bitset</code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">deque</code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional
+</p><div class="table"><a id="id672482"></a><p class="title"><b>Table 30.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">bitset</code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">deque</code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional
containers have additional debug capability.
-</p><div class="table"><a id="id357333"></a><p class="title"><b>Table 30.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
+</p><div class="table"><a id="id646525"></a><p class="title"><b>Table 30.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
index 9e38ab478dd..265a3116022 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
@@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags
flags for atomic operations.)
</p><p> The following table provides the names and headers of all the
parallel algorithms that can be used in a similar manner:
-</p><div class="table"><a id="id479890"></a><p class="title"><b>Table 31.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
+</p><div class="table"><a id="id731921"></a><p class="title"><b>Table 31.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html
index 0aac094031e..70f0eef3199 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; profile&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="next" href="bk01pt12ch32s03.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p>
-</p><div class="table"><a id="id474437"></a><p class="title"><b>Table 32.1. Code Location</b></p><div class="table-contents"><table summary="Code Location" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
+</p><div class="table"><a id="id647548"></a><p class="title"><b>Table 32.1. Code Location</b></p><div class="table-contents"><table summary="Code Location" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
only included from <code class="code">impl/profiler.h</code>, which is the only
file included from the public headers.</td></tr></tbody></table></div></div><br class="table-break" /><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"></a>Wrapper Model</h3></div></div></div><p>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html
index 7420fdeb7d3..cbe09f0f19d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html
@@ -18,7 +18,7 @@
A high accuracy means that the diagnostic is unlikely to be wrong.
These grades are not perfect. They are just meant to guide users with
specific needs or time budgets.
- </p><div class="table"><a id="id501361"></a><p class="title"><b>Table 32.2. Diagnostics</b></p><div class="table-contents"><table summary="Diagnostics" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th></tr></thead><tbody><tr><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.containers" target="_top">
+ </p><div class="table"><a id="id521055"></a><p class="title"><b>Table 32.2. Diagnostics</b></p><div class="table-contents"><table summary="Diagnostics" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th></tr></thead><tbody><tr><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.containers" target="_top">
CONTAINERS</a></td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.hashtable_too_small" target="_top">
HASHTABLE_TOO_SMALL</a></td><td align="left">10</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.hashtable_too_large" target="_top">
HASHTABLE_TOO_LARGE</a></td><td align="left">5</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.inefficient_hash" target="_top">
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
index d166ed5d17f..68f3a89765d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="extensions.html" title="Part XII.  Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part XII. 
Extensions
-</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id450207"></a></h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id646774"></a></h2></div></div></div><p>
Here we will make an attempt at describing the non-Standard extensions to
the library. Some of these are from SGI's STL, some of these are GNU's,
and some just seemed to appear on the doorstep.
diff --git a/libstdc++-v3/doc/html/manual/codecvt.html b/libstdc++-v3/doc/html/manual/codecvt.html
index 64196b1ece8..0ac3285f1e9 100644
--- a/libstdc++-v3/doc/html/manual/codecvt.html
+++ b/libstdc++-v3/doc/html/manual/codecvt.html
@@ -337,41 +337,41 @@ codecvt usage.
</p></li><li><p>
wchar_t/char internal buffers and conversions between
internal/external buffers?
- </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id493338"></a><p><span class="title"><i>
+ </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id703118"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id478473"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id644322"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id478501"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id644350"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id497324"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id660838"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id497342"></a><p><span class="title"><i>
- System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id660857"></a><p><span class="title"><i>
+ The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
- <a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
+ <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id461154"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id686728"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id409878"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id720408"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div><div class="biblioentry"><a id="id390798"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id692630"></a><p><span class="title"><i>
A brief description of Normative Addendum 1
</i>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span><span class="biblioid">
<a class="ulink" href="http://www.lysator.liu.se/c/na1.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id389025"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id617963"></a><p><span class="title"><i>
The Unicode HOWTO
</i>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span><span class="biblioid">
<a class="ulink" href="ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id337800"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id681295"></a><p><span class="title"><i>
UTF-8 and Unicode FAQ for Unix/Linux
</i>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top">
diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html
index de09de84158..9fc6bcdab56 100644
--- a/libstdc++-v3/doc/html/manual/containers.html
+++ b/libstdc++-v3/doc/html/manual/containers.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.containers"></a>Part VII. 
Containers
- <a id="id421482" class="indexterm"></a>
+ <a id="id644180" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">messages </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Sequences</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html
index bf56f513849..d1a4fb2232b 100644
--- a/libstdc++-v3/doc/html/manual/debug.html
+++ b/libstdc++-v3/doc/html/manual/debug.html
@@ -138,16 +138,42 @@
set print demangle on
set demangle-style gnu-v3
</pre><p>
- GDB 7.0 will include support for writing pretty-printers in Python.
- A library of printers for STL classes already exists within the
- libstdc++ svn repository. For information on enabling these printers,
- and for other GDB STL support options: please see
- <a class="ulink" href="http://sourceware.org/gdb/wiki/STLSupport" target="_top"> "GDB Support
- for STL" </a> in the GDB wiki. Additionally, in-depth
- documentation and discussion of this feature can be found in the GDB
- manual. Please see:
- <a class="ulink" href="http://sourceware.org/gdb/current/onlinedocs//gdb_24.html#SEC260" target="_top">
- "23.2.2.6 Pretty Printing" </a>
+ Starting with version 7.0, GDB includes support for writing
+ pretty-printers in Python. Pretty printers for STL classes are
+ distributed with GCC from version 4.5.0. The most recent version of
+ these printers are always found in libstdc++ svn repository.
+ To enable these printers, check-out the latest printers to a local
+ directory:
+</p><pre class="programlisting">
+ svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
+</pre><p>
+ Next, add the following section to your ~/.gdbinit The path must
+ match the location where the Python module above was checked-out.
+ So if checked out to: /home/maude/gdb_printers/, the path would be as
+ written in the example below.
+</p><pre class="programlisting">
+ python
+ import sys
+ sys.path.insert(0, '/home/maude/gdb_printers/python')
+ from libstdcxx.v6.printers import register_libstdcxx_printers
+ register_libstdcxx_printers (None)
+ end
+</pre><p>
+ The path should be the only element that needs to be adjusted in the
+ example. Once loaded, STL classes that the printers support
+ should print in a more human-readable format. To print the classes
+ in the old style, use the /r (raw) switch in the print command
+ (i.e., print /r foo). This will print the classes as if the Python
+ pretty-printers were not loaded.
+</p><p>
+ For additional information on STL support and GDB please visit:
+ <a class="ulink" href="http://sourceware.org/gdb/wiki/STLSupport" target="_top"> "GDB Support
+ for STL" </a> in the GDB wiki. Additionally, in-depth
+ documentation and discussion of the pretty printing feature can be
+ found in "Pretty Printing" node in the GDB manual. You can find
+ on-line versions of the GDB user manual in GDB's homepage, at
+ <a class="ulink" href="http://sourceware.org/gdb/" target="_top"> "GDB: The GNU Project
+ Debugger" </a>.
</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="debug.exceptions"></a>Tracking uncaught exceptions</h3></div></div></div><p>
The <a class="link" href="verbose_termination.html" title="Verbose Terminate Handler">verbose
termination handler</a> gives information about uncaught
diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html
index 21a447193e1..b869aec22f8 100644
--- a/libstdc++-v3/doc/html/manual/diagnostics.html
+++ b/libstdc++-v3/doc/html/manual/diagnostics.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.diagnostics"></a>Part III. 
Diagnostics
- <a id="id432454" class="indexterm"></a>
-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Verbose Terminate Handler </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Exceptions</td></tr></table></div></body></html>
+ <a id="id702920" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Verbose Terminate Handler </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/documentation_style.html b/libstdc++-v3/doc/html/manual/documentation_style.html
index b58aa894c93..e8d7831cb5c 100644
--- a/libstdc++-v3/doc/html/manual/documentation_style.html
+++ b/libstdc++-v3/doc/html/manual/documentation_style.html
@@ -211,11 +211,11 @@ Complete details on Docbook markup can be found in the DocBook Element
Reference, <a class="ulink" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>. An
incomplete reference for HTML to Docbook conversion is detailed in the
table below.
-</p><div class="table"><a id="id431910"></a><p class="title"><b>Table A.1. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">XML</th></tr></thead><tbody><tr><td align="left">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
+</p><div class="table"><a id="id740402"></a><p class="title"><b>Table A.1. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">XML</th></tr></thead><tbody><tr><td align="left">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
&lt;literallayout&gt;</td></tr><tr><td align="left">&lt;ul&gt;</td><td align="left">&lt;itemizedlist&gt;</td></tr><tr><td align="left">&lt;ol&gt;</td><td align="left">&lt;orderedlist&gt;</td></tr><tr><td align="left">&lt;il&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;dl&gt;</td><td align="left">&lt;variablelist&gt;</td></tr><tr><td align="left">&lt;dt&gt;</td><td align="left">&lt;term&gt;</td></tr><tr><td align="left">&lt;dd&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;a href=""&gt;</td><td align="left">&lt;ulink url=""&gt;</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">&lt;literal&gt;, &lt;programlisting&gt;</td></tr><tr><td align="left">&lt;strong&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">"</td><td align="left">&lt;quote&gt;</td></tr></tbody></table></div></div><br class="table-break" /><p>
And examples of detailed markup for which there are no real HTML
equivalents are listed in the table below.
-</p><div class="table"><a id="id514274"></a><p class="title"><b>Table A.2. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
+</p><div class="table"><a id="id613462"></a><p class="title"><b>Table A.2. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
<p>&lt;function&gt;clear()&lt;/function&gt;</p>
<p>&lt;function&gt;fs.clear()&lt;/function&gt;</p>
</td></tr><tr><td align="left">&lt;type&gt;</td><td align="left">&lt;type&gt;long long&lt;/type&gt;</td></tr><tr><td align="left">&lt;varname&gt;</td><td align="left">&lt;varname&gt;fs&lt;/varname&gt;</td></tr><tr><td align="left">&lt;literal&gt;</td><td align="left">
diff --git a/libstdc++-v3/doc/html/manual/exceptions.html b/libstdc++-v3/doc/html/manual/exceptions.html
index 74bcdebe14f..83eb8892fa4 100644
--- a/libstdc++-v3/doc/html/manual/exceptions.html
+++ b/libstdc++-v3/doc/html/manual/exceptions.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="prev" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="next" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III. 
Diagnostics
-</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p>
All exception objects are defined in one of the standard header
files: <code class="filename">exception</code>,
<code class="filename">stdexcept</code>, <code class="filename">new</code>, and
diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html
index 90c2b048ee1..e80e4110ec5 100644
--- a/libstdc++-v3/doc/html/manual/extensions.html
+++ b/libstdc++-v3/doc/html/manual/extensions.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part XII. 
Extensions
- <a id="id450198" class="indexterm"></a>
+ <a id="id646766" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">32. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">33. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">34. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">35. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">36. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">37. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">38. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">39. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">40. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">41. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Performance </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html
index a23ee847975..ff42a5bbe0a 100644
--- a/libstdc++-v3/doc/html/manual/facets.html
+++ b/libstdc++-v3/doc/html/manual/facets.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Facets aka Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI.  Localization" /><link rel="prev" href="locales.html" title="Chapter 14. Locales" /><link rel="next" href="codecvt.html" title="codecvt" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Facets aka Categories</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="locales.html">Prev</a> </td><th width="60%" align="center">Part VI. 
Localization
-</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id456506"></a>Specializations</h4></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id639240"></a>Specializations</h4></div></div></div><p>
For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
conversions are made between the internal character set (always UCS4
on GNU/Linux) and whatever the currently selected locale for the
@@ -50,25 +50,25 @@ characters.
</p></li><li><p>
Rename abstract base class. See if just smash-overriding is a
better approach. Clarify, add sanity to naming.
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id394298"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id621794"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id480756"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id641198"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id396720"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id734835"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id396738"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id629980"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id395771"></a><p><span class="title"><i>
- System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id629998"></a><p><span class="title"><i>
+ The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
- <a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
+ <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id412160"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id619025"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id465171"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id637327"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
diff --git a/libstdc++-v3/doc/html/manual/internals.html b/libstdc++-v3/doc/html/manual/internals.html
index 8ba004ece5a..aca09ecaf51 100644
--- a/libstdc++-v3/doc/html/manual/internals.html
+++ b/libstdc++-v3/doc/html/manual/internals.html
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; internals&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; internals&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
Porting and Maintenance
-</th><td width="20%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.internals"></a>Porting to New Hardware or Operating Systems</h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.internals"></a>Porting to New Hardware or Operating Systems</h2></div></div></div><p>
</p><p>This document explains how to port libstdc++ (the GNU C++ library) to
a new target.
</p><p>In order to make the GNU C++ library (libstdc++) work with a new
@@ -368,7 +368,7 @@ do this is to build the library using <code class="code">gcc -shared</code>.
<code class="code">ltcf-c.sh</code> in the top-level directory. Find the switch statement
that sets <code class="code">archive_cmds</code>. Here, adjust the setting for your
operating system.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix B. 
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix B. 
Porting and Maintenance
- </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> ABI Policy and Guidelines</td></tr></table></div></body></html>
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Test</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html
index 58b373b1260..350d617ccc2 100644
--- a/libstdc++-v3/doc/html/manual/intro.html
+++ b/libstdc++-v3/doc/html/manual/intro.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
Introduction
- <a id="id431712" class="indexterm"></a>
-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
+ <a id="id690392" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html
index 121c8be1636..1ede95bdcda 100644
--- a/libstdc++-v3/doc/html/manual/io.html
+++ b/libstdc++-v3/doc/html/manual/io.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.io"></a>Part XI. 
Input and Output
- <a id="id412720" class="indexterm"></a>
+ <a id="id585725" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C99 </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Iostream Objects</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html
index c168b0e1787..a002097bfcd 100644
--- a/libstdc++-v3/doc/html/manual/iterators.html
+++ b/libstdc++-v3/doc/html/manual/iterators.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.iterators"></a>Part VIII. 
Iterators
- <a id="id511191" class="indexterm"></a>
+ <a id="id632651" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 19. Predefined</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/locales.html b/libstdc++-v3/doc/html/manual/locales.html
index 87b7c2b7bbc..296e8aecbba 100644
--- a/libstdc++-v3/doc/html/manual/locales.html
+++ b/libstdc++-v3/doc/html/manual/locales.html
@@ -398,25 +398,25 @@ global locale" (emphasis Paolo), that is:
What should non-required facet instantiations do? If the
generic implementation is provided, then how to end-users
provide specializations?
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id388197"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id658666"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id403972"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id679103"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id404001"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id635262"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id450687"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id709948"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id450705"></a><p><span class="title"><i>
- System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id709967"></a><p><span class="title"><i>
+ The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
- <a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
+ <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id429438"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id618881"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id405937"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id641063"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html
index 35b18f8617f..152956fa176 100644
--- a/libstdc++-v3/doc/html/manual/localization.html
+++ b/libstdc++-v3/doc/html/manual/localization.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.localization"></a>Part VI. 
Localization
- <a id="id421930" class="indexterm"></a>
+ <a id="id585411" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">CString (MFC) </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. Locales</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/make.html b/libstdc++-v3/doc/html/manual/make.html
index 6a56ea690da..2563d277938 100644
--- a/libstdc++-v3/doc/html/manual/make.html
+++ b/libstdc++-v3/doc/html/manual/make.html
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
<a class="ulink" href="http://gcc.gnu.org/install/" target="_top">GCC Installation
Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>.
<span class="emphasis"><em>Twice.</em></span>
</p><p>Then type:<span class="command"><strong>make</strong></span>, and congratulations, you're
started to build.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Test</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/memory.html b/libstdc++-v3/doc/html/manual/memory.html
index 035b50d5836..b49003b7a82 100644
--- a/libstdc++-v3/doc/html/manual/memory.html
+++ b/libstdc++-v3/doc/html/manual/memory.html
@@ -93,7 +93,7 @@
or loading and unloading shared objects in memory. As such, using
caching allocators on systems that do not support
<code class="function">abi::__cxa_atexit</code> is not recommended.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id448064"></a>Interface Design</h4></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id712986"></a>Interface Design</h4></div></div></div><p>
The only allocator interface that
is support is the standard C++ interface. As such, all STL
containers have been adjusted, and all external allocators have
@@ -106,7 +106,7 @@
</p><p>
The base class that <code class="classname">allocator</code> is derived from
may not be user-configurable.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id419395"></a>Selecting Default Allocation Policy</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id629278"></a>Selecting Default Allocation Policy</h4></div></div></div><p>
It's difficult to pick an allocation strategy that will provide
maximum utility, without excessively penalizing some behavior. In
fact, it's difficult just deciding which typical actions to measure
@@ -143,7 +143,7 @@
The current default choice for
<code class="classname">allocator</code> is
<code class="classname">__gnu_cxx::new_allocator</code>.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id392353"></a>Disabling Memory Caching</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id711751"></a>Disabling Memory Caching</h4></div></div></div><p>
In use, <code class="classname">allocator</code> may allocate and
deallocate using implementation-specified strategies and
heuristics. Because of this, every call to an allocator object's
@@ -308,11 +308,11 @@
A high-performance allocator that uses a bit-map to keep track
of the used and unused memory locations. It has its own
documentation, found <a class="link" href="bitmap_allocator.html" title="bitmap_allocator">here</a>.
- </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id401721"></a><p><span class="title"><i>
+ </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id710951"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
</i>. </span>
isoc++_1998
- <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id401736"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good
+ <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id710966"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good
</i>. </span>
austernm
<span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
@@ -320,28 +320,28 @@
. </span></span><span class="biblioid">
<a class="ulink" href="http://www.cuj.com/documents/s=8000/cujcexp1812austern/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id478919"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id644430"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span>
emeryb
<span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.cs.umass.edu/~emery/hoard/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id447245"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id689922"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span>
bergerzorn
<span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span><span class="biblioid">
<a class="ulink" href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id427350"></a><p><span class="title"><i>Allocator Types</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id709355"></a><p><span class="title"><i>Allocator Types</i>. </span>
kreftlanger
<span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername">
C/C++ Users Journal
. </span></span><span class="biblioid">
<a class="ulink" href="http://www.langer.camelot.de/Articles/C++Report/Allocators/Allocators.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id291159"></a><p><span class="title"><i>The C++ Programming Language</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id642689"></a><p><span class="title"><i>The C++ Programming Language</i>. </span>
tcpl
<span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id420450"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span>
+ . </span></span></p></div><div class="biblioentry"><a id="id614194"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span>
yenf
<span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span><span class="copyright">Copyright © . </span><span class="biblioid">
<a class="ulink" href="http://home.earthlink.net/~brimar/yalloc/" target="_top">
diff --git a/libstdc++-v3/doc/html/manual/messages.html b/libstdc++-v3/doc/html/manual/messages.html
index 64b6d6d6c48..e21adac3025 100644
--- a/libstdc++-v3/doc/html/manual/messages.html
+++ b/libstdc++-v3/doc/html/manual/messages.html
@@ -241,42 +241,42 @@ void test01()
model. As of this writing, it is unknown how to query to see
if a specified message catalog exists using the gettext
package.
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id472238"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id699687"></a><p><span class="title"><i>
The GNU C Library
</i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization
- . </span></p></div><div class="biblioentry"><a id="id414678"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id622574"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id412595"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id630269"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id412614"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id630287"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id400869"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id630306"></a><p><span class="title"><i>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
<a class="ulink" href="http://www.opengroup.org/austin/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id400897"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id567615"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id426571"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id621555"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div><div class="biblioentry"><a id="id414262"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id646611"></a><p><span class="title"><i>
Java 2 Platform, Standard Edition, v 1.3.1 API Specification
</i>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat,
java.util.Locale, java.util.ResourceBundle. </span><span class="biblioid">
<a class="ulink" href="http://java.sun.com/reference/api/index.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id414283"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id682026"></a><p><span class="title"><i>
GNU gettext tools, version 0.10.38, Native Language Support
Library and Tools.
</i>. </span><span class="biblioid">
- <a class="ulink" href="http://sources.redhat.com/gettext" target="_top">
+ <a class="ulink" href="http://www.gnu.org/software/gettext/" target="_top">
</a>
. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="facets.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">codecvt </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VII. 
Containers
diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html
index 7738f38215b..457f548f437 100644
--- a/libstdc++-v3/doc/html/manual/numerics.html
+++ b/libstdc++-v3/doc/html/manual/numerics.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.numerics"></a>Part X. 
Numerics
- <a id="id399502" class="indexterm"></a>
+ <a id="id624917" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 20. Mutating </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 21. Complex</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html
index 46af419a9ae..635ef1dd6a1 100644
--- a/libstdc++-v3/doc/html/manual/parallel_mode.html
+++ b/libstdc++-v3/doc/html/manual/parallel_mode.html
@@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a
specific compiler flag.
</p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
<code class="filename">numeric</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::accumulate</code></p></li><li><p><code class="function">std::adjacent_difference</code></p></li><li><p><code class="function">std::inner_product</code></p></li><li><p><code class="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
-<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::adjacent_find</code></p></li><li><p><code class="function">std::count</code></p></li><li><p><code class="function">std::count_if</code></p></li><li><p><code class="function">std::equal</code></p></li><li><p><code class="function">std::find</code></p></li><li><p><code class="function">std::find_if</code></p></li><li><p><code class="function">std::find_first_of</code></p></li><li><p><code class="function">std::for_each</code></p></li><li><p><code class="function">std::generate</code></p></li><li><p><code class="function">std::generate_n</code></p></li><li><p><code class="function">std::lexicographical_compare</code></p></li><li><p><code class="function">std::mismatch</code></p></li><li><p><code class="function">std::search</code></p></li><li><p><code class="function">std::search_n</code></p></li><li><p><code class="function">std::transform</code></p></li><li><p><code class="function">std::replace</code></p></li><li><p><code class="function">std::replace_if</code></p></li><li><p><code class="function">std::max_element</code></p></li><li><p><code class="function">std::merge</code></p></li><li><p><code class="function">std::min_element</code></p></li><li><p><code class="function">std::nth_element</code></p></li><li><p><code class="function">std::partial_sort</code></p></li><li><p><code class="function">std::partition</code></p></li><li><p><code class="function">std::random_shuffle</code></p></li><li><p><code class="function">std::set_union</code></p></li><li><p><code class="function">std::set_intersection</code></p></li><li><p><code class="function">std::set_symmetric_difference</code></p></li><li><p><code class="function">std::set_difference</code></p></li><li><p><code class="function">std::sort</code></p></li><li><p><code class="function">std::stable_sort</code></p></li><li><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id431585"></a><p><span class="title"><i>
+<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::adjacent_find</code></p></li><li><p><code class="function">std::count</code></p></li><li><p><code class="function">std::count_if</code></p></li><li><p><code class="function">std::equal</code></p></li><li><p><code class="function">std::find</code></p></li><li><p><code class="function">std::find_if</code></p></li><li><p><code class="function">std::find_first_of</code></p></li><li><p><code class="function">std::for_each</code></p></li><li><p><code class="function">std::generate</code></p></li><li><p><code class="function">std::generate_n</code></p></li><li><p><code class="function">std::lexicographical_compare</code></p></li><li><p><code class="function">std::mismatch</code></p></li><li><p><code class="function">std::search</code></p></li><li><p><code class="function">std::search_n</code></p></li><li><p><code class="function">std::transform</code></p></li><li><p><code class="function">std::replace</code></p></li><li><p><code class="function">std::replace_if</code></p></li><li><p><code class="function">std::max_element</code></p></li><li><p><code class="function">std::merge</code></p></li><li><p><code class="function">std::min_element</code></p></li><li><p><code class="function">std::nth_element</code></p></li><li><p><code class="function">std::partial_sort</code></p></li><li><p><code class="function">std::partition</code></p></li><li><p><code class="function">std::random_shuffle</code></p></li><li><p><code class="function">std::set_union</code></p></li><li><p><code class="function">std::set_intersection</code></p></li><li><p><code class="function">std::set_symmetric_difference</code></p></li><li><p><code class="function">std::set_difference</code></p></li><li><p><code class="function">std::sort</code></p></li><li><p><code class="function">std::stable_sort</code></p></li><li><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id660222"></a><p><span class="title"><i>
Parallelization of Bulk Operations for STL Dictionaries
</i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Leonor</span> <span class="surname">Frias</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS)
- . </span></span></p></div><div class="biblioentry"><a id="id389946"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id660269"></a><p><span class="title"><i>
The Multi-Core Standard Template Library
</i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Peter</span> <span class="surname">Sanders</span>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Putze</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
Euro-Par 2007: Parallel Processing. (LNCS 4641)
diff --git a/libstdc++-v3/doc/html/manual/profile_mode.html b/libstdc++-v3/doc/html/manual/profile_mode.html
index fca37908a35..e47ecdb67e1 100644
--- a/libstdc++-v3/doc/html/manual/profile_mode.html
+++ b/libstdc++-v3/doc/html/manual/profile_mode.html
@@ -135,7 +135,7 @@ vector-size: improvement = 3: call stack = 0x804842c ...
call context.
(Environment variable not supported.)
</p></li></ul></div><p>
- </p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id412060"></a><p><span class="title"><i>
+ </p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id659013"></a><p><span class="title"><i>
Perflint: A Context Sensitive Performance Advisor for C++ Programs
</i>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername">
Proceedings of the 2009 International Symposium on Code Generation
diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html
index bab3b46b30c..4d8f3d01172 100644
--- a/libstdc++-v3/doc/html/manual/setup.html
+++ b/libstdc++-v3/doc/html/manual/setup.html
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="bugs.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I. 
Introduction
-</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></div><p>To transform libstdc++ sources into installed include files
+</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></div><p>To transform libstdc++ sources into installed include files
and properly built binaries useful for linking to other software is
a multi-step process. Steps include getting the sources,
configuring and building the sources, testing, and installation.
diff --git a/libstdc++-v3/doc/html/manual/shared_ptr.html b/libstdc++-v3/doc/html/manual/shared_ptr.html
index ea7e3208f9d..978c7ec54c6 100644
--- a/libstdc++-v3/doc/html/manual/shared_ptr.html
+++ b/libstdc++-v3/doc/html/manual/shared_ptr.html
@@ -29,7 +29,7 @@ drops to zero.
Derived classes override those functions to destroy resources in a context
where the correct dynamic type is known. This is an application of the
technique known as type erasure.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id397705"></a>Class Hierarchy</h4></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id737043"></a>Class Hierarchy</h4></div></div></div><p>
A <code class="classname">shared_ptr&lt;T&gt;</code> contains a pointer of
type <span class="type">T*</span> and an object of type
<code class="classname">__shared_count</code>. The shared_count contains a
@@ -71,7 +71,7 @@ be forwarded to <span class="type">Tp</span>'s constructor.
Unlike the other <code class="classname">_Sp_counted_*</code> classes, this one is parameterized on the
type of object, not the type of pointer; this is purely a convenience
that simplifies the implementation slightly.
- </p></dd></dl></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id455193"></a>Thread Safety</h4></div></div></div><p>
+ </p></dd></dl></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id656080"></a>Thread Safety</h4></div></div></div><p>
The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++0x
with support for rvalue-references and the other features from
N2351. As with other libstdc++ headers shared by TR1 and C++0x,
@@ -129,7 +129,7 @@ compiler, standard library, platform etc. For the version of
shared_ptr in libstdc++ the compiler and library are fixed, which
makes things much simpler: we have an atomic CAS or we don't, see Lock
Policy below for details.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id410726"></a>Selecting Lock Policy</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id618309"></a>Selecting Lock Policy</h4></div></div></div><p>
</p><p>
There is a single <code class="classname">_Sp_counted_base</code> class,
which is a template parameterized on the enum
@@ -170,7 +170,7 @@ used when libstdc++ is built without <code class="literal">--enable-threads</cod
<code class="filename">ext/atomicity.h</code>, which detect if the program
is multi-threaded. If only one thread of execution exists in
the program then less expensive non-atomic operations are used.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id477345"></a>Dual C++0x and TR1 Implementation</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id679959"></a>Dual C++0x and TR1 Implementation</h4></div></div></div><p>
The classes derived from <code class="classname">_Sp_counted_base</code> (see Class Hierarchy
below) and <code class="classname">__shared_count</code> are implemented separately for C++0x
and TR1, in <code class="filename">bits/boost_sp_shared_count.h</code> and
@@ -181,7 +181,7 @@ The TR1 implementation is considered relatively stable, so is unlikely to
change unless bug fixes require it. If the code that is common to both
C++0x and TR1 modes needs to diverge further then it might be necessary to
duplicate additional classes and only make changes to the C++0x versions.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id474156"></a>Related functions and classes</h4></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id680859"></a>Related functions and classes</h4></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
<code class="code">const_pointer_cast</code></span></dt><dd><p>
As noted in N2351, these functions can be implemented non-intrusively using
the alias constructor. However the aliasing constructor is only available
@@ -214,10 +214,10 @@ is called. Users should not try to use this.
As well as the extra constructors, this implementation also needs some
members of _Sp_counted_deleter to be protected where they could otherwise
be private.
- </p></dd></dl></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.using"></a>Use</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id498188"></a>Examples</h4></div></div></div><p>
+ </p></dd></dl></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.using"></a>Use</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id715170"></a>Examples</h4></div></div></div><p>
Examples of use can be found in the testsuite, under
<code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id461223"></a>Unresolved Issues</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id686787"></a>Unresolved Issues</h4></div></div></div><p>
The resolution to C++ Standard Library issue <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#674" target="_top">674</a>,
"shared_ptr interface changes for consistency with N1856" will
need to be implemented after it is accepted into the working
@@ -265,7 +265,7 @@ be private.
code to work with, Peter Dimov in particular for his help and
invaluable advice on thread safety. Phillip Jordan and Paolo
Carlini for the lock policy implementation.
- </p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id414603"></a><p>[<abbr class="abbrev">
+ </p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id622100"></a><p>[<abbr class="abbrev">
n2351
</abbr>] <span class="title"><i>
Improving shared_ptr for C++0x, Revision 2
@@ -274,7 +274,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id414627"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id622124"></a><p>[<abbr class="abbrev">
n2456
</abbr>] <span class="title"><i>
C++ Standard Library Active Issues List (Revision R52)
@@ -283,7 +283,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id469083"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id635143"></a><p>[<abbr class="abbrev">
n2461
</abbr>] <span class="title"><i>
Working Draft, Standard for Programming Language C++
@@ -292,7 +292,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id416974"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id685426"></a><p>[<abbr class="abbrev">
boostshared_ptr
</abbr>] <span class="title"><i>
Boost C++ Libraries documentation - shared_ptr class template
diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html
index beca228c986..09f971a46e3 100644
--- a/libstdc++-v3/doc/html/manual/spine.html
+++ b/libstdc++-v3/doc/html/manual/spine.html
@@ -2,18 +2,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="intro.html" title="Part I.  Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"></a>The GNU C++ Library</h1></div><div><p class="copyright">Copyright © 2009
<a class="ulink" href="http://www.fsf.org" target="_top">FSF</a>
- </p></div><div><div class="legalnotice"><a id="id451530"></a><p>
+ </p></div><div><div class="legalnotice"><a id="id699529"></a><p>
<a class="link" href="license.html" title="License">License</a>
</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="intro.html">I.
Introduction
-</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="support.html">II.
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="support.html">II.
Support
</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="diagnostics.html">III.
Diagnostics
-</a></span></dt><dd><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="utilities.html">IV.
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="utilities.html">IV.
Utilities
</a></span></dt><dd><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="strings.html">V.
@@ -46,12 +46,12 @@
</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B.
Porting and Maintenance
-</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C.
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C.
Free Software Needs Free Documentation
</a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D.
GNU General Public License version 3
- </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="bk01ix01.html">Index</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id452999">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id458222">C++ TR1 Implementation Status</a></dt><dt>1.3. <a href="status.html#id478373">C++ 200x Implementation Status</a></dt><dt>1.4. <a href="status.html#id410254">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using_headers.html#id415096">C++ 1998 Library Headers</a></dt><dt>3.2. <a href="using_headers.html#id458725">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.3. <a href="using_headers.html#id457966">C++ 200x Library Headers</a></dt><dt>3.4. <a href="using_headers.html#id407365">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.5. <a href="using_headers.html#id450814">C++ TR 1 Library Headers</a></dt><dt>3.6. <a href="using_headers.html#id480798">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.7. <a href="using_headers.html#id517956">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.8. <a href="using_headers.html#id402018">C++ ABI Headers</a></dt><dt>3.9. <a href="using_headers.html#id400704">Extension Headers</a></dt><dt>3.10. <a href="using_headers.html#id355542">Extension Debug Headers</a></dt><dt>3.11. <a href="using_headers.html#id461107">Extension Profile Headers</a></dt><dt>3.12. <a href="using_headers.html#id497297">Extension Parallel Headers</a></dt><dt>30.1. <a href="bk01pt12ch30s03.html#id517820">Debugging Containers</a></dt><dt>30.2. <a href="bk01pt12ch30s03.html#id357333">Debugging Containers C++0x</a></dt><dt>31.1. <a href="bk01pt12ch31s03.html#id479890">Parallel Algorithms</a></dt><dt>32.1. <a href="bk01pt12ch32s02.html#id474437">Code Location</a></dt><dt>32.2. <a href="bk01pt12ch32s07.html#id501361">Diagnostics</a></dt><dt>33.1. <a href="bitmap_allocator.html#id393472">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="documentation_style.html#id431910">HTML to Docbook XML markup comparison</a></dt><dt>A.2. <a href="documentation_style.html#id514274">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id505845">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id403516">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. 
+ </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="bk01ix01.html">Index</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id700007">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id693868">C++ TR1 Implementation Status</a></dt><dt>1.3. <a href="status.html#id633674">C++ 200x Implementation Status</a></dt><dt>1.4. <a href="status.html#id631613">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using_headers.html#id651524">C++ 1998 Library Headers</a></dt><dt>3.2. <a href="using_headers.html#id639501">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.3. <a href="using_headers.html#id645876">C++ 200x Library Headers</a></dt><dt>3.4. <a href="using_headers.html#id646983">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.5. <a href="using_headers.html#id631952">C++ TR 1 Library Headers</a></dt><dt>3.6. <a href="using_headers.html#id636818">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.7. <a href="using_headers.html#id685876">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.8. <a href="using_headers.html#id639029">C++ ABI Headers</a></dt><dt>3.9. <a href="using_headers.html#id637647">Extension Headers</a></dt><dt>3.10. <a href="using_headers.html#id631989">Extension Debug Headers</a></dt><dt>3.11. <a href="using_headers.html#id521103">Extension Profile Headers</a></dt><dt>3.12. <a href="using_headers.html#id684216">Extension Parallel Headers</a></dt><dt>30.1. <a href="bk01pt12ch30s03.html#id672482">Debugging Containers</a></dt><dt>30.2. <a href="bk01pt12ch30s03.html#id646525">Debugging Containers C++0x</a></dt><dt>31.1. <a href="bk01pt12ch31s03.html#id731921">Parallel Algorithms</a></dt><dt>32.1. <a href="bk01pt12ch32s02.html#id647548">Code Location</a></dt><dt>32.2. <a href="bk01pt12ch32s07.html#id521055">Diagnostics</a></dt><dt>33.1. <a href="bitmap_allocator.html#id730908">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="documentation_style.html#id740402">HTML to Docbook XML markup comparison</a></dt><dt>A.2. <a href="documentation_style.html#id613462">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id623096">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id721371">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. 
Introduction
</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index cbc8ddab532..40dc1a26eb2 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -8,7 +8,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003.
</p><p>
This page describes the C++0x support in mainline GCC SVN, not in any
particular release.
-</p><div class="table"><a id="id452999"></a><p class="title"><b>Table 1.1. C++ 1998/2003 Implementation Status</b></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+</p><div class="table"><a id="id700007"></a><p class="title"><b>Table 1.1. C++ 1998/2003 Implementation Status</b></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
<span class="emphasis"><em>18</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Language support</em></span>
@@ -153,7 +153,7 @@ In this implementation the header names are prefixed by
</p><p>
This page describes the TR1 support in mainline GCC SVN, not in any particular
release.
-</p><div class="table"><a id="id458222"></a><p class="title"><b>Table 1.2. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
+</p><div class="table"><a id="id693868"></a><p class="title"><b>Table 1.2. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
<p>
Uses code from
<a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
@@ -171,7 +171,7 @@ presence of the required flag.
</p><p>
This page describes the C++0x support in mainline GCC SVN, not in any
particular release.
-</p><div class="table"><a id="id478373"></a><p class="title"><b>Table 1.3. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+</p><div class="table"><a id="id633674"></a><p class="title"><b>Table 1.3. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
<span class="emphasis"><em>18</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Language support</em></span>
@@ -240,7 +240,7 @@ decimal floating-point arithmetic
</p><p>
This page describes the TR 24733 support in mainline GCC SVN, not in any
particular release.
-</p><div class="table"><a id="id410254"></a><p class="title"><b>Table 1.4. C++ TR 24733 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+</p><div class="table"><a id="id631613"></a><p class="title"><b>Table 1.4. C++ TR 24733 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
<span class="emphasis"><em>0</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Introduction</em></span>
diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html
index 82f3ad7367e..a1e78f27289 100644
--- a/libstdc++-v3/doc/html/manual/strings.html
+++ b/libstdc++-v3/doc/html/manual/strings.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.strings"></a>Part V. 
Strings
- <a id="id405758" class="indexterm"></a>
+ <a id="id710761" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 13. String Classes</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html
index 48d38aa8df5..fb217b89a0d 100644
--- a/libstdc++-v3/doc/html/manual/support.html
+++ b/libstdc++-v3/doc/html/manual/support.html
@@ -5,5 +5,5 @@
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.support"></a>Part II. 
Support
- <a id="id492773" class="indexterm"></a>
+ <a id="id652738" class="indexterm"></a>
</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html
index 9d95b85ea2e..80988a4febe 100644
--- a/libstdc++-v3/doc/html/manual/test.html
+++ b/libstdc++-v3/doc/html/manual/test.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; test&#10; , &#10; testsuite&#10; , &#10; performance&#10; , &#10; conformance&#10; , &#10; ABI&#10; , &#10; exception safety&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.test"></a>Test</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; test&#10; , &#10; testsuite&#10; , &#10; performance&#10; , &#10; conformance&#10; , &#10; ABI&#10; , &#10; exception safety&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th><td width="20%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.test"></a>Test</h2></div></div></div><p>
The libstdc++ testsuite includes testing for standard conformance,
regressions, ABI, and performance.
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="test.organization"></a>Organization</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="test.organization.layout"></a>Directory Layout</h4></div></div></div><p>
@@ -486,4 +489,4 @@ only default variables.
</p><p>
A number of class abstractions for performance counters, and
reporting functions including:
- </p><div class="itemizedlist"><ul type="circle"><li><p>time_counter</p></li><li><p>resource_counter</p></li><li><p>report_performance</p></li></ul></div></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using</td></tr></table></div></body></html>
+ </p><div class="itemizedlist"><ul type="circle"><li><p>time_counter</p></li><li><p>resource_counter</p></li><li><p>report_performance</p></li></ul></div></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Porting to New Hardware or Operating Systems </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> ABI Policy and Guidelines</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html
index b7bf46a67d7..1d63cb53087 100644
--- a/libstdc++-v3/doc/html/manual/using.html
+++ b/libstdc++-v3/doc/html/manual/using.html
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Part I. 
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I. 
Introduction
-</th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.lib"></a>Linking Library Binary Files</h2></div></div></div><p>
+</th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.lib"></a>Linking Library Binary Files</h2></div></div></div><p>
If you only built a static library (libstdc++.a), or if you
specified static linking, you don't have to worry about this.
But if you built a shared library (libstdc++.so) and linked
@@ -41,4 +41,4 @@
A libstdc++.la file is also installed, for use with Libtool. If
you use Libtool to create your executables, these details are
taken care of for you.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html
index 6bc776c2c6c..5c74e93ac8f 100644
--- a/libstdc++-v3/doc/html/manual/using_exceptions.html
+++ b/libstdc++-v3/doc/html/manual/using_exceptions.html
@@ -1,6 +1,319 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_concurrency.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exception"></a>Exceptions</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.propagating"></a>Propagating Exceptions aka Exception Neutrality</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.no"></a>Support for <code class="literal">-fno-exceptions</code></h3></div></div></div><p>
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; C++&#10; , &#10; exception&#10; , &#10; error&#10; , &#10; exception neutrality&#10; , &#10; exception safety&#10; , &#10; exception propagation&#10; , &#10; -fno-exceptions&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_concurrency.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exceptions"></a>Exceptions</h2></div></div></div><p>
+The C++ language provides language support for stack unwinding
+with <code class="literal">try</code> and <code class="literal">catch</code> blocks and
+the <code class="literal">throw</code> keyword.
+</p><p>
+These are very powerful constructs, and require some thought when
+applied to the standard library in order to yield components that work
+efficiently while cleaning up resources when unexpectedly killed via
+exceptional circumstances.
+</p><p>
+Two general topics of discussion follow:
+exception neutrality and exception safety.
+</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p>
+ What is exception-safe code?
+ </p><p>
+ Will define this as reasonable and well-defined behavior by classes
+ and functions from the standard library when used by user-defined
+ classes and functions that are themselves exception safe.
+ </p><p>
+ Please note that using exceptions in combination with templates
+ imposes an additional requirement for exception
+ safety. Instantiating types are required to have destructors that
+ do no throw.
+ </p><p>
+ Using the layered approach from Abrahams, can classify library
+ components as providing set levels of safety. These will be called
+ exception guarantees, and can be divided into three categories.
+ </p><div class="itemizedlist"><ul type="disc"><li><p>
+ One. Don't throw.
+ </p><p>
+ As specified in 23.2.1 general container requirements. Applicable
+ to container and string classes.
+ </p><p>
+ Member
+ functions <code class="function">erase</code>, <code class="function">pop_back</code>, <code class="function">pop_front</code>, <code class="function">swap</code>, <code class="function">clear</code>. And <span class="type">iterator</span>
+ copy constructor and assignment operator.
+ </p></li><li><p>
+ Two. Don't leak resources when exceptions are thrown. This is
+ also referred to as the “<span class="quote">basic</span>” exception safety guarantee.
+ </p><p>
+ This applicable throughout the standard library.
+ </p></li><li><p>
+ Three. Commit-or-rollback semantics. This is
+ referred to as “<span class="quote">strong</span>” exception safety guarantee.
+ </p><p>
+ As specified in 23.2.1 general container requirements. Applicable
+ to container and string classes.
+ </p><p>
+ Member functions <code class="function">insert</code> of a single
+ element, <code class="function">push_back</code>, <code class="function">push_front</code>,
+ and <code class="function">rehash</code>.
+ </p></li></ul></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.propagating"></a>Exception Neutrality</h3></div></div></div><p>
+ Simply put, once thrown an exception object should continue in
+ flight unless handled explicitly. In practice, this means
+ propagating exceptions should not be swallowed in
+ gratuitous <code class="literal">catch(...)</code> blocks. Instead,
+ matching <code class="literal">try</code> and <code class="literal">catch</code>
+ blocks should have specific catch handlers and allow un-handed
+ exception objects to propagate. If a
+ terminating <code class="literal">catch(...)</code> blocks exist then it
+ should end with a <code class="literal">throw</code> to re-throw the current
+ exception.
+ </p><p>
+ Why do this?
+ </p><p>
+ By allowing exception objects to propagate, a more flexible
+ approach to error handling is made possible (although not
+ required.) Instead of dealing with an error immediately, one can
+ allow the exception to propagate up until sufficient context is
+ available and the choice of exiting or retrying can be made in an
+ informed manner.
+ </p><p>
+ Unfortunately, this tends to be more of a guideline than a strict
+ rule as applied to the standard library. As such, the following is
+ a list of known problem areas where exceptions are not propagated.
+ </p><div class="itemizedlist"><ul type="disc"><li><p>
+ Input/Output
+ </p><p>
+ The destructor <code class="function">ios_base::Init::~Init()</code>
+ swallows all exceptions from <code class="function">flush</code> called on
+ all open streams at termination.
+ </p><p>
+ All formatted input in <code class="classname">basic_istream</code> or
+ formatted output in <code class="classname">basic_ostream</code> can be
+ configured to swallow exceptions
+ when <code class="function">exceptions</code> is set to
+ ignore <span class="type">ios_base::badbit</span>.
+ </p><p>
+ Functions that have been registered
+ with <code class="function">ios_base::register_callback</code> swallow all
+ exceptions when called as part of a callback event.
+ </p><p>
+ When closing the underlying
+ file, <code class="function">basic_filebuf::close</code> will swallow
+ (non-cancellation) exceptions thrown and return <code class="literal">NULL</code>.
+ </p></li><li><p>
+ Thread
+ </p><p>
+ The constructors of <code class="classname">thread</code> that take a
+ callable function argument swallow all exceptions resulting from
+ executing the function argument.
+ </p></li></ul></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.no"></a>Doing without</h3></div></div></div><p>
+ C++ is a language that strives to be as efficient as is possible
+ in delivering features. As such, considerable care is used by both
+ language implementer and designers to make sure unused features
+ not impose hidden or unexpected costs. The GNU system tries to be
+ as flexible and as configurable as possible. So, it should come as
+ no surprise that GNU C++ provides an optional language extension,
+ spelled <code class="literal">-fno-exceptions</code>, as a way to excise the
+ implicitly generated magic necessary to
+ support <code class="literal">try</code> and <code class="literal">catch</code> blocks
+ and thrown objects. (Language support
+ for <code class="literal">-fno-exceptions</code> is documented in the GNU
+ GCC <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options" target="_top">manual</a>.)
+ </p><p>Before detailing the library support
+ for <code class="literal">-fno-exceptions</code>, first a passing note on
+ the things lost when this flag is used: it will break exceptions
+ trying to pass through code compiled
+ with <code class="literal">-fno-exceptions</code> whether or not that code
+ has any <code class="literal">try</code> or <code class="literal">catch</code>
+ constructs. If you might have some code that throws, you shouldn't
+ use <code class="literal">-fno-exceptions</code>. If you have some code that
+ uses <code class="literal">try</code> or <code class="literal">catch</code>, you
+ shouldn't use <code class="literal">-fno-exceptions</code>.
+ </p><p>
+ And what it to be gained, tinkering in the back alleys with a
+ language like this? Exception handling overhead can be measured
+ in the size of the executable binary, and varies with the
+ capabilities of the underlying operating system and specific
+ configuration of the C++ compiler. On recent hardware with GNU
+ system software of the same age, the combined code and data size
+ overhead for enabling exception handling is around 7%. Of course,
+ if code size is of singular concern than using the appropriate
+ optimizer setting with exception handling enabled
+ (ie, <code class="literal">-Os -fexceptions</code>) may save up to twice
+ that, and preserve error checking.
+ </p><p>
+ So. Hell bent, we race down the slippery track, knowing the brakes
+ are a little soft and that the right front wheel has a tendency to
+ wobble at speed. Go on: detail the standard library support
+ for <code class="literal">-fno-exceptions</code>.
+ </p><p>
+ In sum, valid C++ code with exception handling is transformed into
+ a dialect without exception handling. In detailed steps: all use
+ of the C++
+ keywords <code class="literal">try</code>, <code class="literal">catch</code>,
+ and <code class="literal">throw</code> in the standard library have been
+ permanently replaced with the pre-processor controlled equivalents
+ spelled <code class="literal">__try</code>, <code class="literal">__catch</code>,
+ and <code class="literal">__throw_exception_again</code>. They are defined
+ as follows.
+ </p><pre class="programlisting">
+#ifdef __EXCEPTIONS
+# define __try try
+# define __catch(X) catch(X)
+# define __throw_exception_again throw
+#else
+# define __try if (true)
+# define __catch(X) if (false)
+# define __throw_exception_again
+#endif
+</pre><p>
+ In addition, for every object derived from
+ class <code class="classname">exception</code>, there exists a corresponding
+ function with C language linkage. An example:
+</p><pre class="programlisting">
+#ifdef __EXCEPTIONS
+ void __throw_bad_exception(void)
+ { throw bad_exception(); }
+#else
+ void __throw_bad_exception(void)
+ { abort(); }
+#endif
+</pre><p>
+ The last language feature needing to be transformed
+ by <code class="literal">-fno-exceptions</code> is treatment of exception
+ specifications on member functions. Fortunately, the compiler deals
+ with this by ignoring exception specifications and so no alternate
+ source markup is needed.
+</p><p>
+ By using this combination of language re-specification by the
+ compiler, and the pre-processor tricks and the functional
+ indirection layer for thrown exception objects by the library,
+ libstdc++ files can be compiled
+ with <code class="literal">-fno-exceptions</code>.
+</p><p>
+ User code that uses C++ keywords
+ like <code class="literal">throw</code>, <code class="literal">try</code>,
+ and <code class="literal">catch</code> will produce errors even if the user
+ code has included libstdc++ headers and is using constructs
+ like <code class="classname">basic_iostream</code>. Even though the standard
+ library has been transformed, user code may need modification. User
+ code that attempts or expects to do error checking on standard
+ library components compiled with exception handling disabled should
+ be evaluated and potentially made conditional.
+</p><p>
+ Some issues remain with this approach (see bugzilla entry
+ 25191). Code paths are not equivalent, in
+ particular <code class="literal">catch</code> blocks are not evaluated. Also
+ problematic are <code class="literal">throw</code> expressions expecting a
+ user-defined throw handler. Known problem areas in the standard
+ library include using an instance
+ of <code class="classname">basic_istream</code>
+ with <code class="function">exceptions</code> set to specific
+ <span class="type">ios_base::iostate</span> conditions, or
+ cascading <code class="literal">catch</code> blocks that dispatch error
+ handling or recovery efforts based on the type of exception object
+ thrown.
+</p><p>
+ Oh, and by the way: none of this hackery is at all
+ special. (Although perhaps well-deserving of a raised eyebrow.)
+ Support continues to evolve and may change in the future. Similar
+ and even additional techniques are used in other C++ libraries and
+ compilers.
+</p><p>
+ C++ hackers with a bent for language and control-flow purity have
+ been successfully consoled by grizzled C veterans lamenting the
+ substitution of the C language keyword
+ <code class="literal">const</code> with the uglified
+ doppelganger <code class="literal">__const</code>.
+</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.compat"></a>Compatibility</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.c"></a>With <code class="literal">C</code></h4></div></div></div><p>
+ C language code that is expecting to interoperate with C++ should be
+ compiled with <code class="literal">-fexceptions</code>. This will make
+ debugging a C language function called as part of C++-induced stack
+ unwinding possible.
+</p><p>
+ In particular, unwinding into a frame with no exception handling
+data will cause a runtime abort. If the unwinder runs out of unwind
+info before it finds a handler, <code class="function">std::terminate()</code>
+is called.
+</p><p>
+ Please note that most development environments should take care of
+ getting these details right. For GNU systems, all appropriate parts
+ of the GNU C library are already compiled
+ with <code class="literal">-fexceptions</code>.
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.posix"></a>With <code class="literal">POSIX</code> thread cancellation</h4></div></div></div><p>
+ GNU systems re-use some of the exception handling mechanisms to
+ track control flow for <code class="literal">POSIX</code> thread cancellation.
+</p><p>
+ Cancellation points are functions defined by POSIX as worthy of
+ special treatment. The standard library may use some of these
+ functions to implement parts of the ISO C++ standard or depend on
+ them for extensions.
+</p><p>
+ Of note:
+</p><p>
+ <code class="function">nanosleep</code>,
+ <code class="function">read</code>, <code class="function">write</code>, <code class="function">open</code>, <code class="function">close</code>,
+ and <code class="function">wait</code>.
+</p><p>
+ The parts of libstdc++ that use C library functions marked as
+ cancellation points should take pains to be exception neutral.
+ Failing this, <code class="literal">catch</code> blocks have been augmented to
+ show that the POSIX cancellation object is in flight.
+</p><p>
+ This augmentation adds a <code class="literal">catch</code> block
+ for <code class="classname">__cxxabiv1::__forced_unwind</code>, which is the
+ object representing the POSIX cancellation object. Like so:
+</p><pre class="programlisting">
+ catch(const __cxxabiv1::__forced_unwind&amp;)
+ {
+ this-&gt;_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this-&gt;_M_setstate(ios_base::badbit); }
+</pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id618326"></a><p><span class="title"><i>
+ System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
+ </i>. </span><span class="pagenums">
+ 2.9.5 Thread Cancellation
+ . </span><span class="copyright">Copyright © 2008
+ The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
+ <a class="ulink" href="http://www.opengroup.org/austin/" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id627763"></a><p><span class="title"><i>
+ Error and Exception Handling
+ </i>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
+ Boost
+ . </span></span><span class="biblioid">
+ <a class="ulink" href="http://www.boost.org/community/error_handling.html" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id633982"></a><p><span class="title"><i>
+ Exception-Safety in Generic Components
+ </i>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
+ Boost
+ . </span></span><span class="biblioid">
+ <a class="ulink" href="http://www.boost.org/community/exception_safety.html" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id634268"></a><p><span class="title"><i>
+ Standard Library Exception Policy
+ </i>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
+ WG21 N1077
+ . </span></span><span class="biblioid">
+ <a class="ulink" href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id642510"></a><p><span class="title"><i>
+ ia64 c++ abi exception handling
+ </i>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername">
+ GNU
+ . </span></span><span class="biblioid">
+ <a class="ulink" href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id636666"></a><p><span class="title"><i>
+ Appendix E: Standard-Library Exception Safety
+ </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="biblioid">
+ <a class="ulink" href="http://www.research.att.com/~bs/3rd_safe.pdf" target="_top">
+ </a>
+ . </span></p></div><div class="biblioentry"><a id="id707620"></a><p><span class="title"><i>
+ Exceptional C++
+ </i>. </span><span class="pagenums">
+ Exception-Safety Issues and Techniques
+ . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="id652939"></a><p><span class="title"><i>
+ exception_defines.h #defines try/catch
+ </i>. </span><span class="subtitle">
+ GCC Bug <a class="ulink" href="http://gcc.gnu.org/PR25191" target="_top">25191</a>
+ . </span><span class="biblioid">
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html
index 62bc8f9c665..4986fe585a3 100644
--- a/libstdc++-v3/doc/html/manual/using_headers.html
+++ b/libstdc++-v3/doc/html/manual/using_headers.html
@@ -20,19 +20,19 @@
upcoming 200x standard.
</p><p>
C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
- </p><div class="table"><a id="id415096"></a><p class="title"><b>Table 3.1. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id458725"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id651524"></a><p class="title"><b>Table 3.1. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id639501"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
C++0x include files. These are only available in C++0x compilation
mode, i.e. <code class="literal">-std=c++0x</code> or <code class="literal">-std=gnu++0x</code>.
-</p><p></p><div class="table"><a id="id457966"></a><p class="title"><b>Table 3.3. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id407365"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdatomic</code></td></tr><tr><td align="left"><code class="filename">cstdbool</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td></tr><tr><td align="left"><code class="filename">cstring</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td></tr><tr><td align="left"><code class="filename">cwctype</code></td><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><p></p><div class="table"><a id="id645876"></a><p class="title"><b>Table 3.3. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id646983"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdatomic</code></td></tr><tr><td align="left"><code class="filename">cstdbool</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td></tr><tr><td align="left"><code class="filename">cstring</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td></tr><tr><td align="left"><code class="filename">cwctype</code></td><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
In addition, TR1 includes as:
-</p><div class="table"><a id="id450814"></a><p class="title"><b>Table 3.5. C++ TR 1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id480798"></a><p class="title"><b>Table 3.6. C++ TR 1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
+</p><div class="table"><a id="id631952"></a><p class="title"><b>Table 3.5. C++ TR 1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id636818"></a><p class="title"><b>Table 3.6. C++ TR 1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
compiler supports scalar decimal floating-point types defined via
<code class="code">__attribute__((mode(SD|DD|LD)))</code>.
-</p><div class="table"><a id="id517956"></a><p class="title"><b>Table 3.7. C++ TR 24733 Decimal Floating-Point Header</b></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><div class="table"><a id="id685876"></a><p class="title"><b>Table 3.7. C++ TR 24733 Decimal Floating-Point Header</b></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
Also included are files for the C++ ABI interface:
-</p><div class="table"><a id="id402018"></a><p class="title"><b>Table 3.8. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><div class="table"><a id="id639029"></a><p class="title"><b>Table 3.8. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
And a large variety of extensions.
-</p><div class="table"><a id="id400704"></a><p class="title"><b>Table 3.9. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id355542"></a><p class="title"><b>Table 3.10. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id461107"></a><p class="title"><b>Table 3.11. Extension Profile Headers</b></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id497297"></a><p class="title"><b>Table 3.12. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
+</p><div class="table"><a id="id637647"></a><p class="title"><b>Table 3.9. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id631989"></a><p class="title"><b>Table 3.10. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id521103"></a><p class="title"><b>Table 3.11. Extension Profile Headers</b></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id684216"></a><p class="title"><b>Table 3.12. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
</p><p>First, mixing different dialects of the standard headers is not
possible. It's an all-or-nothing affair. Thus, code like
</p><pre class="programlisting">
diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html
index 3da95195573..26cef8e6d18 100644
--- a/libstdc++-v3/doc/html/manual/utilities.html
+++ b/libstdc++-v3/doc/html/manual/utilities.html
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV.  Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="functors.html" title="Chapter 9. Functors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. 
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV.  Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="functors.html" title="Chapter 9. Functors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. 
Utilities
-</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.util"></a>Part IV. 
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.util"></a>Part IV. 
Utilities
- <a id="id457371" class="indexterm"></a>
-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Functors</td></tr></table></div></body></html>
+ <a id="id622508" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Functors</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html
index 8fa09254c5c..4d153da62b4 100644
--- a/libstdc++-v3/doc/html/spine.html
+++ b/libstdc++-v3/doc/html/spine.html
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="manual/spine.html" title="The GNU C++ Library" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Documentation</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library Documentation</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="manual/spine.html" title="The GNU C++ Library" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Documentation</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library Documentation</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
<a class="ulink" href="http://www.fsf.org" target="_top">FSF</a>
</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="book"><a href="manual/spine.html">The GNU C++ Library</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I.
Introduction
-</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/make.html">Make</a></span></dt><dt><span class="sect1"><a href="manual/test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/support.html">II.
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/support.html">II.
Support
</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="manual/fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="manual/termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="manual/verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/diagnostics.html">III.
Diagnostics
-</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="manual/utilities.html">IV.
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="manual/utilities.html">IV.
Utilities
</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="manual/pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="manual/memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="manual/strings.html">V.
@@ -44,7 +44,7 @@
</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="manual/source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/appendix_porting.html">B.
Porting and Maintenance
-</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_free.html">C.
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_free.html">C.
Free Software Needs Free Documentation
</a></span></dt><dt><span class="appendix"><a href="manual/appendix_gpl.html">D.
diff --git a/libstdc++-v3/doc/xml/authors.xml b/libstdc++-v3/doc/xml/authors.xml
index 43d8d864130..5d7909f8b14 100644
--- a/libstdc++-v3/doc/xml/authors.xml
+++ b/libstdc++-v3/doc/xml/authors.xml
@@ -74,7 +74,7 @@
Allocators, ABI, API evolution and deprecation history,
Backwards Compatibility, Thread, Debug Support, Locales,
Facets, Parallel Mode, Headers, Namespaces, Construction and
- Structure, DocBook conversion and layout.
+ Structure, Using Exceptions, DocBook conversion and layout.
</para>
</authorblurb>
</author>
@@ -148,6 +148,17 @@
</author>
<author>
+ <firstname>Silvius</firstname>
+ <surname>Rus</surname>
+
+ <authorblurb>
+ <para>
+ Profile mode
+ </para>
+ </authorblurb>
+ </author>
+
+ <author>
<firstname>Johannes</firstname>
<surname>Singler</surname>
diff --git a/libstdc++-v3/doc/xml/manual/appendix_porting.xml b/libstdc++-v3/doc/xml/manual/appendix_porting.xml
index f565c0e03d4..c44a9adeb86 100644
--- a/libstdc++-v3/doc/xml/manual/appendix_porting.xml
+++ b/libstdc++-v3/doc/xml/manual/appendix_porting.xml
@@ -35,6 +35,11 @@
parse="xml" href="internals.xml">
</xi:include>
+ <!-- Test -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="xml" href="test.xml">
+ </xi:include>
+
<!-- ABI Policy and Guidelines -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="abi.xml">
diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml
index d76f6e8e419..097d8917695 100644
--- a/libstdc++-v3/doc/xml/manual/diagnostics.xml
+++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml
@@ -71,11 +71,6 @@
</programlisting>
</sect1>
- <sect1 id="manual.diagnostics.exceptions.cancellation" xreflabel="Cancellation">
- <title>Cancellation</title>
- <para>
- </para>
- </sect1>
</chapter>
<chapter id="manual.diagnostics.concept_checking" xreflabel="Concept Checking">
diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml
index d4e1d12d896..77824985854 100644
--- a/libstdc++-v3/doc/xml/manual/intro.xml
+++ b/libstdc++-v3/doc/xml/manual/intro.xml
@@ -870,13 +870,8 @@ started to build.
</sect1>
- <!-- Section 04 : Test -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- parse="xml" href="test.xml">
- </xi:include>
</chapter>
-
<!-- Chapter 03 : Using -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="using.xml">
diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
index bf25bb766ac..d9ff8cadef4 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -1290,32 +1290,12 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
</para>
</sect2>
- </sect1>
-
- <sect1 id="manual.intro.using.exception" xreflabel="Exceptions">
- <?dbhtml filename="using_exceptions.html"?>
- <title>Exceptions</title>
-
- <sect2 id="intro.using.exception.propagating" xreflabel="Propagating Exceptions">
-
- <title>Propagating Exceptions aka Exception Neutrality</title>
- <para>
- </para>
- </sect2>
-
- <sect2 id="intro.using.exception.safety" xreflabel="Exception Safety">
- <title>Exception Safety</title>
- <para>
- </para>
- </sect2>
-
- <sect2 id="intro.using.exception.no" xreflabel="-fno-exceptions">
- <title>Support for <literal>-fno-exceptions</literal></title>
- <para>
- </para>
- </sect2>
+</sect1>
- </sect1>
+<!-- Section 0x : Exception policies, expectations, topics -->
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="xml" href="using_exceptions.xml">
+</xi:include>
<!-- Section 0x : Debug -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
diff --git a/libstdc++-v3/doc/xml/manual/using_exceptions.xml b/libstdc++-v3/doc/xml/manual/using_exceptions.xml
new file mode 100644
index 00000000000..09c21d41ccc
--- /dev/null
+++ b/libstdc++-v3/doc/xml/manual/using_exceptions.xml
@@ -0,0 +1,579 @@
+<sect1 id="manual.intro.using.exceptions" xreflabel="Using Exceptions">
+<?dbhtml filename="using_exceptions.html"?>
+
+<sect1info>
+ <keywordset>
+ <keyword>
+ C++
+ </keyword>
+ <keyword>
+ exception
+ </keyword>
+ <keyword>
+ error
+ </keyword>
+ <keyword>
+ exception neutrality
+ </keyword>
+ <keyword>
+ exception safety
+ </keyword>
+ <keyword>
+ exception propagation
+ </keyword>
+ <keyword>
+ -fno-exceptions
+ </keyword>
+ </keywordset>
+</sect1info>
+
+<title>Exceptions</title>
+
+<para>
+The C++ language provides language support for stack unwinding
+with <literal>try</literal> and <literal>catch</literal> blocks and
+the <literal>throw</literal> keyword.
+</para>
+
+<para>
+These are very powerful constructs, and require some thought when
+applied to the standard library in order to yield components that work
+efficiently while cleaning up resources when unexpectedly killed via
+exceptional circumstances.
+</para>
+
+<para>
+Two general topics of discussion follow:
+exception neutrality and exception safety.
+</para>
+
+
+<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety">
+<title>Exception Safety</title>
+
+ <para>
+ What is exception-safe code?
+ </para>
+
+ <para>
+ Will define this as reasonable and well-defined behavior by classes
+ and functions from the standard library when used by user-defined
+ classes and functions that are themselves exception safe.
+ </para>
+
+ <para>
+ Please note that using exceptions in combination with templates
+ imposes an additional requirement for exception
+ safety. Instantiating types are required to have destructors that
+ do no throw.
+ </para>
+
+ <para>
+ Using the layered approach from Abrahams, can classify library
+ components as providing set levels of safety. These will be called
+ exception guarantees, and can be divided into three categories.
+ </para>
+
+<itemizedlist>
+
+ <listitem>
+ <para>
+ One. Don't throw.
+ </para>
+ <para>
+ As specified in 23.2.1 general container requirements. Applicable
+ to container and string classes.
+ </para>
+ <para>
+ Member
+ functions <function>erase</function>, <function>pop_back</function>, <function>pop_front</function>, <function>swap</function>, <function>clear</function>. And <type>iterator</type>
+ copy constructor and assignment operator.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Two. Don't leak resources when exceptions are thrown. This is
+ also referred to as the <quote>basic</quote> exception safety guarantee.
+ </para>
+
+ <para>
+ This applicable throughout the standard library.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Three. Commit-or-rollback semantics. This is
+ referred to as <quote>strong</quote> exception safety guarantee.
+ </para>
+
+ <para>
+ As specified in 23.2.1 general container requirements. Applicable
+ to container and string classes.
+ </para>
+ <para>
+ Member functions <function>insert</function> of a single
+ element, <function>push_back</function>, <function>push_front</function>,
+ and <function>rehash</function>.
+ </para>
+
+ </listitem>
+</itemizedlist>
+
+</sect2>
+
+
+<sect2 id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality">
+<title>Exception Neutrality</title>
+ <para>
+ Simply put, once thrown an exception object should continue in
+ flight unless handled explicitly. In practice, this means
+ propagating exceptions should not be swallowed in
+ gratuitous <literal>catch(...)</literal> blocks. Instead,
+ matching <literal>try</literal> and <literal>catch</literal>
+ blocks should have specific catch handlers and allow un-handed
+ exception objects to propagate. If a
+ terminating <literal>catch(...)</literal> blocks exist then it
+ should end with a <literal>throw</literal> to re-throw the current
+ exception.
+ </para>
+
+ <para>
+ Why do this?
+ </para>
+
+ <para>
+ By allowing exception objects to propagate, a more flexible
+ approach to error handling is made possible (although not
+ required.) Instead of dealing with an error immediately, one can
+ allow the exception to propagate up until sufficient context is
+ available and the choice of exiting or retrying can be made in an
+ informed manner.
+ </para>
+
+ <para>
+ Unfortunately, this tends to be more of a guideline than a strict
+ rule as applied to the standard library. As such, the following is
+ a list of known problem areas where exceptions are not propagated.
+ </para>
+
+<itemizedlist>
+ <listitem>
+ <para>
+ Input/Output
+ </para>
+ <para>
+ The destructor <function>ios_base::Init::~Init()</function>
+ swallows all exceptions from <function>flush</function> called on
+ all open streams at termination.
+ </para>
+
+ <para>
+ All formatted input in <classname>basic_istream</classname> or
+ formatted output in <classname>basic_ostream</classname> can be
+ configured to swallow exceptions
+ when <function>exceptions</function> is set to
+ ignore <type>ios_base::badbit</type>.
+ </para>
+
+ <para>
+ Functions that have been registered
+ with <function>ios_base::register_callback</function> swallow all
+ exceptions when called as part of a callback event.
+ </para>
+
+ <para>
+ When closing the underlying
+ file, <function>basic_filebuf::close</function> will swallow
+ (non-cancellation) exceptions thrown and return <literal>NULL</literal>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Thread
+ </para>
+ <para>
+ The constructors of <classname>thread</classname> that take a
+ callable function argument swallow all exceptions resulting from
+ executing the function argument.
+ </para>
+ </listitem>
+</itemizedlist>
+
+</sect2>
+
+<sect2 id="intro.using.exception.no" xreflabel="-fno-exceptions">
+<title>Doing without</title>
+ <para>
+ C++ is a language that strives to be as efficient as is possible
+ in delivering features. As such, considerable care is used by both
+ language implementer and designers to make sure unused features
+ not impose hidden or unexpected costs. The GNU system tries to be
+ as flexible and as configurable as possible. So, it should come as
+ no surprise that GNU C++ provides an optional language extension,
+ spelled <literal>-fno-exceptions</literal>, as a way to excise the
+ implicitly generated magic necessary to
+ support <literal>try</literal> and <literal>catch</literal> blocks
+ and thrown objects. (Language support
+ for <literal>-fno-exceptions</literal> is documented in the GNU
+ GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</ulink>.)
+ </para>
+
+ <para>Before detailing the library support
+ for <literal>-fno-exceptions</literal>, first a passing note on
+ the things lost when this flag is used: it will break exceptions
+ trying to pass through code compiled
+ with <literal>-fno-exceptions</literal> whether or not that code
+ has any <literal>try</literal> or <literal>catch</literal>
+ constructs. If you might have some code that throws, you shouldn't
+ use <literal>-fno-exceptions</literal>. If you have some code that
+ uses <literal>try</literal> or <literal>catch</literal>, you
+ shouldn't use <literal>-fno-exceptions</literal>.
+ </para>
+
+ <para>
+ And what it to be gained, tinkering in the back alleys with a
+ language like this? Exception handling overhead can be measured
+ in the size of the executable binary, and varies with the
+ capabilities of the underlying operating system and specific
+ configuration of the C++ compiler. On recent hardware with GNU
+ system software of the same age, the combined code and data size
+ overhead for enabling exception handling is around 7%. Of course,
+ if code size is of singular concern than using the appropriate
+ optimizer setting with exception handling enabled
+ (ie, <literal>-Os -fexceptions</literal>) may save up to twice
+ that, and preserve error checking.
+ </para>
+
+ <para>
+ So. Hell bent, we race down the slippery track, knowing the brakes
+ are a little soft and that the right front wheel has a tendency to
+ wobble at speed. Go on: detail the standard library support
+ for <literal>-fno-exceptions</literal>.
+ </para>
+
+ <para>
+ In sum, valid C++ code with exception handling is transformed into
+ a dialect without exception handling. In detailed steps: all use
+ of the C++
+ keywords <literal>try</literal>, <literal>catch</literal>,
+ and <literal>throw</literal> in the standard library have been
+ permanently replaced with the pre-processor controlled equivalents
+ spelled <literal>__try</literal>, <literal>__catch</literal>,
+ and <literal>__throw_exception_again</literal>. They are defined
+ as follows.
+ </para>
+
+<programlisting>
+#ifdef __EXCEPTIONS
+# define __try try
+# define __catch(X) catch(X)
+# define __throw_exception_again throw
+#else
+# define __try if (true)
+# define __catch(X) if (false)
+# define __throw_exception_again
+#endif
+</programlisting>
+
+<para>
+ In addition, for every object derived from
+ class <classname>exception</classname>, there exists a corresponding
+ function with C language linkage. An example:
+</para>
+
+<programlisting>
+#ifdef __EXCEPTIONS
+ void __throw_bad_exception(void)
+ { throw bad_exception(); }
+#else
+ void __throw_bad_exception(void)
+ { abort(); }
+#endif
+</programlisting>
+
+<para>
+ The last language feature needing to be transformed
+ by <literal>-fno-exceptions</literal> is treatment of exception
+ specifications on member functions. Fortunately, the compiler deals
+ with this by ignoring exception specifications and so no alternate
+ source markup is needed.
+</para>
+
+<para>
+ By using this combination of language re-specification by the
+ compiler, and the pre-processor tricks and the functional
+ indirection layer for thrown exception objects by the library,
+ libstdc++ files can be compiled
+ with <literal>-fno-exceptions</literal>.
+</para>
+
+<para>
+ User code that uses C++ keywords
+ like <literal>throw</literal>, <literal>try</literal>,
+ and <literal>catch</literal> will produce errors even if the user
+ code has included libstdc++ headers and is using constructs
+ like <classname>basic_iostream</classname>. Even though the standard
+ library has been transformed, user code may need modification. User
+ code that attempts or expects to do error checking on standard
+ library components compiled with exception handling disabled should
+ be evaluated and potentially made conditional.
+</para>
+
+<para>
+ Some issues remain with this approach (see bugzilla entry
+ 25191). Code paths are not equivalent, in
+ particular <literal>catch</literal> blocks are not evaluated. Also
+ problematic are <literal>throw</literal> expressions expecting a
+ user-defined throw handler. Known problem areas in the standard
+ library include using an instance
+ of <classname>basic_istream</classname>
+ with <function>exceptions</function> set to specific
+ <type>ios_base::iostate</type> conditions, or
+ cascading <literal>catch</literal> blocks that dispatch error
+ handling or recovery efforts based on the type of exception object
+ thrown.
+</para>
+
+<para>
+ Oh, and by the way: none of this hackery is at all
+ special. (Although perhaps well-deserving of a raised eyebrow.)
+ Support continues to evolve and may change in the future. Similar
+ and even additional techniques are used in other C++ libraries and
+ compilers.
+</para>
+
+<para>
+ C++ hackers with a bent for language and control-flow purity have
+ been successfully consoled by grizzled C veterans lamenting the
+ substitution of the C language keyword
+ <literal>const</literal> with the uglified
+ doppelganger <literal>__const</literal>.
+</para>
+
+
+</sect2>
+
+<sect2 id="intro.using.exception.compat">
+<title>Compatibility</title>
+
+<sect3 id="using.exception.compat.c">
+<title>With <literal>C</literal></title>
+<para>
+ C language code that is expecting to interoperate with C++ should be
+ compiled with <literal>-fexceptions</literal>. This will make
+ debugging a C language function called as part of C++-induced stack
+ unwinding possible.
+</para>
+
+<para>
+ In particular, unwinding into a frame with no exception handling
+data will cause a runtime abort. If the unwinder runs out of unwind
+info before it finds a handler, <function>std::terminate()</function>
+is called.
+</para>
+
+<para>
+ Please note that most development environments should take care of
+ getting these details right. For GNU systems, all appropriate parts
+ of the GNU C library are already compiled
+ with <literal>-fexceptions</literal>.
+</para>
+
+</sect3>
+
+<sect3 id="using.exception.compat.posix">
+<title>With <literal>POSIX</literal> thread cancellation</title>
+
+<para>
+ GNU systems re-use some of the exception handling mechanisms to
+ track control flow for <literal>POSIX</literal> thread cancellation.
+</para>
+
+<para>
+ Cancellation points are functions defined by POSIX as worthy of
+ special treatment. The standard library may use some of these
+ functions to implement parts of the ISO C++ standard or depend on
+ them for extensions.
+</para>
+
+<para>
+ Of note:
+</para>
+
+<para>
+ <function>nanosleep</function>,
+ <function>read</function>, <function>write</function>, <function>open</function>, <function>close</function>,
+ and <function>wait</function>.
+</para>
+
+<para>
+ The parts of libstdc++ that use C library functions marked as
+ cancellation points should take pains to be exception neutral.
+ Failing this, <literal>catch</literal> blocks have been augmented to
+ show that the POSIX cancellation object is in flight.
+</para>
+
+<para>
+ This augmentation adds a <literal>catch</literal> block
+ for <classname>__cxxabiv1::__forced_unwind</classname>, which is the
+ object representing the POSIX cancellation object. Like so:
+</para>
+
+<programlisting>
+ catch(const __cxxabiv1::__forced_unwind&amp;)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+</programlisting>
+
+
+</sect3>
+</sect2>
+
+<bibliography id="using.exceptions.biblio">
+<title>Bibliography</title>
+
+ <biblioentry>
+ <title>
+ System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
+ </title>
+ <pagenums>
+ 2.9.5 Thread Cancellation
+ </pagenums>
+
+ <copyright>
+ <year>2008</year>
+ <holder>
+ The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
+ </copyright>
+
+ <biblioid>
+ <ulink url="http://www.opengroup.org/austin/">
+ </ulink>
+ </biblioid>
+
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ Error and Exception Handling
+ </title>
+ <author>
+ <firstname>David</firstname>
+ <surname>Abrahams </surname>
+ </author>
+ <publisher>
+ <publishername>
+ Boost
+ </publishername>
+ </publisher>
+ <biblioid>
+ <ulink url="http://www.boost.org/community/error_handling.html">
+ </ulink>
+ </biblioid>
+ </biblioentry>
+
+
+ <biblioentry>
+ <title>
+ Exception-Safety in Generic Components
+ </title>
+ <author>
+ <firstname>David</firstname>
+ <surname>Abrahams</surname>
+ </author>
+ <publisher>
+ <publishername>
+ Boost
+ </publishername>
+ </publisher>
+ <biblioid>
+ <ulink url="http://www.boost.org/community/exception_safety.html">
+ </ulink>
+ </biblioid>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ Standard Library Exception Policy
+ </title>
+ <author>
+ <firstname>Matt</firstname>
+ <surname>Austern</surname>
+ </author>
+ <publisher>
+ <publishername>
+ WG21 N1077
+ </publishername>
+ </publisher>
+ <biblioid>
+ <ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf">
+ </ulink>
+ </biblioid>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ ia64 c++ abi exception handling
+ </title>
+ <author>
+ <firstname>Richard</firstname>
+ <surname>Henderson</surname>
+ </author>
+ <publisher>
+ <publishername>
+ GNU
+ </publishername>
+ </publisher>
+ <biblioid>
+ <ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html">
+ </ulink>
+ </biblioid>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ Appendix E: Standard-Library Exception Safety
+ </title>
+ <author>
+ <firstname>Bjarne</firstname>
+ <surname>Stroustrup</surname>
+ </author>
+ <biblioid>
+ <ulink url="http://www.research.att.com/~bs/3rd_safe.pdf">
+ </ulink>
+ </biblioid>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ Exceptional C++
+ </title>
+ <pagenums>
+ Exception-Safety Issues and Techniques
+ </pagenums>
+ <author>
+ <firstname>Herb</firstname>
+ <surname>Sutter</surname>
+ </author>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ exception_defines.h #defines try/catch
+ </title>
+ <subtitle>
+ GCC Bug <ulink url="http://gcc.gnu.org/PR25191">25191</ulink>
+ </subtitle>
+ <biblioid>
+ </biblioid>
+ </biblioentry>
+
+</bibliography>
+
+</sect1>
diff --git a/libstdc++-v3/include/bits/atomic_0.h b/libstdc++-v3/include/bits/atomic_0.h
index a493ea66af9..0caffaf1e9f 100644
--- a/libstdc++-v3/include/bits/atomic_0.h
+++ b/libstdc++-v3/include/bits/atomic_0.h
@@ -82,14 +82,15 @@ namespace __atomic0
__r; })
/// atomic_flag
- struct atomic_flag : private __atomic_flag_base
+ struct atomic_flag : public __atomic_flag_base
{
atomic_flag() = default;
~atomic_flag() = default;
atomic_flag(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) = delete;
- atomic_flag(bool __i) { _M_i = __i; } // XXX deleted copy ctor != agg
+ // Conversion to ATOMIC_FLAG_INIT.
+ atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
bool
test_and_set(memory_order __m = memory_order_seq_cst) volatile;
diff --git a/libstdc++-v3/include/bits/atomic_2.h b/libstdc++-v3/include/bits/atomic_2.h
index 8e8e7ff16f8..d39adb920a2 100644
--- a/libstdc++-v3/include/bits/atomic_2.h
+++ b/libstdc++-v3/include/bits/atomic_2.h
@@ -44,14 +44,15 @@
namespace __atomic2
{
/// atomic_flag
- struct atomic_flag : private __atomic_flag_base
+ struct atomic_flag : public __atomic_flag_base
{
atomic_flag() = default;
~atomic_flag() = default;
atomic_flag(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) = delete;
- atomic_flag(bool __i) { _M_i = __i; } // XXX deleted copy ctor != agg
+ // Conversion to ATOMIC_FLAG_INIT.
+ atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
bool
test_and_set(memory_order __m = memory_order_seq_cst) volatile
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index bd54537cdc1..9d44dc4fdfc 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -540,7 +540,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
basic_string&
operator=(initializer_list<_CharT> __l)
{
- this->assign (__l.begin(), __l.end());
+ this->assign(__l.begin(), __l.size());
return *this;
}
#endif // __GXX_EXPERIMENTAL_CXX0X__
@@ -860,7 +860,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
basic_string&
operator+=(initializer_list<_CharT> __l)
- { return this->append(__l.begin(), __l.end()); }
+ { return this->append(__l.begin(), __l.size()); }
#endif // __GXX_EXPERIMENTAL_CXX0X__
/**
@@ -926,7 +926,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
basic_string&
append(initializer_list<_CharT> __l)
- { return this->append(__l.begin(), __l.end()); }
+ { return this->append(__l.begin(), __l.size()); }
#endif // __GXX_EXPERIMENTAL_CXX0X__
/**
@@ -1045,7 +1045,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
basic_string&
assign(initializer_list<_CharT> __l)
- { return this->assign(__l.begin(), __l.end()); }
+ { return this->assign(__l.begin(), __l.size()); }
#endif // __GXX_EXPERIMENTAL_CXX0X__
/**
@@ -1089,7 +1089,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
void
insert(iterator __p, initializer_list<_CharT> __l)
- { this->insert(__p, __l.begin(), __l.end()); }
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
+ this->insert(__p - _M_ibegin(), __l.begin(), __l.size());
+ }
#endif // __GXX_EXPERIMENTAL_CXX0X__
/**
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 724f373ebae..f4f1f8b901f 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -147,7 +147,6 @@
# define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE }
-# define _GLIBCXX_EXTERN_TEMPLATE -1
# endif
// debug + parallel
@@ -172,7 +171,6 @@
# define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE }
-# define _GLIBCXX_EXTERN_TEMPLATE -1
# endif
# if __NO_INLINE__ && !__GXX_WEAK__
@@ -287,6 +285,10 @@ namespace std
// library to avoid multiple weak definitions for required types that
// are already explicitly instantiated in the library binary. This
// substantially reduces the binary size of resulting executables.
+
+// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
+// templates only in basic_string, thus activating its debug-mode
+// checks even at -O0.
#ifndef _GLIBCXX_EXTERN_TEMPLATE
# define _GLIBCXX_EXTERN_TEMPLATE 1
#endif
diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index 06aa6f87b91..2c2c79ca16b 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -32,7 +32,6 @@
namespace std
{
-
// [26.4] Random number generation
/**
@@ -154,10 +153,10 @@ namespace std
template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
class linear_congruential_engine
{
- __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
- static_assert(__m == 0 || (__a < __m && __c < __m),
- "template arguments out of bounds"
- " in linear_congruential_engine");
+ static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+ "_UIntType not an unsigned integral type");
+ static_assert(__m == 0u || (__a < __m && __c < __m),
+ "template argument __m out of bounds");
public:
/** The type of the generated random value. */
@@ -341,35 +340,27 @@ namespace std
_UIntType __c, size_t __l, _UIntType __f>
class mersenne_twister_engine
{
- __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
-
- static_assert(__m >= 1U,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__n >= __m,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w >= __r,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w >= __u,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w >= __s,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w >= __t,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w >= __l,
- "mersenne_twister_engine template arguments out of bounds");
- static_assert(__w <=
- static_cast<size_t>(std::numeric_limits<_UIntType>::digits),
- "mersenne_twister_engine template arguments out of bounds");
+ static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+ "_UIntType not an unsigned integral type");
+ static_assert(1u <= __m && __m <= __n,
+ "template argument __m out of bounds");
+ static_assert(__r <= __w, "template argument __r out of bound");
+ static_assert(__u <= __w, "template argument __u out of bound");
+ static_assert(__s <= __w, "template argument __s out of bound");
+ static_assert(__t <= __w, "template argument __t out of bound");
+ static_assert(__l <= __w, "template argument __l out of bound");
+ static_assert(__w <= std::numeric_limits<_UIntType>::digits,
+ "template argument __w out of bound");
static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1),
- "mersenne_twister_engine template arguments out of bounds");
+ "template argument __a out of bound");
static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1),
- "mersenne_twister_engine template arguments out of bounds");
+ "template argument __b out of bound");
static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1),
- "mersenne_twister_engine template arguments out of bounds");
+ "template argument __c out of bound");
static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1),
- "mersenne_twister_engine template arguments out of bounds");
+ "template argument __d out of bound");
static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1),
- "mersenne_twister_engine template arguments out of bounds");
+ "template argument __f out of bound");
public:
/** The type of the generated random value. */
@@ -538,13 +529,12 @@ namespace std
template<typename _UIntType, size_t __w, size_t __s, size_t __r>
class subtract_with_carry_engine
{
- __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
- static_assert(__s > 0U && __r > __s
- && __w > 0U
- && __w <= static_cast<size_t>
- (std::numeric_limits<_UIntType>::digits),
- "template arguments out of bounds"
- " in subtract_with_carry_engine");
+ static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+ "_UIntType not an unsigned integral type");
+ static_assert(0u < __s && __s < __r,
+ "template argument __s out of bounds");
+ static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits,
+ "template argument __w out of bounds");
public:
/** The type of the generated random value. */
@@ -702,9 +692,8 @@ namespace std
template<typename _RandomNumberEngine, size_t __p, size_t __r>
class discard_block_engine
{
- static_assert(__r >= 1U && __p >= __r,
- "template arguments out of bounds"
- " in discard_block_engine");
+ static_assert(1 <= __r && __r <= __p,
+ "template argument __r out of bounds");
public:
/** The type of the generated random value. */
@@ -903,12 +892,10 @@ namespace std
template<typename _RandomNumberEngine, size_t __w, typename _UIntType>
class independent_bits_engine
{
- static_assert(__w > 0U
- && __w <=
- static_cast<size_t>
- (std::numeric_limits<_UIntType>::digits),
- "template arguments out of bounds "
- "in independent_bits_engine");
+ static_assert(std::is_unsigned<_UIntType>::value, "template argument "
+ "_UIntType not an unsigned integral type");
+ static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits,
+ "template argument __w out of bounds");
public:
/** The type of the generated random value. */
@@ -1102,9 +1089,7 @@ namespace std
template<typename _RandomNumberEngine, size_t __k>
class shuffle_order_engine
{
- static_assert(__k >= 1U,
- "template arguments out of bounds"
- " in shuffle_order_engine");
+ static_assert(1u <= __k, "template argument __k out of bound");
public:
/** The type of the generated random value. */
@@ -1480,7 +1465,8 @@ namespace std
template<typename _IntType = int>
class uniform_int_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -1633,6 +1619,9 @@ namespace std
template<typename _RealType = double>
class uniform_real_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -1791,6 +1780,9 @@ namespace std
template<typename _RealType = double>
class normal_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -1943,6 +1935,9 @@ namespace std
template<typename _RealType = double>
class lognormal_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2086,6 +2081,9 @@ namespace std
template<typename _RealType = double>
class gamma_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2243,6 +2241,9 @@ namespace std
template<typename _RealType = double>
class chi_squared_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2378,6 +2379,9 @@ namespace std
template<typename _RealType = double>
class cauchy_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2519,6 +2523,9 @@ namespace std
template<typename _RealType = double>
class fisher_f_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2670,6 +2677,9 @@ namespace std
template<typename _RealType = double>
class student_t_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -2972,7 +2982,8 @@ namespace std
template<typename _IntType = int>
class binomial_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -3142,7 +3153,8 @@ namespace std
template<typename _IntType = int>
class geometric_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -3287,7 +3299,8 @@ namespace std
template<typename _IntType = int>
class negative_binomial_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -3439,7 +3452,8 @@ namespace std
template<typename _IntType = int>
class poisson_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -3594,6 +3608,9 @@ namespace std
template<typename _RealType = double>
class exponential_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -3736,6 +3753,9 @@ namespace std
template<typename _RealType = double>
class weibull_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -3879,6 +3899,9 @@ namespace std
template<typename _RealType = double>
class extreme_value_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -4021,7 +4044,8 @@ namespace std
template<typename _IntType = int>
class discrete_distribution
{
- __glibcxx_class_requires(_IntType, _IntegerConcept)
+ static_assert(std::is_integral<_IntType>::value,
+ "template argument not an integral type");
public:
/** The type of the range of the distribution. */
@@ -4185,6 +4209,9 @@ namespace std
template<typename _RealType = double>
class piecewise_constant_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
@@ -4363,6 +4390,9 @@ namespace std
template<typename _RealType = double>
class piecewise_linear_distribution
{
+ static_assert(std::is_floating_point<_RealType>::value,
+ "template argument not a floating point type");
+
public:
/** The type of the range of the distribution. */
typedef _RealType result_type;
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index 492891bc9d8..a12b3347b9d 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -1,7 +1,7 @@
// The template and inlines for the -*- C++ -*- internal _Array helper class.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2009
+// 2006, 2007, 2008, 2009
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -73,7 +73,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Please note that this isn't exception safe. But
// valarrays aren't required to be exception safe.
inline static void
- _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
+ _S_do_it(_Tp* __b, _Tp* __e)
{
while (__b != __e)
new(__b++) _Tp();
@@ -85,13 +85,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
// For fundamental types, it suffices to say 'memset()'
inline static void
- _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
+ _S_do_it(_Tp* __b, _Tp* __e)
{ __builtin_memset(__b, 0, (__e - __b) * sizeof(_Tp)); }
};
template<typename _Tp>
inline void
- __valarray_default_construct(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
+ __valarray_default_construct(_Tp* __b, _Tp* __e)
{
_Array_default_ctor<_Tp, __is_scalar<_Tp>::__value>::_S_do_it(__b, __e);
}
@@ -105,7 +105,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Please note that this isn't exception safe. But
// valarrays aren't required to be exception safe.
inline static void
- _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t)
+ _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t)
{
while (__b != __e)
new(__b++) _Tp(__t);
@@ -116,7 +116,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
struct _Array_init_ctor<_Tp, true>
{
inline static void
- _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t)
+ _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t)
{
while (__b != __e)
*__b++ = __t;
@@ -125,8 +125,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _Tp>
inline void
- __valarray_fill_construct(_Tp* __restrict__ __b, _Tp* __restrict__ __e,
- const _Tp __t)
+ __valarray_fill_construct(_Tp* __b, _Tp* __e, const _Tp __t)
{
_Array_init_ctor<_Tp, __is_pod(_Tp)>::_S_do_it(__b, __e, __t);
}
@@ -141,8 +140,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Please note that this isn't exception safe. But
// valarrays aren't required to be exception safe.
inline static void
- _S_do_it(const _Tp* __restrict__ __b, const _Tp* __restrict__ __e,
- _Tp* __restrict__ __o)
+ _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
{
while (__b != __e)
new(__o++) _Tp(*__b++);
@@ -153,15 +151,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
struct _Array_copy_ctor<_Tp, true>
{
inline static void
- _S_do_it(const _Tp* __restrict__ __b, const _Tp* __restrict__ __e,
- _Tp* __restrict__ __o)
+ _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
{ __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); }
};
template<typename _Tp>
inline void
- __valarray_copy_construct(const _Tp* __restrict__ __b,
- const _Tp* __restrict__ __e,
+ __valarray_copy_construct(const _Tp* __b, const _Tp* __e,
_Tp* __restrict__ __o)
{
_Array_copy_ctor<_Tp, __is_pod(_Tp)>::_S_do_it(__b, __e, __o);
@@ -205,7 +201,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Do the necessary cleanup when we're done with arrays.
template<typename _Tp>
inline void
- __valarray_destroy_elements(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
+ __valarray_destroy_elements(_Tp* __b, _Tp* __e)
{
if (!__is_pod(_Tp))
while (__b != __e)
@@ -347,7 +343,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
//
template<typename _Tp>
inline _Tp
- __valarray_sum(const _Tp* __restrict__ __f, const _Tp* __restrict__ __l)
+ __valarray_sum(const _Tp* __f, const _Tp* __l)
{
_Tp __r = _Tp();
while (__f != __l)
@@ -358,8 +354,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Compute the product of all elements in range [__f, __l)
template<typename _Tp>
inline _Tp
- __valarray_product(const _Tp* __restrict__ __f,
- const _Tp* __restrict__ __l)
+ __valarray_product(const _Tp* __f, const _Tp* __l)
{
_Tp __r = _Tp(1);
while (__f != __l)
diff --git a/libstdc++-v3/include/c_compatibility/stdatomic.h b/libstdc++-v3/include/c_compatibility/stdatomic.h
index f4771166d2b..eaa45cddac1 100644
--- a/libstdc++-v3/include/c_compatibility/stdatomic.h
+++ b/libstdc++-v3/include/c_compatibility/stdatomic.h
@@ -186,8 +186,11 @@ _GLIBCXX_BEGIN_EXTERN_C
_GLIBCXX_END_EXTERN_C
_GLIBCXX_END_NAMESPACE
-// Inject into global namespace. XXX
-#if defined(__cplusplus) && !defined(_GLIBCXX_STDATOMIC)
+// Inject into global namespace.
+#ifdef __cplusplus
+
+#include <cstdatomic>
+
using std::memory_order;
using std::memory_order_relaxed;
using std::memory_order_consume;
diff --git a/libstdc++-v3/include/parallel/for_each_selectors.h b/libstdc++-v3/include/parallel/for_each_selectors.h
index 9fd432df021..3a37e5ca637 100644
--- a/libstdc++-v3/include/parallel/for_each_selectors.h
+++ b/libstdc++-v3/include/parallel/for_each_selectors.h
@@ -37,17 +37,15 @@
namespace __gnu_parallel
{
-
/** @brief Generic __selector for embarrassingly parallel functions. */
template<typename _It>
- struct __generic_for_each_selector
- {
- /** @brief _Iterator on last element processed; needed for some
- * algorithms (e. g. std::transform()).
- */
- _It _M_finish_iterator;
- };
-
+ struct __generic_for_each_selector
+ {
+ /** @brief _Iterator on last element processed; needed for some
+ * algorithms (e. g. std::transform()).
+ */
+ _It _M_finish_iterator;
+ };
/** @brief std::for_each() selector. */
template<typename _It>
@@ -220,21 +218,21 @@ namespace __gnu_parallel
};
/** @brief std::inner_product() selector. */
- template<typename _It, typename It2, typename _Tp>
+ template<typename _It, typename _It2, typename _Tp>
struct __inner_product_selector : public __generic_for_each_selector<_It>
{
/** @brief Begin iterator of first sequence. */
- _It __begin1_iterator;
+ _It __begin1_iterator;
/** @brief Begin iterator of second sequence. */
- It2 begin2_iterator;
+ _It2 __begin2_iterator;
/** @brief Constructor.
* @param b1 Begin iterator of first sequence.
* @param b2 Begin iterator of second sequence. */
explicit
- __inner_product_selector(_It b1, It2 b2)
- : __begin1_iterator(b1), begin2_iterator(b2) { }
+ __inner_product_selector(_It __b1, _It2 __b2)
+ : __begin1_iterator(__b1), __begin2_iterator(__b2) { }
/** @brief Functor execution.
* @param __mult Multiplication functor.
@@ -246,7 +244,7 @@ namespace __gnu_parallel
{
typename std::iterator_traits<_It>::difference_type __position
= __current - __begin1_iterator;
- return __mult(*__current, *(begin2_iterator + __position));
+ return __mult(*__current, *(__begin2_iterator + __position));
}
};
@@ -268,8 +266,8 @@ namespace __gnu_parallel
* __elements.
*/
template<typename _It>
- struct __adjacent_difference_selector :
- public __generic_for_each_selector<_It>
+ struct __adjacent_difference_selector
+ : public __generic_for_each_selector<_It>
{
template<typename _Op>
bool
@@ -293,14 +291,14 @@ namespace __gnu_parallel
* @param __i iterator referencing object. */
template<typename _It>
void
- operator()(_It __i) { }
+ operator()(_It) { }
};
/** @brief Reduction function doing nothing. */
struct _DummyReduct
{
bool
- operator()(bool /*__x*/, bool /*__y*/) const
+ operator()(bool, bool) const
{ return true; }
};
@@ -315,12 +313,7 @@ namespace __gnu_parallel
_It
operator()(_It __x, _It __y)
- {
- if (__comp(*__x, *__y))
- return __x;
- else
- return __y;
- }
+ { return (__comp(*__x, *__y)) ? __x : __y; }
};
/** @brief Reduction for finding the maximum element, using a comparator. */
@@ -334,12 +327,7 @@ namespace __gnu_parallel
_It
operator()(_It __x, _It __y)
- {
- if (__comp(*__x, *__y))
- return __y;
- else
- return __x;
- }
+ { return (__comp(*__x, *__y)) ? __y : __x; }
};
/** @brief General reduction, using a binary operator. */
diff --git a/libstdc++-v3/include/precompiled/stdc++.h b/libstdc++-v3/include/precompiled/stdc++.h
index 1c615091bdc..99def363142 100644
--- a/libstdc++-v3/include/precompiled/stdc++.h
+++ b/libstdc++-v3/include/precompiled/stdc++.h
@@ -101,6 +101,7 @@
#include <condition_variable>
#include <forward_list>
#include <future>
+#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index badb6e07e5a..f922dcd74d5 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -150,7 +150,7 @@ namespace std
typedef _Future_ptr<_Future_result_base>::type _Future_ptr_type;
public:
- _Future_state() : _M_result(), _M_retrieved(false) { }
+ _Future_state() : _M_result(), _M_retrieved(ATOMIC_FLAG_INIT) { }
_Future_state(const _Future_state&) = delete;
_Future_state& operator=(const _Future_state&) = delete;
diff --git a/libstdc++-v3/include/std/random b/libstdc++-v3/include/std/random
index b57ef4925d6..72d3ceb7f43 100644
--- a/libstdc++-v3/include/std/random
+++ b/libstdc++-v3/include/std/random
@@ -43,7 +43,6 @@
#include <limits>
#include <ext/type_traits.h>
#include <ext/numeric_traits.h>
-#include <bits/concept_check.h>
#include <debug/debug.h>
#include <type_traits>
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index a5e5b0d02a2..872e2d30a97 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -197,6 +197,64 @@ class StdVectorIteratorPrinter:
def to_string(self):
return self.val['_M_current'].dereference()
+class StdTuplePrinter:
+ "Print a std::tuple"
+
+ class _iterator:
+ def __init__ (self, head):
+ self.head = head
+
+ # Set the base class as the initial head of the
+ # tuple.
+ nodes = self.head.type.fields ()
+ if len (nodes) != 1:
+ raise "Top of tuple tree does not consist of a single node."
+
+ # Set the actual head to the first pair.
+ self.head = self.head.cast (nodes[0].type)
+ self.count = 0
+
+ def __iter__ (self):
+ return self
+
+ def next (self):
+ nodes = self.head.type.fields ()
+ # Check for further recursions in the inheritance tree.
+ if len (nodes) == 0:
+ raise StopIteration
+ # Check that this iteration has an expected structure.
+ if len (nodes) != 2:
+ raise "Cannot parse more than 2 nodes in a tuple tree."
+
+ # - Left node is the next recursion parent.
+ # - Right node is the actual class contained in the tuple.
+
+ # Process right node.
+ impl = self.head.cast (nodes[1].type)
+
+ # Process left node and set it as head.
+ self.head = self.head.cast (nodes[0].type)
+ self.count = self.count + 1
+
+ # Finally, check the implementation. If it is
+ # wrapped in _M_head_impl return that, otherwise return
+ # the value "as is".
+ fields = impl.type.fields ()
+ if len (fields) < 1 or fields[0].name != "_M_head_impl":
+ return ('[%d]' % self.count, impl)
+ else:
+ return ('[%d]' % self.count, impl['_M_head_impl'])
+
+ def __init__ (self, typename, val):
+ self.typename = typename
+ self.val = val;
+
+ def children (self):
+ return self._iterator (self.val)
+
+ def to_string (self):
+ return '%s containing' % (self.typename)
+
class StdStackOrQueuePrinter:
"Print a std::stack or std::queue"
@@ -641,6 +699,7 @@ def build_libstdcxx_dictionary ():
pretty_printers_dict[re.compile('^std::multiset<.*>$')] = lambda val: StdSetPrinter("std::multiset", val)
pretty_printers_dict[re.compile('^std::priority_queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::priority_queue", val)
pretty_printers_dict[re.compile('^std::queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::queue", val)
+ pretty_printers_dict[re.compile('^std::tuple<.*>$')] = lambda val: StdTuplePrinter("std::tuple", val)
pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val)
pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val)
pretty_printers_dict[re.compile('^std::unique_ptr<.*>$')] = UniquePointerPrinter
diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/atomic.cc
index 3a2ff3d52e9..775bb7601c1 100644
--- a/libstdc++-v3/src/atomic.cc
+++ b/libstdc++-v3/src/atomic.cc
@@ -80,16 +80,16 @@ namespace std
atomic_flag_test_and_set_explicit(volatile __atomic_flag_base* __a,
memory_order __m) throw ()
{
- volatile atomic_flag d(__a->_M_i);
- return d.test_and_set(__m);
+ volatile atomic_flag* d = static_cast<volatile atomic_flag*>(__a);
+ return d->test_and_set(__m);
}
void
atomic_flag_clear_explicit(volatile __atomic_flag_base* __a,
memory_order __m) throw ()
{
- volatile atomic_flag d(__a->_M_i);
- return d.clear(__m);
+ volatile atomic_flag* d = static_cast<volatile atomic_flag*>(__a);
+ return d->clear(__m);
}
void
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
index f0236eb2637..bf49aa6b080 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
@@ -49,10 +49,13 @@ test03()
std::unique_ptr<int[2]> p2 = p1;
}
+// { dg-error "deleted function" "" { target *-*-* } 358 }
// { dg-error "used here" "" { target *-*-* } 42 }
// { dg-error "no matching" "" { target *-*-* } 48 }
-// { dg-error "used here" "" { target *-*-* } 49 }
-// { dg-error "candidates are" "" { target *-*-* } 213 }
+// { dg-warning "candidates are" "" { target *-*-* } 119 }
+// { dg-warning "note" "" { target *-*-* } 112 }
+// { dg-warning "note" "" { target *-*-* } 107 }
+// { dg-warning "note" "" { target *-*-* } 102 }
+// { dg-warning "note" "" { target *-*-* } 96 }
// { dg-error "deleted function" "" { target *-*-* } 213 }
-// { dg-error "deleted function" "" { target *-*-* } 358 }
-// { dg-excess-errors "note" }
+// { dg-error "used here" "" { target *-*-* } 49 }
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
index 328dd71d0bb..6c8498e7b10 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
@@ -31,7 +31,7 @@ test01()
{
bool test __attribute__((unused)) = true;
- typedef std::subtract_with_carry_engine<long, 24, 10, 24>
+ typedef std::subtract_with_carry_engine<unsigned long, 24, 10, 24>
base_engine;
base_engine b;
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
index 990dc9b3fe9..fabe17a2b56 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
@@ -31,7 +31,7 @@ test01()
{
bool test __attribute__((unused)) = true;
- typedef std::subtract_with_carry_engine<long, 24, 10, 24>
+ typedef std::subtract_with_carry_engine<unsigned long, 24, 10, 24>
base_engine;
std::discard_block_engine<base_engine, 389, 24>
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
index 17fea5bdb47..926bb2c24db 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
@@ -33,7 +33,7 @@ test01()
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> e;
}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
index efe194c99f0..4cedeb85d39 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
@@ -35,7 +35,7 @@ test01()
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> e(seed);
}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
index 82f6fdb1c74..b66752c2b6e 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
@@ -35,7 +35,7 @@ test01()
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> e(seed);
}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
index 58f0f1c392a..aa86b9afedc 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
@@ -35,7 +35,7 @@ test01()
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> e(seq);
}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
index db2497540a3..5d63114fef3 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
@@ -33,7 +33,7 @@ test01()
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> u, v;
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
index 1d39a213f47..7aec649c03b 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
@@ -35,7 +35,7 @@ test01()
std::stringstream str;
std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> u, v;
diff --git a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
index 379b3aeb978..6e23316caa1 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
@@ -31,7 +31,7 @@ test01()
{
typedef std::discard_block_engine
<
- std::subtract_with_carry_engine<long, 24, 10, 24>,
+ std::subtract_with_carry_engine<unsigned long, 24, 10, 24>,
389, 24
> test_type;
diff --git a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
index f54d76ada07..18fb44fdac5 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
@@ -19,7 +19,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-options "-std=c++0x -D_GLIBCXX_CONCEPT_CHECKS" }
+// { dg-options "-std=c++0x" }
// { dg-require-cstdint "" }
// { dg-error "not a valid type" "" { target *-*-* } 32 }
// { dg-error "invalid type" "" { target *-*-* } 32 }
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.c b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.c
new file mode 100644
index 00000000000..3fd2f2c799d
--- /dev/null
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.c
@@ -0,0 +1,34 @@
+// { dg-options "-x c -shared-libgcc -lstdc++" }
+
+// Copyright (C) 2009 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <cassert>
+#include <stdatomic.h>
+
+// libstdc++/40826
+// libstdc++/40654
+int main()
+{
+ atomic_flag f = ATOMIC_FLAG_INIT;
+
+ atomic_flag_clear(&f); // set to false
+ assert( false == atomic_flag_test_and_set(&f) ); // return previous false, set to true
+ assert( true == atomic_flag_test_and_set(&f) ); // return true
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
new file mode 100644
index 00000000000..6cb09f34b7a
--- /dev/null
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
@@ -0,0 +1,33 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2009 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <cstdatomic>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ bool test __attribute__((unused)) = true;
+ std::atomic_flag f = ATOMIC_FLAG_INIT;
+
+ f.clear(); // set to false
+ VERIFY( false == f.test_and_set() ); // return previous false, set to true
+ VERIFY( true == f.test_and_set() ); // return true
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
new file mode 100644
index 00000000000..cfb0c1bbb7a
--- /dev/null
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
@@ -0,0 +1,27 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2008, 2009 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 3, 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 COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <stdatomic.h>
+
+void test01()
+{
+ using namespace std;
+ atomic_flag af = ATOMIC_FLAG_INIT;
+}
diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc
index c8bcf720e1d..5237107da1f 100644
--- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc
+++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions.cc
@@ -22,5 +22,5 @@
#include <vector>
-// { dg-error "Cannot use -D_GLIBCXX_PROFILE with " "" { target *-*-* } 166 }
+// { dg-error "Cannot use -D_GLIBCXX_PROFILE with " "" { target *-*-* } 165 }
// { dg-excess-errors "In file included from" }
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index cabfcca9f2e..110c79e93ad 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,36 @@
+2009-10-19 Rafael Avila de Espindola <espindola@google.com>
+
+ PR40790
+ * configure: Regenerate.
+ * configure.ac: Add AC_TYPE_UINT64_T.
+
+2009-10-16 Rafael Avila de Espindola <espindola@google.com>
+
+ * lto-plugin.c (message): New variable.
+ (check): New function.
+ (parse_table_entry, translate, write_resolution,add_output_files,
+ exec_lto_wrapper,claim_file_handler, onload): Use check instead of
+ assert.
+ (cleanup_handler): Use check instead of assert. Remove the arguments
+ file if it exists.
+
+2009-10-15 Rafael Avila de Espindola <espindola@google.com>
+
+ * lto-plugin.c (resolution_file): New.
+ (free_1): Update comment.
+ (free_2): Free resolution_file.
+ (write_resolution): Write resolution to specified file. Use the
+ syms array from the symbol table.
+ (all_symbols_read_handler): Delay call to free_1 past call to
+ write_resolution.
+ (process_option): Add a -resolution option.
+
+2009-10-13 Richard Guenther <rguenther@suse.de>
+
+ * Makefile.am (liblto_plugin_la_LIBADD): Link against the
+ correct libiberty.
+ * Makefile.in: Regenerated.
+
2009-10-08 Rafael Avila de Espindola <espindola@google.com>
* lto-plugin.c (add_input_library): New.
diff --git a/lto-plugin/Makefile.am b/lto-plugin/Makefile.am
index b5dd5fc4716..19fbdcd8ef5 100644
--- a/lto-plugin/Makefile.am
+++ b/lto-plugin/Makefile.am
@@ -16,4 +16,4 @@ AM_CFLAGS = -Wall -Werror
libexecsub_LTLIBRARIES = liblto_plugin.la
liblto_plugin_la_SOURCES = lto-plugin.c
-liblto_plugin_la_LIBADD = $(LIBELFLIBS) -L../libiberty/pic -liberty
+liblto_plugin_la_LIBADD = $(LIBELFLIBS) ../libiberty/pic/libiberty.a
diff --git a/lto-plugin/Makefile.in b/lto-plugin/Makefile.in
index 7284e4cb856..6ae87de40c1 100644
--- a/lto-plugin/Makefile.in
+++ b/lto-plugin/Makefile.in
@@ -82,7 +82,8 @@ am__base_list = \
am__installdirs = "$(DESTDIR)$(libexecsubdir)"
LTLIBRARIES = $(libexecsub_LTLIBRARIES)
am__DEPENDENCIES_1 =
-liblto_plugin_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+liblto_plugin_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ ../libiberty/pic/libiberty.a
am_liblto_plugin_la_OBJECTS = lto-plugin.lo
liblto_plugin_la_OBJECTS = $(am_liblto_plugin_la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
@@ -240,7 +241,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/../include $(LIBELFINC)
AM_CFLAGS = -Wall -Werror
libexecsub_LTLIBRARIES = liblto_plugin.la
liblto_plugin_la_SOURCES = lto-plugin.c
-liblto_plugin_la_LIBADD = $(LIBELFLIBS) -L../libiberty/pic -liberty
+liblto_plugin_la_LIBADD = $(LIBELFLIBS) ../libiberty/pic/libiberty.a
all: all-am
.SUFFIXES:
diff --git a/lto-plugin/configure b/lto-plugin/configure
index e701ee1aa10..c7ecf3e85fe 100755
--- a/lto-plugin/configure
+++ b/lto-plugin/configure
@@ -1864,6 +1864,58 @@ $as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
} # ac_fn_c_check_func
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) -1 >> ($2 - 1) == 1)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval as_val=\$$3
+ if test "x$as_val" = x""no; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_find_uintX_t
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
@@ -4400,13 +4452,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4403: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:4455: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:4406: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:4458: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:4409: output\"" >&5)
+ (eval echo "\"\$as_me:4461: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5612,7 +5664,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5615 "configure"' > conftest.$ac_ext
+ echo '#line 5667 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7142,11 +7194,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7145: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7197: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7149: \$? = $ac_status" >&5
+ echo "$as_me:7201: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7481,11 +7533,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7484: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7536: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7488: \$? = $ac_status" >&5
+ echo "$as_me:7540: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7586,11 +7638,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7589: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7641: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7593: \$? = $ac_status" >&5
+ echo "$as_me:7645: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -7641,11 +7693,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7644: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7696: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7648: \$? = $ac_status" >&5
+ echo "$as_me:7700: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10023,7 +10075,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10026 "configure"
+#line 10078 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10119,7 +10171,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10122 "configure"
+#line 10174 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10347,6 +10399,20 @@ CC="$lt_save_CC"
+ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
+case $ac_cv_c_uint64_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT64_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint64_t $ac_cv_c_uint64_t
+_ACEOF
+;;
+ esac
+
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
diff --git a/lto-plugin/configure.ac b/lto-plugin/configure.ac
index 277d31135fe..2956ed06c5f 100644
--- a/lto-plugin/configure.ac
+++ b/lto-plugin/configure.ac
@@ -7,6 +7,7 @@ AC_ARG_VAR(LIBELFLIBS,[How to link libelf])
AC_ARG_VAR(LIBELFINC,[How to find libelf include files])
AM_PROG_LIBTOOL
AC_SUBST(target_noncanonical)
+AC_TYPE_UINT64_T
AC_CONFIG_FILES(Makefile)
AC_OUTPUT
AC_SYS_LARGEFILE
diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c
index 71b4961496c..0cf1ab4ec69 100644
--- a/lto-plugin/lto-plugin.c
+++ b/lto-plugin/lto-plugin.c
@@ -82,6 +82,7 @@ static ld_plugin_get_symbols get_symbols;
static ld_plugin_register_cleanup register_cleanup;
static ld_plugin_add_input_file add_input_file;
static ld_plugin_add_input_library add_input_library;
+static ld_plugin_message message;
static struct plugin_file_info *claimed_files = NULL;
static unsigned int num_claimed_files = 0;
@@ -97,6 +98,24 @@ static unsigned int num_pass_through_items;
static bool debug;
static bool nop;
+static char *resolution_file = NULL;
+
+static void
+check (bool gate, enum ld_plugin_level level, const char *text)
+{
+ if (gate)
+ return;
+
+ if (message)
+ message (level, text);
+ else
+ {
+ /* If there is no nicer way to inform the user, fallback to stderr. */
+ fprintf (stderr, "%s\n", text);
+ if (level == LDPL_FATAL)
+ abort ();
+ }
+}
/* Parse an entry of the IL symbol table. The data to be parsed is pointed
by P and the result is written in ENTRY. The slot number is stored in SLOT.
@@ -141,12 +160,12 @@ parse_table_entry (char *p, struct ld_plugin_symbol *entry, uint32_t *slot)
entry->comdat_key = strdup (entry->comdat_key);
t = *p;
- assert (t <= 4);
+ check (t <= 4, LDPL_FATAL, "invalid symbol kind found");
entry->def = translate_kind[t];
p++;
t = *p;
- assert (t <= 3);
+ check (t <= 3, LDPL_FATAL, "invalid symbol visibility found");
entry->visibility = translate_visibility[t];
p++;
@@ -217,9 +236,9 @@ translate (Elf_Data *symtab, struct plugin_symtab *out)
{
n++;
syms = realloc (syms, n * sizeof (struct ld_plugin_symbol));
- assert (syms);
+ check (syms, LDPL_FATAL, "could not allocate memory");
slots = realloc (slots, n * sizeof (uint32_t));
- assert (slots);
+ check (slots, LDPL_FATAL, "could not allocate memory");
data = parse_table_entry (data, &syms[n - 1], &slots[n - 1]);
}
@@ -228,7 +247,8 @@ translate (Elf_Data *symtab, struct plugin_symtab *out)
out->slots = slots;
}
-/* Free all memory that is no longer needed at the beginning of all_symbols_read. */
+/* Free all memory that is no longer needed after writing the symbol
+ resolution. */
static void
free_1 (void)
@@ -275,6 +295,12 @@ free_2 (void)
free (temp_obj_dir_name);
temp_obj_dir_name = NULL;
+
+ if (resolution_file)
+ {
+ free (resolution_file);
+ resolution_file = NULL;
+ }
}
/* Writes the relocations to disk. */
@@ -284,12 +310,12 @@ write_resolution (void)
{
unsigned int i;
FILE *f;
- /* FIXME: Disabled for now since we are not using the resolution file. */
- return;
+ if (!resolution_file)
+ return;
- /* FIXME: This should be a temporary file. */
- f = fopen ("resolution", "w");
+ f = fopen (resolution_file, "w");
+ check (f, LDPL_FATAL, "could not open file");
fprintf (f, "%d\n", num_claimed_files);
@@ -297,8 +323,7 @@ write_resolution (void)
{
struct plugin_file_info *info = &claimed_files[i];
struct plugin_symtab *symtab = &info->symtab;
- struct ld_plugin_symbol *syms = calloc (symtab->nsyms,
- sizeof (struct ld_plugin_symbol));
+ struct ld_plugin_symbol *syms = symtab->syms;
unsigned j;
assert (syms);
@@ -312,7 +337,6 @@ write_resolution (void)
unsigned int resolution = syms[j].resolution;
fprintf (f, "%d %s\n", slot, lto_resolution_str[resolution]);
}
- free (syms);
}
fclose (f);
}
@@ -323,7 +347,7 @@ write_resolution (void)
static void
add_output_files (FILE *f)
{
- char fname[1000]; /* FIXME: Is this big enough? */
+ char fname[1000]; /* FIXME: Remove this restriction. */
for (;;)
{
@@ -333,7 +357,7 @@ add_output_files (FILE *f)
break;
len = strlen (s);
- assert (s[len - 1] == '\n');
+ check (s[len - 1] == '\n', LDPL_FATAL, "file name too long");
s[len - 1] = '\0';
num_output_files++;
@@ -361,16 +385,16 @@ exec_lto_wrapper (char *argv[])
/* Write argv to a file to avoid a command line that is too long. */
t = asprintf (&at_args, "@%s/arguments", temp_obj_dir_name);
- assert (t >= 0);
+ check (t >= 0, LDPL_FATAL, "asprintf failed");
args_name = at_args + 1;
args = fopen (args_name, "w");
- assert (args);
+ check (args, LDPL_FATAL, "could not open arguments file");
t = writeargv (&argv[1], args);
- assert (t == 0);
+ check (t == 0, LDPL_FATAL, "could not write arguments");
t = fclose (args);
- assert (t == 0);
+ check (t == 0, LDPL_FATAL, "could not close arguments file");
new_argv[0] = argv[0];
new_argv[1] = at_args;
@@ -386,25 +410,26 @@ exec_lto_wrapper (char *argv[])
pex = pex_init (PEX_USE_PIPES, "lto-wrapper", NULL);
- assert (pex != NULL);
+ check (pex != NULL, LDPL_FATAL, "could not pex_init lto-wrapper");
errmsg = pex_run (pex, 0, new_argv[0], new_argv, NULL, NULL, &t);
- assert (errmsg == NULL);
- assert (t == 0);
+ check (errmsg == NULL, LDPL_FATAL, "could not run lto-wrapper");
+ check (t == 0, LDPL_FATAL, "could not run lto-wrapper");
wrapper_output = pex_read_output (pex, 0);
- assert (wrapper_output);
+ check (wrapper_output, LDPL_FATAL, "could not read lto-wrapper output");
add_output_files (wrapper_output);
t = pex_get_status (pex, 1, &status);
- assert (t == 1);
- assert (WIFEXITED (status) && WEXITSTATUS (status) == 0);
+ check (t == 1, LDPL_FATAL, "could not get lto-wrapper exit status");
+ check (WIFEXITED (status) && WEXITSTATUS (status) == 0, LDPL_FATAL,
+ "lto-wrapper failed");
pex_free (pex);
t = unlink (args_name);
- assert (t == 0);
+ check (t == 0, LDPL_FATAL, "could not unlink arguments file");
free (at_args);
}
@@ -434,8 +459,6 @@ all_symbols_read_handler (void)
if (num_claimed_files == 0)
return LDPS_OK;
- free_1 ();
-
if (nop)
{
use_original_files ();
@@ -448,6 +471,8 @@ all_symbols_read_handler (void)
write_resolution ();
+ free_1 ();
+
for (i = 0; i < lto_wrapper_num_args; i++)
*lto_arg_ptr++ = lto_wrapper_argv[i];
@@ -487,8 +512,12 @@ all_symbols_read_handler (void)
static enum ld_plugin_status
cleanup_handler (void)
{
+ /* Note: we cannot use LDPL_FATAL in here as that would produce
+ an infinite loop. */
int t;
unsigned i;
+ char *arguments;
+ struct stat buf;
for (i = 0; i < num_claimed_files; i++)
{
@@ -496,11 +525,23 @@ cleanup_handler (void)
if (info->temp)
{
t = unlink (info->name);
- assert (t == 0);
+ check (t == 0, LDPL_ERROR, "could not unlink temporary file");
}
}
+
+ /* If we are being called from an error handler, it is possible
+ that the arguments file is still exists. */
+ t = asprintf (&arguments, "%s/arguments", temp_obj_dir_name);
+ check (t >= 0, LDPL_ERROR, "asprintf failed");
+ if (stat(arguments, &buf) == 0)
+ {
+ t = unlink (arguments);
+ check (t == 0, LDPL_ERROR, "could not unlink arguments file");
+ }
+ free (arguments);
+
t = rmdir (temp_obj_dir_name);
- assert (t == 0);
+ check (t == 0, LDPL_ERROR, "could not remove temporary directory");
free_2 ();
return LDPS_OK;
@@ -529,13 +570,13 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
char *objname;
int t = asprintf (&objname, "%s/obj%d.o",
temp_obj_dir_name, objnum);
- assert (t >= 0);
+ check (t >= 0, LDPL_FATAL, "asprintf failed");
objnum++;
fd = open (objname, O_RDWR | O_CREAT, 0666);
- assert (fd > 0);
+ check (fd > 0, LDPL_FATAL, "could not open/create temporary file");
offset = lseek (file->fd, file->offset, SEEK_SET);
- assert (offset == file->offset);
+ check (offset == file->offset, LDPL_FATAL, "could not seek");
while (size > 0)
{
ssize_t r, written;
@@ -543,7 +584,7 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
off_t s = sizeof (buf) < size ? sizeof (buf) : size;
r = read (file->fd, buf, s);
written = write (fd, buf, r);
- assert (written = r);
+ check (written == r, LDPL_FATAL, "could not write to temporary file");
size -= r;
}
lto_file.name = objname;
@@ -573,7 +614,7 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
status = add_symbols (file->handle, lto_file.symtab.nsyms,
lto_file.symtab.syms);
- assert (status == LDPS_OK);
+ check (status == LDPS_OK, LDPL_FATAL, "could not add symbols");
*claimed = 1;
num_claimed_files++;
@@ -588,7 +629,7 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
if (file->offset != 0)
{
int t = unlink (lto_file.name);
- assert (t == 0);
+ check (t == 0, LDPL_FATAL, "could not unlink file");
}
free (lto_file.name);
@@ -608,6 +649,10 @@ process_option (const char *option)
debug = 1;
else if (strcmp (option, "-nop") == 0)
nop = 1;
+ else if (!strncmp (option, "-resolution=", strlen("-resolution=")))
+ {
+ resolution_file = strdup (option + strlen("-resolution="));
+ }
else if (!strncmp (option, "-pass-through=", strlen("-pass-through=")))
{
num_pass_through_items++;
@@ -636,13 +681,16 @@ onload (struct ld_plugin_tv *tv)
char *t;
unsigned version = elf_version (EV_CURRENT);
- assert (version != EV_NONE);
+ check (version != EV_NONE, LDPL_FATAL, "invalid ELF version");
p = tv;
while (p->tv_tag)
{
switch (p->tv_tag)
{
+ case LDPT_MESSAGE:
+ message = p->tv_u.tv_message;
+ break;
case LDPT_REGISTER_CLAIM_FILE_HOOK:
register_claim_file = p->tv_u.tv_register_claim_file;
break;
@@ -673,22 +721,25 @@ onload (struct ld_plugin_tv *tv)
p++;
}
- assert (register_claim_file);
- assert (add_symbols);
+ check (register_claim_file, LDPL_FATAL, "register_claim_file not found");
+ check (add_symbols, LDPL_FATAL, "add_symbols not found");
status = register_claim_file (claim_file_handler);
- assert (status == LDPS_OK);
+ check (status == LDPS_OK, LDPL_FATAL,
+ "could not register the claim_file callback");
if (register_cleanup)
{
status = register_cleanup (cleanup_handler);
- assert (status == LDPS_OK);
+ check (status == LDPS_OK, LDPL_FATAL,
+ "could not register the cleanup callback");
}
if (register_all_symbols_read)
{
- assert (get_symbols);
+ check (get_symbols, LDPL_FATAL, "get_symbols not found");
status = register_all_symbols_read (all_symbols_read_handler);
- assert (status == LDPS_OK);
+ check (status == LDPS_OK, LDPL_FATAL,
+ "could not register the all_symbols_read callback");
}
temp_obj_dir_name = strdup ("tmp_objectsXXXXXX");